LCOV - code coverage report
Current view: top level - src/backend/jit/llvm - llvmjit_wrap.cpp (source / functions) Hit Total Coverage
Test: PostgreSQL 18devel Lines: 4 4 100.0 %
Date: 2024-11-21 08:14:44 Functions: 2 2 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*-------------------------------------------------------------------------
       2             :  *
       3             :  * llvmjit_wrap.cpp
       4             :  *    Parts of the LLVM interface not (yet) exposed to C.
       5             :  *
       6             :  * Copyright (c) 2016-2024, PostgreSQL Global Development Group
       7             :  *
       8             :  * IDENTIFICATION
       9             :  *    src/backend/lib/llvm/llvmjit_wrap.cpp
      10             :  *
      11             :  *-------------------------------------------------------------------------
      12             :  */
      13             : 
      14             : extern "C"
      15             : {
      16             : #include "postgres.h"
      17             : }
      18             : 
      19             : #include <llvm-c/Core.h>
      20             : #include <llvm/IR/Function.h>
      21             : 
      22             : #include "jit/llvmjit.h"
      23             : #include "jit/llvmjit_backport.h"
      24             : 
      25             : #ifdef USE_LLVM_BACKPORT_SECTION_MEMORY_MANAGER
      26             : #include <llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h>
      27             : #include <llvm/ExecutionEngine/SectionMemoryManager.h>
      28             : #include "jit/SectionMemoryManager.h"
      29             : #include <llvm/Support/CBindingWrapping.h>
      30             : #endif
      31             : 
      32             : 
      33             : /*
      34             :  * C-API extensions.
      35             :  */
      36             : 
      37             : LLVMTypeRef
      38       17808 : LLVMGetFunctionReturnType(LLVMValueRef r)
      39             : {
      40       17808 :     return llvm::wrap(llvm::unwrap<llvm::Function>(r)->getReturnType());
      41             : }
      42             : 
      43             : LLVMTypeRef
      44       50126 : LLVMGetFunctionType(LLVMValueRef r)
      45             : {
      46       50126 :     return llvm::wrap(llvm::unwrap<llvm::Function>(r)->getFunctionType());
      47             : }
      48             : 
      49             : #ifdef USE_LLVM_BACKPORT_SECTION_MEMORY_MANAGER
      50             : DEFINE_SIMPLE_CONVERSION_FUNCTIONS(llvm::orc::ExecutionSession, LLVMOrcExecutionSessionRef)
      51             : DEFINE_SIMPLE_CONVERSION_FUNCTIONS(llvm::orc::ObjectLayer, LLVMOrcObjectLayerRef);
      52             : 
      53             : LLVMOrcObjectLayerRef
      54             : LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager(LLVMOrcExecutionSessionRef ES)
      55             : {
      56             :     return wrap(new llvm::orc::RTDyldObjectLinkingLayer(
      57             :         *unwrap(ES), [] { return std::make_unique<llvm::backport::SectionMemoryManager>(nullptr, true); }));
      58             : }
      59             : #endif

Generated by: LCOV version 1.14