From 9dfe7ddbde2fd230548beef40ca5ea891f946c7e Mon Sep 17 00:00:00 2001 From: Christoffer Lerno Date: Thu, 18 Jul 2024 12:04:02 +0200 Subject: [PATCH] Add wrapper methods, use LLVM-transforms directly. --- src/compiler/llvm_codegen.c | 10 +--------- src/compiler/llvm_codegen_internal.h | 1 + wrapper/src/wrapper.cpp | 5 +++++ 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/compiler/llvm_codegen.c b/src/compiler/llvm_codegen.c index e4a26391d..5d79b2ac8 100644 --- a/src/compiler/llvm_codegen.c +++ b/src/compiler/llvm_codegen.c @@ -8,17 +8,9 @@ #include #include #include - +#include const char *varargslots_name = "varargslots"; const char *temp_name = "$$temp"; -typedef struct LLVMOpaquePassBuilderOptions *LLVMPassBuilderOptionsRef; -LLVMErrorRef LLVMRunPasses(LLVMModuleRef M, const char *Passes, - LLVMTargetMachineRef TM, - LLVMPassBuilderOptionsRef Options); -LLVMPassBuilderOptionsRef LLVMCreatePassBuilderOptions(void); -void LLVMPassBuilderOptionsSetVerifyEach(LLVMPassBuilderOptionsRef Options, LLVMBool VerifyEach); -void LLVMPassBuilderOptionsSetDebugLogging(LLVMPassBuilderOptionsRef Options, LLVMBool DebugLogging); -void LLVMDisposePassBuilderOptions(LLVMPassBuilderOptionsRef Options); static void llvm_emit_constructors_and_destructors(GenContext *c); static void llvm_codegen_setup(); diff --git a/src/compiler/llvm_codegen_internal.h b/src/compiler/llvm_codegen_internal.h index 152f46cfa..5da9aa019 100644 --- a/src/compiler/llvm_codegen_internal.h +++ b/src/compiler/llvm_codegen_internal.h @@ -296,6 +296,7 @@ void gencontext_end_module(GenContext *context); // Patched functions LLVMValueRef LLVMConstBswap(LLVMValueRef ConstantVal); void LLVMBuilderSetFastMathFlags(LLVMBuilderRef Builder, FpOpt option); +void LLVMSetDSOLocal(LLVMValueRef Global, bool value); #ifndef LLVMCreateTypeAttribute LLVMAttributeRef LLVMCreateTypeAttribute(LLVMContextRef C, unsigned KindID, diff --git a/wrapper/src/wrapper.cpp b/wrapper/src/wrapper.cpp index 0e5714cdb..61b159c3c 100644 --- a/wrapper/src/wrapper.cpp +++ b/wrapper/src/wrapper.cpp @@ -8,6 +8,7 @@ #include "llvm-c/TargetMachine.h" #include "llvm/Target/TargetMachine.h" #include "lld/Common/CommonLinkerContext.h" +#include "llvm/IR/GlobalValue.h" #define LINK_SIG \ bool link(llvm::ArrayRef args, llvm::raw_ostream &stdoutOS, \ @@ -183,6 +184,10 @@ extern "C" { auto machine = reinterpret_cast(ref); machine->Options.UseInitArray = use_init_array; } + void LLVMSetDSOLocal(LLVMValueRef Global, bool value) + { + llvm::unwrap(Global)->setDSOLocal(value); + } void LLVMBuilderSetFastMathFlags(LLVMBuilderRef Builder, FastMathOption option) {