LO 24.2 C++20 baseline
Terrence Enger
tenger at iseries-guru.com
Mon Nov 27 15:53:42 UTC 2023
On Tue, 2023-09-26 at 10:44 +0200, Miklos Vajna wrote:
> Hi,
>
> On Mon, Sep 25, 2023 at 01:48:01PM +0300, Stephan Bergmann <sbergman at redhat.com> wrote:
> > Was that maybe an intermittent Clang bug? It apparently doesn't hit the
> > Jenkins Clang builds, and I don't see it with trunk Clang 18 either, but
> > have dim memories that there was some issue with too-eager evaluation
> > causing something like this at some point. Do you have a way to check with
> > another Clang version, to substantiate that assumption?
>
> Yes, I can confirm downgrading to clang-12 would work around the
> problem.
>
The phrase "too-eager evaluation" caught my eye here. What I see may
be something else entirely, but here goes. I hesitate to bring it up,
because I am getting along just fine without building skia, but maybe
this will save someone a few minutes of investigation.
I am running debian-sid with clang-14 and libstdc++-13-dev. With
-std=c++20, clang++ complains about /usr/include/c++/13/chrono:
/usr/include/c++/13/chrono:2320:48: error: call to consteval function
'std::chrono::hh_mm_ss::_S_fractional_width' is not a constant expression
static constexpr unsigned fractional_width = {_S_fractional_width()};
^
/usr/include/c++/13/chrono:2320:48: note: undefined function '_S_fractional_width' cannot be
used in a constant expression
/usr/include/c++/13/chrono:2275:2: note: declared here
_S_fractional_width()
I see the problem only with C++20 and that version of the compiler and
libstdc++. I see no error message with
- gcc version 13.2.0-7
- libstdc++ version 12: both _S_fractional_width and
fractional_width are constexpr
- default version of C++
I shall copy in an excerpt from typescript of the failing build of LO
at the end of this message.
Terry.
excerpt from typescript of build
--------------------------------
[0m[37;40m[[0m[32;40mCXX[0m[37;40m][0m
workdir/UnpackedTarball/skia/src/core/SkBitmapDevice.cpp
In file included from
/home/terry/lo_hacking/git/libo6/workdir/UnpackedTarball/skia/src/core/SkBitmapDevice.cpp:8:
In file included from
/home/terry/lo_hacking/git/libo6/workdir/UnpackedTarball/skia/src/core/SkBitmapDevice.h:19:
In file included from
/home/terry/lo_hacking/git/libo6/workdir/UnpackedTarball/skia/src/core/SkImageFilterTypes.h:20:
In file included from
/home/terry/lo_hacking/git/libo6/workdir/UnpackedTarball/skia/src/core/SkSpecialImage.h:19:
In file included from
/home/terry/lo_hacking/git/libo6/workdir/UnpackedTarball/skia/src/gpu/ganesh/GrSurfaceProxyView.h:1
8:
In file included from
/home/terry/lo_hacking/git/libo6/workdir/UnpackedTarball/skia/src/gpu/ganesh/GrSurfaceProxy.h:22:
In file included from
/home/terry/lo_hacking/git/libo6/workdir/UnpackedTarball/skia/src/gpu/ganesh/GrGpuResource.h:14:
In file included from
/home/terry/lo_hacking/git/libo6/workdir/UnpackedTarball/skia/src/gpu/GpuTypesPriv.h:13:
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/chrono:2320:48: error: call to
consteval function 'std::chrono::hh_mm_ss::_S_fractional_width' is not a constant expression
static constexpr unsigned fractional_width = {_S_fractional_width()};
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/chrono:2320:48: note: undefined
function '_S_fractional_width' cannot be used in a constant expression
/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/chrono:2275:2: note: declared
here
_S_fractional_width()
^
More information about the LibreOffice
mailing list