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

Julian Waters <tanksherman27 at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tanksherman27 at gmail dot com

--- Comment #7 from Julian Waters <tanksherman27 at gmail dot com> ---
Strangely, the following works if compiled with optimizations enabled, -O1 and
above, but not with -O0, when optimizations are disabled

[[gnu::extended(; [dispatcher] "i" (static_cast<void (*) () noexcept>([] ()
noexcept -> void {})); ; start)]]
asm (R"(
        .endif
        .rva %l[start], 1f, %c[dispatcher], 2f
        .seh_code
)");

With -O0 the error is

exceptions.cpp: In function 'void exceptions()':
exceptions.cpp:59:5: warning: 'asm' operand 0 probably does not match
constraints
   59 |     asm (R"(
      |     ^~~
exceptions.cpp:59:5: error: impossible constraint in 'asm'

With -O1 and above, %c[dispatcher] yields:

.rva .L2, 1f, _ZZL10exceptionsvENUlPVK19_EXCEPTION_POINTERSPVKvE0_4_FUNES1_S3_,
2f

Reply via email to