New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Regression (12.0) Assertion `ValTy->isFPOrFPVectorTy() && "Expected float point or integer vector type."' failed #48559
Comments
assigned to @rotateright |
The assert is in the x86 cost model. I'll take a look. |
We created a reduction of a vector of pointers: But that's apparently not allowed by LangRef: |
I think we need to constrict our reduction definitions as a first step. These all pass the IR verifier currently... FP min of pointers: FP min of integers: Integer umin of float: |
Proposal: |
We should avoid crashing with: |
@spatel The subject says this is a 12.0 regression - what would be the cherry pick list to get this into the 12.x branch? |
Ah - it's just this one: (The verifier improvement I was working on is independent, and I haven't pushed it yet.) |
Merged: a3545a0 |
Extended Description
Building the attached test case with clang [today's 12.0 branch] with SSE4.2 enabled (-msse4.2 or -march=znver1 or any other -march= that enables sse4.2) results in
$ clang++ -c test.ii -o test.o -O2 -msse4.2
clang++: /home/bero/abf/llvm/BUILD/llvm-project-release-12.x/llvm/lib/Target/X86/X86TargetTransformInfo.cpp:3717: int llvm::X86TTIImpl::getMinMaxReductionCost(llvm::VectorType *, llvm::VectorType *, bool, bool, TTI::TargetCostKind): Assertion `ValTy->isFPOrFPVectorTy() && "Expected float point or integer vector type."' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang++ -c test.ii -o test.o -O2 -march=znver1
#0 0x00007f4c35702ce1 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib64/libLLVMSupport.so.12.0+0x235ce1)
#1 0x00007f4c35702fbd (/usr/lib64/libLLVMSupport.so.12.0+0x235fbd)
#2 0x00007f4c3570090a llvm::sys::RunSignalHandlers() (/usr/lib64/libLLVMSupport.so.12.0+0x23390a)
#3 0x00007f4c35701efb llvm::sys::CleanupOnSignal(unsigned long) (/usr/lib64/libLLVMSupport.so.12.0+0x234efb)
#4 0x00007f4c35612035 (/usr/lib64/libLLVMSupport.so.12.0+0x145035)
#5 0x00007f4c35612245 (/usr/lib64/libLLVMSupport.so.12.0+0x145245)
#6 0x00007f4c351399c0 __restore_rt (/lib64/libc.so.6+0x409c0)
#7 0x00007f4c3513993f raise (/lib64/libc.so.6+0x4093f)
#8 0x00007f4c3511f538 abort (/lib64/libc.so.6+0x26538)
#9 0x00007f4c3511f421 _nl_load_domain.cold (/lib64/libc.so.6+0x26421)
#10 0x00007f4c35130c82 (/lib64/libc.so.6+0x37c82)
#11 0x00007f4c3a56d991 llvm::X86TTIImpl::getMinMaxReductionCost(llvm::VectorType*, llvm::VectorType*, bool, bool, llvm::TargetTransformInfo::TargetCostKind) (/usr/lib64/libLLVMX86CodeGen.so.12.0+0x530991)
#12 0x00007f4c3a573a83 (/usr/lib64/libLLVMX86CodeGen.so.12.0+0x536a83)
#13 0x00007f4c3a56a012 (/usr/lib64/libLLVMX86CodeGen.so.12.0+0x52d012)
#14 0x00007f4c3a56ace6 llvm::X86TTIImpl::getIntrinsicInstrCost(llvm::IntrinsicCostAttributes const&, llvm::TargetTransformInfo::TargetCostKind) (/usr/lib64/libLLVMX86CodeGen.so.12.0+0x52dce6)
#15 0x00007f4c3a56341b (/usr/lib64/libLLVMX86CodeGen.so.12.0+0x52641b)
#16 0x00007f4c3a560047 (/usr/lib64/libLLVMX86CodeGen.so.12.0+0x523047)
#17 0x00007f4c3687879f llvm::TargetTransformInfo::getUserCost(llvm::User const*, llvm::ArrayRef<llvm::Value const*>, llvm::TargetTransformInfo::TargetCostKind) const (/usr/lib64/libLLVMAnalysis.so.12.0+0x5ab79f)
#18 0x00007f4c365e7269 (/usr/lib64/libLLVMAnalysis.so.12.0+0x31a269)
#19 0x00007f4c365e6d1a llvm::CodeMetrics::analyzeBasicBlock(llvm::BasicBlock const*, llvm::TargetTransformInfo const&, llvm::SmallPtrSetImpl<llvm::Value const*> const&, bool) (/usr/lib64/libLLVMAnalysis.so.12.0+0x319d1a)
#20 0x00007f4c378941c5 (/usr/lib64/libLLVMScalarOpts.so.12.0+0x3541c5)
#21 0x00007f4c37894eef llvm::LoopUnrollPass::run(llvm::Function&, llvm::AnalysisManagerllvm::Function&) (/usr/lib64/libLLVMScalarOpts.so.12.0+0x354eef)
#22 0x00007f4c349b8d3f (/usr/lib64/libLLVMPasses.so.12.0+0x181d3f)
#23 0x00007f4c35c73456 llvm::PassManager<llvm::Function, llvm::AnalysisManagerllvm::Function >::run(llvm::Function&, llvm::AnalysisManagerllvm::Function&) (/usr/lib64/libLLVMCore.so.12.0+0x42c456)
#24 0x00007f4c3c7c3c3f (/usr/lib64/libLLVMAMDGPUCodeGen.so.12.0+0x56ec3f)
#25 0x00007f4c35c78ab9 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManagerllvm::Module&) (/usr/lib64/libLLVMCore.so.12.0+0x431ab9)
#26 0x00007f4c3c7c399f (/usr/lib64/libLLVMAMDGPUCodeGen.so.12.0+0x56e99f)
#27 0x00007f4c35c71ad9 llvm::PassManager<llvm::Module, llvm::AnalysisManagerllvm::Module >::run(llvm::Module&, llvm::AnalysisManagerllvm::Module&) (/usr/lib64/libLLVMCore.so.12.0+0x42aad9)
#28 0x00007f4c38d28922 (/usr/lib64/libclangCodeGen.so.12.0+0x2a1922)
#29 0x00007f4c38d21037 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_deletellvm::raw_pwrite_stream >) (/usr/lib64/libclangCodeGen.so.12.0+0x29a037)
#30 0x00007f4c3908b60f (/usr/lib64/libclangCodeGen.so.12.0+0x60460f)
#31 0x00007f4c32f22515 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib64/libclangParse.so.12.0+0x70515)
#32 0x00007f4c3731744f clang::ASTFrontendAction::ExecuteAction() (/usr/lib64/libclangFrontend.so.12.0+0x1ab44f)
#33 0x00007f4c39086200 clang::CodeGenAction::ExecuteAction() (/usr/lib64/libclangCodeGen.so.12.0+0x5ff200)
#34 0x00007f4c37316b16 clang::FrontendAction::Execute() (/usr/lib64/libclangFrontend.so.12.0+0x1aab16)
#35 0x00007f4c3727c5aa clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib64/libclangFrontend.so.12.0+0x1105aa)
#36 0x00007f4c39bf1c38 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib64/libclangFrontendTool.so.12.0+0x5c38)
#37 0x000000000021957f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/bin/clang-12+0x21957f)
#38 0x0000000000216e2f (/usr/bin/clang-12+0x216e2f)
#39 0x00007f4c36fbd004 (/usr/lib64/libclangDriver.so.12.0+0x115004)
#40 0x00007f4c35611f1a llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib64/libLLVMSupport.so.12.0+0x144f1a)
#41 0x00007f4c36fbc34f clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optionalllvm::StringRef >, std::__cxx11::basic_string<char, std::char_traits, std::allocator >, bool) const (/usr/lib64/libclangDriver.so.12.0+0x11434f)
#42 0x00007f4c36f7d5ac clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/usr/lib64/libclangDriver.so.12.0+0xd55ac)
#43 0x00007f4c36f7d8ba clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/usr/lib64/libclangDriver.so.12.0+0xd58ba)
#44 0x00007f4c36f99cc1 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/usr/lib64/libclangDriver.so.12.0+0xf1cc1)
#45 0x0000000000215f94 main (/usr/bin/clang-12+0x215f94)
#46 0x00007f4c3512156d __libc_start_main (/lib64/libc.so.6+0x2856d)
#47 0x0000000000212a6a _start (/usr/bin/clang-12+0x212a6a)
clang-12: error: clang frontend command failed with exit code 134 (use -v to see invocation)
OpenMandriva 12.0.0-0.20210216.1 clang version 12.0.0 (/home/bero/abf/llvm/BUILD/llvm-project-release-12.x/clang e8879607869c0621936fcd3af4b973dea59e7e9b)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang-12: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
The text was updated successfully, but these errors were encountered: