[PATCH] D123720: [VPlan] Replace use of needsVectorIV with VPlan user check.
Nathan Chancellor via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 28 11:54:00 PDT 2022
nathanchance added subscribers: nickdesaulniers, nathanchance.
nathanchance added a comment.
I bisected a new crash while building the Linux kernel for arm64 to this change:
# bad: [9e3b7e8e656bdcf5aeafbac7b345a7b29272434c] [X86] getTargetVShiftByConstNode - use SelectionDAG::FoldConstantArithmetic to perform constant folding. NFCI.
# good: [c74a706893f0667d6aae2d7704d21af97c92dc07] [LegacyPM] Remove ThreadSanitizerLegacyPass
git bisect start '9e3b7e8e656bdcf5aeafbac7b345a7b29272434c' 'c74a706893f0667d6aae2d7704d21af97c92dc07'
# good: [de7e5394320bd1c3a212d1242cb163fd006e2150] [gn build] (manually) port 0f1b5f115a7f
git bisect good de7e5394320bd1c3a212d1242cb163fd006e2150
# good: [5420834aadbd271b3773f53fbbd58e9437952616] [demangler] Fix demangling a template argument which happens to be a null pointer
git bisect good 5420834aadbd271b3773f53fbbd58e9437952616
# bad: [2883de05145fc5b4afb99b91f69ebb835af36af5] [VPlan] Fix comment formatting from 43842b887e.
git bisect bad 2883de05145fc5b4afb99b91f69ebb835af36af5
# good: [9861ca0c23a60aa18874bb4378f359d4659a6ee6] Revert "[COST]Improve cost model for shuffles in SLP."
git bisect good 9861ca0c23a60aa18874bb4378f359d4659a6ee6
# good: [f6b7fd20a52ef83d0462db190eb40800afda2506] [lldb] Remove patch reject file (.rej)
git bisect good f6b7fd20a52ef83d0462db190eb40800afda2506
# bad: [43842b887e0a7b918bb2d6c9f672025b2c621f8a] [VPlan] Remove uneeded needsVectorIV check.
git bisect bad 43842b887e0a7b918bb2d6c9f672025b2c621f8a
# good: [50d648b40ecdb0bedc0676ed96aad59ebf257d7e] [mlir][emitc] Replace !emitc.opaque pointers
git bisect good 50d648b40ecdb0bedc0676ed96aad59ebf257d7e
# first bad commit: [43842b887e0a7b918bb2d6c9f672025b2c621f8a] [VPlan] Remove uneeded needsVectorIV check.
A simplified C reproducer:
ata_scsi_rbuf, ata_format_dsm_trim_descr_count;
long *ata_scsi_write_same_xlat_buf;
ata_scsi_write_same_xlat() {
while (ata_scsi_rbuf) {
long entry = ata_format_dsm_trim_descr_count > 65535
? 65535
: ata_format_dsm_trim_descr_count;
ata_scsi_write_same_xlat_buf[ata_scsi_rbuf++] = entry;
ata_format_dsm_trim_descr_count -= 5;
}
}
$ clang --target=aarch64-linux-gnu -mgeneral-regs-only -c -o /dev/null libata-scsi.i
...
$ clang --target=aarch64-linux-gnu -O2 -c -o /dev/null libata-scsi.i
...
$ clang --target=aarch64-linux-gnu -O2 -mgeneral-regs-only -c -o /dev/null libata-scsi.i
...
clang: /home/nathan/cbl/src/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:9473: virtual void llvm::VPWidenIntOrFpInductionRecipe::execute(llvm::VPTransformState &): Assertion `State.VF.isVector() && "must have vector VF"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang --target=aarch64-linux-gnu -O2 -mgeneral-regs-only -c -o /dev/null libata-scsi.i
1. <eof> parser at end of file
2. Optimizer
#0 0x0000aaaacbe357a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x34857a8)
#1 0x0000aaaacbe339b4 llvm::sys::RunSignalHandlers() (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x34839b4)
#2 0x0000aaaacbdc062c (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
#3 0x0000aaaacbdc07dc CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#4 0x0000ffff8ae8284c (linux-vdso.so.1+0x84c)
#5 0x0000ffff8a9a64a8 __pthread_kill_implementation (/lib64/libc.so.6+0x864a8)
#6 0x0000ffff8a95e940 gsignal (/lib64/libc.so.6+0x3e940)
#7 0x0000ffff8a94aef8 abort (/lib64/libc.so.6+0x2aef8)
#8 0x0000ffff8a958008 __assert_fail_base (/lib64/libc.so.6+0x38008)
#9 0x0000ffff8a958070 __assert_perror_fail (/lib64/libc.so.6+0x38070)
#10 0x0000aaaacbfd6130 llvm::VPWidenIntOrFpInductionRecipe::execute(llvm::VPTransformState&) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x3626130)
#11 0x0000aaaacc05b0c8 llvm::VPBasicBlock::execute(llvm::VPTransformState*) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x36ab0c8)
#12 0x0000aaaacc05ca98 llvm::VPRegionBlock::execute(llvm::VPTransformState*) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x36aca98)
#13 0x0000aaaacc05ef90 llvm::VPlan::execute(llvm::VPTransformState*) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x36aef90)
#14 0x0000aaaacbfc6a58 llvm::LoopVectorizationPlanner::executePlan(llvm::ElementCount, unsigned int, llvm::VPlan&, llvm::InnerLoopVectorizer&, llvm::DominatorTree*) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x3616a58)
#15 0x0000aaaacbfdcab0 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x362cab0)
#16 0x0000aaaacbfdfff4 llvm::LoopVectorizePass::runImpl(llvm::Function&, llvm::ScalarEvolution&, llvm::LoopInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::BlockFrequencyInfo&, llvm::TargetLibraryInfo*, llvm::DemandedBits&, llvm::AAResults&, llvm::AssumptionCache&, std::function<llvm::LoopAccessInfo const& (llvm::Loop&)>&, llvm::OptimizationRemarkEmitter&, llvm::ProfileSummaryInfo*) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x362fff4)
#17 0x0000aaaacbfe08cc llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x36308cc)
#18 0x0000aaaacb796818 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x2de6818)
#19 0x0000aaaacb799d28 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x2de9d28)
#20 0x0000aaaacb795504 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x2de5504)
#21 0x0000aaaacc594d3c (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile> >&) BackendUtil.cpp:0:0
#22 0x0000aaaacc58e540 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x3bde540)
#23 0x0000aaaacc8e841c clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) CodeGenAction.cpp:0:0
#24 0x0000aaaacd109bb4 clang::ParseAST(clang::Sema&, bool, bool) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x4759bb4)
#25 0x0000aaaacc82dcfc clang::FrontendAction::Execute() (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x3e7dcfc)
#26 0x0000aaaacc7bb7d0 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x3e0b7d0)
#27 0x0000aaaacc8e2878 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x3f32878)
#28 0x0000aaaacab333d4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x21833d4)
#29 0x0000aaaacab31800 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#30 0x0000aaaacc696e00 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::$_1>(long) Job.cpp:0:0
#31 0x0000aaaacbdc04d4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x34104d4)
#32 0x0000aaaacc6968c0 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x3ce68c0)
#33 0x0000aaaacc665f2c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x3cb5f2c)
#34 0x0000aaaacc666198 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x3cb6198)
#35 0x0000aaaacc679318 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x3cc9318)
#36 0x0000aaaacab30f90 main (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x2180f90)
#37 0x0000ffff8a94b1c8 __libc_start_call_main (/lib64/libc.so.6+0x2b1c8)
#38 0x0000ffff8a94b2a0 __libc_start_main at GLIBC_2.17 (/lib64/libc.so.6+0x2b2a0)
#39 0x0000aaaacab2e9b0 _start (/home/nathan/tmp/build/llvm/stage1/bin/clang-15+0x217e9b0)
clang-15: error: clang frontend command failed with exit code 134 (use -v to see invocation)
ClangBuiltLinux clang version 15.0.0 (https://github.com/llvm/llvm-project 1fbdf3a02ed610a9d03ea0b908f2b9cdab75a82a)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/nathan/tmp/build/llvm/stage1/bin
clang-15: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D123720/new/
https://reviews.llvm.org/D123720
More information about the llvm-commits
mailing list