aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-array.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-03-27 23:00:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-03-27 23:00:22 +0000
commit628c189edb5aae6b4e1d416a92cbd0cb9f68586f (patch)
tree1d480e401b2ea473d780770388aea56b9a1a1c68 /gcc/fortran/trans-array.c
parent0387122d055068bd3f76eb14f3b5f2ee77f21aee (diff)
downloadgcc-628c189edb5aae6b4e1d416a92cbd0cb9f68586f.zip
gcc-628c189edb5aae6b4e1d416a92cbd0cb9f68586f.tar.gz
gcc-628c189edb5aae6b4e1d416a92cbd0cb9f68586f.tar.bz2
gimplify.c (mark_addressable): Export.
2009-03-27 Richard Guenther <rguenther@suse.de> * gimplify.c (mark_addressable): Export. * tree-flow.h (mark_addressable): Declare. * tree-ssa-loop-manip.c (create_iv): Mark the base addressable. * tree-ssa.c (verify_phi_args): Verify that address taken variables have TREE_ADDRESSABLE set. 2009-03-27 Richard Guenther <rguenther@suse.de> * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ... (build_fold_addr_expr_with_type): ... this. Remove in_fold handling. Do not mark decls TREE_ADDRESSABLE. (build_fold_addr_expr): Adjust. (fold_addr_expr): Remove. (fold_unary): Use build_fold_addr_expr. (fold_comparison): Likewise. (split_address_to_core_and_offset): Likewise. * coverage.c (tree_coverage_counter_addr): Mark the array decl TREE_ADDRESSABLE. * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs. (gimplify_modify_expr_to_memcpy): Mark source and destination addressable. * omp-low.c (create_omp_child_function): Mark the object decl TREE_ADDRESSABLE. (lower_rec_input_clauses): Mark the var we take the address of TREE_ADDRESSABLE. (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE. fortran/ * trans-array.c (gfc_conv_descriptor_data_addr): Use gfc_build_addr_expr instead of build_fold_addr_expr. (gfc_trans_allocate_array_storage, gfc_trans_array_constructor_value, gfc_trans_constant_array_constructor, gfc_conv_array_data, gfc_conv_expr_descriptor, gfc_conv_array_parameter): Likewise. * trans-expr.c (gfc_conv_missing_dummy, gfc_conv_variable, gfc_conv_function_val, gfc_conv_operator_assign, gfc_conv_subref_array_arg, gfc_conv_function_call, gfc_conv_expr_reference, gfc_trans_scalar_assign): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_exponent, gfc_conv_intrinsic_ctime, gfc_conv_intrinsic_fdate, gfc_conv_intrinsic_ttynam, gfc_conv_intrinsic_minmax_char, gfc_conv_intrinsic_fraction, gfc_conv_intrinsic_spacing, gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_set_exponent, gfc_conv_intrinsic_array_transfer, gfc_conv_intrinsic_transfer, gfc_conv_intrinsic_si_kind, gfc_conv_intrinsic_trim): Likewise. * trans-io.c (gfc_trans_io_runtime_check, set_parameter_ref, gfc_convert_array_to_string, gfc_trans_open, gfc_trans_close, build_filepos, gfc_trans_inquire, gfc_trans_wait, nml_get_addr_expr, transfer_namelist_element, build_dt, gfc_trans_dt_end, transfer_array_component, transfer_expr, transfer_array_desc, gfc_trans_transfer): Likewise. * trans-stmt.c (gfc_trans_allocate, gfc_trans_deallocate): Likewise. * trans.c (gfc_build_addr_expr): Mark the base of the address TREE_ADDRESSABLE. From-SVN: r145142
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r--gcc/fortran/trans-array.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index 6c62350..6f750e6 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -194,7 +194,7 @@ gfc_conv_descriptor_data_addr (tree desc)
gcc_assert (DATA_FIELD == 0);
t = fold_build3 (COMPONENT_REF, TREE_TYPE (field), desc, field, NULL_TREE);
- return build_fold_addr_expr (t);
+ return gfc_build_addr_expr (NULL_TREE, t);
}
tree
@@ -533,7 +533,7 @@ gfc_trans_allocate_array_storage (stmtblock_t * pre, stmtblock_t * post,
tmp = build_array_type (gfc_get_element_type (TREE_TYPE (desc)),
tmp);
tmp = gfc_create_var (tmp, "A");
- tmp = build_fold_addr_expr (tmp);
+ tmp = gfc_build_addr_expr (NULL_TREE, tmp);
gfc_conv_descriptor_data_set (pre, desc, tmp);
}
else
@@ -1281,8 +1281,8 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type,
tmp = gfc_conv_descriptor_data_get (desc);
tmp = build_fold_indirect_ref (tmp);
tmp = gfc_build_array_ref (tmp, *poffset, NULL);
- tmp = build_fold_addr_expr (tmp);
- init = build_fold_addr_expr (init);
+ tmp = gfc_build_addr_expr (NULL_TREE, tmp);
+ init = gfc_build_addr_expr (NULL_TREE, init);
size = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (type));
bound = build_int_cst (NULL_TREE, n * size);
@@ -1683,7 +1683,7 @@ gfc_trans_constant_array_constructor (gfc_loopinfo * loop,
info = &ss->data.info;
info->descriptor = tmp;
- info->data = build_fold_addr_expr (tmp);
+ info->data = gfc_build_addr_expr (NULL_TREE, tmp);
info->offset = gfc_index_zero_node;
for (i = 0; i < info->dimen; i++)
@@ -2136,7 +2136,7 @@ gfc_conv_array_data (tree descriptor)
else
{
/* Descriptorless arrays. */
- return build_fold_addr_expr (descriptor);
+ return gfc_build_addr_expr (NULL_TREE, descriptor);
}
}
else
@@ -4836,7 +4836,7 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
{
/* We pass full arrays directly. This means that pointers and
allocatable arrays should also work. */
- se->expr = build_fold_addr_expr (desc);
+ se->expr = gfc_build_addr_expr (NULL_TREE, desc);
}
else
{
@@ -4867,7 +4867,7 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
/* For pointer assignments pass the descriptor directly. */
se->ss = secss;
- se->expr = build_fold_addr_expr (se->expr);
+ se->expr = gfc_build_addr_expr (NULL_TREE, se->expr);
gfc_conv_expr (se, expr);
return;
}
@@ -5189,7 +5189,7 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
{
/* Get a pointer to the new descriptor. */
if (se->want_pointer)
- se->expr = build_fold_addr_expr (desc);
+ se->expr = gfc_build_addr_expr (NULL_TREE, desc);
else
se->expr = desc;
}
@@ -5255,7 +5255,7 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, int g77,
if (sym->attr.dummy || POINTER_TYPE_P (TREE_TYPE (tmp)))
se->expr = tmp;
else
- se->expr = build_fold_addr_expr (tmp);
+ se->expr = gfc_build_addr_expr (NULL_TREE, tmp);
return;
}
if (sym->attr.allocatable)
@@ -5275,7 +5275,7 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, int g77,
{
/* Result of the enclosing function. */
gfc_conv_expr_descriptor (se, expr, ss);
- se->expr = build_fold_addr_expr (se->expr);
+ se->expr = gfc_build_addr_expr (NULL_TREE, se->expr);
if (g77 && TREE_TYPE (TREE_TYPE (se->expr)) != NULL_TREE
&& GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (TREE_TYPE (se->expr))))