1 2009-07-20 Adam Nemet <anemet@caviumnetworks.com>
3 * config/mips/mips.md (move_type): Add arith.
5 (zero_extendsidi2): Rename this into ...
6 (*zero_extendsidi2): ... this. Don't match if ISA_HAS_EXT_INS.
7 (zero_extendsidi2): New expander.
8 (*zero_extendsidi2_dext): New pattern.
10 2009-07-20 Nick Clifton <nickc@redhat.com>
12 * config.gcc (mips64-*-*): Add definition of tm_defines in order
13 to set MIPS_ABI_DEFAULT.
14 * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
16 2009-07-20 Jakub Jelinek <jakub@redhat.com>
18 * tree-object-size.c (addr_object_size): Handle unions with
19 array in it as last field of structs in __bos (, 1) as __bos (, 0).
21 PR tree-optimization/40792
22 * tree.c (build_function_type_skip_args): Remove bogus assert.
24 2009-07-20 Jan Hubicka <jh@suse.cz>
25 Martin Jambor <mjambor@suse.cz>
27 * cgraph.h (combined_args_to_skip): New field.
28 * cgraph.c (cgraph_create_virtual_clone): Properly handle
29 combined_args_to_skip and args_to_skip.
30 * tree-inline.c (update_clone_info): New function.
31 (tree_function_versioning): Call update_clone_info.
32 * cgraphunit.c: (cgraph_materialize_clone): Dump materialized functions.
33 (cgraph_materialize_all_clones): More extensive dumping, working
34 with combined_args_to_skip rather than args_to_skip.
36 2009-07-20 Ira Rosen <irar@il.ibm.com>
38 * tree-vectorizer.h (vectorizable_condition): Add parameters.
39 * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
40 (get_initial_def_for_reduction): Likewise.
41 (vectorizable_reduction): Skip the check of first operand in case
42 of COND_EXPR. Add check that it is outer loop vectorization if
43 nested cycle was detected. Call vectorizable_condition() for
44 COND_EXPR. If reduction epilogue cannot be created do not fail for
45 nested cycles (if it is not double reduction). Assert that there
46 is only one type in the loop in case of COND_EXPR. Call
47 vectorizable_condition() to vectorize COND_EXPR.
48 * tree-vect-stmts.c (vectorizable_condition): Update comment.
49 Add parameters. Allow nested cycles if called from
50 vectorizable_reduction(). Use reduction vector variable if provided.
51 (vect_analyze_stmt): Call vectorizable_reduction() before
52 vectorizable_condition().
53 (vect_transform_stmt): Update call to vectorizable_condition().
55 2009-07-20 Christian Bruel <christian.bruel@st.com>
57 * config/sh/sh.opt (-mfmovd): Resurrect and document.
58 * doc/invoke.texi (-mfmovd): Likewise.
59 * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
61 2009-07-20 Jan Hubicka <jh@suse.cz>
63 * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
64 when handling SSA name.
66 2009-07-19 Jan Hubicka <jh@suse.cz>
68 PR tree-optimization/40676
69 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
70 virtual PHIs in empty BBs.
72 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
74 * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
75 re-expanded the compound use gen_lowpart instead to convert to the
78 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
80 * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
81 OUTER_CONST arguments.
82 <LSHIFTRT>: Use them to allow widening if the bits shifted in from
83 the new wider mode will be masked off.
84 (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
86 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
88 * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
89 high-order bits are zero.
91 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
93 * combine.c (simplify_shift_const_1): Split code to determine
95 (try_widen_shift_mode): ... here. Allow widening for ASHIFTRT if the
96 new bits shifted in are identical to the old sign bit.
98 2009-07-18 Richard Guenther <rguenther@suse.de>
101 * gimplify.c (gimplify_call_expr): Reject code using results from
102 functions returning void.
104 2009-07-18 Richard Sandiford <r.sandiford@uk.ibm.com>
106 * doc/md.texi: Document the new PowerPC "es" constraint.
107 Document that "m" can include automodified addresses on this target,
108 and explain how %U must be used. Extend the "Q" and "Z" documentation
109 to suggest "es" as well as "m".
110 * config/rs6000/constraints.md (es): New memory constraint.
111 (Q, Z): Update strings to match new documentation.
113 2009-07-18 Richard Sandiford <r.sandiford@uk.ibm.com>
115 * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
116 offset from virtual_stack_vars_rtx and arg_pointer_rtx.
117 * config/rs6000/predicates.md (volatile_mem_operand): Use
118 offsettable_nonstrict_memref_p.
119 * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
120 (*floatunssidf2_internal): Likewise.
121 (*fix_truncdfsi2_internal): Likewise.
122 (*fix_trunctfsi2_internal): Likewise.
124 2009-07-17 Anatoly Sokolov <aesok@post.ru>
126 * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
128 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
130 2009-07-17 Richard Guenther <rguenther@suse.de>
133 * tree-pass.h (pass_diagnose_omp_blocks): Declare.
134 (pass_warn_unused_result): Likewise.
135 (TODO_set_props): Remove.
136 * omp-low.c (diagnose_omp_structured_block_errors): Change to
138 (pass_diagnose_omp_blocks): Define.
139 * c-decl.c (pop_file_scope): Do not finalize the CU here.
140 (c_gimple_diagnostics_recursively): Remove.
141 (finish_function): Do not call it.
142 (c_write_global_declarations): Continue after errors.
143 Finalize the CU here.
144 * c-gimplify.c (c_genericize): Do not gimplify here.
145 * c-common.c (c_warn_unused_result): Move ...
146 * tree-cfg.c (do_warn_unused_result): ... here.
147 (run_warn_unused_result): New function.
148 (gate_warn_unused_result): New function.
149 (pass_warn_unused_result): New pass.
150 * c-common.h (c_warn_unused_result): Remove.
151 * flags.h (flag_warn_unused_result): Declare.
152 * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
153 * opts.c (flag_warn_unused_result): Initialize to false.
154 * toplev.c (compile_file): Add comment.
155 * omp-low.c (create_omp_child_function): Do not register
156 the function with the frontend.
157 (diagnose_omp_structured_block_errors): Prepare to be
158 called as optimization pass.
159 (gate_diagnose_omp_blocks): New function.
160 (pass_diagnose_omp_blocks): New pass.
161 * cgraph.h (cgraph_optimize): Remove.
162 (cgraph_analyze_function): Likewise.
163 * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
164 * cgraphunit.c (cgraph_lower_function): Lower nested functions
165 before their parents here.
166 (cgraph_finalize_function): Not here.
167 (cgraph_analyze_function): Gimplify functions here.
168 (cgraph_finalize_compilation_unit): Continue after errors.
169 Optimize the callgraph from here.
170 (cgraph_optimize): Make static.
171 * langhooks.c (write_global_declarations): Finalize the CU.
172 * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
173 (gimplify_function_tree): Assert we gimplify only once.
174 Set PROP_gimple_any property.
175 * tree-nested.c (gimplify_all_functions): New function.
176 (lower_nested_functions): Gimplify all nested functions.
177 * gimple.h (diagnose_omp_structured_block_errors): Remove.
178 * passes.c (init_optimization_passes): Add pass_warn_unused_result
179 and pass_diagnose_omp_blocks after gimplification. Do not
180 set TODO_set_props on all_lowering_passes.
181 (execute_one_pass): Do not handle TODO_set_props.
182 * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
183 (gimplify.o): Add tree-pass.h dependency.
184 * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
185 (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
186 (unsave_r): Likewise.
187 * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
190 2009-07-17 Sandra Loosemore <sandra@codesourcery.com>
192 * doc/service.texi (Service): Restore previously removed link,
193 which isn't broken after all.
195 2009-07-17 Richard Guenther <rguenther@suse.de>
197 PR tree-optimization/40321
198 * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
199 PHI nodes to the maximal set.
200 (make_values_for_phi): Add PHI arguments to the maximal set.
201 (execute_pre): Dump PHI_GEN and the maximal set.
203 2009-07-17 Jakub Jelinek <jakub@redhat.com>
206 * gimplify.c (gimplify_conversion): Don't change non-conversions into
209 2009-07-16 Sandra Loosemore <sandra@codesourcery.com>
211 * doc/extend.texi (Nested Functions): Replace broken link with
213 * doc/service.texi (Service): Remove broken link.
215 2009-07-16 H.J. Lu <hongjiu.lu@intel.com>
218 * builtins.c (expand_builtin_memcmp): Use loc instead of
220 (expand_builtin_strncmp): Likewise.
222 2009-07-17 Aldy Hernandez <aldyh@redhat.com>
223 Manuel López-Ibáñez <manu@gcc.gnu.org>
226 * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
227 builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
228 tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
229 c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
230 calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
231 tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
232 tree-inline.c, c-common.c, c-common.h, gimple.c,
233 tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
234 convert.c: Add location argument to fold_{unary,binary,ternary},
235 fold_build[123], build_call_expr, build_size_arg,
236 build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
237 fold_build1_initializer, fold_build2_initializer,
238 fold_build3_initializer, fold_build_call_array,
239 fold_build_call_array_initializer, fold_single_bit_test,
240 omit_one_operand, omit_two_operands, invert_truthvalue,
241 fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
242 combine_comparisons, fold_builtin_*, fold_call_expr,
243 build_range_check, maybe_fold_offset_to_address, round_up,
246 2009-07-16 Jason Merrill <jason@redhat.com>
249 * c-common.c (c_common_reswords): Add __is_standard_layout
251 * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
252 * doc/implement-cxx.texi: New.
253 * doc/gcc.texi: Include it.
255 2009-07-16 DJ Delorie <dj@redhat.com>
257 * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
258 compares that may be indirectly affected by previous instructions.
260 2009-07-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
262 * builtins.c (do_mpc_arg2): New.
263 (fold_builtin_2): Fold builtin cpow.
264 * real.h (HAVE_mpc_pow): New.
266 2009-07-16 Bingfeng Mei <bmei@broadcom.com>
268 * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
269 comparison to skip unprofitable schedule
271 2009-07-16 Simon Baldwin <simonb@google.com>
273 * gcc.c (option_map): New flag -no-canonical-prefixes.
274 * (display_help): Print help text for new flag.
275 * (process_command): Move options translation and language specifics
276 and handle new flag early. Use it to set a function pointer to a
277 prefix builder. Replace make_relative_prefix calls with calls to
278 the function pointed to. Ignore new flag in regular options handling.
279 * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
281 2009-07-15 DJ Delorie <dj@redhat.com>
283 * config/mep/mep.md (sibcall_internal): Change register to avoid
285 (sibcall_value_internal): Likewise.
287 2009-07-15 Eric Botcazou <ebotcazou@adacore.com>
289 PR rtl-optimization/40710
290 * resource.c (mark_target_live_regs): Reset DF problem to LR.
292 2009-07-15 Adam Nemet <anemet@caviumnetworks.com>
294 * config/mips/mips.md (*extenddi_truncate<mode>,
295 *extendsi_truncate<mode>): Change type attribute to move_type
296 with shift_shift. Split out code handling exts from here ...
297 (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
299 (*extendhi_truncateqi): Change type attribute to move_type with
300 shift_shift. Split out code handling exts from here ...
301 (*extendhi_truncateqi_exts): ... to this new pattern.
303 2009-07-15 Uros Bizjak <ubizjak@gmail.com>
305 * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
306 instead of "and" with inverted sign bit mask value. Use
307 "nonimmediate_operand" for operand 1 and operand 2 predicate.
308 Allocate registers only for operand 4 and operand 5.
310 2009-07-15 Jakub Jelinek <jakub@redhat.com>
313 * fold-const.c (fold_cond_expr_with_comparison): When folding
314 < and <= to MIN, make sure the MIN uses the same type as the
315 comparison's operands.
317 2009-07-15 Richard Earnshaw <rearnsha@arm.com>
319 * arm.md (ior_xor): New code iterator.
320 (split for ior/xor with shift and zero-extend): New split pattern.
321 * arm/predicates.md (subreg_lowpart_operator): New special predicate.
323 2009-07-15 Richard Guenther <rguenther@suse.de>
325 * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
328 2009-07-15 Richard Guenther <rguenther@suse.de>
331 * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
333 2009-07-15 Maxim Kuvyrkov <maxim@codesourcery.com>
335 * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
336 handle 2.6.30 kernel.
338 2009-07-15 DJ Delorie <dj@redhat.com>
340 * config/mep/mep.md (sibcall_internal): Change register to allow
341 for 24-bit addresses.
342 (sibcall_value_internal): Likewise.
344 2009-07-14 Ghassan Shobaki <ghassan.shobaki@amd.com>
346 * doc/invoke.texi: Added descriptions of the scheduling heuristics
347 that are enabled/disabled by the flags introduced by a previous patch.
349 2009-07-14 DJ Delorie <dj@redhat.com>
351 * config/mep/mep.md (sibcall_internal): Include non-toggling
353 (sibcall_value_internal): Likewise.
355 2009-07-14 Taras Glek <tglek@mozilla.com>
356 Rafael Espindola <espindola@google.com>
358 * doc/sourcebuild.texi: Document install-plugin target.
359 * configure.ac: Added install-plugin target to language makefiles.
360 * configure: Regenerate.
361 * Makefile.in: (install-plugin): Install more headers,
362 depend on lang.install-plugin.
364 2009-07-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
366 * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
369 2009-07-14 DJ Delorie <dj@redhat.com>
371 * config/mep/mep.c (mep_vliw_jmp_match): New function.
372 * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
373 * config/mep/mep.md (sibcall_internal): Change test from
374 mep_vliw_mode_match to mep_vliw_jmp_match.
375 (sibcall_value_internal): Likewise.
377 2009-07-14 Uros Bizjak <ubizjak@gmail.com>
379 * config/i386/sse.md (copysign<mode>3): New expander.
380 * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
381 * config/i386/i386.c (ix86_build_signbit_mask): Make public.
382 Use ix86_build_const_vector.
383 (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
384 IX86_BUILTIN_CPYSGNPD.
385 (builtin_description): Add __builtin_ia32_copysignps and
386 __builtin_ia32_copysignpd.
387 (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
388 and BUILT_IN_COPYSIGNF.
390 2009-07-13 Jason Merrill <jason@redhat.com>
392 * builtins.c (can_trust_pointer_alignment): New fn.
393 (get_pointer_alignment): Factor it out from here.
394 * tree.h: Declare it.
396 2009-07-14 David Edelsohn <edelsohn@gnu.org>
398 * config/rs6000/predicates.md (offsettable_mem_operand): Test
401 2009-07-14 Dodji Seketeli <dodji@redhat.com>
405 * dwarf2.out.c (gen_type_die_with_usage): Added comment.
407 2009-07-14 Richard Guenther <rguenther@suse.de>
408 Andrey Belevantsev <abel@ispras.ru>
411 * cfgexpand.c (partition_stack_vars): Do not bother to update
412 alias information when not optimizing.
414 2009-07-14 Richard Guenther <rguenther@suse.de>
415 Andrey Belevantsev <abel@ispras.ru>
417 * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
418 (pt_solution_set): Likewise.
419 * tree-ssa-alias.c (refs_may_alias_p_1): Export.
420 * tree-ssa-structalias.c (pt_solution_set): New function.
421 * final.c (rest_of_clean_state): Free SSA data structures.
422 * print-rtl.c (print_decl_name): Remove.
423 (print_mem_expr): Implement in terms of print_generic_expr.
424 * alias.c (ao_ref_from_mem): New function.
425 (rtx_refs_may_alias_p): Likewise.
426 (true_dependence): Query alias-export info.
427 (canon_true_dependence): Likewise.
428 (write_dependence_p): Likewise.
429 * tree-dfa.c (get_ref_base_and_extent): For void types leave
431 * emit-rtl.c (component_ref_for_mem_expr): Remove.
432 (mem_expr_equal_p): Use operand_equal_p.
433 (set_mem_attributes_minus_bitpos): Do not use
434 component_ref_for_mem_expr.
435 * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
436 (update_alias_info_with_stack_vars): Likewise.
437 (partition_stack_vars): Call update_alias_info_with_stack_vars.
438 * tree-ssa.c (delete_tree_ssa): Do not release SSA names
439 explicitly nor clear stmt operands.
440 Free the decl-to-pointer map.
441 * tree-optimize.c (execute_free_datastructures): Do not free
442 SSA data structures here.
443 * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
444 * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
445 (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
447 (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
449 2009-07-13 DJ Delorie <dj@redhat.com>
451 * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
452 unrolling at the right iteration count.
454 * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
457 2009-07-13 Ghassan Shobaki <ghassan.shobaki@amd.com>
459 * haifa-sched.c (rank_for_schedule): Introduced flags to
460 enable/disable individual scheduling heuristics.
461 * common.opt: Introduced flags to enable/disable individual
462 heuristics in the scheduler.
463 * doc/invoke.texi: Introduced flags to enable/disable individual
464 heuristics in the scheduler.
466 2009-07-13 Kai Tietz <kai.tietz@onevision.com>
468 * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
469 config/i386/mingw-tls.c.
470 * config/i386/mingw-tls.c: Removed.
472 2009-07-13 Ira Rosen <irar@il.ibm.com>
474 * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
475 checks access only relevant statements.
476 (vectorizable_reduction): Likewise.
478 2009-07-12 Kai Tietz <kai.tietz@onevision.com>
480 * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
481 just for 32-bit case.
483 2009-07-12 Jan Hubicka <jh@suse.cz>
485 PR tree-optimization/40585
486 * except.c (expand_resx_expr): When there already is resume
487 instruction, produce linked list.
488 (build_post_landing_pads): Assert that resume is empty.
489 (connect_post_landing_pads): Handle resume lists.
490 (dump_eh_tree): Dump resume list.
492 2009-07-12 Ira Rosen <irar@il.ibm.com>
494 * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
495 with additional argument.
496 * tree-vectorizer.h (enum vect_def_type): Add
497 vect_double_reduction_def.
498 (vect_is_simple_reduction): Add argument.
499 * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
501 (vect_analyze_scalar_cycles_1): Detect double reduction. Call
502 vect_is_simple_reduction with additional argument.
503 (vect_analyze_loop_operations): Handle exit phi nodes in case of
505 (reduction_code_for_scalar_code): Handle additional codes by
506 returning ERROR_MARK for them. Fix comment and indentation.
507 (vect_is_simple_reduction): Fix comment, add argument to specify
508 double reduction. Detect double reduction.
509 (get_initial_def_for_induction): Fix indentation.
510 (get_initial_def_for_reduction): Fix comment and indentation.
511 Handle double reduction. Create initial definitions that do not
512 require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
513 (vect_create_epilog_for_reduction): Fix comment, add argument to
514 handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
515 epilogue result extraction. Create double reduction phi node and
516 replace relevant uses.
517 (vectorizable_reduction): Call vect_is_simple_reduction with
518 additional argument. Fix indentation. Update epilogue code treatment
519 according to the changes in reduction_code_for_scalar_code. Check
520 for double reduction. Call vect_create_epilog_for_reduction with
522 * tree-vect-stmts.c (process_use): Handle double reduction, update
524 (vect_mark_stmts_to_be_vectorized): Handle double reduction.
525 (vect_get_vec_def_for_operand): Likewise.
527 2009-07-12 Danny Smith <dansmister@gmail.com>
529 * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
530 dllexport if !TREE_PUBLIC.
531 (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
533 2009-07-11 Anatoly Sokolov <aesok@post.ru>
535 * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
536 (avr_extra_arch_macro) Remove declatation.
537 * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
538 (avr_extra_arch_macro) Declare as static.
539 * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
541 2009-07-11 Jan Hubicka <jh@suse.cz>
544 * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
546 2009-07-11 Jakub Jelinek <jakub@redhat.com>
549 * dwarf2out.c (dw_fde_struct): Add in_std_section and
550 cold_in_std_section bits.
551 (dwarf2out_begin_prologue): Initialize them.
552 (dwarf2out_finish): Don't emit FDE range into .debug_ranges
553 if already covered by text_section or cold_text_section range.
555 PR rtl-optimization/40667
556 * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
557 * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
558 * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
559 * config/i386/i386.c (ix86_minimum_alignment): New function.
560 * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
561 * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
562 * emit-rtl.c (gen_reg_rtx): Likewise.
563 * function.c (assign_parms): Likewise. If nominal_type needs
564 bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
565 rather than passed_type's alignment.
568 * function.c (assign_parm_setup_stack): Adjust
569 MEM_OFFSET (data->stack_parm) if promoted_mode is different
570 from nominal_mode on big endian.
572 2009-07-11 Paolo Bonzini <bonzini@gnu.org>
574 * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
576 2009-07-10 DJ Delorie <dj@redhat.com>
578 * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
580 2009-07-10 Mark Mitchell <mark@codesourcery.com>
582 * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
584 (thumb2_cbnz): Likewise.
586 2009-07-10 David Daney <ddaney@caviumnetworks.com>
589 * config.gcc (supported_defaults): Add synci.
590 (with_synci): Add validation.
591 (all_defaults): Add synci.
592 * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
595 * config/mips/mips.opt (msynci): New option.
596 * config/mips/mips.c (mips_override_options): Warn on use of
597 -msynci for targets that do now support it.
598 * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
600 * gcc/doc/invoke.texi (-msynci): Document the new option.
601 * doc/install.texi (--with-synci): Document the new option.
603 2009-07-10 Richard Guenther <rguenther@suse.de>
605 PR tree-optimization/40496
606 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
607 the PHI result with a compatible type.
609 2009-07-10 Manuel López-Ibáñez <manu@gcc.gnu.org>
613 * c.opt (Wunused-result): New.
614 * doc/invoke.texi: Document it.
615 * c-common.c (c_warn_unused_result): Use it.
617 2009-07-09 DJ Delorie <dj@redhat.com>
619 * targhooks.c (default_target_can_inline_p): Rename from
620 default_target_option_can_inline_p.
621 * targhooks.h (default_target_can_inline_p): Likewise.
622 * target-def.h (TARGET_CAN_INLINE_P): Rename from
623 TARGET_OPTION_CAN_INLINE_P.
624 * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
625 * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
626 (mep_target_can_inline_p): Rename from
627 mep_target_option_can_inline_p.
630 * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
631 registers used to pass vectors.
633 * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
635 2009-07-09 Tom Tromey <tromey@redhat.com>
637 * unwind-dw2-fde-darwin.c: Include dwarf2.h.
638 * config/mmix/mmix.c: Include dwarf2.h.
639 * config/rs6000/darwin-fallback.c: Include dwarf2.h.
640 * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
641 * config/sh/sh.c: Include dwarf2.h.
642 * config/i386/i386.c: Include dwarf2.h.
643 * Makefile.in (DWARF2_H): Remove 'elf'.
644 * except.c: Include dwarf2.h.
645 * unwind-dw2.c: Include dwarf2.h.
646 * dwarf2out.c: Include dwarf2.h.
647 * unwind-dw2-fde-glibc.c: Include dwarf2.h.
648 * unwind-dw2-fde.c: Include dwarf2.h.
649 * dwarf2asm.c: Include dwarf2.h.
651 2009-07-09 Maxim Kuvyrkov <maxim@codesourcery.com>
653 * haifa-sched.c (insn_finishes_cycle_p): New static function.
655 * sched-int.h (struct sched_info: insn_finishes_block_p): New
657 * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
658 (region_sched_info): Update.
659 * sched-ebb.c (ebb_sched_info): Update.
660 * modulo-sched.c (sms_sched_info): Update.
661 * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
663 2009-07-09 Maxim Kuvyrkov <maxim@codesourcery.com>
665 * varasm.c (build_constant_desc): Don't share RTL in pool entries.
667 2009-07-09 Basile Starynkevitch <basile@starynkevitch.net>
669 * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
671 2009-07-09 Jakub Jelinek <jakub@redhat.com>
674 * fold-const.c (fold_cond_expr_with_comparison): Don't replace
675 arg1 with arg01 if arg1 is already INTEGER_CST.
677 2009-07-08 Adam Nemet <anemet@caviumnetworks.com>
679 * simplify-rtx.c (simplify_binary_operation_1) <AND>:
680 Transform (and (truncate)) into (truncate (and)).
682 2009-07-08 Adam Nemet <anemet@caviumnetworks.com>
684 * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
685 creating LHS paradoxical subregs. Fix surrounding returns to
686 use NULL_RTX rather than 0.
688 2009-07-08 DJ Delorie <dj@redhat.com>
690 * config/mep/mep.c: (mep_option_can_inline_p): New.
691 (TARGET_OPTION_CAN_INLINE_P): Define.
693 2009-07-08 Mark Wielaard <mjw@redhat.com>
696 * dwarf2out.c (add_data_member_location_attribute): When we have
697 only a constant offset don't emit a new location description using
698 DW_OP_plus_uconst, but just add the constant with add_AT_int, when
701 2009-07-08 Richard Henderson <rth@redhat.com>
704 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
705 (enum reg_class): Add CLOBBERED_REGS.
706 (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
707 * config/i386/i386.c (ix86_conditional_register_usage): Moved
708 from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
709 (ix86_function_ok_for_sibcall): Tidy. Disallow MS->SYSV sibcalls.
710 (ix86_expand_call): Use sibcall_insn_operand when needed. Don't
711 force 64-bit sibcalls into R11.
712 * config/i386/constraints.md (U): New constraint.
713 * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
714 (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
715 (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
717 2009-07-08 Shujing Zhao <pearly.zhao@oracle.com>
719 * basic-block.h (dump_regset, debug_regset): Remove duplicate
721 * c-objc-common.h (c_initialize_diagnostics): Ditto.
722 * ebitmap.h (dump_ebitmap): Ditto.
723 * optabs.h (optab_libfunc): Ditto.
724 * tree.h (tree_expr_nonzero_warnv_p): Ditto.
725 * tree-flow.h (vect_can_force_dr_alignment_p,
726 get_vectype_for_scalar_type): Ditto.
727 (vectorize_loops): Move prototype to ...
728 * tree-vectorizer.h: ... here. Also, adjust comment.
729 (vect_set_verbosity_level): Remove duplicate prototype.
730 * tree-ssa-loop.c: Include tree-vectorizer.h.
731 * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
733 2009-07-08 Nick Clifton <nickc@redhat.com>
735 * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
738 2009-07-08 DJ Delorie <dj@redhat.com>
740 * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
741 cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
742 cpmovtocc_P0S_P1): Mark volatile. Note which registers are
744 * config/mep/intrinsics.md: Regenerated.
745 * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
746 registers when asm() or calls are detected.
748 2009-07-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
751 * gimplify.c (gimplify_expr): Propagate no_warning flag when
753 * gimple (gimple_build_call_from_tree): Likewise.
754 * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
755 no_warning flag before warning.
757 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
759 * tree.c (set_expr_locus): Remove.
760 * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
761 * c-typeck.c (c_finish_stmt_expr): Replace EXPR_LOCUS by
763 * gimplify.c (internal_get_tmp_var): Likewise.
764 (gimplify_call_expr): Likewise.
765 (gimplify_one_sizepos): Likewise.
767 2009-07-07 Eric Botcazou <ebotcazou@adacore.com>
770 * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
771 to variables for debugging purposes.
773 2009-06-23 Mark Loeser <mark@halcy0n.com>
776 * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
778 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
780 * pretty-print.c (pp_base_format): Remove %J.
781 * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
782 gcc_cxxdiag_char_table): Likewise.
783 (init_dynamic_diag_info): Likewise.
785 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
787 * pretty-print.c (pp_base_format): Remove %H.
788 * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
789 gcc_cxxdiag_char_table): Likewise.
790 (init_dynamic_diag_info): Likewise.
791 * config/mep/mep.c (mep_select_section): Likewise.
793 2009-07-07 Duncan Sands <baldrick@free.fr>
795 * final.c (pass_clean_state): Give the pass a name.
796 * passes.c (pass_rest_of_compilation): Likewise.
797 * tree-optimize.c (pass_all_optimizations): Likewise.
799 2009-07-07 H.J. Lu <hongjiu.lu@intel.com>
801 * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
802 an extra 'decl' for error_at.
804 2009-07-07 Jakub Jelinek <jakub@redhat.com>
807 * tree-tailcall.c (adjust_return_value_with_ops,
808 create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
809 if it has complex or vector type.
811 2009-07-07 Olivier Hainque <hainque@adacore.com>
813 * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
816 2009-07-07 Basile Starynkevitch <basile@starynkevitch.net>
818 * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
820 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
822 * cgraphunit.c: Replace %J by an explicit location. Update all calls.
823 * c-decl.c: Likewise.
824 * function.c: Likewise.
825 * varasm.c: Likewise.
826 * tree-ssa.c: Likewise.
827 * c-common.c: Likewise.
828 * tree-cfg.c: Likewise.
829 * config/spu/spu.c: Likewise.
830 * config/ia64/ia64.c: Likewise.
831 * config/v850/v850.c: Likewise.
833 2009-07-06 DJ Delorie <dj@redhat.com>
835 * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
836 * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
837 unspecified accesses to control registers.
838 * config/mep/intrinsics.md: Regenerate.
839 * config/mep/intrinsics.h: Regenerate.
840 * config/mep/mep-intrin.h: Regenerate.
842 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
844 * c-lex.c: Replace %H by an explicit location. Update all calls.
845 * c-common.c: Likewise.
846 * c-decl.c: Likewise.
847 * c-typeck.c: Likewise.
848 * fold-const.c: Likewise.
849 * gimplify.c: Likewise.
851 * tree-cfg.c: Likewise.
852 * tree-ssa-loop-niter.c: Likewise.
853 * tree-vrp.c: Likewise.
854 * value-prof.c: Likewise.
856 2009-07-06 Diego Novillo <dnovillo@google.com>
858 * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
859 if it has one. Handle cases where VAR does not have an
860 annotation or cfun is NULL.
862 2009-07-06 Diego Novillo <dnovillo@google.com>
864 * tree.c: Include debug.h.
865 (initialize_tree_contains_struct): New.
866 (init_ttree): Call it.
867 (tree_node_structure_for_code): Factor out of ...
868 (tree_node_structure): ... here.
869 * treestruct.def (TS_PHI_NODE): Remove.
870 (TS_GIMPLE_STATEMENT): Remove.
872 2009-07-06 Diego Novillo <dnovillo@google.com>
874 * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
875 (debug_tree_chain): Handle cycles.
877 2009-07-06 Nick Clifton <nickc@redhat.com>
878 DJ Delorie <dj@redhat.com>
880 * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
881 __FMOVD_ENABLED__ is defined.
883 (TARGET_FMOVD): Provide a default definition.
884 (MASK_FMOVD): Likewise.
885 (TARGET_CPU_CPP_BUILTINS): Define
886 __FMOVD_ENABLED__ if TARGET_FMOVD is true.
887 * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
888 two fmov instructions depending upon whether TARGET_FMOVD is enabled.
889 (split for DF load from memory into register): Also handle
890 MEMs which consist of REG+DISP addressing.
891 (split for DF store from register to memory): Likewise.
892 (movsf_ie): Always use single fp_mode.
893 * config/sh/sh.c (sh_override_options): Do not automatically
894 enable TARGET_MOVD for the SH2A when supporting doubles - leave
895 that to the -mfmovd command line switch.
896 (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
897 (fldi_ok): Always allow.
898 * config/sh/sh.opt (mfmovd): Remove this switch.
899 * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
901 2009-07-06 J"orn Rennecke <joern.rennecke@arc.com>
902 Kaz Kojima <kkojima@gcc.gnu.org>
904 PR rtl-optimization/30807
905 * postreload.c (reload_combine): For every new use of REG_SUM,
906 record the use of BASE.
908 2009-07-06 Jan Hubicka <jh@suse.cz>
910 * params.def: Revert my accidental commit at 2009-06-30.
912 2009-07-04 Ian Lance Taylor <iant@google.com>
915 * config/i386/msformat-c.c (mingw_format_attributes): Declare as
917 (mingw_format_attribute_overrides): Likewise.
919 2009-07-04 Jakub Jelinek <jakub@redhat.com>
922 * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
923 don't check cfa.reg. Instead of cfa.indirect use
924 fde && fde->drap_reg != INVALID_REGNUM test.
926 2009-07-04 Eric Botcazou <ebotcazou@adacore.com>
928 * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
930 2009-07-03 Vladimir Makarov <vmakarov@redhat.com>
933 * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
935 2009-07-03 Richard Guenther <rguenther@suse.de>
937 PR tree-optimization/40640
938 * tree-switch-conversion.c (build_arrays): Perform arithmetic
941 2009-07-03 Jan Hubicka <jh@suse.cz>
943 * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
944 for size, reduce amount of inlining.
946 2009-07-03 Richard Guenther <rguenther@suse.de>
949 * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
950 if t +- x is known to not overflow and the conversion widens the
952 * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
954 2009-07-03 Jan Hubicka <jh@suse.cz>
956 * ipa-pure-const.c (analyze): Update loop optimizer init.
957 * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
958 try_remove_empty_loop, remove_empty_loops): Remove.
959 * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
960 * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
961 to mark regular loops as neccesary.
962 (degenerate_phi_p): New function.
963 (propagate_necessity, remove_dead_phis): Use it.
964 (forward_edge_to_pdom): Likewise.
965 (eliminate_unnecessary_stmts): Take care to remove uses of results of
966 virtual PHI nodes that became unreachable.
967 (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
968 * tree-flow.h (remove_empty_loops): Remove.
969 * passes.c (init_optimization_passes): Remove.
971 2009-07-03 Uros Bizjak <ubizjak@gmail.com>
973 * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
975 (*fix_trunc<mode>_i387_1): Ditto.
976 (*floathi<mode>2_1): Ditto.
977 (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
979 (*fist<mode>2_1): Ditto.
980 (frndintxf2_floor): Ditto.
981 (*fist<mode>2_floor_1): Ditto.
982 (frndintxf2_ceil): Ditto.
983 (*fist<mode>2_ceil_1): Ditto.
984 (frndintxf2_trunc): Ditto.
985 (frndintxf2_mask_pm): Ditto.
986 (fxam<mode>2_i387_with_temp): Ditto.
987 * config/i386/sse.md (mulv16qi3): Ditto.
988 (*sse2_mulv4si3): Ditto.
990 (sse4_2_pcmpestr): Ditto.
991 (sse4_2_pcmpistr): Ditto.
993 2009-07-03 Jan Hubicka <jh@suse.cz>
995 * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
996 (mark_stmt_necessary): Set it.
997 (mark_operand_necessary): Set it.
998 (mark_control_dependent_edges_necessary): Set it.
999 (mark_virtual_phi_result_for_renaming): New function.
1000 (get_live_post_dom): New function.
1001 (forward_edge_to_pdom): New function.
1002 (remove_dead_stmt): Fix handling of control dependences.
1003 (tree_dce_init): Init new bitmap.
1004 (tree_dce_done): Free it.
1006 2009-07-02 Richard Guenther <rguenther@suse.de>
1009 * tree-ssa-structalias.c (new_var_info): Initialize
1012 2009-07-02 Jan Hubicka <jh@suse.cz>
1014 * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
1017 2009-07-02 Paolo Bonzini <bonzini@gnu.org>
1019 * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
1020 instead of recomputing it. Adjust calls.
1021 (emit_store_flag): Adjust recursive calls.
1023 2009-07-02 Richard Guenther <rguenther@suse.de>
1025 * tree-ssa-live.c (remove_unused_locals): Do not remove
1027 * tree-ssa-structalias.c (handle_lhs_call): Delay setting
1028 of DECL_EXTERNAL for HEAP variables.
1029 (compute_points_to_sets): Set DECL_EXTERNAL for escaped
1030 HEAP variables. Do not adjust RESTRICT vars.
1031 (find_what_var_points_to): Nobody cares if something
1034 2009-07-02 Ben Elliston <bje@au.ibm.com>
1036 * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
1037 pc_low and pc_high declarations to the top of the function.
1039 2009-07-01 DJ Delorie <dj@redhat.com>
1041 * config/mep/mep.c (mep_handle_option): Leave IVC2 control
1043 (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
1044 * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
1045 unspecified accesses to control registers.
1046 * config/mep/intrinsics.md: Regenerate.
1047 * config/mep/intrinsics.h: Regenerate.
1048 * config/mep/mep-intrin.h: Regenerate.
1050 2009-07-01 Anthony Green <green@moxielogic.com>
1052 * config/moxie/moxie.c (moxie_expand_prologue): Use dec
1053 instruction when possible.
1054 (moxie_expand_prologue): Ditto. Also, save an instruction and
1055 some complexity by popping off of $r12 instead of $sp.
1056 * config/moxie/moxie.md (movsi_pop): Don't assume $sp. Take two
1059 2009-07-01 Richard Henderson <rth@redhat.com>
1062 * function.c (reposition_prologue_and_epilogue_notes): If epilogue
1063 contained no insns, reposition note before last insn.
1065 2009-07-01 Richard Henderson <rth@redhat.com>
1068 * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
1069 DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
1071 2009-07-01 Michael Meissner <meissner@linux.vnet.ibm.com>
1074 * config/rs6000/rs6000.c (print_operand): Undo change that breaks
1075 darwin9 for printing reg addresses with %y.
1077 2009-07-01 Adam Nemet <anemet@caviumnetworks.com>
1079 * combine.c (force_to_mode): Handle TRUNCATE. Factor out
1080 truncation from operands in binary operations.
1082 2009-07-01 Adam Nemet <anemet@caviumnetworks.com>
1085 2009-01-11 Adam Nemet <anemet@caviumnetworks.com>
1086 * expmed.c (store_bit_field_1): Properly truncate the paradoxical
1087 subreg of op0 to the original op0.
1089 * expmed.c (store_bit_field_1): Use a temporary as the destination
1090 instead of a paradoxical subreg when we need to truncate the result.
1092 2009-07-01 DJ Delorie <dj@redhat.com>
1094 * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
1095 names to VLIW variants.
1096 (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
1097 * config/mep/intrinsics.md: Regenerate.
1098 * config/mep/intrinsics.h: Regenerate.
1099 * config/mep/mep-intrin.h: Regenerate.
1101 2009-07-01 Jakub Jelinek <jakub@redhat.com>
1104 * jump.c (returnjump_p): Revert last patch.
1105 * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
1107 2009-07-01 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1110 * pa.md (casesi32p): Use jump table label to determine the offset
1112 (casesi64p): Likewise.
1114 * pa.c (forward_branch_p): Return bool type. Use instruction
1115 addresses when available. Assert that INSN has a jump label.
1116 (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
1119 2009-07-01 Richard Guenther <rguenther@suse.de>
1121 PR tree-optimization/19831
1122 * tree-ssa-dce.c (propagate_necessity): Calls to functions
1123 that only act as barriers do not make any previous stores necessary.
1124 * tree-ssa-structalias.c (handle_lhs_call): Delay making
1125 HEAP variables global, do not add a constraint from nonlocal.
1126 (find_func_aliases): Handle escapes through return statements.
1127 (compute_points_to_sets): Make escaped HEAP variables global.
1129 2009-07-01 Paolo Bonzini <bonzini@gnu.org>
1132 * expmed.c (emit_store_flag): Perform a conversion if necessary,
1133 after reducing a DImode cstore to SImode.
1135 2009-07-01 Paolo Bonzini <bonzini@gnu.org>
1137 * expr.c (expand_expr_real_1): Reinstate fallthrough to
1138 TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
1140 2009-07-01 Maciej W. Rozycki <macro@linux-mips.org>
1142 * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro. Set to 1.
1143 * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro. Redefine the
1145 * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
1146 and umod_optab if TARGET_BSD_DIVMOD.
1147 * config/vax/lib1funcs.asm: New file.
1148 * config/vax/t-linux: New file.
1149 * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
1151 2009-06-30 Jakub Jelinek <jakub@redhat.com>
1154 * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
1155 to type arguments that have void type.
1158 * dwarf2out.c (gen_formal_parameter_die): Call
1159 equate_decl_number_to_die if node is different from origin.
1161 2009-06-30 Anthony Green <green@moxielogic.com>
1163 Clean up moxie port for --enable-build-with-cxx.
1164 * config/moxie/moxie.c (moxie_function_value): First two
1165 parameters are const_tree, not tree.
1166 * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
1167 (REG_CLASS_NAMES): Ditto.
1168 (REGNO_REG_CLASS): Ditto.
1169 * config/moxie/moxie-protos.h (moxie_override_options): Declare.
1170 (moxie_function_value): Fix constyness of arguments.
1172 2009-06-30 Eric Botcazou <ebotcazou@adacore.com>
1174 * cgraphunit.c (cgraph_finalize_compilation_unit): Call
1175 finalize_size_functions before further processing.
1176 * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
1177 (variable_size): Call self_referential_size on size expressions
1178 that contain a PLACEHOLDER_EXPR.
1179 (size_functions): New static variable.
1180 (copy_self_referential_tree_r): New static function.
1181 (self_referential_size): Likewise.
1182 (finalize_size_functions): New global function.
1183 * tree.c: Include tree-inline.h.
1184 (push_without_duplicates): New static function.
1185 (find_placeholder_in_expr): New global function.
1186 (substitute_in_expr) <tcc_declaration>: Return the replacement object
1188 <tcc_expression>: Likewise.
1189 <tcc_vl_exp>: If the replacement object is a constant, try to inline
1190 the call in the expression.
1191 * tree.h (finalize_size_functions): Declare.
1192 (find_placeholder_in_expr): Likewise.
1193 (FIND_PLACEHOLDER_IN_EXPR): New macro.
1194 (substitute_placeholder_in_expr): Update comment.
1195 * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
1197 (copy_tree_body_r): Likewise.
1198 (copy_tree_body): New static function.
1199 (maybe_inline_call_in_expr): New global function.
1200 * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
1201 (maybe_inline_call_in_expr): Declare.
1202 * Makefile.in (tree.o): Depend on TREE_INLINE_H.
1203 (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
1206 2009-06-30 Richard Guenther <rguenther@suse.de>
1208 * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
1210 (propagate_necessity): Do not mark reaching defs of stores
1213 2009-06-30 Jan Hubicka <jh@suse.cz>
1215 * cfgloopanal.c (check_irred): Move into ...
1216 (mark_irreducible_loops): ... here; return true if ireducible
1218 * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
1219 (analyze_function): Try to prove loop finiteness.
1220 * cfgloop.h (mark_irreducible_loops): Update prototype.
1221 * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
1223 2009-06-30 Basile Starynkevitch <basile@starynkevitch.net>
1225 * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
1227 2009-06-30 Ira Rosen <irar@il.ibm.com>
1229 PR tree-optimization/40542
1230 * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
1233 2009-06-30 Martin Jambor <mjambor@suse.cz>
1235 PR tree-optimization/40582
1236 * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
1237 than useless_type_conversion_p.
1238 (generate_subtree_copies): Increment sra_stats.subtree_copies at a
1241 2009-06-30 Martin Jambor <mjambor@suse.cz>
1244 * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
1246 2009-06-30 Richard Guenther <rguenther@suse.de>
1248 * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
1249 use ao_ref references.
1250 (walk_aliased_vdefs): Likewise.
1251 * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
1252 * tree-ssa-dce.c (struct ref_data): Remove.
1253 (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
1254 (mark_aliased_reaching_defs_necessary): Adjust.
1255 (mark_all_reaching_defs_necessary_1): Likewise.
1257 2009-06-30 Paolo Bonzini <bonzini@gnu.org>
1260 * expmed.c (emit_cstore): New name of emit_store_flag_1.
1261 (emit_store_flag_1): Extract from emit_store_flag, adjust
1262 calls to (what now is) emit_cstore.
1263 (emit_store_flag): Call emit_store_flag_1 and also use it
1264 for what used to be recursive calls.
1266 2009-06-30 Wei Guozhi <carrot@google.com>
1269 * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
1270 if the target bb post dominates from bb.
1271 * config/i386/i386.c (memory_address_length): Check existence of base
1272 register before using it.
1274 2009-06-30 Nick Clifton <nickc@redhat.com>
1275 DJ Delorie <dj@redhat.com>
1277 * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
1278 __FMOVD_ENABLED__ is defined.
1280 (TARGET_FMOVD): Provide a default definition.
1281 (MASK_FMOVD): Likewise.
1282 (TARGET_CPU_CPP_BUILTINS): Define
1283 __FMOVD_ENABLED__ if TARGET_FMOVD is true.
1284 * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
1285 two fmov instructions depending upon whether TARGET_FMOVD is
1287 (split for DF load from memory into register): Also handle
1288 MEMs which consist of REG+DISP addressing.
1289 (split for DF store from register to memory): Likewise.
1290 * config/sh/sh.opt (mfmovd): Remove this switch.
1291 * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
1292 * config/sh/sh.c (sh_override_options): Do not automatically
1293 enable TARGET_MOVD for the SH2A when supporting doubles - leave
1294 that to the -mfmovd command line switch.
1296 * config/sh/sh.c (broken_move): Do not restrict fldi test to only
1298 (fldi_ok): Always allow.
1299 * config/sh/sh.md (movsf_ie): Always use single fp_mode.
1301 2009-06-29 DJ Delorie <dj@redhat.com>
1303 * doc/install.texi (mep-x-elf): Correct chip's full name.
1305 2009-06-29 H.J. Lu <hongjiu.lu@intel.com>
1307 * doc/extend.texi: Fix typo.
1309 2009-06-29 Tom Tromey <tromey@redhat.com>
1312 * Makefile.in (DWARF2_H): New variable.
1314 (dwarf2out.o): Likewise.
1315 (dwarf2asm.o): Likewise.
1316 * config/i386/t-i386: Use DWARF2_H.
1317 * except.c: Include elf/dwarf2.h.
1318 * unwind-dw2.c: Include elf/dwarf2.h.
1319 * dwarf2out.c: Include elf/dwarf2.h.
1320 (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
1321 <dtprel>: New field.
1322 (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
1323 (size_of_loc_descr): Likewise.
1324 (output_loc_operands_raw): Likewise.
1325 (output_loc_operands): Handle new dtprel field.
1326 (loc_checksum): Update.
1327 (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
1328 * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
1329 * unwind-dw2-fde.c: Include elf/dwarf2.h.
1330 * dwarf2asm.c: Include elf/dwarf2.h.
1331 * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
1332 * config/mmix/mmix.c: Include elf/dwarf2.h.
1333 * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
1334 * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
1335 * config/sh/sh.c: Include elf/dwarf2.h.
1336 * config/i386/i386.c: Include elf/dwarf2.h.
1338 2009-06-29 DJ Delorie <dj@redhat.com>
1340 * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
1342 * doc/extend.texi: Add MeP attributes and pragmas.
1343 * doc/invoke.text: Add MeP Options.
1344 * doc/contrib.texi: Add MeP contribution.
1345 * doc/md.texi: Add MeP constraints.
1346 * doc/install.texi: Add MeP target.
1348 2009-06-30 Anatoly Sokolov <aesok@post.ru>
1350 * target.h (struct gcc_target): Add frame_pointer_required field.
1351 * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
1352 (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
1353 * ira.c (setup_eliminable_regset): Use frame_pointer_required target
1355 * reload1.c (update_eliminables): (Ditto.).
1356 * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
1357 * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
1358 (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
1360 * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
1362 * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
1363 * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1364 (arm_frame_pointer_required): New function.
1366 * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
1367 * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1368 (avr_frame_pointer_required_p): Declare as static.
1369 * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
1371 * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
1372 * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1373 (bfin_frame_pointer_required): Make as static, change return type
1375 * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
1377 * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
1378 * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1379 (cris_frame_pointer_required): New function.
1381 * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
1383 * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
1384 * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1385 (fr30_frame_pointer_required): New function.
1387 * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
1388 * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1389 (frv_frame_pointer_required): Make as static, change return type
1391 * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
1393 * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
1394 * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1395 (ix86_frame_pointer_required): Make as static, change return type to
1397 * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
1399 * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
1400 * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1402 * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
1404 * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
1406 * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
1408 * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
1409 * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1410 (mips_frame_pointer_required): Make as static.
1411 * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
1413 * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
1414 * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1415 (mmix_frame_pointer_required): Mew function.
1417 * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
1418 * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1420 * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
1422 * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
1424 * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
1426 * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
1427 (CAN_ELIMINATE): Redefine.
1428 * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1429 (sparc_frame_pointer_required): New function.
1430 (sparc_can_eliminate): New function.
1431 * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
1433 * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
1434 * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1436 * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
1437 * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1438 (xtensa_frame_pointer_required): Make as static, change return type
1440 * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
1443 2009-06-29 Olatunji Ruwase <tjruwase@google.com>
1445 * doc/plugins.texi: Document PLUGIN_START_UNIT.
1446 * toplev.c (compile_file): Call PLUGIN_START_UNIT.
1447 * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
1448 * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
1449 (register_callback): Handle PLUGIN_START_UNIT.
1450 (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
1452 2009-06-29 Eric Botcazou <ebotcazou@adacore.com>
1454 * tree.c (process_call_operands): Propagate TREE_READONLY from the
1456 (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
1457 (build3_stat): Propagate TREE_READONLY for COND_EXPR.
1459 2009-06-29 Daniel Jacobowitz <dan@codesourcery.com>
1461 * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
1464 2009-06-29 Uros Bizjak <ubizjak@gmail.com>
1466 * doc/extend.texi (Additional Floating Types): __float128 is also
1467 supported on i386 targets.
1469 2009-06-29 Richard Guenther <rguenther@suse.de>
1472 * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
1474 (pt_solutions_same_restrict_base): Declare.
1475 * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
1477 (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
1478 (make_constraint_from, make_copy_constraint): Move earlier.
1479 (make_constraint_from_heapvar): New function.
1480 (make_constraint_from_restrict): Likewise.
1481 (handle_lhs_call): Use it.
1482 (find_func_aliases): Use it to track conversions to restrict
1484 (struct fieldoff): Add only_restrict_pointers flag.
1485 (push_fields_onto_fieldstack): Initialize it.
1486 (create_variable_info_for): Track global restrict qualified pointers.
1487 (intra_create_variable_infos): Use make_constraint_from_heapvar.
1488 Track restrict qualified pointer arguments.
1489 (set_uids_in_ptset): Use varinfo is_global_var flag.
1490 (find_what_var_points_to): Set the vars_contains_restrict flag.
1491 Always create the points-to solution for sets including restrict tags.
1492 (pt_solutions_same_restrict_base): New function.
1493 * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
1494 qualified pointers use pt_solutions_same_restrict_base as
1495 additional source for disambiguation.
1497 2009-06-29 Richard Guenther <rguenther@suse.de>
1500 * alias.c (find_base_decl): Remove.
1501 (get_deref_alias_set_1): Remove restrict handling.
1502 * c-common.c (c_apply_type_quals_to_decl): Do not set
1503 DECL_POINTER_ALIAS_SET.
1504 * gimplify.c (find_single_pointer_decl_1): Remove.
1505 (find_single_pointer_decl): Likewise.
1506 (internal_get_tmp_var): Remove restrict handling.
1507 (gimple_regimplify_operands): Likewise.
1508 * omp-low.c (expand_omp_atomic_pipeline): Do not set
1509 DECL_POINTER_ALIAS_SET. Use ref-all pointers.
1510 * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
1511 * tree.c (restrict_base_for_decl): Remove.
1512 (init_ttree): Do not allocate it.
1513 (make_node_stat): Do not set DECL_POINTER_ALIAS_SET. Set
1514 LABEL_DECL_UID for label decls.
1515 (copy_node_stat): Do not copy restrict information.
1516 (decl_restrict_base_lookup): Remove.
1517 (decl_restrict_base_insert): Likewise.
1518 (print_restrict_base_statistics): Likewise.
1519 (dump_tree_statistics): Do not call print_restrict_base_statistics.
1520 * tree.h (DECL_POINTER_ALIAS_SET): Remove.
1521 (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
1522 (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
1523 (LABEL_DECL_UID): Adjust.
1524 (DECL_BASED_ON_RESTRICT_P): Remove.
1525 (DECL_GET_RESTRICT_BASE): Likewise.
1526 (SET_DECL_RESTRICT_BASE): Likewise.
1527 (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
1529 * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
1530 instead of DECL_POINTER_ALIAS_SET.
1531 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
1532 * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
1533 * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
1535 2009-06-29 Richard Guenther <rguenther@suse.de>
1537 PR tree-optimization/40579
1538 * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
1539 the IL to simplify has constants that overflowed.
1541 2009-06-28 Uros Bizjak <ubizjak@gmail.com>
1543 PR tree-optimization/40550
1544 * tree-vect-generic.c (expand_vector_operations_1): Compute in
1545 vector_compute_type only when the size of vector_compute_type is
1546 less than the size of type.
1548 2009-06-28 Eric Botcazou <ebotcazou@adacore.com>
1550 * fold-const.c (contains_label_1): Fix comments.
1551 (contains_label_p): Do not walk trees multiple time.
1553 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
1555 * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
1556 * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
1557 cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
1558 ix86_fp_comparison_operator.
1559 (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
1560 *fp_jcc_2_sse, *fp_jcc_2_387): Delete
1561 (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
1562 *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
1563 !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
1564 to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
1565 (related splits): Change predicate to ix86_fp_comparison_operator.
1566 * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
1567 instead of ix86_fp_comparison_codes.
1568 (ix86_trivial_fp_comparison_operator,
1569 ix86_fp_comparison_operator): New.
1570 * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
1571 (ix86_expand_compare): Eliminate last two parameters.
1572 (ix86_fp_jump_nontrivial_p): Kill.
1573 * config/i386/i386.c (put_condition_code): Eliminate call to
1574 ix86_fp_comparison_codes and subsequent assertion.
1575 (ix86_fp_comparison_codes): Eliminate.
1576 (ix86_fp_swap_condition): New.
1577 (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
1578 ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
1579 into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
1580 (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
1581 and ix86_fp_swap_condition.
1582 (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
1583 Use ix86_fp_comparison_strategy.
1584 (ix86_expand_compare): Likewise. Eliminate last two arguments.
1585 (ix86_fp_jump_nontrivial_p): Eliminate.
1586 (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple. Adjust
1587 call to ix86_expand_compare.
1588 (ix86_split_fp_branch, ix86_expand_setcc,
1589 ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
1590 ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
1592 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
1594 * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
1595 related to jump_clobbers.
1596 * config/arm/arm.md (conds): Remove jump_clob case.
1597 (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
1598 splits): Change comparison_operator to arm_comparison_operator.
1599 (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
1602 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
1604 * dojump.c (do_compare_rtx_and_jump): Try swapping the
1605 condition for floating point modes.
1606 * expmed.c (emit_store_flag_1): Move here a bigger part
1608 (emit_store_flag): Try swapping the condition for floating point
1610 * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
1612 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
1614 * expr.c (expand_expr_real_1): Just use do_store_flag.
1615 (do_store_flag): Drop support for TRUTH_NOT_EXPR. Use
1616 emit_store_flag_force.
1617 * expmed.c (emit_store_flag_force): Copy here trick
1618 previously in expand_expr_real_1. Try reversing the comparison.
1619 (emit_store_flag_1): Work if target is NULL.
1620 (emit_store_flag): Work if target is NULL, using the result mode
1621 from the comparison. Use split_comparison, restructure final part
1622 to simplify conditionals.
1624 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
1626 * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
1627 * dojump.c (do_jump): Change handling of floating-point
1628 ops to use just do_compare_and_jump.
1629 (split_comparison): New.
1630 (do_compare_rtx_and_jump): Add here logic coming previously
1631 in do_jump, using split_comparison.
1633 2009-06-27 H.J. Lu <hongjiu.lu@intel.com>
1636 * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
1638 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
1640 * tree-ssa-alias.c: Fix unintentional commit.
1642 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
1644 * passes.c (execute_one_pass): Fix unintentional commit.
1646 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
1648 * df-problems.c (df_set_seen, df_unset_seen): Delete.
1649 (df_rd_local_compute, df_md_local_compute): Inline them.
1651 (df_md_scratch): New.
1652 (df_md_alloc, df_md_free): Allocate/free it.
1653 (df_md_local_compute): Only include live registers in init.
1654 (df_md_transfer_function): Prune the in-set computed by
1655 the confluence function, and the gen-set too.
1657 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
1659 PR rtl-optimization/26854
1660 * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
1661 * df-problems.c (df_rd_add_problem): Fix comment.
1662 (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
1663 df_md_simulate_artificial_defs_at_top,
1664 df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
1665 df_md_bb_local_compute, df_md_local_compute, df_md_reset,
1666 df_md_transfer_function, df_md_init, df_md_confluence_0,
1667 df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
1668 problem_MD, df_md_add_problem): New.
1669 * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
1670 df_md_get_bb_info): New.
1671 (DF_LAST_PROBLEM_PLUS1): Adjust.
1673 * Makefile.in (fwprop.o): Include domwalk.h.
1674 * fwprop.c: Include domwalk.h.
1675 (reg_defs, reg_defs_stack): New.
1676 (bitmap_only_bit_between): Remove.
1677 (process_defs): New.
1678 (process_uses): Use reg_defs and local_md instead of
1679 bitmap_only_bit_between and local_rd.
1680 (single_def_use_enter_block): New, from build_single_def_use_links.
1681 (single_def_use_leave_block): New.
1682 (build_single_def_use_links): Remove code moved to
1683 single_def_use_enter_block, invoke domwalk.
1684 (use_killed_between): Adjust comment.
1686 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
1688 * bitmap.h (bitmap_ior_and_into): New.
1689 * bitmap.c (bitmap_ior_and_into): New.
1691 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
1693 * domwalk.h (struct dom_walk_data): Remove all callbacks except
1694 before_dom_children_before_stmts and after_dom_children_after_stmts.
1695 Rename the two remaining callbacks to just before_dom_children and
1696 after_dom_children. Remove other GIMPLE statement walking bits.
1697 * domwalk.c (walk_dominator_tree): Remove now unsupported features.
1698 * graphite.c: Do not include domwalk.h.
1699 * tree-into-ssa.c (interesting_blocks): New global.
1700 (struct mark_def_sites_global_data): Remove it and names_to_rename.
1701 (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
1702 rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
1703 now that they're not domwalk callbacks.
1704 (rewrite_initialize_block): Rename to...
1705 (rewrite_enter_block): ... this, place after called functions. Test
1706 interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
1707 (rewrite_finalize_block): Rename to...
1708 (rewrite_leave_block): ... this, place after called functions.
1709 (rewrite_update_init_block): Rename to...
1710 (rewrite_update_enter_block): ... this, place after called functions.
1711 Test interesting_blocks, call rewrite_update_stmt and
1712 rewrite_update_phi_arguments.
1713 (rewrite_update_fini_block): Rename to...
1714 (rewrite_leave_block): ... this, place after called functions.
1715 (rewrite_blocks): Remove last argument, simplify initialization of
1717 (mark_def_sites_initialize_block): Rename to...
1718 (mark_def_sites_block): ... this, call mark_def_sites.
1719 (mark_def_sites_blocks): Remove argument, simplify initialization of
1721 (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
1722 (update_ssa): Likewise.
1723 * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
1725 (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
1726 (dom_opt_initialize_block): Rename to...
1727 (dom_opt_enter_block): ... this, place after called functions. Walk
1728 statements here, inline propagate_to_outgoing_edges.
1729 (dom_opt_finalize_block): Rename to...
1730 (dom_opt_leave_block): ... this, place after called functions.
1731 * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
1733 (dse_enter_block, dse_record_phi): New.
1734 (dse_record_phis): Delete.
1735 (dse_finalize_block): Rename to...
1736 (dse_leave_block): ... this.
1737 (tree_ssa_dse): Simplify initialization of walk_data.
1738 * tree-ssa-loop-im.c (determine_invariantness, move_computations):
1739 Adjust initialization of walk_data.
1740 * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
1741 * tree-ssa-loop-phiopt.c (get_non_trapping):
1742 Adjust initialization of walk_data.
1743 * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
1744 * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
1745 it's not a domwalk callback.
1746 (uncprop_initialize_block): Rename to...
1747 (dse_enter_block): ... this, call uncprop_into_successor_phis.
1748 (dse_finalize_block): Rename to...
1749 (dse_leave_block): ... this.
1750 (tree_ssa_uncprop): Simplify initialization of walk_data.
1751 * Makefile.in: Adjust dependencies.
1753 2009-06-27 Richard Earnshaw <rearnsha@arm.com>
1755 * arm.md (casesi): Fix test for Thumb1.
1756 (thumb1_casesi_internal_pic): Likewise.
1757 (thumb1_casesi_dispatch): Likewise.
1759 2009-06-26 Daniel Gutson <dgutson@codesourcery.com>
1761 * config/arm/arm-cores.def: Added core cortex-m0.
1762 * config/arm/arm-tune.md: Regenerated.
1763 * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
1765 2009-06-26 DJ Delorie <dj@redhat.com>
1767 * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
1769 * config/mep/mep.c (mep_bundle_insns): Account for the fact that
1770 the scheduler doesn't tag jump insns.
1772 2009-06-26 H.J. Lu <hongjiu.lu@intel.com>
1774 * c-decl.c (merge_decls): Re-indent.
1776 2009-06-26 Janis Johnson <janis187@us.ibm.com>
1779 * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
1780 Special-case decimal float constants.
1782 2009-06-26 Richard Henderson <rth@redhat.com>
1784 * function.h (struct function): Add cannot_be_copied_reason,
1785 and cannot_be_copied_set.
1786 * tree-inline.c (has_label_address_in_static_1): Rename from
1787 inline_forbidden_p_2; don't set inline_forbidden_reason here.
1788 (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
1789 don't set inline_forbidden_reason.
1790 (copy_forbidden): New function, split out of inline_forbidden_p.
1791 (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
1792 (inline_forbidden_p): Use copy_forbidden.
1793 (tree_versionable_function_p): Likewise.
1794 (inlinable_function_p): Merge into tree_inlinable_function_p.
1795 (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
1796 * ipa-cp.c (ipcp_versionable_function_p): New function.
1797 (ipcp_cloning_candidate_p): Use it.
1798 (ipcp_node_modifiable_p): Likewise.
1800 2009-06-26 Olatunji Ruwase <tjruwase@google.com>
1802 * builtins.c (expand_builtin_alloca): Handle builtin alloca
1803 that is marked not to be inlined. Remove flag_mudflap use.
1804 * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
1805 (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
1807 2009-06-26 Steve Ellcey <sje@cup.hp.com>
1810 * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
1811 * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
1813 2009-06-26 Kai Tietz <kai.tietz@onevision.com>
1815 * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
1817 (__mingwthr_remove_key_dtor): Likewise.
1819 2009-06-26 Richard Guenther <rguenther@suse.de>
1821 * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
1823 2009-06-26 Steven Bosscher <steven@gcc.gnu.org>
1826 * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
1827 try the non-cond_exec path also.
1829 2009-06-25 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1832 * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
1833 (output_cbranch): Use new functions.
1834 (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
1837 2009-06-25 Michael Meissner <meissner@linux.vnet.ibm.com>
1838 Pat Haugen <pthaugen@us.ibm.com>
1839 Revital Eres <ERES@il.ibm.com>
1841 * config/rs6000/rs6000.c (print_operand): Correct lossage message
1842 for %c error. Add %x support to print VSX registers as a unified
1843 register set, instead of separate float and altivec registers.
1844 Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
1845 %y case, and add support for VSX pre-modify addresses.
1846 (output_toc): Add assert for CONST containing an integer constant
1848 (rs6000_adjust_cost): Add POWER7 support.
1849 (insn_must_be_first_in_group): Ditto.
1850 (insn_must_be_last_in_group): Ditto.
1851 (rs6000_emit_popcount): Ditto.
1852 (rs6000_vector_mode_supported_p): Ditto.
1854 * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
1855 Change some of the functions called by macros to being called
1856 through a pointer, so debug functions can be inserted if
1857 -mdebug=addr or -mdebug=cost.
1858 (rs6000_preferred_reload_class_ptr): Ditto.
1859 (rs6000_secondary_reload_class_ptr): Ditto.
1860 (rs6000_secondary_memory_needed_ptr): Ditto.
1861 (rs6000_cannot_change_mode_class_ptr): Ditto.
1862 (rs6000_secondary_reload_inner): Ditto.
1863 (rs6000_legitimize_reload_address): Ditto.
1864 (rs6000_legitimize_reload_address_ptr): Ditto.
1865 (rs6000_mode_dependent_address): Ditto.
1866 (rs6000_mode_dependent_address_ptr): Ditto.
1868 * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
1869 function to return true if the mode allows reg + integer
1871 (virtual_stack_registers_memory_p): New function to return true if
1872 the address refers to a virtual stack register.
1873 (rs6000_legitimate_offset_address_p): Move code to say whether a
1874 mode supports reg+int addressing to reg_offset_addressing_ok_p and
1876 (rs6000_legitimate_address_p): Add checks for modes that only can
1877 do reg+reg addressing. Start adding VSX support.
1878 (rs6000_legitimize_reload_address): Ditto.
1879 (rs6000_legitimize_address): Ditto.
1880 (rs6000_debug_legitimate_address_p): New debug functions for
1881 -mdebug=addr and -mdebug=cost.
1882 (rs6000_debug_rtx_costs): Ditto.
1883 (rs6000_debug_address_costs): Ditto.
1884 (rs6000_debug_adjust_cost): Ditto.
1885 (rs6000_debug_legitimize_address): Ditto.
1886 (rs6000_legitimize_reload_address_ptr): Point to call normal
1887 function or debug function. Make functions called via pointer
1889 (rs6000_mode_dependent_address_ptr): Ditto.
1890 (rs6000_secondary_reload_class_ptr): Ditto.
1891 (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
1892 (rs6000_emit_move): Add -mdebug=addr support. Change an abort
1893 into a friendlier error.
1894 (rs6000_init_builtins): Add initial VSX support.
1895 (rs6000_adjust_cost): Fix some spacing issues.
1897 * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
1898 (REG_CLASS_NAMES): Ditto.
1899 (REG_CLASS_CONTENTS): Ditto.
1900 (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
1901 pointer, to add -mdebug=addr support.
1902 (CANNOT_CHANGE_MODE_CLASS): Ditto.
1903 (SECONDARY_RELOAD_CLASS): Call through a pointer to add
1904 -mdebug=addr support.
1905 (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
1906 (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
1907 (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
1909 * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
1911 (bswapsi*): Set attribute types for load/store. Add combiner
1912 patterns to eliminate zero extend on 64-bit.
1913 (bswapdi*): Add support for swapping 64-bit values. Use ldbrx and
1914 stdbrx if the hardware supports those instructions.
1916 2009-06-25 Ian Lance Taylor <iant@google.com>
1918 * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
1919 (Link Options): Document -static-libstdc++.
1921 2009-06-25 Andrew Pinski <andrew_pinski@playstation.sony.com>
1924 * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
1925 DATA_ALIGNMENT instead.
1927 2009-06-25 Richard Guenther <rguenther@suse.de>
1929 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
1930 indirect references against the callused/escaped solutions.
1931 (call_may_clobber_ref_p_1): Likewise.
1933 2009-06-25 Martin Jambor <mjambor@suse.cz>
1935 PR tree-optimization/40493
1936 * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
1937 (enum unscalarized_data_handling): New type.
1938 (handle_unscalarized_data_in_subtree): Return what has been done.
1939 (load_assign_lhs_subreplacements): Handle left flushes differently.
1940 (sra_modify_assign): Use unscalarized_data_handling, simplified
1941 condition determining whether to remove the statement.
1943 2009-06-25 Basile Starynkevitch <basile@starynkevitch.net>
1945 * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
1946 excerpt - @ should be doubled for texinfo.
1948 2009-06-24 Ian Lance Taylor <iant@google.com>
1950 * config/arc/arc.c: Include "df.h".
1951 (arc_attribute_table): Make static. Move higher in file.
1952 (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
1953 (output_shift): Initialize n later to avoid warning.
1954 * config/arm/arm.c (arm_attribute_table): Make static. Move
1956 * config/avr/avr.c (avr_attribute_table): Make static. Move
1958 (reg_class_tab): Change array type from int to enum reg_class.
1959 (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
1961 (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
1962 (lshrhi3_out): Likewise.
1963 (class_likely_spilled_p): Change return type to bool.
1964 (avr_rtx_costs): Use local code variable with enum type.
1965 * config/avr/avr.md (movmemhi): Use add_reg_note.
1966 (andhi3, andsi3): Don't use AS2 with "and".
1967 (iorhi3, iorsi3): Don't use AS2 with "or".
1968 * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
1969 * config/crx/crx.c: Include "df.h".
1970 (crx_attribute_table): Make static.
1971 * config/m32r/m32r.c: Include "df.h".
1972 (m32r_attribute_table): Make static. Move higher in file.
1973 (pop): Use add_reg_note.
1974 (block_move_call): Change 0 to LCT_NORMAL in function call.
1975 * config/m32r/m32r.md (movsi_insn): Remove unused local value.
1976 * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
1977 * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
1978 declare, not just when TREE_CODE is defined.
1979 * config/m68hc11/m68hc11.c: Include "expr.h".
1980 (m68hc11_attribute_table): Make static. Move higher in file.
1981 (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
1983 (m68hc11_register_indirect_p): Likewise.
1984 (m68hc11_function_arg_padding): Change return type to enum
1986 (emit_move_after_reload): Use add_reg_note.
1987 (m68hc11_emit_logical): Change code parameter to enum rtx_code.
1988 (m68hc11_split_logical): Likewise.
1989 (m68hc11_rtx_costs): Add local code_and outer_code variables with
1991 * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
1992 to VOIDmode in function call.
1993 * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
1995 (m68hc11_split_logical): Update declaration.
1996 (m68hc11_function_arg_padding): Update declaration.
1997 * config/mcore/mcore.c (regno_reg_class): Change form array of int
1998 to array of enum reg_class.
1999 (mcore_attribute_table): Make static. Move higher in file.
2000 (mcore_rtx_costs): Add cast to enum type.
2001 * config/mcore/mcore.h (regno_reg_class): Update declaration.
2002 (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
2003 * config/sh/sh.c (sh_attribute_table): Make static. Move higher
2005 * config/sh/predicates.md (trapping_target_operand): Rename and to
2007 * config/sparc/sparc.c (sparc_attribute_table): Make static. Move
2009 * config/spu/spu.c (spu_attribute_table): Make static. Move
2011 * config/v850/v850.c (v850_attribute_table): Make static. Move
2013 (v850_rtx_costs): Use local code with enum type.
2014 (expand_epilogue): Add cast.
2015 * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
2017 2009-06-23 Takashi YOSHII <yoshii.takashi@renesas.com>
2020 * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
2021 -m2a-single-only and -m2a-nofpu.
2022 * config/sh/sh.opt: Document m2a generates FPU code.
2024 2009-06-24 Anatoly Sokolov <aesok@post.ru>
2026 * defaults.h (CAN_ELIMINATE): Provide default.
2027 * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
2028 * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
2029 * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
2030 * config/spu/spu.h (CAN_ELIMINATE): Delete.
2031 * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
2032 * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
2033 * config/cris/cris.h (CAN_ELIMINATE): Delete.
2034 * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
2035 * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
2036 * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
2038 2009-06-24 DJ Delorie <dj@redhat.com>
2040 * mep-ext-cop.cpu: Fix copyright notice.
2041 * mep-default: Fix copyright notice.
2042 * mep-core: Fix copyright notice.
2043 * mep: Fix copyright notice.
2044 * mep-ivc2: Fix copyright notice.
2045 * mep-c5: Fix copyright notice.
2047 2009-06-24 Denis Chertykov <chertykov@gmail.com>
2049 * doc/contrib.texi (Contributors):
2051 2009-06-24 Andreas Krebbel <krebbel1@de.ibm.com>
2054 * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
2055 src and dst operands if necessary.
2057 2009-06-23 DJ Delorie <dj@redhat.com>
2060 * config.gcc: Add mep support.
2061 * recog.c: Resurrect validate_replace_rtx_subexp().
2062 * recog.h: Likewise.
2063 * config/mep/: Add new port:
2064 * config/mep/constraints.md: New file.
2065 * config/mep/default.h: New file.
2066 * config/mep/intrinsics.h: New file.
2067 * config/mep/intrinsics.md: New file.
2068 * config/mep/ivc2-template.h: New file.
2069 * config/mep/mep-c5.cpu: New file.
2070 * config/mep/mep-core.cpu: New file.
2071 * config/mep/mep-default.cpu: New file.
2072 * config/mep/mep-ext-cop.cpu: New file.
2073 * config/mep/mep-intrin.h: New file.
2074 * config/mep/mep-ivc2.cpu: New file.
2075 * config/mep/mep-lib1.asm: New file.
2076 * config/mep/mep-lib2.c: New file.
2077 * config/mep/mep-pragma.c: New file.
2078 * config/mep/mep-protos.h: New file.
2079 * config/mep/mep-tramp.c: New file.
2080 * config/mep/mep.c: New file.
2081 * config/mep/mep.cpu: New file.
2082 * config/mep/mep.h: New file.
2083 * config/mep/mep.md: New file.
2084 * config/mep/mep.opt: New file.
2085 * config/mep/predicates.md: New file.
2086 * config/mep/t-mep: New file.
2088 2009-06-23 Ian Lance Taylor <iant@google.com>
2090 * configure.ac: Invoke AC_PROG_CXX. Separate C specific warnings
2091 from loose_warn into c_loose_warn and from strict_warn into
2092 c_strict_warn. Set and substitute warn_cxxflags. Check for
2093 --enable-build-with-cxx. Set and substitute
2094 ENABLE_BUILD_WITH_CXX. Set and substitute HOST_LIBS.
2095 * Makefile.in (CXXFLAGS): New variable.
2096 (C_LOOSE_WARN, C_STRICT_WARN): New variables.
2097 (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN). Add $(C_STRICT_WARN) if
2098 the default is the same as $(STRICT_WARN).
2099 (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
2100 (CXX): New variable.
2101 (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
2102 (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
2103 (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
2104 (HOST_LIBS): New variable.
2105 (GCC_CFLAGS): Add $(C_LOOSE_WARN).
2106 (ALL_CXXFLAGS): New variable.
2107 (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
2108 * doc/install.texi (Configuration): Document
2109 --enable-build-with-cxx, --with-stage1-ldflags,
2110 --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
2111 * configure: Rebuild.
2113 2009-06-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2115 * config/arm/arm.c (arm_override_options): Fix braces and formatting
2116 from previous commit.
2118 2009-06-23 Ian Lance Taylor <iant@google.com>
2120 * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
2122 2009-06-23 Ian Lance Taylor <iant@google.com>
2124 * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
2125 with ATTRIBUTE_UNUSED.
2127 2009-06-23 Michael Meissner <meissner@linux.vnet.ibm.com>
2128 Pat Haugen <pthaugen@us.ibm.com>
2129 Revital Eres <eres@il.ibm.com>
2131 * config.in (HAVE_AS_POPCNTD): Add default definition.
2132 (HAVE_AS_LWSYNC): Ditto.
2134 * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
2136 (gcc_cv_as_powerpc_cmpb): Ditto.
2137 (gcc_cv_as_powerpc_dfp): Ditto.
2138 (gcc_cv_as_powerpc_vsx): Ditto.
2139 (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
2140 supporting the popcntd/lwsync instructions.
2141 (gcc_cv_as_powerpc_lwsync): Ditto.
2142 * configure: Regenerate.
2144 * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
2145 -mcpu=native and -mcpu=power7.
2146 * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
2148 * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
2149 a variable instead of a mask to reduce the number of mask bits.
2150 * config/rs6000/sysv4.opt (-mbit-align): Ditto.
2151 (-mbit-word): Ditto.
2152 (-mregnames): Ditto.
2153 * config/rs6000/rs6000.opt (-mupdate): Ditto.
2154 (-mfused-madd): Ditto.
2156 * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
2158 (-mvsx): New switch for VSX instructions.
2159 (-misel): Move from a variable to a mask to allow it to be set by
2162 * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
2163 function declaration to an array declaration.
2164 (rs6000_hard_regno_nregs): New external array declaration.
2166 * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
2167 files included by rs6000.md.
2169 * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
2170 SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
2172 * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
2174 (rs6000_debug_reg): New -mdebug= variables.
2175 (rs6000_debug_addr): Ditto.
2176 (rs6000_debug_cost): Ditto.
2177 (rs6000_pmode): New variable to hold Pmode.
2178 (rs6000_pointer_size): New variable to hold POINTER_SIZE.
2179 (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
2180 calculated at compiler start.
2181 (rs6000_hard_regno_nregs): Change function to an array which holds
2182 HARD_REGNO_NREGS calculated at compiler start.
2183 (rs6000_explicit_options): Delete isel field.
2184 (rs6000_vector_unit): New array to hold which vector unit
2185 supports arithmetic options for a given type.
2186 (rs6000_vector_mem): New array to hold which vector unit supports
2187 memory reference operations for a given type.
2188 (rs6000_vector_align): New array to given the alignment of each
2190 (power7_cost): New basic costs for power7.
2191 (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
2192 (rs6000_hard_regno_nregs_internal): New function, moved from
2193 HARD_REGNO_NREGS, to calculate the number of registers each hard
2194 register takes for each type.
2195 (rs6000_debug_reg_print): New function for -mdebug=reg support.
2196 (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
2197 (+rs6000_init_hard_regno_mode_ok): New function, move calculation
2198 of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
2199 unit information here so it is calculated once at compiler startup
2201 (rs6000_override_options): Make -misel a target mask. Add more
2202 power7 target masks. Setup Pmode and POINTER_SIZE. Add initial
2203 VSX support. Add support for -mdebug=reg, -mdebug=addr, and
2205 (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
2206 (rs6000_handle_option): Move -misel from variable to target mask.
2207 (rs6000_builtin_mask_for_load): Add VSX support.
2208 (rs6000_conditional_register_usage): Ditto.
2209 (USE_ALTIVEC_FOR_ARG_P): Ditto.
2210 (function_arg_boundary): Ditto.
2211 (rs6000_expand_builtin): Ditto.
2212 (def_builtin): Make abort message a little friendlier.
2213 (rs6000_emit_int_cmove): Add support for 64-bit isel.
2215 * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
2216 assembler support the popcntd instruction instead of a vsx
2217 instruction to enable power7 support.
2218 (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
2219 (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
2220 option to the assembler if -mcpu=native.
2221 (ASM_CPU_NATIVE_SPEC): Ditto.
2222 (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
2224 (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
2225 the lwsync instruction.
2226 (enum processor_type): Add PROCESSOR_POWER7.
2227 (rs6000_debug_reg): New -mdebug= options.
2228 (rs6000_debug_addr): Ditto.
2229 (rs6000_debug_cost): Ditto.
2230 (rs6000_isel): Delete.
2231 (enum rs6000_vector): New enum to say what vector unit we have.
2232 (VECTOR_UNIT_*): New macros to say which vector unit has
2233 arithmetic operations for a given type.
2234 (VECTOR_MEM_*): New macros to say which vector unit has memory
2235 operations for a given type.
2236 (TARGET_LDBRX): Whether the machine supports the ldbrx
2238 (TARGET_ISEL): Delete, -misel moved to be a mask.
2239 (TARGET_ISEL64): New macro for 64-bit isel support.
2240 (UNITS_PER_VSX_WORD): New macro.
2241 (POINTER_SIZE): Move to be an external variable, rather than
2242 calculating whether we are generating 32 ot 64-bit code.
2244 (STACK_BOUNDARY): Add VSX support.
2245 (LOCAL_ALIGNMENT): Ditto.
2246 (SLOW_UNALIGNED_ACCESS): Ditto.
2247 (VSX_REGNO_P): New macro for VSX support.
2248 (VFLOAT_REGNO_P): Ditto.
2249 (VINT_REGNO_P): Ditto.
2250 (VLOGICAL_REGNO_P): Ditto.
2251 (VSX_VECTOR_MODE): Ditto.
2252 (VSX_SCALAR_MODE): Ditto.
2254 (VSX_MOVE_MODE): Ditto.
2255 (VSX_REG_CLASS_P): Ditto.
2256 (HARD_REGNO_NREGS): Instead of calling a function, use an array
2258 (UNITS_PER_SIMD_WORD): Add VSX support.
2259 (MODES_TIEABLE_P): Ditto.
2260 (STARTING_FRAME_OFFSET): Ditto.
2261 (STACK_DYNAMIC_OFFSET): Ditto.
2262 (EPILOGUE_USES): Ditto.
2263 (REGNO_REG_CLASS): Move to array lookup.
2264 (CLASS_MAX_NREGS): Ditto.
2265 (rs6000_vector_reg_class): Add declaration.
2266 (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
2267 overlap with the floating point and Altivec registers.
2269 * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
2271 * config/rs6000/driver-rs6000.c (asm_names): New static array to
2272 give the appropriate asm switches if -mcpu=native.
2273 (host_detect_local_cpu): Add support for "asm".
2274 (host_detect_local_cpu): Follow GNU code guidelines for name.
2276 * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
2277 -mbit-word to a variable instead of being a target mask.
2279 * config/rs6000/sync.md (lwsync): If the assembler supports it,
2280 emit the lwsync instruction instead of emitting the instruction as
2281 an integer constant.
2283 * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
2284 fixuns_trundfsi2, move expander into rs6000.md.
2286 * config/rs6000/rs6000.md (cpu): Add power7.
2287 (sel, *ptrsize): New mode attributes for 32/64-bit isel.
2288 (logical predicate patterns): Change the single instruction
2289 primitives that set CR0 to be fast_compare instead of compare.
2291 (popcntwsi2): Add support for ISA 2.06 popcount instructions.
2292 (popcntddi2): Ditto.
2293 (popcount<mode>): Ditto.
2294 (floating multiply/add insns): Name the floating point
2296 (isel_signed_<mode>): Add support for -misel on 64-bit systems.
2297 (isel_unsigned_<mode>): Ditto.
2298 (fixuns_trundfsi2): Move expander here from spe.md.
2299 (smindi3): Define if we have -misel on 64-bit systems.
2304 2009-06-23 Anatoly Sokolov <aesok@post.ru>
2306 * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
2308 * config/avr/avr.c (avr_current_device): New variable.
2309 (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
2310 (avr_arch, mcu_type_s): Move to avr.h.
2311 * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
2312 default_data_section_start fields.
2313 (avr_arch): Moved from avr.c.
2314 (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
2315 library_name fields.
2316 (avr_current_device, avr_mcu_types, avr_arch_types,
2317 avr_device_to_arch, avr_device_to_data_start,
2318 avr_device_to_startfiles, avr_device_to_devicelib): Declare.
2319 (EXTRA_SPEC_FUNCTIONS): Define.
2320 (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
2321 options mapping. Use device_to_arch and device_to_data_start insted.
2322 (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
2323 (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
2324 * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
2325 * config/avr/driver-avr.c: New file.
2326 * config/avr/avr-devices.c: New file.
2328 2009-06-23 Jakub Jelinek <jakub@redhat.com>
2330 * var-tracking.c (unshare_variable): Force initialized to
2331 be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
2332 (set_variable_part): Likewise.
2333 (struct variable_union_info): Remove pos_src field.
2334 (vui_vec, vui_allocated): New variables.
2335 (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
2336 unconditionally. Avoid XCVECNEW/free for every sorting, for dst_l
2337 == 1 use a simpler sorting algorithm. Compute pos field right
2338 away, don't fill in pos_src. For dst_l == 2 avoid qsort.
2339 Avoid quadratic comparison if !flag_var_tracking_uninit.
2340 (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
2341 unshare_variable unconditionally.
2342 (dataflow_set_different_2): Removed.
2343 (dataflow_set_different): Don't traverse second hash table.
2344 (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
2345 unconditionally to var_reg_set or var_mem_set.
2346 (emit_notes_in_bb): Likewise.
2347 (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
2349 (emit_note_insn_var_location): Don't set initialized to
2350 VAR_INIT_STATUS_INITIALIZED early.
2351 (vt_finalize): Free vui_vec if needed, clear vui_vec and
2353 * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
2355 * tree-object-size.c (addr_object_size): Instead of checking
2356 for non-NULL TREE_CHAIN of the FIELD_DECL check that there
2357 are no FIELD_DECLs following it.
2359 2009-06-23 Andreas Krebbel <krebbel1@de.ibm.com>
2361 * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
2362 order to match bswaps with signed source operands.
2364 2009-06-23 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2366 * sdbout.c (sdbout_one_type): Fix braces in switch.
2368 2009-06-23 Richard Guenther <rguenther@suse.de>
2370 * tree-ssa-structalias.c (struct variable_info): Add is_global_var
2372 (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
2373 readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
2374 var_callused, callused_tree, var_storedanything, storedanything_tree,
2375 var_integer, integer_tree): Remove global variables.
2376 (new_var_info): Do not pass new id, append the new var to the
2377 global variable vector.
2378 (do_ds_constraint): Use is_global_var member of the variable-info.
2379 (new_scalar_tmp_constraint_exp): Adjust.
2380 (create_function_info_for): Likewise.
2381 (create_variable_info_for): Likewise.
2382 (find_what_var_points_to): Remove dead code.
2383 (init_base_vars): Simplify.
2384 (compute_points_to_sets): Adjust.
2386 2009-06-22 Adam Nemet <anemet@caviumnetworks.com>
2388 * combine.c (try_combine): Dump information about the insns we're
2391 2009-06-22 Adam Nemet <anemet@caviumnetworks.com>
2393 * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
2394 check when calling force_to_mode on TRUNCATE's operand.
2396 2009-06-22 Ian Lance Taylor <iant@google.com>
2398 * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
2400 2009-06-22 Steven Bosscher <steven@gcc.gnu.org>
2402 * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
2404 2009-06-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2406 * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
2407 override library linkage flags such as -static-libgcc or
2410 2009-06-22 Maxim Kuvyrkov <maxim@codesourcery.com>
2412 * config/m68k/m68k-devices.def: Add line for MCF5221x.
2414 2009-06-22 Ian Lance Taylor <iant@google.com>
2416 * config/linux.opt: Put mglibc ahead of muclibc.
2418 * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
2419 for duplicate decls.
2421 2009-06-22 Matthias Klose <doko@ubuntu.com>
2423 * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
2425 2009-06-22 Steven Bosscher <steven@gcc.gnu.org>
2428 * c-parser.c (c_parser_objc_message_args): Return error_mark_node
2429 instead of NULL if a parser error occurs.
2431 2009-06-22 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2433 * dwarf2out.c (dwarf2_debug_hooks): Initialize
2434 non-DWARF2_DEBUGGING_INFO version.
2436 2009-06-22 Kai Tietz <kai.tietz@onevision.com>
2438 * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
2439 i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
2441 * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
2442 (LIBGCC2_TF_CEXT): Define.
2445 2009-06-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2448 * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
2450 2009-06-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2452 * config/arm/arm.c (arm_override_options): Disable
2453 -mcaller-super-interworking and -mcallee-super-interworking.
2454 * doc/invoke.texi (ARM Options): Document this.
2456 2009-06-22 Nathan Sidwell <nathan@codesourcery.com>
2458 * config/arm/arm.c (arm_print_operand): Deal with HIGH.
2459 * config/arm/constraints.md (j): New constraint for movw operands.
2460 (N): Remove thumb2 meaning.
2461 * config/arm/arm.md (*arm_movw): Delete.
2462 (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
2463 * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
2464 * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
2466 2009-06-22 Martin Jambor <mjambor@suse.cz>
2468 PR tree-optimization/40492
2469 * tree-sra.c (sra_modify_assign): Pass zero offsets to
2470 build_ref_for_offset.
2472 2009-06-22 Shujing Zhao <pearly.zhao@oracle.com>
2474 * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
2475 JUMP_TABLE_DATA_P predicates where applicable.
2476 * auto-inc-dec.c: Ditto.
2477 * builtins.c: Ditto.
2478 * caller-save.c: Ditto.
2480 * cfgcleanup.c: Ditto.
2481 * cfglayout.c: Ditto.
2484 * combine-stack-adj.c: Ditto.
2490 * dwarf2asm.c: Ditto.
2491 * dwarf2out.c: Ditto.
2492 * emit-rtl.c: Ditto.
2498 * function.c: Ditto.
2501 * genpreds.c: Ditto.
2502 * genrecog.c: Ditto.
2504 * ira-costs.c: Ditto.
2505 * ira-lives.c: Ditto.
2508 * lower-subreg.c: Ditto.
2509 * modulo-sched.c: Ditto.
2511 * postreload.c: Ditto.
2512 * print-rtl.c: Ditto.
2521 * sched-vis.c: Ditto.
2523 * sel-sched-ir.c: Ditto.
2524 * simplify-rtx.c: Ditto.
2525 * targhooks.c: Ditto.
2526 * var-tracking.c: Ditto.
2527 * vmsdbgout.c: Ditto.
2529 2009-06-22 Matthias Klose <doko@ubuntu.com>
2531 * Makefile.in (install-plugin): Always use DESTDIR.
2533 2009-06-22 Olivier Hainque <hainque@adacore.com>
2535 * config/pa/pa.c (output_call): Don't optimize post call jumps
2536 into return address adjustments if the call may throw.
2538 2009-06-21 Richard Earnshaw <rearnsha@arm.com>
2540 * arm.c (thumb1_output_casesi): New function.
2541 * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
2542 optimizing for size or PIC.
2543 (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
2544 * arm.md (UNSPEC_THUMB1_CASESI): New constant.
2545 (casesi): Handle Thumb-1 when optimizing for size or PIC.
2546 (thumb1_casesi_internal_pic): New expand rule.
2547 (thumb1_casesi_dispatch): New pattern.
2548 * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
2550 * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
2551 in the text seciton when PIC or optimizing for size.
2552 * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
2553 * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
2554 preservation properties of code.
2555 (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
2556 (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
2557 (__gnu_thumb1_case_si): New function.
2558 * t-arm (LIB1ASMSRC): Define here.
2559 (LIB1ASMFUNCS): Add some common functions.
2560 * t-arm-elf (LIB1ASMSRC): Delete.
2561 (LIB1ASMFUNCS): Append to existing set.
2562 * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2563 * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2564 * t-symbian (LIB1ASMFUNCS): Likewise.
2565 * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2566 * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2568 2009-06-21 Richard Guenther <rguenther@suse.de>
2570 PR tree-optimization/38729
2571 * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
2572 to loops with a single exit if -fno-expensive-optimizations.
2574 2009-06-21 Jakub Jelinek <jakub@redhat.com>
2576 * var-tracking.c (struct shared_hash_def, shared_hash): New types.
2577 (dataflow_set): Change vars type from htab_t to shared_hash.
2578 (shared_hash_pool, empty_shared_hash): New variables.
2579 (vars_clear): Removed.
2580 (shared_hash_shared, shared_hash_htab, shared_hash_copy,
2581 shared_hash_find_slot_unshare, shared_hash_find_slot,
2582 shared_hash_find_slot_noinsert, shared_hash_find): New
2584 (shared_hash_unshare, shared_hash_destroy): New functions.
2585 (unshare_variable): Unshare set->vars if shared, use
2587 (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
2588 (get_init_value, find_src_set_src, dump_dataflow_set,
2589 clobber_variable_part, emit_notes_for_differences): Use
2591 (dataflow_set_init): Remove second argument, set vars to
2592 empty_shared_hash instead of creating a new htab.
2593 (dataflow_set_clear): Call shared_hash_destroy and set vars
2594 to empty_shared_hash instead of calling vars_clear.
2595 (dataflow_set_copy): Don't call vars_copy, instead just share
2596 the src htab with dst.
2597 (variable_union): Use shared_hash_*, use initially NO_INSERT
2598 lookup if set->vars is shared. Don't keep slot cleared before
2599 calling unshare_variable. Unshare set->vars if needed.
2600 Even ->refcount == 1 vars must be unshared if set->vars is shared
2601 and var needs to be modified.
2602 (variable_canonicalize): New function.
2603 (dataflow_set_union): If dst->vars is empty, just share src->vars
2604 with dst->vars and traverse with variable_canonicalize to canonicalize
2605 and unshare what is needed.
2606 (dataflow_set_different): If old_set and new_set use the same shared
2607 htab, they aren't different. If number of htab elements is different,
2608 htabs are different. Use shared_hash_*.
2609 (dataflow_set_destroy): Call shared_hash_destroy instead of
2611 (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
2612 second argument to dataflow_set_init.
2613 (vt_initialize): Likewise. Initialize shared_hash_pool and
2614 empty_shared_hash, move bb in/out initialization afterwards.
2615 Use variable_htab_free instead of NULL as changed_variables del hook.
2616 (variable_was_changed): Change type of second argument to pointer to
2617 dataflow_set. When inserting var into changed_variables, bump
2618 refcount. Unshare set->vars if set is shared htab and slot needs to
2620 (set_variable_part): Use shared_hash_*, use initially NO_INSERT
2621 lookup if set->vars is shared. Unshare set->vars if needed.
2622 Even ->refcount == 1 vars must be unshared if set->vars is shared
2623 and var needs to be modified. Adjust variable_was_changed caller.
2624 (delete_variable_part): Use shared_hash_*. Even ->refcount == 1
2625 vars must be unshared if set->vars is shared and var needs to be
2626 modified. Adjust variable_was_changed caller.
2627 (emit_note_insn_var_location): Don't pool_free var.
2628 (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
2630 (vt_finalize): Call htab_delete on empty_shared_hash->htab and
2631 free_alloc_pool on shared_hash_pool.
2633 2009-06-20 Anthony Green <green@moxielogic.com>
2635 * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
2636 * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
2638 2009-06-20 Richard Guenther <rguenther@suse.de>
2640 * tree-ssa-structalias.c (find_func_aliases): For memset use
2641 a constraint from NULL if we memset to zero.
2642 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
2643 we explicitly handle that do not read from memory.
2644 (call_may_clobber_ref_p_1): Properly handle builtins that may
2647 2009-06-20 Richard Guenther <rguenther@suse.de>
2649 PR tree-optimization/40495
2650 * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
2651 (new_scalar_tmp_constraint_exp): New function.
2652 (process_constraint): Do not create temporary decls.
2653 (process_all_all_constraints): Likewise.
2654 (handle_const_call): Likewise.
2655 (create_function_info_for): Do not set decl.
2657 2009-06-19 Ian Lance Taylor <iant@google.com>
2659 * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
2660 (rs6000_attribute_table): Make static; move before use.
2662 2009-06-19 Eric Botcazou <ebotcazou@adacore.com>
2664 * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
2665 <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
2666 Propagate the TREE_READONLY flag without overwriting it.
2667 (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
2668 Propagate the TREE_READONLY flag onto the result.
2669 (process_call_operands): Move around. Use correct constant value.
2671 2009-06-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2674 * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
2675 * config/arm/arm.md: Likewise.
2677 2009-06-19 Ian Lance Taylor <iant@google.com>
2679 * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
2680 to GIMPLE_ERROR_MARK.
2682 * c-typeck.c (build_conditional_expr): Add op1_original_type and
2683 op2_original_type parameters. Warn about using different enum types.
2684 * c-parser.c (c_parser_conditional_expression): Pass original
2685 types to build_conditional_expr.
2686 * c-tree.h (build_conditional_expr): Update declaration.
2688 2009-06-19 Ian Lance Taylor <iant@google.com>
2690 * config/i386/i386.c (ix86_function_specific_save): Test that
2691 fields match values, rather than testing the values are in a
2694 2009-06-19 Richard Guenther <rguenther@suse.de>
2696 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
2698 (ptr_derefs_may_alias_p): Likewise.
2699 (ptr_deref_may_alias_ref_p_1): New function.
2700 (ptr_deref_may_alias_ref_p): Likewise.
2701 (ref_maybe_used_by_call_p_1): Handle builtins that are not
2702 covered by looking at the ESCAPED solution.
2703 (call_may_clobber_ref_p_1): Likewise.
2704 * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
2705 Handle NULL_TREE offset. Do not produce redundant constraints.
2706 (process_all_all_constraints): New helper function.
2707 (do_structure_copy): Use it.
2708 (handle_lhs_call): Likewise.
2709 (find_func_aliases): Handle some builtins with pointer arguments
2710 and/or return values explicitly.
2712 2009-06-19 Ian Lance Taylor <iant@google.com>
2714 * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
2716 2009-06-19 Ian Lance Taylor <iant@google.com>
2718 * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
2720 2009-06-19 Ian Lance Taylor <iant@google.com>
2722 * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
2723 * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
2726 * c-decl.c (finish_decl): If -Wc++-compat, warn about
2727 uninitialized const.
2729 2009-06-19 Ian Lance Taylor <iant@google.com>
2731 * dse.c (struct store_info): Rename bitmap field to bmap. Change
2734 * c-decl.c (in_struct, struct_types): Remove.
2735 (struct c_binding): Add in_struct field.
2736 (c_binding_ptr): Define type, along with VEC.
2737 (struct c_struct_parse_info): Define.
2738 (struct_parse_info): New static variable.
2739 (bind): Initialize in_struct field.
2740 (start_struct): Remove enclosing_in_struct and
2741 enclosing_struct_types parameters. Add
2742 enclosing_struct_parse_info parameter. Change all callers. Set
2743 struct_parse_info rather than in_struct and struct_types.
2744 (grokfield): If -Wc++-compat and there is a symbol binding for the
2745 field name, set the in_struct flag and push it on the
2746 struct_parse_info->fields vector.
2747 (warn_cxx_compat_finish_struct): New static function.
2748 (finish_struct): Remove enclosing_in_struct and
2749 enclosing_struct_types parameters. Add
2750 enclosing_struct_parse_info parameter. Change all callers. Don't
2751 set C_TYPE_DEFINED_IN_STRUCT here. Call
2752 warn_cxx_compat_finish_struct. Free struct_parse_info and set to
2753 parameter. Only push on struct_types if warn_cxx_compat.
2754 (finish_enum): Only push on struct_types if warn_cxx_compat.
2755 (declspecs_add_type): Add loc parameter. Change all callers.
2756 Change all error calls to error_at. Pass loc, not input_location,
2757 to pedwarn calls. Warn if -Wc++-compat and a typedef name is
2758 defined in a struct. If -Wc++-compat and parsing a struct, record
2759 that a typedef name was used.
2760 * c-parser.c (c_parser_declspecs): Get location to pass to
2762 (c_parser_struct_or_union_specifier): Update calls to start_struct
2764 * c-tree.h (struct c_struct_parse_info): Declare.
2765 (finish_struct, start_struct): Update declarations.
2766 (declspecs_add_type): Update declaration.
2768 2009-06-19 Ian Lance Taylor <iant@google.com>
2770 * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
2771 variable with an anonymous type.
2773 2009-06-19 Uros Bizjak <ubizjak@gmail.com>
2775 * see.c: Remove for real.
2777 2009-06-19 Uros Bizjak <ubizjak@gmail.com>
2779 * optabs.h (enum optab_index): Add new OTI_significand.
2780 (significand_optab): Define corresponding macro.
2781 * optabs.c (init_optabs): Initialize significand_optab.
2782 * genopinit.c (optabs): Implement significand_optab using
2783 significand?f2 patterns.
2784 * builtins.c (expand_builtin_mathfn): Handle
2785 BUILT_IN_SIGNIFICAND{,F,L}.
2786 (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
2787 expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
2789 * config/i386/i386.md (significandxf2, significand<mode>2): New
2790 expanders to implement significandf, significand and significandl
2791 built-ins as inline x87 intrinsics.
2793 2009-06-18 Anatoly Sokolov <aesok@post.ru>
2795 * config/avr/avr.c (avr_override_options): Remove setting value of
2796 PARAM_INLINE_CALL_COST.
2798 2009-06-18 Richard Henderson <rth@redhat.com>
2801 * tree-pass.h (TDF_ASMNAME): New.
2802 * tree-dump.c (dump_options): Add asmname.
2803 * doc/invoke.texi: Document it.
2805 * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
2806 (dump_decl_name): ...here.
2807 (dump_function_name): New flags arg; mind TDF_ASMNAME.
2808 (dump_generic_node): Update dump_function_name calls.
2809 (print_call_name): New flags arg; update all dump calls.
2810 * diagnostic.h (print_call_name): Update.
2811 * gimple-pretty-print.c (dump_gimple_call): Update.
2813 2009-06-18 H.J. Lu <hongjiu.lu@intel.com>
2816 * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
2818 2009-06-18 Diego Novillo <dnovillo@google.com>
2820 * doc/plugins.texi: Document plugin_is_GPL_compatible.
2821 * plugin.c (str_license): Declare.
2822 (try_init_one_plugin): Assert that the symbol
2823 'plugin_is_GPL_compatible' exists.
2825 2009-06-18 Sergei Dyshel <sergeid@il.ibm.com>
2828 * Makefile.in (OBJS-common): Remove see.o.
2830 * common.opt (fsee): Mark as preserved for backward compatibility.
2831 * opts.c (common_handle_option): Add OPT_fsee to the backward
2832 compatibility section.
2833 * passes.c (init_optimization_passes, pass_see): Remove pass.
2834 * timevar.def (TV_SEE): Remove.
2835 * tree-pass.h (pass_see): Remove declaration.
2836 * doc/invoke.texi (-fsee): Remove documentation.
2838 2009-06-18 Martin Jambor <mjambor@suse.cz>
2840 * tree-sra.c: Include statistics.h
2841 (sra_stats): New variable.
2842 (sra_initialize): Clear sra_stats.
2843 (create_access_replacement): Increment sra_stats.replacements.
2844 (get_access_replacement): Do not return twice.
2845 (analyze_all_variable_accesses): Increment statistics counter by the
2846 number of scalarized aggregates.
2847 (generate_subtree_copies): Increment sra_stats.subtree_copies.
2848 (sra_modify_expr): Increment sra_stats.exprs.
2849 (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
2850 (sra_modify_assign): Increment sra_stats.exprs,
2851 sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
2852 (perform_intra_sra): Update statistics counters.
2853 * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
2855 2009-06-18 Sandra Loosemore <sandra@codesourcery.com>
2857 * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
2858 (arm_scalar_mode_supported_p): New function.
2860 2009-06-18 Paul Brook <paul@codesourcery.com>
2861 Sandra Loosemore <sandra@codesourcery.com>
2863 * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
2864 (__extendhfsf2, __truncsfhf2): Define.
2865 * config/arm/fp16.c: New file.
2866 * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
2867 * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
2869 2009-06-18 Sandra Loosemore <sandra@codesourcery.com>
2871 * doc/extend.texi (Half-Precision): New section.
2872 * doc/invoke.texi (Option Summary): List -mfp16-format.
2873 (ARM Options): List neon-fp16 as -mfpu value. Document -mfp16-format.
2874 * config/arm/arm.opt (mfp16-format=): New.
2875 * config/arm/arm.c: Include intl.h.
2876 (TARGET_INVALID_PARAMETER_TYPE): Redefine.
2877 (TARGET_INVALID_RETURN_TYPE): Redefine.
2878 (TARGET_PROMOTED_TYPE): Redefine.
2879 (TARGET_CONVERT_TO_TYPE): Redefine.
2880 (arm_fp16_format): Define.
2881 (all_fpus): Add entry for neon-fp16.
2882 (fp_model_for_fpu): Likewise.
2883 (struct fp16_format): Declare.
2884 (all_fp16_formats): Define.
2885 (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
2887 (arm_override_options): Set arm_fp16_format. Call sorry for fp16
2889 (arm_legitimate_index_p): Treat HFmode like HImode.
2890 (thumb1_legitimate_address_p): Make it recognize HFmode constants.
2891 (coproc_secondary_reload_class): Special-case HFmode.
2892 (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
2893 (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
2894 (arm_init_fp16_builtins): New.
2895 (arm_init_builtins): Call it.
2896 (arm_invalid_parameter_type): New.
2897 (arm_invalid_return_type): New.
2898 (arm_promoted_type): New.
2899 (arm_convert_to_type).
2900 (arm_file_start): Deal with neon-fp16 as fpu_name. Emit tag for fp16
2902 (arm_emit_fp16_const): New function.
2903 (arm_mangle_type): Mangle __fp16 as "Dh".
2904 * config/arm/arm.h (TARGET_VFPD32): Make it know about
2906 (TARGET_NEON_FP16): New.
2907 (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
2908 (enum fputype): Add FPUTYPE_NEON_FP16.
2909 (enum arm_fp16_format_type): Declare.
2910 (arm_fp16_format): Declare.
2911 (LARGEST_EXPONENT_IS_NORMAL): Define.
2912 * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
2913 * config/arm/arm-modes.def (HFmode): Define.
2914 * config/arm/vfp.md: (*movhf_vfp): New.
2917 * config/arm/arm.md: (fpu): Add neon_fp16.
2918 (floatsihf2, floatdihf2): New.
2919 (fix_trunchfsi2, fix_trunchfdi2): New.
2923 (*arm32_movhf): New.
2924 (*thumb1_movhf): New.
2925 (consttable_2): Add check for HFmode constants.
2926 (consttable_4): Handle HFmode constants.
2928 2009-06-18 Uros Bizjak <ubizjak@gmail.com>
2930 * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
2932 2009-06-17 Olivier Hainque <hainque@adacore.com>
2934 * collect2.c (main): Use CONST_CAST2 to perform char ** to
2935 const char ** conversion in AIX specific section.
2937 2009-06-17 H.J. Lu <hongjiu.lu@intel.com>
2939 * config/i386/i386.c (ix86_special_builtin_type): Remove
2940 UINT64_FTYPE_PINT. Add UINT64_FTYPE_PUNSIGNED.
2941 (bdesc_special_args): Updated.
2942 (ix86_init_mmx_sse_builtins): Likewise.
2943 (ix86_expand_special_args_builtin): Likewise.
2945 2009-06-17 Richard Henderson <rth@redhat.com>
2947 * tree-pretty-print.c (maybe_dump_asm_name): New.
2948 (dump_decl_name): Use it.
2949 (PRINT_FUNCTION_NAME): Merge into...
2950 (dump_function_name): ... here. Use maybe_dump_asm_name.
2952 2009-06-17 Cary Coutant <ccoutant@google.com>
2954 * dbxout.c (dbxout_source_line): Add is_stmt parameter.
2956 * debug.c (struct gcc_debug_hooks): Change placeholder for
2958 (debug_nothing_int_charstar_int): Replaced by...
2959 (debug_nothing_int_charstar_int_bool): ...this.
2960 * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
2961 source_line prototype.
2962 (debug_nothing_int_charstar_int): Replaced by...
2963 (debug_nothing_int_charstar_int_bool): ...this.
2964 * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
2965 * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
2966 Output is_stmt operand when necessary.
2967 * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
2968 (notice_source_line): Add is_stmt parameter.
2969 * sdbout.c (sdbout_source_line): Add is_stmt parameter.
2970 * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
2972 * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
2973 * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
2975 2009-06-17 Ian Lance Taylor <iant@google.com>
2977 * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
2979 (struct store_by_pieces_d): Rename from store_by_pieces. Change
2982 2009-06-17 Adam Nemet <anemet@caviumnetworks.com>
2984 * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
2985 STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
2986 tree_strip_sign_nop_conversions and
2987 tree_ssa_strip_useless_type_conversions rather than stripping
2988 the operations here.
2989 (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
2991 * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
2992 * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
2993 * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
2994 tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
2997 2009-06-17 Michael Eager <eager@eagercon.com>
2999 * config/rs6000/constraints.md (register_constraint "d"): New.
3000 * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
3001 truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
3002 *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
3003 *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
3004 trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
3005 divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
3006 fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
3007 * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
3008 __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
3009 __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
3011 * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
3012 *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
3013 *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
3014 *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
3015 *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
3016 fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
3017 stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
3018 *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
3019 *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
3020 trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
3021 *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
3022 *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
3023 *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
3024 * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
3026 2009-06-16 Ian Lance Taylor <iant@google.com>
3028 * profile.c (total_num_never_executed): Don't define.
3029 (compute_branch_probabilities): Don't count or print
3031 (init_branch_prob): Don't set total_num_never_executed.
3032 (end_branch_prob): Don't print total_num_never_executed.
3034 2009-06-17 David Daney <ddaney@caviumnetworks.com>
3036 * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
3038 2009-06-17 David Edelsohn <edelsohn@gnu.org>
3040 * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
3041 (nabstd2_fpr): Same.
3043 2009-06-17 Steve Ellcey <sje@cup.hp.com>
3045 * expr.c (expand_assignment): Change complex type check.
3047 2009-06-17 Basile Starynkevitch <basile@starynkevitch.net>
3049 * doc/plugins.texi (Building GCC plugins): Added new section.
3051 2009-06-17 Ian Lance Taylor <iant@google.com>
3053 * c-pch.c (get_ident): Don't set size of templ array.
3054 (pch_init): Don't set size of partial_pch array.
3056 * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
3057 string constant to intialize an array whose size is the length of
3060 2009-06-17 Richard Guenther <rguenther@suse.de>
3062 PR tree-optimization/40389
3063 * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
3064 to addressable types.
3065 * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
3067 2009-06-17 Richard Guenther <rguenther@suse.de>
3070 * tree-chrec.h (build_polynomial_chrec): If we cannot determine
3071 if there is no evolution of left in the loop bail out.
3072 * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
3073 chrec_fold_multiply.
3075 2009-06-16 J"orn Rennecke <joern.rennecke@arc.com>
3076 Janis Johnson <janis187@us.ibm.com>
3079 * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
3080 for the symbol ref of a constant that is the source of a move
3081 - nor for any other not-obvious-label-ref constants.
3083 2009-06-16 Olatunji Ruwase <tjruwase@google.com>
3085 * plugin.c (position_pass): Skip newly inserted pass during list
3086 traversal to avoid repeated insertion.
3088 2009-06-16 Ian Lance Taylor <iant@google.com>
3090 * vec.h (VEC_stack_alloc): Define different version if
3091 GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
3092 (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
3093 (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
3094 (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
3096 2009-06-16 H.J. Lu <hongjiu.lu@intel.com>
3098 * config.gcc (extra_headers): Add ia32intrin.h for x86.
3100 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
3101 IX86_BUILTIN_BSRDI. IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
3102 IX86_BUILTIN_RDTSCP. IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
3103 IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
3104 (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
3105 UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
3106 INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
3107 (bdesc_special_args): Add __builtin_ia32_rdtsc and
3108 __builtin_ia32_rdtscp.
3109 (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
3110 __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
3111 and __builtin_ia32_rorhi.
3112 (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
3113 UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
3114 INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
3115 (ix86_expand_args_builtin): Likewise.
3116 (ix86_expand_special_args_builtin): Likewise.
3118 * config/i386/i386.md (UNSPECV_RDTSCP): New.
3119 (UNSPECV_RDTSC): Likewise.
3120 (UNSPECV_RDPMC): Likewise.
3121 (*bsr): Renamed to ...
3123 (*bsr_rex64): Renamed to ...
3127 (*rdpmc_rex64): Likewise.
3130 (*rdtsc_rex64): Likewise.
3132 (*rdtscp): Likewise.
3133 (*rdtscp_rex64): Likewise.
3135 * config/i386/ia32intrin.h: New.
3137 * config/i386/x86intrin.h: Include <ia32intrin.h>.
3139 2009-06-16 Ian Lance Taylor <iant@google.com>
3141 * ira-build.c (copy_info_to_removed_store_destinations):
3142 Initialize parent_a.
3144 2009-06-16 Ian Lance Taylor <iant@google.com>
3146 * c-decl.c (grokdeclarator): Change size_varies to bool.
3148 2009-06-16 Ian Lance Taylor <iant@google.com>
3150 * sel-sched.c: Make forward declarations of move_op_hooks and
3151 fur_hooks explicitly extern.
3153 2009-06-16 Ian Lance Taylor <iant@google.com>
3155 * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
3156 * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
3158 2009-06-16 Ian Lance Taylor <iant@google.com>
3160 * resource.c (mark_referenced_resources): Change
3161 include_delayed_effects parameter to bool. Change all callers.
3162 (mark_end_of_function_resources): Likewise.
3163 * reorg.c (insn_references_resource_p): Likewise.
3164 (insn_sets_resource_p): Likewise.
3165 * resource.h (mark_referenced_resources): Update declaration.
3166 (mark_end_of_function_resources): Update declaration.
3168 2009-06-16 David Edelsohn <edelsohn@gnu.org>
3170 * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
3172 2009-06-16 David Edelsohn <edelsohn@gnu.org>
3174 * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
3175 GCC can bootstrap on AIX with GNU Binutils 2.20.
3177 2009-06-16 Ian Lance Taylor <iant@google.com>
3179 * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
3181 2009-06-16 Ian Lance Taylor <iant@google.com>
3183 * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
3184 inline, not extern inline.
3185 (exact_log2): Likewise.
3186 * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
3188 (exact_log2): Likewise, but don't test CTZ_HWI.
3190 2009-06-16 Ian Lance Taylor <iant@google.com>
3192 * bitmap.c (bitmap_clear): Don't declare as inline.
3193 * gimple.c (gimplify_assign): Likewise.
3194 * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
3195 * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
3196 (sched_scan_info): Remove duplicate definition.
3198 2009-06-16 Ian Lance Taylor <iant@google.com>
3200 * c-common.c (skip_evaluation): Don't define.
3201 (c_inhibit_evaluation_warnings): Define global variable.
3202 (overflow_warning): Check c_inhibit_evaluation_warnings rather
3203 than skip_evaluation.
3204 (convert_and_check, warn_for_div_by_zero): Likewise.
3205 * c-common.h (skip_evaluation): Don't declare.
3206 (c_inhibit_evaluation_warnings): Declare.
3207 * c-parser.c (c_parser_typeof_specifier): Set
3208 c_inhibit_evaluation_warnings rather than skip_evaluation.
3209 (c_parser_conditional_expression): Likewise.
3210 (c_parser_binary_expression): Likewise.
3211 (c_parser_sizeof_expression): Likewise.
3212 (c_parser_alignof_expression): Likewise.
3213 * c-typeck.c (build_indirect_ref): Check
3214 c_inhibit_evaluation_warnings rather than skip_evaluation.
3215 (build_conditional_expr, build_binary_op): Likewise.
3217 2009-06-16 Richard Guenther <rguenther@suse.de>
3219 * tree-ssa-alias.c (is_escape_site): Remove.
3220 * tree-ssa-alias.h (enum escape_type): Remove.
3221 (is_escape_site): Likewise.
3222 * tree-ssa-structalias.c (find_func_aliases): Handle escapes
3223 via casts and asms without deferring to is_escape_site.
3225 2009-06-16 Jakub Jelinek <jakub@redhat.com>
3228 * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
3229 use gen_lowpart if op0 has complex mode.
3231 2009-06-16 Richard Guenther <rguenther@suse.de>
3233 * tree-ssa-structalias.c (do_ds_constraint): Stores in global
3234 variables add them to ESCAPED.
3235 (find_func_aliases): Do not make all indirectly stored values escaped.
3237 2009-06-16 Rafael Avila de Espindola <espindola@google.com>
3239 * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
3242 2009-06-16 Martin Jambor <mjambor@suse.cz>
3244 PR tree-optimization/40432
3245 * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
3246 check whether we need to force gimple register operand.
3248 2009-06-16 Martin Jambor <mjambor@suse.cz>
3250 PR tree-optimization/40413
3251 * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
3252 build_ref_for_offset.
3253 (propagate_subacesses_accross_link): Fix a typo in a comment.
3255 2009-06-16 Ira Rosen <irar@il.ibm.com>
3257 * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
3258 with additional parameter.
3259 * tree-vectorizer.h (enum vect_def_type): Add new value
3261 (enum vect_relevant): Add comments.
3262 (vect_is_simple_reduction): Add new argument.
3263 * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
3264 Detect nested cycles.
3265 (vect_is_simple_reduction): Update documentation, add an argument to
3266 distinguish inner-loop reduction from nested cycle, detect nested
3267 cycles, fix printings and indentation, don't swap operands in case
3269 (get_initial_def_for_reduction): Handle subtraction.
3270 (vect_create_epilog_for_reduction): Add new argument to specify
3272 (vect_finalize_reduction): Handle subtraction, fix comments.
3273 (vectorizable_reduction): Handle nested cycles. In case of nested
3274 cycle keep track of the reduction variable position. Call
3275 vect_is_simple_reduction with additional parameter. Use original
3276 statement code in reduction epilogue for nested cycle. Call
3277 vect_create_epilog_for_reduction with additional parameter.
3278 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
3279 inner-loop vectorization.
3280 (vect_recog_widen_sum_pattern): Likewise.
3281 * tree-vect-stmts.c (process_use): Distinguish between nested cycles
3283 (vect_mark_stmts_to_be_vectorized): Likewise.
3284 (vect_get_vec_def_for_operand): Handle nested cycles.
3286 2009-06-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3288 * doc/invoke.texi (Debugging Options): Fix option index entries
3289 for -fdump-statistics, -frandom-seed add entries for
3290 -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
3291 (FRV Options): Fix entries for -mTLS, -mtls.
3292 (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
3293 (i386 and x86-64 Options): Fix entry for -mno-red-zone.
3294 (M68hc1x Options): Fix @itemx for -mnominmax.
3295 (MCore Options): Fix entry for -mno-lsim.
3296 (MMIX Options): Fix entry for -mabi=mmixware.
3297 (PDP-11 Options): Fix entry for -mbcopy-builtin.
3299 2009-06-16 Basile Starynkevitch <basile@starynkevitch.net>
3301 * doc/plugins.texi (Interacting with the GCC Garbage Collector):
3302 Mention the plugin mode of gengtype.
3303 * doc/gty.texi (Source Files Containing Type Information): Likewise.
3304 * gengtype.c: Updated copyright.
3305 (plugin_files, nb_plugin_files) Added new static variables.
3306 (measure_input_list) Care about plugin_files.
3307 (write_rtx_next): Added early return in plugin mode.
3308 (create_file): Updated copyright year in generated file. Added
3310 (oprintf): Added early return if NULL outf.
3311 (get_output_file_with_visibility): Care of plugin_files.
3312 (get_output_file_name): May return null.
3313 (write_local): Added early return.
3314 (put_mangled_filename): Ditto.
3315 (finish_root_table): Added check for base_files.
3316 (write_roots): Care about null when plugins.
3317 (main): Added plugin mode.
3319 2009-06-15 Ian Lance Taylor <iant@google.com>
3321 * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
3322 * gcov.c (read_count_file): Add braces around variables declared
3325 * c.opt (Wjump-misses-init): New warning.
3326 * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
3327 -Wall and -Wc++-compat if not already set.
3328 (c_common_post_options): Clear warn_jump_misses_init if it was not
3330 * c-decl.c (struct c_binding): Change type field to a union with
3331 new label field. Make it the first field in the struct. Update
3332 references to type to use u.type instead.
3333 (struct c_spot_bindings): Define.
3334 (struct c_goto_bindings): Define.
3335 (c_goto_bindings_p): Define, along with VECs.
3336 (struct c_label_vars): Define.
3337 (struct c_scope): Add has_label_bindings field.
3338 (bind_label, set_spot_bindings): New static functions.
3339 (decl_jump_unsafe, update_spot_bindings): New static functions.
3340 (update_label_decls): New static function.
3341 (pop_scope): Call update_label_decls. Don't call c_end_vm_scope.
3342 Update binding u.label field to shadowed field.
3343 (c_binding_start_stmt_expr): New function.
3344 (c_binding_end_stmt_expr): New function.
3345 (pushdecl): Don't call c_begin_vm_scope.
3346 (make_label): Add defining and p_label_vars parameters. Change
3348 (lookup_label): Correct test for whether a label has not yet been
3349 defined. Call bind_label rather than bind.
3350 (warn_about_goto): New static function.
3351 (lookup_label_for_goto): New function.
3352 (declare_label): Call bind_label rather than bind.
3353 (check_earlier_gotos): New static function.
3354 (define_label): Don't give errors about jumping into statement
3355 expressions or scopes of variably modified types. Call
3356 set_spot_bindings and check_earlier_gotos. Call bind_label
3357 instead of bind. Don't set label_context_stack_se or
3358 label_context_stack_vm.
3359 (c_get_switch_bindings): New function.
3360 (c_release_switch_bindings): New function.
3361 (c_check_switch_jump_warnings): New function.
3362 (start_function): Don't set label_context_stack_se or
3363 label_context_stack_vm.
3364 (finish_function): Likewise.
3365 * c-typeck.c (label_context_stack_se): Don't define.
3366 (label_context_stack_vm): Don't define.
3367 (c_finish_goto_label): Call lookup_label_for_goto rather than
3368 lookup_label. Don't give errors about jumping into a statement
3369 expression or the scope of a variably modified type. Don't set
3370 label_context_stack_se or label_context_stack_vm.
3371 (struct c_switch): Remove blocked_stmt_expr and blocked_vm
3372 fields. Add bindings field.
3373 (c_start_case): Don't set deleted fields. Set bindings field.
3374 (do_case): Rework order of tests. Don't check blocked_stmt_expr
3375 or blocked_vm. Call c_check_switch_jump_warnings.
3376 (c_finish_case): Don't test blocked_stmt_expr field. Call
3377 c_release_switch_bindings.
3378 (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
3379 c_switch_stack. Don't walk label_context_stack_se labels. Don't
3380 set label_context_stack_se. Call c_bindings_start_stmt_expr.
3381 (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
3382 c_switch_stack. Don't walk label_context_stack_se labels. Don't
3383 set label_context_stack_se. Call c_bindings_end_stmt_expr.
3384 (c_begin_vm_scope, c_end_vm_scope): Don't define.
3385 * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
3386 (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
3387 (C_DECL_UNJUMPABLE_VM): Don't define.
3388 (C_DECL_UNDEFINABLE_VM): Don't define.
3389 (struct c_label_list): Don't define.
3390 (struct c_label_context_se): Don't define.
3391 (struct c_label_context_vm): Don't define.
3392 (struct c_spot_bindings): Declare.
3393 (c_bindings_start_stmt_expr): Declare.
3394 (c_bindings_end_stmt_expr): Declare.
3395 (lookup_label_for_goto): Declare.
3396 (c_get_switch_bindings, c_release_switch_bindings): Declare.
3397 (c_check_switch_jump_warnings): Declare.
3398 (label_context_stack_se, label_context_stack_vm): Don't declare.
3399 (c_finish_goto_label): Update declaration.
3400 (c_begin_vm_scope, c_end_vm_scope): Don't declare.
3401 * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
3402 (Warning Options): Document -Wjump-misses-init.
3404 2009-06-15 Jakub Jelinek <jakub@redhat.com>
3406 * tree-object-size.c (addr_object_size): Fix a pasto in the last
3409 2009-06-15 Rafael Avila de Espindola <espindola@google.com>
3411 * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
3413 2009-06-15 Aldy Hernandez <aldyh@redhat.com>
3415 * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
3417 2009-06-15 Aldy Hernandez <aldyh@redhat.com>
3419 * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
3421 2009-06-15 Rafael Avila de Espindola <espindola@google.com>
3423 * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
3424 Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
3425 * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
3426 * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
3427 * dwarf2asm.c (dw2_force_const_mem): Update call to
3429 * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
3430 (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
3431 * langhooks.c (lhd_comdat_group): Remove.
3432 * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
3433 * tree.h (DECL_COMDAT_GROUP): New.
3434 (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
3435 (tree_decl_with_vis): Add comdat_group. Remove one_only.
3436 (make_decl_one_only): Change signature.
3437 * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
3439 (make_decl_one_only): Change signature.
3440 (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
3442 2009-06-15 Richard Guenther <rguenther@suse.de>
3445 * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
3447 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
3449 * tree-ssa-math-opts.c: Remove extra divide.
3451 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
3453 * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
3455 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
3457 * passes.c: Add bswap pass.
3458 * tree-pass.h: Add pass_optimize_bswap declaration.
3459 * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
3460 Include rtl.h, expr.h and optabs.h for optab_handler check.
3461 (struct symbolic_number, pass_optimize_bswap): New definition.
3462 (do_shift_rotate, verify_symbolic_number_p): New functions.
3463 (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
3464 (gate_optimize_bswap): New function.
3465 * tree.c (widest_int_cst_value): New function.
3466 * tree.h (widest_int_cst_value): Prototype added.
3468 2009-06-14 Steven Bosscher <steven@gcc.gnu.org>
3470 * cfgcleanup.c (old_insns_match_p): Remove code to substitute
3471 REG_EQUAL/REG_EQUIV notes.
3473 2009-06-14 Richard Guenther <rguenther@suse.de>
3476 * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
3477 has its address taken if NRV was applied and it is addressable.
3478 * tree-ssa-structalias.c (get_constraint_for_address_of): New
3479 function split out from ...
3480 (get_constraint_for_1): ... here.
3481 (handle_rhs_call): Use it to mark the return slot escaped if
3482 it is addressable and NRV was applied.
3484 2009-06-13 Aldy Hernandez <aldyh@redhat.com>
3486 * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
3487 Change first argument type to location_t.
3488 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
3489 Do not set input_location.
3490 Use loc instead of input_location throughout.
3492 2009-06-13 Richard Guenther <rguenther@suse.de>
3494 PR tree-optimization/40421
3495 * tree-predcom.c (should_unroll_loop_p): Remove.
3496 (tree_predictive_commoning_loop): Use can_unroll_loop_p.
3498 2009-06-13 Michael Meissner <meissner@linux.vnet.ibm.com>
3500 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3501 Add location argument.
3503 2009-06-13 Aldy Hernandez <aldyh@redhat.com>
3505 * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
3507 * config/s390/s390.c (s390_build_builtin_va_list): Same.
3508 (s390_gimplify_va_arg): Pass location to create_artificial_label.
3509 * config/spu/spu-protos.h: Add location to
3510 spu_resolve_overloaded_builtin.
3511 * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
3512 spu_build_builtin_va_list.
3513 * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
3514 argument. Pass location to build_function_call_vec.
3515 * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
3517 (emit_fpu_switch): Same.
3518 (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
3519 * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
3520 to build_decl and create_artificial_label.
3521 (xtensa_gimplify_va_arg_expr): Same.
3522 * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
3523 (xstormy16_gimplify_va_arg_expr): Same.
3524 * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
3525 * config/arm/arm.c (arm_build_builtin_va_list): Same.
3526 * config/mips/mips.c (mips_build_builtin_va_list): Same.
3527 (mips16_build_function_stub): Same.
3528 (mips16_build_call_stub): Same.
3530 2009-06-13 Richard Earnshaw <rearnsha@arm.com>
3533 * arm/constraints.md (Pa, Pb): New constraints.
3534 * arm/arm.md (thumb1_addsi3): Support more complex additions. Add a
3535 split pattern to deal with them.
3537 2009-06-13 Joerg Sonnenberger <joerg@britannica.bec.de>
3539 * doc/invoke.texi: Add missing option -Wp,OPTION in list,
3540 fix index entry for -Xpreprocessor.
3542 2009-06-12 Aldy Hernandez <aldyh@redhat.com>
3544 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3545 Add location argument to build_decl call.
3546 * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
3547 (rs6000_init_builtins): Same.
3548 (spe_init_builtins): Same.
3549 (rs6000_gimplify_va_arg): Add location argument to
3550 create_artificial_label call.
3552 2009-06-12 Steven Bosscher <steven@gcc.gnu.org>
3554 * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
3555 * combine-stack-adj.c (pass_stack_adjustments): Use it.
3556 * Makefile.in: Fix GGC dependency for gcse.o.
3558 2009-06-12 Aldy Hernandez <aldyh@redhat.com>
3560 * tree-pretty-print.c (dump_generic_node): Dump column numbers.
3561 * gimple-pretty-print.c (dump_gimple_stmt): Same.
3562 * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
3564 * c-parser.c (c_parser_binary_expression): Use current column while
3565 building binary operations.
3566 * common.opt (fshow-column): Enable by default.
3567 * tree-vrp.c (check_array_ref): Use warning_at.
3568 (check_array_bounds): Use location from call back if expr has no
3570 * tree.h: Add location argument to maybe_fold_*.
3571 * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
3572 (maybe_fold_offset_to_array_ref): Add location argument and use it.
3573 (maybe_fold_offset_to_component_ref): Same.
3574 (maybe_fold_offset_to_reference): Same.
3575 (maybe_fold_offset_to_address): Same.
3576 (maybe_fold_stmt_indirect): Same.
3577 (maybe_fold_stmt_addition): Same.
3578 (fold_stmt_r): Pass location to maybe_fold_*.
3579 (fold_gimple_assign): Same.
3580 * c-tree.h: Add location argument to finish_decl,
3581 default_function_array_conversion, store_init_value.
3582 * c-decl.c (define_label): Use error_at.
3583 (c_make_fname_decl): Pass location to finish_decl.
3584 (finish_decl): New location argument.
3585 (build_compound_literal): Pass location to store_init_value.
3586 (grokdeclarator): Pass location to finish_decl.
3588 * c-typeck.c (array_to_pointer_conversion): New location argument.
3589 (function_to_pointer_conversion): Same.
3590 (default_function_array_conversion): Same.
3591 (parser_build_unary_op): Pass location to overflow_warning.
3592 (parser_build_binary_op): Same. Use warning_at.
3593 (build_unary_op): Pass location to array_to_pointer_conversion.
3594 (build_c_cast): Pass location to digest_init.
3595 (build_modify_expr): New location argument.
3596 (convert_for_assignment): Same.
3597 (store_init_value): Same.
3598 (digest_init): Same.
3599 (output_init_element): Pass location to digest_init and
3600 array_to_pointer_conversion.
3601 (c_finish_return): Pass location to convert_for_assignment.
3602 * gimplify.c (gimplify_conversion): Pass location to
3603 maybe_fold_offset_to_address.
3604 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
3605 to maybe_fold_stmt_addition.
3606 * c-omp.c (c_finish_omp_atomic): Pass new location to
3608 (c_finish_omp_for): Same.
3609 * c-common.c (overflow_warning): New argument.
3610 * c-common.h: New argument to build_modify_expr, overflow_warning.
3611 * c-parser.c (c_parser_declaration_or_fndef): Pass location to
3613 (c_parser_initializer): Pass location to
3614 default_function_array_conversion.
3615 (c_parser_initelt): Same.
3616 (c_parser_initval): Same.
3617 (c_parser_asm_operands): Same.
3618 (c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
3619 (c_parser_conditional_expression): Same.
3620 (c_parser_binary_expression): Add location info to stack. Use it.
3621 (c_parser_unary_expression): Pass location to
3622 default_function_array_conversion, parser_build_unary_op,
3623 build_indirect_ref, c_parser_postfix_expression_after_primary.
3624 (c_parser_postfix_expression_after_primary): New location argument.
3626 (c_parser_expression_conv): Pass location to
3627 default_function_array_conversion.
3628 (c_parser_expr_list): Same.
3629 (c_parser_omp_atomic): Same.
3630 (c_parser_omp_for_loop): Same.
3631 * c-tree.h: (struct c_declarator): Add comment to id_loc.
3632 (build_array_declarator): New argument.
3633 * c-decl.c (build_array_declarator): Add location argument.
3634 (grokdeclarator): Set id_loc for cdk_array.
3635 * c-parser.c (c_parser_direct_declarator_inner): Pass location to
3636 build_array_declarator.
3637 * tree.c (build_omp_clause): Add location argument.
3638 * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
3639 (OMP_CLAUSE_LOCATION): New macro.
3640 (struct tree_omp_clause): Add location field.
3641 (build_omp_clause): Add argument.
3642 * testsuite/gcc.dg/gomp/for-1.c: Fix column.
3643 * cp/pt.c (tsubst_omp_for_iterator): Pass location to
3645 * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
3646 (cp_parser_omp_clause_collapse): Same.
3647 (cp_parser_omp_clause_default): Same.
3648 (cp_parser_omp_clause_if): Same.
3649 (cp_parser_omp_clause_nowait): Same.
3650 (cp_parser_omp_clause_num_threads): Same.
3651 (cp_parser_omp_clause_ordered): Same.
3652 (cp_parser_omp_clause_schedule): Same.
3653 (cp_parser_omp_clause_untied): Same.
3654 (cp_parser_omp_for_loop): Same.
3655 (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
3656 * c-tree.h (c_start_case): Add location argument.
3657 (c_process_expr_stmt): Same.
3658 (c_finish_goto_*): Same.
3659 * tree-parloops.c (initialize_reductions): Pass location to
3661 (create_parallel_loop): Same.
3662 * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
3663 (gfc_trans_omp_reduction_list): Same.
3664 (gfc_trans_omp_clauses): Same.
3665 (gfc_trans_omp_do): Same.
3666 * c-typeck.c (c_finish_goto_label): Same.
3667 (c_finish_goto_ptr): New location argument.
3668 (c_start_case): Same.
3669 (emit_side_effect_warnings): Same.
3670 (c_process_expr_stmt): Same.
3671 (c_finish_stmt_expr): Same.
3672 (c_finish_omp_clauses): Use error_at instead of error.
3673 * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
3675 * c-omp.c (c_split_parallel_clauses): New location argument.
3676 * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
3677 to build_omp_clause.
3678 (convert_local_reference_stmt): Same.
3679 (convert_gimple_call): Same.
3680 * c-common.h (c_split_parallel_clauses): New argument.
3681 * c-parser.c (c_parser_statement_after_labels): Pass location to
3682 c_finish_goto_label.
3683 (c_parser_switch_statement): Pass location to c_start_case.
3684 (c_parser_for_statement): Pass location to c_finish_expr_stmt,
3685 and c_process_expr_stmt.
3686 (c_parser_omp_variable_list): Add location argument.
3687 (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
3688 (c_parser_omp_clause_default): Same.
3689 (c_parser_omp_clause_if): Same.
3690 (c_parser_omp_clause_num_threads): Same.
3691 (-c_parser_omp_clause_ordered): Same.
3692 (c_parser_omp_clause_reduction): Pass location to
3693 c_parser_omp_variable_list.
3694 (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
3695 (c_parser_omp_clause_untied): Same.
3696 (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
3697 (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
3699 * c-tree.h (check_for_loop_decls, undeclared_variable,
3700 build_component_ref, build_array_ref, build_external_ref,
3701 c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
3702 build_conditional_expr, build_compound_expr, c_cast_expr,
3703 build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
3704 c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
3706 * c-semantics.c (build_stmt): Same.
3707 (build_case_label): Same.
3708 * c-decl.c (c_finish_incomplete_decl): Pass location on down.
3709 (undeclared_variable): New argument.
3711 (lookup_label): Pass location on down.
3712 (define_label): Same.
3713 (finish_decl): Same.
3714 (build_compound_literal): Same.
3715 (finish_struct): Same.
3716 (finish_function): Do not set location here.
3717 (check_for_loop_decls): New argument.
3718 * tree.c (save_expr): Set location.
3719 (build_empty_stmt): New argument.
3720 * tree.h (build_empty_stmt): New argument to build_empty_stmt.
3721 (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
3722 * builtins.c (gimplify_va_arg_expr): Use locations.
3723 (expand_builtin_sync_operation): Same.
3724 * c-typeck.c (build_component_ref): New argument.
3725 (build_array_ref): Same.
3726 (build_external_ref): Same.
3727 (c_expr_sizeof_expr): Same.
3728 (c_expr_sizeof_type): Same.
3729 (parser_build_unary_op): Same.
3730 (build_conditional_expr): Same.
3731 (build_compound_expr): Pass location on down.
3732 (build_compound_expr): New argument.
3733 (build_c_cast): Same.
3734 (c_cast_expr): Same.
3735 (build_asm_expr): Same.
3736 (c_finish_return): Same.
3737 (c_process_expr_stmt): Pass location on down.
3738 (c_finish_stmt_expr): New argument.
3739 (push_clenaup): Same.
3740 (c_finish_omp_parallel): Same.
3741 (c_finish_omp_task): Same.
3742 * gimplify.c (gimplify_call_expr): Pass location on down.
3743 * c-omp.c (c_finish_omp_master): New argument.
3744 (c_finish_omp_critical): Same.
3745 (c_finish_omp_ordered): Same.
3746 (c_finish_omp_barrier): Same.
3747 (-c_finish_omp_taskwait): Same.
3748 (c_finish_omp_atomic): Same.
3749 (c_finish_omp_flush): Same.
3750 * tree-inline.c (copy_tree_body_r): Pass location on down.
3751 (inline_forbidden_p): Remove use of input_location.
3752 * c-gimplify.c (c_build_bind_expr): New argument.
3753 * c-common.c (c_common_truthvalue_conversion): Pass location on down.
3754 (c_sizeof_or_alignof_type): New argument.
3755 (c_alignof_expr): Same.
3756 (build_va_arg): Same.
3757 (c_add_case_label): Same.
3758 * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
3759 c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
3760 c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
3761 c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
3762 c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
3763 c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
3765 * stub-objc.c (objc_build_selector_expr): Same.
3766 (objc_build_throw_stmt): Same.
3767 * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
3768 (c_parser_initelt): Same.
3769 (c_parser_compound_statement): Same.
3770 (c_parser_compound_statement_nostart): Same.
3771 (c_parser_label): Same.
3772 (c_parser_statement_after_labels): Same.
3773 (c_parser_if_body): Same.
3774 (c_parser_else_body): Same.
3775 (c_parser_if_statement): Same.
3776 (c_parser_switch_statement): Same.
3777 (c_parser_while_statement): Same.
3778 (c_parser_do_statement): Same.
3779 (c_parser_for_statement): Same.
3780 (c_parser_asm_statement): Same.
3781 (c_parser_conditional_expression): Same.
3782 (c_parser_binary_expression): Same.
3783 (c_parser_cast_expression): Same.
3784 (c_parser_unary_expression): Same.
3785 (c_parser_sizeof_expression): Same.
3786 (c_parser_alignof_expression): Same.
3787 (c_parser_postfix_expression): Same.
3788 (c_parser_expression): Same.
3789 (c_parser_objc_receiver): Same.
3790 (c_parser_omp_variable_list): Same.
3791 (c_parser_omp_structured_block): Same.
3792 (c_parser_omp_atomic): New argument.
3793 (c_parser_omp_barrier): Same.
3794 (c_parser_omp_critical): Same.
3795 (c_parser_omp_flush): Pass location on down.
3796 (c_parser_omp_for_loop): New argument.
3797 (c_parser_omp_for): Same.
3798 (c_parser_omp_master): Same.
3799 (c_parser_omp_ordered): Same.
3800 (c_parser_omp_sections_scope): Same.
3801 (c_parser_omp_sections): Same.
3802 (c_parser_omp_parallel): Same.
3803 (c_parser_omp_single): Same.
3804 (c_parser_omp_task): Same.
3805 (c_parser_omp_taskwait): Pass location on down.
3806 (c_parser_omp_construct): Same.
3807 (c_parser_omp_threadprivate): Same.
3808 * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
3809 builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
3810 tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
3811 c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
3812 c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
3813 emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
3814 rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
3815 tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
3816 config/i386/i386.c, stmt.c:
3817 Add location argument to the following function definitions and/or
3818 function calls: build_decl, objcp_start_struct, objcp_finish_struct,
3819 start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
3820 cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
3821 build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
3822 do_case, c_finish_bc_stmt, build_compound_literal,
3823 build_function_call.
3824 * c-decl.c (build_compound_literal): Add location argument.
3825 Make all diagnostic calls use location.
3826 (start_struct): Same.
3827 (finish_struct): Same.
3829 (build_enumerator): Same.
3830 (start_function): Same.
3831 (grokdeclarator): Make all diagnostic calls use location.
3832 (store_parm_decls_oldstyle): Same.
3833 * c-typeck.c (build_function_call): Add location argument.
3834 Make all diagnostic calls use location.
3836 (c_finish_bc_stmt): Same.
3837 * tree-nested.c (get_trampoline_type): Add argument.
3838 Pass location to build_decl.
3839 (lookup_tramp_for_decl): Pass location to get_trampoline_type.
3840 * rtl.h (RTL_LOCATION): New.
3841 * c-common.c (c_add_case_label): Add location argument.
3842 Make all diagnostic calls use location.
3843 * c-common.h: Add location argument to make_fname_decl, do_case,
3844 c_add_case_label, build_function_call, resolve_overloaded_builtin.
3845 * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
3846 Set it appropriately for every case. Pass enum_loc to start_enum
3847 call. Pass value_loc first to build_enumerator. Pass enum_loc to
3849 (c_parser_struct_or_union_specifier): Save location. Use it for
3850 start_struct, finish_struct, and parser_xref_tag.
3852 2009-06-12 Ian Lance Taylor <iant@google.com>
3854 * fold-const.c (fold_unary): Rename local variable and to and_expr.
3856 * c-opts.c (c_common_handle_option): For -Wc++-compat set
3857 cpp_opts->warn_cxx_operator_names.
3859 2009-06-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
3862 * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
3863 is returns NULL and OP is a VCE, look through the VCE.
3865 2009-06-12 Ian Lance Taylor <iant@google.com>
3868 * collect2.c (main): Use CONST_CAST2 in code inside #if
3869 LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
3871 2009-06-12 Joey Ye <joey.ye@intel.com>
3874 * cfgexpand.c (get_decl_align_unit): Update
3875 max_used_stack_slot_alignment with align instead of
3876 stack_alignment_needed.
3878 * function.c (assign_stack_local_1): Update
3879 max_used_stack_slot_alignment with alignment_in_bits instead
3880 of stack_alignment_needed.
3881 (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
3884 2009-06-12 Jakub Jelinek <jakub@redhat.com>
3886 * dwarf2out.c (last_var_location_insn): New variable.
3887 (dwarf2out_end_epilogue): Clear last_var_location_insn.
3888 (dwarf2out_var_location): Don't record anything after last real
3889 insn. Only change labels if there were any real instructions
3890 in between last note and this one, or if changed sections.
3892 2009-06-11 Richard Henderson <rth@redhat.com>
3894 * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
3895 note when storing the frame pointer in a register.
3896 (FRP): Don't redefine to nothing for epilogue.
3897 (alpha_expand_epilogue): Mark register and sp restores.
3898 (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
3900 * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
3901 when gen_lowpart is needed.
3903 2009-06-11 Richard Henderson <rth@redhat.com>
3905 * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
3907 * dwarf2out.c (need_data_align_sf_opcode): New.
3908 (div_data_align): Move earlier.
3909 (def_cfa_1, reg_save): Use it.
3911 2009-06-11 H.J. Lu <hongjiu.lu@intel.com>
3913 * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
3914 (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
3915 (ix86_handle_option): Handle OPT_mcrc32.
3916 (ix86_target_string): Add -mcrc32.
3917 (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
3919 * config/i386/i386.h (TARGET_CRC32): New.
3921 * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
3922 (sse4_2_crc32di): Likewise.
3924 * config/i386/i386.opt (mcrc32): New.
3926 * doc/invoke.texi: Document -mcrc32.
3928 2009-06-11 Richard Henderson <rth@redhat.com>
3930 * common.opt (gdwarf-): Accept a version number.
3931 * doc/invoke.texi (gdwarf-): Update docs.
3932 * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
3933 * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
3934 version level, and record it.
3936 * dwarf2.h (DW_CIE_VERSION): Remove.
3937 * dwarf2out.c (DWARF_VERSION): Remove.
3938 (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
3939 (output_call_frame_info): Use CIE version 3 for dwarf3,
3940 or if the return register column is out of range for version 1.
3941 (dwarf_stack_op_name): Add all dwarf3 values.
3942 (DEBUG_PUBTYPES_SECTION): New.
3943 (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
3944 encoding change for dwarf3.
3945 (output_die) [dw_val_class_die_ref]: Likewise.
3946 (output_compilation_unit_header): Emit correct version for dwarf3.
3947 (output_line_info): Likewise.
3948 (output_pubnames): Update for DWARF_VERSION removal.
3949 (output_aranges): Likewise.
3950 (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
3951 (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
3952 (dwarf2out_finish): Likewise.
3954 2009-06-11 David Daney <ddaney@caviumnetworks.com>
3956 * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
3959 2009-06-11 David Daney <ddaney@caviumnetworks.com>
3962 * doc/extend.texi ( __builtin_unreachable): Document new builtin.
3963 * builtins.c (expand_builtin_unreachable): New function.
3964 (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
3965 * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
3966 * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
3968 * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
3969 searching for missing barriers.
3971 2009-06-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
3973 * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov