RFA, PR fortran/34686: Aliasing bug when returning character pointers

Tobias Burnus burnus@net-b.de
Mon Jan 14 10:45:00 GMT 2008


Richard Sandiford wrote:
> Bootstrapped & regression-tested on x86_64-linux-gnu.  Also regression-
> tested on mips64-linux-gnu (all 3 ABIs).  OK to install?
>   
OK with a fortran/Changelog entry.

Thanks for the analysis and the patch,

Tobias

> Index: gcc/fortran/trans-expr.c
> ===================================================================
> --- gcc/fortran/trans-expr.c	2008-01-07 10:48:25.000000000 +0000
> +++ gcc/fortran/trans-expr.c	2008-01-07 10:48:29.000000000 +0000
> @@ -2660,13 +2660,7 @@ gfc_conv_function_call (gfc_se * se, gfc
>  	     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)



More information about the Fortran mailing list