* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
@ 2008-11-12 20:29 ` kargl at gcc dot gnu dot org
2008-11-12 20:30 ` kargl at gcc dot gnu dot org
` (15 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: kargl at gcc dot gnu dot org @ 2008-11-12 20:29 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from kargl at gcc dot gnu dot org 2008-11-12 20:27 -------
While gfortran should not ICE, I'd be interested in knowing if
this code compiles with any other compiler. (Hint: remove
elemental from trim_append).
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
2008-11-12 20:29 ` [Bug fortran/38095] " kargl at gcc dot gnu dot org
@ 2008-11-12 20:30 ` kargl at gcc dot gnu dot org
2008-11-12 20:40 ` kargl at gcc dot gnu dot org
` (14 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: kargl at gcc dot gnu dot org @ 2008-11-12 20:30 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from kargl at gcc dot gnu dot org 2008-11-12 20:29 -------
Add ice-on-invalid-code to keywords.
--
kargl at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ice-on-invalid-code
Priority|P3 |P4
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
2008-11-12 20:29 ` [Bug fortran/38095] " kargl at gcc dot gnu dot org
2008-11-12 20:30 ` kargl at gcc dot gnu dot org
@ 2008-11-12 20:40 ` kargl at gcc dot gnu dot org
2008-11-12 21:10 ` dominiq at lps dot ens dot fr
` (13 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: kargl at gcc dot gnu dot org @ 2008-11-12 20:40 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from kargl at gcc dot gnu dot org 2008-11-12 20:39 -------
Whoop, it is valid Fortran 2003. I forgot that
Lahey's checker does not understand the F2003
array syntax.
--
kargl at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|ice-on-invalid-code |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (2 preceding siblings ...)
2008-11-12 20:40 ` kargl at gcc dot gnu dot org
@ 2008-11-12 21:10 ` dominiq at lps dot ens dot fr
2008-11-12 22:13 ` vivekrao4 at yahoo dot com
` (12 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: dominiq at lps dot ens dot fr @ 2008-11-12 21:10 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from dominiq at lps dot ens dot fr 2008-11-12 21:09 -------
> Whoop, it is valid Fortran 2003. I forgot that
> Lahey's checker does not understand the F2003 array syntax.
I was about to say that the code is compiled by ifort and g95.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (3 preceding siblings ...)
2008-11-12 21:10 ` dominiq at lps dot ens dot fr
@ 2008-11-12 22:13 ` vivekrao4 at yahoo dot com
2008-11-12 22:28 ` dominiq at lps dot ens dot fr
` (11 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: vivekrao4 at yahoo dot com @ 2008-11-12 22:13 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from vivekrao4 at yahoo dot com 2008-11-12 22:12 -------
(In reply to comment #4)
> > Whoop, it is valid Fortran 2003. I forgot that
> > Lahey's checker does not understand the F2003 array syntax.
> I was about to say that the code is compiled by ifort and g95.
I hope someone will mark the bug as "confirmed".
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (4 preceding siblings ...)
2008-11-12 22:13 ` vivekrao4 at yahoo dot com
@ 2008-11-12 22:28 ` dominiq at lps dot ens dot fr
2008-11-12 22:38 ` burnus at gcc dot gnu dot org
` (10 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: dominiq at lps dot ens dot fr @ 2008-11-12 22:28 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from dominiq at lps dot ens dot fr 2008-11-12 22:26 -------
> I hope someone will mark the bug as "confirmed".
I have tried, but If I am allowed to do it, I did not find how. Did you try
yourself?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (5 preceding siblings ...)
2008-11-12 22:28 ` dominiq at lps dot ens dot fr
@ 2008-11-12 22:38 ` burnus at gcc dot gnu dot org
2008-11-12 22:44 ` mikael at gcc dot gnu dot org
` (9 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: burnus at gcc dot gnu dot org @ 2008-11-12 22:38 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from burnus at gcc dot gnu dot org 2008-11-12 22:37 -------
Looks as if the code is valid. Valgrind shows:
==2910== Invalid read of size 4
==2910== at 0x4B1005: gfc_apply_interface_mapping_to_expr
(trans-expr.c:1916)
==2910== by 0x4B6FBE: gfc_apply_interface_mapping (trans-expr.c:2133)
==2910== by 0x49D13E: gfc_conv_expr_descriptor (trans-array.c:4717)
==2910== by 0x4A033B: gfc_conv_array_parameter (trans-array.c:5272)
==2910== by 0x4B1A80: gfc_conv_function_call (trans-expr.c:2680)
That line is:
switch (expr->value.function.isym->id)
{
case GFC_ISYM_LEN:
/* TODO figure out why this condition is necessary. */
if (sym->attr.function
&& arg1->ts.cl->length->expr_type != EXPR_CONSTANT
&& arg1->ts.cl->length->expr_type != EXPR_VARIABLE) // <- LINE 1916
The TODO was added by Paul in Rev. 130988. The cited bugreports were
PR 31213, PR 33888 and PR 33998.
--
burnus at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |burnus at gcc dot gnu dot
| |org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Keywords| |ice-on-valid-code
Last reconfirmed|0000-00-00 00:00:00 |2008-11-12 22:37:24
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (6 preceding siblings ...)
2008-11-12 22:38 ` burnus at gcc dot gnu dot org
@ 2008-11-12 22:44 ` mikael at gcc dot gnu dot org
2008-11-12 23:03 ` kargl at gcc dot gnu dot org
` (8 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: mikael at gcc dot gnu dot org @ 2008-11-12 22:44 UTC (permalink / raw)
To: gcc-bugs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1144 bytes --]
------- Comment #8 from mikael at gcc dot gnu dot org 2008-11-12 22:43 -------
I tried to reduce the case.
module bar
implicit none
contains
!
elemental function trim_append(xx,yy) result(xy)
character (len=*), intent(in) :: xx,yy
character (len=len(xx) + len(yy)) :: xy
xy = xx // yy
end function trim_append
!
function same(xx) result(yy)
character (len=*), intent(in) :: xx(:)
character (len=len(xx)) :: yy(size(xx))
yy = xx
end function same
!
subroutine xmain()
character(len=2) :: c(1)
c = trim_append(["a"],same(["b"]))
end subroutine xmain
!
end module bar
pr38095.f90:5: erreur interne du compilateur: dans gfc_trans_create_temp_array,
à fortran/trans-array.c:648
Veuillez soumettre un rapport complet d'anomalies,
avec le source pré-traité si nécessaire.
Consultez <http://gcc.gnu.org/bugs.html> pour plus de détail.
I bet some of you guys recognize that old friend of ours, PR31610, whose patch
was reverted in PR37903.
Of course characters are a special (understand: not working) case. Argh!
This is probably unrelated to the original ICE though.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (7 preceding siblings ...)
2008-11-12 22:44 ` mikael at gcc dot gnu dot org
@ 2008-11-12 23:03 ` kargl at gcc dot gnu dot org
2008-11-12 23:43 ` burnus at gcc dot gnu dot org
` (7 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: kargl at gcc dot gnu dot org @ 2008-11-12 23:03 UTC (permalink / raw)
To: gcc-bugs
------- Comment #9 from kargl at gcc dot gnu dot org 2008-11-12 23:02 -------
The problem appears to be with the reference to SAME() in
subroutine xmain()
call foo(trim_append(["a"],same(["b"])))
end subroutine xmain
If one changes this to
call foo(trim_append(["a"],["b"]))
the code compiles. So, it appears that a temporary array is not
be probably created.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (8 preceding siblings ...)
2008-11-12 23:03 ` kargl at gcc dot gnu dot org
@ 2008-11-12 23:43 ` burnus at gcc dot gnu dot org
2008-11-12 23:46 ` burnus at gcc dot gnu dot org
` (6 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: burnus at gcc dot gnu dot org @ 2008-11-12 23:43 UTC (permalink / raw)
To: gcc-bugs
------- Comment #10 from burnus at gcc dot gnu dot org 2008-11-12 23:42 -------
Some debugging shows that sym->name is "same" and sym->attr.function == 1.
Furthermore is arg1->expr_type == EXPR_FUNCTION and arg1->ts.cl->length ==
NULL.
(For cross referencing: http://gcc.gnu.org/ml/fortran/2007-12/msg00160.html is
the mail to the patch which added the TODO line.)
Using the following patch and calling xmain, the program prints
"size(labels)= 1".
--- trans-expr.c (Revision 141811)
+++ trans-expr.c
@@ -1912,8 +1912,9 @@ gfc_map_intrinsic_function (gfc_expr *ex
case GFC_ISYM_LEN:
/* TODO figure out why this condition is necessary. */
if (sym->attr.function
- && arg1->ts.cl->length->expr_type != EXPR_CONSTANT
- && arg1->ts.cl->length->expr_type != EXPR_VARIABLE)
+ && (arg1->ts.cl->length == NULL
+ || (arg1->ts.cl->length->expr_type != EXPR_CONSTANT
+ && arg1->ts.cl->length->expr_type != EXPR_VARIABLE)))
return false;
new_expr = gfc_copy_expr (arg1->ts.cl->length);
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (9 preceding siblings ...)
2008-11-12 23:43 ` burnus at gcc dot gnu dot org
@ 2008-11-12 23:46 ` burnus at gcc dot gnu dot org
2008-11-15 10:34 ` burnus at gcc dot gnu dot org
` (5 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: burnus at gcc dot gnu dot org @ 2008-11-12 23:46 UTC (permalink / raw)
To: gcc-bugs
------- Comment #11 from burnus at gcc dot gnu dot org 2008-11-12 23:45 -------
(In reply to comment #8)
> I tried to reduce the case.
> This is probably unrelated to the original ICE though.
Looks unrelated, but still should be fixed; I think ICE from comment 8 is a
regression with regards to gfortran 4.1, 4.2 and 4.3.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (10 preceding siblings ...)
2008-11-12 23:46 ` burnus at gcc dot gnu dot org
@ 2008-11-15 10:34 ` burnus at gcc dot gnu dot org
2008-11-15 17:41 ` pault at gcc dot gnu dot org
` (4 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: burnus at gcc dot gnu dot org @ 2008-11-15 10:34 UTC (permalink / raw)
To: gcc-bugs
------- Comment #12 from burnus at gcc dot gnu dot org 2008-11-15 10:33 -------
(In reply to comment #11)
> > I tried to reduce the case.
> > This is probably unrelated to the original ICE though.
> Looks unrelated, but still should be fixed; I think ICE from comment 8 is a
> regression with regards to gfortran 4.1, 4.2 and 4.3.
I filled PR38119 for that PR.
For my patch, it worked at least for the test case, since I currently cannot
boot strap (PPL linking problem), I cannot regtest :-(
If someone wants to take over ...
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (11 preceding siblings ...)
2008-11-15 10:34 ` burnus at gcc dot gnu dot org
@ 2008-11-15 17:41 ` pault at gcc dot gnu dot org
2008-11-15 18:07 ` burnus at gcc dot gnu dot org
` (3 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: pault at gcc dot gnu dot org @ 2008-11-15 17:41 UTC (permalink / raw)
To: gcc-bugs
------- Comment #13 from pault at gcc dot gnu dot org 2008-11-15 17:40 -------
(In reply to comment #12)
> I filled PR38119 for that PR.
This is probably stupid but what is the difference between the two PRs?
Paul
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (12 preceding siblings ...)
2008-11-15 17:41 ` pault at gcc dot gnu dot org
@ 2008-11-15 18:07 ` burnus at gcc dot gnu dot org
2008-11-16 12:23 ` pault at gcc dot gnu dot org
` (2 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: burnus at gcc dot gnu dot org @ 2008-11-15 18:07 UTC (permalink / raw)
To: gcc-bugs
------- Comment #14 from burnus at gcc dot gnu dot org 2008-11-15 18:06 -------
(In reply to comment #13)
> > I filled PR38119 for that PR.
> This is probably stupid but what is the difference between the two PRs?
The program of comment 0 of this PR (PR 38095) gives an ICE with all gfortran
versions and is fixed by the patch in comment 10.
The program of comment 8 and thus of PR 38119 fails only with gfortran 4.4 (=
regression) and ICEs at a completely different place.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (13 preceding siblings ...)
2008-11-15 18:07 ` burnus at gcc dot gnu dot org
@ 2008-11-16 12:23 ` pault at gcc dot gnu dot org
2008-11-16 14:22 ` burnus at gcc dot gnu dot org
2008-11-16 14:22 ` burnus at gcc dot gnu dot org
16 siblings, 0 replies; 18+ messages in thread
From: pault at gcc dot gnu dot org @ 2008-11-16 12:23 UTC (permalink / raw)
To: gcc-bugs
------- Comment #15 from pault at gcc dot gnu dot org 2008-11-16 12:22 -------
(In reply to comment #14)
> (In reply to comment #13)
> > > I filled PR38119 for that PR.
> > This is probably stupid but what is the difference between the two PRs?
'twas stupid - I missed the difference between the testcases:-(
Paul
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (14 preceding siblings ...)
2008-11-16 12:23 ` pault at gcc dot gnu dot org
@ 2008-11-16 14:22 ` burnus at gcc dot gnu dot org
2008-11-16 14:22 ` burnus at gcc dot gnu dot org
16 siblings, 0 replies; 18+ messages in thread
From: burnus at gcc dot gnu dot org @ 2008-11-16 14:22 UTC (permalink / raw)
To: gcc-bugs
------- Comment #16 from burnus at gcc dot gnu dot org 2008-11-16 14:21 -------
Subject: Bug 38095
Author: burnus
Date: Sun Nov 16 14:19:38 2008
New Revision: 141917
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=141917
Log:
2008-11-16 Tobias Burnus <burnus@net-b.de>
PR fortran/38095
* trans-expr.c (gfc_map_intrinsic_function): Fix pointer access.
2008-11-16 Tobias Burnus <burnus@net-b.de>
PR fortran/38095
* gfortran.dg/char_length_13.f90: New test.
Added:
trunk/gcc/testsuite/gfortran.dg/char_length_13.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-expr.c
trunk/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug fortran/38095] character ICE
2008-11-12 18:58 [Bug fortran/38095] New: character ICE vivekrao4 at yahoo dot com
` (15 preceding siblings ...)
2008-11-16 14:22 ` burnus at gcc dot gnu dot org
@ 2008-11-16 14:22 ` burnus at gcc dot gnu dot org
16 siblings, 0 replies; 18+ messages in thread
From: burnus at gcc dot gnu dot org @ 2008-11-16 14:22 UTC (permalink / raw)
To: gcc-bugs
------- Comment #17 from burnus at gcc dot gnu dot org 2008-11-16 14:21 -------
FIXED on the trunk (4.4.0). Thanks for the report!
--
burnus at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38095
^ permalink raw reply [flat|nested] 18+ messages in thread