Bug 2061194 - Packages qt5-qtquickcontrols and qt5-qtvirtualkeyboard fail to build on ppc64le
Summary: Packages qt5-qtquickcontrols and qt5-qtvirtualkeyboard fail to build on ppc64le
Keywords:
Status: CLOSED EOL
Alias: None
Product: Fedora
Classification: Fedora
Component: gcc
Version: 37
Hardware: Unspecified
OS: Unspecified
high
unspecified
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2022-03-06 19:36 UTC by Jan Grulich
Modified: 2023-12-05 21:05 UTC (History)
10 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2023-12-05 21:05:12 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
GNU Compiler Collection 104869 0 P3 UNCONFIRMED [12 Regression] Miscompilation of qt5-qtdeclarative 2022-03-10 18:45:06 UTC

Description Jan Grulich 2022-03-06 19:36:17 UTC
Description of problem:

Both qt5-qtvirtualkeyboard and qt5-qtquickcontrols fail to build on ppc64le for same reason. Both fail on compilation of QML file (javascript) that gets generated into C++ file.

The failure looks like this:
Error compiling qml file: DefaultMessageDialog.qml:69: error: Break outside of loop
make[2]: *** [Makefile:466: ../../qml/QtQuick/Dialogs/DefaultMessageDialog.qmlc] Error 1
make[1]: *** [Makefile:127: sub-dialogs-make_first] Error 2
make[1]: *** Waiting for unfinished jobs....

Here is for example latest build of qt5-qtvirtualkeyboard: https://koji.fedoraproject.org/koji/taskinfo?taskID=83643660

This is an update to newer Qt version, but I did a scratch build of previous version which built on F36 before and now also fail to build on ppc64le so it's not a new issue introduced with the new version of Qt.

Comment 1 Jan Grulich 2022-03-06 20:41:23 UTC
Looks like an issue in qtbase. I managed to build it now.

Comment 2 Jan Grulich 2022-03-06 21:04:20 UTC
I tried tagging different packages that might have effected the build and it looks the only one making a difference is qt5-qtdeclarative-5.15.2-10.fc36 so when I again tag back latest qt5-qtdeclarative-5.15.2-11.fc36, it again fails to build.

The -11 build was just a mass rebuild bump and it was build with GCC 12, while -10 build was build with GCC 11. Therefore I again think this is a GCC issue.

Comment 3 Jakub Jelinek 2022-03-07 11:08:07 UTC
The "error: Break outside of loop" message doesn't come from gcc, but some Qt tool, which one?

Comment 4 Jan Grulich 2022-03-07 11:18:50 UTC
(In reply to Jakub Jelinek from comment #3)
> The "error: Break outside of loop" message doesn't come from gcc, but some
> Qt tool, which one?

It comes from qtquickcompiler, which is in qtdeclarative/src/qml/compiler.

Comment 5 Jan Grulich 2022-03-07 11:19:38 UTC
(In reply to Jan Grulich from comment #4)
> (In reply to Jakub Jelinek from comment #3)
> > The "error: Break outside of loop" message doesn't come from gcc, but some
> > Qt tool, which one?
> 
> It comes from qtquickcompiler, which is in qtdeclarative/src/qml/compiler.

In qt5-qtdeclarative package.

Comment 6 Jakub Jelinek 2022-03-07 11:46:24 UTC
So, can you please try first to disable lto on qt5-qtdeclarative (%global %_lto_cflags %{nil}) and see if it helps?
Or try to build that tool with -O0 if that doesn't help?

Comment 7 Jan Grulich 2022-03-07 15:21:03 UTC
(In reply to Jakub Jelinek from comment #6)
> So, can you please try first to disable lto on qt5-qtdeclarative (%global
> %_lto_cflags %{nil}) and see if it helps?
> Or try to build that tool with -O0 if that doesn't help?

That seems to work. Both packages now build in Rawhide.

Comment 8 Jakub Jelinek 2022-03-07 16:16:02 UTC
Well, that is just a workaround, not a fix.  It could be either a gcc or qt5-qtdeclarative bug.

Comment 9 Marek Polacek 2022-03-07 19:55:27 UTC
Jan, do you know how exactly is qtquickcompiler invoked on DefaultMessageDialog.qml?

It should be possible then to bisect which of the .o files making up qtquickcompiler causes the error: have two directories, lto/, no-lto/, mix the .o files, relink, invoke qtquickcompiler again.

Comment 10 Jakub Jelinek 2022-03-09 17:39:59 UTC
Can this be reproduced with the packages in the latest rawhide compose?
Seems the latest qt5-qtdeclarative relies on qt5-qtbase that is still not in rawhide, so reproducing this in mock is difficult.

Comment 11 Jan Grulich 2022-03-10 07:36:53 UTC
(In reply to Jakub Jelinek from comment #10)
> Can this be reproduced with the packages in the latest rawhide compose?
> Seems the latest qt5-qtdeclarative relies on qt5-qtbase that is still not in
> rawhide, so reproducing this in mock is difficult.

All Qt modules should be already in Rawhide. I haven't tried to reproduce it since then, because I would have to enable LTO in qt5-qtdeclarative and then try to build qt5-qtvirtualkeyboard or qt5-qtquickcontrols. It's also only reproducible on ppc64le.

Comment 12 Jakub Jelinek 2022-03-10 10:52:42 UTC
I certainly don't see any qtquickcompiler binary in qt5-qtdeclarative{,-devel} packages:
rpm -q qt5-qtdeclarative{,-devel}
qt5-qtdeclarative-5.15.3-2.fc37.ppc64le
qt5-qtdeclarative-devel-5.15.3-2.fc37.ppc64le
strings `rpm -ql qt5-qtdeclarative{,-devel}` 2>/dev/null | grep 'Break outside'
yields nothing.
In the qt5-qtdeclarative source I do see:
find -type f | xargs grep 'Break outside of loop' 2>/dev/null
./src/qml/compiler/qv4codegen.cpp:        throwSyntaxError(ast->lastSourceLocation(), QStringLiteral("Break outside of loop"));
./src/qml/compiler/qv4codegen.cpp:            throwSyntaxError(ast->lastSourceLocation(), QStringLiteral("Break outside of loop"));
but it doesn't seem to be compiled into anything:
find -type f | xargs strings 2>/dev/null | grep 'Break outside of loop'
        throwSyntaxError(ast->lastSourceLocation(), QStringLiteral("Break outside of loop"));
            throwSyntaxError(ast->lastSourceLocation(), QStringLiteral("Break outside of loop"));
not even ./src/qml/.obj/qv4codegen.o nor ./src/qmldevtools/.obj/qv4codegen.o
So, which binary reports that error?

Comment 13 Jakub Jelinek 2022-03-10 11:05:00 UTC
Actually reproduced it though:
/home/jakub/rpmbuild/BUILD/qtdeclarative-everywhere-src-5.15.3/bin/qmlcachegen -o ../../qml/QtQuick/Dialogs/DefaultMessageDialog.qmlc DefaultMessageDialog.qml
Error compiling qml file: DefaultMessageDialog.qml:69: error: Break outside of loop

Comment 14 Jakub Jelinek 2022-03-10 12:47:00 UTC
So, some bisection shows that it is enough to have qmlcachegen.o, qv4codegen.o and qqmljsparser.o built with -flto -ffat-lto-objects, all others can be built without -flto and it still reproduces.
Below is the command line, *.on are objects I've rebuilt by hand with the same commands as *.o were built except for removal of -flto -ffat-lto-objects:

cd /home/jakub/rpmbuild/BUILD/qtdeclarative-everywhere-src-5.15.3/tools/qmlcachegen; g++ -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -Wl,-dT,../../.package_note-qt5-qtdeclarative-5.15.3-2.fc37.ppc64le.ld -Wl,--enable-new-dtags -o ../../bin/qmlcachegen .obj/qmlcachegen.o .obj/resourcefilter.on .obj/generateloader.on .obj/resourcefilemapper.on .obj/qmlstreamwriter.on   ../../src/qml/.obj/qqmljsast.on ../../src/qml/.obj/qqmljsastvisitor.on ../../src/qml/.obj/qqmljsengine_p.on ../../src/qml/.obj/qqmljslexer.on ../../src/qml/.obj/qv4compiler.on ../../src/qml/.obj/qv4compilercontext.on ../../src/qml/.obj/qv4compilerscanfunctions.on ../../src/qml/.obj/qv4codegen.o ../../src/qml/.obj/qqmlirbuilder.on ../../src/qml/.obj/qv4instr_moth.on ../../src/qml/.obj/qqmljsgrammar.on ../../src/qml/.obj/qqmljsparser.o ../../src/qml/.obj/qv4bytecodehandler.on ../../src/qml/.obj/qv4bytecodegenerator.on /usr/lib64/libQt5Core.so -lpthread; pushd /home/jakub/rpmbuild/BUILD/qtquickcontrols-everywhere-src-5.15.3/src/dialogs; /home/jakub/rpmbuild/BUILD/qtdeclarative-everywhere-src-5.15.3/bin/qmlcachegen -o ../../qml/QtQuick/Dialogs/DefaultMessageDialog.qmlc DefaultMessageDialog.qml; popd
/home/jakub/rpmbuild/BUILD/qtquickcontrols-everywhere-src-5.15.3/src/dialogs /home/jakub/rpmbuild/BUILD/qtdeclarative-everywhere-src-5.15.3/tools/qmlcachegen
Error compiling qml file: DefaultMessageDialog.qml:69: error: Break outside of loop
/home/jakub/rpmbuild/BUILD/qtdeclarative-everywhere-src-5.15.3/tools/qmlcachegen

Those 3 LTO objects were built with:
g++ -c -pipe -O2 -fexceptions -flto -ffat-lto-objects -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -std=c++1z -fno-exceptions -Wall -Wextra -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Wno-stringop-overflow -Wno-format-overflow -D_REENTRANT -fPIC -DQT_NO_LINKED_LIST -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_USE_QSTRINGBUILDER -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_QMLDEVTOOLS_LIB -DQT_CORE_LIB -I. -I../shared -I../../include -I../../include/QtQml -I../../include/QtQml/5.15.3 -I../../include/QtQml/5.15.3/QtQml -I/usr/include/qt5/QtCore/5.15.3 -I/usr/include/qt5/QtCore/5.15.3/QtCore -I/usr/include/qt5 -I/usr/include/qt5/QtCore -I.moc -I/usr/lib64/qt5/mkspecs/linux-g++ -o .obj/qmlcachegen.o qmlcachegen.cpp
cd ../../src/qml; g++ -c -pipe -Wno-expansion-to-defined -flto -ffat-lto-objects -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wall -Wextra -Wno-expansion-to-defined -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Wno-stringop-overflow -Wno-format-overflow -D_REENTRANT -fPIC -DQT_NO_LINKED_LIST -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_URL_CAST_FROM_STRING -DQT_NO_INTEGER_EVENT_COORDINATES -DQT_NO_FOREACH -DWTF_EXPORT_PRIVATE= -DJS_EXPORT_PRIVATE= -DENABLE_ASSEMBLER_WX_EXCLUSIVE=1 -DWTFReportAssertionFailure=qmlWTFReportAssertionFailure -DWTFReportAssertionFailureWithMessage=qmlWTFReportAssertionFailureWithMessage -DWTFReportBacktrace=qmlWTFReportBacktrace -DWTFInvokeCrashHook=qmlWTFInvokeCrashHook -DENABLE_LLINT=0 -DENABLE_DFG_JIT=0 -DENABLE_DFG_JIT_UTILITY_METHODS=1 -DENABLE_JIT_CONSTANT_BLINDING=0 -DBUILDING_QT__ -DWTF_USE_UDIS86=0 -DNDEBUG -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_QML_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -Imemory -I. -Icompiler -I. -Ijsruntime -I. -Idebugger -Iqmldirparser -I. -Ianimations -I../3rdparty/masm/jit -I../3rdparty/masm/assembler -I../3rdparty/masm/runtime -I../3rdparty/masm/wtf -I../3rdparty/masm/stubs -I../3rdparty/masm/stubs/runtime -I../3rdparty/masm/stubs/wtf -I../3rdparty/masm -I../3rdparty/masm/disassembler -I../3rdparty/masm/disassembler/udis86 -I../../include -I../../include/QtQml -I../../include/QtQml/5.15.3 -I../../include/QtQml/5.15.3/QtQml -I.generated -I. -I.tracegen -I/usr/include/qt5/QtCore/5.15.3 -I/usr/include/qt5/QtCore/5.15.3/QtCore -I/usr/include/qt5 -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtCore -I.moc -I/usr/lib64/qt5/mkspecs/linux-g++ -o .obj/qv4codegen.o compiler/qv4codegen.cpp; cd -
cd ../../src/qml; g++ -c -pipe -Wno-expansion-to-defined -flto -ffat-lto-objects -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wall -Wextra -Wno-expansion-to-defined -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Wno-stringop-overflow -Wno-format-overflow -D_REENTRANT -fPIC -DQT_NO_LINKED_LIST -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_URL_CAST_FROM_STRING -DQT_NO_INTEGER_EVENT_COORDINATES -DQT_NO_FOREACH -DWTF_EXPORT_PRIVATE= -DJS_EXPORT_PRIVATE= -DENABLE_ASSEMBLER_WX_EXCLUSIVE=1 -DWTFReportAssertionFailure=qmlWTFReportAssertionFailure -DWTFReportAssertionFailureWithMessage=qmlWTFReportAssertionFailureWithMessage -DWTFReportBacktrace=qmlWTFReportBacktrace -DWTFInvokeCrashHook=qmlWTFInvokeCrashHook -DENABLE_LLINT=0 -DENABLE_DFG_JIT=0 -DENABLE_DFG_JIT_UTILITY_METHODS=1 -DENABLE_JIT_CONSTANT_BLINDING=0 -DBUILDING_QT__ -DWTF_USE_UDIS86=0 -DNDEBUG -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_QML_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -Imemory -I. -Icompiler -I. -Ijsruntime -I. -Idebugger -Iqmldirparser -I. -Ianimations -I../3rdparty/masm/jit -I../3rdparty/masm/assembler -I../3rdparty/masm/runtime -I../3rdparty/masm/wtf -I../3rdparty/masm/stubs -I../3rdparty/masm/stubs/runtime -I../3rdparty/masm/stubs/wtf -I../3rdparty/masm -I../3rdparty/masm/disassembler -I../3rdparty/masm/disassembler/udis86 -I../../include -I../../include/QtQml -I../../include/QtQml/5.15.3 -I../../include/QtQml/5.15.3/QtQml -I.generated -I. -I.tracegen -I/usr/include/qt5/QtCore/5.15.3 -I/usr/include/qt5/QtCore/5.15.3/QtCore -I/usr/include/qt5 -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtCore -I.moc -I/usr/lib64/qt5/mkspecs/linux-g++ -o .obj/qqmljsparser.o qqmljsparser.cpp; cd -

Comment 15 Jakub Jelinek 2022-03-10 12:53:05 UTC
And -fno-ipa-modref added to those 3 LTO object command lines doesn't help.

Comment 16 Jakub Jelinek 2022-03-10 16:39:18 UTC
In the LTO build,
=> 0x000000010004fbec <_ZN3QV48Compiler7Codegen5visitEPN6QQmlJS3AST14BreakStatementE+236>:	ld      r3,56(r1)
   0x000000010004fbf0 <_ZN3QV48Compiler7Codegen5visitEPN6QQmlJS3AST14BreakStatementE+240>:	li      r9,0
   0x000000010004fbf4 <_ZN3QV48Compiler7Codegen5visitEPN6QQmlJS3AST14BreakStatementE+244>:	mr      r31,r4
   0x000000010004fbf8 <_ZN3QV48Compiler7Codegen5visitEPN6QQmlJS3AST14BreakStatementE+248>:	cmpdi   cr4,r9,0
seems to be the problem, this essentially hardcodes the
3196	    if (!target.linkLabel.isValid()) {
test to be true (aka target.linkLabel.generator == NULL).
In *.optimized dump it is still correct.
Note, there is first the
flow->getUnwindTarget(type, label)
call which returns that { generator, index } pair (generator is non-NULL), there is
107	            BytecodeGenerator::Label l = flow->getUnwindTarget(type, label);
108	            if (l.isValid())
109	                return UnwindTarget{l, level};
a generator != NULL check, then some atomics in ~QString (but -1 is loaded, so it doesn't do really anything, but performs also some comparisons),
and finally that target.linkLabel.isValid() comparison where target.linkLabel.generator is that
l.generator from that indirect method call.

Comment 17 Jakub Jelinek 2022-03-10 17:42:09 UTC
I think it is a fwprop1 bug.
In cse1 dump, we have:
(call_insn 162 161 972 10 (parallel [
            (set (reg:TI 3 3)
                (call (mem:SI (reg:DI 97 ctr) [0 *OBJ_TYPE_REF(_40;flow_128->3B) S4 A8])
                    (const_int 0 [0])))
            (use (const_int 0 [0]))
            (set (reg:DI 2 2)
                (unspec:DI [
                        (const_int 24 [0x18])
                    ] UNSPEC_TOCSLOT))
            (clobber (reg:DI 96 lr))
        ]) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":107:63 834 {*call_value_indirect_elfv2di}
     (expr_list:REG_DEAD (reg:DI 97 ctr)
        (expr_list:REG_DEAD (reg:DI 12 12)
            (expr_list:REG_DEAD (reg:DI 5 5)
                (expr_list:REG_CALL_DECL (nil)
                    (nil)))))
    (expr_list (use (reg:DI 12 12))
        (expr_list:DI (use (reg:DI 3 3))
            (expr_list:SI (use (reg:DI 4 4))
                (expr_list:DI (use (reg:DI 5 5))
                    (nil))))))
(insn 972 162 973 10 (set (reg:DI 329 [ l ])
        (reg:DI 3 3)) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":107:63 683 {*movdi_internal64}
     (expr_list:REG_DEAD (reg:DI 3 3)
        (nil)))
(insn 973 972 164 10 (set (reg:DI 330 [ l+8 ])
        (reg:DI 4 4 [+8 ])) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":107:63 683 {*movdi_internal64}
     (expr_list:REG_DEAD (reg:DI 4 4 [+8 ])
        (nil)))
(insn 164 973 165 10 (set (reg/f:DI 189 [ l$generator ])
        (reg:DI 329 [ l ])) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":107:63 683 {*movdi_internal64}
     (expr_list:REG_DEAD (reg:DI 329 [ l ])
        (nil)))
...
(insn 171 170 172 10 (set (reg:CC 226)
        (compare:CC (reg:DI 329 [ l ])
            (const_int 0 [0]))) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":108:13 863 {*cmpdi_signed}
     (nil))
(jump_insn 172 171 173 10 (set (pc)
        (if_then_else (eq (reg:CC 226)
                (const_int 0 [0]))
            (label_ref 183)
            (pc))) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":108:13 952 {*cbranch}
     (expr_list:REG_DEAD (reg:CC 226)
        (int_list:REG_BR_PROB 1014686028 (nil)))
 -> 183)
(note 173 172 174 11 [bb 11] NOTE_INSN_BASIC_BLOCK)
...
(insn 176 175 177 11 (set (reg:SI 138 [ target$index ])
        (subreg:SI (reg:DI 330 [ l+8 ]) 0)) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":109:45 557 {*movsi_internal1}
     (expr_list:REG_DEAD (reg:DI 330 [ l+8 ])
        (nil)))
...
(insn 179 178 974 11 (clobber (reg:DI 329 [ l ])) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":109:45 -1
     (expr_list:REG_UNUSED (reg:DI 329 [ l ])
        (nil)))
(insn 974 179 180 11 (clobber (reg:DI 330 [ l+8 ])) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":109:45 -1
     (expr_list:REG_UNUSED (reg:DI 330 [ l+8 ])
        (nil)))
...
(insn 7 180 183 11 (set (reg/v/f:DI 139 [ target$linkLabel$generator ])
        (reg/f:DI 189 [ l$generator ])) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":107:63 683 {*movdi_internal64}
     (expr_list:REG_DEAD (reg/f:DI 189 [ l$generator ])
        (nil)))

but fwprop1 happily removes insn 164 and changes insn 7 to:
(insn 7 180 183 11 (set (reg/v/f:DI 139 [ target$linkLabel$generator ])
        (reg:DI 329 [ l ])) "../../src/qml/../../include/QtQml/5.15.3/QtQml/private/../../../../../src/qml/compiler/qv4compilercontrolflow_p.h":107:63 683 {*movdi_internal64}
     (nil))
If there weren't the clobbers (insn 179 and 974), that wouldn't be a problem.
Then during cprop3 those clobbers are removed but probably something remains in DF info.
And finally init_regs pass adds:
(insn 1028 1014 1029 11 (clobber (reg:DI 340 [ l ])) -1
     (nil))
(insn 1029 1028 996 11 (set (reg:DI 340 [ l ])
        (const_int 0 [0])) -1
     (nil))
before insn 996 which is the r340 != 0 comparison formerly after the clobbers.

Comment 18 Ben Cotton 2022-08-09 13:36:37 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 37 development cycle.
Changing version to 37.

Comment 19 Aoife Moloney 2023-11-23 00:09:45 UTC
This message is a reminder that Fedora Linux 37 is nearing its end of life.
Fedora will stop maintaining and issuing updates for Fedora Linux 37 on 2023-12-05.
It is Fedora's policy to close all bug reports from releases that are no longer
maintained. At that time this bug will be closed as EOL if it remains open with a
'version' of '37'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, change the 'version' 
to a later Fedora Linux version. Note that the version field may be hidden.
Click the "Show advanced fields" button if you do not see it.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora Linux 37 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora Linux, you are encouraged to change the 'version' to a later version
prior to this bug being closed.

Comment 20 Aoife Moloney 2023-12-05 21:05:12 UTC
Fedora Linux 37 entered end-of-life (EOL) status on None.

Fedora Linux 37 is no longer maintained, which means that it
will not receive any further security or bug fix updates. As a result we
are closing this bug.

If you can reproduce this bug against a currently maintained version of Fedora Linux
please feel free to reopen this bug against that version. Note that the version
field may be hidden. Click the "Show advanced fields" button if you do not see
the version field.

If you are unable to reopen this bug, please file a new report against an
active release.

Thank you for reporting this bug and we are sorry it could not be fixed.


Note You need to log in before you can comment on or make changes to this bug.