Richard Guenther [Mon, 18 Apr 2011 11:59:34 +0000 (11:59 +0000)]
gimple.h (gimple_call_addr_fndecl): New function.
2011-04-18 Richard Guenther <rguenther@suse.de>
* gimple.h (gimple_call_addr_fndecl): New function.
(gimple_call_fndecl): Use it.
* gimple-fold.c (gimple_fold_call): Fold away OBJ_TYPE_REFs
for direct calls.
* tree-ssa-ccp.c (ccp_fold_stmt): Remove OBJ_TYPE_REF folding.
* tree-ssa-pre.c (eliminate): Also simplify indirect OBJ_TYPE_REFs.
re PR target/48252 (ARM neon: problem with consecutive vzip, vuzp and vtrn)
PR target/48252
* config/arm/arm.c (neon_emit_pair_result_insn): Swap arguments
to match neon_vzip/vuzp/vtrn_internal.
* config/arm/neon.md (neon_vtrn<mode>_internal): Make both
outputs explicitly dependent on both inputs.
(neon_vzip<mode>_internal, neon_vuzp<mode>_internal): Likewise.
Co-Authored-By: Ira Rosen <ira.rosen@linaro.org>
From-SVN: r172639
Jakub Jelinek [Mon, 18 Apr 2011 06:55:13 +0000 (08:55 +0200)]
re PR tree-optimization/48616 (-ftree-vectorize -mxop miscompiles right shift)
PR tree-optimization/48616
* tree-vect-stmts.c (vectorizable_shift): If SLP, determine
whether the shift is by scalar or vector based on whether all SLP
scalar stmts have the same rhs.
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
2011-04-18 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* iresolve.c (gfc_resolve_image_index): Set ts.type.
* simplify.c (gfc_simplify_image_index): Don't abort if the
* bounds
are not known at compile time and handle -fcoarray=lib.
* trans-intrinsics.c (gfc_conv_intrinsic_function): Handle
IMAGE_INDEX.
(conv_intrinsic_cobound): Fix comment typo.
(trans_this_image): New function.
* trans-array.c (gfc_unlikely): Move to trans.c.
* trans.c (gfc_unlikely): Function moved from trans-array.c.
(gfc_trans_runtime_check): Use it.
* trans-io.c (gfc_trans_io_runtime_check): Ditto.
* trans.h (gfc_unlikely): Add prototype.
Paul Thomas [Mon, 18 Apr 2011 05:07:38 +0000 (05:07 +0000)]
re PR fortran/48462 (realloc on assignment: matmul Segmentation Fault with Allocatable Array)
2011-04-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48462
* trans-expr.c (fcncall_realloc_result): Renamed version of
realloc_lhs_bounds_for_intrinsic_call that does not touch the
descriptor bounds anymore but makes a temporary descriptor to
hold the result.
(gfc_trans_arrayfunc_assign): Modify the reference to above
renamed function.
2011-04-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48462
* gfortran.dg/realloc_on_assign_7.f03: New test.
Jerry DeLisle [Mon, 18 Apr 2011 03:48:25 +0000 (03:48 +0000)]
re PR libfortran/48602 (Invalid F conversion of G descriptor for values close to powers of 10)
2011-04-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/48602
* io/write_float.def (output_float_FMT_G): Use current rounding mode
to set the rounding parameters. (output_float): Skip rounding
if value is zero.
Daniel Krugler [Sun, 17 Apr 2011 21:46:11 +0000 (21:46 +0000)]
PR libstdc++/48635 (again)
2011-04-17 Daniel Krugler <daniel.kruegler@googlemail.com>
Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/48635 (again)
* include/bits/unique_ptr.h (unique_ptr<>::unique_ptr(unique_ptr<>&&),
unique_ptr<_Tp[]>::unique_ptr(unique_ptr<>&&),
unique_ptr<>::operator=(unique_ptr<>&&),
unique_ptr<_Tp[]>::operator=(unique_ptr<>&&)): Use forward<_Ep>, not
forward<_Dp>, to forward the deleter.
* testsuite/20_util/unique_ptr/assign/48635_neg.cc: New.
Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>
From-SVN: r172619
* cgrpah.h (struct cgraph_node): Remove finalized_by_frontend.
* cgrpahunit.c (cgraph_finalize_function): Do not set finalized_by_frontend.
* lto-cgraph.c (lto_output_node, input_overwrite_node): Do not stream
finalized_by_frontend.
Eric Botcazou [Sun, 17 Apr 2011 14:57:14 +0000 (14:57 +0000)]
re PR lto/48538 (profiled LTO bootstrap failure with Ada)
PR lto/48538
* lto-cgraph.c (merge_profile_summaries): Check that lto_file_data
is non-null before accessing it.
(input_cgraph): Remove trailing spaces.
Jan Hubicka [Sun, 17 Apr 2011 14:22:20 +0000 (16:22 +0200)]
lto-symtab.c (lto_cgraph_replace_node): When call statement is present, also set gimple_call_set_cannot_inline.
* lto-symtab.c (lto_cgraph_replace_node): When call statement is
present, also set gimple_call_set_cannot_inline.
* ipa-inline.c: Update toplevel comment.
(MAX_TIME): Remove.
(cgraph_clone_inlined_nodes): Fix linebreaks.
(cgraph_check_inline_limits): Restructure to ...
(caller_growth_limits): ... this one; be more tolerant
on growth in nested inline chains; add explanatory comment;
fix stack accounting thinko introduced by previous patch.
(cgraph_default_inline_p): Remove.
(report_inline_failed_reason): New function.
(can_inline_edge_p): New function.
(can_early_inline_edge_p): New function.
(leaf_node_p): Move upwards in file.
(want_early_inline_function_p): New function.
(want_inline_small_function_p): New function.
(want_inline_self_recursive_call_p): New function.
(cgraph_edge_badness): Rename to ...
(edge_badness) ... this one; fix linebreaks.
(update_edge_key): Update call of edge_baddness; add
detailed dump about queue updates.
(update_caller_keys): Use can_inline_edge_p and
want_inline_small_function_p.
(cgraph_decide_recursive_inlining): Rename to...
(recursive_inlining): Use can_inline_edge_p and
want_inline_self_recursive_call_p; simplify and
remove no longer valid FIXME.
(cgraph_set_inline_failed): Remove.
(add_new_edges_to_heap): Use can_inline_edge_p and
want_inline_small_function_p.
(cgraph_decide_inlining_of_small_functions): Rename to ...
(inline_small_functions): ... this one; cleanup; use
can/want predicates; cleanup debug ouput; work edges
till fibheap is exhausted and do not stop once unit
growth is reached; remove later loop processing remaining
edges.
(cgraph_flatten): Rename to ...
(flatten_function): ... this one; use can_inline_edge_p
and can_early_inline_edge_p predicates.
(cgraph_decide_inlining): Rename to ...
(ipa_inline): ... this one; remove unreachable nodes before
inlining functions called once; simplify the pass.
(cgraph_perform_always_inlining): Rename to ...
(inline_always_inline_functions): ... this one; use
DECL_DISREGARD_INLINE_LIMITS; use can_inline_edge_p
predicate
(cgraph_decide_inlining_incrementally): Rename to ...
(early_inline_small_functions): ... this one; simplify
using new predicates; cleanup; make dumps prettier.
(cgraph_early_inlining): Rename to ...
(early_inliner): newer inline regular functions into always-inlines;
fix updating of call stmt summaries.
(pass_early_inline): Update for new names.
(inline_transform): Fix formating.
(gate_cgraph_decide_inlining): Rename to ...
(pass_ipa_inline): ... this one.
* ipa-inline.h (inline_summary): Remove disregard_inline_limits.
* ipa-inline-analysis.c (dump_inline_summary): Update.
(compute_inline_parameters): Do not compute disregard_inline_limits;
look for mismatching arguments.
(estimate_growth): Fix handlig of non-trivial self recursion.
(inline_read_summary): Do not read info->disregard_inline_limits.
(inline_write_summary): Do not write info->disregard_inline_limits.
* tree-inline.c (inline_forbidden_into_p, tree_can_inline_p): Remove and
move all checks into can_inline_edge_p predicate; re-enable code comparing
optimization levels.
(expand_call_inline): Do not test inline_forbidden_into_p.
* Makefile.in (ipa-inline.o): Update arguments.
Michael Matz [Sun, 17 Apr 2011 01:18:51 +0000 (01:18 +0000)]
re PR tree-optimization/48622 (ICE: in estimate_size_after_inlining, at ipa-inline-analysis.c:425 with -flto -finline-small-functions -fno-early-inlining)
PR tree-optimization/48622
PR lto/48645
* ipa-inline-analysis.c (inline_read_summary): Read size/time
in same order as they're written.
* config/i386/sse.md (V16): New mode iterator.
(VI1, VI8): Ditto.
(AVXMODEQI, AVXMODEDI): Remove.
(sse2, sse3): New mode attribute.
(mov<mode>): Use V16 mode iterator.
(*mov<mode>_internal): Merge with *avx_mov<mode>_internal.
(push<mode>1): Use V16 mode iterator.
(movmisalign<mode>): Ditto.
(<sse>_movu<ssemodesuffix><avxmodesuffix>): Merge from
<sse>_movu<ssemodesuffix> and avx_movu<ssemodesuffix><avxmodesuffix>.
(*<sse>_movu<ssemodesuffix><avxmodesuffix>): Merge from
*<sse>_movu<ssemodesuffix> and *avx_movu<ssemodesuffix><avxmodesuffix>.
(<sse2>_movdqu<avxmodesuffix>): Merge from sse2_movdqu and
avx_movdqu<avxmodesuffix>.
(*<sse2>_movdqu<avxmodesuffix>): Merge from *sse2_movdqu and
*avx_movdqu<avxmodesuffix>.
(<sse3>_lddqu<avxmodesuffix>) Merge from sse3_lddqu and
avx_lddqu<avxmodesuffix>.
(<sse>_movnt<mode>): Merge with avx_movnt<AVXMODEF2P:mode>.
(<sse2>_movnt<mode>): Merge from sse2_movntv2di and
avx_movnt<AVXMODEDI:mode>.
* config/i386/i386.c (ix86_expand_vector_move_misalign): Update for
renamed sse_movups, sse2_movupd and sse2_movdqu patterns.
Martin Jambor [Fri, 15 Apr 2011 18:20:46 +0000 (20:20 +0200)]
re PR middle-end/48601 (ICE in lower_emutls_function_body, at tree-emutls.c:623)
2011-04-15 Martin Jambor <mjambor@suse.cz>
PR middle-end/48601
* tree-emutls.c (lower_emutls_function_body): Call
cgraph_get_create_node instead of cgraph_get_node. Do not assert the
result is non-NULL.
Richard Guenther [Fri, 15 Apr 2011 14:02:41 +0000 (14:02 +0000)]
re PR tree-optimization/48290 (FAIL: gcc.dg/vect/pr38529.c, ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1072)
2011-04-15 Richard Guenther <rguenther@suse.de>
PR tree-optimization/48290
* tree-ssa-copy.c (copy_prop_visit_phi_node): Propagate constants.
Properly decide inhibiting propagation based on the valueized
operand. Do loop-closed SSA form preserving here ...
(init_copy_prop): ... not here.
combine.c (subst, [...]): Add new argument, use it to track processing of conditionals.
* combine.c (subst, combine_simlify_rtx): Add new argument, use it
to track processing of conditionals. Update all callers.
(try_combine, simplify_if_then_else): Update.
recog.h (insn_operand_data): Add an "allows_mem" field.
gcc/
* recog.h (insn_operand_data): Add an "allows_mem" field.
* genoutput.c (output_operand_data): Initialize it.
* optabs.c (maybe_legitimize_operand_same_code): New function.
(maybe_legitimize_operand): Use it when matching the original
op->value.
Jakub Jelinek [Thu, 14 Apr 2011 21:30:37 +0000 (23:30 +0200)]
re PR target/48605 (gcc.target/i386/sse4_1-insertps-2.c FAILs with -mtune=geode - instruction insertps with memory operands behaves differently)
PR target/48605
* config/i386/sse.md (sse4_1_insertps): If operands[2] is a MEM,
offset it as needed based on top 2 bits in operands[3], change
MEM mode to SFmode and mask those 2 bits away from operands[3].
* gcc.target/i386/sse4_1-insertps-3.c: New test.
* gcc.target/i386/sse4_1-insertps-4.c: New test.
* gcc.target/i386/avx-insertps-3.c: New test.
* gcc.target/i386/avx-insertps-4.c: New test.
Nicola Pero [Thu, 14 Apr 2011 19:34:06 +0000 (19:34 +0000)]
In gcc/c-family/: 2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/c-family/:
2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
* stub-objc.c (objc_declare_protocols): Renamed to
objc_declare_protocol.
* c-objc.h: Likewise.
In gcc/:
2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
* c-parser.c (c_parser_objc_protocol_definition): Updated for
change from objc_declare_protocols() to objc_declare_protocol().
In gcc/objc/:
2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
* objc-act.c (objc_declare_protocols): Renamed to
objc_declare_protocol. Changed first argument to be an identifier
instead of a tree chain of identifiers, so that callers don't have
to create a temporary tree chain.
In gcc/cp/:
2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
* parser.c (cp_parser_objc_protocol_declaration): Updated for
change from objc_declare_protocols() to objc_declare_protocol().
* cp-tree.def (SWITCH_STMT): Add an extra operand.
* cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
* cp-tree.h (SWITCH_STMT_SCOPE): Define.
* semantics.c (begin_switch__stmt): Pass scope to build_stmt.
(finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
* config/i386/sse.md (sse4_1): New mode attribute.
(<sse4_1>_blend<ssemodesuffix><avxmodesuffix>): Macroize from
avx_blend<ssemodesuffix><avxmodesuffix> and
sse4_1_blend<ssemodesuffix> using VF mode iterator.
(<sse4_1>_blendv<ssemodesuffix><avxmodesuffix>): Macroize from
avx_blendv<ssemodesuffix><avxmodesuffix> and
sse4_1_blendv<ssemodesuffix> using VF mode iterator.
(<sse4_1>_dp<ssemodesuffix><avxmodesuffix>): Macroize from
avx_dp<ssemodesuffix><avxmodesuffix> and
sse4_1_dp<ssemodesuffix> using VF mode iterator.
(sse4_1_mpsadbw): Merge with *avx_mpsadbw.
(sse4_1_packusdw): Merge with *avx_packusdw.
(sse4_1_pblendvb): Merge with *avx_pblendvb.
(sse4_1_pblendw): Merge with *avx_pblendw.
(avx_vtest<ssemodesuffix><avxmodesuffix>): Use VF mode iterator.
(<sse4_1>_round<ssemodesuffix><avxmodesuffix>): Macroize from
avx_round<ssemodesuffix>256 and sse4_1_round<ssemodesuffix> using
VF mode iterator.
(sse4_1_round<ssescalarmodesuffix>): Merge with
*avx_round<ssescalarmodesuffix>.
(aesenc): Merge with *avx_aesenc.
(aesenclast): Merge with *avx_aesenclast.
(aesdec): Merge with *avx_aesdec.
(aesdeclast): Merge with *avx_aesdeclast.
(pclmulqdq): Merge with *pclmulqdq.
* config/i386/predicates.md (reg_not_xmm0_operand_maybe_avx):
New predicate.
(nonimm_not_xmm0_operand_maybe_avx): Ditto.
* cp-tree.def (IF_STMT): Add an extra operand.
* cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
* cp-tree.h (IF_SCOPE): Define.
* semantics.c (begin_if_stmt): Pass scope to build_stmt.
(finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
cp-tree.def (FOR_STMT, [...]): Add an extra operand.
* cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
* cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
* cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
* semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
Use FOR_SCOPE instead of TREE_CHAIN.
(begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
(finish_for_stmt): Likewise.
Jason Merrill [Thu, 14 Apr 2011 14:59:58 +0000 (10:59 -0400)]
re PR c++/48446 (internal compiler error: in gimplify_var_or_parm_decl, at gimplify.c:1946)
PR c++/48446
* decl.c (compute_array_index_type): Use get_temp_regvar instead
of variable_size.
* init.c (get_temp_regvar): No longer static.
* cp-tree.h: Declare it.
Jan Hubicka [Thu, 14 Apr 2011 13:26:44 +0000 (15:26 +0200)]
cgraph.c (dump_cgraph_node): Do not dump inline summaries.
* cgraph.c (dump_cgraph_node): Do not dump inline summaries.
* cgraph.h (struct inline_summary): Move to ipa-inline.h
(cgraph_local_info): Remove inline_summary.
* ipa-cp.c: Include ipa-inline.h.
(ipcp_cloning_candidate_p, ipcp_estimate_growth,
ipcp_estimate_cloning_cost, ipcp_insert_stage): Use inline_summary
accesor.
* lto-cgraph.c (lto_output_node): Do not stream inline summary.
(input_overwrite_node): Do not set inline summary.
(input_node): Do not stream inline summary.
* ipa-inline.c (cgraph_decide_inlining): Dump inline summaries.
(cgraph_decide_inlining_incrementally): Do not try to estimate overall
growth; we do not have inline parameters computed for that anyway.
(cgraph_early_inlining): After inlining compute call_stmt_sizes.
* ipa-inline.h (struct inline_summary): Move here from ipa-inline.h
(inline_summary_t): New type and VECtor.
(debug_inline_summary, dump_inline_summaries): Declare.
(inline_summary): Use VOCtor.
(estimate_edge_growth): Kill hack computing call stmt size directly.
* lto-section-in.c (lto_section_name): Add inline section.
* ipa-inline-analysis.c: Include lto-streamer.h
(node_removal_hook_holder, node_duplication_hook_holder): New holders
(inline_node_removal_hook, inline_node_duplication_hook): New functions.
(inline_summary_vec): Define.
(inline_summary_alloc, dump_inline_summary, debug_inline_summary,
dump_inline_summaries): New functions.
(estimate_function_body_sizes): Properly compute size/time of outgoing calls.
(compute_inline_parameters): Alloc inline_summary; do not compute size/time
of incomming calls.
(estimate_edge_time): Avoid missing time summary hack.
(inline_read_summary): Read inline summary info.
(inline_write_summary): Write inline summary info.
(inline_free_summary): Free all hooks and inline summary vector.
* lto-streamer.h: Add LTO_section_inline_summary section.
* Makefile.in (ipa-cp.o, ipa-inline-analysis.o): Update dependencies.
* ipa.c (cgraph_remove_unreachable_nodes): Fix dump file formating.
* lto.c: Include ipa-inline.h
(add_cgraph_node_to_partition, undo_partition): Use inline_summary accessor.
(ipa_node_duplication_hook): Fix declaration.
* Make-lang.in (lto.o): Update dependencies.
tree-vectorizer.h (vect_strided_store_supported): Add a HOST_WIDE_INT argument.
gcc/
* tree-vectorizer.h (vect_strided_store_supported): Add a
HOST_WIDE_INT argument.
(vect_strided_load_supported): Likewise.
(vect_permute_store_chain): Return void.
(vect_transform_strided_load): Likewise.
(vect_permute_load_chain): Delete.
* tree-vect-data-refs.c (vect_strided_store_supported): Take a
count argument. Check that the count is a power of two.
(vect_strided_load_supported): Likewise.
(vect_permute_store_chain): Return void. Update after above changes.
Assert that the access is supported.
(vect_permute_load_chain): Likewise.
(vect_transform_strided_load): Return void.
* tree-vect-stmts.c (vectorizable_store): Update calls after
above interface changes.
(vectorizable_load): Likewise.
(vect_analyze_stmt): Don't check for strided powers of two here.
In gcc/cp/:
2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
* parser.c (cp_parser_objc_class_declaration): Updated for change
in objc_declare_class().
In gcc/objc/:
2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
* objc-act.c (objc_declare_class): Changed to take a single
identifier as argument instead of a tree list. This means callers
don't have to build temporary tree lists to call this function.
(synth_module_prologue): Updated calls to objc_declare_class.
tree-vectorizer.h (vect_create_data_ref_ptr): Add an extra type parameter.
gcc/
* tree-vectorizer.h (vect_create_data_ref_ptr): Add an extra
type parameter.
* tree-vect-data-refs.c (vect_create_data_ref_ptr): Add an aggr_type
parameter. Generalise code to handle arrays as well as vectors.
(vect_setup_realignment): Update accordingly.
* tree-vect-stmts.c (vectorizable_store): Likewise.
(vectorizable_load): Likewise.