Skip to content

Commit aa9ab1a

Browse files
gptsarthakczgdp1807
authored andcommitted
Never Inline BindC Functions
1 parent 377cc12 commit aa9ab1a

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/libasr/pass/inline_function_calls.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,12 @@ class InlineFunctionCallVisitor : public PassUtils::PassVisitor<InlineFunctionCa
153153
ASR::ExternalSymbol_t* called_sym_ext = ASR::down_cast<ASR::ExternalSymbol_t>(x.m_name);
154154
ASR::symbol_t* f_sym = ASRUtils::symbol_get_past_external(called_sym_ext->m_external);
155155
ASR::Function_t* f = ASR::down_cast<ASR::Function_t>(f_sym);
156+
157+
// Never inline intrinsic functions
158+
if( ASRUtils::is_intrinsic_function2(f) ) {
159+
return ;
160+
}
161+
156162
ASR::symbol_t* called_sym = x.m_name;
157163

158164
// TODO: Handle later
@@ -211,12 +217,6 @@ class InlineFunctionCallVisitor : public PassUtils::PassVisitor<InlineFunctionCa
211217
return ;
212218
}
213219

214-
// Never inline intrinsic functions
215-
if( ASRUtils::is_intrinsic_function2(func) ||
216-
startswith(func->m_name,"_lfortran_") ) {
217-
return ;
218-
}
219-
220220
if( !is_fast && !ASRUtils::get_FunctionType(func)->m_inline ) {
221221
return ;
222222
}
@@ -346,6 +346,11 @@ class InlineFunctionCallVisitor : public PassUtils::PassVisitor<InlineFunctionCa
346346
}
347347
}
348348

349+
// Never Inline BindC Function
350+
if(ASRUtils::get_FunctionType(func)->m_abi == ASR::abiType::BindC){
351+
return;
352+
}
353+
349354
if( success ) {
350355
// Set inlining_function to true so that we inline
351356
// only one function at a time.

0 commit comments

Comments
 (0)