[PATCH] D133891: [SLP]Improve isUndefVector function by adding insertelement analysis.
Alexey Bataev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 20 13:13:44 PDT 2022
ABataev added a comment.
In D133891#3803727 <https://reviews.llvm.org/D133891#3803727>, @srj wrote:
> Slightly more detailed traceback from a `RelWithDebInfo` build of LLVM. Looks like one of the `SmallVector`s created during processing of `case Instruction::InsertElement` is bad when we try to free it? I wonder if `Mask.swap(PrevMask);` on SLPVectorizer.cpp:8160 could be suspicious here.
>
> #0 __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
> #1 0x00007ffff0adc546 in __GI_abort () at abort.c:79
> #2 0x00007ffff0b33ed8 in __libc_message (action=action at entry=do_abort, fmt=fmt at entry=0x7ffff0c51c2f "%s\n") at ../sysdeps/posix/libc_fatal.c:155
> #3 0x00007ffff0b3b93a in malloc_printerr (str=str at entry=0x7ffff0c540d0 "free(): invalid next size (fast)") at malloc.c:5628
> #4 0x00007ffff0b3cd94 in _int_free (av=0x7ffff0c88b80 <main_arena>, p=0x555555d65cb0, have_lock=have_lock at entry=0) at malloc.c:4481
> #5 0x00007ffff0b409d4 in __GI___libc_free (mem=<optimized out>) at malloc.c:3309
> #6 0x00007ffff3c2bed9 in llvm::SmallVector<int, 12u>::~SmallVector (this=0x7fffffff76a0, __in_chrg=<optimized out>)
> at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/include/llvm/ADT/SmallVector.h:1187
> #7 llvm::slpvectorizer::BoUpSLP::vectorizeTree (this=0x7fffffff9290, E=0x555555e68ef0)
> at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:8199
> #8 0x00007ffff3c34370 in llvm::slpvectorizer::BoUpSLP::vectorizeTree (this=0x7fffffff9290, ExternallyUsedValues=...)
> at /usr/include/c++/12/bits/unique_ptr.h:461
> #9 0x00007ffff3c36ae6 in llvm::slpvectorizer::BoUpSLP::vectorizeTree (this=<optimized out>)
> at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:8610
> #10 0x00007ffff3c492b8 in llvm::SLPVectorizerPass::tryToVectorizeList (this=<optimized out>, VL=..., R=..., LimitForRegisterSize=false)
> at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:10588
> #11 0x00007ffff3c4bce0 in llvm::SLPVectorizerPass::vectorizeInsertElementInst (this=0x555556603868, IEI=0x555555c76880, BB=<optimized out>, R=...)
> at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/include/llvm/ADT/SmallVector.h:277
> #12 0x00007ffff3c4cb52 in llvm::SLPVectorizerPass::vectorizeSimpleInstructions (this=0x555556603868, Instructions=..., BB=0x555555edf5a0, R=...,
> AtTerminator=<optimized out>) at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:12182
> #13 0x00007ffff3c4e35a in llvm::SLPVectorizerPass::vectorizeChainsInBlock (this=0x555556603868, BB=0x555555edf5a0, R=...)
> at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/include/llvm/IR/Instruction.h:185
> #14 0x00007ffff3c50d7b in llvm::SLPVectorizerPass::runImpl (this=0x555556603868, F=..., SE_=<optimized out>, TTI_=<optimized out>, TLI_=<optimized out>,
> AA_=<optimized out>, LI_=0x555555f4cb48, DT_=0x555555db9f08, AC_=0x5555565d52c8, DB_=0x555555ea20d8, ORE_=0x555555d9ed68)
> at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:10233
> #15 0x00007ffff3c51db8 in llvm::SLPVectorizerPass::run (this=0x555556603868, F=..., AM=...)
> at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:10164
> #16 0x00007ffff37641cd in llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (this=<optimized out>, IR=..., AM=...)
> at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/include/llvm/IR/PassManagerInternal.h:86
> #17 0x00007ffff271bdd5 in llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (AM=..., IR=..., this=<optimized out>) at /usr/include/c++/12/bits/unique_ptr.h:461
> #18 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (this=<optimized out>, IR=..., AM=...)
> at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/include/llvm/IR/PassManagerInternal.h:88
> #19 0x00007ffff4b17749 in llvm::ModuleToFunctionPassAdaptor::run (this=<optimized out>, M=..., AM=...) at /usr/include/c++/12/bits/unique_ptr.h:461
> #20 0x00007ffff18ebe35 in llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) () at /usr/local/google/home/srj/GitHub/llvm-project/16/llvm/include/llvm/MC/SubtargetFeature.h:121
> #21 0x00007ffff18e2f2c in Halide::Internal::CodeGen_LLVM::optimize_module() ()
Hmmm, I wonder what's wrong with the swap here but I'll check.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133891/new/
https://reviews.llvm.org/D133891
More information about the llvm-commits
mailing list