diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/slang-ir-simplify-cfg.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source/slang/slang-ir-simplify-cfg.cpp b/source/slang/slang-ir-simplify-cfg.cpp index ab332fd1b..c4c5b584e 100644 --- a/source/slang/slang-ir-simplify-cfg.cpp +++ b/source/slang/slang-ir-simplify-cfg.cpp @@ -176,7 +176,9 @@ static bool doesLoopHasSideEffect(IRGlobalValueWithCode* func, IRLoop* loopInst) if (auto call = as<IRCall>(inst)) { auto callee = getResolvedInstForDecorations(call->getCallee()); - if (!callee || !callee->findDecoration<IRReadNoneDecoration>()) + if (!callee || + !(callee->findDecoration<IRNoSideEffectDecoration>() || + callee->findDecoration<IRReadNoneDecoration>())) return true; // We are calling a pure function, check if any of the return // variables are used outside the loop. |
