This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/64181] New: 'noexcept' on a lambda sometimes appears to get optimised away at -O2 (or above).


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

            Bug ID: 64181
           Summary: 'noexcept' on a lambda sometimes appears to get
                    optimised away at -O2 (or above).
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rogero at howzatt dot demon.co.uk

Created attachment 34188
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34188&action=edit
Demonstration of the problem

In some cases a program containing noexcept on a lambda allows exceptions
thrown inside the body of the lambda to propagate out of the lambda.

We have managed to simplify the problem down to a small test case (attached as
noexcept_optimisation_bug.cpp) - the issue seems to occur when the lambda is
called inside a virtual function and in turns calls a virtual function.

The example contains a 'volatile' pointer -- the original code used a shared
pointer here, it seems that you just need "enough" here to prevent the
optimiser remove the function completely.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]