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

--- Comment #8 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <[email protected]>:

https://gcc.gnu.org/g:a6687d123301287a26c09073d360bc2d93176666

commit r16-6283-ga6687d123301287a26c09073d360bc2d93176666
Author: Jakub Jelinek <[email protected]>
Date:   Fri Dec 19 16:44:16 2025 +0100

    c++: Suppress -Wreturn-type warnings for functions with failed assertions
[PR91388]

    This is something Jonathan has asked for recently.  E.g. in the recent
    libstdc++ r16-6177 random.tcc changes, there was
              if constexpr (__d <= 32)
                return __generate_canonical_any<_RealT, uint64_t, __d>(__urng);
              else
                {
     #if defined(__SIZEOF_INT128__)
                  static_assert(__d <= 64,
                    "irregular RNG with float precision >64 is not supported");
                  return __generate_canonical_any<
                    _RealT, unsigned __int128, __d>(__urng);
     #else
                  static_assert(false, "irregular RNG with float precision"
                     " >32 requires __int128 support");
     #endif
                }
    and when we hit there the static_assert, we don't get just an error about
    that, but also a -Wreturn-type warning in the same function because that
    path falls through to the end of function without returning a value.
    But a function with a failed static_assert is erroneous and will never
    fall through to the end.  We could treat failed static_assert in functions
    as __builtin_unreachable (), but I think it doesn't matter where exactly
    in a function static_assert(false); appears, so this patch just suppresses
    -Wreturn-type warning in that function instead.

    2025-12-19  Jakub Jelinek  <[email protected]>

            PR c++/91388
            * semantics.cc (finish_static_assert): Suppress -Wreturn-type
warnings
            in functions with failed assertions.

            * g++.dg/cpp1z/static_assert1.C: New test.
  • [Bug c++/91388] -Wreturn-type &... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to