Mesa (master): gallivm: add create_builder_at_entry helper function
Nicolai Hähnle
nh at kemper.freedesktop.org
Wed Aug 17 10:11:31 UTC 2016
Module: Mesa
Branch: master
Commit: 17e88e276ca5baeda4867713871219ebdf925d33
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=17e88e276ca5baeda4867713871219ebdf925d33
Author: Nicolai Hähnle <nicolai.haehnle at amd.com>
Date: Tue Aug 9 12:23:41 2016 +0200
gallivm: add create_builder_at_entry helper function
Reduces code duplication.
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
---
src/gallium/auxiliary/gallivm/lp_bld_flow.c | 45 ++++++++++++++---------------
1 file changed, 22 insertions(+), 23 deletions(-)
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c
index f3b3eab..9183f45 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c
@@ -454,6 +454,26 @@ lp_build_endif(struct lp_build_if_state *ifthen)
}
+static LLVMBuilderRef
+create_builder_at_entry(struct gallivm_state *gallivm)
+{
+ LLVMBuilderRef builder = gallivm->builder;
+ LLVMBasicBlockRef current_block = LLVMGetInsertBlock(builder);
+ LLVMValueRef function = LLVMGetBasicBlockParent(current_block);
+ LLVMBasicBlockRef first_block = LLVMGetEntryBasicBlock(function);
+ LLVMValueRef first_instr = LLVMGetFirstInstruction(first_block);
+ LLVMBuilderRef first_builder = LLVMCreateBuilderInContext(gallivm->context);
+
+ if (first_instr) {
+ LLVMPositionBuilderBefore(first_builder, first_instr);
+ } else {
+ LLVMPositionBuilderAtEnd(first_builder, first_block);
+ }
+
+ return first_builder;
+}
+
+
/**
* Allocate a scalar (or vector) variable.
*
@@ -475,19 +495,9 @@ lp_build_alloca(struct gallivm_state *gallivm,
const char *name)
{
LLVMBuilderRef builder = gallivm->builder;
- LLVMBasicBlockRef current_block = LLVMGetInsertBlock(builder);
- LLVMValueRef function = LLVMGetBasicBlockParent(current_block);
- LLVMBasicBlockRef first_block = LLVMGetEntryBasicBlock(function);
- LLVMValueRef first_instr = LLVMGetFirstInstruction(first_block);
- LLVMBuilderRef first_builder = LLVMCreateBuilderInContext(gallivm->context);
+ LLVMBuilderRef first_builder = create_builder_at_entry(gallivm);
LLVMValueRef res;
- if (first_instr) {
- LLVMPositionBuilderBefore(first_builder, first_instr);
- } else {
- LLVMPositionBuilderAtEnd(first_builder, first_block);
- }
-
res = LLVMBuildAlloca(first_builder, type, name);
LLVMBuildStore(builder, LLVMConstNull(type), res);
@@ -517,20 +527,9 @@ lp_build_array_alloca(struct gallivm_state *gallivm,
LLVMValueRef count,
const char *name)
{
- LLVMBuilderRef builder = gallivm->builder;
- LLVMBasicBlockRef current_block = LLVMGetInsertBlock(builder);
- LLVMValueRef function = LLVMGetBasicBlockParent(current_block);
- LLVMBasicBlockRef first_block = LLVMGetEntryBasicBlock(function);
- LLVMValueRef first_instr = LLVMGetFirstInstruction(first_block);
- LLVMBuilderRef first_builder = LLVMCreateBuilderInContext(gallivm->context);
+ LLVMBuilderRef first_builder = create_builder_at_entry(gallivm);
LLVMValueRef res;
- if (first_instr) {
- LLVMPositionBuilderBefore(first_builder, first_instr);
- } else {
- LLVMPositionBuilderAtEnd(first_builder, first_block);
- }
-
res = LLVMBuildArrayAlloca(first_builder, type, count, name);
LLVMDisposeBuilder(first_builder);
More information about the mesa-commit
mailing list