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

Alexander Kornienko via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 10 08:02:23 PST 2022


alexfh added a comment.

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...


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