2011-11-04 Robert Dewar <dewar@adacore.com>
* exp_ch2.adb (Expand_Entity_Reference): Do not set
Atomic_Sync_Required for the case of a prefix of an attribute.
* exp_ch4.adb (Expand_N_Explicit_Dereference): May require
atomic synchronization
(Expand_N_Indexed_Component): Ditto.
(Expand_B_Selected_Component): Ditto.
* sem_prag.adb (Process_Suppress_Unsuppress):
Disable/Enable_Atomic_Synchronization can now occur for array
types with pragma Atomic_Components.
* sinfo.ads, sinfo.adb (Atomic_Sync_Required): Can now occur on
N_Explicit_Dereference nodes and on N_Indexed_Component nodes.
2011-11-04 Gary Dismukes <dismukes@adacore.com>
* gnat_ugn.texi: Editorial corrections for gnattest section.
From-SVN: r180943
2011-11-04 Robert Dewar <dewar@adacore.com>
* sem_prag.adb: Minor reformatting.
* gnat_rm.texi: Update documentation for pragma Warnings (Off,
"***") usage.
* exp_ch2.adb (Expand_Entity_Reference): Only set
Atomic_Sync_Required on entities that are variables. Doesn't
make any sense on anything else.
From-SVN: r180939
2011-11-04 Robert Dewar <dewar@adacore.com>
* exp_ch2.adb (Expand_Entity_Reference): Extend handling of
atomic sync to type case.
* sem_prag.adb (Process_Suppress_Unsuppress): Atomic Sync can
apply to types.
From-SVN: r180938
* config/i386/i386.c (ix86_expand_vector_convert_uns_vsivsf): New
function.
* config/i386/i386-protos.h (ix86_expand_vector_convert_uns_vsivsf):
New prototype.
* config/i386/sse.md (floatuns<sseintvecmodelower><mode>2): Use it.
For floatunsv8siv8sf2 require TARGET_AVX2.
* gcc.dg/torture/vec-cvt-1.c: Enable commented out inttoflttestui
test.
From-SVN: r180934
* 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
* 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
* 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 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
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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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