Skip to content

Assertion failure in SelectionDAGLegalize::LegalizeOp on 32-bit x86 with SSE #44157

@berolinux

Description

@berolinux
Bugzilla Link 44812
Resolution FIXED
Resolved on Feb 10, 2020 05:18
Version 10.0
OS Linux
Blocks #43900
Attachments Test case, Reduced test case
CC @topperc,@zmodem,@RKSimon,@rotateright
Fixed by commit(s) ec9a94a

Extended Description

Building Qt 5.14.1 examples fails on 32-bit x86 (64-bit x86, aarch64 and armv7hnl are ok, /usr/bin/ld is lld):

$ clang++ -pipe -ccc-gcc-name g++ -Os -fomit-frame-pointer -g1 -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=generic -msse -mfpmath=sse -fasynchronous-unwind-tables -mstackrealign -flto -Ofast -Wl,--enable-new-dtags -o gradients .obj/main.o .obj/gradients.o .obj/fbopaintdevice.o .obj/arthurstyle.o .obj/arthurwidgets.o .obj/hoverpoints.o .obj/qrc_shared.o .obj/qrc_gradients.o .obj/moc_gradients.o .obj/moc_arthurwidgets.o .obj/moc_hoverpoints.o /home/bero/temp/abf/qt5-qtbase/BUILD/qtbase-everywhere-src-5.14.1/lib/libQt5Widgets.so /home/bero/temp/abf/qt5-qtbase/BUILD/qtbase-everywhere-src-5.14.1/lib/libQt5Gui.so /home/bero/temp/abf/qt5-qtbase/BUILD/qtbase-everywhere-src-5.14.1/lib/libQt5Core.so -lGL -lpthread
ld: /builddir/build/BUILD/llvm-project-release-10.x/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:978: void (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode *): Assertion `(TLI.getTypeAction(*DAG.getContext(), Op.getValueType()) == TargetLowering::TypeLegal || Op.getOpcode() == ISD::TargetConstant || Op.getOpcode() == ISD::Register) && "Unexpected illegal type!"' failed.
Stack dump:
0. Program arguments: /usr/bin/ld --build-id --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o gradients /usr/bin/../lib/gcc/i686-openmandriva-linux-gnu/9.2.1/../../../crt1.o /usr/bin/../lib/gcc/i686-openmandriva-linux-gnu/9.2.1/../../../crti.o /usr/bin/../lib/gcc/i686-openmandriva-linux-gnu/9.2.1/crtbegin.o /usr/bin/../lib/gcc/i686-openmandriva-linux-gnu/9.2.1/crtfastmath.o -L/usr/bin/../lib/gcc/i686-openmandriva-linux-gnu/9.2.1 -L/usr/bin/../lib/gcc/i686-openmandriva-linux-gnu/9.2.1/../../../../i686-openmandriva-linux-gnu/lib -L/usr/bin/../lib/gcc/i686-openmandriva-linux-gnu/9.2.1/../../.. -L/usr/bin/../lib -L/lib -L/usr/lib -plugin /usr/bin/../lib/LLVMgold.so -plugin-opt=mcpu=i686 -plugin-opt=O3 --enable-new-dtags .obj/main.o .obj/gradients.o .obj/fbopaintdevice.o .obj/arthurstyle.o .obj/arthurwidgets.o .obj/hoverpoints.o .obj/qrc_shared.o .obj/qrc_gradients.o .obj/moc_gradients.o .obj/moc_arthurwidgets.o .obj/moc_hoverpoints.o /home/bero/temp/abf/qt5-qtbase/BUILD/qtbase-everywhere-src-5.14.1/lib/libQt5Widgets.so /home/bero/temp/abf/qt5-qtbase/BUILD/qtbase-everywhere-src-5.14.1/lib/libQt5Gui.so /home/bero/temp/abf/qt5-qtbase/BUILD/qtbase-everywhere-src-5.14.1/lib/libQt5Core.so -lGL -lpthread -lstdc++ -lgcc_s -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/bin/../lib/gcc/i686-openmandriva-linux-gnu/9.2.1/crtend.o /usr/bin/../lib/gcc/i686-openmandriva-linux-gnu/9.2.1/../../../crtn.o

  1.  Running pass 'Function Pass Manager' on module 'ld-temp.o'.
    
  2.  Running pass 'X86 DAG->DAG Instruction Selection' on function '@_ZN14GradientWidget10setDefaultEi'
    

#​0 0xf793e49f (/usr/lib/libLLVMSupport.so.10.0+0x22849f)
#​1 0xf793b41e llvm::sys::RunSignalHandlers() (/usr/lib/libLLVMSupport.so.10.0+0x22541e)
#​2 0xf793e6b4 (/usr/lib/libLLVMSupport.so.10.0+0x2286b4)
#​3 0xf7efeb60 (linux-gate.so.1+0xb60)
#​4 0xf7efeb49 (linux-gate.so.1+0xb49)
#​5 0xf7352c42 raise (/lib/libc.so.6+0x3dc42)
#​6 0xf733230b abort (/lib/libc.so.6+0x1d30b)
#​7 0xf73321d3 plural_eval.cold (/lib/libc.so.6+0x1d1d3)
#​8 0xf734360b (/lib/libc.so.6+0x2e60b)
#​9 0xf2d9eee9 (/usr/lib/libLLVMSelectionDAG.so.10.0+0x210ee9)
#​10 0xf2d9eb28 llvm::SelectionDAG::Legalize() (/usr/lib/libLLVMSelectionDAG.so.10.0+0x210b28)
#​11 0xf2faf06a llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/usr/lib/libLLVMSelectionDAG.so.10.0+0x42106a)
#​12 0xf2fad8eb llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, bool&) (/usr/lib/libLLVMSelectionDAG.so.10.0+0x41f8eb)
#​13 0xf2fac82b llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/usr/lib/libLLVMSelectionDAG.so.10.0+0x41e82b)
#​14 0xf2fa8ad9 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/usr/lib/libLLVMSelectionDAG.so.10.0+0x41aad9)
#​15 0xf4d5b0a3 (/usr/lib/libLLVMX86CodeGen.so.10.0+0x2b50a3)
#​16 0xf28eb605 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/usr/lib/libLLVMCodeGen.so.10.0+0x436605)
#​17 0xf37ad036 llvm::FPPassManager::runOnFunction(llvm::Function&) (/usr/lib/libLLVMCore.so.10.0+0x395036)
#​18 0xf37ad518 llvm::FPPassManager::runOnModule(llvm::Module&) (/usr/lib/libLLVMCore.so.10.0+0x395518)
#​19 0xf37adc8a llvm::legacy::PassManagerImpl::run(llvm::Module&) (/usr/lib/libLLVMCore.so.10.0+0x395c8a)
#​20 0xf37ae627 llvm::legacy::PassManager::run(llvm::Module&) (/usr/lib/libLLVMCore.so.10.0+0x396627)
#​21 0xf47087ad (/usr/lib/libLLVMLTO.so.10.0+0x4e7ad)
#​22 0xf4703306 llvm::lto::backend(llvm::lto::Config const&, std::function<std::unique_ptr<llvm::lto::NativeObjectStream, std::default_deletellvm::lto::NativeObjectStream > (unsigned int)>, unsigned int, std::unique_ptr<llvm::Module, std::default_deletellvm::Module >, llvm::ModuleSummaryIndex&) (/usr/lib/libLLVMLTO.so.10.0+0x49306)
#​23 0xf46f779f llvm::lto::LTO::runRegularLTO(std::function<std::unique_ptr<llvm::lto::NativeObjectStream, std::default_deletellvm::lto::NativeObjectStream > (unsigned int)>) (/usr/lib/libLLVMLTO.so.10.0+0x3d79f)
#​24 0xf46f6e75 llvm::lto::LTO::run(std::function<std::unique_ptr<llvm::lto::NativeObjectStream, std::default_deletellvm::lto::NativeObjectStream > (unsigned int)>, std::function<std::function<std::unique_ptr<llvm::lto::NativeObjectStream, std::default_deletellvm::lto::NativeObjectStream > (unsigned int)> (unsigned int, llvm::StringRef)>) (/usr/lib/libLLVMLTO.so.10.0+0x3ce75)
#​25 0xf7d3f999 lld::elf::BitcodeCompiler::compile() (/usr/lib/liblldELF.so.10.0+0x1e4999)
#​26 0xf7ca7b33 void lld::elf::LinkerDriver::compileBitcodeFiles<llvm::object::ELFType<(llvm::support::endianness)1, false> >() (/usr/lib/liblldELF.so.10.0+0x14cb33)
#​27 0xf7c96c15 void lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1, false> >(llvm::opt::InputArgList&) (/usr/lib/liblldELF.so.10.0+0x13bc15)
#​28 0xf7c8ce75 lld::elf::LinkerDriver::main(llvm::ArrayRef<char const*>) (/usr/lib/liblldELF.so.10.0+0x131e75)
#​29 0xf7c8ac60 lld::elf::link(llvm::ArrayRef<char const*>, bool, llvm::raw_ostream&, llvm::raw_ostream&) (/usr/lib/liblldELF.so.10.0+0x12fc60)
#​30 0x00402a28 (/usr/bin/ld+0x402a28)
#​31 0xf7333f61 __libc_start_main (/lib/libc.so.6+0x1ef61)
#​32 0x00402021 (/usr/bin/ld+0x402021)
clang-10: error: unable to execute command: Aborted (core dumped)
clang-10: error: linker command failed due to signal (use -v to see invocation)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions