public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/114012] New: overloaded unary operator called twice
@ 2024-02-20 14:14 alexandre.poux at coria dot fr
  2024-02-20 20:32 ` [Bug fortran/114012] " anlauf at gcc dot gnu.org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: alexandre.poux at coria dot fr @ 2024-02-20 14:14 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 114012
           Summary: overloaded unary operator called twice
           Product: gcc
           Version: 13.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: alexandre.poux at coria dot fr
  Target Milestone: ---

Created attachment 57470
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57470&action=edit
a program triggering the duplicate call on unary operator

In the attached code, I overloaded assignment (assign) and the unary operator
'-' (neg) for a custom class

The assign subroutine receive a polymorphic argument and the function neg
returns a polymorphic result.

When a simple `i = -i` is supposed to call `neg` and the `assign`, it
surprisingly call `neg` twice and then `assign`. 

Both time `neg` is called with the correct argument (the old value of `i`) so
the result is good anyway.

As far as I know, `neg` and `assign` are supposed to be pure (which they are
not, due to the print) so this should only induce a performance hit.

I've observed this on an up to date Arch linux with core/gcc-fortran 13.2.1-5
and extra/gcc12-fortran 12.3.0-3.

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

end of thread, other threads:[~2024-03-06 21:06 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-20 14:14 [Bug fortran/114012] New: overloaded unary operator called twice alexandre.poux at coria dot fr
2024-02-20 20:32 ` [Bug fortran/114012] " anlauf at gcc dot gnu.org
2024-02-25 19:44 ` anlauf at gcc dot gnu.org
2024-02-25 20:36 ` anlauf at gcc dot gnu.org
2024-02-26 17:50 ` cvs-commit at gcc dot gnu.org
2024-02-27  9:42 ` alexandre.poux at coria dot fr
2024-03-06 21:03 ` cvs-commit at gcc dot gnu.org
2024-03-06 21:06 ` 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).