public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/25669]  New: LBOUND (assumed-size-array), as actual arg,causes fatal error.
@ 2006-01-04 13:31 paul dot richard dot thomas at cea dot fr
  2006-01-04 13:34 ` [Bug fortran/25669] " pinskia at gcc dot gnu dot org
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: paul dot richard dot thomas at cea dot fr @ 2006-01-04 13:31 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1335 bytes --]

subroutine foo (a)
real a(*)
call bar (a, LBOUND(a),2)
end subroutine foo
subroutine bar (b, i, j)
real b(i:j)
print *, i, j
print *, b(i:j)
end subroutine bar


real x(10)
x = 0.0
call foo (x)
end

???

This runs fine with other brand compilers but gfortran, patched or not, gives:

tobi.f90: In function ‘foo’:
tobi.f90:1: fatal error: gfc_todo: Not Implemented: Unable to determine rank of
expression
compilation terminated.

If LBOUND (a) is replaced with LBOUND(a, 1), all is well. Alternatively,
assigning LBOUND (a) to an integer vector and using the vector as an actual
argument for bar works as well.

The message is emitted from trans-array.c:2393


void
gfc_conv_ss_startstride (gfc_loopinfo * loop)
{
.....
if (loop->dimen == 0)
gfc_todo_error ("Unable to determine rank of expression");

Since scalarization is not needed here, I am not sure how we got to
gfc_conv_ss_startstride.


-- 
           Summary: LBOUND (assumed-size-array), as actual arg,causes fatal
                    error.
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: paul dot richard dot thomas at cea dot fr


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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug fortran/25669] LBOUND (assumed-size-array), as actual arg,causes fatal error.
  2006-01-04 13:31 [Bug fortran/25669] New: LBOUND (assumed-size-array), as actual arg,causes fatal error paul dot richard dot thomas at cea dot fr
@ 2006-01-04 13:34 ` pinskia at gcc dot gnu dot org
  2006-01-04 13:35 ` pinskia at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-01-04 13:34 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from pinskia at gcc dot gnu dot org  2006-01-04 13:34 -------
This actually might be related to PR 19777.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pinskia at gcc dot gnu dot
                   |                            |org


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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug fortran/25669] LBOUND (assumed-size-array), as actual arg,causes fatal error.
  2006-01-04 13:31 [Bug fortran/25669] New: LBOUND (assumed-size-array), as actual arg,causes fatal error paul dot richard dot thomas at cea dot fr
  2006-01-04 13:34 ` [Bug fortran/25669] " pinskia at gcc dot gnu dot org
@ 2006-01-04 13:35 ` pinskia at gcc dot gnu dot org
  2006-01-04 14:25 ` [Bug fortran/25669] LBOUND (array), " paul dot richard dot thomas at cea dot fr
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-01-04 13:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from pinskia at gcc dot gnu dot org  2006-01-04 13:35 -------
Actually assumed sized is not the full issue, see PR 18003.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  BugsThisDependsOn|                            |18003


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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug fortran/25669] LBOUND (array), as actual arg,causes fatal error.
  2006-01-04 13:31 [Bug fortran/25669] New: LBOUND (assumed-size-array), as actual arg,causes fatal error paul dot richard dot thomas at cea dot fr
  2006-01-04 13:34 ` [Bug fortran/25669] " pinskia at gcc dot gnu dot org
  2006-01-04 13:35 ` pinskia at gcc dot gnu dot org
@ 2006-01-04 14:25 ` paul dot richard dot thomas at cea dot fr
  2006-01-04 14:26 ` paul dot richard dot thomas at cea dot fr
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: paul dot richard dot thomas at cea dot fr @ 2006-01-04 14:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from paul dot richard dot thomas at cea dot fr  2006-01-04 14:25 -------
(In reply to comment #2)
> Actually assumed sized is not the full issue, see PR 18003.

You are right about this.  Turn the declaration for a into an explicit
full-array, rather than assumed size.

I have seen, somewhere, a check for the rank of inquiry intrinsics, that uses
the rank calculated from the arguments, if rank 0 is found for the function.  I
believe that the use of the scalarizer for intrinsic bounds is screwing itself
up when tricked into treating the expression as scalarizable.  This is
confirmed by the work-around of taking the lbound out of the actual array list
for bar().

I have taken "assumed size" out of the summary line.


-- 

paul dot richard dot thomas at cea dot fr changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|LBOUND (assumed-size-array),|LBOUND (array), as actual
                   |as actual arg,causes fatal  |arg,causes fatal error.
                   |error.                      |


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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug fortran/25669] LBOUND (array), as actual arg,causes fatal error.
  2006-01-04 13:31 [Bug fortran/25669] New: LBOUND (assumed-size-array), as actual arg,causes fatal error paul dot richard dot thomas at cea dot fr
                   ` (2 preceding siblings ...)
  2006-01-04 14:25 ` [Bug fortran/25669] LBOUND (array), " paul dot richard dot thomas at cea dot fr
@ 2006-01-04 14:26 ` paul dot richard dot thomas at cea dot fr
  2006-01-06 13:56 ` pinskia at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: paul dot richard dot thomas at cea dot fr @ 2006-01-04 14:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from paul dot richard dot thomas at cea dot fr  2006-01-04 14:26 -------
(In reply to comment #2)
> Actually assumed sized is not the full issue, see PR 18003.

You are right about this.  Turn the declaration for a into an explicit
full-array, rather than assumed size.

I have seen, somewhere, a check for the rank of inquiry intrinsics, that uses
the rank calculated from the arguments, if rank 0 is found for the function.  I
believe that the use of the scalarizer for intrinsic bounds is screwing itself
up when tricked into treating the expression as scalarizable.  This is
confirmed by the work-around of taking the lbound out of the actual array list
for bar().

I have taken "assumed size" out of the summary line.


-- 


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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug fortran/25669] LBOUND (array), as actual arg,causes fatal error.
  2006-01-04 13:31 [Bug fortran/25669] New: LBOUND (assumed-size-array), as actual arg,causes fatal error paul dot richard dot thomas at cea dot fr
                   ` (3 preceding siblings ...)
  2006-01-04 14:26 ` paul dot richard dot thomas at cea dot fr
@ 2006-01-06 13:56 ` pinskia at gcc dot gnu dot org
  2006-01-27 11:04 ` paul dot richard dot thomas at cea dot fr
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-01-06 13:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from pinskia at gcc dot gnu dot org  2006-01-06 13:56 -------
Confirmed (for now, unless you feel this is an exact dup of bug 18003).


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-01-06 13:56:01
               date|                            |


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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug fortran/25669] LBOUND (array), as actual arg,causes fatal error.
  2006-01-04 13:31 [Bug fortran/25669] New: LBOUND (assumed-size-array), as actual arg,causes fatal error paul dot richard dot thomas at cea dot fr
                   ` (4 preceding siblings ...)
  2006-01-06 13:56 ` pinskia at gcc dot gnu dot org
@ 2006-01-27 11:04 ` paul dot richard dot thomas at cea dot fr
  2006-04-16  3:45 ` pault at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: paul dot richard dot thomas at cea dot fr @ 2006-01-27 11:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from paul dot richard dot thomas at cea dot fr  2006-01-27 11:04 -------
(In reply to comment #5)
> Confirmed (for now, unless you feel this is an exact dup of bug 18003).

I think that it might well be a duplicate but cannot be sure.

Paul


-- 


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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug fortran/25669] LBOUND (array), as actual arg,causes fatal error.
  2006-01-04 13:31 [Bug fortran/25669] New: LBOUND (assumed-size-array), as actual arg,causes fatal error paul dot richard dot thomas at cea dot fr
                   ` (5 preceding siblings ...)
  2006-01-27 11:04 ` paul dot richard dot thomas at cea dot fr
@ 2006-04-16  3:45 ` pault at gcc dot gnu dot org
  2006-04-23  5:33 ` pault at gcc dot gnu dot org
  2006-04-23  5:45 ` pault at gcc dot gnu dot org
  8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2006-04-16  3:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from pault at gcc dot gnu dot org  2006-04-16 03:45 -------
Subject: Bug 25669

Author: pault
Date: Sun Apr 16 03:45:24 2006
New Revision: 112981

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=112981
Log:
2006-04-16  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/26822
        * intrinsic.c (add_functions): Mark LOGICAL as elemental.

        PR fortran/26787
        * expr.c (gfc_check_assign): Extend scope of error to include
        assignments to a procedure in the main program or, from a
        module or internal procedure that is not that represented by
        the lhs symbol. Use VARIABLE rather than l-value in message.

        PR fortran/27096
        * trans-array.c (gfc_trans_deferred_array): If the backend_decl
        is not a descriptor, dereference and then test and use the type.

        PR fortran/25597
        * trans-decl.c (gfc_trans_deferred_vars): Check if an array
        result, is also automatic character length.  If so, process
        the character length.

        PR fortran/18803
        PR fortran/25669
        PR fortran/26834
        * trans_intrinsic.c (gfc_walk_intrinsic_bound): Set
        data.info.dimen for bound intrinsics.
        * trans_array.c (gfc_conv_ss_startstride): Pick out LBOUND and
        UBOUND intrinsics and supply their shape information to the ss
        and the loop.

        PR fortran/27124
        * trans_expr.c (gfc_trans_function_call):  Add a new block, post,
        in to which all the argument post blocks are put.  Add this block
        to se->pre after a byref call or to se->post, otherwise.

2006-04-16  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/26787
        * gfortran.dg/proc_assign_1.f90: New test.
        * gfortran.dg/procedure_lvalue.f90: Change message.
        * gfortran.dg/namelist_4.f90: Add new error.

        PR fortran/27096
        * gfortran.dg/auto_pointer_array_result_1.f90

        PR fortran/27089
        * gfortran.dg/specification_type_resolution_1.f90

        PR fortran/18803
        PR fortran/25669
        PR fortran/26834
        * gfortran.dg/bounds_temporaries_1.f90: New test.

        PR fortran/27124
        * gfortran.dg/array_return_value_1.f90: New test.



Added:
    trunk/gcc/testsuite/gfortran.dg/array_return_value_1.f90
    trunk/gcc/testsuite/gfortran.dg/auto_char_pointer_array_result_1.f90
    trunk/gcc/testsuite/gfortran.dg/auto_pointer_array_result_1.f90
    trunk/gcc/testsuite/gfortran.dg/bounds_temporaries_1.f90
    trunk/gcc/testsuite/gfortran.dg/proc_assign_1.f90
    trunk/gcc/testsuite/gfortran.dg/specification_type_resolution_1.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/expr.c
    trunk/gcc/fortran/intrinsic.c
    trunk/gcc/fortran/resolve.c
    trunk/gcc/fortran/trans-array.c
    trunk/gcc/fortran/trans-decl.c
    trunk/gcc/fortran/trans-expr.c
    trunk/gcc/fortran/trans-intrinsic.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/namelist_4.f90
    trunk/gcc/testsuite/gfortran.dg/procedure_lvalue.f90


-- 


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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug fortran/25669] LBOUND (array), as actual arg,causes fatal error.
  2006-01-04 13:31 [Bug fortran/25669] New: LBOUND (assumed-size-array), as actual arg,causes fatal error paul dot richard dot thomas at cea dot fr
                   ` (6 preceding siblings ...)
  2006-04-16  3:45 ` pault at gcc dot gnu dot org
@ 2006-04-23  5:33 ` pault at gcc dot gnu dot org
  2006-04-23  5:45 ` pault at gcc dot gnu dot org
  8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2006-04-23  5:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from pault at gcc dot gnu dot org  2006-04-23 05:33 -------
Subject: Bug 25669

Author: pault
Date: Sun Apr 23 05:33:16 2006
New Revision: 113191

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113191
Log:
2006-04-23  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/27122
        * resolve.c (resolve_function): Remove general restriction on auto
        character length function interfaces.
        (gfc_resolve_uops): Check restrictions on defined operator
        procedures.
        (resolve_types): Call the check for defined operators.

        PR fortran/27113
        * trans-array.c (get_array_ctor_var_strlen): Remove typo in enum.
        Part of the fix in 4.2, which does not work in 4.1 because the
        divergence is now too great.

        PR fortran/26822
        * intrinsic.c (add_functions): Mark LOGICAL as elemental.

        PR fortran/26787
        * expr.c (gfc_check_assign): Extend scope of error to include
        assignments to a procedure in the main program or, from a
        module or internal procedure that is not that represented by
        the lhs symbol. Use VARIABLE rather than l-value in message.

        PR fortran/25597
        * trans-decl.c (gfc_trans_deferred_vars): Check if an array
        result, is also automatic character length.  If so, process
        the character length. Note that this fixes the bug in 4.2
        but not here in 4.1 because the trees have diverged too much.
        Manifestly correct, so applied anyway.

        PR fortran/18803
        PR fortran/25669
        PR fortran/26834
        * trans_intrinsic.c (gfc_walk_intrinsic_bound): Set
        data.info.dimen for bound intrinsics.
        * trans_array.c (gfc_conv_ss_startstride): Pick out LBOUND and
        UBOUND intrinsics and supply their shape information to the ss
        and the loop.

        PR fortran/27124
        * trans_expr.c (gfc_trans_function_call):  Add a new block, post,
        in to which all the argument post blocks are put.  Add this block
        to se->pre after a byref call or to se->post, otherwise.

2006-04-23  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/27122
        * gfortran.dg/defined_operators_1.f90: New test.
        * gfortran.dg/assumed_charlen_function_1.f90: Add new error and
        remove old ones associated, incorrectly, with Note 5.46.

        PR fortran/26787
        * gfortran.dg/proc_assign_1.f90: New test.
        * gfortran.dg/procedure_lvalue.f90: Change message.
        * gfortran.dg/namelist_4.f90: Add new error.

        PR fortran/27089
        * gfortran.dg/specification_type_resolution_1.f90

        PR fortran/18803
        PR fortran/25669
        PR fortran/26834
        * gfortran.dg/bounds_temporaries_1.f90: New test.

        PR fortran/27124
        * gfortran.dg/array_return_value_1.f90: New test.



Added:
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/array_return_value_1.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/bounds_temporaries_1.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/defined_operators_1.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/proc_assign_1.f90
   
branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/specification_type_resolution_1.f90
Modified:
    branches/gcc-4_1-branch/gcc/fortran/ChangeLog
    branches/gcc-4_1-branch/gcc/fortran/expr.c
    branches/gcc-4_1-branch/gcc/fortran/intrinsic.c
    branches/gcc-4_1-branch/gcc/fortran/resolve.c
    branches/gcc-4_1-branch/gcc/fortran/trans-array.c
    branches/gcc-4_1-branch/gcc/fortran/trans-decl.c
    branches/gcc-4_1-branch/gcc/fortran/trans-expr.c
    branches/gcc-4_1-branch/gcc/fortran/trans-intrinsic.c
    branches/gcc-4_1-branch/gcc/testsuite/ChangeLog
   
branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/assumed_charlen_function_1.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/namelist_4.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/procedure_lvalue.f90


-- 


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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug fortran/25669] LBOUND (array), as actual arg,causes fatal error.
  2006-01-04 13:31 [Bug fortran/25669] New: LBOUND (assumed-size-array), as actual arg,causes fatal error paul dot richard dot thomas at cea dot fr
                   ` (7 preceding siblings ...)
  2006-04-23  5:33 ` pault at gcc dot gnu dot org
@ 2006-04-23  5:45 ` pault at gcc dot gnu dot org
  8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu dot org @ 2006-04-23  5:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from pault at gcc dot gnu dot org  2006-04-23 05:44 -------
Fixed on trunk and 4.1

Paul


-- 

pault at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED


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


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2006-04-23  5:45 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-04 13:31 [Bug fortran/25669] New: LBOUND (assumed-size-array), as actual arg,causes fatal error paul dot richard dot thomas at cea dot fr
2006-01-04 13:34 ` [Bug fortran/25669] " pinskia at gcc dot gnu dot org
2006-01-04 13:35 ` pinskia at gcc dot gnu dot org
2006-01-04 14:25 ` [Bug fortran/25669] LBOUND (array), " paul dot richard dot thomas at cea dot fr
2006-01-04 14:26 ` paul dot richard dot thomas at cea dot fr
2006-01-06 13:56 ` pinskia at gcc dot gnu dot org
2006-01-27 11:04 ` paul dot richard dot thomas at cea dot fr
2006-04-16  3:45 ` pault at gcc dot gnu dot org
2006-04-23  5:33 ` pault at gcc dot gnu dot org
2006-04-23  5:45 ` pault at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).