aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2011-11-04i386.c (ix86_expand_adjust_ufix_to_sfix_si): Add XORP argument.Jakub Jelinek6-26/+72
* config/i386/i386.c (ix86_expand_adjust_ufix_to_sfix_si): Add XORP argument. Subtract 0x1p31 instead of 0x1p32. Use normal signalling comparison instead of non-signalling. Store into *XORP pseudo holding 0x80000000 integers if 0x1p31 has been subtracted and 0 otherwise. * config/i386/i386-protos.h (ix86_expand_adjust_ufix_to_sfix_si): Adjust prototype. * config/i386/sse.md (fixuns_trunc<mode><sseintvecmodelower>2): Enable already for TARGET_SSE2. Xor in vector initialized by ix86_expand_adjust_ufix_to_sfix_si at the end. (vec_pack_ufix_trunc_<mode>): Likewise. * gcc.dg/torture/vec-cvt-1.c: Enable flttointtestui test. From-SVN: r180933
2011-11-04tree-vect-stmts.c (vectorizable_conversion): Rewritten to handle not just ↵Jakub Jelinek4-938/+943
FLOAT_EXPR and FIX_TRUNC_EXPR... * tree-vect-stmts.c (vectorizable_conversion): Rewritten to handle not just FLOAT_EXPR and FIX_TRUNC_EXPR, but also CONVERT_EXPR_CODE_P, WIDEN_MULT_EXPR and WIDEN_LSHIFT_EXPR to handle what vectorizable_type_demotion and vectorizable_type_promotion did. Additionally handle FLOAT_EXPR and FIX_TRUNC_EXPR where the integer is {,un}signed {char,short}. (vect_create_vectorized_demotion_stmts): Fix comment typo. For recursive calls unconditionally use VEC_PACK_TRUNC_EXPR. Push vec_dest back to the vec_dsts vector at the end. (vect_create_vectorized_promotion_stmts): Don't recurse, do just one step. Removed multi_step_cvt, vec_dsts, slp_node and prev_stmt_info arguments, add vec_dest argument. Push always into vec_tmp, not just when multi_step_cvt != 0, replace *vec_oprdn0 with vec_tmp at the end after freeing old *vec_oprnd0 vector. (vectorizable_type_demotion, vectorizable_type_promotion): Removed. (vect_analyze_stmt): Don't call vectorizable_type_demotion and vectorizable_type_promotion. Call vectorizable_conversion even for SLP bb vectorization. (vect_transform_stmt): Call vectorizable_conversion instead of vectorizable_type_demotion and vectorizable_type_promotion. (supportable_widening_operation): Clear *multi_step_cvt first, simplify c1/c2 computation, free *interm_types vector on failure. (supportable_narrowing_operation): Clear *multi_step_cvt first, free *interm_types vector on failure, handle multi-step FIX_TRUNC_EXPR. * gcc.dg/torture/vec-cvt-1.c: New test. From-SVN: r180932
2011-11-04decl.c (gnat_to_gnu_entity): Do not assert that the type of the parameters ↵Eric Botcazou5-1/+29
isn't dummy in type_annotate_only... * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Function>: Do not assert that the type of the parameters isn't dummy in type_annotate_only mode. From-SVN: r180931
2011-11-04[multiple changes]Arnaud Charlet31-16/+672
2011-11-04 Matthew Heaney <heaney@adacore.com> * a-cdlili.ad[sb], a-cidlli.ad[sb], a-coorse.ad[sb], a-ciorse.ad[sb], a-coorma.ad[sb], a-ciorma.ad[sb], a-coormu.ad[sb], a-ciormu.ad[sb], a-cohama.ad[sb], a-cihama.ad[sb], a-cohase.ad[sb], a-cihase.ad[sb], a-convec.ad[sb], a-coinve.ad[sb] (Assign, Copy): New operations added to package. 2011-11-04 Robert Dewar <dewar@adacore.com> * sem_ch12.adb: Minor reformatting 2011-11-04 Gary Dismukes <dismukes@adacore.com> * bindgen.adb (Gen_Elab_Calls): In the case of the AAMP target, initialize elaboration entities to zero when specs are processed. From-SVN: r180930
2011-11-04alpha.c (alpha_write_linkage): Remove fundecl argument.Tristan Gingold4-203/+80
2011-11-04 Tristan Gingold <gingold@adacore.com> * config/alpha/alpha.c (alpha_write_linkage): Remove fundecl argument. Conditionally generate crash debug info. Adjust for alpha_funcs_tree removal. (machine_function): Add links field. (alpha_start_function): Conditionally generate crash debug info. (alpha_end_function): Adjust call to alpha_write_linkage. (alpha_funcs): Remove. (links_kind): Remove. (alpha_links): Remove num, target and lkind field. Add func field. (alpha_links_tree): Remove. (alpha_funcs_tree): Remove. (alpha_need_linkage): Remove. (alpha_use_linkage): Change prototype. Adjust. (alpha_write_one_linkage): Use ASM_OUTPUT_INTERNAL_LABEL. Use SYMBOL_REF_EXTERNAL_P and SYMBOL_REF_LOCAL_P macro. * config/alpha/alpha-protos.h (alpha_use_linkage): Update. (alpha_need_linkage): Remove. * config/alpha/alpha.md: Update calls to alpha_use_linkage. Adjust calls to alpha_need_linkage. From-SVN: r180928
2011-11-04re PR fortran/43829 (Scalarization of reductions)Mikael Morin7-1/+295
PR fortran/43829 * gfortran.dg/function_optimize_7.f90: Disable sum inlining. * gfortran.dg/inline_sum_1.f90: New. * gfortran.dg/inline_sum_2.f90: New. * gfortran.dg/inline_sum_bounds_check_1.f90: New. * gfortran.dg/inline_sum_bounds_check_2.f90: New. * gfortran.dg/inline_product_1.f90: New. From-SVN: r180922
2011-11-04re PR fortran/43829 (Scalarization of reductions)Mikael Morin4-34/+217
PR fortran/43829 * trans-array.c (gfc_conv_expr_descriptor): Accept the inline intrinsic case in the assertion. * trans-intrinsic (enter_nested_loop): New function. (gfc_conv_intrinsic_arith): Support non-scalar cases. (nest_loop_dimension, walk_inline_intrinsic_arith): New functions. (walk_inline_intrinsic_function): Handle sum and product. (gfc_inline_intrinsic_function_p): Ditto. * trans.h (gfc_get_loopinfo): New macro. From-SVN: r180920
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_arith): Introduce parent expression ↵Mikael Morin2-2/+10
variable. * trans-intrinsic.c (gfc_conv_intrinsic_arith): Introduce parent expression variable. Use it. From-SVN: r180919
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic.c): Introduce current loop pointer.Mikael Morin2-10/+17
* trans-intrinsic.c (gfc_conv_intrinsic.c): Introduce current loop pointer. Use it. From-SVN: r180918
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_arith): Small argument handling cleanup.Mikael Morin2-6/+12
* trans-intrinsic.c (gfc_conv_intrinsic_arith): Small argument handling cleanup. From-SVN: r180917
2011-11-04Daily bump.GCC Administrator1-1/+1
From-SVN: r180916
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_arith): Update conditions.Mikael Morin2-6/+10
* trans-intrinsic.c (gfc_conv_intrinsic_arith): Update conditions. From-SVN: r180913
2011-11-04frontend-passes.c (cfe_register_funcs): Return early in the case of an ↵Mikael Morin2-3/+11
inline intrinsic function. * frontend-passes.c (cfe_register_funcs): Return early in the case of an inline intrinsic function. (optimize_binop_array_assignment): Skip optimization in the case of an inline intrinsic function. From-SVN: r180911
2011-11-04array.c (match_subscript): Skip whitespaces before setting locus.Mikael Morin3-0/+7
* array.c (match_subscript): Skip whitespaces before setting locus. * matchexp.c (match_level_1): Ditto. From-SVN: r180910
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Set loop's temporary rank ↵Mikael Morin2-5/+26
to the loop rank. * trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Set loop's temporary rank to the loop rank. Mark ss chains for multiple loop if necessary. Use gfc_trans_scalarized_loop_boundary to end one loop and start another. From-SVN: r180909
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Set loop's temporary rank ↵Mikael Morin2-4/+27
to the loop rank. * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Set loop's temporary rank to the loop rank. Mark ss chains for multiple loop if necessary. Use gfc_trans_scalarized_loop_boundary to end one loop and start another. From-SVN: r180908
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Don't calculate offset ↵Mikael Morin2-20/+13
twice in generated code. * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Don't calculate offset twice in generated code. From-SVN: r180907
2011-11-04trans-expr.c (gfc_conv_procedure_call): Handle temporaries for arguments to ↵Mikael Morin3-67/+67
elemental calls. * trans-expr.c (gfc_conv_procedure_call): Handle temporaries for arguments to elemental calls. * trans-stmt.c (replace_ss): New function. (gfc_conv_elemental_dependencies): Remove temporary loop handling. Create a new ss for the temporary and replace the original one with it. Remove fake array references. Recalculate all offsets. From-SVN: r180906
2011-11-04trans-array.h (gfc_free_ss, [...]): New prototypes.Mikael Morin3-14/+19
* trans-array.h (gfc_free_ss, gfc_set_delta): New prototypes. * trans-array.c (gfc_free_ss): Remove forward declaration. Make non-static. (set_delta, gfc_set_delta): Remove forward declaration. Make non-static and rename the former to the later. Update uses. From-SVN: r180905
2011-11-03trans.h (gfc_inline_intrinsic_function_p): Move prototype...Mikael Morin4-3/+21
* trans.h (gfc_inline_intrinsic_function_p): Move prototype... * gfortran.h (gfc_inline_intrinsic_function_p): ... here. * dependency.c (gfc_check_argument_var_dependency): Check dependencies of inline intrinsics' arguments. From-SVN: r180904
2011-11-03trans-array.c (gfc_trans_preloop_setup): New pointers to outer dimension's ↵Mikael Morin2-7/+32
ss and loop. * trans-array.c (gfc_trans_preloop_setup): New pointers to outer dimension's ss and loop. Use them. From-SVN: r180903
2011-11-03trans-array.c (outermost_loop): New function.Mikael Morin2-25/+47
* trans-array.c (outermost_loop): New function. (gfc_trans_array_constructor, gfc_set_vector_loop_bounds, gfc_add_loop_ss_code): Put generated code out of the outermost loop. From-SVN: r180902
2011-11-03trans-array.c (constant_array_constructor_loop_size): Handle multiple loops.Mikael Morin2-18/+29
* trans-array.c (constant_array_constructor_loop_size): Handle multiple loops. From-SVN: r180901
2011-11-03trans-array.c (get_rank, [...]): New functions.Mikael Morin2-7/+46
* trans-array.c (get_rank, get_loop_upper_bound_for_array): New functions. (gfc_trans_array_constructor): Handle multiple loops. From-SVN: r180900
2011-11-03trans.h (struct gfc_loopinfo): New field parent.Mikael Morin3-0/+36
* trans.h (struct gfc_loopinfo): New field parent. * trans-array.c (gfc_cleanup_loop): Free nested loops. (gfc_add_ss_to_loop): Set nested_loop's parent loop. (gfc_trans_array_constructor): Update assertion. (gfc_conv_loop_setup): Ditto. From-SVN: r180899
2011-11-03trans-array.c (gfc_add_loop_ss_code): Skip non-nestedmost ss.Mikael Morin2-3/+39
* trans-array.c (gfc_add_loop_ss_code): Skip non-nestedmost ss. Call recursively gfc_add_loop_ss_code for all the nested loops. (gfc_conv_ss_startstride): Only get the descriptor for the outermost ss. Call recursively gfc_conv_ss_startstride for all the nested loops. (set_loop_bounds): Call recursively for all the nested loops. (set_delta): Ditto. From-SVN: r180898
2011-11-03trans.h (struct gfc_loopinfo): New fields nested and next.Mikael Morin3-0/+25
* trans.h (struct gfc_loopinfo): New fields nested and next. * trans-array.c (gfc_add_ss_to_loop): Update list of nested list if ss has non-null nested_ss field. From-SVN: r180897
2011-11-03trans-array.c (gfc_trans_create_temp_array): Loop over the parents.Mikael Morin2-32/+43
* trans-array.c (gfc_trans_create_temp_array): Loop over the parents. From-SVN: r180895
2011-11-03trans-array.c (get_array_ref_dim, [...]): Rename the former to the latter ↵Mikael Morin2-14/+57
and loop over the parents. * trans-array.c (get_array_ref_dim, get_scalarizer_dim_for_array_dim): Rename the former to the latter and loop over the parents. (innermost_ss): New function. (get_array_ref_dim_for_loop_dim): New function. (gfc_trans_create_temp_array): Use get_scalarizer_dim_for_array_dim. (set_loop_bounds): Use get_array_dim_for_loop_dim). From-SVN: r180894
2011-11-03trans.h (struct gfc_ss): New field nested_ss.Mikael Morin3-1/+12
* trans.h (struct gfc_ss): New field nested_ss. * trans-expr.c (gfc_advance_se_ss_chain): Update assertion. From-SVN: r180893
2011-11-03trans-array.c (set_vector_loop_bounds): Loop over the parents.Mikael Morin2-5/+13
* trans-array.c (set_vector_loop_bounds): Loop over the parents. From-SVN: r180892
2011-11-03trans-array.c (gfc_trans_array_constructor): Loop over the parents.Mikael Morin2-10/+20
* trans-array.c (gfc_trans_array_constructor): Loop over the parents. From-SVN: r180891
2011-11-03trans-array.c (gfc_set_loop_bounds_from_array_spec): Loop over the parents.Mikael Morin2-30/+48
* trans-array.c (gfc_set_loop_bounds_from_array_spec): Loop over the parents. From-SVN: r180890
2011-11-03trans.h (struct gfc_ss): New field parent.Mikael Morin4-2/+23
* trans.h (struct gfc_ss): New field parent. * trans-array.c (gfc_trans_scalarizing_loops): Skip clearing if a parent exists. * trans-expr.c (gfc_advance_se_ss_chain): Move to parent ss at the end of the chain. From-SVN: r180889
2011-11-03trans-array.h (gfc_trans_create_temp_array): Remove loop argument.Mikael Morin6-25/+33
* trans-array.h (gfc_trans_create_temp_array): Remove loop argument. * trans-array.c (gfc_trans_create_temp_array): Ditto. Get loop from ss. Update reference to loop. Remove loop argument. (gfc_trans_array_constructor, gfc_conv_loop_setup): Update calls to gfc_trans_create_temp_array. * trans-expr.c (gfc_conv_procedure_call): Ditto. * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Ditto. * trans-stmt.c (gfc_conv_elemental_dependencies): Ditto. Set loop before calling gfc_trans_create_temp_array. From-SVN: r180888
2011-11-03trans-array.c (gfc_trans_create_temp_array): New variable total_dim.Mikael Morin2-4/+11
* trans-array.c (gfc_trans_create_temp_array): New variable total_dim. Set total_dim to loop's rank. Replace usages of loop's rank. From-SVN: r180887
2011-11-03trans-array.c (gfc_trans_array_constructor, [...]): Rename the former to the ↵Mikael Morin2-2/+11
later. * trans-array.c (gfc_trans_array_constructor, trans_array_constructor): Rename the former to the later. Get loop from ss. Remove loop argument. (gfc_add_loop_ss_code): Update call. From-SVN: r180886
2011-11-03trans-array.c (gfc_set_vector_loop_bounds): Get loop from ss.Mikael Morin2-2/+10
* trans-array.c (gfc_set_vector_loop_bounds): Get loop from ss. Remove loop argument. (gfc_add_loop_ss_code): Update call. From-SVN: r180885
2011-11-03trans.h (struct gfc_ss): New field loop.Mikael Morin3-0/+32
* trans.h (struct gfc_ss): New field loop. * trans-array.c (set_ss_loop): New function. (gfc_add_ss_to_loop): Call set_ss_loop. From-SVN: r180884
2011-11-03trans.h (struct gfc_ss_info): New field refcount.Mikael Morin3-0/+17
* trans.h (struct gfc_ss_info): New field refcount. * trans-array.c (free_ss_info): Decrement refcount. Return early if still non-zero. (gfc_get_array_ss, gfc_get_temp_ss, gfc_get_scalar_ss): Increment refcount. From-SVN: r180883
2011-11-03trans-array.c (gfc_trans_create_temp_array): Move invariant condition out of ↵Mikael Morin2-27/+35
the containing loop. * trans-array.c (gfc_trans_create_temp_array): Move invariant condition out of the containing loop. From-SVN: r180882
2011-11-03trans-array.c (gfc_conv_loop_setup, [...]): Move specloop arrays clearing ↵Mikael Morin2-4/+10
from the former to the latter. * trans-array.c (gfc_conv_loop_setup, gfc_trans_create_temp_array): Move specloop arrays clearing from the former to the latter. From-SVN: r180881
2011-11-03trans-array.c (set_loop_bounds): Separate the beginning of ↵Mikael Morin2-12/+58
gfc_conv_loop_setup into a function of its own. * trans-array.c (set_loop_bounds): Separate the beginning of gfc_conv_loop_setup into a function of its own. (set_delta): Separate the end of gfc_conv_loop_setup into a function of its own. (gfc_conv_loop_setup): Call set_loop_bounds and set delta. (set_loop_bounds, set_delta, gfc_conv_loop_setup): Make loopspec a pointer to the specloop field from the loop struct. From-SVN: r180880
2011-11-03re PR fortran/50933 (Wrongly regards BIND(C) types as incompatible)Tobias Burnus4-2/+67
2011-11-03 Tobias Burnus <burnus@net-b.de> PR fortran/50933 * interface.c (gfc_compare_derived_types): Fix check for * BIND(C). 2011-11-03 Tobias Burnus <burnus@net-b.de> PR fortran/50933 * gfortran.dg/bind_c_dts_5.f90: New. From-SVN: r180879
2011-11-03re PR fortran/50960 ([OOP] vtables not marked as constant)Tobias Burnus4-0/+37
2011-11-03 Tobias Burnus <burnus@net-b.de> PR fortran/50960 * trans-decl.c (gfc_finish_var_decl): Mark PARAMETER as * TREE_READONLY. 2011-11-03 Tobias Burnus <burnus@net-b.de> PR fortran/50960 * gfortran.dg/module_parameter_array_refs_2.f90: New. From-SVN: r180878
2011-11-03trans.h (struct gfc_ss, [...]): Move field gfc_ss::where into gfc_ss_info.Mikael Morin4-7/+16
* trans.h (struct gfc_ss, struct gfc_ss_info): Move field gfc_ss::where into gfc_ss_info. * trans-array.c (gfc_add_loop_ss_code): Update reference chains. * trans-stmt.c (gfc_trans_where_assign, gfc_trans_where_3): Ditto. From-SVN: r180877
2011-11-03trans.h (struct gfc_ss, [...]): Move field gfc_ss::useflags into gfc_ss_info.Mikael Morin5-12/+25
* trans.h (struct gfc_ss, struct gfc_ss_info): Move field gfc_ss::useflags into gfc_ss_info. * trans-array.c (gfc_mark_ss_chain_used, gfc_trans_preloop_setup, gfc_trans_scalarizing_loops, gfc_trans_scalarized_boundary): Update reference chains. * trans-expr.c (gfc_conv_procedure_call): Ditto. * trans-intrinsic.c (gfc_conv_intrinsic_function): Ditto. From-SVN: r180875
2011-11-03trans.h (struct gfc_ss, [...]): Move field gfc_ss::data::info into ↵Mikael Morin7-76/+108
gfc_ss_info::data and remove empty union... * trans.h (struct gfc_ss, struct gfc_ss_info): Move field gfc_ss::data::info into gfc_ss_info::data and remove empty union gfc_ss::data. * trans-array.c (gfc_free_ss, gfc_trans_create_temp_array, gfc_trans_constant_array_constructor, gfc_trans_array_constructor, gfc_set_vector_loop_bounds, gfc_add_loop_ss_code, gfc_conv_ss_descriptor, gfc_trans_array_bound_check, gfc_conv_array_index_offset, gfc_conv_scalarized_array_ref, add_array_offset, gfc_trans_preloop_setup, gfc_trans_scalarized_boundary, gfc_conv_section_startstride, gfc_conv_ss_startstride, gfc_could_be_alias, gfc_conv_loop_setup, gfc_conv_expr_descriptor, gfc_alloc_allocatable_for_assignment, gfc_walk_array_ref): Update reference chains and factor them where possible. * trans-expr.c (gfc_conv_variable, gfc_conv_subref_array_arg, gfc_conv_procedure_call, gfc_trans_subarray_assign): Updata reference chains. * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Ditto. * trans-io.c (transfer_array_component): Ditto. * trans-stmt.c (gfc_conv_elemental_dependencies, gfc_trans_pointer_assign_need_temp): Ditto. From-SVN: r180873
2011-11-03trans.h (struct gfc_ss, [...]): Move member struct gfc_ss::data::temp into ↵Mikael Morin3-10/+18
gfc_ss_info::data. * trans.h (struct gfc_ss, struct gfc_ss_info): Move member struct gfc_ss::data::temp into gfc_ss_info::data. * trans-array.c (gfc_get_temp_ss, gfc_conv_loop_setup): Update reference chains. From-SVN: r180872
2011-11-03trans.h (struct gfc_ss, [...]): Move member struct gfc_ss::data::scalar into ↵Mikael Morin5-13/+27
newly created union... * trans.h (struct gfc_ss, struct gfc_ss_info): Move member struct gfc_ss::data::scalar into newly created union gfc_ss_info::data, and rename subfield expr to value. * trans-array.c (gfc_add_loop_ss_code, gfc_conv_array_index_offset, gfc_conv_expr_descriptor): Update reference chains. * trans-const.c (gfc_conv_constant): Ditto. * trans-expr.c (gfc_conv_expr): Ditto. From-SVN: r180870