From 3c6c19f3c562fa64a61e85396feaccad624afb0d Mon Sep 17 00:00:00 2001 From: Thirumalai Shaktivel Date: Sat, 25 Nov 2023 07:59:45 +0530 Subject: [PATCH 1/3] [LLVM] Use `8` as the default kind for CPtr --- src/libasr/codegen/llvm_utils.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libasr/codegen/llvm_utils.cpp b/src/libasr/codegen/llvm_utils.cpp index 88f77ec930..e19f309b1f 100644 --- a/src/libasr/codegen/llvm_utils.cpp +++ b/src/libasr/codegen/llvm_utils.cpp @@ -1267,6 +1267,7 @@ namespace LCompilers { break; } case (ASR::ttypeType::CPtr) : { + a_kind = 8; llvm_type = llvm::Type::getVoidTy(context)->getPointerTo(); break; } From 0c1d3e65b6bdc40de0228d1db8134ecf588baf11 Mon Sep 17 00:00:00 2001 From: Thirumalai Shaktivel Date: Sat, 25 Nov 2023 10:03:18 +0530 Subject: [PATCH 2/3] [LLVM] Handle `CPtr` `intent::Out` argument --- src/libasr/codegen/asr_to_llvm.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libasr/codegen/asr_to_llvm.cpp b/src/libasr/codegen/asr_to_llvm.cpp index 6d2c4e7260..4e447b242c 100644 --- a/src/libasr/codegen/asr_to_llvm.cpp +++ b/src/libasr/codegen/asr_to_llvm.cpp @@ -7766,9 +7766,9 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor if (llvm_symtab.find(h) != llvm_symtab.end()) { tmp = llvm_symtab[h]; if( !ASRUtils::is_array(arg->m_type) ) { - if (x_abi == ASR::abiType::Source && ASR::is_a(*arg->m_type)) { - if (arg->m_intent == intent_local) { + if ( orig_arg_intent != ASRUtils::intent_out && + arg->m_intent == intent_local ) { // Local variable of type // CPtr is a void**, so we // have to load it @@ -7815,9 +7815,10 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor } } } else if (is_a(*arg_type)) { - if (arg->m_intent == intent_local) { - // Local variable of type - // CPtr is a void**, so we + if ( arg->m_intent == intent_local || + arg->m_intent == ASRUtils::intent_out) { + // Local variable or Dummy out argument + // of type CPtr is a void**, so we // have to load it tmp = CreateLoad(tmp); } From 05f10bb3783f320eafc72578f85ff0d96bbde115 Mon Sep 17 00:00:00 2001 From: Thirumalai Shaktivel Date: Sat, 25 Nov 2023 10:03:59 +0530 Subject: [PATCH 3/3] Test: Enable llvm tests for symbolic --- integration_tests/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integration_tests/CMakeLists.txt b/integration_tests/CMakeLists.txt index 3540040ea6..cf1ce217c9 100644 --- a/integration_tests/CMakeLists.txt +++ b/integration_tests/CMakeLists.txt @@ -714,9 +714,9 @@ RUN(NAME symbolics_07 LABELS cpython_sym c_sym llvm_sym NOFAST) RUN(NAME symbolics_08 LABELS cpython_sym c_sym llvm_sym) RUN(NAME symbolics_09 LABELS cpython_sym c_sym llvm_sym NOFAST) RUN(NAME symbolics_10 LABELS cpython_sym c_sym llvm_sym NOFAST) -RUN(NAME symbolics_11 LABELS cpython_sym c_sym NOFAST) +RUN(NAME symbolics_11 LABELS cpython_sym c_sym llvm_sym NOFAST) RUN(NAME symbolics_12 LABELS cpython_sym c_sym llvm_sym NOFAST) -RUN(NAME symbolics_13 LABELS cpython_sym c_sym NOFAST) +RUN(NAME symbolics_13 LABELS cpython_sym c_sym llvm_sym NOFAST) RUN(NAME sizeof_01 LABELS llvm c EXTRAFILES sizeof_01b.c)