http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50570

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
           Keywords|                            |rejects-valid
   Last reconfirmed|                            |2011-09-30
                 CC|                            |burnus at gcc dot gnu.org,
                   |                            |domob at gcc dot gnu.org
     Ever Confirmed|0                           |1
            Summary|Incorrect error for         |[4.6/4.7 Regression]
                   |assignment to intent(in)    |Incorrect error for
                   |pointer                     |assignment to intent(in)
                   |                            |pointer
   Target Milestone|---                         |4.6.2

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-09-30 
06:25:40 UTC ---
Working: 2010-09-09-r164046
Failing: 2010-09-28-r164677

Possible culprit:

r164550 | domob | 2010-09-23 10:37:54 +0200
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=164550

2010-09-23  Daniel Kraft  <d...@domob.eu>

        PR fortran/38936
        PR fortran/44044
        PR fortran/45474

        * expr.c (gfc_check_assign): Remove INTENT(IN) check here.
        (gfc_check_pointer_assign): Ditto (and other checks removed).
        (gfc_check_vardef_context): New method.


In expr.c's gfc_check_vardef_context, the problem is that for

4547          sym = e->value.function.esym ? e->value.function.esym :
e->symtree->n.sym;
4550      attr = gfc_expr_attr (e);

(gdb) p sym->attr.pointer
$3 = 1
(gdb) p attr.pointer
$1 = 0

Here, gfc_expr_attr() takes the array reference into account such that
"dummy(1)" is not pointer ...

Reply via email to