* [Bug fortran/38907] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
@ 2009-01-18 21:44 ` kargl at gcc dot gnu dot org
2009-01-18 21:47 ` [Bug fortran/38907] [regression 4.3/4.4] " kargl at gcc dot gnu dot org
` (10 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: kargl at gcc dot gnu dot org @ 2009-01-18 21:44 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from kargl at gcc dot gnu dot org 2009-01-18 21:44 -------
Confirmed for both ICEs.
--
kargl 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 |2009-01-18 21:44:29
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [regression 4.3/4.4] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
2009-01-18 21:44 ` [Bug fortran/38907] " kargl at gcc dot gnu dot org
@ 2009-01-18 21:47 ` kargl at gcc dot gnu dot org
2009-01-18 21:47 ` kargl at gcc dot gnu dot org
` (9 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: kargl at gcc dot gnu dot org @ 2009-01-18 21:47 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from kargl at gcc dot gnu dot org 2009-01-18 21:47 -------
Both variations of the program work with 4.2.5, so this is
a regression.
--
kargl at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |4.3.3 4.4.0
Known to work| |4.2.5
Summary|ICE when contained function |[regression 4.3/4.4] ICE
|has same name as module |when contained function has
|function and used in |same name as module function
|expression |and used in expression
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [regression 4.3/4.4] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
2009-01-18 21:44 ` [Bug fortran/38907] " kargl at gcc dot gnu dot org
2009-01-18 21:47 ` [Bug fortran/38907] [regression 4.3/4.4] " kargl at gcc dot gnu dot org
@ 2009-01-18 21:47 ` kargl at gcc dot gnu dot org
2009-01-18 22:28 ` [Bug fortran/38907] [4.3/4.4 Regression ] " burnus at gcc dot gnu dot org
` (8 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: kargl at gcc dot gnu dot org @ 2009-01-18 21:47 UTC (permalink / raw)
To: gcc-bugs
--
kargl at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |sgk at troutmask dot apl dot
| |washington dot edu
Priority|P3 |P4
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [4.3/4.4 Regression ] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
` (2 preceding siblings ...)
2009-01-18 21:47 ` kargl at gcc dot gnu dot org
@ 2009-01-18 22:28 ` burnus at gcc dot gnu dot org
2009-01-19 22:34 ` mikael at gcc dot gnu dot org
` (7 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-01-18 22:28 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from burnus at gcc dot gnu dot org 2009-01-18 22:27 -------
Confirm. Thanks for the report!
Valgrind shows:
==20941== Conditional jump or move depends on uninitialised value(s)
==20941== at 0x46C602: gfc_resolve_expr (resolve.c:4353)
==20941== by 0x46BC22: gfc_resolve_expr (resolve.c:3057)
==20941== by 0x472944: resolve_code (resolve.c:6676)
==20941== Use of uninitialised value of size 8
==20941== at 0x46C608: gfc_resolve_expr (resolve.c:4353)
==20941== Invalid read of size 8
==20941== at 0x46C608: gfc_resolve_expr (resolve.c:4353)
That line is:
4349 gfc_match_rvalue (&expr);
4350 gfc_clear_error ();
4351 gfc_buffer_error (0);
4352
4353 gcc_assert (expr && sym == expr->symtree->n.sym);
I added some debug printfs and valgrind shows invalid reads for:
expr == NULL
and
expr->symtree
where the latter results in a segfault.
I think the problem occurs if gfc_match_rvalue does not match. Then the
argument "&expr" will remain unmodified.
If one applies the following patch, the compilation will fail with the bogus
error
RDA(1,2) = + S_REAL_SUM_I(1.0,2.0)
1
Error: Unclassifiable statement at (1)
--- resolve.c (Revision 143486)
+++ resolve.c
@@ -4348,3 +4348,4 @@ check_host_association (gfc_expr *e)
only integers and vectors can be involved. */
- gfc_match_rvalue (&expr);
+ if (gfc_match_rvalue (&expr) == MATCH_YES)
+ {
gfc_clear_error ();
@@ -4359,2 +4360,3 @@ check_host_association (gfc_expr *e)
gfc_current_locus = temp_locus;
+ }
}
--
burnus at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
OtherBugsDependingO| |32834
nThis| |
Keywords| |ice-on-valid-code
Known to work|4.2.5 |4.2.5 4.3.1
Summary|[regression 4.3/4.4] ICE |[4.3/4.4 Regression ] ICE
|when contained function has |when contained function has
|same name as module function|same name as module function
|and used in expression |and used in expression
Target Milestone|--- |4.3.4
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [4.3/4.4 Regression ] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
` (3 preceding siblings ...)
2009-01-18 22:28 ` [Bug fortran/38907] [4.3/4.4 Regression ] " burnus at gcc dot gnu dot org
@ 2009-01-19 22:34 ` mikael at gcc dot gnu dot org
2009-01-19 22:40 ` dominiq at lps dot ens dot fr
` (6 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: mikael at gcc dot gnu dot org @ 2009-01-19 22:34 UTC (permalink / raw)
To: gcc-bugs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 683 bytes --]
------- Comment #4 from mikael at gcc dot gnu dot org 2009-01-19 22:33 -------
This removes the ICE:
Index: primary.c
===================================================================
--- primary.c (révision 143501)
+++ primary.c (copie de travail)
@@ -2370,6 +2370,8 @@
bool implicit_char;
gfc_ref *ref;
+ where = gfc_current_locus;
+
m = gfc_match_name (name);
if (m != MATCH_YES)
return m;
@@ -2385,7 +2387,6 @@
sym = symtree->n.sym;
e = NULL;
- where = gfc_current_locus;
/* If this is an implicit do loop index and implicitly typed,
it should not be host associated. */
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [4.3/4.4 Regression ] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
` (4 preceding siblings ...)
2009-01-19 22:34 ` mikael at gcc dot gnu dot org
@ 2009-01-19 22:40 ` dominiq at lps dot ens dot fr
2009-01-19 23:08 ` pault at gcc dot gnu dot org
` (5 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: dominiq at lps dot ens dot fr @ 2009-01-19 22:40 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from dominiq at lps dot ens dot fr 2009-01-19 22:39 -------
> This removes the ICE: ...
Do you understand why?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [4.3/4.4 Regression ] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
` (5 preceding siblings ...)
2009-01-19 22:40 ` dominiq at lps dot ens dot fr
@ 2009-01-19 23:08 ` pault at gcc dot gnu dot org
2009-01-20 19:48 ` mikael at gcc dot gnu dot org
` (4 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-01-19 23:08 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from pault at gcc dot gnu dot org 2009-01-19 23:08 -------
Created an attachment (id=17148)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17148&action=view)
A patch for the PR
This regtests and bootstraps on FC9/x86_i64. I'll do ChangeLogs and so on
tomorrow.
Thanks for the report, Dick!
Paul
--
pault at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |pault at gcc dot gnu dot org
|dot org |
Status|NEW |ASSIGNED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [4.3/4.4 Regression ] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
` (6 preceding siblings ...)
2009-01-19 23:08 ` pault at gcc dot gnu dot org
@ 2009-01-20 19:48 ` mikael at gcc dot gnu dot org
2009-01-20 21:57 ` pault at gcc dot gnu dot org
` (3 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: mikael at gcc dot gnu dot org @ 2009-01-20 19:48 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from mikael at gcc dot gnu dot org 2009-01-20 19:48 -------
(In reply to comment #5)
> > This removes the ICE: ...
>
> Do you understand why?
>
In the following:
RDA(1,2) = + S_REAL_SUM_I(1.0,2.0)
gfc_match_rvalue sets where for the rhs to the marked position below:
RDA(1,2) = + S_REAL_SUM_I(1.0,2.0)
^
check_host_association (before Paul's patch) calls gfc_match_rvalue again
starting at the e->where position (which is wrong). The match fails and there
is no code to handle it as it is unexpected.
With my patch where is set at the beginning of the function name, permitting
proper match. This patch is needed I think, independently of Paul's one. For
4.5 if I don't forget about it.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [4.3/4.4 Regression ] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
` (7 preceding siblings ...)
2009-01-20 19:48 ` mikael at gcc dot gnu dot org
@ 2009-01-20 21:57 ` pault at gcc dot gnu dot org
2009-01-20 21:59 ` [Bug fortran/38907] [4.3 " pault at gcc dot gnu dot org
` (2 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-01-20 21:57 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from pault at gcc dot gnu dot org 2009-01-20 21:57 -------
Subject: Bug 38907
Author: pault
Date: Tue Jan 20 21:56:49 2009
New Revision: 143530
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=143530
Log:
2009-01-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38907
* resolve.c (check_host_association): Remove the matching to
correct an incorrect host association and use manipulation of
the expression instead.
2009-01-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38907
* gfortran.dg/host_assoc_function_7.f90: New test.
Added:
trunk/gcc/testsuite/gfortran.dg/host_assoc_function_7.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/resolve.c
trunk/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [4.3 Regression ] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
` (8 preceding siblings ...)
2009-01-20 21:57 ` pault at gcc dot gnu dot org
@ 2009-01-20 21:59 ` pault at gcc dot gnu dot org
2009-01-26 6:16 ` pault at gcc dot gnu dot org
2009-01-26 6:16 ` pault at gcc dot gnu dot org
11 siblings, 0 replies; 13+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-01-20 21:59 UTC (permalink / raw)
To: gcc-bugs
------- Comment #9 from pault at gcc dot gnu dot org 2009-01-20 21:59 -------
Fixed on trunk
Thanks for the report.
Paul
--
pault at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[4.3/4.4 Regression ] ICE |[4.3 Regression ] ICE when
|when contained function has |contained function has same
|same name as module function|name as module function and
|and used in expression |used in expression
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [4.3 Regression ] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
` (9 preceding siblings ...)
2009-01-20 21:59 ` [Bug fortran/38907] [4.3 " pault at gcc dot gnu dot org
@ 2009-01-26 6:16 ` pault at gcc dot gnu dot org
2009-01-26 6:16 ` pault at gcc dot gnu dot org
11 siblings, 0 replies; 13+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-01-26 6:16 UTC (permalink / raw)
To: gcc-bugs
------- Comment #10 from pault at gcc dot gnu dot org 2009-01-26 06:15 -------
Subject: Bug 38907
Author: pault
Date: Mon Jan 26 06:15:41 2009
New Revision: 143671
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=143671
Log:
2009-01-26 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38907
Backport from trunk
* resolve.c (check_host_association): Remove the matching to
correct an incorrect host association and use manipulation of
the expression instead.
2009-01-26 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38907
Backport from trunk
* gfortran.dg/host_assoc_function_7.f90: New test.
Added:
branches/gcc-4_3-branch/gcc/testsuite/gfortran.dg/host_assoc_function_7.f90
Modified:
branches/gcc-4_3-branch/gcc/fortran/ChangeLog
branches/gcc-4_3-branch/gcc/fortran/resolve.c
branches/gcc-4_3-branch/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug fortran/38907] [4.3 Regression ] ICE when contained function has same name as module function and used in expression
2009-01-18 21:21 [Bug fortran/38907] New: ICE when contained function has same name as module function and used in expression dick dot hendrickson at gmail dot com
` (10 preceding siblings ...)
2009-01-26 6:16 ` pault at gcc dot gnu dot org
@ 2009-01-26 6:16 ` pault at gcc dot gnu dot org
11 siblings, 0 replies; 13+ messages in thread
From: pault at gcc dot gnu dot org @ 2009-01-26 6:16 UTC (permalink / raw)
To: gcc-bugs
------- Comment #11 from pault at gcc dot gnu dot org 2009-01-26 06:16 -------
Fixed on trunk and 4.3
Thanks for the report and thanks to Mikael for the fix.
Paul
--
pault at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38907
^ permalink raw reply [flat|nested] 13+ messages in thread