diff --git a/intern/cycles/render/svm.cpp b/intern/cycles/render/svm.cpp
index e81b2f3..8af5a1e 100644
--- a/intern/cycles/render/svm.cpp
+++ b/intern/cycles/render/svm.cpp
@@ -374,9 +374,13 @@ void SVMCompiler::find_dependencies(set<ShaderNode*>& dependencies,
ShaderNode *node = (input->link)? input->link->parent: NULL;
if(node && done.find(node) == done.end() && node != skip_node) {
- foreach(ShaderInput *in, node->inputs)
- if(!node_skip_input(node, in))
- find_dependencies(dependencies, done, in, skip_node);
+ foreach(ShaderInput *in, node->inputs) {
+ if(!node_skip_input(node, in)) {
+ if(dependencies.find(node) == dependencies.end()) {
+ find_dependencies(dependencies, done, in, skip_node);
+ }
+ }
+ }
dependencies.insert(node);
}