kou commented on issue #37834:
URL: https://github.com/apache/arrow/issues/37834#issuecomment-1733209790

   Thanks!
   
   It seems that the following passes are related:
   
   ```cpp
         llvm::TargetIRAnalysis target_analysis =
             execution_engine_->getTargetMachine()->getTargetIRAnalysis();
         
pass_manager->add(llvm::createTargetTransformInfoWrapperPass(target_analysis));
         pass_manager->add(llvm::createFunctionInliningPass());
   ```
   
   Because `vector.body` can be emitted with the following patch:
   
   ```diff
   diff --git a/cpp/src/gandiva/engine.cc b/cpp/src/gandiva/engine.cc
   index 7d75793a3..59fbad1d3 100644
   --- a/cpp/src/gandiva/engine.cc
   +++ b/cpp/src/gandiva/engine.cc
   @@ -297,14 +297,14 @@ Status Engine::FinalizeModule() {
              execution_engine_->getTargetMachine()->getTargetIRAnalysis();
          
pass_manager->add(llvm::createTargetTransformInfoWrapperPass(target_analysis));
          pass_manager->add(llvm::createFunctionInliningPass());
   -      pass_manager->add(llvm::createInstructionCombiningPass());
   -      pass_manager->add(llvm::createPromoteMemoryToRegisterPass());
   -      pass_manager->add(llvm::createGVNPass());
   -      pass_manager->add(llvm::createNewGVNPass());
   -      pass_manager->add(llvm::createCFGSimplificationPass());
   -      pass_manager->add(llvm::createLoopVectorizePass());
   -      pass_manager->add(llvm::createSLPVectorizerPass());
   -      pass_manager->add(llvm::createGlobalOptimizerPass());
   +      // pass_manager->add(llvm::createInstructionCombiningPass());
   +      // pass_manager->add(llvm::createPromoteMemoryToRegisterPass());
   +      // pass_manager->add(llvm::createGVNPass());
   +      // pass_manager->add(llvm::createNewGVNPass());
   +      // pass_manager->add(llvm::createCFGSimplificationPass());
   +      // pass_manager->add(llvm::createLoopVectorizePass());
   +      // pass_manager->add(llvm::createSLPVectorizerPass());
   +      // pass_manager->add(llvm::createGlobalOptimizerPass());
    
          // run the optimiser
          llvm::PassManagerBuilder pass_builder;
   ```
   
   If I also comment out 
`pass_manager->add(llvm::createTargetTransformInfoWrapperPass(target_analysis))`
 or `pass_manager->add(llvm::createFunctionInliningPass())`, `vector.body` 
isn't emitted.
   
   Are there corresponding passes for them in new LLVM PassManager?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to