summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-validate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-validate.cpp')
-rw-r--r--source/slang/slang-ir-validate.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/source/slang/slang-ir-validate.cpp b/source/slang/slang-ir-validate.cpp
index 565ae97d8..b3d6504ab 100644
--- a/source/slang/slang-ir-validate.cpp
+++ b/source/slang/slang-ir-validate.cpp
@@ -273,14 +273,19 @@ void validateIRInstOperands(IRValidateContext* context, IRInst* inst)
}
static thread_local bool _enableIRValidationAtInsert = false;
-void disableIRValidationAtInsert()
+
+// RAII class implementation for exception-safe IR validation state management
+IRValidationScope::IRValidationScope(bool enableValidation)
+ : m_previousState(_enableIRValidationAtInsert)
{
- _enableIRValidationAtInsert = false;
+ _enableIRValidationAtInsert = enableValidation;
}
-void enableIRValidationAtInsert()
+
+IRValidationScope::~IRValidationScope()
{
- _enableIRValidationAtInsert = true;
+ _enableIRValidationAtInsert = m_previousState;
}
+
void validateIRInstOperands(IRInst* inst)
{
if (!_enableIRValidationAtInsert)