aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgloop.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2007-07-24 19:16:36 +0000
committerPaul Thomas <pault@gcc.gnu.org>2007-07-24 19:16:36 +0000
commit30f9cd05c6a101d6ec4c9e4487e6393195ed0c45 (patch)
treeb9d7a81ed4436258359f8fd5b4bfab4cd86b6c24 /gcc/cfgloop.c
parent08113c7398f734fdabf27af9d143af83ebde3767 (diff)
downloadgcc-30f9cd05c6a101d6ec4c9e4487e6393195ed0c45.zip
gcc-30f9cd05c6a101d6ec4c9e4487e6393195ed0c45.tar.gz
gcc-30f9cd05c6a101d6ec4c9e4487e6393195ed0c45.tar.bz2
re PR fortran/31205 (aliased operator assignment produces wrong result)
2007-07-24 Paul Thomas <pault@gcc.gnu.org> PR fortran/31205 PR fortran/32842 * trans-expr.c (gfc_conv_function_call): Remove the default initialization of intent(out) derived types. * symbol.c (gfc_lval_expr_from_sym): New function. * matchexp.c (gfc_get_parentheses): Return argument, if it is character and posseses a ref. * gfortran.h : Add prototype for gfc_lval_expr_from_sym. * resolve.c (has_default_initializer): Move higher up in file. (resolve_code): On detecting an interface assignment, check if the rhs and the lhs are the same symbol. If this is so, enclose the rhs in parenetheses to generate a temporary and prevent any possible aliasing. (apply_default_init): Remove code making the lval and call gfc_lval_expr_from_sym instead. (resolve_operator): Give a parentheses expression a type- spec if it has no type. * trans-decl.c (gfc_trans_deferred_vars): Apply the a default initializer, if any, to an intent(out) derived type, using gfc_lval_expr_from_sym and gfc_trans_assignment. Check if the dummy is present. 2007-07-24 Paul Thomas <pault@gcc.gnu.org> PR fortran/31205 * gfortran.dg/alloc_comp_basics_1.f90 : Restore number of "deallocates" to 24, since patch has code rid of much spurious code. * gfortran.dg/interface_assignment_1.f90 : New test. PR fortran/32842 * gfortran.dg/interface_assignment_2.f90 : New test. From-SVN: r126886
Diffstat (limited to 'gcc/cfgloop.c')
0 files changed, 0 insertions, 0 deletions