2010-07-04 Richard Guenther <rguenther@suse.de>
PR middle-end/44809
* gimplify.c (gimplify_expr): Properly build a MEM_REF instead
of an INDIRECT_REF.
* g++.dg/torture/pr44809.C: New testcase.
From-SVN: r161803
2010-07-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/44596
PR fortran/44745
* trans-types.c (gfc_get_derived_type): Derived type fields
with the vtype attribute must have TYPE_REF_CAN_ALIAS_ALL set.
From-SVN: r161801
2010-07-04 Richard Guenther <rguenther@suse.de>
PR middle-end/44785
* tree-inline.c (initialize_inlined_parameters): Do not
re-use pointer-map slot over remap_type call.
From-SVN: r161800
2010-07-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/44656
* tree-ssa-sccvn.c (vn_reference_lookup_3): Try disambiguation
again after value-replacing in the defintions lhs.
* gcc.dg/tree-ssa/loadpre6.c: Remove XFAIL.
From-SVN: r161798
* doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST):
Document new arguments.
* doc/tm.texi: Regenerate.
* targhooks.c (default_builtin_vectorization_cost): Add new arguments.
Handle unaligned store.
* targhooks.h (default_builtin_vectorization_cost): Add new arguments.
* target.def (builtin_vectorization_cost): Add new arguments.
* target.h (enum vect_cost_for_stmt): Add unaligned_store.
* tree-vect-loop-manip.c (vect_gen_niters_for_prolog_loop): Take number
of iterations of prolog loop directly from LOOP_PEELING_FOR_ALIGNMENT.
(vect_vfa_segment_size): Fix indentation.
* tree-vectorizer.h (struct _vect_peel_info): New.
(struct _vect_peel_extended_info): New.
(struct _loop_vec_info): Add new field for peeling hash table and a
macro for its access.
(VECT_MAX_COST): Define.
(vect_get_load_cost): Declare.
(vect_get_store_cost, vect_get_known_peeling_cost,
vect_get_single_scalar_iteraion_cost): Likewise.
(vect_supportable_dr_alignment): Add new argument.
* tree-vect-loop.c (new_loop_vec_info): Initialize peeling hash table
field.
(destroy_loop_vec_info): Free peeling hash table.
(vect_analyze_loop_form): Update call to builtin_vectorization_cost.
(vect_analyze_loop): Move vect_enhance_data_refs_alignment before
vect_analyze_slp. Fix indentation.
(vect_get_single_scalar_iteraion_cost): New function.
(vect_get_known_peeling_cost): Likewise.
(vect_estimate_min_profitable_iters): Rename byte_misalign to npeel.
Call vect_get_single_scalar_iteraion_cost instead of cost_for_stmt per
statement. Move outside cost calculation inside unknown peeling case.
Call vect_get_known_peeling_cost for known amount of peeling.
* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Add data
reference to the print message of forced alignment.
(vect_verify_datarefs_alignment): Update call to
vect_supportable_dr_alignment.
(vect_get_data_access_cost): New function.
(vect_peeling_hash, vect_peeling_hash_eq, vect_peeling_hash_insert,
vect_peeling_hash_get_most_frequent, vect_peeling_hash_get_lowest_cost,
vect_peeling_hash_choose_best_peeling): Likewise.
(vect_enhance_data_refs_alignment): Fix documentation. Use hash table
to store all the accesses in the loop and find best possible access to
align using peeling for known alignment case. For unknown alignment
check if stores are preferred or if peeling is worthy.
(vect_find_same_alignment_drs): Analyze pairs of loads too.
(vect_supportable_dr_alignment): Add new argument and check aligned
accesses according to it.
* tree-vect-stmts.c (vect_get_stmt_cost): New function.
(cost_for_stmt): Call vect_get_stmt_cost.
(vect_model_simple_cost): Likewise.
(vect_model_store_cost): Call vect_get_stmt_cost. Call
vect_get_store_cost to calculate the cost of the statement.
(vect_get_store_cost): New function.
(vect_model_load_cost): Call vect_get_stmt_cost. Call
vect_get_load_cost to calculate the cost of the statement.
(vect_get_load_cost): New function.
(vectorizable_store): Update call to vect_supportable_dr_alignment.
(vectorizable_load): Likewise.
* config/spu/spu.c (spu_builtin_vectorization_cost): Add new
arguments.
* config/i386/i386.c (ix86_builtin_vectorization_cost): Add new
arguments. Handle unaligned store.
* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): New.
(rs6000_builtin_support_vector_misalignment): Return true for word and
double word alignments for VSX.
* tree-vect-slp.c (vect_build_slp_tree): Update calls to
vect_supportable_dr_alignment and builtin_vectorization_cost.
Co-Authored-By: Revital Eres <eres@il.ibm.com>
From-SVN: r161797
2010-07-03 Manuel López-Ibáñez <manu@gcc.gnu.org>
* c-family/c-common.c (IN_GCC_FRONTEND): Do not undef.
Do not include expr.h
(vector_mode_valid_p): Move here.
* expr.c (vector_mode_valid_p): Move to c-common.c.
* expr.h (vector_mode_valid_p): Do not declare here.
* system.h: Poison GCC_EXPR_H in front-ends.
* Makefile.in: Update dependencies.
From-SVN: r161785
* ipa-inline.c (update_edge_key): Break out from ...
update_callers_keys): ... here;
(update_callee_keys): Update only the edges from caller to callee.
(update_all_calle_keys): Do what update_calle_keys did.
(decide_inlining_of_small_functions): Avoid recomputing of all
callees when badness increase.
From-SVN: r161778
* config/arm/vfp.md (*push_multi_vfp): Use vfp_register_operand
as predicate for operand 1 and remove its constraint.
* config/arm/predicates.md (vfp_register_operand): New.
* config/arm/arm.md (*push_multi): Remove the constraint of
operand 1.
(*push_fp_multi): Likewise.
From-SVN: r161775
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Type>:
Branch to common code handling the alignment of discrete types.
<E_Signed_Integer_Type>: Likewise.
<E_Modular_Integer_Type>: Likewise.
From-SVN: r161770
2010-07-03 Iain Sandoe <iains@gcc.gnu.org>
Mikael Pettersson <mikpe@it.uu.se>
PR testsuite/44518
* obj-c++.dg/encode-2.mm: Produce object and save temps.
Make signed-ness of chars explicit. Scan the object for
strings that are split by some target assemblers.
* obj-c++.dg/encode-3.mm: Make the signed-ness of chars
explicit.
Co-Authored-By: Mikael Pettersson <mikpe@it.uu.se>
From-SVN: r161769
PR/44128
* gcc/doc/invoke.texi: Update documentation of -Wshadow.
* gcc/cp/name-lookup.c (pushdecl_maybe_friend): Warn when a local
decl (variable or type) shadows another type.
* gcc/testsuite/g++.dg/warn/Wshadow-7.C: New test.
From-SVN: r161765
* ipa-split.c (split_function): For aggregate values set return_slot_opt;
when passing DECL_BY_REFERENCE produce *<retval> = fncall.part ()
(execute_split_functions): Do not care about DECL_BY_REFERENCE.
From-SVN: r161756
* ipa-split.c (verify_non_ssa_vars): Break out from ...; perform DFS walk
backwards from entry_bb to check only those basic block of header
that might lead to execution of split part.
(consider_split) ... here.
(find_return_bb): Allow assignment in return BB.
(find_retval): New.
(split_function): Fix name of cloned function; take care of updating return
value in return_bb containing move.
* gcc.dg/tree-ssa/ipa-split-5.c: New function.
From-SVN: r161744
PR c++/44780
* typeck.c (convert_for_assignment): When converting a convertible
vector type or objc++ types, call mark_rvalue_use.
* typeck2.c (build_m_component_ref): Use return values from
mark_rvalue_use or mark_lvalue_use.
* class.c (build_base_path): Likewise.
* call.c (build_conditional_expr): Likewise.
* c-c++-common/Wunused-var-12.c: New test.
From-SVN: r161742
* trans-types.h (gfc_add_field_to_struct): Add tree ** parameter.
* trans-types.c (gfc_add_field_to_struct_1): New function, most
of which comes from...
(gfc_add_field_to_struct): ...here. Call it. Add new parameter.
(gfc_get_desc_dim_type): Call gfc_add_field_to_struct_1 for
building fields.
(gfc_get_array_descriptor_base): Likewise.
(gfc_get_mixed_entry_union): Likewise.
(gfc_get_derived_type): Add extra chain parameter for
gfc_add_field_to_struct.
* trans-stmt.c (gfc_trans_character_select): Likewise.
* trans-io.c (gfc_build_st_parameter): Likewise.
From-SVN: r161738
2010-06-28 Tobias Burnus <burnus@net-b.de>
PR fortran/43298
* list_read.c (parse_real): Do not pass (..) on for NAN(..).
* read.c (convert_real): Fix comment about NAN/INF.
From-SVN: r161735
2010-07-02 Changpeng Fang <changpeng.fang@amd.com>
* tree-ssa-loop-prefetch.c (compute_miss_rate): Rename to
is_miss_rate_acceptable. Pull total_positions computation
out of the loops. Early return if miss_positions exceeds
the acceptable threshold.
* tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Call
is_miss_rate_acceptable after renaming of compute_miss_rate.
From-SVN: r161728
2010-07-02 Changpeng Fang <changpeng.fang@amd.com>
PR middle-end/44576
* tree-ssa-loop-prefetch.c (compute_miss_rate): Return 1000 (out
of 1000) for miss rate if the address diference is greater than or
equal to the cache line size (the two reference will never hit the
same cache line).
From-SVN: r161727