public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/102417] New: Wrong error message about character length with -std=f2018
@ 2021-09-20 19:11 gscfq@t-online.de
  2021-09-20 19:12 ` [Bug fortran/102417] " gscfq@t-online.de
  2023-08-28 18:14 ` anlauf at gcc dot gnu.org
  0 siblings, 2 replies; 3+ messages in thread
From: gscfq@t-online.de @ 2021-09-20 19:11 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102417

            Bug ID: 102417
           Summary: Wrong error message about character length with
                    -std=f2018
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gscfq@t-online.de
  Target Milestone: ---

An embedded AC together with option -std=f2018 (or f2008 etc.)
produces a misleading error message. Typespec is explicitly given.
Affects versions down to at least r5.

That unique error message comes from line 1888 in decl.c.
Issue is eventually related to pr102315.


$ cat z1.f90
program p
   character :: x = 'a'
   character(4) :: y(3)
   y = [[character(4) :: x, 'b', 'c']]
   print *, y
end


$ gfortran-12-20210919 -c z1.f90 -std=f2018 -Wall
z1.f90:4:27:

    4 |    y = [[character(4) :: x, 'b', 'c']]
      |                           1
Warning: CHARACTER expression at (1) is being truncated (4/1)
[-Wcharacter-truncation]
z1.f90:4:27: Error: The CHARACTER elements of the array constructor at (1) must
have the same length (4/1)
z1.f90:4:32:

    4 |    y = [[character(4) :: x, 'b', 'c']]
      |                                1
Warning: CHARACTER expression at (1) is being truncated (4/1)
[-Wcharacter-truncation]
z1.f90:4:32: Error: The CHARACTER elements of the array constructor at (1) must
have the same length (4/1)

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

* [Bug fortran/102417] Wrong error message about character length with -std=f2018
  2021-09-20 19:11 [Bug fortran/102417] New: Wrong error message about character length with -std=f2018 gscfq@t-online.de
@ 2021-09-20 19:12 ` gscfq@t-online.de
  2023-08-28 18:14 ` anlauf at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: gscfq@t-online.de @ 2021-09-20 19:12 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102417

--- Comment #1 from G. Steinmetz <gscfq@t-online.de> ---

And obviously, works with a single AC :


$ cat z0.f90
program p
   character :: x = 'a'
   character(4) :: y(3)
   y = [character(4) :: x, 'b', 'c']
   print *, y
end

$ gfortran-12-20210919 z0.f90 -std=f2018 -Wall && ./a.out
 a   b   c

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

* [Bug fortran/102417] Wrong error message about character length with -std=f2018
  2021-09-20 19:11 [Bug fortran/102417] New: Wrong error message about character length with -std=f2018 gscfq@t-online.de
  2021-09-20 19:12 ` [Bug fortran/102417] " gscfq@t-online.de
@ 2023-08-28 18:14 ` anlauf at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: anlauf at gcc dot gnu.org @ 2023-08-28 18:14 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102417

anlauf at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
           Keywords|diagnostic                  |rejects-valid, wrong-code
                 CC|                            |anlauf at gcc dot gnu.org
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=107721
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2023-08-28

--- Comment #2 from anlauf at gcc dot gnu.org ---
It appears that we lose the typespec for nested ctors, so I guess this PR
is related to pr107721.

Slight variation of testcase:

program p
  character    :: x = 'a'
  character(4) :: y(2)
  y = [ character(4) :: x, 'b' ]
  y = [[character(4) :: x, 'b']]
  print *, y
  print *, len ([ character(4) :: x, 'b' ])
  print *, len ([[character(4) :: x, 'b']])
end

Compiling with -fdump-fortran-original, I see:

  code:
  ASSIGN p:y(FULL) (/ p:x , 'b   ' /)
  ASSIGN p:y(FULL) (/ p:x , 'b' /)
  WRITE UNIT=6 FMT=-1
  TRANSFER p:y(FULL)
  DT_END
  WRITE UNIT=6 FMT=-1
  TRANSFER 4
  DT_END
  WRITE UNIT=6 FMT=-1
  TRANSFER 1
  DT_END

Clearly, the code for the lines with nested ctors is wrong.

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

end of thread, other threads:[~2023-08-28 18:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-20 19:11 [Bug fortran/102417] New: Wrong error message about character length with -std=f2018 gscfq@t-online.de
2021-09-20 19:12 ` [Bug fortran/102417] " gscfq@t-online.de
2023-08-28 18:14 ` anlauf at gcc dot gnu.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).