[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