From 377cc12a529381bfce0c58c8fb90a1182f8ca305 Mon Sep 17 00:00:00 2001 From: gptsarthak Date: Thu, 13 Apr 2023 18:22:00 +0530 Subject: [PATCH 1/2] Never inline intrinsic functions --- src/libasr/pass/inline_function_calls.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libasr/pass/inline_function_calls.cpp b/src/libasr/pass/inline_function_calls.cpp index 514ef1939f..e0b2ace68c 100644 --- a/src/libasr/pass/inline_function_calls.cpp +++ b/src/libasr/pass/inline_function_calls.cpp @@ -153,12 +153,6 @@ class InlineFunctionCallVisitor : public PassUtils::PassVisitor(x.m_name); ASR::symbol_t* f_sym = ASRUtils::symbol_get_past_external(called_sym_ext->m_external); ASR::Function_t* f = ASR::down_cast(f_sym); - - // Never inline intrinsic functions - if( ASRUtils::is_intrinsic_function2(f) ) { - return ; - } - ASR::symbol_t* called_sym = x.m_name; // TODO: Handle later @@ -217,6 +211,12 @@ class InlineFunctionCallVisitor : public PassUtils::PassVisitorm_name,"_lfortran_") ) { + return ; + } + if( !is_fast && !ASRUtils::get_FunctionType(func)->m_inline ) { return ; } From aa9ab1a131eb99cd754c77423ef4fe233bce6953 Mon Sep 17 00:00:00 2001 From: gptsarthak Date: Sun, 16 Apr 2023 19:33:48 +0530 Subject: [PATCH 2/2] Never Inline BindC Functions --- src/libasr/pass/inline_function_calls.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/libasr/pass/inline_function_calls.cpp b/src/libasr/pass/inline_function_calls.cpp index e0b2ace68c..33336dadce 100644 --- a/src/libasr/pass/inline_function_calls.cpp +++ b/src/libasr/pass/inline_function_calls.cpp @@ -153,6 +153,12 @@ class InlineFunctionCallVisitor : public PassUtils::PassVisitor(x.m_name); ASR::symbol_t* f_sym = ASRUtils::symbol_get_past_external(called_sym_ext->m_external); ASR::Function_t* f = ASR::down_cast(f_sym); + + // Never inline intrinsic functions + if( ASRUtils::is_intrinsic_function2(f) ) { + return ; + } + ASR::symbol_t* called_sym = x.m_name; // TODO: Handle later @@ -211,12 +217,6 @@ class InlineFunctionCallVisitor : public PassUtils::PassVisitorm_name,"_lfortran_") ) { - return ; - } - if( !is_fast && !ASRUtils::get_FunctionType(func)->m_inline ) { return ; } @@ -346,6 +346,11 @@ class InlineFunctionCallVisitor : public PassUtils::PassVisitorm_abi == ASR::abiType::BindC){ + return; + } + if( success ) { // Set inlining_function to true so that we inline // only one function at a time.