diff options
author | Tristan Gingold <tgingold@free.fr> | 2018-12-31 18:35:49 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2018-12-31 18:35:49 +0100 |
commit | 1185783f6e8c1d65bf1207028dfe6f5163e188b5 (patch) | |
tree | 9f9567d9dc5e3699192360ec13515dd90ba763bc /src/ortho/llvm4-nodebug | |
parent | 3882e494edd4515b085657a66bd1e20c8e7ade01 (diff) | |
download | ghdl-1185783f6e8c1d65bf1207028dfe6f5163e188b5.tar.gz ghdl-1185783f6e8c1d65bf1207028dfe6f5163e188b5.tar.bz2 ghdl-1185783f6e8c1d65bf1207028dfe6f5163e188b5.zip |
ortho/llvm4-nodebug: normalize the default target on llvm 7.0+
For #724
Diffstat (limited to 'src/ortho/llvm4-nodebug')
-rw-r--r-- | src/ortho/llvm4-nodebug/llvm-cbindings.cpp | 21 | ||||
-rw-r--r-- | src/ortho/llvm4-nodebug/llvm-core.ads | 2 | ||||
-rw-r--r-- | src/ortho/llvm4-nodebug/ortho_code_main.adb | 6 |
3 files changed, 27 insertions, 2 deletions
diff --git a/src/ortho/llvm4-nodebug/llvm-cbindings.cpp b/src/ortho/llvm4-nodebug/llvm-cbindings.cpp index 4a61ad552..e0ae23198 100644 --- a/src/ortho/llvm4-nodebug/llvm-cbindings.cpp +++ b/src/ortho/llvm4-nodebug/llvm-cbindings.cpp @@ -18,6 +18,9 @@ #include "llvm-c/Target.h" #include "llvm/IR/Type.h" #include "llvm/IR/LLVMContext.h" +#include "llvm/Config/llvm-config.h" +#include "llvm-c/TargetMachine.h" +#include "llvm-c/Core.h" using namespace llvm; @@ -35,4 +38,22 @@ LLVMInitializeNativeAsmPrinter_noinline (void) LLVMInitializeNativeAsmPrinter(); } +char * +LLVMGetDefaultNormalizedTargetTriple(void) +{ + char *triple; + triple = LLVMGetDefaultTargetTriple(); + +#if LLVM_VERSION_MAJOR >= 7 + { + char *res; + res = LLVMNormalizeTargetTriple(triple); + LLVMDisposeMessage(triple); + return res; + } +#else + return triple; +#endif +} + } diff --git a/src/ortho/llvm4-nodebug/llvm-core.ads b/src/ortho/llvm4-nodebug/llvm-core.ads index 29dc157e9..2c46a10b7 100644 --- a/src/ortho/llvm4-nodebug/llvm-core.ads +++ b/src/ortho/llvm4-nodebug/llvm-core.ads @@ -127,7 +127,7 @@ package LLVM.Core is FastCallConv : constant CallConv := 8; ColdCallConv : constant CallConv := 9; X86StdcallCallConv : constant CallConv := 64; - X86FastcallCallConv : constant CallConv := 6; + X86FastcallCallConv : constant CallConv := 65; type IntPredicate is new unsigned; IntEQ : constant IntPredicate := 32; -- equal diff --git a/src/ortho/llvm4-nodebug/ortho_code_main.adb b/src/ortho/llvm4-nodebug/ortho_code_main.adb index 4b36294d4..8e0563407 100644 --- a/src/ortho/llvm4-nodebug/ortho_code_main.adb +++ b/src/ortho/llvm4-nodebug/ortho_code_main.adb @@ -33,6 +33,10 @@ with Interfaces; with Interfaces.C; use Interfaces.C; procedure Ortho_Code_Main is + function GetDefaultNormalizedTargetTriple return Cstring; + pragma Import (C, GetDefaultNormalizedTargetTriple, + "LLVMGetDefaultNormalizedTargetTriple"); + -- Name of the output filename (given by option '-o'). Output : String_Acc := null; @@ -192,7 +196,7 @@ begin Module := ModuleCreateWithName (Module_Name'Address); -- Extract target triple - Triple := GetDefaultTargetTriple; + Triple := GetDefaultNormalizedTargetTriple; SetTarget (Module, Triple); -- Get Target |