* [Patch, fortran] PR103471 - [11/12/13/14 Regression] ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1114 [not found] <CAGkQGiJv6oqU8_PWiWq-U4BpyDrk8nhvqtm8PC56cQVZWJQpxw@mail.gmail.com> @ 2024-04-19 17:56 ` Paul Richard Thomas 2024-04-19 18:33 ` Harald Anlauf 1 sibling, 0 replies; 5+ messages in thread From: Paul Richard Thomas @ 2024-04-19 17:56 UTC (permalink / raw) To: fortran [-- Attachment #1.1: Type: text/plain, Size: 981 bytes --] Hi All, This is a more or less obvious patch. The action is in resolve.cc. The chunk in symbol.cc is a tidy up of a diagnostic marker to distinguish where the 'no IMPLICIT type' error was coming from and the chunk in trans-decl.cc follows from discussion with Harald on the PR. Regtests fine. OK for mainline and backporting in a couple of weeks? Paul Fortran: Detect 'no implicit type' error in right place [PR103471] 2024-04-19 Paul Thomas <pault@gcc.gnu.org> gcc/fortran PR fortran/103471 * resolve.cc (gfc_resolve_index_1): Block index expressions of unknown type from being converted to default integer, avoiding the fatal error in trans-decl.cc. * symbol.cc (gfc_set_default_type): Remove '(symbol)' from the 'no IMPLICIT type' error message. * trans-decl.cc (gfc_get_symbol_decl): Change fatal error locus to that of the symbol declaration. (gfc_trans_deferred_vars): Remove two trailing tabs. gcc/testsuite/ PR fortran/103471 * gfortran.dg/pr103471.f90: New test. [-- Attachment #2: submit.diff --] [-- Type: application/x-patch, Size: 2767 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Patch, fortran] PR103471 - [11/12/13/14 Regression] ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1114 [not found] <CAGkQGiJv6oqU8_PWiWq-U4BpyDrk8nhvqtm8PC56cQVZWJQpxw@mail.gmail.com> 2024-04-19 17:56 ` [Patch, fortran] PR103471 - [11/12/13/14 Regression] ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1114 Paul Richard Thomas @ 2024-04-19 18:33 ` Harald Anlauf 2024-04-20 7:54 ` Paul Richard Thomas 1 sibling, 1 reply; 5+ messages in thread From: Harald Anlauf @ 2024-04-19 18:33 UTC (permalink / raw) To: Paul Richard Thomas, gcc-patches, fortran Hi Paul, the patch is OK, but I had to manually fix it. I wonder how you managed to produce: diff --git a/gcc/testsuite/gfortran.dg/pr93484.f90 b/gcc/testsuite/gfortran.dg/pr93484.f90 new file mode 100644 index 00000000000..4dcad47e8da --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr103471.f90 @@ -0,0 +1,13 @@ A minor comment on the error message and the testcase. Take for example: subroutine sub implicit none real, external :: x real :: y(10) integer :: kk print *, [real(x(k))] ! print *, [real(y(k))] end The original testcase in the PR would - without implicit none - resemble the function invocation x(k) here and emit the error: Fatal Error: k at (1) has no default type compilation terminated. while commenting the first print and uncommenting the second would emit the message Error: Symbol 'k' at (1) has no IMPLICIT type; did you mean 'kk'? Thus I have the impression that the testcase tests something different on the one hand, and on the other I wonder if we would want to change the error message and replace "no default type" to "no IMPLICIT type". It still would not hit the fuzzy check, but that is something that might not be important now. Thanks, Harald On 4/19/24 18:52, Paul Richard Thomas wrote: > Hi All, > > This is a more or less obvious patch. The action is in resolve.cc. The > chunk in symbol.cc is a tidy up of a diagnostic marker to distinguish where > the 'no IMPLICIT type' error was coming from and the chunk in trans-decl.cc > follows from discussion with Harald on the PR. > > Regtests fine. OK for mainline and backporting in a couple of weeks? > > Paul > > Fortran: Detect 'no implicit type' error in right place [PR103471] > > 2024-04-19 Paul Thomas <pault@gcc.gnu.org> > > gcc/fortran > PR fortran/103471 > * resolve.cc (gfc_resolve_index_1): Block index expressions of > unknown type from being converted to default integer, avoiding > the fatal error in trans-decl.cc. > * symbol.cc (gfc_set_default_type): Remove '(symbol)' from the > 'no IMPLICIT type' error message. > * trans-decl.cc (gfc_get_symbol_decl): Change fatal error locus > to that of the symbol declaration. > (gfc_trans_deferred_vars): Remove two trailing tabs. > > gcc/testsuite/ > PR fortran/103471 > * gfortran.dg/pr103471.f90: New test. > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Patch, fortran] PR103471 - [11/12/13/14 Regression] ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1114 2024-04-19 18:33 ` Harald Anlauf @ 2024-04-20 7:54 ` Paul Richard Thomas 2024-04-20 13:05 ` Harald Anlauf 0 siblings, 1 reply; 5+ messages in thread From: Paul Richard Thomas @ 2024-04-20 7:54 UTC (permalink / raw) To: Harald Anlauf; +Cc: gcc-patches, fortran [-- Attachment #1: Type: text/plain, Size: 1392 bytes --] Hi Harald, > > the patch is OK, but I had to manually fix it. I wonder how you managed > to produce: > Yes, I had to use --whitespace fix when I reapplied it a few minutes ago. > > diff --git a/gcc/testsuite/gfortran.dg/pr93484.f90 > I had followed comment 1 in the PR and wrongly named the file because of it. Now corrected. > > subroutine sub > implicit none > real, external :: x > real :: y(10) > integer :: kk > print *, [real(x(k))] > ! print *, [real(y(k))] > end > This is another problem, somewhere upstream from resolve.cc, which I have just spent an hour failing to find. In the presence of both print statements, in no matter which order, it is the error in trans-decl.cc that applies. > Thus I have the impression that the testcase tests something different > on the one hand, and on the other I wonder if we would want to change > the error message and replace "no default type" to "no IMPLICIT type". > It still would not hit the fuzzy check, but that is something that > might not be important now. > The fuzzy check was intended to ensure that the error was being detected in the "right" place. I want to keep the "no default type" message for the time being at least so as to identify exactly where it comes from. Getting to trans-decl.cc with an unknown type is just wrong. I'll come back to you on this. Thanks for the report. Paul ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Patch, fortran] PR103471 - [11/12/13/14 Regression] ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1114 2024-04-20 7:54 ` Paul Richard Thomas @ 2024-04-20 13:05 ` Harald Anlauf 2024-04-20 17:31 ` Paul Richard Thomas 0 siblings, 1 reply; 5+ messages in thread From: Harald Anlauf @ 2024-04-20 13:05 UTC (permalink / raw) To: Paul Richard Thomas; +Cc: gcc-patches, fortran Hi Paul! On 4/20/24 09:54, Paul Richard Thomas wrote: >> subroutine sub >> implicit none >> real, external :: x >> real :: y(10) >> integer :: kk >> print *, [real(x(k))] >> ! print *, [real(y(k))] >> end >> > > This is another problem, somewhere upstream from resolve.cc, which I have > just spent an hour failing to find. In the presence of both print > statements, in no matter which order, it is the error in trans-decl.cc that > applies. Indeed, the gfc_fatal_error always wins. (I had tried to replace it with gfc_error()/return NULL_TREE, but then I hit an ICE later on. When trying to find out who added the said code, guess whom I found :) > >> Thus I have the impression that the testcase tests something different >> on the one hand, and on the other I wonder if we would want to change >> the error message and replace "no default type" to "no IMPLICIT type". >> It still would not hit the fuzzy check, but that is something that >> might not be important now. >> > > The fuzzy check was intended to ensure that the error was being detected in > the "right" place. I want to keep the "no default type" message for the > time being at least so as to identify exactly where it comes from. Getting > to trans-decl.cc with an unknown type is just wrong. True. > I'll come back to you on this. This PR is marked as a regression. Depending on your progress, it might be worth to consider fixing what you think is needed to get rid of the regression marker and defer the improvement of the diagnostics to a second patch. Harald > Thanks for the report. > > Paul > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Patch, fortran] PR103471 - [11/12/13/14 Regression] ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1114 2024-04-20 13:05 ` Harald Anlauf @ 2024-04-20 17:31 ` Paul Richard Thomas 0 siblings, 0 replies; 5+ messages in thread From: Paul Richard Thomas @ 2024-04-20 17:31 UTC (permalink / raw) To: Harald Anlauf; +Cc: fortran [-- Attachment #1: Type: text/plain, Size: 426 bytes --] > > > Hi Harald, > Indeed, the gfc_fatal_error always wins. :-( > > This PR is marked as a regression. Depending on your progress, > it might be worth to consider fixing what you think is needed > to get rid of the regression marker and defer the improvement > of the diagnostics to a second patch. I am mindful that the PR is a regression. One way or another, I will commit the basic fix tomorrow evening. Cheers Paul ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-04-20 17:32 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <CAGkQGiJv6oqU8_PWiWq-U4BpyDrk8nhvqtm8PC56cQVZWJQpxw@mail.gmail.com> 2024-04-19 17:56 ` [Patch, fortran] PR103471 - [11/12/13/14 Regression] ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1114 Paul Richard Thomas 2024-04-19 18:33 ` Harald Anlauf 2024-04-20 7:54 ` Paul Richard Thomas 2024-04-20 13:05 ` Harald Anlauf 2024-04-20 17:31 ` Paul Richard Thomas
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).