[PATCH] D115955: [SLP]Alternate vectorization for cmp instructions.

Alexey Bataev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 10 08:04:24 PST 2022


ABataev added a comment.

In D115955#3311301 <https://reviews.llvm.org/D115955#3311301>, @alexfh wrote:

> So far I have a stack trace from a release clang build:
>
>    #0 0x000055efacbf6c29 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int)
>    #1 0x000055efacbf7065 SignalHandler(int)
>    #2 0x00007f1f25022750 __restore_rt
>    #3 0x000055efa973210b (anonymous namespace)::LazyValueInfoImpl::getEdgeValue(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::Instruction*)
>    #4 0x000055efa972db80 (anonymous namespace)::LazyValueInfoImpl::solve() (.llvm.1834014330660040286)
>    #5 0x000055efa972a2dd (anonymous namespace)::LazyValueInfoImpl::getValueInBlock(llvm::Value*, llvm::BasicBlock*, llvm::Instruction*)
>    #6 0x000055efa978882b runImpl(llvm::Function&, llvm::LazyValueInfo*, llvm::DominatorTree*, llvm::SimplifyQuery const&)
>    #7 0x000055efa9787755 llvm::CorrelatedValuePropagationPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)
>    #8 0x000055efa97873b2 llvm::detail::PassModel<llvm::Function, llvm::CorrelatedValuePropagationPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)
>    #9 0x000055efa983d69a llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)
>   #10 0x000055efa983d2b2 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>&)
>   #11 0x000055efa999414e llvm::CGSCCToFunctionPassAdaptor::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&)
>   #12 0x000055efa9993b32 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::CGSCCToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&)
>   #13 0x000055efa9940a64 llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) 
>   #14 0x000055efa99406f2 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&)
>   #15 0x000055efa987de69 llvm::DevirtSCCRepeatedPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&)
>   #16 0x000055efa987dc52 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) 
>   #17 0x000055efa98934a0 llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&)
>   #18 0x000055efa919ddb2 llvm::detail::PassModel<llvm::Module, llvm::ModuleToPostOrderCGSCCPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&)
>   #19 0x000055efa8f4a1c4 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&)
>   #20 0x000055efa8f49e4a llvm::ModuleInlinerWrapperPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&)
>   #21 0x000055efa8f49c92 llvm::detail::PassModel<llvm::Module, llvm::ModuleInlinerWrapperPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&)
>   #22 0x000055efa8f4a1c4 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&)
>   #23 0x000055efa8f8c260 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::__u::unique_ptr<llvm::raw_pwrite_stream, std::__u::default_delete<llvm::raw_pwrite_stream>>&, std::__u::unique_ptr<llvm::ToolOutputFile, std::__u::default_delete<llvm::ToolOutputFile> >&)
>   #24 0x000055efa8f84bb2 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::__u::unique_ptr<llvm::raw_pwrite_stream, std::__u::default_delete<llvm::raw_pwrite_stream> >) 
>   #25 0x000055efa9a4b8d1 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&)
>   #26 0x000055efa8f7e180 clang::ParseAST(clang::Sema&, bool, bool)
>   #27 0x000055efa90338f5 clang::FrontendAction::Execute()
>   #28 0x000055efa903372e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
>   #29 0x000055efa90335a1 clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
>   #30 0x000055efa9a15d58 cc1_main(llvm::ArrayRef<char const*>, char const*, void*)
>   #31 0x000055efa9112f7e ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&)
>   #32 0x000055efa98b2a2d main
>
> ... and an assertion from a checked clang build, but it has a different stack trace:
>
>   assert.h assertion failed at llvm/include/llvm/Support/Casting.h:262 in typename cast_retty<X, Y>::ret_type llvm::cast(Y &) [X = clang::CodeGen::EHCleanupScope, Y = clang::CodeGen::EHScope]: isa<X>(Val) && "cast<Ty>() argument of incompatible type!"
>       @     0x55948ac83344  __assert_fail
>       @     0x559486524fb0  clang::CodeGen::CodeGenFunction::DeactivateCleanupBlock()
>       @     0x55948640de42  clang::CodeGen::CodeGenFunction::EmitCall()
>       @     0x559486421016  clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall()
>       @     0x559486420429  clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall()
>       @     0x5594865d9cb8  clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr()
>       @     0x5594865cb013  (anonymous namespace)::AggExprEmitter::VisitCXXConstructExpr()  
>       @     0x5594865c6ff6  clang::CodeGen::CodeGenFunction::EmitAggExpr() 
>       @     0x5594865dbb0b  StoreAnyExprIntoOneUnit()  
>       @     0x5594865de49d  clang::CodeGen::CodeGenFunction::EmitCXXNewExpr()
>       @     0x55948646006a  (anonymous namespace)::ScalarExprEmitter::VisitExprWithCleanups()
>       @     0x5594864507ab  clang::CodeGen::CodeGenFunction::EmitScalarExpr()
>       @     0x55948642ae09  clang::CodeGen::CodeGenFunction::EmitAnyExpr()
>       @     0x55948642ada1  clang::CodeGen::CodeGenFunction::EmitIgnoredExpr()
>       @     0x5594864c8790  clang::CodeGen::CodeGenFunction::EmitStmt()
>       @     0x5594864d4910  clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope()
>       @     0x5594866e9ed3  clang::CodeGen::CodeGenFunction::EmitFunctionBody()
>       @     0x5594866eac9e  clang::CodeGen::CodeGenFunction::GenerateCode()
>       @     0x55948670a722  clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition()
>       @     0x559486702e90  clang::CodeGen::CodeGenModule::EmitGlobalDefinition()
>       @     0x5594866f734f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f737f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f737f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f737f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f737f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f737f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f737f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f737f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f737f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f737f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f737f  clang::CodeGen::CodeGenModule::EmitDeferred()
>       @     0x5594866f587c  clang::CodeGen::CodeGenModule::Release()
>       @     0x559486827989  (anonymous namespace)::CodeGeneratorImpl::HandleTranslationUnit()
>       @     0x5594863da495  clang::BackendConsumer::HandleTranslationUnit()
>       @     0x55948718fa94  clang::ParseAST()
>       @     0x559486f07443  clang::FrontendAction::Execute()
>       @     0x559486e5d3bf  clang::CompilerInstance::ExecuteAction()
>       @     0x559485fd88fe  clang::ExecuteCompilerInvocation()
>
> Not sure if these two are somehow related though. Looking further...

Yeah, currently it does not look like related to SLP at all.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D115955/new/

https://reviews.llvm.org/D115955



More information about the llvm-commits mailing list