Re: LO 24.2 C++20 baseline

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx> 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
--------------------------------
[CXX]
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()
        ^




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux