From 06807b465b5e272183fd23a5cc2bfcca84ed0671 Mon Sep 17 00:00:00 2001 From: Mukul Sabharwal Date: Mon, 2 Jul 2018 05:40:40 -0700 Subject: [PATCH] Update to LLVM 6.0.0 Surface Area --- src/Generated.Custom.cs | 3 - src/Generated.cs | 143 ++++++++++++++++++++++++++++++++++------ src/PassManager.cs | 4 +- 3 files changed, 125 insertions(+), 25 deletions(-) diff --git a/src/Generated.Custom.cs b/src/Generated.Custom.cs index e23a0d8f..f4aac6f8 100644 --- a/src/Generated.Custom.cs +++ b/src/Generated.Custom.cs @@ -54,9 +54,6 @@ public static partial class LLVM [DllImport(libraryPath, EntryPoint = "LLVMDIBuilderDestroy", CallingConvention = CallingConvention.Cdecl)] public static extern void DIBuilderDestroy(LLVMDIBuilderRef @d); - [DllImport(libraryPath, EntryPoint = "LLVMDIBuilderFinalize", CallingConvention = CallingConvention.Cdecl)] - public static extern void DIBuilderFinalize(LLVMDIBuilderRef @d); - [DllImport(libraryPath, EntryPoint = "LLVMDIBuilderCreateCompileUnit", CallingConvention = CallingConvention.Cdecl)] public static extern LLVMMetadataRef DIBuilderCreateCompileUnit(LLVMDIBuilderRef @D, uint @Language, [MarshalAs(UnmanagedType.LPStr)] string @File, [MarshalAs(UnmanagedType.LPStr)] string @Dir, [MarshalAs(UnmanagedType.LPStr)] string @Producer, int @Optimized, [MarshalAs(UnmanagedType.LPStr)] string @Flags, uint @RuntimeVersion); diff --git a/src/Generated.cs b/src/Generated.cs index db2ec8ed..9e8c4af0 100644 --- a/src/Generated.cs +++ b/src/Generated.cs @@ -495,16 +495,6 @@ public LLVMSharedModuleRef(IntPtr pointer) public IntPtr Pointer; } - public partial struct LLVMSharedObjectBufferRef - { - public LLVMSharedObjectBufferRef(IntPtr pointer) - { - this.Pointer = pointer; - } - - public IntPtr Pointer; - } - public partial struct LLVMOrcJITStackRef { public LLVMOrcJITStackRef(IntPtr pointer) @@ -811,6 +801,89 @@ public enum LLVMAttributeIndex : int @LLVMAttributeFunctionIndex = -1, } + public enum LLVMDIFlags : int + { + @LLVMDIFlagZero = 0, + @LLVMDIFlagPrivate = 1, + @LLVMDIFlagProtected = 2, + @LLVMDIFlagPublic = 3, + @LLVMDIFlagFwdDecl = 4, + @LLVMDIFlagAppleBlock = 8, + @LLVMDIFlagBlockByrefStruct = 16, + @LLVMDIFlagVirtual = 32, + @LLVMDIFlagArtificial = 64, + @LLVMDIFlagExplicit = 128, + @LLVMDIFlagPrototyped = 256, + @LLVMDIFlagObjcClassComplete = 512, + @LLVMDIFlagObjectPointer = 1024, + @LLVMDIFlagVector = 2048, + @LLVMDIFlagStaticMember = 4096, + @LLVMDIFlagLValueReference = 8192, + @LLVMDIFlagRValueReference = 16384, + @LLVMDIFlagReserved = 32768, + @LLVMDIFlagSingleInheritance = 65536, + @LLVMDIFlagMultipleInheritance = 131072, + @LLVMDIFlagVirtualInheritance = 196608, + @LLVMDIFlagIntroducedVirtual = 262144, + @LLVMDIFlagBitField = 524288, + @LLVMDIFlagNoReturn = 1048576, + @LLVMDIFlagMainSubprogram = 2097152, + @LLVMDIFlagIndirectVirtualBase = 36, + @LLVMDIFlagAccessibility = 3, + @LLVMDIFlagPtrToMemberRep = 196608, + } + + public enum LLVMDWARFSourceLanguage : int + { + @LLVMDWARFSourceLanguageC89 = 0, + @LLVMDWARFSourceLanguageC = 1, + @LLVMDWARFSourceLanguageAda83 = 2, + @LLVMDWARFSourceLanguageC_plus_plus = 3, + @LLVMDWARFSourceLanguageCobol74 = 4, + @LLVMDWARFSourceLanguageCobol85 = 5, + @LLVMDWARFSourceLanguageFortran77 = 6, + @LLVMDWARFSourceLanguageFortran90 = 7, + @LLVMDWARFSourceLanguagePascal83 = 8, + @LLVMDWARFSourceLanguageModula2 = 9, + @LLVMDWARFSourceLanguageJava = 10, + @LLVMDWARFSourceLanguageC99 = 11, + @LLVMDWARFSourceLanguageAda95 = 12, + @LLVMDWARFSourceLanguageFortran95 = 13, + @LLVMDWARFSourceLanguagePLI = 14, + @LLVMDWARFSourceLanguageObjC = 15, + @LLVMDWARFSourceLanguageObjC_plus_plus = 16, + @LLVMDWARFSourceLanguageUPC = 17, + @LLVMDWARFSourceLanguageD = 18, + @LLVMDWARFSourceLanguagePython = 19, + @LLVMDWARFSourceLanguageOpenCL = 20, + @LLVMDWARFSourceLanguageGo = 21, + @LLVMDWARFSourceLanguageModula3 = 22, + @LLVMDWARFSourceLanguageHaskell = 23, + @LLVMDWARFSourceLanguageC_plus_plus_03 = 24, + @LLVMDWARFSourceLanguageC_plus_plus_11 = 25, + @LLVMDWARFSourceLanguageOCaml = 26, + @LLVMDWARFSourceLanguageRust = 27, + @LLVMDWARFSourceLanguageC11 = 28, + @LLVMDWARFSourceLanguageSwift = 29, + @LLVMDWARFSourceLanguageJulia = 30, + @LLVMDWARFSourceLanguageDylan = 31, + @LLVMDWARFSourceLanguageC_plus_plus_14 = 32, + @LLVMDWARFSourceLanguageFortran03 = 33, + @LLVMDWARFSourceLanguageFortran08 = 34, + @LLVMDWARFSourceLanguageRenderScript = 35, + @LLVMDWARFSourceLanguageBLISS = 36, + @LLVMDWARFSourceLanguageMips_Assembler = 37, + @LLVMDWARFSourceLanguageGOOGLE_RenderScript = 38, + @LLVMDWARFSourceLanguageBORLAND_Delphi = 39, + } + + public enum LLVMDWARFEmissionKind : int + { + @LLVMDWARFEmissionNone = 0, + @LLVMDWARFEmissionFull = 1, + @LLVMDWARFEmissionLineTablesOnly = 2, + } + public enum LLVMByteOrdering : int { @LLVMBigEndian = 0, @@ -1311,6 +1384,12 @@ public static partial class LLVM [DllImport(libraryPath, EntryPoint = "LLVMX86MMXTypeInContext", CallingConvention = CallingConvention.Cdecl)] public static extern LLVMTypeRef X86MMXTypeInContext(LLVMContextRef @C); + [DllImport(libraryPath, EntryPoint = "LLVMTokenTypeInContext", CallingConvention = CallingConvention.Cdecl)] + public static extern LLVMTypeRef TokenTypeInContext(LLVMContextRef @C); + + [DllImport(libraryPath, EntryPoint = "LLVMMetadataTypeInContext", CallingConvention = CallingConvention.Cdecl)] + public static extern LLVMTypeRef MetadataTypeInContext(LLVMContextRef @C); + [DllImport(libraryPath, EntryPoint = "LLVMVoidType", CallingConvention = CallingConvention.Cdecl)] public static extern LLVMTypeRef VoidType(); @@ -2721,6 +2800,36 @@ public static partial class LLVM [DllImport(libraryPath, EntryPoint = "LLVMIsMultithreaded", CallingConvention = CallingConvention.Cdecl)] public static extern LLVMBool IsMultithreaded(); + [DllImport(libraryPath, EntryPoint = "LLVMDebugMetadataVersion", CallingConvention = CallingConvention.Cdecl)] + public static extern uint DebugMetadataVersion(); + + [DllImport(libraryPath, EntryPoint = "LLVMGetModuleDebugMetadataVersion", CallingConvention = CallingConvention.Cdecl)] + public static extern uint GetModuleDebugMetadataVersion(LLVMModuleRef @Module); + + [DllImport(libraryPath, EntryPoint = "LLVMStripModuleDebugInfo", CallingConvention = CallingConvention.Cdecl)] + public static extern LLVMBool StripModuleDebugInfo(LLVMModuleRef @Module); + + [DllImport(libraryPath, EntryPoint = "LLVMCreateDIBuilderDisallowUnresolved", CallingConvention = CallingConvention.Cdecl)] + public static extern LLVMDIBuilderRef CreateDIBuilderDisallowUnresolved(LLVMModuleRef @M); + + [DllImport(libraryPath, EntryPoint = "LLVMCreateDIBuilder", CallingConvention = CallingConvention.Cdecl)] + public static extern LLVMDIBuilderRef CreateDIBuilder(LLVMModuleRef @M); + + [DllImport(libraryPath, EntryPoint = "LLVMDisposeDIBuilder", CallingConvention = CallingConvention.Cdecl)] + public static extern void DisposeDIBuilder(LLVMDIBuilderRef @Builder); + + [DllImport(libraryPath, EntryPoint = "LLVMDIBuilderFinalize", CallingConvention = CallingConvention.Cdecl)] + public static extern void DIBuilderFinalize(LLVMDIBuilderRef @Builder); + + [DllImport(libraryPath, EntryPoint = "LLVMDIBuilderCreateCompileUnit", CallingConvention = CallingConvention.Cdecl)] + public static extern LLVMMetadataRef DIBuilderCreateCompileUnit(LLVMDIBuilderRef @Builder, LLVMDWARFSourceLanguage @Lang, LLVMMetadataRef @FileRef, [MarshalAs(UnmanagedType.LPStr)] string @Producer, size_t @ProducerLen, LLVMBool @isOptimized, [MarshalAs(UnmanagedType.LPStr)] string @Flags, size_t @FlagsLen, uint @RuntimeVer, [MarshalAs(UnmanagedType.LPStr)] string @SplitName, size_t @SplitNameLen, LLVMDWARFEmissionKind @Kind, uint @DWOId, LLVMBool @SplitDebugInlining, LLVMBool @DebugInfoForProfiling); + + [DllImport(libraryPath, EntryPoint = "LLVMDIBuilderCreateFile", CallingConvention = CallingConvention.Cdecl)] + public static extern LLVMMetadataRef DIBuilderCreateFile(LLVMDIBuilderRef @Builder, [MarshalAs(UnmanagedType.LPStr)] string @Filename, size_t @FilenameLen, [MarshalAs(UnmanagedType.LPStr)] string @Directory, size_t @DirectoryLen); + + [DllImport(libraryPath, EntryPoint = "LLVMDIBuilderCreateDebugLocation", CallingConvention = CallingConvention.Cdecl)] + public static extern LLVMMetadataRef DIBuilderCreateDebugLocation(LLVMContextRef @Ctx, uint @Line, uint @Column, LLVMMetadataRef @Scope, LLVMMetadataRef @InlinedAt); + [DllImport(libraryPath, EntryPoint = "LLVMCreateDisasm", CallingConvention = CallingConvention.Cdecl)] public static extern LLVMDisasmContextRef CreateDisasm([MarshalAs(UnmanagedType.LPStr)] string @TripleName, IntPtr @DisInfo, int @TagType, LLVMOpInfoCallback @GetOpInfo, LLVMSymbolLookupCallback @SymbolLookUp); @@ -3333,12 +3442,6 @@ public static partial class LLVM [DllImport(libraryPath, EntryPoint = "LLVMOrcDisposeSharedModuleRef", CallingConvention = CallingConvention.Cdecl)] public static extern void OrcDisposeSharedModuleRef(LLVMSharedModuleRef @SharedMod); - [DllImport(libraryPath, EntryPoint = "LLVMOrcMakeSharedObjectBuffer", CallingConvention = CallingConvention.Cdecl)] - public static extern LLVMSharedObjectBufferRef OrcMakeSharedObjectBuffer(LLVMMemoryBufferRef @ObjBuffer); - - [DllImport(libraryPath, EntryPoint = "LLVMOrcDisposeSharedObjectBufferRef", CallingConvention = CallingConvention.Cdecl)] - public static extern void OrcDisposeSharedObjectBufferRef(LLVMSharedObjectBufferRef @SharedObjBuffer); - [DllImport(libraryPath, EntryPoint = "LLVMOrcCreateInstance", CallingConvention = CallingConvention.Cdecl)] public static extern LLVMOrcJITStackRef OrcCreateInstance(LLVMTargetMachineRef @TM); @@ -3367,7 +3470,7 @@ public static partial class LLVM public static extern LLVMOrcErrorCode OrcAddLazilyCompiledIR(LLVMOrcJITStackRef @JITStack, out LLVMOrcModuleHandle @RetHandle, LLVMSharedModuleRef @Mod, LLVMOrcSymbolResolverFn @SymbolResolver, IntPtr @SymbolResolverCtx); [DllImport(libraryPath, EntryPoint = "LLVMOrcAddObjectFile", CallingConvention = CallingConvention.Cdecl)] - public static extern LLVMOrcErrorCode OrcAddObjectFile(LLVMOrcJITStackRef @JITStack, out LLVMOrcModuleHandle @RetHandle, LLVMSharedObjectBufferRef @Obj, LLVMOrcSymbolResolverFn @SymbolResolver, IntPtr @SymbolResolverCtx); + public static extern LLVMOrcErrorCode OrcAddObjectFile(LLVMOrcJITStackRef @JITStack, out LLVMOrcModuleHandle @RetHandle, LLVMMemoryBufferRef @Obj, LLVMOrcSymbolResolverFn @SymbolResolver, IntPtr @SymbolResolverCtx); [DllImport(libraryPath, EntryPoint = "LLVMOrcRemoveModule", CallingConvention = CallingConvention.Cdecl)] public static extern LLVMOrcErrorCode OrcRemoveModule(LLVMOrcJITStackRef @JITStack, LLVMOrcModuleHandle @H); @@ -3396,6 +3499,9 @@ public static partial class LLVM [DllImport(libraryPath, EntryPoint = "LLVMAddConstantMergePass", CallingConvention = CallingConvention.Cdecl)] public static extern void AddConstantMergePass(LLVMPassManagerRef @PM); + [DllImport(libraryPath, EntryPoint = "LLVMAddCalledValuePropagationPass", CallingConvention = CallingConvention.Cdecl)] + public static extern void AddCalledValuePropagationPass(LLVMPassManagerRef @PM); + [DllImport(libraryPath, EntryPoint = "LLVMAddDeadArgEliminationPass", CallingConvention = CallingConvention.Cdecl)] public static extern void AddDeadArgEliminationPass(LLVMPassManagerRef @PM); @@ -3477,9 +3583,6 @@ public static partial class LLVM [DllImport(libraryPath, EntryPoint = "LLVMAddCFGSimplificationPass", CallingConvention = CallingConvention.Cdecl)] public static extern void AddCFGSimplificationPass(LLVMPassManagerRef @PM); - [DllImport(libraryPath, EntryPoint = "LLVMAddLateCFGSimplificationPass", CallingConvention = CallingConvention.Cdecl)] - public static extern void AddLateCFGSimplificationPass(LLVMPassManagerRef @PM); - [DllImport(libraryPath, EntryPoint = "LLVMAddDeadStoreEliminationPass", CallingConvention = CallingConvention.Cdecl)] public static extern void AddDeadStoreEliminationPass(LLVMPassManagerRef @PM); diff --git a/src/PassManager.cs b/src/PassManager.cs index 6bed8f76..37966a77 100644 --- a/src/PassManager.cs +++ b/src/PassManager.cs @@ -155,9 +155,9 @@ public void AddCFGSimplificationPass() LLVM.AddCFGSimplificationPass(this.instance); } - public void AddLateCFGSimplificationPass() + public void LLVMAddCalledValuePropagationPass() { - LLVM.AddLateCFGSimplificationPass(this.instance); + LLVM.AddCalledValuePropagationPass(this.instance); } public void AddDeadStoreEliminationPass()