diff options
author | Richard Sandiford <rsandifo@nildram.co.uk> | 2008-01-18 00:28:28 +0000 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2008-01-18 01:28:28 +0100 |
commit | 5cc5439e27c65911e1af867dd2804b0f0dd48f5e (patch) | |
tree | 7319fe4f3f288420ff28d488c2ac9f1839e3026d /gcc/fortran/trans-expr.c | |
parent | b80034e81f2d50ac03223fb996349ad7814d3c6a (diff) | |
download | gcc-5cc5439e27c65911e1af867dd2804b0f0dd48f5e.zip gcc-5cc5439e27c65911e1af867dd2804b0f0dd48f5e.tar.gz gcc-5cc5439e27c65911e1af867dd2804b0f0dd48f5e.tar.bz2 |
re PR fortran/34686 (Aliasing bug when returning character pointers)
2008-01-18 Richard Sandiford <rsandifo@nildram.co.uk>
PR fortran/34686
* trans-expr.c (gfc_conv_function_call): Use proper
type for returned character pointers.
From-SVN: r131620
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r-- | gcc/fortran/trans-expr.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index c1de2a9..9e30a99 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -2660,13 +2660,7 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, character pointers. */ if (sym->attr.pointer || sym->attr.allocatable) { - /* Build char[0:len-1] * pstr. */ - tmp = fold_build2 (MINUS_EXPR, gfc_charlen_type_node, len, - build_int_cst (gfc_charlen_type_node, 1)); - tmp = build_range_type (gfc_array_index_type, - gfc_index_zero_node, tmp); - tmp = build_array_type (gfc_character1_type_node, tmp); - var = gfc_create_var (build_pointer_type (tmp), "pstr"); + var = gfc_create_var (type, "pstr"); /* Provide an address expression for the function arguments. */ var = build_fold_addr_expr (var); |