Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 926287 - =dev-qt/qtbase-6.6.2 fails on gcc-14 due to conversion from ‘float’ to non-scalar type ‘const
Summary: =dev-qt/qtbase-6.6.2 fails on gcc-14 due to conversion from ‘float’ to non-sc...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Qt Bug Alias
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: gcc-14
  Show dependency tree
 
Reported: 2024-03-06 21:52 UTC by tdr
Modified: 2024-03-26 20:49 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log (build.log,370.12 KB, text/plain)
2024-03-06 22:00 UTC, tdr
Details
qtbase-6.6.2-gcc14-avx512.patch (qtbase-6.6.2-gcc14-avx512.patch,353 bytes, patch)
2024-03-07 06:54 UTC, Ionen Wolkens
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description tdr 2024-03-06 21:52:18 UTC
incompatible type use fails on gcc-14

Reproducible: Always

Steps to Reproduce:
gcc-14
=dev-qt/qtbase-6.6.2
Actual Results:  
/var/tmp/portage/dev-qt/qtbase-6.6.2/work/qtbase-everywhere-src-6.6.2/src/gui/painting/qrgbafloat.h:102:34: error: conversion from ‘float’ to non-scalar type ‘const QRgbaFloat<qfloat16>::FastType’ {aka ‘const qfloat16’} requested
  102 |         const FastType ia = 1.0f / a;


gcc version 14.0.1 20240306

build.log to be attached
Comment 1 tdr 2024-03-06 22:00:04 UTC
Created attachment 886832 [details]
build.log
Comment 2 Ionen Wolkens gentoo-dev 2024-03-07 06:54:12 UTC
Created attachment 886845 [details, diff]
qtbase-6.6.2-gcc14-avx512.patch

Does the attached dirty workaround patch help? Alternatively, dropping -march=native would likely let it build too.

Also, emerge --info? I'm only assuming that you have avx512 without that to tell me. Aka, I can't reproduce w/ gcc14 but from a quick look I'm going to guess that it's because I don't have avx512:

    #if defined(__AVX512FP16__) && QFLOAT16_IS_NATIVE
        // AVX512FP16 has multiplication instructions
        using FastType = F;
    #else       
        // use FP32 for multiplications
        using FastType = float;
    #endif

Unfortunately can't test myself given enabling instructions I don't have results in illegal instructions during the build itself.

Would appreciate if could report this upstream. Odds are upstream will never pick it up otherwise given do not think they test with -march=native and/or avx512 enabled much.
Comment 3 Ionen Wolkens gentoo-dev 2024-03-08 17:07:23 UTC
(In reply to Ionen Wolkens from comment #2)
> Created attachment 886845 [details, diff] [details, diff]
> qtbase-6.6.2-gcc14-avx512.patch
> 
> Does the attached dirty workaround patch help? 
Still waiting for this, or anyone else that can.

I can reproduce without AVX512 if I swap "#if 0" by "#if 1" in that patch, but I don't know if it's really fine (e.g. if there's other conditions to consider).
Comment 4 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2024-03-08 17:07:56 UTC
I have an AVX512 machine I can try later, but I didn't hit this on my last -e, so wondering if it misses the right parts.
Comment 5 Ionen Wolkens gentoo-dev 2024-03-08 17:17:16 UTC
Pretty sure QFLOAT16_IS_NATIVE should always be be true with our toolchains (either gcc or clang) looking at it.

However searched for __AVX512FP16__ and it seems a bit more loaded, odds are your machine does not support that.

(In reply to Ionen Wolkens from comment #3)
> I can reproduce without AVX512 if I swap "#if 0" by "#if 1" in that patch,
> but I don't know if it's really fine (e.g. if there's other conditions to
> consider).
On that #if 0 note, alternate (upstreamable) fixes also welcome, went for just disabling the avx512 path as temporary fix given uncertain what else there may be without testing.
Comment 6 Ionen Wolkens gentoo-dev 2024-03-24 12:07:26 UTC
@tdr ping

Still have the patch queue'ed up locally but still have nobody tell me if it works.
Comment 7 tdr 2024-03-26 19:57:47 UTC
Ionen,

It compiled successfully with the patch applied to qtbase:6 
+ the qt packages it pulled when qtbase:6 was emerged built too:

1711482567:  *** emerge --oneshot --autounmask=n --regex-search-auto=y qtbase
1711482576:  >>> emerge (1 of 6) dev-qt/qtbase-6.6.2 to /
1711482576:  === (1 of 6) Cleaning (dev-qt/qtbase-6.6.2::/var/db/repos/gentoo/dev-qt/qtbase/qtbase-6.6.2.ebuild)
1711482576:  === (1 of 6) Compiling/Packaging (dev-qt/qtbase-6.6.2::/var/db/repos/gentoo/dev-qt/qtbase/qtbase-6.6.2.ebuild)
1711482802:  === (1 of 6) Merging (dev-qt/qtbase-6.6.2::/var/db/repos/gentoo/dev-qt/qtbase/qtbase-6.6.2.ebuild)
1711482804:  >>> AUTOCLEAN: dev-qt/qtbase:6
1711482806:  === (1 of 6) Post-Build Cleaning (dev-qt/qtbase-6.6.2::/var/db/repos/gentoo/dev-qt/qtbase/qtbase-6.6.2.ebuild)
1711482806:  ::: completed emerge (1 of 6) dev-qt/qtbase-6.6.2 to /
1711482806:  >>> emerge (2 of 6) dev-qt/qtshadertools-6.6.2 to /
1711482806:  === (2 of 6) Cleaning (dev-qt/qtshadertools-6.6.2::/var/db/repos/gentoo/dev-qt/qtshadertools/qtshadertools-6.6.2.ebuild)
1711482806:  === (2 of 6) Compiling/Packaging (dev-qt/qtshadertools-6.6.2::/var/db/repos/gentoo/dev-qt/qtshadertools/qtshadertools-6.6.2.ebuild)
1711482868:  === (2 of 6) Merging (dev-qt/qtshadertools-6.6.2::/var/db/repos/gentoo/dev-qt/qtshadertools/qtshadertools-6.6.2.ebuild)
1711482869:  >>> AUTOCLEAN: dev-qt/qtshadertools:6
1711482871:  === (2 of 6) Post-Build Cleaning (dev-qt/qtshadertools-6.6.2::/var/db/repos/gentoo/dev-qt/qtshadertools/qtshadertools-6.6.2.ebuild)
1711482871:  ::: completed emerge (2 of 6) dev-qt/qtshadertools-6.6.2 to /
1711482871:  >>> emerge (3 of 6) dev-qt/qtdeclarative-6.6.2-r1 to /
1711482871:  === (3 of 6) Cleaning (dev-qt/qtdeclarative-6.6.2-r1::/var/db/repos/gentoo/dev-qt/qtdeclarative/qtdeclarative-6.6.2-r1.ebuild)
1711482871:  === (3 of 6) Compiling/Packaging (dev-qt/qtdeclarative-6.6.2-r1::/var/db/repos/gentoo/dev-qt/qtdeclarative/qtdeclarative-6.6.2-r1.ebuild)
1711483154:  === (3 of 6) Merging (dev-qt/qtdeclarative-6.6.2-r1::/var/db/repos/gentoo/dev-qt/qtdeclarative/qtdeclarative-6.6.2-r1.ebuild)
1711483156:  >>> AUTOCLEAN: dev-qt/qtdeclarative:6
1711483158:  === (3 of 6) Post-Build Cleaning (dev-qt/qtdeclarative-6.6.2-r1::/var/db/repos/gentoo/dev-qt/qtdeclarative/qtdeclarative-6.6.2-r1.ebuild)
1711483158:  ::: completed emerge (3 of 6) dev-qt/qtdeclarative-6.6.2-r1 to /
1711483158:  >>> emerge (4 of 6) dev-qt/qtwayland-6.6.2-r1 to /
1711483158:  === (4 of 6) Cleaning (dev-qt/qtwayland-6.6.2-r1::/var/db/repos/gentoo/dev-qt/qtwayland/qtwayland-6.6.2-r1.ebuild)
1711483158:  === (4 of 6) Compiling/Packaging (dev-qt/qtwayland-6.6.2-r1::/var/db/repos/gentoo/dev-qt/qtwayland/qtwayland-6.6.2-r1.ebuild)
1711483205:  === (4 of 6) Merging (dev-qt/qtwayland-6.6.2-r1::/var/db/repos/gentoo/dev-qt/qtwayland/qtwayland-6.6.2-r1.ebuild)
1711483207:  >>> AUTOCLEAN: dev-qt/qtwayland:6
1711483208:  === (4 of 6) Post-Build Cleaning (dev-qt/qtwayland-6.6.2-r1::/var/db/repos/gentoo/dev-qt/qtwayland/qtwayland-6.6.2-r1.ebuild)
1711483208:  ::: completed emerge (4 of 6) dev-qt/qtwayland-6.6.2-r1 to /
1711483208:  >>> emerge (5 of 6) dev-qt/qttools-6.6.2 to /
1711483208:  === (5 of 6) Cleaning (dev-qt/qttools-6.6.2::/var/db/repos/gentoo/dev-qt/qttools/qttools-6.6.2.ebuild)
1711483209:  === (5 of 6) Compiling/Packaging (dev-qt/qttools-6.6.2::/var/db/repos/gentoo/dev-qt/qttools/qttools-6.6.2.ebuild)
1711483252:  === (5 of 6) Merging (dev-qt/qttools-6.6.2::/var/db/repos/gentoo/dev-qt/qttools/qttools-6.6.2.ebuild)
1711483253:  >>> AUTOCLEAN: dev-qt/qttools:6
1711483255:  === (5 of 6) Post-Build Cleaning (dev-qt/qttools-6.6.2::/var/db/repos/gentoo/dev-qt/qttools/qttools-6.6.2.ebuild)
1711483255:  ::: completed emerge (5 of 6) dev-qt/qttools-6.6.2 to /
1711483255:  >>> emerge (6 of 6) dev-qt/qttranslations-6.6.2 to /
1711483255:  === (6 of 6) Cleaning (dev-qt/qttranslations-6.6.2::/var/db/repos/gentoo/dev-qt/qttranslations/qttranslations-6.6.2.ebuild)
1711483255:  === (6 of 6) Compiling/Packaging (dev-qt/qttranslations-6.6.2::/var/db/repos/gentoo/dev-qt/qttranslations/qttranslations-6.6.2.ebuild)
1711483260:  === (6 of 6) Merging (dev-qt/qttranslations-6.6.2::/var/db/repos/gentoo/dev-qt/qttranslations/qttranslations-6.6.2.ebuild)
1711483262:  >>> AUTOCLEAN: dev-qt/qttranslations:6
1711483263:  === (6 of 6) Post-Build Cleaning (dev-qt/qttranslations-6.6.2::/var/db/repos/gentoo/dev-qt/qttranslations/qttranslations-6.6.2.ebuild)
1711483263:  ::: completed emerge (6 of 6) dev-qt/qttranslations-6.6.2 to /
1711483263:  *** Finished. Cleaning up...
Comment 8 Ionen Wolkens gentoo-dev 2024-03-26 20:07:34 UTC
Thanks, guess I'll add it for now.
Comment 9 tdr 2024-03-26 20:17:39 UTC
avx512_fp16 is intel only 

if there is movement to fix this a better way, I can test, rather do that than lose chip instruction use if the code path becomes usable
Comment 10 Ionen Wolkens gentoo-dev 2024-03-26 20:20:09 UTC
(In reply to tdr from comment #9)
> avx512_fp16 is intel only 
> 
> if there is movement to fix this a better way, I can test, rather do that
> than lose chip instruction use if the code path becomes usable
Ideal would be for someone affected to report this upstream, then a proper fix can likely be figured out.

Downstream I'm happy with a quick hack meanwhile just so it doesn't fail.
Comment 11 Larry the Git Cow gentoo-dev 2024-03-26 20:49:23 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=73bec710536da954edada1cddf97a833960bfb81

commit 73bec710536da954edada1cddf97a833960bfb81
Author:     Ionen Wolkens <ionen@gentoo.org>
AuthorDate: 2024-03-26 20:44:29 +0000
Commit:     Ionen Wolkens <ionen@gentoo.org>
CommitDate: 2024-03-26 20:47:13 +0000

    dev-qt/qtbase: do build workaround for gcc:14 + avx512fp16
    
    Closes: https://bugs.gentoo.org/926287
    Signed-off-by: Ionen Wolkens <ionen@gentoo.org>

 dev-qt/qtbase/files/qtbase-6.6.3-gcc14-avx512fp16.patch | 15 +++++++++++++++
 dev-qt/qtbase/qtbase-6.6.3.ebuild                       |  1 +
 dev-qt/qtbase/qtbase-6.6.9999.ebuild                    |  1 +
 dev-qt/qtbase/qtbase-6.7.0_rc2-r1.ebuild                |  1 +
 dev-qt/qtbase/qtbase-6.7.9999.ebuild                    |  1 +
 dev-qt/qtbase/qtbase-6.9999.ebuild                      |  1 +
 6 files changed, 20 insertions(+)