diff options
author | Paul Brook <paul@codesourcery.com> | 2004-07-12 01:23:39 +0000 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2004-07-12 01:23:39 +0000 |
commit | 597073ace8549d2a934a1fe7d9402e1f63e91220 (patch) | |
tree | 965224cf14305213a75803cd0d6ba965b02e9514 /gcc/fortran/expr.c | |
parent | 247fec6ee6f9e831b62a1672abc0cc8a7ffb360e (diff) | |
download | gcc-597073ace8549d2a934a1fe7d9402e1f63e91220.zip gcc-597073ace8549d2a934a1fe7d9402e1f63e91220.tar.gz gcc-597073ace8549d2a934a1fe7d9402e1f63e91220.tar.bz2 |
expr.c (gfc_check_assign_symbol): Handle pointer assignments.
* expr.c (gfc_check_assign_symbol): Handle pointer assignments.
* trans-array.c (gfc_trans_auto_array_allocation): Remove
initialization code.
* trans-common.c (create_common): Use gfc_conv_initializer.
* trans-decl.c (gfc_get_symbol_decl): Use gfc_conv_initializer.
* trans-expr.c (gfc_conv_initializer): New function.
(gfc_conv_structure): Use it.
* trans.h (gfc_conv_initializer): Add prototype.
testsuite/
* gfortran.dg/pointer_init_1.f90: New test.
From-SVN: r84542
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r-- | gcc/fortran/expr.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index f332b34..74b785a 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -1855,7 +1855,7 @@ gfc_check_pointer_assign (gfc_expr * lvalue, gfc_expr * rvalue) /* Relative of gfc_check_assign() except that the lvalue is a single - symbol. */ + symbol. Used for initialization assignments. */ try gfc_check_assign_symbol (gfc_symbol * sym, gfc_expr * rvalue) @@ -1873,7 +1873,10 @@ gfc_check_assign_symbol (gfc_symbol * sym, gfc_expr * rvalue) lvalue.symtree->n.sym = sym; lvalue.where = sym->declared_at; - r = gfc_check_assign (&lvalue, rvalue, 1); + if (sym->attr.pointer) + r = gfc_check_pointer_assign (&lvalue, rvalue); + else + r = gfc_check_assign (&lvalue, rvalue, 1); gfc_free (lvalue.symtree); |