[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