[Bf-blender-cvs] [192b5e9cfb1] functions: simplify usage of construct builders

Jacques Lucke noreply at git.blender.org
Mon May 13 10:16:41 CEST 2019


Commit: 192b5e9cfb14128fe6dae91f85169ed02a87ba1f
Author: Jacques Lucke
Date:   Thu May 9 12:29:00 2019 +0200
Branches: functions
https://developer.blender.org/rB192b5e9cfb14128fe6dae91f85169ed02a87ba1f

simplify usage of construct builders

===================================================================

M	source/blender/functions/backends/llvm/builder.cpp
M	source/blender/functions/backends/llvm/builder.hpp
M	source/blender/functions/functions/auto_vectorization.cpp

===================================================================

diff --git a/source/blender/functions/backends/llvm/builder.cpp b/source/blender/functions/backends/llvm/builder.cpp
index ca73fd2365c..9db78fef568 100644
--- a/source/blender/functions/backends/llvm/builder.cpp
+++ b/source/blender/functions/backends/llvm/builder.cpp
@@ -135,14 +135,14 @@ IRConstruct_ForLoop CodeBuilder::CreateForLoop(std::string name)
   return IRConstruct_ForLoop(entry_builder, condition_builder, body_builder);
 }
 
-llvm::BasicBlock *IRConstruct_ForLoop::finalize(llvm::Value *condition)
+void IRConstruct_ForLoop::finalize(CodeBuilder &after_builder, llvm::Value *condition)
 {
   m_entry.CreateBr(m_condition_entry);
   m_body.CreateBr(m_condition_entry);
 
   auto after_block = m_entry.NewBlockInFunction("After Loop");
   m_condition.CreateCondBr(condition, m_body_entry, after_block);
-  return after_block;
+  after_builder.SetInsertPoint(after_block);
 }
 
 /* Iterations Loop
@@ -161,7 +161,7 @@ IRConstruct_IterationsLoop CodeBuilder::CreateNIterationsLoop(llvm::Value *itera
   return IRConstruct_IterationsLoop(loop, iterations, current_iteration);
 }
 
-llvm::BasicBlock *IRConstruct_IterationsLoop::finalize()
+void IRConstruct_IterationsLoop::finalize(CodeBuilder &after_builder)
 {
   CodeBuilder &entry_builder = m_loop.entry_builder();
   CodeBuilder &condition_builder = m_loop.condition_builder();
@@ -171,7 +171,7 @@ llvm::BasicBlock *IRConstruct_IterationsLoop::finalize()
   m_current_iteration->addIncoming(entry_builder.getInt32(0), entry_builder.GetInsertBlock());
   m_current_iteration->addIncoming(next_iteration, body_builder.GetInsertBlock());
   llvm::Value *condition = condition_builder.CreateICmpULT(m_current_iteration, m_iterations);
-  return m_loop.finalize(condition);
+  m_loop.finalize(after_builder, condition);
 }
 
 /* If Then Else
@@ -185,12 +185,12 @@ IRConstruct_IfThenElse CodeBuilder::CreateIfThenElse(llvm::Value *condition, std
   return IRConstruct_IfThenElse(CodeBuilder(then_block), CodeBuilder(else_block));
 }
 
-llvm::BasicBlock *IRConstruct_IfThenElse::finalize()
+void IRConstruct_IfThenElse::finalize(CodeBuilder &after_builder)
 {
   auto after_block = m_then_builder.NewBlockInFunction("After If");
   m_then_builder.CreateBr(after_block);
   m_else_builder.CreateBr(after_block);
-  return after_block;
+  after_builder.SetInsertPoint(after_block);
 }
 
 } /* namespace FN */
diff --git a/source/blender/functions/backends/llvm/builder.hpp b/source/blender/functions/backends/llvm/builder.hpp
index 54921e52742..6649a1726be 100644
--- a/source/blender/functions/backends/llvm/builder.hpp
+++ b/source/blender/functions/backends/llvm/builder.hpp
@@ -464,7 +464,7 @@ class IRConstruct_ForLoop {
     return m_body;
   }
 
-  llvm::BasicBlock *finalize(llvm::Value *condition);
+  void finalize(CodeBuilder &after_builder, llvm::Value *condition);
 };
 
 class IRConstruct_IterationsLoop {
@@ -491,7 +491,7 @@ class IRConstruct_IterationsLoop {
     return m_current_iteration;
   }
 
-  llvm::BasicBlock *finalize();
+  void finalize(CodeBuilder &after_builder);
 };
 
 class IRConstruct_IfThenElse {
@@ -515,7 +515,7 @@ class IRConstruct_IfThenElse {
     return m_else_builder;
   }
 
-  llvm::BasicBlock *finalize();
+  void finalize(CodeBuilder &after_builder);
 };
 
 } /* namespace FN */
diff --git a/source/blender/functions/functions/auto_vectorization.cpp b/source/blender/functions/functions/auto_vectorization.cpp
index 7e6cd9e1d17..7840e805652 100644
--- a/source/blender/functions/functions/auto_vectorization.cpp
+++ b/source/blender/functions/functions/auto_vectorization.cpp
@@ -86,7 +86,7 @@ class AutoVectorizationGen : public LLVMBuildIRBody {
     this->store_computed_values_in_output_lists(
         body_builder, main_outputs, output_data_pointers, iteration);
 
-    builder.SetInsertPoint(loop.finalize());
+    loop.finalize(builder);
     this->free_input_lists(builder, interface);
   }



More information about the Bf-blender-cvs mailing list