[Bf-blender-cvs] [8fda725] object_nodes: Fix invalid function signature when passing derivatives for types that don't support them.
Lukas Tönne
noreply at git.blender.org
Thu Jun 2 17:31:58 CEST 2016
Commit: 8fda725b1873af2ca91e3e1999e82c02b9ff1863
Author: Lukas Tönne
Date: Thu Jun 2 14:58:19 2016 +0200
Branches: object_nodes
https://developer.blender.org/rB8fda725b1873af2ca91e3e1999e82c02b9ff1863
Fix invalid function signature when passing derivatives for types that don't support them.
===================================================================
M source/blender/blenvm/llvm/llvm_compiler_dual.cc
===================================================================
diff --git a/source/blender/blenvm/llvm/llvm_compiler_dual.cc b/source/blender/blenvm/llvm/llvm_compiler_dual.cc
index b5cd428..97eacec 100644
--- a/source/blender/blenvm/llvm/llvm_compiler_dual.cc
+++ b/source/blender/blenvm/llvm/llvm_compiler_dual.cc
@@ -98,10 +98,14 @@ void LLVMTextureCompiler::copy_node_value(const ConstOutputKey &from, const Cons
void LLVMTextureCompiler::append_output_arguments(std::vector<llvm::Value*> &args, const ConstOutputKey &output)
{
+ const TypeSpec *typespec = output.socket->typedesc.get_typespec();
+
DualValue val = m_output_values.at(output);
args.push_back(val.value());
- args.push_back(val.dx());
- args.push_back(val.dy());
+ if (bvm_type_has_dual_value(typespec)) {
+ args.push_back(val.dx());
+ args.push_back(val.dy());
+ }
}
void LLVMTextureCompiler::append_input_value(llvm::BasicBlock *block, std::vector<llvm::Value*> &args,
@@ -115,13 +119,17 @@ void LLVMTextureCompiler::append_input_value(llvm::BasicBlock *block, std::vecto
DualValue ptr = m_output_values.at(link);
if (use_argument_pointer(typespec, false)) {
args.push_back(ptr.value());
- args.push_back(ptr.dx());
- args.push_back(ptr.dy());
+ if (bvm_type_has_dual_value(typespec)) {
+ args.push_back(ptr.dx());
+ args.push_back(ptr.dy());
+ }
}
else {
args.push_back(builder.CreateLoad(ptr.value()));
- args.push_back(builder.CreateLoad(ptr.dx()));
- args.push_back(builder.CreateLoad(ptr.dy()));
+ if (bvm_type_has_dual_value(typespec)) {
+ args.push_back(builder.CreateLoad(ptr.dx()));
+ args.push_back(builder.CreateLoad(ptr.dy()));
+ }
}
}
More information about the Bf-blender-cvs
mailing list