OSDN Git Service

7a035f6f0b9861a5720ea8448f854aaab3bf4312
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-07-06  Nick Clifton  <nickc@redhat.com>
2             DJ Delorie  <dj@redhat.com>
3
4         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
5         __FMOVD_ENABLED__ is defined.
6         * config/sh/sh.h
7         (TARGET_FMOVD): Provide a default definition.
8         (MASK_FMOVD): Likewise.
9         (TARGET_CPU_CPP_BUILTINS): Define
10         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
11         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
12         two fmov instructions depending upon whether TARGET_FMOVD is
13         enabled.
14         (split for DF load from memory into register): Also handle
15         MEMs which consist of REG+DISP addressing.
16         (split for DF store from register to memory): Likewise.
17         (movsf_ie): Always use single fp_mode.
18         * config/sh/sh.c (sh_override_options): Do not automatically
19         enable TARGET_MOVD for the SH2A when supporting doubles - leave
20         that to the -mfmovd command line switch.
21         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
22         (fldi_ok): Always allow.
23         * config/sh/sh.opt (mfmovd): Remove this switch.
24         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
25
26 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
27             Kaz Kojima  <kkojima@gcc.gnu.org>
28
29         PR rtl-optimization/30807
30         * postreload.c (reload_combine): For every new use of REG_SUM,
31         record the use of BASE.
32
33 2009-07-06  Jan Hubicka  <jh@suse.cz>
34
35         * params.def: Revert my accidental commit at 2009-06-30.
36
37 2009-07-04  Ian Lance Taylor  <iant@google.com>
38
39         PR target/40636
40         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
41         EXPORTED_CONST.
42         (mingw_format_attribute_overrides): Likewise.
43
44 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
45
46         PR debug/40596
47         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
48         don't check cfa.reg.  Instead of cfa.indirect use
49         fde && fde->drap_reg != INVALID_REGNUM test.
50
51 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
52
53         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
54
55 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
56
57         PR target/40587
58         * ira.c (build_insn_chain): Use DF_LR_OUT instead of
59         df_get_live_out.
60         
61 2009-07-03  Richard Guenther  <rguenther@suse.de>
62
63         PR tree-optimization/40640
64         * tree-switch-conversion.c (build_arrays): Perform arithmetic
65         in original type.
66
67 2009-07-03  Jan Hubicka  <jh@suse.cz>
68
69         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
70         for size, reduce amount of inlining.
71
72 2009-07-03  Richard Guenther  <rguenther@suse.de>
73
74         PR middle-end/34163
75         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to
76         (T2)t +- (T2)x if t +- x is known to not overflow and
77         the conversion widens the operation.
78         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
79
80 2009-07-03  Jan Hubicka  <jh@suse.cz>
81
82         * ipa-pure-const.c (analyze): Update loop optimizer init.
83         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
84         try_remove_empty_loop, remove_empty_loops): Remove.
85         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
86         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
87         to mark regular loops as neccesary.
88         (degenerate_phi_p): New function.
89         (propagate_necessity, remove_dead_phis): Use it.
90         (forward_edge_to_pdom): Likewise.
91         (eliminate_unnecessary_stmts): Take care to remove uses of results of
92         virtual PHI nodes that became unreachable.
93         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
94         * tree-flow.h (remove_empty_loops): Remove.
95         * passes.c (init_optimization_passes): Remove.
96
97 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
98
99         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
100         can_create_pseudo_p.
101         (*fix_trunc<mode>_i387_1): Ditto.
102         (*floathi<mode>2_1): Ditto.
103         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
104         (*fistdi2_1): Ditto.
105         (*fist<mode>2_1): Ditto.
106         (frndintxf2_floor): Ditto.
107         (*fist<mode>2_floor_1): Ditto.
108         (frndintxf2_ceil): Ditto.
109         (*fist<mode>2_ceil_1): Ditto.
110         (frndintxf2_trunc): Ditto.
111         (frndintxf2_mask_pm): Ditto.
112         (fxam<mode>2_i387_with_temp): Ditto.
113         * config/i386/sse.md (mulv16qi3): Ditto.
114         (*sse2_mulv4si3): Ditto.
115         (mulv2di3): Ditto.
116         (sse4_2_pcmpestr): Ditto.
117         (sse4_2_pcmpistr): Ditto.
118
119 2009-07-03  Jan Hubicka  <jh@suse.cz>
120
121         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
122         (mark_stmt_necessary): Set it.
123         (mark_operand_necessary): Set it.
124         (mark_control_dependent_edges_necessary): Set it.
125         (mark_virtual_phi_result_for_renaming): New function.
126         (get_live_post_dom): New function.
127         (forward_edge_to_pdom): New function.
128         (remove_dead_stmt): Fix handling of control dependences.
129         (tree_dce_init): Init new bitmap.
130         (tree_dce_done): Free it.
131
132 2009-07-02  Richard Guenther  <rguenther@suse.de>
133
134         PR bootstrap/40617
135         * tree-ssa-structalias.c (new_var_info): Initialize
136         is_restrict_var.
137
138 2009-07-02  Jan Hubicka  <jh@suse.cz>
139
140         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
141         local.
142
143 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
144
145         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
146         instead of recomputing it.  Adjust calls.
147         (emit_store_flag): Adjust recursive calls.
148
149 2009-07-02  Richard Guenther  <rguenther@suse.de>
150
151         * tree-ssa-live.c (remove_unused_locals): Do not remove
152         heap variables.
153         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
154         of DECL_EXTERNAL for HEAP variables.
155         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
156         HEAP variables.  Do not adjust RESTRICT vars.
157         (find_what_var_points_to): Nobody cares if something
158         points to READONLY.
159
160 2009-07-02  Ben Elliston  <bje@au.ibm.com>
161
162         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
163         pc_low and pc_high declarations to the top of the function.
164
165 2009-07-01  DJ Delorie  <dj@redhat.com>
166
167         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
168         registers as fixed.
169         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
170         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
171         unspecified accesses to control registers.
172         * config/mep/intrinsics.md: Regenerate.
173         * config/mep/intrinsics.h: Regenerate.
174         * config/mep/mep-intrin.h: Regenerate.
175         
176 2009-07-01  Anthony Green  <green@moxielogic.com>
177
178         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
179         instruction when possible.
180         (moxie_expand_prologue): Ditto.  Also, save an instruction and
181         some complexity by popping off of $r12 instead of $sp.  
182         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
183         operands.
184         
185 2009-07-01  Richard Henderson  <rth@redhat.com>
186
187         PR bootstrap/40347
188         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
189         contained no insns, reposition note before last insn.
190
191 2009-07-01  Richard Henderson  <rth@redhat.com>
192
193         PR debug/40431
194         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
195         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
196
197 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
198
199         PR bootstrap/40558
200         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
201         darwin9 for printing reg addresses with %y.
202
203 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
204
205         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
206         truncation from operands in binary operations.
207
208 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
209
210         Revert:
211         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
212         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
213         subreg of op0 to the original op0.
214
215         * expmed.c (store_bit_field_1): Use a temporary as the destination
216         instead of a paradoxical subreg when we need to truncate the result.
217
218 2009-07-01  DJ Delorie  <dj@redhat.com>
219
220         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
221         names to VLIW variants.
222         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
223         * config/mep/intrinsics.md: Regenerate.
224         * config/mep/intrinsics.h: Regenerate.
225         * config/mep/mep-intrin.h: Regenerate.
226
227 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
228
229         PR debug/40462
230         * jump.c (returnjump_p): Revert last patch.
231         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
232
233 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
234
235         PR target/40575
236         * pa.md (casesi32p): Use jump table label to determine the offset
237         of the jump table.
238         (casesi64p): Likewise.
239
240         * pa.c (forward_branch_p): Return bool type.  Use instruction
241         addresses when available.  Assert that INSN has a jump label.
242         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
243         have a jump label.
244
245 2009-07-01  Richard Guenther  <rguenther@suse.de>
246
247         PR tree-optimization/19831
248         * tree-ssa-dce.c (propagate_necessity): Calls to functions
249         that only act as barriers do not make any previous stores necessary.
250         * tree-ssa-structalias.c (handle_lhs_call): Delay making
251         HEAP variables global, do not add a constraint from nonlocal.
252         (find_func_aliases): Handle escapes through return statements.
253         (compute_points_to_sets): Make escaped HEAP variables global.
254
255 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
256
257         PR bootstrap/40597
258         * expmed.c (emit_store_flag): Perform a conversion if necessary,
259         after reducing a DImode cstore to SImode.
260
261 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
262
263         * expr.c (expand_expr_real_1): Reinstate fallthrough to
264         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
265
266 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
267
268         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
269         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
270         to 0.
271         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
272         and umod_optab if TARGET_BSD_DIVMOD.
273         * config/vax/lib1funcs.asm: New file.
274         * config/vax/t-linux: New file.
275         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
276
277 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
278
279         PR c++/40566
280         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
281         to type arguments that have void type.
282
283         PR debug/40573
284         * dwarf2out.c (gen_formal_parameter_die): Call
285         equate_decl_number_to_die if node is different from origin.
286
287 2009-06-30  Anthony Green  <green@moxielogic.com>
288
289         Clean up moxie port for --enable-build-with-cxx.
290         * config/moxie/moxie.c (moxie_function_value): First two
291         parameters are const_tree, not tree.
292         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
293         (REG_CLASS_NAMES): Ditto.
294         (REGNO_REG_CLASS): Ditto.
295         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
296         (moxie_function_value): Fix constyness of arguments.
297
298 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
299
300         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
301         finalize_size_functions before further processing.
302         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
303         (variable_size): Call self_referential_size on size expressions
304         that contain a PLACEHOLDER_EXPR.
305         (size_functions): New static variable.
306         (copy_self_referential_tree_r): New static function.
307         (self_referential_size): Likewise.
308         (finalize_size_functions): New global function.
309         * tree.c: Include tree-inline.h.
310         (push_without_duplicates): New static function.
311         (find_placeholder_in_expr): New global function.
312         (substitute_in_expr) <tcc_declaration>: Return the replacement object
313         on equality.
314         <tcc_expression>: Likewise.
315         <tcc_vl_exp>: If the replacement object is a constant, try to inline
316         the call in the expression.
317         * tree.h (finalize_size_functions): Declare.
318         (find_placeholder_in_expr): Likewise.
319         (FIND_PLACEHOLDER_IN_EXPR): New macro.
320         (substitute_placeholder_in_expr): Update comment.
321         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
322         is true.
323         (copy_tree_body_r): Likewise.
324         (copy_tree_body): New static function.
325         (maybe_inline_call_in_expr): New global function.
326         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
327         (maybe_inline_call_in_expr): Declare.
328         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
329         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
330         GIMPLE_H.
331
332 2009-06-30  Richard Guenther  <rguenther@suse.de>
333
334         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
335         continue walking.
336         (propagate_necessity): Do not mark reaching defs of stores
337         as necessary.
338
339 2009-06-30  Jan Hubicka  <jh@suse.cz>
340
341         * cfgloopanal.c (check_irred): Move into ...
342         (mark_irreducible_loops): ... here; return true if ireducible
343         loops was found.
344         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
345         (analyze_function): Try to prove loop finiteness.
346         * cfgloop.h (mark_irreducible_loops): Update prototype.
347         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
348
349 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
350
351         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
352
353 2009-06-30  Ira Rosen  <irar@il.ibm.com>
354
355         PR tree-optimization/40542
356         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile 
357         types.
358
359 2009-06-30  Martin Jambor  <mjambor@suse.cz>
360
361         PR tree-optimization/40582
362         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
363         than useless_type_conversion_p.
364         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
365         proper place.
366
367 2009-06-30  Martin Jambor  <mjambor@suse.cz>
368
369         PR middle-end/40554
370         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
371
372 2009-06-30  Richard Guenther  <rguenther@suse.de>
373
374         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
375         use ao_ref references.
376         (walk_aliased_vdefs): Likewise.
377         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
378         * tree-ssa-dce.c (struct ref_data): Remove.
379         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
380         (mark_aliased_reaching_defs_necessary): Adjust.
381         (mark_all_reaching_defs_necessary_1): Likewise.
382
383 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
384
385         PR boostrap/40597
386         * expmed.c (emit_cstore): New name of emit_store_flag_1.
387         (emit_store_flag_1): Extract from emit_store_flag, adjust
388         calls to (what now is) emit_cstore.
389         (emit_store_flag): Call emit_store_flag_1 and also use it
390         for what used to be recursive calls.
391
392 2009-06-30  Wei Guozhi  <carrot@google.com>
393
394         PR/40416
395         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
396         if the target bb post dominates from bb.
397         * config/i386/i386.c (memory_address_length): Check existence of base
398         register before using it.
399
400 2009-06-30  Nick Clifton  <nickc@redhat.com>
401             DJ Delorie  <dj@redhat.com>
402
403         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
404         __FMOVD_ENABLED__ is defined.
405         * config/sh/sh.h
406         (TARGET_FMOVD): Provide a default definition.
407         (MASK_FMOVD): Likewise.
408         (TARGET_CPU_CPP_BUILTINS): Define
409         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
410         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
411         two fmov instructions depending upon whether TARGET_FMOVD is
412         enabled.
413         (split for DF load from memory into register): Also handle
414         MEMs which consist of REG+DISP addressing.
415         (split for DF store from register to memory): Likewise.
416         * config/sh/sh.opt (mfmovd): Remove this switch.
417         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
418         * config/sh/sh.c (sh_override_options): Do not automatically
419         enable TARGET_MOVD for the SH2A when supporting doubles - leave
420         that to the -mfmovd command line switch.
421
422         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
423         the SH4 and SH4A.
424         (fldi_ok): Always allow.
425         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
426
427 2009-06-29  DJ Delorie  <dj@redhat.com>
428
429         * doc/install.texi (mep-x-elf): Correct chip's full name.
430
431 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
432
433         * doc/extend.texi: Fix typo.
434
435 2009-06-29  Tom Tromey  <tromey@redhat.com>
436
437         * dwarf2.h: Remove.
438         * Makefile.in (DWARF2_H): New variable.
439         (except.o): Use it.
440         (dwarf2out.o): Likewise.
441         (dwarf2asm.o): Likewise.
442         * config/i386/t-i386: Use DWARF2_H.
443         * except.c: Include elf/dwarf2.h.
444         * unwind-dw2.c: Include elf/dwarf2.h.
445         * dwarf2out.c: Include elf/dwarf2.h.
446         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
447         <dtprel>: New field.
448         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
449         (size_of_loc_descr): Likewise.
450         (output_loc_operands_raw): Likewise.
451         (output_loc_operands): Handle new dtprel field.
452         (loc_checksum): Update.
453         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
454         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
455         * unwind-dw2-fde.c: Include elf/dwarf2.h.
456         * dwarf2asm.c: Include elf/dwarf2.h.
457         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
458         * config/mmix/mmix.c: Include elf/dwarf2.h.
459         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
460         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
461         * config/sh/sh.c: Include elf/dwarf2.h.
462         * config/i386/i386.c: Include elf/dwarf2.h.
463
464 2009-06-29  DJ Delorie  <dj@redhat.com>
465
466         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
467
468         * doc/extend.texi: Add MeP attributes and pragmas.
469         * doc/invoke.text: Add MeP Options.
470         * doc/contrib.texi: Add MeP contribution.
471         * doc/md.texi: Add MeP constraints.
472         * doc/install.texi: Add MeP target.
473
474 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
475
476         * target.h (struct gcc_target): Add frame_pointer_required field.
477         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
478         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
479         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
480         hook.
481         * reload1.c (update_eliminables): (Ditto.).
482         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
483         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
484         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
485
486         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
487
488         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
489         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
490         (arm_frame_pointer_required): New function.
491
492         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
493         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
494         (avr_frame_pointer_required_p): Declare as static.
495         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
496
497         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
498         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
499         (bfin_frame_pointer_required): Make as static, change return type
500         to bool.
501         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
502
503         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
504         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
505         (cris_frame_pointer_required): New function.
506         
507         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
508
509         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
510         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
511         (fr30_frame_pointer_required): New function.
512         
513         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
514         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
515         (frv_frame_pointer_required): Make as static, change return type
516         to bool.
517         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
518
519         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
520         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
521         (ix86_frame_pointer_required): Make as static, change return type to
522         bool.
523         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
524
525         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
526         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
527
528         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
529
530         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
531         
532         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
533
534         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
535         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
536         (mips_frame_pointer_required): Make as static.
537         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
538         
539         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
540         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
541         (mmix_frame_pointer_required): Mew function.
542
543         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
544         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
545
546         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
547
548         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
549
550         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
551
552         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
553         (CAN_ELIMINATE): Redefine.
554         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
555         (sparc_frame_pointer_required): New function.
556         (sparc_can_eliminate): New function.
557         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
558
559         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
560         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
561
562         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
563         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
564         (xtensa_frame_pointer_required): Make as static, change return type
565         to bool.
566         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
567         Remove.
568
569 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
570
571         * doc/plugins.texi: Document PLUGIN_START_UNIT.
572         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
573         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
574         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
575         (register_callback): Handle PLUGIN_START_UNIT.
576         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
577
578 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
579
580         * tree.c (process_call_operands): Propagate TREE_READONLY from the
581         operands.
582         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
583         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
584
585 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
586
587         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
588         move cost.
589
590 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
591
592         * doc/extend.texi (Additional Floating Types): __float128 is also
593         supported on i386 targets.
594
595 2009-06-29  Richard Guenther  <rguenther@suse.de>
596
597         PR middle-end/14187
598         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
599         flag.
600         (pt_solutions_same_restrict_base): Declare.
601         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
602         flag.
603         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
604         (make_constraint_from, make_copy_constraint): Move earlier.
605         (make_constraint_from_heapvar): New function.
606         (make_constraint_from_restrict): Likewise.
607         (handle_lhs_call): Use it.
608         (find_func_aliases): Use it to track conversions to restrict
609         qualified pointers.
610         (struct fieldoff): Add only_restrict_pointers flag.
611         (push_fields_onto_fieldstack): Initialize it.
612         (create_variable_info_for): Track global restrict qualified pointers.
613         (intra_create_variable_infos): Use make_constraint_from_heapvar.
614         Track restrict qualified pointer arguments.
615         (set_uids_in_ptset): Use varinfo is_global_var flag.
616         (find_what_var_points_to): Set the vars_contains_restrict flag.
617         Always create the points-to solution for sets including restrict tags.
618         (pt_solutions_same_restrict_base): New function.
619         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
620         qualified pointers use pt_solutions_same_restrict_base as
621         additional source for disambiguation.
622
623 2009-06-29  Richard Guenther  <rguenther@suse.de>
624
625         PR middle-end/38212
626         * alias.c (find_base_decl): Remove.
627         (get_deref_alias_set_1): Remove restrict handling.
628         * c-common.c (c_apply_type_quals_to_decl): Do not set
629         DECL_POINTER_ALIAS_SET.
630         * gimplify.c (find_single_pointer_decl_1): Remove.
631         (find_single_pointer_decl): Likewise.
632         (internal_get_tmp_var): Remove restrict handling.
633         (gimple_regimplify_operands): Likewise.
634         * omp-low.c (expand_omp_atomic_pipeline): Do not set
635         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
636         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
637         * tree.c (restrict_base_for_decl): Remove.
638         (init_ttree): Do not allocate it.
639         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
640         LABEL_DECL_UID for label decls.
641         (copy_node_stat): Do not copy restrict information.
642         (decl_restrict_base_lookup): Remove.
643         (decl_restrict_base_insert): Likewise.
644         (print_restrict_base_statistics): Likewise.
645         (dump_tree_statistics): Do not call print_restrict_base_statistics.
646         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
647         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
648         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
649         (LABEL_DECL_UID): Adjust.
650         (DECL_BASED_ON_RESTRICT_P): Remove.
651         (DECL_GET_RESTRICT_BASE): Likewise.
652         (SET_DECL_RESTRICT_BASE): Likewise.
653         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
654
655         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
656         instead of DECL_POINTER_ALIAS_SET.
657         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
658         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
659         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
660
661 2009-06-29  Richard Guenther  <rguenther@suse.de>
662
663         PR tree-optimization/40579
664         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
665         the IL to simplify has constants that overflowed.
666
667 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
668
669         PR tree-optimization/40550
670         * tree-vect-generic.c (expand_vector_operations_1): Compute in
671         vector_compute_type only when the size of vector_compute_type is
672         less than the size of type.
673
674 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
675
676         * fold-const.c (contains_label_1): Fix comments.
677         (contains_label_p): Do not walk trees multiple time.
678
679 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
680
681         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
682         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
683         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
684         ix86_fp_comparison_operator.
685         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
686         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
687         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
688         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
689         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
690         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
691         (related splits): Change predicate to ix86_fp_comparison_operator.
692         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
693         instead of ix86_fp_comparison_codes.
694         (ix86_trivial_fp_comparison_operator,
695         ix86_fp_comparison_operator): New.
696         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
697         (ix86_expand_compare): Eliminate last two parameters.
698         (ix86_fp_jump_nontrivial_p): Kill.
699         * config/i386/i386.c (put_condition_code): Eliminate call to
700         ix86_fp_comparison_codes and subsequent assertion.
701         (ix86_fp_comparison_codes): Eliminate.
702         (ix86_fp_swap_condition): New.
703         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
704         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
705         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
706         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
707         and ix86_fp_swap_condition.
708         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
709         Use ix86_fp_comparison_strategy.
710         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
711         (ix86_fp_jump_nontrivial_p): Eliminate.
712         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
713         call to ix86_expand_compare.
714         (ix86_split_fp_branch, ix86_expand_setcc,
715         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
716         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
717
718 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
719
720         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
721         related to jump_clobbers.
722         * config/arm/arm.md (conds): Remove jump_clob case.
723         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
724         splits): Change comparison_operator to arm_comparison_operator.
725         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
726         Eliminate.
727
728 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
729
730         * dojump.c (do_compare_rtx_and_jump): Try swapping the
731         condition for floating point modes.
732         * expmed.c (emit_store_flag_1): Move here a bigger part
733         of emit_store_flag.
734         (emit_store_flag): Try swapping the condition for floating point
735         modes.
736         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
737
738 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
739
740         * expr.c (expand_expr_real_1): Just use do_store_flag.
741         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
742         emit_store_flag_force.
743         * expmed.c (emit_store_flag_force): Copy here trick
744         previously in expand_expr_real_1.  Try reversing the comparison.
745         (emit_store_flag_1): Work if target is NULL.
746         (emit_store_flag): Work if target is NULL, using the result mode
747         from the comparison.  Use split_comparison, restructure final part
748         to simplify conditionals.
749
750 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
751
752         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
753         * dojump.c (do_jump): Change handling of floating-point
754         ops to use just do_compare_and_jump.
755         (split_comparison): New.
756         (do_compare_rtx_and_jump): Add here logic coming previously
757         in do_jump, using split_comparison.
758
759 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
760
761         PR target/40489
762         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
763
764 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
765
766         * tree-ssa-alias.c: Fix unintentional commit.
767
768 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
769
770         * passes.c (execute_one_pass): Fix unintentional commit.
771
772 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
773
774         * df-problems.c (df_set_seen, df_unset_seen): Delete.
775         (df_rd_local_compute, df_md_local_compute): Inline them.
776
777         (df_md_scratch): New.
778         (df_md_alloc, df_md_free): Allocate/free it.
779         (df_md_local_compute): Only include live registers in init.
780         (df_md_transfer_function): Prune the in-set computed by
781         the confluence function, and the gen-set too.
782
783 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
784
785         PR rtl-optimization/26854
786         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
787         * df-problems.c (df_rd_add_problem): Fix comment.
788         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
789         df_md_simulate_artificial_defs_at_top,
790         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
791         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
792         df_md_transfer_function, df_md_init, df_md_confluence_0,
793         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
794         problem_MD, df_md_add_problem): New.
795         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
796         df_md_get_bb_info): New.
797         (DF_LAST_PROBLEM_PLUS1): Adjust.
798
799         * Makefile.in (fwprop.o): Include domwalk.h.
800         * fwprop.c: Include domwalk.h.
801         (reg_defs, reg_defs_stack): New.
802         (bitmap_only_bit_between): Remove.
803         (process_defs): New.
804         (process_uses): Use reg_defs and local_md instead of
805         bitmap_only_bit_between and local_rd.
806         (single_def_use_enter_block): New, from build_single_def_use_links.
807         (single_def_use_leave_block): New.
808         (build_single_def_use_links): Remove code moved to
809         single_def_use_enter_block, invoke domwalk.
810         (use_killed_between): Adjust comment.
811
812 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
813
814         * bitmap.h (bitmap_ior_and_into): New.
815         * bitmap.c (bitmap_ior_and_into): New.
816
817 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
818
819         * domwalk.h (struct dom_walk_data): Remove all callbacks except
820         before_dom_children_before_stmts and after_dom_children_after_stmts.
821         Rename the two remaining callbacks to just before_dom_children and 
822         after_dom_children. Remove other GIMPLE statement walking bits.
823         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
824         * graphite.c: Do not include domwalk.h.
825         * tree-into-ssa.c (interesting_blocks): New global.
826         (struct mark_def_sites_global_data): Remove it and names_to_rename.
827         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
828         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
829         now that they're not domwalk callbacks.
830         (rewrite_initialize_block): Rename to...
831         (rewrite_enter_block): ... this, place after called functions.  Test
832         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
833         (rewrite_finalize_block): Rename to...
834         (rewrite_leave_block): ... this, place after called functions.
835         (rewrite_update_init_block): Rename to...
836         (rewrite_update_enter_block): ... this, place after called functions.
837         Test interesting_blocks, call rewrite_update_stmt and 
838         rewrite_update_phi_arguments.
839         (rewrite_update_fini_block): Rename to...
840         (rewrite_leave_block): ... this, place after called functions.
841         (rewrite_blocks): Remove last argument, simplify initialization of
842         walk_data.
843         (mark_def_sites_initialize_block): Rename to...
844         (mark_def_sites_block): ... this, call mark_def_sites.
845         (mark_def_sites_blocks): Remove argument, simplify initialization of
846         walk_data.
847         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
848         (update_ssa): Likewise.
849         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
850         callback.
851         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
852         (dom_opt_initialize_block): Rename to...
853         (dom_opt_enter_block): ... this, place after called functions.  Walk
854         statements here, inline propagate_to_outgoing_edges.
855         (dom_opt_finalize_block): Rename to...
856         (dom_opt_leave_block): ... this, place after called functions.
857         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
858         domwalk callback.
859         (dse_enter_block, dse_record_phi): New.
860         (dse_record_phis): Delete.
861         (dse_finalize_block): Rename to...
862         (dse_leave_block): ... this.
863         (tree_ssa_dse): Simplify initialization of walk_data.
864         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
865         Adjust initialization of walk_data.
866         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
867         * tree-ssa-loop-phiopt.c (get_non_trapping):
868         Adjust initialization of walk_data.
869         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
870         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
871         it's not a domwalk callback.
872         (uncprop_initialize_block): Rename to...
873         (dse_enter_block): ... this, call uncprop_into_successor_phis.
874         (dse_finalize_block): Rename to...
875         (dse_leave_block): ... this.
876         (tree_ssa_uncprop): Simplify initialization of walk_data.
877         * Makefile.in: Adjust dependencies.
878
879 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
880
881         * arm.md (casesi): Fix test for Thumb1.
882         (thumb1_casesi_internal_pic): Likewise.
883         (thumb1_casesi_dispatch): Likewise.
884
885 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
886
887         * config/arm/arm-cores.def: Added core cortex-m0.
888         * config/arm/arm-tune.md: Regenerated.
889         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
890
891 2009-06-26  DJ Delorie  <dj@redhat.com>
892
893         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
894
895         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
896         the scheduler doesn't tag jump insns.
897
898 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
899
900         * c-decl.c (merge_decls): Re-indent.
901
902 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
903
904         PR c/39902
905         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
906         Special-case decimal float constants.
907
908 2009-06-26  Richard Henderson  <rth@redhat.com>
909
910         * function.h (struct function): Add cannot_be_copied_reason,
911         and cannot_be_copied_set.
912         * tree-inline.c (has_label_address_in_static_1): Rename from
913         inline_forbidden_p_2; don't set inline_forbidden_reason here.
914         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
915         don't set inline_forbidden_reason.
916         (copy_forbidden): New function, split out of inline_forbidden_p.
917         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
918         (inline_forbidden_p): Use copy_forbidden.
919         (tree_versionable_function_p): Likewise.
920         (inlinable_function_p): Merge into tree_inlinable_function_p.
921         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
922         * ipa-cp.c (ipcp_versionable_function_p): New function.
923         (ipcp_cloning_candidate_p): Use it.
924         (ipcp_node_modifiable_p): Likewise.
925
926 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
927
928         * builtins.c (expand_builtin_alloca): Handle builtin alloca
929         that is marked not to be inlined. Remove flag_mudflap use.
930         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
931         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
932
933 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
934
935         PR bootstrap/40338
936         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
937         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
938
939 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
940
941         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
942         shared libgcc.
943         (__mingwthr_remove_key_dtor): Likewise.
944
945 2009-06-26  Richard Guenther  <rguenther@suse.de>
946
947         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
948
949 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
950
951         PR middle-end/40525
952         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
953         try the non-cond_exec path also.
954
955 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
956
957         PR target/40468
958         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
959         (output_cbranch): Use new functions.
960         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
961         Likewise.
962
963 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
964             Pat Haugen  <pthaugen@us.ibm.com>
965             Revital Eres <ERES@il.ibm.com>
966
967         * config/rs6000/rs6000.c (print_operand): Correct lossage message
968         for %c error.  Add %x support to print VSX registers as a unified
969         register set, instead of separate float and altivec registers.
970         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
971         %y case, and add support for VSX pre-modify addresses.
972         (output_toc): Add assert for CONST containing an integer constant
973         in the PLUS case.
974         (rs6000_adjust_cost): Add POWER7 support.
975         (insn_must_be_first_in_group): Ditto.
976         (insn_must_be_last_in_group): Ditto.
977         (rs6000_emit_popcount): Ditto.
978         (rs6000_vector_mode_supported_p): Ditto.
979
980         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
981         Change some of the functions called by macros to being called
982         through a pointer, so debug functions can be inserted if
983         -mdebug=addr or -mdebug=cost. 
984         (rs6000_preferred_reload_class_ptr): Ditto.
985         (rs6000_secondary_reload_class_ptr): Ditto.
986         (rs6000_secondary_memory_needed_ptr): Ditto.
987         (rs6000_cannot_change_mode_class_ptr): Ditto.
988         (rs6000_secondary_reload_inner): Ditto.
989         (rs6000_legitimize_reload_address): Ditto.
990         (rs6000_legitimize_reload_address_ptr): Ditto.
991         (rs6000_mode_dependent_address): Ditto.
992         (rs6000_mode_dependent_address_ptr): Ditto.
993
994         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
995         function to return true if the mode allows reg + integer
996         addresses.
997         (virtual_stack_registers_memory_p): New function to return true if
998         the address refers to a virtual stack register.
999         (rs6000_legitimate_offset_address_p): Move code to say whether a
1000         mode supports reg+int addressing to reg_offset_addressing_ok_p and
1001         call it.
1002         (rs6000_legitimate_address_p): Add checks for modes that only can
1003         do reg+reg addressing.  Start adding VSX support.
1004         (rs6000_legitimize_reload_address): Ditto.
1005         (rs6000_legitimize_address): Ditto.
1006         (rs6000_debug_legitimate_address_p): New debug functions for
1007         -mdebug=addr and -mdebug=cost.
1008         (rs6000_debug_rtx_costs): Ditto.
1009         (rs6000_debug_address_costs): Ditto.
1010         (rs6000_debug_adjust_cost): Ditto.
1011         (rs6000_debug_legitimize_address): Ditto.
1012         (rs6000_legitimize_reload_address_ptr): Point to call normal
1013         function or debug function.  Make functions called via pointer
1014         static.
1015         (rs6000_mode_dependent_address_ptr): Ditto.
1016         (rs6000_secondary_reload_class_ptr): Ditto.
1017         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
1018         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
1019         into a friendlier error.
1020         (rs6000_init_builtins): Add initial VSX support.
1021         (rs6000_adjust_cost): Fix some spacing issues.
1022
1023         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
1024         (REG_CLASS_NAMES): Ditto.
1025         (REG_CLASS_CONTENTS): Ditto.
1026         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
1027         pointer, to add -mdebug=addr support.
1028         (CANNOT_CHANGE_MODE_CLASS): Ditto.
1029         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
1030         -mdebug=addr support.
1031         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
1032         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
1033         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
1034
1035         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
1036         16-bit values.
1037         (bswapsi*): Set attribute types for load/store.  Add combiner
1038         patterns to eliminate zero extend on 64-bit.
1039         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
1040         stdbrx if the hardware supports those instructions.
1041
1042 2009-06-25  Ian Lance Taylor  <iant@google.com>
1043
1044         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
1045         (Link Options): Document -static-libstdc++.
1046
1047 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1048
1049         PR target/38731
1050         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
1051         DATA_ALIGNMENT instead.
1052
1053 2009-06-25  Richard Guenther  <rguenther@suse.de>
1054
1055         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
1056         indirect references against the callused/escaped solutions.
1057         (call_may_clobber_ref_p_1): Likewise.
1058
1059 2009-06-25  Martin Jambor  <mjambor@suse.cz>
1060
1061         PR tree-optimization/40493
1062         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
1063         (enum unscalarized_data_handling): New type.
1064         (handle_unscalarized_data_in_subtree): Return what has been done.
1065         (load_assign_lhs_subreplacements): Handle left flushes differently.
1066         (sra_modify_assign): Use unscalarized_data_handling, simplified
1067         condition determining whether to remove the statement.
1068
1069 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
1070
1071         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
1072         excerpt - @ should be doubled for texinfo.
1073
1074 2009-06-24  Ian Lance Taylor  <iant@google.com>
1075
1076         * config/arc/arc.c: Include "df.h".
1077         (arc_attribute_table): Make static.  Move higher in file.
1078         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
1079         (output_shift): Initialize n later to avoid warning.
1080         * config/arm/arm.c (arm_attribute_table): Make static.  Move
1081         higher in file.
1082         * config/avr/avr.c (avr_attribute_table): Make static.  Move
1083         higher in file.
1084         (reg_class_tab): Change array type from int to enum reg_class.
1085         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
1086         LABEL_REF.
1087         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
1088         (lshrhi3_out): Likewise.
1089         (class_likely_spilled_p): Change return type to bool.
1090         (avr_rtx_costs): Use local code variable with enum type.
1091         * config/avr/avr.md (movmemhi): Use add_reg_note.
1092         (andhi3, andsi3): Don't use AS2 with "and".
1093         (iorhi3, iorsi3): Don't use AS2 with "or".
1094         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
1095         * config/crx/crx.c: Include "df.h".
1096         (crx_attribute_table): Make static.
1097         * config/m32r/m32r.c: Include "df.h".
1098         (m32r_attribute_table): Make static.  Move higher in file.
1099         (pop): Use add_reg_note.
1100         (block_move_call): Change 0 to LCT_NORMAL in function call.
1101         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
1102         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
1103         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
1104         declare, not just when TREE_CODE is defined.
1105         * config/m68hc11/m68hc11.c: Include "expr.h".
1106         (m68hc11_attribute_table): Make static.  Move higher in file.
1107         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
1108         function call.
1109         (m68hc11_register_indirect_p): Likewise.
1110         (m68hc11_function_arg_padding): Change return type to enum
1111         direction.
1112         (emit_move_after_reload): Use add_reg_note.
1113         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
1114         (m68hc11_split_logical): Likewise.
1115         (m68hc11_rtx_costs): Add local code_and outer_code variables with
1116         enum type.
1117         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
1118         to VOIDmode in function call.
1119         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
1120         tree is defined.
1121         (m68hc11_split_logical): Update declaration.
1122         (m68hc11_function_arg_padding): Update declaration.
1123         * config/mcore/mcore.c (regno_reg_class): Change form array of int
1124         to array of enum reg_class.
1125         (mcore_attribute_table): Make static.  Move higher in file.
1126         (mcore_rtx_costs): Add cast to enum type.
1127         * config/mcore/mcore.h (regno_reg_class): Update declaration.
1128         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
1129         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
1130         in file.
1131         * config/sh/predicates.md (trapping_target_operand): Rename and to
1132         and_expr.
1133         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
1134         higher in file.
1135         * config/spu/spu.c (spu_attribute_table): Make static.  Move
1136         higher in file.
1137         * config/v850/v850.c (v850_attribute_table): Make static.  Move
1138         higher in file.
1139         (v850_rtx_costs): Use local code with enum type.
1140         (expand_epilogue): Add cast.
1141         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
1142
1143 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
1144
1145         PR target/40515
1146         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
1147         -m2a-single-only and -m2a-nofpu.
1148         * config/sh/sh.opt: Document m2a generates FPU code.  
1149
1150 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
1151
1152         * defaults.h (CAN_ELIMINATE): Provide default.
1153         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
1154         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
1155         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
1156         * config/spu/spu.h (CAN_ELIMINATE): Delete.
1157         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
1158         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
1159         * config/cris/cris.h (CAN_ELIMINATE): Delete.
1160         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
1161         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
1162         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
1163
1164 2009-06-24  DJ Delorie  <dj@redhat.com>
1165
1166         * mep-ext-cop.cpu: Fix copyright notice.
1167         * mep-default: Fix copyright notice.
1168         * mep-core: Fix copyright notice.
1169         * mep: Fix copyright notice.
1170         * mep-ivc2: Fix copyright notice.
1171         * mep-c5: Fix copyright notice.
1172
1173 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
1174
1175         * doc/contrib.texi (Contributors): 
1176
1177 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
1178         
1179         PR middle-end/40501
1180         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
1181         src and dst operands if necessary.
1182
1183 2009-06-23  DJ Delorie  <dj@redhat.com>
1184
1185         Add MeP port.
1186         * config.gcc: Add mep support.
1187         * recog.c: Resurrect validate_replace_rtx_subexp().
1188         * recog.h: Likewise.
1189         * config/mep/: Add new port:
1190         * config/mep/constraints.md: New file.
1191         * config/mep/default.h: New file.
1192         * config/mep/intrinsics.h: New file.
1193         * config/mep/intrinsics.md: New file.
1194         * config/mep/ivc2-template.h: New file.
1195         * config/mep/mep-c5.cpu: New file.
1196         * config/mep/mep-core.cpu: New file.
1197         * config/mep/mep-default.cpu: New file.
1198         * config/mep/mep-ext-cop.cpu: New file.
1199         * config/mep/mep-intrin.h: New file.
1200         * config/mep/mep-ivc2.cpu: New file.
1201         * config/mep/mep-lib1.asm: New file.
1202         * config/mep/mep-lib2.c: New file.
1203         * config/mep/mep-pragma.c: New file.
1204         * config/mep/mep-protos.h: New file.
1205         * config/mep/mep-tramp.c: New file.
1206         * config/mep/mep.c: New file.
1207         * config/mep/mep.cpu: New file.
1208         * config/mep/mep.h: New file.
1209         * config/mep/mep.md: New file.
1210         * config/mep/mep.opt: New file.
1211         * config/mep/predicates.md: New file.
1212         * config/mep/t-mep: New file.
1213
1214 2009-06-23  Ian Lance Taylor  <iant@google.com>
1215
1216         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
1217         from loose_warn into c_loose_warn and from strict_warn into
1218         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
1219         --enable-build-with-cxx.  Set and substitute
1220         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
1221         * Makefile.in (CXXFLAGS): New variable.
1222         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
1223         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
1224         the default is the same as $(STRICT_WARN).
1225         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
1226         (CXX): New variable.
1227         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
1228         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
1229         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
1230         (HOST_LIBS): New variable.
1231         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
1232         (ALL_CXXFLAGS): New variable.
1233         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
1234         * doc/install.texi (Configuration): Document
1235         --enable-build-with-cxx, --with-stage1-ldflags,
1236         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
1237         * configure: Rebuild.
1238
1239 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1240
1241         * config/arm/arm.c (arm_override_options): Fix braces and formatting
1242         from previous commit.
1243
1244 2009-06-23  Ian Lance Taylor  <iant@google.com>
1245
1246         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
1247
1248 2009-06-23  Ian Lance Taylor  <iant@google.com>
1249
1250         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
1251         with ATTRIBUTE_UNUSED.
1252
1253 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
1254             Pat Haugen  <pthaugen@us.ibm.com>
1255             Revital Eres  <eres@il.ibm.com>
1256
1257         * config.in (HAVE_AS_POPCNTD): Add default definition.
1258         (HAVE_AS_LWSYNC): Ditto.
1259
1260         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
1261         release number.
1262         (gcc_cv_as_powerpc_cmpb): Ditto.
1263         (gcc_cv_as_powerpc_dfp): Ditto.
1264         (gcc_cv_as_powerpc_vsx): Ditto.
1265         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
1266         supporting the popcntd/lwsync instructions.
1267         (gcc_cv_as_powerpc_lwsync): Ditto.
1268         * configure: Regenerate.
1269
1270         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
1271         -mcpu=native and -mcpu=power7.
1272         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
1273
1274         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
1275         a variable instead of a mask to reduce the number of mask bits.
1276         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
1277         (-mbit-word): Ditto.
1278         (-mregnames): Ditto.
1279         * config/rs6000/rs6000.opt (-mupdate): Ditto.
1280         (-mfused-madd): Ditto.
1281
1282         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
1283         2.06 instructions.
1284         (-mvsx): New switch for VSX instructions.
1285         (-misel): Move from a variable to a mask to allow it to be set by
1286         -mcpu=.
1287
1288         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
1289         function declaration to an array declaration.
1290         (rs6000_hard_regno_nregs): New external array declaration.
1291
1292         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
1293         files included by rs6000.md.
1294
1295         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
1296         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
1297
1298         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
1299         a target mask.
1300         (rs6000_debug_reg): New -mdebug= variables.
1301         (rs6000_debug_addr): Ditto.
1302         (rs6000_debug_cost): Ditto.
1303         (rs6000_pmode): New variable to hold Pmode.
1304         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
1305         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
1306         calculated at compiler start.
1307         (rs6000_hard_regno_nregs): Change function to an array which holds
1308         HARD_REGNO_NREGS calculated at compiler start.
1309         (rs6000_explicit_options): Delete isel field.
1310         (rs6000_vector_unit): New array to hold which vector unit
1311         supports arithmetic options for a given type.
1312         (rs6000_vector_mem): New array to hold which vector unit supports
1313         memory reference operations for a given type.
1314         (rs6000_vector_align): New array to given the alignment of each
1315         vector type.
1316         (power7_cost): New basic costs for power7.
1317         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
1318         (rs6000_hard_regno_nregs_internal): New function, moved from
1319         HARD_REGNO_NREGS, to calculate the number of registers each hard
1320         register takes for each type.
1321         (rs6000_debug_reg_print): New function for -mdebug=reg support.
1322         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
1323         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
1324         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
1325         unit information here so it is calculated once at compiler startup
1326         time.
1327         (rs6000_override_options): Make -misel a target mask.  Add more
1328         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
1329         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
1330         -mdebug=cost.
1331         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
1332         (rs6000_handle_option): Move -misel from variable to target mask.
1333         (rs6000_builtin_mask_for_load): Add VSX support.
1334         (rs6000_conditional_register_usage): Ditto.
1335         (USE_ALTIVEC_FOR_ARG_P): Ditto.
1336         (function_arg_boundary): Ditto.
1337         (rs6000_expand_builtin): Ditto.
1338         (def_builtin): Make abort message a little friendlier.
1339         (rs6000_emit_int_cmove): Add support for 64-bit isel.
1340
1341         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
1342         assembler support the popcntd instruction instead of a vsx
1343         instruction to enable power7 support.
1344         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
1345         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
1346         option to the assembler if -mcpu=native.
1347         (ASM_CPU_NATIVE_SPEC): Ditto.
1348         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
1349         ISA 2.06 features.
1350         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
1351         the lwsync instruction.
1352         (enum processor_type): Add PROCESSOR_POWER7.
1353         (rs6000_debug_reg): New -mdebug= options.
1354         (rs6000_debug_addr): Ditto.
1355         (rs6000_debug_cost): Ditto.
1356         (rs6000_isel): Delete.
1357         (enum rs6000_vector): New enum to say what vector unit we have.
1358         (VECTOR_UNIT_*): New macros to say which vector unit has
1359         arithmetic operations for a given type.
1360         (VECTOR_MEM_*): New macros to say which vector unit has memory
1361         operations for a given type.
1362         (TARGET_LDBRX): Whether the machine supports the ldbrx
1363         instruction.
1364         (TARGET_ISEL): Delete, -misel moved to be a mask.
1365         (TARGET_ISEL64): New macro for 64-bit isel support.
1366         (UNITS_PER_VSX_WORD): New macro.
1367         (POINTER_SIZE): Move to be an external variable, rather than
1368         calculating whether we are generating 32 ot 64-bit code.
1369         (Pmode): Ditto.
1370         (STACK_BOUNDARY): Add VSX support.
1371         (LOCAL_ALIGNMENT): Ditto.
1372         (SLOW_UNALIGNED_ACCESS): Ditto.
1373         (VSX_REGNO_P): New macro for VSX support.
1374         (VFLOAT_REGNO_P): Ditto.
1375         (VINT_REGNO_P): Ditto.
1376         (VLOGICAL_REGNO_P): Ditto.
1377         (VSX_VECTOR_MODE): Ditto.
1378         (VSX_SCALAR_MODE): Ditto.
1379         (VSX_MODE): Ditto.
1380         (VSX_MOVE_MODE): Ditto.
1381         (VSX_REG_CLASS_P): Ditto.
1382         (HARD_REGNO_NREGS): Instead of calling a function, use an array
1383         lookup.
1384         (UNITS_PER_SIMD_WORD): Add VSX support.
1385         (MODES_TIEABLE_P): Ditto.
1386         (STARTING_FRAME_OFFSET): Ditto.
1387         (STACK_DYNAMIC_OFFSET): Ditto.
1388         (EPILOGUE_USES): Ditto.
1389         (REGNO_REG_CLASS): Move to array lookup.
1390         (CLASS_MAX_NREGS): Ditto.
1391         (rs6000_vector_reg_class): Add declaration.
1392         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
1393         overlap with the floating point and Altivec registers.
1394
1395         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
1396
1397         * config/rs6000/driver-rs6000.c (asm_names): New static array to
1398         give the appropriate asm switches if -mcpu=native.
1399         (host_detect_local_cpu): Add support for "asm".
1400         (host_detect_local_cpu): Follow GNU code guidelines for name.
1401
1402         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
1403         -mbit-word to a variable instead of being a target mask.
1404
1405         * config/rs6000/sync.md (lwsync): If the assembler supports it,
1406         emit the lwsync instruction instead of emitting the instruction as
1407         an integer constant.
1408
1409         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
1410         fixuns_trundfsi2, move expander into rs6000.md.
1411
1412         * config/rs6000/rs6000.md (cpu): Add power7.
1413         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
1414         (logical predicate patterns): Change the single instruction
1415         primitives that set CR0 to be fast_compare instead of compare.
1416         (norsi*): Ditto.
1417         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
1418         (popcntddi2): Ditto.
1419         (popcount<mode>): Ditto.
1420         (floating multiply/add insns): Name the floating point
1421         multiply/add insns.
1422         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
1423         (isel_unsigned_<mode>): Ditto.
1424         (fixuns_trundfsi2): Move expander here from spe.md.
1425         (smindi3): Define if we have -misel on 64-bit systems.
1426         (smaxdi3): Ditto.
1427         (umindi3): Ditto.
1428         (umaxdi3): Ditto.
1429
1430 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
1431
1432         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
1433         extra_objs.
1434         * config/avr/avr.c (avr_current_device): New variable.
1435         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
1436         (avr_arch, mcu_type_s): Move to avr.h.
1437         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
1438         default_data_section_start fields.
1439         (avr_arch): Moved from avr.c.
1440         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
1441         library_name fields.
1442         (avr_current_device, avr_mcu_types, avr_arch_types,
1443         avr_device_to_arch, avr_device_to_data_start,
1444         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
1445         (EXTRA_SPEC_FUNCTIONS): Define.
1446         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
1447         options mapping. Use device_to_arch and device_to_data_start insted.
1448         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
1449         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
1450         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
1451         * config/avr/driver-avr.c: New file.
1452         * config/avr/avr-devices.c: New file.
1453
1454 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
1455
1456         * var-tracking.c (unshare_variable): Force initialized to
1457         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
1458         (set_variable_part): Likewise.
1459         (struct variable_union_info): Remove pos_src field.
1460         (vui_vec, vui_allocated): New variables.
1461         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
1462         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
1463         == 1 use a simpler sorting algorithm.  Compute pos field right
1464         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
1465         Avoid quadratic comparison if !flag_var_tracking_uninit.
1466         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
1467         unshare_variable unconditionally.   
1468         (dataflow_set_different_2): Removed.
1469         (dataflow_set_different): Don't traverse second hash table.
1470         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
1471         unconditionally to var_reg_set or var_mem_set.
1472         (emit_notes_in_bb): Likewise.
1473         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
1474         unshare_variable.
1475         (emit_note_insn_var_location): Don't set initialized to
1476         VAR_INIT_STATUS_INITIALIZED early.
1477         (vt_finalize): Free vui_vec if needed, clear vui_vec and
1478         vui_allocated.
1479         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
1480
1481         * tree-object-size.c (addr_object_size): Instead of checking
1482         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
1483         are no FIELD_DECLs following it.
1484
1485 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
1486
1487         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
1488         order to match bswaps with signed source operands.
1489
1490 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1491
1492         * sdbout.c (sdbout_one_type): Fix braces in switch.
1493
1494 2009-06-23  Richard Guenther  <rguenther@suse.de>
1495
1496         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
1497         member.
1498         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
1499         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
1500         var_callused, callused_tree, var_storedanything, storedanything_tree,
1501         var_integer, integer_tree): Remove global variables.
1502         (new_var_info): Do not pass new id, append the new var to the
1503         global variable vector.
1504         (do_ds_constraint): Use is_global_var member of the variable-info.
1505         (new_scalar_tmp_constraint_exp): Adjust.
1506         (create_function_info_for): Likewise.
1507         (create_variable_info_for): Likewise.
1508         (find_what_var_points_to): Remove dead code.
1509         (init_base_vars): Simplify.
1510         (compute_points_to_sets): Adjust.
1511
1512 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
1513
1514         * combine.c (try_combine): Dump information about the insns we're
1515         combining.
1516
1517 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
1518
1519         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
1520         check when calling force_to_mode on TRUNCATE's operand.
1521
1522 2009-06-22  Ian Lance Taylor  <iant@google.com>
1523
1524         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
1525
1526 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
1527
1528         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
1529
1530 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1531
1532         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
1533         override library linkage flags such as -static-libgcc or
1534         -shared-libgcc.
1535
1536 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
1537
1538         * config/m68k/m68k-devices.def: Add line for MCF5221x.
1539
1540 2009-06-22  Ian Lance Taylor  <iant@google.com>
1541
1542         * config/linux.opt: Put mglibc ahead of muclibc.
1543
1544         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
1545         for duplicate decls.
1546
1547 2009-06-22  Matthias Klose  <doko@ubuntu.com>
1548
1549         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
1550
1551 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
1552
1553         PR objc/28050
1554         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
1555         instead of NULL if a parser error occurs.
1556
1557 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1558
1559         * dwarf2out.c (dwarf2_debug_hooks): Initialize
1560         non-DWARF2_DEBUGGING_INFO version.
1561
1562 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
1563
1564         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
1565         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
1566
1567         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
1568         (LIBGCC2_TF_CEXT): Define.
1569         (TF_SIZE): Define.
1570
1571 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1572
1573         PR target/40463
1574         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
1575
1576 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1577
1578         * config/arm/arm.c (arm_override_options): Disable
1579         -mcaller-super-interworking and -mcallee-super-interworking.
1580         * doc/invoke.texi (ARM Options): Document this.
1581
1582 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
1583
1584         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
1585         * config/arm/constraints.md (j): New constraint for movw operands.
1586         (N): Remove thumb2 meaning.
1587         * config/arm/arm.md (*arm_movw): Delete.
1588         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
1589         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
1590         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
1591
1592 2009-06-22  Martin Jambor  <mjambor@suse.cz>
1593
1594         PR tree-optimization/40492
1595         * tree-sra.c (sra_modify_assign): Pass zero offsets to
1596         build_ref_for_offset.
1597
1598 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
1599
1600         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
1601         JUMP_TABLE_DATA_P predicates where applicable.
1602         * auto-inc-dec.c: Ditto.
1603         * builtins.c: Ditto.
1604         * caller-save.c: Ditto.
1605         * calls.c: Ditto.
1606         * cfgcleanup.c: Ditto.
1607         * cfglayout.c: Ditto.
1608         * cfgrtl.c: Ditto.
1609         * combine.c: Ditto.
1610         * combine-stack-adj.c: Ditto.
1611         * cse.c: Ditto.
1612         * cselib.c: Ditto.
1613         * dbxout.c: Ditto.
1614         * df-scan.c: Ditto.
1615         * dse.c: Ditto.
1616         * dwarf2asm.c: Ditto.
1617         * dwarf2out.c: Ditto.
1618         * emit-rtl.c: Ditto.
1619         * except.c: Ditto.
1620         * explow.c: Ditto.
1621         * expmed.c: Ditto.
1622         * expr.c: Ditto.
1623         * final.c: Ditto.
1624         * function.c: Ditto.
1625         * fwprop.c: Ditto.
1626         * gcse.c: Ditto.
1627         * genpreds.c: Ditto.
1628         * genrecog.c: Ditto.
1629         * ifcvt.c: Ditto.
1630         * ira-costs.c: Ditto.
1631         * ira-lives.c: Ditto.
1632         * jump.c: Ditto.
1633         * loop-iv.c: Ditto.
1634         * lower-subreg.c: Ditto.
1635         * modulo-sched.c: Ditto.
1636         * optabs.c: Ditto.
1637         * postreload.c: Ditto.
1638         * print-rtl.c: Ditto.
1639         * recog.c: Ditto.
1640         * reginfo.c: Ditto.
1641         * regmove.c: Ditto.
1642         * reload1.c: Ditto.
1643         * reload.c: Ditto.
1644         * reorg.c: Ditto.
1645         * rtlanal.c: Ditto.
1646         * rtl.c: Ditto.
1647         * sched-vis.c: Ditto.
1648         * sdbout.c: Ditto.
1649         * sel-sched-ir.c: Ditto.
1650         * simplify-rtx.c: Ditto.
1651         * targhooks.c: Ditto.
1652         * var-tracking.c: Ditto.
1653         * vmsdbgout.c: Ditto.
1654
1655 2009-06-22  Matthias Klose  <doko@ubuntu.com>
1656
1657         * Makefile.in (install-plugin): Always use DESTDIR.
1658
1659 2009-06-22  Olivier Hainque  <hainque@adacore.com>
1660         
1661         * config/pa/pa.c (output_call): Don't optimize post call jumps
1662         into return address adjustments if the call may throw.
1663
1664 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
1665
1666         * arm.c (thumb1_output_casesi): New function.
1667         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
1668         optimizing for size or PIC.
1669         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
1670         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
1671         (casesi): Handle Thumb-1 when optimizing for size or PIC.
1672         (thumb1_casesi_internal_pic): New expand rule.
1673         (thumb1_casesi_dispatch): New pattern.
1674         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
1675         thumb-1 mode.
1676         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
1677         in the text seciton when PIC or optimizing for size.
1678         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
1679         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
1680         preservation properties of code.
1681         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
1682         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
1683         (__gnu_thumb1_case_si): New function.
1684         * t-arm (LIB1ASMSRC): Define here.
1685         (LIB1ASMFUNCS): Add some common functions.
1686         * t-arm-elf (LIB1ASMSRC): Delete.
1687         (LIB1ASMFUNCS): Append to existing set.
1688         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
1689         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
1690         * t-symbian (LIB1ASMFUNCS): Likewise.
1691         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
1692         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
1693
1694 2009-06-21  Richard Guenther  <rguenther@suse.de>
1695
1696         PR tree-optimization/38729
1697         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
1698         to loops with a single exit if -fno-expensive-optimizations.
1699
1700 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
1701
1702         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
1703         (dataflow_set): Change vars type from htab_t to shared_hash.
1704         (shared_hash_pool, empty_shared_hash): New variables.
1705         (vars_clear): Removed.
1706         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
1707         shared_hash_find_slot_unshare, shared_hash_find_slot,
1708         shared_hash_find_slot_noinsert, shared_hash_find): New
1709         static inlines.
1710         (shared_hash_unshare, shared_hash_destroy): New functions.
1711         (unshare_variable): Unshare set->vars if shared, use
1712         shared_hash_htab.
1713         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
1714         (get_init_value, find_src_set_src, dump_dataflow_set,
1715         clobber_variable_part, emit_notes_for_differences): Use
1716         shared_hash_htab.
1717         (dataflow_set_init): Remove second argument, set vars to
1718         empty_shared_hash instead of creating a new htab.
1719         (dataflow_set_clear): Call shared_hash_destroy and set vars
1720         to empty_shared_hash instead of calling vars_clear.
1721         (dataflow_set_copy): Don't call vars_copy, instead just share
1722         the src htab with dst.
1723         (variable_union): Use shared_hash_*, use initially NO_INSERT
1724         lookup if set->vars is shared.  Don't keep slot cleared before
1725         calling unshare_variable.  Unshare set->vars if needed.
1726         Even ->refcount == 1 vars must be unshared if set->vars is shared
1727         and var needs to be modified.
1728         (variable_canonicalize): New function.
1729         (dataflow_set_union): If dst->vars is empty, just share src->vars
1730         with dst->vars and traverse with variable_canonicalize to canonicalize
1731         and unshare what is needed.
1732         (dataflow_set_different): If old_set and new_set use the same shared
1733         htab, they aren't different.  If number of htab elements is different,
1734         htabs are different.  Use shared_hash_*.
1735         (dataflow_set_destroy): Call shared_hash_destroy instead of
1736         htab_delete.
1737         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
1738         second argument to dataflow_set_init.
1739         (vt_initialize): Likewise.  Initialize shared_hash_pool and
1740         empty_shared_hash, move bb in/out initialization afterwards.
1741         Use variable_htab_free instead of NULL as changed_variables del hook.
1742         (variable_was_changed): Change type of second argument to pointer to
1743         dataflow_set.  When inserting var into changed_variables, bump
1744         refcount.  Unshare set->vars if set is shared htab and slot needs to
1745         be cleared.
1746         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
1747         lookup if set->vars is shared.  Unshare set->vars if needed.
1748         Even ->refcount == 1 vars must be unshared if set->vars is shared
1749         and var needs to be modified.  Adjust variable_was_changed caller.
1750         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
1751         vars must be unshared if set->vars is shared and var needs to be
1752         modified.  Adjust variable_was_changed caller.
1753         (emit_note_insn_var_location): Don't pool_free var.
1754         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
1755         instead of 1.
1756         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
1757         free_alloc_pool on shared_hash_pool.
1758
1759 2009-06-20  Anthony Green  <green@moxielogic.com>
1760
1761         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
1762         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
1763
1764 2009-06-20  Richard Guenther  <rguenther@suse.de>
1765
1766         * tree-ssa-structalias.c (find_func_aliases): For memset use
1767         a constraint from NULL if we memset to zero.
1768         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
1769         we explicitly handle that do not read from memory.
1770         (call_may_clobber_ref_p_1): Properly handle builtins that may
1771         set errno.
1772
1773 2009-06-20  Richard Guenther  <rguenther@suse.de>
1774
1775         PR tree-optimization/40495
1776         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
1777         (new_scalar_tmp_constraint_exp): New function.
1778         (process_constraint): Do not create temporary decls.
1779         (process_all_all_constraints): Likewise.
1780         (handle_const_call): Likewise.
1781         (create_function_info_for): Do not set decl.
1782
1783 2009-06-19  Ian Lance Taylor  <iant@google.com>
1784
1785         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
1786         (rs6000_attribute_table): Make static; move before use.
1787
1788 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
1789
1790         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
1791         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
1792         Propagate the TREE_READONLY flag without overwriting it.
1793         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
1794         Propagate the TREE_READONLY flag onto the result.
1795         (process_call_operands): Move around.  Use correct constant value.
1796
1797 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1798
1799         PR target/40482
1800         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
1801         * config/arm/arm.md: Likewise.
1802
1803 2009-06-19  Ian Lance Taylor  <iant@google.com>
1804
1805         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
1806         to GIMPLE_ERROR_MARK.
1807
1808         * c-typeck.c (build_conditional_expr): Add op1_original_type and
1809         op2_original_type parameters.  Warn about using different enum types.
1810         * c-parser.c (c_parser_conditional_expression): Pass original
1811         types to build_conditional_expr.
1812         * c-tree.h (build_conditional_expr): Update declaration.
1813
1814 2009-06-19  Ian Lance Taylor  <iant@google.com>
1815
1816         * config/i386/i386.c (ix86_function_specific_save): Test that
1817         fields match values, rather than testing the values are in a
1818         certain range.
1819
1820 2009-06-19  Richard Guenther  <rguenther@suse.de>
1821
1822         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
1823         ADDR_EXPR pointers.
1824         (ptr_derefs_may_alias_p): Likewise.
1825         (ptr_deref_may_alias_ref_p_1): New function.
1826         (ptr_deref_may_alias_ref_p): Likewise.
1827         (ref_maybe_used_by_call_p_1): Handle builtins that are not
1828         covered by looking at the ESCAPED solution.
1829         (call_may_clobber_ref_p_1): Likewise.
1830         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
1831         Handle NULL_TREE offset.  Do not produce redundant constraints.
1832         (process_all_all_constraints): New helper function.
1833         (do_structure_copy): Use it.
1834         (handle_lhs_call): Likewise.
1835         (find_func_aliases): Handle some builtins with pointer arguments
1836         and/or return values explicitly.
1837
1838 2009-06-19  Ian Lance Taylor  <iant@google.com>
1839
1840         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
1841
1842 2009-06-19  Ian Lance Taylor  <iant@google.com>
1843
1844         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
1845
1846 2009-06-19  Ian Lance Taylor  <iant@google.com>
1847
1848         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
1849         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
1850         version.
1851
1852         * c-decl.c (finish_decl): If -Wc++-compat, warn about
1853         uninitialized const.
1854
1855 2009-06-19  Ian Lance Taylor  <iant@google.com>
1856
1857         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
1858         all uses.
1859
1860         * c-decl.c (in_struct, struct_types): Remove.
1861         (struct c_binding): Add in_struct field.
1862         (c_binding_ptr): Define type, along with VEC.
1863         (struct c_struct_parse_info): Define.
1864         (struct_parse_info): New static variable.
1865         (bind): Initialize in_struct field.
1866         (start_struct): Remove enclosing_in_struct and
1867         enclosing_struct_types parameters.  Add
1868         enclosing_struct_parse_info parameter.  Change all callers.  Set
1869         struct_parse_info rather than in_struct and struct_types.
1870         (grokfield): If -Wc++-compat and there is a symbol binding for the
1871         field name, set the in_struct flag and push it on the
1872         struct_parse_info->fields vector.
1873         (warn_cxx_compat_finish_struct): New static function.
1874         (finish_struct): Remove enclosing_in_struct and
1875         enclosing_struct_types parameters.  Add
1876         enclosing_struct_parse_info parameter.  Change all callers.  Don't
1877         set C_TYPE_DEFINED_IN_STRUCT here.  Call
1878         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
1879         parameter.  Only push on struct_types if warn_cxx_compat.
1880         (finish_enum): Only push on struct_types if warn_cxx_compat.
1881         (declspecs_add_type): Add loc parameter.  Change all callers.
1882         Change all error calls to error_at.  Pass loc, not input_location,
1883         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
1884         defined in a struct.  If -Wc++-compat and parsing a struct, record
1885         that a typedef name was used.
1886         * c-parser.c (c_parser_declspecs): Get location to pass to
1887         declspecs_add_type.
1888         (c_parser_struct_or_union_specifier): Update calls to start_struct
1889         and finish_struct.
1890         * c-tree.h (struct c_struct_parse_info): Declare.
1891         (finish_struct, start_struct): Update declarations.
1892         (declspecs_add_type): Update declaration.
1893
1894 2009-06-19  Ian Lance Taylor  <iant@google.com>
1895
1896         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
1897         variable with an anonymous type.
1898
1899 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
1900
1901         * see.c: Remove for real.
1902
1903 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
1904
1905         * optabs.h (enum optab_index): Add new OTI_significand.
1906         (significand_optab): Define corresponding macro.
1907         * optabs.c (init_optabs): Initialize significand_optab.
1908         * genopinit.c (optabs): Implement significand_optab using
1909         significand?f2 patterns.
1910         * builtins.c (expand_builtin_mathfn): Handle
1911         BUILT_IN_SIGNIFICAND{,F,L}.
1912         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
1913         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
1914
1915         * config/i386/i386.md (significandxf2, significand<mode>2): New
1916         expanders to implement significandf, significand and significandl
1917         built-ins as inline x87 intrinsics.
1918
1919 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
1920
1921         * config/avr/avr.c (avr_override_options): Remove setting value of
1922         PARAM_INLINE_CALL_COST.
1923
1924 2009-06-18  Richard Henderson  <rth@redhat.com>
1925
1926         PR 40488
1927         * tree-pass.h (TDF_ASMNAME): New.
1928         * tree-dump.c (dump_options): Add asmname.
1929         * doc/invoke.texi: Document it.
1930
1931         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
1932         (dump_decl_name): ...here.
1933         (dump_function_name): New flags arg; mind TDF_ASMNAME.
1934         (dump_generic_node): Update dump_function_name calls.
1935         (print_call_name): New flags arg; update all dump calls.
1936         * diagnostic.h (print_call_name): Update.
1937         * gimple-pretty-print.c (dump_gimple_call): Update.
1938
1939 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
1940
1941         PR target/40470
1942         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
1943
1944 2009-06-18  Diego Novillo  <dnovillo@google.com>
1945
1946         * doc/plugins.texi: Document plugin_is_GPL_compatible.
1947         * plugin.c (str_license): Declare.
1948         (try_init_one_plugin): Assert that the symbol
1949         'plugin_is_GPL_compatible' exists.
1950
1951 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
1952
1953         * see.c: Remove.
1954         * Makefile.in (OBJS-common): Remove see.o.
1955         (see.o): Remove.
1956         * common.opt (fsee): Mark as preserved for backward compatibility.
1957         * opts.c (common_handle_option): Add OPT_fsee to the backward 
1958         compatibility section.
1959         * passes.c (init_optimization_passes, pass_see): Remove pass.
1960         * timevar.def (TV_SEE): Remove.
1961         * tree-pass.h (pass_see): Remove declaration.
1962         * doc/invoke.texi (-fsee): Remove documentation.
1963         
1964 2009-06-18  Martin Jambor  <mjambor@suse.cz>
1965
1966         * tree-sra.c: Include statistics.h
1967         (sra_stats): New variable.
1968         (sra_initialize): Clear sra_stats.
1969         (create_access_replacement): Increment sra_stats.replacements.
1970         (get_access_replacement): Do not return twice.
1971         (analyze_all_variable_accesses): Increment statistics counter by the
1972         number of scalarized aggregates.
1973         (generate_subtree_copies): Increment sra_stats.subtree_copies.
1974         (sra_modify_expr): Increment sra_stats.exprs.
1975         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
1976         (sra_modify_assign): Increment sra_stats.exprs,
1977         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
1978         (perform_intra_sra): Update statistics counters.
1979         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
1980
1981 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
1982
1983         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
1984         (arm_scalar_mode_supported_p): New function.
1985
1986 2009-06-18  Paul Brook  <paul@codesourcery.com>
1987             Sandra Loosemore  <sandra@codesourcery.com>
1988
1989         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
1990         (__extendhfsf2, __truncsfhf2): Define.
1991         * config/arm/fp16.c: New file.
1992         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
1993         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
1994
1995 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
1996
1997         * doc/extend.texi (Half-Precision): New section.
1998         * doc/invoke.texi (Option Summary): List -mfp16-format.
1999         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
2000         * config/arm/arm.opt (mfp16-format=): New.
2001         * config/arm/arm.c: Include intl.h.
2002         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
2003         (TARGET_INVALID_RETURN_TYPE): Redefine.
2004         (TARGET_PROMOTED_TYPE): Redefine.
2005         (TARGET_CONVERT_TO_TYPE): Redefine.
2006         (arm_fp16_format): Define.
2007         (all_fpus): Add entry for neon-fp16.
2008         (fp_model_for_fpu): Likewise.
2009         (struct fp16_format): Declare.
2010         (all_fp16_formats): Define.
2011         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
2012         functions.
2013         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
2014         and no ldrh.
2015         (arm_legitimate_index_p): Treat HFmode like HImode.
2016         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
2017         (coproc_secondary_reload_class): Special-case HFmode.
2018         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
2019         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
2020         (arm_init_fp16_builtins): New.
2021         (arm_init_builtins): Call it.
2022         (arm_invalid_parameter_type): New.
2023         (arm_invalid_return_type): New.
2024         (arm_promoted_type): New.
2025         (arm_convert_to_type).
2026         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
2027         format.
2028         (arm_emit_fp16_const): New function.
2029         (arm_mangle_type): Mangle __fp16 as "Dh".
2030         * config/arm/arm.h (TARGET_VFPD32): Make it know about
2031         FPUTYPE_NEON_FP16.
2032         (TARGET_NEON_FP16): New.
2033         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
2034         (enum fputype): Add FPUTYPE_NEON_FP16.
2035         (enum arm_fp16_format_type): Declare.
2036         (arm_fp16_format): Declare.
2037         (LARGEST_EXPONENT_IS_NORMAL): Define.
2038         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
2039         * config/arm/arm-modes.def (HFmode): Define.
2040         * config/arm/vfp.md: (*movhf_vfp): New.
2041         (extendhfsf2): New.
2042         (truncsfhf2): New.
2043         * config/arm/arm.md: (fpu): Add neon_fp16.
2044         (floatsihf2, floatdihf2): New.
2045         (fix_trunchfsi2, fix_trunchfdi2): New.
2046         (truncdfhf2): New.
2047         (extendhfdf2): New.
2048         (movhf): New.
2049         (*arm32_movhf): New.
2050         (*thumb1_movhf): New.
2051         (consttable_2): Add check for HFmode constants.
2052         (consttable_4): Handle HFmode constants.
2053
2054 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
2055
2056         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
2057
2058 2009-06-17  Olivier Hainque  <hainque@adacore.com>
2059
2060         * collect2.c (main): Use CONST_CAST2 to perform char ** to
2061         const char ** conversion in AIX specific section.
2062         
2063 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
2064
2065         * config/i386/i386.c (ix86_special_builtin_type): Remove
2066         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
2067         (bdesc_special_args): Updated.
2068         (ix86_init_mmx_sse_builtins): Likewise.
2069         (ix86_expand_special_args_builtin): Likewise.
2070
2071 2009-06-17  Richard Henderson  <rth@redhat.com>
2072
2073         * tree-pretty-print.c (maybe_dump_asm_name): New.
2074         (dump_decl_name): Use it.
2075         (PRINT_FUNCTION_NAME): Merge into...
2076         (dump_function_name): ... here.  Use maybe_dump_asm_name.
2077
2078 2009-06-17  Cary Coutant  <ccoutant@google.com>
2079
2080         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
2081         Change caller.
2082         * debug.c (struct gcc_debug_hooks): Change placeholder for
2083         source_line hook.
2084         (debug_nothing_int_charstar_int): Replaced by...
2085         (debug_nothing_int_charstar_int_bool): ...this.
2086         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
2087         source_line prototype.
2088         (debug_nothing_int_charstar_int): Replaced by...
2089         (debug_nothing_int_charstar_int_bool): ...this.
2090         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
2091         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
2092         Output is_stmt operand when necessary.
2093         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
2094         (notice_source_line): Add is_stmt parameter.
2095         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
2096         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
2097         Change callers.
2098         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
2099         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
2100
2101 2009-06-17  Ian Lance Taylor  <iant@google.com>
2102
2103         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
2104         Change all uses.
2105         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
2106         call uses.
2107
2108 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
2109
2110         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
2111         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
2112         tree_strip_sign_nop_conversions and
2113         tree_ssa_strip_useless_type_conversions rather than stripping
2114         the operations here.
2115         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
2116         Declare them.
2117         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
2118         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
2119         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
2120         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
2121         functions.
2122
2123 2009-06-17  Michael Eager  <eager@eagercon.com>
2124
2125         * config/rs6000/constraints.md (register_constraint "d"): New.
2126         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
2127         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
2128         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
2129         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
2130         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
2131         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
2132         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
2133         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
2134         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
2135         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
2136         __fctiwz): Same.
2137         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
2138         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
2139         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
2140         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
2141         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
2142         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
2143         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
2144         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
2145         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
2146         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
2147         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
2148         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
2149         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
2150         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
2151
2152 2009-06-16  Ian Lance Taylor  <iant@google.com>
2153
2154         * profile.c (total_num_never_executed): Don't define.
2155         (compute_branch_probabilities): Don't count or print
2156         num_never_executed.
2157         (init_branch_prob): Don't set total_num_never_executed.
2158         (end_branch_prob): Don't print total_num_never_executed.
2159
2160 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
2161
2162         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
2163
2164 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
2165
2166         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
2167         (nabstd2_fpr): Same.
2168
2169 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
2170
2171         * expr.c (expand_assignment): Change complex type check.
2172
2173 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
2174
2175         * doc/plugins.texi (Building GCC plugins): Added new section. 
2176
2177 2009-06-17  Ian Lance Taylor  <iant@google.com>
2178
2179         * c-pch.c (get_ident): Don't set size of templ array.
2180         (pch_init): Don't set size of partial_pch array.
2181
2182         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
2183         string constant to intialize an array whose size is the length of
2184         the string.
2185
2186 2009-06-17  Richard Guenther  <rguenther@suse.de>
2187
2188         PR tree-optimization/40389
2189         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
2190         to addressable types.
2191         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
2192
2193 2009-06-17  Richard Guenther  <rguenther@suse.de>
2194
2195         PR middle-end/40460
2196         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
2197         if there is no evolution of left in the loop bail out.
2198         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
2199         chrec_fold_multiply.
2200
2201 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
2202             Janis Johnson  <janis187@us.ibm.com>
2203
2204         PR target/39254
2205         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
2206         for the symbol ref of a constant that is the source of a move
2207         - nor for any other not-obvious-label-ref constants.
2208
2209 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
2210
2211         * plugin.c (position_pass): Skip newly inserted pass during list
2212         traversal to avoid repeated insertion.
2213
2214 2009-06-16  Ian Lance Taylor  <iant@google.com>
2215
2216         * vec.h (VEC_stack_alloc): Define different version if
2217         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
2218         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
2219         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
2220         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
2221
2222 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
2223
2224         * config.gcc (extra_headers): Add ia32intrin.h for x86.
2225
2226         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
2227         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
2228         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
2229         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
2230         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
2231         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
2232         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
2233         (bdesc_special_args): Add __builtin_ia32_rdtsc and
2234         __builtin_ia32_rdtscp.
2235         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
2236         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
2237         and __builtin_ia32_rorhi.
2238         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
2239         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
2240         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
2241         (ix86_expand_args_builtin): Likewise.
2242         (ix86_expand_special_args_builtin): Likewise.
2243
2244         * config/i386/i386.md (UNSPECV_RDTSCP): New.
2245         (UNSPECV_RDTSC): Likewise.
2246         (UNSPECV_RDPMC): Likewise.
2247         (*bsr): Renamed to ...
2248         (bsr): This
2249         (*bsr_rex64): Renamed to ...
2250         (bsr_rex64): This.
2251         (rdpmc): New.
2252         (*rdpmc): Likewise.
2253         (*rdpmc_rex64): Likewise.
2254         (rdtsc): Likewise.
2255         (*rdtsc): Likewise.
2256         (*rdtsc_rex64): Likewise.
2257         (rdtscp): Likewise.
2258         (*rdtscp): Likewise.
2259         (*rdtscp_rex64): Likewise.
2260
2261         * config/i386/ia32intrin.h: New.
2262
2263         * config/i386/x86intrin.h: Include <ia32intrin.h>.
2264
2265 2009-06-16  Ian Lance Taylor  <iant@google.com>
2266
2267         * ira-build.c (copy_info_to_removed_store_destinations):
2268         Initialize parent_a.
2269
2270 2009-06-16  Ian Lance Taylor  <iant@google.com>
2271
2272         * c-decl.c (grokdeclarator): Change size_varies to bool.
2273
2274 2009-06-16  Ian Lance Taylor  <iant@google.com>
2275
2276         * sel-sched.c: Make forward declarations of move_op_hooks and
2277         fur_hooks explicitly extern.
2278
2279 2009-06-16  Ian Lance Taylor  <iant@google.com>
2280
2281         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
2282         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
2283
2284 2009-06-16  Ian Lance Taylor  <iant@google.com>
2285
2286         * resource.c (mark_referenced_resources): Change
2287         include_delayed_effects parameter to bool.  Change all callers.
2288         (mark_end_of_function_resources): Likewise.
2289         * reorg.c (insn_references_resource_p): Likewise.
2290         (insn_sets_resource_p): Likewise.
2291         * resource.h (mark_referenced_resources): Update declaration.
2292         (mark_end_of_function_resources): Update declaration.
2293
2294 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
2295
2296         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
2297
2298 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
2299
2300         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
2301         GCC can bootstrap on AIX with GNU Binutils 2.20.
2302
2303 2009-06-16  Ian Lance Taylor  <iant@google.com>
2304
2305         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
2306
2307 2009-06-16  Ian Lance Taylor  <iant@google.com>
2308
2309         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
2310         inline, not extern inline.
2311         (exact_log2): Likewise.
2312         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
2313         test CLZ_HWI.
2314         (exact_log2): Likewise, but don't test CTZ_HWI.
2315
2316 2009-06-16  Ian Lance Taylor  <iant@google.com>
2317
2318         * bitmap.c (bitmap_clear): Don't declare as inline.
2319         * gimple.c (gimplify_assign): Likewise.
2320         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
2321         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
2322         (sched_scan_info): Remove duplicate definition.
2323
2324 2009-06-16  Ian Lance Taylor  <iant@google.com>
2325
2326         * c-common.c (skip_evaluation): Don't define.
2327         (c_inhibit_evaluation_warnings): Define global variable.
2328         (overflow_warning): Check c_inhibit_evaluation_warnings rather
2329         than skip_evaluation.
2330         (convert_and_check, warn_for_div_by_zero): Likewise.
2331         * c-common.h (skip_evaluation): Don't declare.
2332         (c_inhibit_evaluation_warnings): Declare.
2333         * c-parser.c (c_parser_typeof_specifier): Set
2334         c_inhibit_evaluation_warnings rather than skip_evaluation.
2335         (c_parser_conditional_expression): Likewise.
2336         (c_parser_binary_expression): Likewise.
2337         (c_parser_sizeof_expression): Likewise.
2338         (c_parser_alignof_expression): Likewise.
2339         * c-typeck.c (build_indirect_ref): Check
2340         c_inhibit_evaluation_warnings rather than skip_evaluation.
2341         (build_conditional_expr, build_binary_op): Likewise.
2342
2343 2009-06-16  Richard Guenther  <rguenther@suse.de>
2344
2345         * tree-ssa-alias.c (is_escape_site): Remove.
2346         * tree-ssa-alias.h (enum escape_type): Remove.
2347         (is_escape_site): Likewise.
2348         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
2349         via casts and asms without deferring to is_escape_site.
2350
2351 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
2352
2353         PR middle-end/40446
2354         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
2355         use gen_lowpart if op0 has complex mode.
2356
2357 2009-06-16  Richard Guenther  <rguenther@suse.de>
2358
2359         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
2360         variables add them to ESCAPED.
2361         (find_func_aliases): Do not make all indirectly stored values escaped.
2362
2363 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
2364
2365         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
2366         make_decl_one_only.
2367
2368 2009-06-16  Martin Jambor  <mjambor@suse.cz>
2369
2370         PR tree-optimization/40432
2371         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
2372         check whether we need to force gimple register operand.
2373
2374 2009-06-16  Martin Jambor  <mjambor@suse.cz>
2375
2376         PR tree-optimization/40413
2377         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
2378         build_ref_for_offset.
2379         (propagate_subacesses_accross_link): Fix a typo in a comment.
2380
2381 2009-06-16  Ira Rosen  <irar@il.ibm.com>
2382
2383         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
2384         with additional parameter.
2385         * tree-vectorizer.h (enum vect_def_type): Add new value
2386         vect_nested_cycle.
2387         (enum vect_relevant): Add comments.
2388         (vect_is_simple_reduction): Add new argument.
2389         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
2390         Detect nested cycles.
2391         (vect_is_simple_reduction): Update documentation, add an argument to
2392         distinguish inner-loop reduction from nested cycle, detect nested
2393         cycles, fix printings and indentation, don't swap operands in case
2394         of nested cycle.
2395         (get_initial_def_for_reduction): Handle subtraction.
2396         (vect_create_epilog_for_reduction): Add new argument to specify
2397         reduction variable.
2398         (vect_finalize_reduction): Handle subtraction, fix comments.
2399         (vectorizable_reduction): Handle nested cycles. In case of nested
2400         cycle keep track of the reduction variable position. Call 
2401         vect_is_simple_reduction with additional parameter. Use original 
2402         statement code in reduction epilogue for nested cycle. Call
2403         vect_create_epilog_for_reduction with additional parameter.
2404         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
2405         inner-loop vectorization.
2406         (vect_recog_widen_sum_pattern): Likewise.
2407         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
2408         and reductions.
2409         (vect_mark_stmts_to_be_vectorized): Likewise.
2410         (vect_get_vec_def_for_operand): Handle nested cycles.
2411
2412 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2413
2414         * doc/invoke.texi (Debugging Options): Fix option index entries
2415         for -fdump-statistics, -frandom-seed add entries for
2416         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
2417         (FRV Options): Fix entries for -mTLS, -mtls.
2418         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
2419         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
2420         (M68hc1x Options): Fix @itemx for -mnominmax.
2421         (MCore Options): Fix entry for -mno-lsim.
2422         (MMIX Options): Fix entry for -mabi=mmixware.
2423         (PDP-11 Options): Fix entry for -mbcopy-builtin.
2424
2425 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
2426
2427         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
2428         Mention the plugin mode of gengtype.
2429         * doc/gty.texi (Source Files Containing Type Information): Likewise.
2430         * gengtype.c: Updated copyright.
2431         (plugin_files, nb_plugin_files) Added new static variables.
2432         (measure_input_list) Care about plugin_files.
2433         (write_rtx_next): Added early return in plugin mode.
2434         (create_file): Updated copyright year in generated file. Added
2435         asserts.
2436         (oprintf): Added early return if NULL outf.
2437         (get_output_file_with_visibility): Care of plugin_files.
2438         (get_output_file_name): May return null.
2439         (write_local): Added early return.
2440         (put_mangled_filename): Ditto.
2441         (finish_root_table): Added check for base_files.
2442         (write_roots): Care about null when plugins.
2443         (main): Added plugin mode.
2444
2445 2009-06-15  Ian Lance Taylor  <iant@google.com>
2446
2447         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
2448         * gcov.c (read_count_file): Add braces around variables declared
2449         before label.
2450
2451         * c.opt (Wjump-misses-init): New warning.
2452         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
2453         -Wall and -Wc++-compat if not already set.
2454         (c_common_post_options): Clear warn_jump_misses_init if it was not
2455         set.
2456         * c-decl.c (struct c_binding): Change type field to a union with
2457         new label field.  Make it the first field in the struct.  Update
2458         references to type to use u.type instead.
2459         (struct c_spot_bindings): Define.
2460         (struct c_goto_bindings): Define.
2461         (c_goto_bindings_p): Define, along with VECs.
2462         (struct c_label_vars): Define.
2463         (struct c_scope): Add has_label_bindings field.
2464         (bind_label, set_spot_bindings): New static functions.
2465         (decl_jump_unsafe, update_spot_bindings): New static functions.
2466         (update_label_decls): New static function.
2467         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
2468         Update binding u.label field to shadowed field.
2469         (c_binding_start_stmt_expr): New function.
2470         (c_binding_end_stmt_expr): New function.
2471         (pushdecl): Don't call c_begin_vm_scope.
2472         (make_label): Add defining and p_label_vars parameters.  Change
2473         all callers.
2474         (lookup_label): Correct test for whether a label has not yet been
2475         defined.  Call bind_label rather than bind.
2476         (warn_about_goto): New static function.
2477         (lookup_label_for_goto): New function.
2478         (declare_label): Call bind_label rather than bind.
2479         (check_earlier_gotos): New static function.
2480         (define_label): Don't give errors about jumping into statement
2481         expressions or scopes of variably modified types.  Call
2482         set_spot_bindings and check_earlier_gotos.  Call bind_label
2483         instead of bind.  Don't set label_context_stack_se or
2484         label_context_stack_vm.
2485         (c_get_switch_bindings): New function.
2486         (c_release_switch_bindings): New function.
2487         (c_check_switch_jump_warnings): New function.
2488         (start_function): Don't set label_context_stack_se or
2489         label_context_stack_vm.
2490         (finish_function): Likewise.
2491         * c-typeck.c (label_context_stack_se): Don't define.
2492         (label_context_stack_vm): Don't define.
2493         (c_finish_goto_label): Call lookup_label_for_goto rather than
2494         lookup_label.  Don't give errors about jumping into a statement
2495         expression or the scope of a variably modified type.  Don't set
2496         label_context_stack_se or label_context_stack_vm.
2497         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
2498         fields.  Add bindings field.
2499         (c_start_case): Don't set deleted fields.  Set bindings field.
2500         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
2501         or blocked_vm.  Call c_check_switch_jump_warnings.
2502         (c_finish_case): Don't test blocked_stmt_expr field.  Call
2503         c_release_switch_bindings.
2504         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
2505         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
2506         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
2507         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
2508         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
2509         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
2510         (c_begin_vm_scope, c_end_vm_scope): Don't define.
2511         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
2512         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
2513         (C_DECL_UNJUMPABLE_VM): Don't define.
2514         (C_DECL_UNDEFINABLE_VM): Don't define.
2515         (struct c_label_list): Don't define.
2516         (struct c_label_context_se): Don't define.
2517         (struct c_label_context_vm): Don't define.
2518         (struct c_spot_bindings): Declare.
2519         (c_bindings_start_stmt_expr): Declare.
2520         (c_bindings_end_stmt_expr): Declare.
2521         (lookup_label_for_goto): Declare.
2522         (c_get_switch_bindings, c_release_switch_bindings): Declare.
2523         (c_check_switch_jump_warnings): Declare.
2524         (label_context_stack_se, label_context_stack_vm): Don't declare.
2525         (c_finish_goto_label): Update declaration.
2526         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
2527         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
2528         (Warning Options): Document -Wjump-misses-init.
2529
2530 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
2531
2532         * tree-object-size.c (addr_object_size): Fix a pasto in the last
2533         change.
2534
2535 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
2536
2537         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
2538
2539 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
2540
2541         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
2542
2543 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
2544
2545         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
2546
2547 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
2548
2549         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
2550         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
2551         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
2552         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
2553         * dwarf2asm.c (dw2_force_const_mem): Update call to
2554         make_decl_one_only.
2555         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
2556         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
2557         * langhooks.c (lhd_comdat_group): Remove.
2558         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
2559         * tree.h (DECL_COMDAT_GROUP): New.
2560         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
2561         (tree_decl_with_vis): Add comdat_group. Remove one_only.
2562         (make_decl_one_only): Change signature.
2563         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
2564         make_decl_one_only.
2565         (make_decl_one_only): Change signature.
2566         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
2567
2568 2009-06-15  Richard Guenther  <rguenther@suse.de>
2569
2570         PR middle-end/40439
2571         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
2572
2573 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2574
2575         * tree-ssa-math-opts.c: Remove extra divide.
2576
2577 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2578
2579         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
2580
2581 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2582
2583         * passes.c: Add bswap pass.
2584         * tree-pass.h: Add pass_optimize_bswap declaration.
2585         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
2586         Include rtl.h, expr.h and optabs.h for optab_handler check.
2587         (struct symbolic_number, pass_optimize_bswap): New definition.
2588         (do_shift_rotate, verify_symbolic_number_p): New functions.
2589         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
2590         (gate_optimize_bswap): New function.
2591         * tree.c (widest_int_cst_value): New function.
2592         * tree.h (widest_int_cst_value): Prototype added.
2593
2594 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
2595
2596         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
2597         REG_EQUAL/REG_EQUIV notes.
2598
2599 2009-06-14  Richard Guenther  <rguenther@suse.de>
2600
2601         PR middle-end/40389
2602         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
2603         has its address taken if NRV was applied and it is addressable.
2604         * tree-ssa-structalias.c (get_constraint_for_address_of): New
2605         function split out from ...
2606         (get_constraint_for_1): ... here.
2607         (handle_rhs_call): Use it to mark the return slot escaped if
2608         it is addressable and NRV was applied.
2609
2610 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
2611
2612         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
2613         Change first argument type to location_t.
2614         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
2615         Do not set input_location.
2616         Use loc instead of input_location throughout.
2617
2618 2009-06-13  Richard Guenther  <rguenther@suse.de>
2619
2620         PR tree-optimization/40421
2621         * tree-predcom.c (should_unroll_loop_p): Remove.
2622         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
2623
2624 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
2625
2626         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2627         Add location argument.
2628
2629 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
2630
2631         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
2632         build_decl.
2633         * config/s390/s390.c (s390_build_builtin_va_list): Same.
2634         (s390_gimplify_va_arg): Pass location to create_artificial_label.
2635         * config/spu/spu-protos.h: Add location to
2636         spu_resolve_overloaded_builtin.
2637         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
2638         spu_build_builtin_va_list.
2639         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
2640         argument.  Pass location to build_function_call_vec.
2641         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
2642         build_decl.
2643         (emit_fpu_switch): Same.
2644         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
2645         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
2646         to build_decl and create_artificial_label.
2647         (xtensa_gimplify_va_arg_expr): Same.
2648         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
2649         (xstormy16_gimplify_va_arg_expr): Same.
2650         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
2651         * config/arm/arm.c (arm_build_builtin_va_list): Same.
2652         * config/mips/mips.c (mips_build_builtin_va_list): Same.
2653         (mips16_build_function_stub): Same.
2654         (mips16_build_call_stub): Same.
2655
2656 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
2657
2658         PR target/40327
2659         * arm/constraints.md (Pa, Pb): New constraints.
2660         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a 
2661         split pattern to deal with them.
2662
2663 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
2664
2665         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
2666         fix index entry for -Xpreprocessor.
2667
2668 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
2669
2670         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2671         Add location argument to build_decl call.
2672         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
2673         (rs6000_init_builtins): Same.
2674         (spe_init_builtins): Same.
2675         (rs6000_gimplify_va_arg): Add location argument to
2676         create_artificial_label call.
2677
2678 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
2679
2680         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
2681         * combine-stack-adj.c (pass_stack_adjustments): Use it.
2682         * Makefile.in: Fix GGC dependency for gcse.o.
2683
2684 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
2685
2686         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
2687         * gimple-pretty-print.c (dump_gimple_stmt): Same.
2688         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
2689         created.
2690         * c-parser.c (c_parser_binary_expression): Use current column while
2691         building binary operations.
2692         * common.opt (fshow-column): Enable by default.
2693         * tree-vrp.c (check_array_ref): Use warning_at.
2694         (check_array_bounds): Use location from call back if expr has no
2695         location.
2696         * tree.h: Add location argument to maybe_fold_*.
2697         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
2698         (maybe_fold_offset_to_array_ref): Add location argument and use it.
2699         (maybe_fold_offset_to_component_ref): Same.
2700         (maybe_fold_offset_to_reference): Same.
2701         (maybe_fold_offset_to_address): Same.
2702         (maybe_fold_stmt_indirect): Same.
2703         (maybe_fold_stmt_addition): Same.
2704         (fold_stmt_r): Pass location to maybe_fold_*.
2705         (fold_gimple_assign): Same.
2706         * c-tree.h: Add location argument to finish_decl,
2707         default_function_array_conversion, store_init_value.
2708         * c-decl.c (define_label): Use error_at.
2709         (c_make_fname_decl): Pass location to finish_decl.
2710         (finish_decl): New location argument.
2711         (build_compound_literal): Pass location to store_init_value.
2712         (grokdeclarator): Pass location to finish_decl.
2713         (grokfield): Same.
2714         * c-typeck.c (array_to_pointer_conversion): New location argument.
2715         (function_to_pointer_conversion): Same.
2716         (default_function_array_conversion): Same.
2717         (parser_build_unary_op): Pass location to overflow_warning.
2718         (parser_build_binary_op): Same.  Use warning_at.
2719         (build_unary_op): Pass location to array_to_pointer_conversion.
2720         (build_c_cast): Pass location to digest_init.
2721         (build_modify_expr): New location argument.
2722         (convert_for_assignment): Same.
2723         (store_init_value): Same.
2724         (digest_init): Same.
2725         (output_init_element): Pass location to digest_init and
2726         array_to_pointer_conversion.
2727         (c_finish_return): Pass location to convert_for_assignment.
2728         * gimplify.c (gimplify_conversion): Pass location to
2729         maybe_fold_offset_to_address.
2730         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
2731         to maybe_fold_stmt_addition.
2732         * c-omp.c (c_finish_omp_atomic): Pass new location to
2733         build_modify_expr.
2734         (c_finish_omp_for): Same.
2735         * c-common.c (overflow_warning): New argument.
2736         * c-common.h: New argument to build_modify_expr, overflow_warning.
2737         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
2738         finish_decl.
2739         (c_parser_initializer): Pass location to
2740         default_function_array_conversion.
2741         (c_parser_initelt): Same.
2742         (c_parser_initval): Same.
2743         (c_parser_asm_operands): Same.
2744         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
2745         (c_parser_conditional_expression): Same.
2746         (c_parser_binary_expression): Add location info to stack.  Use it.
2747         (c_parser_unary_expression): Pass location to
2748         default_function_array_conversion, parser_build_unary_op,
2749         build_indirect_ref, c_parser_postfix_expression_after_primary.
2750         (c_parser_postfix_expression_after_primary): New location argument.
2751         Use it.
2752         (c_parser_expression_conv): Pass location to
2753         default_function_array_conversion.
2754         (c_parser_expr_list): Same.
2755         (c_parser_omp_atomic): Same.
2756         (c_parser_omp_for_loop): Same.
2757         * c-tree.h: (struct c_declarator): Add comment to id_loc.
2758         (build_array_declarator): New argument.
2759         * c-decl.c (build_array_declarator): Add location argument.
2760         (grokdeclarator): Set id_loc for cdk_array.
2761         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
2762         build_array_declarator.
2763         * tree.c (build_omp_clause): Add location argument.
2764         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
2765         (OMP_CLAUSE_LOCATION): New macro.
2766         (struct tree_omp_clause): Add location field.
2767         (build_omp_clause): Add argument.
2768         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
2769         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
2770         build_omp_clause.
2771         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
2772         (cp_parser_omp_clause_collapse): Same.
2773         (cp_parser_omp_clause_default): Same.
2774         (cp_parser_omp_clause_if): Same.
2775         (cp_parser_omp_clause_nowait): Same.
2776         (cp_parser_omp_clause_num_threads): Same.
2777         (cp_parser_omp_clause_ordered): Same.
2778         (cp_parser_omp_clause_schedule): Same.
2779         (cp_parser_omp_clause_untied): Same.
2780         (cp_parser_omp_for_loop): Same.
2781         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
2782         * c-tree.h (c_start_case): Add location argument.
2783         (c_process_expr_stmt): Same.
2784         (c_finish_goto_*): Same.
2785         * tree-parloops.c (initialize_reductions): Pass location to
2786         build_omp_clause.
2787         (create_parallel_loop): Same.
2788         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
2789         (gfc_trans_omp_reduction_list): Same.
2790         (gfc_trans_omp_clauses): Same.
2791         (gfc_trans_omp_do): Same.
2792         * c-typeck.c (c_finish_goto_label): Same.
2793         (c_finish_goto_ptr): New location argument.
2794         (c_start_case): Same.
2795         (emit_side_effect_warnings): Same.
2796         (c_process_expr_stmt): Same.
2797         (c_finish_stmt_expr): Same.
2798         (c_finish_omp_clauses): Use error_at instead of error.
2799         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
2800         build_omp_clause.
2801         * c-omp.c (c_split_parallel_clauses): New location argument.
2802         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
2803         to build_omp_clause.
2804         (convert_local_reference_stmt): Same.
2805         (convert_gimple_call): Same.
2806         * c-common.h (c_split_parallel_clauses): New argument.
2807         * c-parser.c (c_parser_statement_after_labels): Pass location to
2808         c_finish_goto_label.
2809         (c_parser_switch_statement): Pass location to c_start_case.
2810         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
2811         and c_process_expr_stmt.
2812         (c_parser_omp_variable_list): Add location argument.
2813         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
2814         (c_parser_omp_clause_default): Same.
2815         (c_parser_omp_clause_if): Same.
2816         (c_parser_omp_clause_num_threads): Same.
2817         (-c_parser_omp_clause_ordered): Same.
2818         (c_parser_omp_clause_reduction): Pass location to
2819         c_parser_omp_variable_list.
2820         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
2821         (c_parser_omp_clause_untied): Same.
2822         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
2823         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
2824
2825         * c-tree.h (check_for_loop_decls, undeclared_variable,
2826         build_component_ref, build_array_ref, build_external_ref,
2827         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
2828         build_conditional_expr, build_compound_expr, c_cast_expr,
2829         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
2830         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
2831         argument.
2832         * c-semantics.c (build_stmt): Same.
2833         (build_case_label): Same.
2834         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
2835         (undeclared_variable): New argument.
2836         (make_label): Same.
2837         (lookup_label): Pass location on down.
2838         (define_label): Same.
2839         (finish_decl): Same.
2840         (build_compound_literal): Same.
2841         (finish_struct): Same.
2842         (finish_function): Do not set location here.
2843         (check_for_loop_decls): New argument.
2844         * tree.c (save_expr): Set location.
2845         (build_empty_stmt): New argument.
2846         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
2847         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
2848         * builtins.c (gimplify_va_arg_expr): Use locations.
2849         (expand_builtin_sync_operation): Same.
2850         * c-typeck.c (build_component_ref): New argument.
2851         (build_array_ref): Same.
2852         (build_external_ref): Same.
2853         (c_expr_sizeof_expr): Same.
2854         (c_expr_sizeof_type): Same.
2855         (parser_build_unary_op): Same.
2856         (build_conditional_expr): Same.
2857         (build_compound_expr): Pass location on down.
2858         (build_compound_expr): New argument.
2859         (build_c_cast): Same.
2860         (c_cast_expr): Same.
2861         (build_asm_expr): Same.
2862         (c_finish_return): Same.
2863         (c_process_expr_stmt): Pass location on down.
2864         (c_finish_stmt_expr): New argument.
2865         (push_clenaup): Same.
2866         (c_finish_omp_parallel): Same.
2867         (c_finish_omp_task): Same.
2868         * gimplify.c (gimplify_call_expr): Pass location on down.
2869         * c-omp.c (c_finish_omp_master): New argument.
2870         (c_finish_omp_critical): Same.
2871         (c_finish_omp_ordered): Same.
2872         (c_finish_omp_barrier): Same.
2873         (-c_finish_omp_taskwait): Same.
2874         (c_finish_omp_atomic): Same.
2875         (c_finish_omp_flush): Same.
2876         * tree-inline.c (copy_tree_body_r): Pass location on down.
2877         (inline_forbidden_p): Remove use of input_location.
2878         * c-gimplify.c (c_build_bind_expr): New argument.
2879         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
2880         (c_sizeof_or_alignof_type): New argument.
2881         (c_alignof_expr): Same.
2882         (build_va_arg): Same.
2883         (c_add_case_label): Same.
2884         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
2885         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
2886         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
2887         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
2888         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
2889         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
2890         New argument.
2891         * stub-objc.c (objc_build_selector_expr): Same.
2892         (objc_build_throw_stmt): Same.
2893         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
2894         (c_parser_initelt): Same.
2895         (c_parser_compound_statement): Same.
2896         (c_parser_compound_statement_nostart): Same.
2897         (c_parser_label): Same.
2898         (c_parser_statement_after_labels): Same.
2899         (c_parser_if_body): Same.
2900         (c_parser_else_body): Same.
2901         (c_parser_if_statement): Same.
2902         (c_parser_switch_statement): Same.
2903         (c_parser_while_statement): Same.
2904         (c_parser_do_statement): Same.
2905         (c_parser_for_statement): Same.
2906         (c_parser_asm_statement): Same.
2907         (c_parser_conditional_expression): Same.
2908         (c_parser_binary_expression): Same.
2909         (c_parser_cast_expression): Same.
2910         (c_parser_unary_expression): Same.
2911         (c_parser_sizeof_expression): Same.
2912         (c_parser_alignof_expression): Same.
2913         (c_parser_postfix_expression): Same.
2914         (c_parser_expression): Same.
2915         (c_parser_objc_receiver): Same.
2916         (c_parser_omp_variable_list): Same.
2917         (c_parser_omp_structured_block): Same.
2918         (c_parser_omp_atomic): New argument.
2919         (c_parser_omp_barrier): Same.
2920         (c_parser_omp_critical): Same.
2921         (c_parser_omp_flush): Pass location on down.
2922         (c_parser_omp_for_loop): New argument.
2923         (c_parser_omp_for): Same.
2924         (c_parser_omp_master): Same.
2925         (c_parser_omp_ordered): Same.
2926         (c_parser_omp_sections_scope): Same.
2927         (c_parser_omp_sections): Same.
2928         (c_parser_omp_parallel): Same.
2929         (c_parser_omp_single): Same.
2930         (c_parser_omp_task): Same.
2931         (c_parser_omp_taskwait): Pass location on down.
2932         (c_parser_omp_construct): Same.
2933         (c_parser_omp_threadprivate): Same.
2934         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
2935         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
2936         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
2937         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
2938         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
2939         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
2940         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
2941         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
2942         config/i386/i386.c, stmt.c:
2943         Add location argument to the following function definitions and/or
2944         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
2945         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
2946         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
2947         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
2948         do_case, c_finish_bc_stmt, build_compound_literal,
2949         build_function_call.
2950         * c-decl.c (build_compound_literal): Add location argument.
2951         Make all diagnostic calls use location.
2952         (start_struct): Same.
2953         (finish_struct): Same.
2954         (start_enum): Same.
2955         (build_enumerator): Same.
2956         (start_function): Same.
2957         (grokdeclarator): Make all diagnostic calls use location.
2958         (store_parm_decls_oldstyle): Same.
2959         * c-typeck.c (build_function_call): Add location argument.
2960         Make all diagnostic calls use location.
2961         (do_case): Same.
2962         (c_finish_bc_stmt): Same.
2963         * tree-nested.c (get_trampoline_type): Add argument.
2964         Pass location to build_decl.
2965         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
2966         * rtl.h (RTL_LOCATION): New.
2967         * c-common.c (c_add_case_label): Add location argument.
2968         Make all diagnostic calls use location.
2969         * c-common.h: Add location argument to make_fname_decl, do_case,
2970         c_add_case_label, build_function_call, resolve_overloaded_builtin.
2971         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
2972         Set it appropriately for every case.  Pass enum_loc to start_enum
2973         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
2974         parser_xref_tag.
2975         (c_parser_struct_or_union_specifier): Save location.  Use it for
2976         start_struct, finish_struct, and parser_xref_tag.
2977
2978 2009-06-12  Ian Lance Taylor  <iant@google.com>
2979
2980         * fold-const.c (fold_unary): Rename local variable and to and_expr.
2981
2982         * c-opts.c (c_common_handle_option): For -Wc++-compat set
2983         cpp_opts->warn_cxx_operator_names.
2984
2985 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2986
2987         PR tree-opt/38865
2988         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
2989         is returns NULL and OP is a VCE, look through the VCE.
2990
2991 2009-06-12  Ian Lance Taylor  <iant@google.com>
2992
2993         PR bootstrap/40430
2994         * collect2.c (main): Use CONST_CAST2 in code inside #if
2995         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
2996
2997 2009-06-12  Joey Ye  <joey.ye@intel.com>
2998
2999         PR middle-end/39146
3000         * cfgexpand.c (get_decl_align_unit): Update
3001         max_used_stack_slot_alignment with align instead of
3002         stack_alignment_needed.
3003
3004         * function.c (assign_stack_local_1): Update
3005         max_used_stack_slot_alignment with alignment_in_bits instead
3006         of stack_alignment_needed.
3007         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
3008         here.
3009
3010 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
3011
3012         * dwarf2out.c (last_var_location_insn): New variable.
3013         (dwarf2out_end_epilogue): Clear last_var_location_insn.
3014         (dwarf2out_var_location): Don't record anything after last real
3015         insn.  Only change labels if there were any real instructions
3016         in between last note and this one, or if changed sections.
3017
3018 2009-06-11  Richard Henderson  <rth@redhat.com>
3019
3020         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
3021         note when storing the frame pointer in a register.
3022         (FRP): Don't redefine to nothing for epilogue.
3023         (alpha_expand_epilogue): Mark register and sp restores.
3024         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
3025
3026         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
3027         when gen_lowpart is needed.
3028
3029 2009-06-11  Richard Henderson  <rth@redhat.com>
3030
3031         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
3032
3033         * dwarf2out.c (need_data_align_sf_opcode): New.
3034         (div_data_align): Move earlier.
3035         (def_cfa_1, reg_save): Use it.
3036
3037 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
3038
3039         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
3040         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
3041         (ix86_handle_option): Handle OPT_mcrc32.
3042         (ix86_target_string): Add -mcrc32.
3043         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
3044
3045         * config/i386/i386.h (TARGET_CRC32): New.
3046
3047         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
3048         (sse4_2_crc32di): Likewise.
3049
3050         * config/i386/i386.opt (mcrc32): New.
3051
3052         * doc/invoke.texi: Document -mcrc32.
3053
3054 2009-06-11  Richard Henderson  <rth@redhat.com>
3055
3056         * common.opt (gdwarf-): Accept a version number.
3057         * doc/invoke.texi (gdwarf-): Update docs.
3058         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
3059         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
3060         version level, and record it.
3061
3062         * dwarf2.h (DW_CIE_VERSION): Remove.
3063         * dwarf2out.c (DWARF_VERSION): Remove.
3064         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
3065         (output_call_frame_info): Use CIE version 3 for dwarf3,
3066         or if the return register column is out of range for version 1.
3067         (dwarf_stack_op_name): Add all dwarf3 values.
3068         (DEBUG_PUBTYPES_SECTION): New.
3069         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
3070         encoding change for dwarf3.
3071         (output_die) [dw_val_class_die_ref]: Likewise.
3072         (output_compilation_unit_header): Emit correct version for dwarf3.
3073         (output_line_info): Likewise.
3074         (output_pubnames): Update for DWARF_VERSION removal.
3075         (output_aranges): Likewise.
3076         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
3077         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
3078         (dwarf2out_finish): Likewise.
3079
3080 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
3081
3082         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
3083         in r148403.
3084
3085 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
3086
3087         PR c/39252
3088         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
3089         * builtins.c (expand_builtin_unreachable): New function.
3090         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
3091         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
3092         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
3093         successors.
3094         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
3095         searching for missing barriers.
3096
3097 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3098
3099         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
3100         when -fprofile-generate* was passed.
3101         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
3102
3103 2009-06-11  Anthony Green  <green@moxielogic.com>
3104
3105         * config/moxie/moxie.md: Define length attribute for all instructions.
3106         (rCC): Define.
3107         (*b<cond:code>): Support limited branch ranges for new PC-relative
3108         branch instructions.
3109         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
3110
3111 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
3112
3113         * config/i386/i386.c (min_insn_size): Use get_attr_length
3114         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
3115         For __asm return 0.
3116
3117         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
3118         instead of emit_insn_before.
3119
3120 2009-06-10  Ian Lance Taylor  <iant@google.com>
3121
3122         PR bootstrap/40408
3123         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
3124         GIMPLE_SWITCH.
3125
3126 2009-06-10  Revital Eres  <eres@il.ibm.com>
3127
3128         * passes.c (init_optimization_passes): Reschedule
3129         predictive-commoning pass before complete unroll pass.
3130
3131 2009-06-10  Martin Jambor  <mjambor@suse.cz>
3132
3133         * cgraph.c (cgraph_node_can_be_local_p): New function.
3134         (cgraph_make_node_local): New function.
3135         * cgraph.h (cgraph_node_can_be_local_p): Declare.
3136         (cgraph_make_node_local): Declare.
3137
3138 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
3139
3140         * tree.h (tree_base): Add packed_flag and user_align fields.
3141         Decrease size of spare field.
3142         (TYPE_USER_ALIGN): Use user_align from tree_base.
3143         (DECL_USER_ALIGN): Likewise.
3144         (TYPE_PACKED): Use packed_flag from tree_base.
3145         (DECL_PACKED): Likewise.
3146         (tree_type): Delete packed_flag and user_align fields.  Widen
3147         precision field.  Widen mode field and shuffle fields to align
3148         mode on an 8-bit boundary.
3149         (tree_decl_common): Delete decl_flag_1 and user_align fields.
3150         Renumber decl_flag_* fields.  Fix comments.  Widen
3151         decl_common_unused field.
3152         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
3153         (DECL_EXTERNAL): Likewise.
3154         (DECL_BIT_FIELD): Likewise.
3155         (DECL_NONADDRESSABLE_P): Likewise.
3156         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
3157         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
3158
3159 2009-06-10  Ian Lance Taylor  <iant@google.com>
3160
3161         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
3162         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
3163         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
3164         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
3165         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
3166         DEF_VEC_ALLOC_FUNC_P.
3167         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
3168         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
3169         DEF_VEC_ALLOC_FUNC_O.
3170         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
3171         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
3172         DEF_VEC_ALLOC_FUNC_I.
3173         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
3174         (vec_stack_p_reserve_exact_1): Declare.
3175         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
3176         (vec_stack_free): Declare.
3177         (VEC_stack_alloc): Define.
3178         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
3179         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
3180         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
3181         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
3182         for void_p.
3183         (stack_vecs): New static variable.
3184         (vec_stack_p_reserve_exact_1): New function.
3185         (vec_stack_o_reserve_1): New static function.
3186         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
3187         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
3188         (vec_stack_free): New function.
3189         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
3190         (VEC_df_ref_stack_alloc): Define.
3191         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
3192         DEF_VEC_ALLOC_P_STACK.
3193         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
3194         (struct df_collection_rec): Change _vec fields to VEC.  Remove
3195         _use fields.
3196         (df_free_collection_rec): Adjust for new fields.
3197         (df_insn_rescan): Use new df_collection_rec fields.
3198         (df_notes_rescan, df_canonize_collection_rec): Likewise.
3199         (df_ref_create_structure, df_ref_record): Likewise.
3200         (df_get_conditional_uses, df_get_call_refs): Likewise.
3201         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
3202         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
3203         (df_record_exit_block_uses, df_bb_verify): Likewise.
3204         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
3205         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
3206         Remove count parameter.  Change return type to void.  Change all
3207         callers.
3208         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
3209         Remove count parameter.  Change return type to void.  Change all
3210         callers.
3211         (df_install_refs): Change old_vec parameter to VEC.  Remove count
3212         parameter.  Change all callers.
3213         (df_install_mws): Change old_vec parameter to VEC.  Remove count
3214         parameter.  Change all callers.
3215         (df_refs_verify): Change new_rec parameter to VEC.  Change call
3216         callers.
3217         (df_mws_verify): Likewise.
3218
3219 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
3220
3221         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
3222
3223 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
3224
3225         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
3226
3227 2009-06-10  Anthony Green  <green@moxielogic.com>
3228
3229         * config/moxie/crti.asm: New file.
3230         * config/moxie/crtn.asm: New file.
3231         * config/moxie/moxie.c: New file.
3232         * config/moxie/moxie.h: New file.
3233         * config/moxie/sfp-machine.h: New file.
3234         * config/moxie/moxie-protos.h: New file.
3235         * config/moxie/t-moxie: Created.
3236         * config/moxie/t-moxie-softfp: Created.
3237         * config/moxie/moxie.md: Created.
3238         * config/moxie/constraints.md: Created.
3239         * config.gcc: Add moxie support.
3240         * doc/md.texi (Machine Constraints): Add moxie constraints.
3241         * doc/contrib.texi (Contributors): Mention moxie port.
3242         * doc/install.texi (Specific): Mention the moxie port.
3243
3244 2009-06-09  Ian Lance Taylor  <iant@google.com>
3245
3246         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
3247         compiling with C++.
3248         * optabs.c (optab_table): Only use designated initializers if
3249         HAVE_DESIGNATED_INITIALIZERS is defined.
3250         (convert_optab_table): Likewise.
3251         (init_optabs): Always call init_insn_codes if
3252         HAVE_DESIGNATED_INITIALIZERS is not defined.
3253
3254 2009-06-09  Ian Lance Taylor  <iant@google.com>
3255
3256         * targhooks.c (default_builtin_vectorized_function): Change fn
3257         parameter to unsigned int.
3258         (default_builtin_vectorized_conversion): Change code parameter to
3259         unsigned int.
3260         (default_builtin_reciprocal): Change fn parameter to unsigned int.
3261         * targhooks.h: Update declarations.
3262         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
3263         parameter to unsigned int.
3264
3265         * c-typeck.c (comptypes_check_enum_int): New static function.
3266         (comptypes_internal): Add enum_and_int_p parameter.  Change all
3267         callers.
3268         (comp_target_types): Add location parameter.  Change all callers.
3269         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
3270         Change all callers.
3271         (function_types_compatible_p, type_lists_compatible_p): Likewise.
3272         (build_conditional_expr): Add colon_loc parameter.  Change all
3273         callers.
3274         (convert_for_assignment): Add location parameter.  Change all callers.
3275         * c-parser.c (c_parser_conditional_expression): Pass location of
3276         colon to build_conditional_expr.
3277         * c-tree.h (build_conditional_expr): Update declaration.
3278
3279 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
3280
3281         * graphite.c: Revert previous patch.
3282
3283 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
3284
3285         PR bootstrap/40103
3286         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
3287
3288 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
3289
3290         * tree-ssa-loop-prefetch.c
3291         (loop_prefetch_arrays): Fixed a portability problem in printf format
3292         string.
3293
3294 2009-06-09  Martin Jambor  <mjambor@suse.cz>
3295
3296         PR tree-optimization/40351
3297         * tree-sra.c (propagate_subacesses_accross_link): Check that a
3298         refrence to a potential artifical subaccess can be constructed.
3299
3300 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3301
3302         * config/sh/sh-protos.h (sh_optimization_options): Declare.
3303         (sh_override_options): Likewise.
3304         * config/sh/sh.c: Include params.h.
3305         (sh_optimization_options): New.
3306         (sh_override_options): Likewise.
3307         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
3308         (OVERRIDE_OPTIONS): Use sh_override_options.
3309
3310 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
3311
3312         * dwarf2out.c (emit_cfa_remember): New variable.
3313         (add_fde_cfi): If emit_cfa_remember, recurse to add
3314         DW_CFA_remember_state first.
3315         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
3316         instead just set emit_cfa_remember.
3317
3318 2009-06-08  Jan Hubicka  <jh@suse.cz>
3319
3320         PR debug/40126
3321         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
3322
3323 2009-06-08  Jan Hubicka  <jh@suse.cz>
3324
3325         PR middle-end/39834
3326         * cgraphunit.c (save_inline_function_body): Do not copy transform
3327         hooks for saved inline bodies.
3328         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
3329         for given function.
3330
3331 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
3332
3333         * jump.c (returnjump_p): Handle delayed branches.  Add missing
3334         function comment.
3335
3336 2009-06-08  Jan Hubicka  <jh@suse.cz>
3337
3338         PR middle-end/40102
3339         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
3340         original node might've been modified.
3341         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
3342
3343 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
3344
3345         * tree-object-size.c (addr_object_size): Add OSI argument.
3346         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
3347         (compute_builtin_object_size, expr_object_size): Adjust callers.
3348         (plus_stmt_object_size): Call addr_object_size instead of
3349         compute_builtin_object_size.
3350
3351 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
3352             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3353         
3354         * tree-ssa-loop-prefetch.c 
3355         (gather_memory_references): Introduced a counter for the number of 
3356         memory references.
3357         (anything_to_prefetch_p): Introduced a counter for the number of 
3358         prefetches.
3359         (is_loop_prefetching_profitable): New function with a cost model 
3360         for prefetching.
3361         (loop_prefetch_arrays): Use the new cost model to determine if 
3362         prefetching is profitable.
3363         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
3364         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
3365         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
3366         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
3367         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
3368         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
3369         
3370 2009-06-08  Michael Matz  <matz@suse.de>
3371
3372         PR debug/40012
3373         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
3374         partitions use the same.
3375         (expand_one_var): Deal with DECL_RTL sometimes begin set also
3376         for basevars of SSA_NAMEs.
3377         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
3378         to not expand them twice.
3379         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
3380         multiple places.
3381
3382 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
3383
3384         * common.opt (fcompare-debug=, fcompare-debug-second): New.
3385         (fdump-final-insns=, gtoggle): New.
3386         * doc/invoke.texi: Document them.
3387         * final.c (rest_of_clean_state): Dump final insn stream.
3388         * gcc.c (invoke_as): Hook in -fcompare-debug.
3389         (static_spec_functions): Add compare-debug-dump-opt,
3390         compare-debug-self-opt and compare-debug-auxbase-opt.
3391         (compare_debug, compare_debug_second, compare_debug_opt): New.
3392         (switches_debug_check, n_switches_debug_check): New.
3393         (debug_auxbase_opt, debug_check_temp_file): New.
3394         (process_command): Handle -fno-compare-debug, -fcompare-debug and
3395         -fcompare-debug=*.
3396         (do_self_spec): Handle arguments after switches.
3397         (do_spec_1): Add .gk extension to temp file basenames for compare.
3398         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
3399         (cc1_options): Use it instead of normal auxbase computation for
3400         the second compare-debug compilation.
3401         (compare_files): New.
3402         (main): Set up and implement compare debug mode.
3403         (compare_debug_dump_opt_spec_function): New.
3404         (compare_debug_self_opt_spec_function): New.
3405         (compare_debug_auxbase_opt_spec_function): New.
3406         * toplev.c (process_options): Handle flag_gtoggle,
3407         flag_dump_final_insns.
3408         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
3409         during -fcompare-debug-second compilation.
3410
3411 2009-06-07  Ian Lance Taylor  <iant@google.com>
3412
3413         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
3414         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
3415
3416         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
3417         with no default node.  Change warning with %H to warning_at.
3418         Don't clear warn_switch around case checking.
3419         * doc/invoke.texi (Warning Options): Clarify distinction between
3420         -Wswitch and -Wswitch-enum.
3421
3422 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3423
3424         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
3425
3426 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3427
3428         * gbl-ctors.h: Add header guard.
3429
3430 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3431
3432         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
3433         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
3434         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
3435         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
3436         prototypes for removed functions.
3437         (expressions_equal_p): Move to ...
3438         * tree-ssa-sccvn.h: ... here and ...
3439         * matrix-reorg.c: ... adjust includes.
3440
3441 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3442
3443         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
3444
3445 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3446
3447         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
3448         (finish_function): Remove erroneous whitespace.
3449
3450 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3451
3452         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
3453         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
3454
3455 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3456
3457         * errors.c (internal_error): Commentary typo fix.
3458         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
3459         * tree-ssa-pre.c: Ditto.
3460
3461 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3462
3463         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
3464         them is supposed to hold actual statements.
3465
3466 2009-06-06  Ian Lance Taylor  <iant@google.com>
3467
3468         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
3469         empty statements can now have attributes.
3470
3471 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
3472
3473         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
3474         * config/mips/mips.md: Ditto.
3475
3476 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
3477
3478         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
3479         _RELOCATABLE.
3480         (__eabi_uconvert): Likewise.
3481
3482 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
3483
3484         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
3485         CFI_* definitions with IN_GCC.
3486
3487 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
3488
3489         * xcoffout.h (xcoffout_source_line): Update prototype.
3490
3491 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3492
3493         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
3494         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
3495
3496 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
3497
3498         PR middle-end/40340
3499         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
3500         inlined_function_outer_scope_p blocks for artificial inlines
3501         even at -g0/-g1.
3502         * tree.c (tree_nonartificial_location): Rewrite using
3503         block_nonartificial_location.
3504
3505 2009-06-05  Revital Eres  <eres@il.ibm.com>
3506             Leehod Baruch  <leehod@il.ibm.com>
3507
3508         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
3509         (expand_expr_real_1): Remove comment.
3510         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3511         Vectorize misaligned access when the target supports it.
3512         (vect_supportable_dr_alignment): Check for unaligned access support.
3513         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
3514         and remove asset.
3515
3516 2009-06-05  Julian Brown  <julian@codesourcery.com>
3517
3518         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
3519         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
3520
3521 2009-06-05  Richard Guenther  <rguenther@suse.de>
3522
3523         PR bootstrap/40350
3524         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
3525         as possibly unused.
3526
3527 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
3528
3529         * config/s390/s390.c (global_not_special_regno_p): New static inline.
3530         (save_gprs): Don't tell unwinder when a global register is saved.
3531         (s390_emit_epilogue): Emit needed epilogue unwind info.
3532
3533 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
3534
3535         * dwarf2out.c (deferred_asm_name): New.
3536         (add_name_and_src_coords_attributes): Defer creation of
3537         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
3538         computed yet.
3539         (move_linkage_attr): New.
3540         (dwarf2out_finish): Revisit deferrals and emit attributes at the
3541         right place.
3542
3543 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
3544
3545         * tree-nested.c (finalize_nesting_tree_1): Declare the
3546         frame_decl in the binding tree.
3547
3548 2009-06-04  Cary Coutant  <ccoutant@google.com>
3549
3550         * basic-block.h (struct basic_block_def): Add discriminator field.
3551         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
3552         callers.
3553         * debug.c (do_nothing_debug_hooks): Add additional entry.
3554         (debug_nothing_int_charstar_int): New function.
3555         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
3556         (debug_nothing_int_charstar_int): New declaration.
3557         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
3558         discriminator value in .loc directive.
3559         * final.c (last_discriminator): New variable.
3560         (discriminator): New variable.
3561         (final_start_function): Initialize above variables, pass current
3562         discriminator to debug hook.
3563         (notice_source_line): Check for discriminator change.
3564         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
3565         * sdbout.c (sdbout_source_line): New parameter.
3566         * tree-cfg.c (struct locus_discrim_map): New structure type.
3567         (discriminator_per_locus): New hash table.
3568         (build_gimple_cfg): Allocate and free discriminator hash table.
3569         (make_edges): Call assign_discriminator.
3570         (locus_map_hash): New function.
3571         (locus_map_eq): New function.
3572         (next_discriminator_for_locus): New function.
3573         (same_line_p): New function.
3574         (assign_discriminator): New function.
3575         (make_cond_expr_edges): Call assign_discriminator.
3576         (make_gimple_switch_edges): Likewise.
3577         (first_non_label_stmt): New function.
3578         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
3579         all callers.
3580         * xcoffout.c (xcoffout_source_line): Add new parameter.
3581
3582         * configure.ac (gcc_cv_as_discriminator): New configury check for
3583         gas support for discriminator.
3584         * configure: Regenerate.
3585         * config.in: Regenerate.
3586
3587 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3588
3589         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
3590         val after checking for integers.
3591
3592 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
3593
3594         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
3595         X64_REGPARM_MAX.
3596         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
3597         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
3598         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
3599         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
3600         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
3601         X64_SSE_REGPARM_MAX.
3602         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
3603         X64_SSE_REGPARM_MAX.
3604
3605 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
3606
3607         * gcc.c (report_times_to_file): New.
3608         (execute): Implement it.
3609         (process_command): Support -time=.
3610         * doc/invoke.texi: Document it.
3611
3612 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
3613
3614         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
3615         that have value exprs.
3616
3617 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
3618
3619         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
3620         declarations for constants until...
3621         (dw2_output_indirect_constant_1): ... this point.
3622
3623 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
3624
3625         PR target/10242
3626         * arm.md (arm_addsi3): Don't try to split an add with an
3627         eliminable register until after reload has completed.
3628
3629 2009-06-03  Ian Lance Taylor  <iant@google.com>
3630
3631         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
3632         * genattrtab.c (write_length_unit_log): Likewise.
3633         * genchecksum.c (dosum): Likewise.
3634         * gengtype.c (write_rtx_next): Likewise.
3635         (finish_root_table, write_roots): Likewise.
3636         * gimple.c (gimple_ops_offset_): Likewise.
3637         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
3638         * config/arc/arc.c (arc_attribute_table): Likewise.
3639         * config/arm/arm.c (arm_attribute_table): Likewise.
3640         * config/avr/avr.c (avr_attribute_table): Likewise.
3641         * config/crx/crx.c (crx_attribute_table): Likewise.
3642         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
3643         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
3644         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
3645         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
3646         * config/sh/sh.c (sh_attribute_table): Likewise.
3647         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
3648         * config/spu/spu.c (spu_attribute_table): Likewise.
3649         * config/v850/v850.c (v850_attribute_table): Likewise.
3650
3651         * config/alpha/alpha.c (vms_attribute_table): Make static.
3652         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
3653         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
3654         * config/mips/mips.c (mips_attribute_table): Likewise.
3655
3656         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
3657         $(SYSTEM_H).
3658         (cc1-checksum.o): Likewise.
3659
3660 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
3661
3662         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
3663
3664 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
3665
3666         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
3667         insn if it is changing sp.  Use gen_add3_insn instead of
3668         conditionally gen_addsi3 and gen_adddi3.
3669         (offset_below_red_zone_p): New static inline function.
3670         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
3671         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
3672         * config/rs6000/ppc-asm.h: Include auto-host.h.
3673         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
3674         CFI_RESTORE): Define.
3675         * config/rs6000/crtresxgpr.asm: Add unwind info.
3676         * config/rs6000/crtresxfpr.asm: Likewise.
3677         * config/rs6000/crtresgpr.asm: Likewise.
3678         * config/rs6000/crtresfpr.asm: Likewise.
3679         * config/rs6000/crtsavgpr.asm: Likewise.
3680         * config/rs6000/crtsavfpr.asm: Likewise.
3681
3682         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
3683         argument of DWARF2_FRAME_REG_OUT macros.
3684
3685 2009-06-03  Julian Brown  <julian@codesourcery.com>
3686
3687         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
3688         words or less (including TImode) in core registers.
3689
3690 2009-06-03  Richard Guenther  <rguenther@suse.de>
3691
3692         PR middle-end/40328
3693         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
3694
3695 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
3696
3697         * statistics.c (statistics_counter_event): Do not record event 
3698         in pass dump if its number == -1.
3699         (curr_statistics_hash): Add assert that we never get passes 
3700         with static number == -1.
3701
3702 2009-06-03  Richard Guenther  <rguenther@suse.de>
3703             Andrey Belevantsev  <abel@ispras.ru>
3704
3705         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
3706         non-BLKmode arrays addressable.
3707
3708 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
3709
3710         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
3711         * config/m68k/m68k.h: ... here.
3712         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
3713         m68k and fido.
3714
3715 2009-06-03  Martin Jambor  <mjambor@suse.cz>
3716
3717         PR tree-optimization/40323
3718         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
3719         assignment.
3720
3721 2009-06-03  Richard Guenther  <rguenther@suse.de>
3722
3723         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
3724         consistently.
3725
3726 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
3727
3728         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
3729         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
3730         JUMP_TABLE_DATA_P where applicable.
3731         * config/sh/sh.c: Ditto.
3732         * config/sh/sh.h: Ditto.
3733         * config/sh/sh.md: Ditto.
3734         * config/sh/symbian.c: Ditto.
3735
3736 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
3737
3738         * config/i386/driver-i386.c (describe_cache): Optimize
3739         concatenation of strings.  Use snprintf instead of sprintf.
3740         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
3741         target when not compiling with GCC.
3742
3743 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
3744
3745         * config/sh/sh.c: Revert last change.
3746         (sh_expand_epilogue): Emit a blockage insn before the frame
3747         pointer adjustment unconditionally.
3748
3749 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
3750
3751         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
3752         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
3753         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
3754         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
3755         to COLLECT_GCC_OPTIONS.
3756
3757 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
3758
3759         * collect2.c (target_system_root): New variable.
3760         (main): Handle --sysroot=.
3761         (ignore_library): Strip the sysroot from the library path.
3762
3763 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
3764
3765         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
3766         (collect2.o): Depend on collect2-aix.h.
3767         (collect2-aix.o): New rule.
3768         * collect2-aix.h: New file.
3769         * collect2-aix.c: Likewise.
3770         * collect2.c: Include collect2-aix.h.  Don't undefine
3771         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
3772         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
3773         Use TARGET_AIX_VERSION instead of _AIX51.
3774         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
3775         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
3776         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
3777         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
3778         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
3779
3780 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
3781
3782         * collect2.c (ignore_library): Avoid premature post-increment
3783         and null deference.
3784
3785 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
3786
3787         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
3788         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
3789         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
3790         CROSS_DIRECTORY_STRUCTURE too.
3791         (LINK_LIBG_SPEC): Likewise.
3792         (LIB_SPEC): Add %R to sysroot paths.
3793         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
3794         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
3795         * config/rs6000/aix51.h: As for aix43.h.
3796         * config/rs6000/aix52.h: Likewise.
3797         * config/rs6000/aix53.h: Likewise.
3798         * config/rs6000/aix61.h: Likewise.
3799         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
3800         to the beginning of sysroot paths.
3801
3802 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
3803
3804         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
3805         INSN_LISTs that are out of the REG_NOTE range.
3806
3807 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
3808
3809         * loop-unroll.c (struct iv_to_split): Add pointer to next.
3810         (struct var_to_expand): Likewise.
3811         (struct opt_info): Add head and tail for linked lists of the above.
3812         (analyze_insn_to_expand_var): Initialize next.
3813         (analyze_iv_to_split_insn): Likewise.
3814         (analyze_insns_in_loop): Create linked lists.
3815         (allocate_basic_variable): Simplify for use without hash table.
3816         (insert_var_expansion_initialization): Likewise, make it type-safer.
3817         (combine_var_copies_in_loop_exit): Likewise.
3818         (apply_opt_in_copies): Walk lists rather than hash tables.
3819         (release_var_copies): Simplified and inlined by hand into...
3820         (free_opt_info): ... this function.
3821
3822 2009-06-02  Richard Guenther  <rguenther@suse.de>
3823
3824         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
3825         for field decls.
3826
3827 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
3828
3829         * cfgexpand.c (gimple_expand_cfg): Discard the source location
3830         only for builtins that are not overridden.
3831
3832 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
3833
3834         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
3835         label string.
3836
3837 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
3838
3839         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
3840
3841 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
3842
3843         * combine.c (move_deaths): Compare LUIDs within the same BB only.
3844
3845 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
3846
3847         * common.opt (fdump-unnumbered-links): New.
3848         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
3849         * print-rtl.c (flag_dump_unnumbered_links): New.
3850         (print_rtx): Test it.
3851
3852 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
3853
3854         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
3855         push/pop multiple to 8-byte alignment.
3856
3857 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
3858
3859         * config/i386/i386.c (queued_cfa_restores): New static variable.
3860         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
3861         functions.
3862         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
3863         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
3864         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
3865         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
3866         note unconditionally.
3867         (ix86_emit_restore_regs_using_mov): Likewise.
3868         (ix86_emit_restore_sse_regs_using_mov): Likewise.
3869         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
3870         it through to ix86_emit_restore_reg_using_pop.
3871         (ix86_emit_leave): Add RED_OFFSET argument.  Call
3872         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
3873         instead of adding REG_CFA_OFFSET note unconditionally.
3874         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
3875         the above functions.  Call ix86_add_queued_cfa_restore_notes when
3876         needed.
3877
3878         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
3879         force output of the label even for dwarf2out_do_cfi_asm.
3880         (add_fde_cfi): If -g2 and above and cfi might change CFA,
3881         force creation of CFI label and chain DW_CFA_set_loc jumping to it
3882         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
3883         caller.
3884         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
3885         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
3886         dwarf2out_cfi_label callers.
3887         * tree.h (dwarf2out_cfi_label): Adjust prototype.
3888         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
3889         Adjust dwarf2out_cfi_label callers.
3890         * config/vax/vax.c (vax_output_function_prologue): Likewise.
3891
3892         * config/i386/i386.h (struct machine_cfa_state,
3893         struct machine_function): Guard with ifndef USED_FOR_TARGET
3894         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
3895
3896         PR other/40024
3897         * emutls.c (__emutls_get_address): Change arr->size to mean number
3898         of allocated arr->data entries instead of # of slots + 1.
3899
3900         PR middle-end/40316
3901         * recog.c (peep2_reinit_state): New function.
3902         (peephole2_init_state): Use it at the end of a basic block and also
3903         when seeing a RTX_FRAME_RELATED_P insn.
3904
3905 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
3906
3907         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
3908         fixuns_truncrfdi2): New.
3909         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
3910         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
3911         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
3912         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
3913         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
3914         *recip_approx): Remove.
3915         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
3916         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
3917         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
3918         move to div.md.
3919         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
3920         setf_exp_rf): New.
3921
3922 2009-06-01  Ian Lance Taylor  <iant@google.com>
3923
3924         * attribs.c (register_attribute): Use CONST_CAST.
3925         * collect2.c (main): Use CONST_CAST2.
3926         (scan_prog_file): Likewise.
3927         * gcc.c (process_command, main): Likewise.
3928         * toplev.c (toplev_main): Likewise.
3929
3930         * c-typeck.c (handle_warn_cast_qual): New static function,
3931         partially broken out of build_c_cast.
3932         (build_c_cast): Call handle_warn_cast_qual.
3933         * doc/invoke.texi (Warning Options): Document new effect of
3934         -Wcast-qual.
3935
3936 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
3937
3938         * diagnostic.c (diagnostic_build_prefix): Always print columns.
3939         (diagnostic_report_current_module): Print columns.
3940         * common.opt (flag_show_column): Enable by default.
3941
3942 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
3943
3944         * alias.c (find_base_term): Check for NULL term before returning.
3945
3946 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
3947
3948         Revert due to PR40320:
3949         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
3950         * calls.c (emit_library_call_value_1): Don't force_operand for move
3951         and push insns.
3952
3953 2009-06-01  Olivier Hainque  <hainque@adacore.com>
3954             Eric Botcazou  <ebotcazou@adacore.com>
3955
3956         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
3957         to be processed as a bitfield for constructor output purposes.
3958         * output.h (initializer_constant_valid_for_bitfield_p): Declare
3959         new function.
3960         * varasm.c (oc_local_state): New type, output_constructor
3961         local state to support communication with helpers.
3962         (oc_outer_state): New type, output_constructor outer state of
3963         relevance in recursive calls.
3964         (output_constructor_array_range): New output_constructor helper,
3965         extracted code for an array range element.
3966         (output_constructor_regular_field): New output_constructor helper,
3967         extracted code for an element that is not a bitfield.