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()));
+               }
        }
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to