From a856dc076d4961fb37b9a8e601d3bd0dc1801da1 Mon Sep 17 00:00:00 2001 From: Gagandeep Singh Date: Thu, 13 Jul 2023 11:59:23 +0530 Subject: [PATCH] Avoid verifying IntrinsicFunction if check_external is False --- src/libasr/asr_verify.cpp | 4 ++++ src/libasr/serialization.cpp | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/libasr/asr_verify.cpp b/src/libasr/asr_verify.cpp index 129af1ceb4..34c05e48b1 100644 --- a/src/libasr/asr_verify.cpp +++ b/src/libasr/asr_verify.cpp @@ -974,6 +974,10 @@ class VerifyVisitor : public BaseWalkVisitor } void visit_IntrinsicFunction(const ASR::IntrinsicFunction_t& x) { + if( !check_external ) { + BaseWalkVisitor::visit_IntrinsicFunction(x); + return ; + } ASRUtils::verify_function verify_ = ASRUtils::IntrinsicFunctionRegistry ::get_verify_function(x.m_intrinsic_id); LCOMPILERS_ASSERT(verify_ != nullptr); diff --git a/src/libasr/serialization.cpp b/src/libasr/serialization.cpp index 55e12c8e8f..3e5eb83298 100644 --- a/src/libasr/serialization.cpp +++ b/src/libasr/serialization.cpp @@ -399,6 +399,14 @@ ASR::asr_t* deserialize_asr(Allocator &al, const std::string &s, ASR::FixParentSymtabVisitor p; p.visit_TranslationUnit(*tu); +#if defined(WITH_LFORTRAN_ASSERT) + diag::Diagnostics diagnostics; + if (!asr_verify(*tu, false, diagnostics)) { + std::cerr << diagnostics.render2(); + throw LCompilersException("Verify failed"); + }; + #endif + return node; }