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