137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines(*===-- llvm/llvm.ml - LLVM OCaml Interface -------------------------------===* 28ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * 38ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * The LLVM Compiler Infrastructure 48ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * 5234d529e582963ad4b5d83b911cd057fe99d1435Chris Lattner * This file is distributed under the University of Illinois Open Source 6234d529e582963ad4b5d83b911cd057fe99d1435Chris Lattner * License. See LICENSE.TXT for details. 78ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * 88ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *===----------------------------------------------------------------------===*) 98ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 108ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 115371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaartype llcontext 128ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype llmodule 138ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype lltype 148ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype llvalue 15705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaartype lluse 160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksentype llbasicblock 1746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksentype llbuilder 18da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksentype llmemorybuffer 19c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hinestype llmdkind 208ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 21404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule TypeKind = struct 22404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 23404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Void 24eaf0608891cff27fe4cf08d180a6baf49e00f8aeBob Wilson | Half 25404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Float 26404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Double 27404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | X86fp80 28404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Fp128 29404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ppc_fp128 30404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Label 31404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Integer 32404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Function 33404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Struct 34404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Array 35404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Pointer 36404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Vector 3732eaeca34fe1e6080a2916e04c89874f0b273e31Bob Wilson | Metadata 388a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | X86_mmx 39404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 40404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen 41404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Linkage = struct 42404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 43404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | External 4414b9ed13e79d4b8fe97e2215e7ccf095a40463fdNick Lewycky | Available_externally 45404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Link_once 464aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Link_once_odr 478a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Link_once_odr_auto_hide 48404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Weak 494aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Weak_odr 50404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Appending 51404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Internal 524aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Private 53404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllimport 54404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllexport 55404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | External_weak 56404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ghost 574aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Common 584aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Linker_private 598a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Linker_private_weak 60404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 61404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen 62404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Visibility = struct 63404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 64404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Default 65404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Hidden 66404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Protected 67404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 6937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesmodule DLLStorageClass = struct 7037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines type t = 7137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines | Default 7237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines | DLLImport 7337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines | DLLExport 7437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesend 7537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 761475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenmodule CallConv = struct 771475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen let c = 0 781475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen let fast = 8 791475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen let cold = 9 801475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen let x86_stdcall = 64 811475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen let x86_fastcall = 65 821475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenend 8346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 84e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsmodule Attribute = struct 85e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands type t = 86e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Zext 87e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Sext 88e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Noreturn 89e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Inreg 90e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Structret 91e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Nounwind 92e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Noalias 93e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Byval 94e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Nest 95e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Readnone 96e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Readonly 97f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noinline 98f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Alwaysinline 99f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Optsize 100f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Ssp 101f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Sspreq 1020941534c712d77243d9dda5e8c1d927563b4edffChris Lattner | Alignment of int 103f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Nocapture 104f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noredzone 105f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noimplicitfloat 106f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Naked 107570a4a5d9ca31f276a67502d1e0533d59d331feaJakob Stoklund Olesen | Inlinehint 1080941534c712d77243d9dda5e8c1d927563b4edffChris Lattner | Stackalignment of int 1090be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | ReturnsTwice 1100be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | UWTable 1110be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | NonLazyBind 112e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsend 113e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 114404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Icmp = struct 115404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 116404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Eq 117404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ne 118404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ugt 119404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uge 120404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ult 121404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ule 122404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sgt 123404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sge 124404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Slt 125404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sle 126404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 127404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen 128404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Fcmp = struct 129404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 130404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | False 131404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Oeq 132404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ogt 133404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Oge 134404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Olt 135404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ole 136404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | One 137404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ord 138404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uno 139404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ueq 140404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ugt 141404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uge 142404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ult 143404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ule 144404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Une 145404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | True 146404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 14746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1486563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinmodule Opcode = struct 1496563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin type t = 1506563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Invalid (* not an instruction *) 1516563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Terminator Instructions *) 1526563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Ret 1536563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Br 1546563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Switch 1556563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | IndirectBr 1566563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Invoke 1576563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Invalid2 1586563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Unreachable 1596563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Standard Binary Operators *) 1606563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Add 1616563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FAdd 1626563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Sub 1636563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FSub 1646563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Mul 1656563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FMul 1666563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UDiv 1676563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SDiv 1686563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FDiv 1696563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | URem 1706563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SRem 1716563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FRem 1726563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Logical Operators *) 1736563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Shl 1746563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | LShr 1756563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | AShr 1766563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | And 1776563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Or 1786563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Xor 1796563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Memory Operators *) 1806563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Alloca 1816563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Load 1826563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Store 1836563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | GetElementPtr 1846563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Cast Operators *) 1856563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Trunc 1866563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ZExt 1876563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SExt 1886563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPToUI 1896563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPToSI 1906563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UIToFP 1916563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SIToFP 1926563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPTrunc 1936563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPExt 1946563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | PtrToInt 1956563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | IntToPtr 1966563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | BitCast 1976563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Other Operators *) 1986563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ICmp 1996563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FCmp 2006563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | PHI 2016563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Call 2026563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Select 2036563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UserOp1 2046563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UserOp2 2056563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | VAArg 2066563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ExtractElement 2076563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | InsertElement 2086563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ShuffleVector 2096563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ExtractValue 2106563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | InsertValue 2116563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Fence 2126563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | AtomicCmpXchg 2136563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | AtomicRMW 2146563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Resume 2156563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | LandingPad 2168a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovend 2178a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 2188a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovmodule LandingPadClauseTy = struct 2198a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov type t = 2208a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Catch 2218a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Filter 2228a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovend 2238a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 2248a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovmodule ThreadLocalMode = struct 2258a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov type t = 2268a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | None 2278a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | GeneralDynamic 2288a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | LocalDynamic 2298a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | InitialExec 2308a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | LocalExec 2318a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovend 2328a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 2338a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovmodule AtomicOrdering = struct 2348a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov type t = 2358a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | NotAtomic 2368a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Unordered 2378a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Monotonic 2388a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Invalid 2398a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Acquire 2408a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Release 2418a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | AcqiureRelease 2428a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | SequentiallyConsistent 2438a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovend 2448a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 2458a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovmodule AtomicRMWBinOp = struct 2468a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov type t = 2478a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Xchg 2488a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Add 2498a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Sub 2508a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | And 2518a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Nand 2528a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Or 2538a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Xor 2548a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Max 2558a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Min 2568a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | UMax 2578a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | UMin 2586563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinend 2596563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin 2603dd16741864302af14b31b7f75375c09d8544a35Torok Edwinmodule ValueKind = struct 2613dd16741864302af14b31b7f75375c09d8544a35Torok Edwin type t = 2623dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | NullValue 2633dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | Argument 2643dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | BasicBlock 2653dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | InlineAsm 2663dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | MDNode 2673dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | MDString 2683dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | BlockAddress 2693dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantAggregateZero 2703dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantArray 27134b4a8426131ec2deea45a1e0174f191c63295e2Peter Zotov | ConstantDataArray 27234b4a8426131ec2deea45a1e0174f191c63295e2Peter Zotov | ConstantDataVector 2733dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantExpr 2743dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantFP 2753dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantInt 2763dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantPointerNull 2773dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantStruct 2783dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantVector 2793dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | Function 2803dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | GlobalAlias 2813dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | GlobalVariable 2823dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | UndefValue 2833dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | Instruction of Opcode.t 2843dd16741864302af14b31b7f75375c09d8544a35Torok Edwinend 2853dd16741864302af14b31b7f75375c09d8544a35Torok Edwin 286de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarmodule DiagnosticSeverity = struct 287de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar type t = 288de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar | Error 289de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar | Warning 290de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar | Remark 291de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar | Note 292de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarend 293de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 294da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenexception IoError of string 295da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 29637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hineslet () = Callback.register_exception "Llvm.IoError" (IoError "") 297da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 298a69773cead6dea09ade34342eafacf848ec41367Peter Zotovexternal install_fatal_error_handler : (string -> unit) -> unit 299a69773cead6dea09ade34342eafacf848ec41367Peter Zotov = "llvm_install_fatal_error_handler" 300a69773cead6dea09ade34342eafacf848ec41367Peter Zotovexternal reset_fatal_error_handler : unit -> unit 301a69773cead6dea09ade34342eafacf848ec41367Peter Zotov = "llvm_reset_fatal_error_handler" 302a69773cead6dea09ade34342eafacf848ec41367Peter Zotovexternal enable_pretty_stacktrace : unit -> unit 303a69773cead6dea09ade34342eafacf848ec41367Peter Zotov = "llvm_enable_pretty_stacktrace" 30437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal parse_command_line_options : ?overview:string -> string array -> unit 30537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines = "llvm_parse_command_line_options" 306a69773cead6dea09ade34342eafacf848ec41367Peter Zotov 3074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llpos = 3084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_end of 'a 3094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| Before of 'b 3104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 3114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llrev_pos = 3124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_start of 'a 3134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| After of 'b 3144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 315de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 316de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar(*===-- Context error handling --------------------------------------------===*) 317de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarmodule Diagnostic = struct 318de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar type t 319de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 320de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar external description : t -> string = "llvm_get_diagnostic_description" 321de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar external severity : t -> DiagnosticSeverity.t 322de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar = "llvm_get_diagnostic_severity" 323de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarend 324de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 325de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarexternal set_diagnostic_handler 326de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar : llcontext -> (Diagnostic.t -> unit) option -> unit 327de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar = "llvm_set_diagnostic_handler" 328de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 3295371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(*===-- Contexts ----------------------------------------------------------===*) 3305371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal create_context : unit -> llcontext = "llvm_create_context" 331dd7da4f368c7e1139ef78f36ef173a8b8f8f1c61Chris Lattnerexternal dispose_context : llcontext -> unit = "llvm_dispose_context" 3325371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal global_context : unit -> llcontext = "llvm_global_context" 333c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hinesexternal mdkind_id : llcontext -> string -> llmdkind = "llvm_mdkind_id" 3348ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Modules -----------------------------------------------------------===*) 3365371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal create_module : llcontext -> string -> llmodule = "llvm_create_module" 3378ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal dispose_module : llmodule -> unit = "llvm_dispose_module" 338a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal target_triple: llmodule -> string 339a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_target_triple" 340a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal set_target_triple: string -> llmodule -> unit 341a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_set_target_triple" 342a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal data_layout: llmodule -> string 343a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_data_layout" 344a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal set_data_layout: string -> llmodule -> unit 345a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_set_data_layout" 346af59b105bb3f9a31f1812e470eb9db28a8a1b491Gordon Henriksenexternal dump_module : llmodule -> unit = "llvm_dump_module" 3478a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal print_module : string -> llmodule -> unit = "llvm_print_module" 3488a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal string_of_llmodule : llmodule -> string = "llvm_string_of_llmodule" 3490941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerexternal set_module_inline_asm : llmodule -> string -> unit 3500941534c712d77243d9dda5e8c1d927563b4edffChris Lattner = "llvm_set_module_inline_asm" 351ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinexternal module_context : llmodule -> llcontext = "LLVMGetModuleContext" 3528ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3538ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Types -------------------------------------------------------------===*) 354404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal classify_type : lltype -> TypeKind.t = "llvm_classify_type" 3555371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal type_context : lltype -> llcontext = "llvm_type_context" 356ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwinexternal type_is_sized : lltype -> bool = "llvm_type_is_sized" 3578a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal dump_type : lltype -> unit = "llvm_dump_type" 3588a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal string_of_lltype : lltype -> string = "llvm_string_of_lltype" 3598ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3608ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on integer types ........................................--*) 361b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i1_type : llcontext -> lltype = "llvm_i1_type" 362b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i8_type : llcontext -> lltype = "llvm_i8_type" 363b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i16_type : llcontext -> lltype = "llvm_i16_type" 364b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i32_type : llcontext -> lltype = "llvm_i32_type" 365b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i64_type : llcontext -> lltype = "llvm_i64_type" 366b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar 367b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal integer_type : llcontext -> int -> lltype = "llvm_integer_type" 3688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal integer_bitwidth : lltype -> int = "llvm_integer_bitwidth" 3698ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3708ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on real types ...........................................--*) 371b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal float_type : llcontext -> lltype = "llvm_float_type" 372b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal double_type : llcontext -> lltype = "llvm_double_type" 373b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal x86fp80_type : llcontext -> lltype = "llvm_x86fp80_type" 374b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal fp128_type : llcontext -> lltype = "llvm_fp128_type" 375b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal ppc_fp128_type : llcontext -> lltype = "llvm_ppc_fp128_type" 3768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3778ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on function types .......................................--*) 378957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal function_type : lltype -> lltype array -> lltype = "llvm_function_type" 379957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal var_arg_function_type : lltype -> lltype array -> lltype 380957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksen = "llvm_var_arg_function_type" 3818ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_var_arg : lltype -> bool = "llvm_is_var_arg" 382d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal return_type : lltype -> lltype = "LLVMGetReturnType" 3838ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal param_types : lltype -> lltype array = "llvm_param_types" 3848ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3858ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on struct types .........................................--*) 3865371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal struct_type : llcontext -> lltype array -> lltype = "llvm_struct_type" 3875371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal packed_struct_type : llcontext -> lltype array -> lltype 3885371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar = "llvm_packed_struct_type" 389c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwinexternal struct_name : lltype -> string option = "llvm_struct_name" 3906b228e506f42972c003599f4873a24910f8a530aTorok Edwinexternal named_struct_type : llcontext -> string -> lltype = 3916b228e506f42972c003599f4873a24910f8a530aTorok Edwin "llvm_named_struct_type" 3926b228e506f42972c003599f4873a24910f8a530aTorok Edwinexternal struct_set_body : lltype -> lltype array -> bool -> unit = 3936b228e506f42972c003599f4873a24910f8a530aTorok Edwin "llvm_struct_set_body" 3941940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaarexternal struct_element_types : lltype -> lltype array 3951940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar = "llvm_struct_element_types" 3968ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_packed : lltype -> bool = "llvm_is_packed" 3976b228e506f42972c003599f4873a24910f8a530aTorok Edwinexternal is_opaque : lltype -> bool = "llvm_is_opaque" 3988ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3998ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on pointer, vector, and array types .....................--*) 400957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal array_type : lltype -> int -> lltype = "llvm_array_type" 40157cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal pointer_type : lltype -> lltype = "llvm_pointer_type" 40257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal qualified_pointer_type : lltype -> int -> lltype 40357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen = "llvm_qualified_pointer_type" 404957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal vector_type : lltype -> int -> lltype = "llvm_vector_type" 4058ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 406d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal element_type : lltype -> lltype = "LLVMGetElementType" 4078ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal array_length : lltype -> int = "llvm_array_length" 40857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal address_space : lltype -> int = "llvm_address_space" 4098ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal vector_size : lltype -> int = "llvm_vector_size" 4108ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4118ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on other types ..........................................--*) 412b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal void_type : llcontext -> lltype = "llvm_void_type" 413b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal label_type : llcontext -> lltype = "llvm_label_type" 4148a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal x86_mmx_type : llcontext -> lltype = "llvm_x86_mmx_type" 415ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinexternal type_by_name : llmodule -> string -> lltype option = "llvm_type_by_name" 4168ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4173dd16741864302af14b31b7f75375c09d8544a35Torok Edwinexternal classify_value : llvalue -> ValueKind.t = "llvm_classify_value" 4188ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Values ------------------------------------------------------------===*) 4198ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal type_of : llvalue -> lltype = "llvm_type_of" 4208ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal value_name : llvalue -> string = "llvm_value_name" 4218ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_value_name : string -> llvalue -> unit = "llvm_set_value_name" 42288cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksenexternal dump_value : llvalue -> unit = "llvm_dump_value" 423ba0c7cd012b064e2d8009480f9ae6f7d75e00e13Peter Zotovexternal string_of_llvalue : llvalue -> string = "llvm_string_of_llvalue" 42468bab9833db8d524398f7feee1ce4bda9df320abErick Tryzelaarexternal replace_all_uses_with : llvalue -> llvalue -> unit 42588d74c3093de563408ceb834d999613038195e98Peter Zotov = "llvm_replace_all_uses_with" 4268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 427705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(*--... Operations on uses .................................................--*) 428705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarexternal use_begin : llvalue -> lluse option = "llvm_use_begin" 429705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarexternal use_succ : lluse -> lluse option = "llvm_use_succ" 430705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarexternal user : lluse -> llvalue = "llvm_user" 431705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarexternal used_value : lluse -> llvalue = "llvm_used_value" 432705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 433705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarlet iter_uses f v = 434705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar let rec aux = function 435705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar | None -> () 436705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar | Some u -> 437705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar f u; 438705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar aux (use_succ u) 439705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar in 440705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar aux (use_begin v) 441705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 442705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarlet fold_left_uses f init v = 443705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar let rec aux init u = 444705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar match u with 445705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar | None -> init 446705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar | Some u -> aux (f init u) (use_succ u) 447705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar in 448705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar aux init (use_begin v) 449705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 450705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarlet fold_right_uses f v init = 451705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar let rec aux u init = 452705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar match u with 453705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar | None -> init 454705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar | Some u -> f u (aux (use_succ u) init) 455705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar in 456705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar aux (use_begin v) init 457705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 458705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 459b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar(*--... Operations on users ................................................--*) 460b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaarexternal operand : llvalue -> int -> llvalue = "llvm_operand" 46137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal operand_use : llvalue -> int -> lluse = "llvm_operand_use" 462f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaarexternal set_operand : llvalue -> int -> llvalue -> unit = "llvm_set_operand" 463f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaarexternal num_operands : llvalue -> int = "llvm_num_operands" 464b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar 4658ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on constants of (mostly) any type .......................--*) 466344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_constant : llvalue -> bool = "llvm_is_constant" 467e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_null : lltype -> llvalue = "LLVMConstNull" 468e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_all_ones : (*int|vec*)lltype -> llvalue = "LLVMConstAllOnes" 4695b0a7741ad262315d6365250a2da2edb8ba37e69Erick Tryzelaarexternal const_pointer_null : lltype -> llvalue = "LLVMConstPointerNull" 470e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal undef : lltype -> llvalue = "LLVMGetUndef" 4718ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_null : llvalue -> bool = "llvm_is_null" 472344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_undef : llvalue -> bool = "llvm_is_undef" 4736563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinexternal constexpr_opcode : llvalue -> Opcode.t = "llvm_constexpr_get_opcode" 4748ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 47546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(*--... Operations on instructions .........................................--*) 47646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal has_metadata : llvalue -> bool = "llvm_has_metadata" 477c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hinesexternal metadata : llvalue -> llmdkind -> llvalue option = "llvm_metadata" 478c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hinesexternal set_metadata : llvalue -> llmdkind -> llvalue -> unit = "llvm_set_metadata" 479c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hinesexternal clear_metadata : llvalue -> llmdkind -> unit = "llvm_clear_metadata" 48046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 48146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(*--... Operations on metadata .......,.....................................--*) 48246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal mdstring : llcontext -> string -> llvalue = "llvm_mdstring" 48346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal mdnode : llcontext -> llvalue array -> llvalue = "llvm_mdnode" 484ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesexternal mdnull : llcontext -> llvalue = "llvm_mdnull" 4854f661ab0fb87f97c4a12912249c3c366df882102Torok Edwinexternal get_mdstring : llvalue -> string option = "llvm_get_mdstring" 486de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarexternal get_mdnode_operands : llvalue -> llvalue array 487de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar = "llvm_get_mdnode_operands" 4888a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal get_named_metadata : llmodule -> string -> llvalue array 4898a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_get_namedmd" 4908a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal add_named_metadata_operand : llmodule -> string -> llvalue -> unit 4918a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_append_namedmd" 49246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 4938ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on scalar constants .....................................--*) 494e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_int : lltype -> int -> llvalue = "llvm_const_int" 495e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_of_int64 : lltype -> Int64.t -> bool -> llvalue 496e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_of_int64" 4976563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinexternal int64_of_const : llvalue -> Int64.t option 4986563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin = "llvm_int64_of_const" 49945d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaarexternal const_int_of_string : lltype -> string -> int -> llvalue 50045d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar = "llvm_const_int_of_string" 501e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_float : lltype -> float -> llvalue = "llvm_const_float" 50237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal float_of_const : llvalue -> float option 50337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines = "llvm_float_of_const" 50445d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaarexternal const_float_of_string : lltype -> string -> llvalue 50545d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar = "llvm_const_float_of_string" 5068ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5078ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on composite constants ..................................--*) 508b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal const_string : llcontext -> string -> llvalue = "llvm_const_string" 509b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal const_stringz : llcontext -> string -> llvalue = "llvm_const_stringz" 510e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_array : lltype -> llvalue array -> llvalue = "llvm_const_array" 5115371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal const_struct : llcontext -> llvalue array -> llvalue 5125371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar = "llvm_const_struct" 5136b228e506f42972c003599f4873a24910f8a530aTorok Edwinexternal const_named_struct : lltype -> llvalue array -> llvalue 5146b228e506f42972c003599f4873a24910f8a530aTorok Edwin = "llvm_const_named_struct" 5155371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal const_packed_struct : llcontext -> llvalue array -> llvalue 516e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_packed_struct" 517e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_vector : llvalue array -> llvalue = "llvm_const_vector" 51837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal string_of_const : llvalue -> string option = "llvm_string_of_const" 51937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal const_element : llvalue -> int -> llvalue = "llvm_const_element" 5208ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5214647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen(*--... Constant expressions ...............................................--*) 5222f82376c485f07dd9bfd6f563f6e194843c5060cDuncan Sandsexternal align_of : lltype -> llvalue = "LLVMAlignOf" 523e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal size_of : lltype -> llvalue = "LLVMSizeOf" 5244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_neg : llvalue -> llvalue = "LLVMConstNeg" 52519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nsw_neg : llvalue -> llvalue = "LLVMConstNSWNeg" 52619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_neg : llvalue -> llvalue = "LLVMConstNUWNeg" 5271b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fneg : llvalue -> llvalue = "LLVMConstFNeg" 5284647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_not : llvalue -> llvalue = "LLVMConstNot" 5294647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_add : llvalue -> llvalue -> llvalue = "LLVMConstAdd" 5301b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_nsw_add : llvalue -> llvalue -> llvalue = "LLVMConstNSWAdd" 53119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_add : llvalue -> llvalue -> llvalue = "LLVMConstNUWAdd" 5321b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fadd : llvalue -> llvalue -> llvalue = "LLVMConstFAdd" 5334647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sub : llvalue -> llvalue -> llvalue = "LLVMConstSub" 53419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nsw_sub : llvalue -> llvalue -> llvalue = "LLVMConstNSWSub" 53519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_sub : llvalue -> llvalue -> llvalue = "LLVMConstNUWSub" 5361b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fsub : llvalue -> llvalue -> llvalue = "LLVMConstFSub" 5374647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_mul : llvalue -> llvalue -> llvalue = "LLVMConstMul" 53819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nsw_mul : llvalue -> llvalue -> llvalue = "LLVMConstNSWMul" 53919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_mul : llvalue -> llvalue -> llvalue = "LLVMConstNUWMul" 5401b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fmul : llvalue -> llvalue -> llvalue = "LLVMConstFMul" 5414647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_udiv : llvalue -> llvalue -> llvalue = "LLVMConstUDiv" 5424647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstSDiv" 5431b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_exact_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstExactSDiv" 5444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fdiv : llvalue -> llvalue -> llvalue = "LLVMConstFDiv" 5454647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_urem : llvalue -> llvalue -> llvalue = "LLVMConstURem" 5464647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_srem : llvalue -> llvalue -> llvalue = "LLVMConstSRem" 5474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_frem : llvalue -> llvalue -> llvalue = "LLVMConstFRem" 5484647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_and : llvalue -> llvalue -> llvalue = "LLVMConstAnd" 5494647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_or : llvalue -> llvalue -> llvalue = "LLVMConstOr" 5504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_xor : llvalue -> llvalue -> llvalue = "LLVMConstXor" 551404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_icmp : Icmp.t -> llvalue -> llvalue -> llvalue 5524647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_icmp" 553404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_fcmp : Fcmp.t -> llvalue -> llvalue -> llvalue 5544647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_fcmp" 5554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shl : llvalue -> llvalue -> llvalue = "LLVMConstShl" 5564647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_lshr : llvalue -> llvalue -> llvalue = "LLVMConstLShr" 5574647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ashr : llvalue -> llvalue -> llvalue = "LLVMConstAShr" 5584647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_gep : llvalue -> llvalue array -> llvalue = "llvm_const_gep" 5591b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_in_bounds_gep : llvalue -> llvalue array -> llvalue 5601b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_in_bounds_gep" 5614647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_trunc : llvalue -> lltype -> llvalue = "LLVMConstTrunc" 5624647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sext : llvalue -> lltype -> llvalue = "LLVMConstSExt" 5634647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_zext : llvalue -> lltype -> llvalue = "LLVMConstZExt" 5644647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptrunc : llvalue -> lltype -> llvalue = "LLVMConstFPTrunc" 5654647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fpext : llvalue -> lltype -> llvalue = "LLVMConstFPExt" 5664647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_uitofp : llvalue -> lltype -> llvalue = "LLVMConstUIToFP" 5674647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sitofp : llvalue -> lltype -> llvalue = "LLVMConstSIToFP" 5684647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptoui : llvalue -> lltype -> llvalue = "LLVMConstFPToUI" 5694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptosi : llvalue -> lltype -> llvalue = "LLVMConstFPToSI" 5704647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ptrtoint : llvalue -> lltype -> llvalue = "LLVMConstPtrToInt" 5714647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_inttoptr : llvalue -> lltype -> llvalue = "LLVMConstIntToPtr" 5724647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_bitcast : llvalue -> lltype -> llvalue = "LLVMConstBitCast" 5731b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_zext_or_bitcast : llvalue -> lltype -> llvalue 5741b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstZExtOrBitCast" 5751b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_sext_or_bitcast : llvalue -> lltype -> llvalue 5761b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstSExtOrBitCast" 5771b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_trunc_or_bitcast : llvalue -> lltype -> llvalue 5781b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstTruncOrBitCast" 5791b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_pointercast : llvalue -> lltype -> llvalue 5801b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstPointerCast" 581c8ac229cc8349685117f68bc6f1da04f98015cd6Peter Zotovexternal const_intcast : llvalue -> lltype -> is_signed:bool -> llvalue 582c8ac229cc8349685117f68bc6f1da04f98015cd6Peter Zotov = "llvm_const_intcast" 5831b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fpcast : llvalue -> lltype -> llvalue = "LLVMConstFPCast" 5844647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_select : llvalue -> llvalue -> llvalue -> llvalue 5854647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstSelect" 5864647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_extractelement : llvalue -> llvalue -> llvalue 5874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstExtractElement" 5884647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_insertelement : llvalue -> llvalue -> llvalue -> llvalue 5894647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstInsertElement" 5904647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue 5914647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstShuffleVector" 5921b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_extractvalue : llvalue -> int array -> llvalue 5931b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_extractvalue" 5941b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_insertvalue : llvalue -> llvalue -> int array -> llvalue 5951b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_insertvalue" 596ce89b4e66f7ec82b2b621c94b072f0b22827a3cdErick Tryzelaarexternal const_inline_asm : lltype -> string -> string -> bool -> bool -> 597ce89b4e66f7ec82b2b621c94b072f0b22827a3cdErick Tryzelaar llvalue 598ce89b4e66f7ec82b2b621c94b072f0b22827a3cdErick Tryzelaar = "llvm_const_inline_asm" 599c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaarexternal block_address : llvalue -> llbasicblock -> llvalue = "LLVMBlockAddress" 6004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6018ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on global variables, functions, and aliases (globals) ...--*) 602dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal global_parent : llvalue -> llmodule = "LLVMGetGlobalParent" 6038ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_declaration : llvalue -> bool = "llvm_is_declaration" 604404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal linkage : llvalue -> Linkage.t = "llvm_linkage" 605404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_linkage : Linkage.t -> llvalue -> unit = "llvm_set_linkage" 606f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarexternal unnamed_addr : llvalue -> bool = "llvm_unnamed_addr" 607f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarexternal set_unnamed_addr : bool -> llvalue -> unit = "llvm_set_unnamed_addr" 6088ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal section : llvalue -> string = "llvm_section" 6098ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_section : string -> llvalue -> unit = "llvm_set_section" 610404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal visibility : llvalue -> Visibility.t = "llvm_visibility" 611404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_visibility : Visibility.t -> llvalue -> unit = "llvm_set_visibility" 61237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal dll_storage_class : llvalue -> DLLStorageClass.t = "llvm_dll_storage_class" 61337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal set_dll_storage_class : DLLStorageClass.t -> llvalue -> unit = "llvm_set_dll_storage_class" 6148ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal alignment : llvalue -> int = "llvm_alignment" 6158ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_alignment : int -> llvalue -> unit = "llvm_set_alignment" 616c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksenexternal is_global_constant : llvalue -> bool = "llvm_is_global_constant" 617c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksenexternal set_global_constant : bool -> llvalue -> unit 618c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen = "llvm_set_global_constant" 6198ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 6208ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on global variables .....................................--*) 6218ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal declare_global : lltype -> string -> llmodule -> llvalue 6228ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_declare_global" 6238e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaarexternal declare_qualified_global : lltype -> string -> int -> llmodule -> 6248e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar llvalue 6258e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar = "llvm_declare_qualified_global" 6268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal define_global : string -> llvalue -> llmodule -> llvalue 6278ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_define_global" 6288e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaarexternal define_qualified_global : string -> llvalue -> int -> llmodule -> 6298e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar llvalue 6308e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar = "llvm_define_qualified_global" 6316d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_global : string -> llmodule -> llvalue option 6326d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_global" 6338ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal delete_global : llvalue -> unit = "llvm_delete_global" 63446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal global_initializer : llvalue -> llvalue = "LLVMGetInitializer" 6358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_initializer : llvalue -> llvalue -> unit = "llvm_set_initializer" 6368ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal remove_initializer : llvalue -> unit = "llvm_remove_initializer" 6378ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_thread_local : llvalue -> bool = "llvm_is_thread_local" 6388ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_thread_local : bool -> llvalue -> unit = "llvm_set_thread_local" 6398a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal thread_local_mode : llvalue -> ThreadLocalMode.t 6408a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_thread_local_mode" 6418a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal set_thread_local_mode : ThreadLocalMode.t -> llvalue -> unit 6428a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_set_thread_local_mode" 6438a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal is_externally_initialized : llvalue -> bool 6448a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_is_externally_initialized" 6458a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal set_externally_initialized : bool -> llvalue -> unit 6468a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_set_externally_initialized" 6474733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_begin : llmodule -> (llmodule, llvalue) llpos 6484733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_begin" 6494733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_succ : llvalue -> (llmodule, llvalue) llpos 6504733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_succ" 6514733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_end : llmodule -> (llmodule, llvalue) llrev_pos 6524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_end" 6534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_pred : llvalue -> (llmodule, llvalue) llrev_pos 6544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_pred" 6554733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 6564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec iter_global_range f i e = 6574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then () else 6584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 6594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_end _ -> raise (Invalid_argument "Invalid global variable range.") 6604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | Before bb -> 6614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen f bb; 6624733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen iter_global_range f (global_succ bb) e 6634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 6644733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet iter_globals f m = 6654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen iter_global_range f (global_begin m) (At_end m) 6664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 6674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec fold_left_global_range f init i e = 6684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then init else 6694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 6704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_end _ -> raise (Invalid_argument "Invalid global variable range.") 6714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | Before bb -> fold_left_global_range f (f init bb) (global_succ bb) e 6724733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 6734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet fold_left_globals f init m = 6744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen fold_left_global_range f init (global_begin m) (At_end m) 6754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 6764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec rev_iter_global_range f i e = 6774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then () else 6784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 6794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_start _ -> raise (Invalid_argument "Invalid global variable range.") 6804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | After bb -> 6814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen f bb; 6824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen rev_iter_global_range f (global_pred bb) e 6834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 6844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rev_iter_globals f m = 6854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen rev_iter_global_range f (global_end m) (At_start m) 6864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 6874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec fold_right_global_range f i e init = 6884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then init else 6894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 6904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_start _ -> raise (Invalid_argument "Invalid global variable range.") 6914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | After bb -> fold_right_global_range f (global_pred bb) e (f bb init) 6924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 6934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet fold_right_globals f m init = 6944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen fold_right_global_range f (global_end m) (At_start m) init 6958ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 6966ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar(*--... Operations on aliases ..............................................--*) 6976ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaarexternal add_alias : llmodule -> lltype -> llvalue -> string -> llvalue 6986ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar = "llvm_add_alias" 6996ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar 70046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Operations on functions ............................................--*) 70146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal declare_function : string -> lltype -> llmodule -> llvalue 70246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_declare_function" 70346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_function : string -> lltype -> llmodule -> llvalue 70446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_define_function" 7056d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_function : string -> llmodule -> llvalue option 7066d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_function" 70746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_function : llvalue -> unit = "llvm_delete_function" 70846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal is_intrinsic : llvalue -> bool = "llvm_is_intrinsic" 70946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal function_call_conv : llvalue -> int = "llvm_function_call_conv" 71046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal set_function_call_conv : int -> llvalue -> unit 71146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_set_function_call_conv" 7125eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenexternal gc : llvalue -> string option = "llvm_gc" 7135eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenexternal set_gc : string option -> llvalue -> unit = "llvm_set_gc" 7144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_begin : llmodule -> (llmodule, llvalue) llpos 7154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_begin" 7164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_succ : llvalue -> (llmodule, llvalue) llpos 7174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_succ" 7184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_end : llmodule -> (llmodule, llvalue) llrev_pos 7194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_end" 7204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_pred : llvalue -> (llmodule, llvalue) llrev_pos 7214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_pred" 7224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec iter_function_range f i e = 7244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then () else 7254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 7264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_end _ -> raise (Invalid_argument "Invalid function range.") 7274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | Before fn -> 7284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen f fn; 7294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen iter_function_range f (function_succ fn) e 7304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet iter_functions f m = 7324733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen iter_function_range f (function_begin m) (At_end m) 7334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec fold_left_function_range f init i e = 7354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then init else 7364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 7374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_end _ -> raise (Invalid_argument "Invalid function range.") 7384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | Before fn -> fold_left_function_range f (f init fn) (function_succ fn) e 7394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet fold_left_functions f init m = 7414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen fold_left_function_range f init (function_begin m) (At_end m) 7424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7434733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec rev_iter_function_range f i e = 7444733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then () else 7454733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 7464733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_start _ -> raise (Invalid_argument "Invalid function range.") 7474733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | After fn -> 7484733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen f fn; 7494733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen rev_iter_function_range f (function_pred fn) e 7504733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7514733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rev_iter_functions f m = 7524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen rev_iter_function_range f (function_end m) (At_start m) 7534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec fold_right_function_range f i e init = 7554733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then init else 7564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 7574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_start _ -> raise (Invalid_argument "Invalid function range.") 7584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | After fn -> fold_right_function_range f (function_pred fn) e (f fn init) 7594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet fold_right_functions f m init = 7614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen fold_right_function_range f (function_end m) (At_start m) init 76246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 7630be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinexternal llvm_add_function_attr : llvalue -> int32 -> unit 7640941534c712d77243d9dda5e8c1d927563b4edffChris Lattner = "llvm_add_function_attr" 7650be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinexternal llvm_remove_function_attr : llvalue -> int32 -> unit 7660941534c712d77243d9dda5e8c1d927563b4edffChris Lattner = "llvm_remove_function_attr" 7670be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinexternal llvm_function_attr : llvalue -> int32 = "llvm_function_attr" 7680941534c712d77243d9dda5e8c1d927563b4edffChris Lattner 7690be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinlet pack_attr (attr:Attribute.t) : int32 = 7700941534c712d77243d9dda5e8c1d927563b4edffChris Lattner match attr with 7710be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin Attribute.Zext -> Int32.shift_left 1l 0 7720be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Sext -> Int32.shift_left 1l 1 7730be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Noreturn -> Int32.shift_left 1l 2 7740be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Inreg -> Int32.shift_left 1l 3 7750be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Structret -> Int32.shift_left 1l 4 7760be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Nounwind -> Int32.shift_left 1l 5 7770be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Noalias -> Int32.shift_left 1l 6 7780be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Byval -> Int32.shift_left 1l 7 7790be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Nest -> Int32.shift_left 1l 8 7800be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Readnone -> Int32.shift_left 1l 9 7810be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Readonly -> Int32.shift_left 1l 10 7820be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Noinline -> Int32.shift_left 1l 11 7830be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Alwaysinline -> Int32.shift_left 1l 12 7840be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Optsize -> Int32.shift_left 1l 13 7850be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Ssp -> Int32.shift_left 1l 14 7860be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Sspreq -> Int32.shift_left 1l 15 7870be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Alignment n -> Int32.shift_left (Int32.of_int n) 16 7880be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Nocapture -> Int32.shift_left 1l 21 7890be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Noredzone -> Int32.shift_left 1l 22 7900be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Noimplicitfloat -> Int32.shift_left 1l 23 7910be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Naked -> Int32.shift_left 1l 24 7920be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Inlinehint -> Int32.shift_left 1l 25 7930be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.Stackalignment n -> Int32.shift_left (Int32.of_int n) 26 7940be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.ReturnsTwice -> Int32.shift_left 1l 29 7950be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.UWTable -> Int32.shift_left 1l 30 7960be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | Attribute.NonLazyBind -> Int32.shift_left 1l 31 7970be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin 7980be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinlet unpack_attr (a : int32) : Attribute.t list = 7990be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin let l = ref [] in 8000be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin let check attr = 8010be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin Int32.logand (pack_attr attr) a in 8020be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin let checkattr attr = 8030be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin if (check attr) <> 0l then begin 8040be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin l := attr :: !l 8050be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin end 8060be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin in 8070be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Zext; 8080be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Sext; 8090be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Noreturn; 8100be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Inreg; 8110be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Structret; 8120be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Nounwind; 8130be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Noalias; 8140be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Byval; 8150be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Nest; 8160be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Readnone; 8170be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Readonly; 8180be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Noinline; 8190be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Alwaysinline; 8200be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Optsize; 8210be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Ssp; 8220be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Sspreq; 8230be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin let align = Int32.logand (Int32.shift_right_logical a 16) 31l in 8240be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin if align <> 0l then 8250be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin l := Attribute.Alignment (Int32.to_int align) :: !l; 8260be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Nocapture; 8270be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Noredzone; 8280be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Noimplicitfloat; 8290be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Naked; 8300be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.Inlinehint; 8310be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin let stackalign = Int32.logand (Int32.shift_right_logical a 26) 7l in 8320be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin if stackalign <> 0l then 8330be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin l := Attribute.Stackalignment (Int32.to_int stackalign) :: !l; 8340be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.ReturnsTwice; 8350be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.UWTable; 8360be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin checkattr Attribute.NonLazyBind; 8370be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin !l;; 8380941534c712d77243d9dda5e8c1d927563b4edffChris Lattner 8390941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerlet add_function_attr llval attr = 8400941534c712d77243d9dda5e8c1d927563b4edffChris Lattner llvm_add_function_attr llval (pack_attr attr) 8410941534c712d77243d9dda5e8c1d927563b4edffChris Lattner 8428a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal add_target_dependent_function_attr 8438a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov : llvalue -> string -> string -> unit 8448a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_add_target_dependent_function_attr" 8458a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 8460941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerlet remove_function_attr llval attr = 8470941534c712d77243d9dda5e8c1d927563b4edffChris Lattner llvm_remove_function_attr llval (pack_attr attr) 84846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 8490be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinlet function_attr f = unpack_attr (llvm_function_attr f) 8500be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin 851dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(*--... Operations on params ...............................................--*) 852dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal params : llvalue -> llvalue array = "llvm_params" 853dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal param : llvalue -> int -> llvalue = "llvm_param" 8540be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinexternal llvm_param_attr : llvalue -> int32 = "llvm_param_attr" 8550be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinlet param_attr p = unpack_attr (llvm_param_attr p) 856dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal param_parent : llvalue -> llvalue = "LLVMGetParamParent" 8574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_begin : llvalue -> (llvalue, llvalue) llpos = "llvm_param_begin" 8584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_succ : llvalue -> (llvalue, llvalue) llpos = "llvm_param_succ" 8594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_end : llvalue -> (llvalue, llvalue) llrev_pos = "llvm_param_end" 8604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_pred : llvalue -> (llvalue, llvalue) llrev_pos ="llvm_param_pred" 8614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8624733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec iter_param_range f i e = 8634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then () else 8644733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 8654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_end _ -> raise (Invalid_argument "Invalid parameter range.") 8664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | Before p -> 8674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen f p; 8684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen iter_param_range f (param_succ p) e 8694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet iter_params f fn = 8714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen iter_param_range f (param_begin fn) (At_end fn) 8724733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec fold_left_param_range f init i e = 8744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then init else 8754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 8764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_end _ -> raise (Invalid_argument "Invalid parameter range.") 8774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | Before p -> fold_left_param_range f (f init p) (param_succ p) e 8784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet fold_left_params f init fn = 8804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen fold_left_param_range f init (param_begin fn) (At_end fn) 8814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec rev_iter_param_range f i e = 8834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then () else 8844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 8854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_start _ -> raise (Invalid_argument "Invalid parameter range.") 8864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | After p -> 8874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen f p; 8884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen rev_iter_param_range f (param_pred p) e 8894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rev_iter_params f fn = 8914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen rev_iter_param_range f (param_end fn) (At_start fn) 8924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec fold_right_param_range f init i e = 8944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then init else 8954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 8964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_start _ -> raise (Invalid_argument "Invalid parameter range.") 8974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | After p -> fold_right_param_range f (f p init) (param_pred p) e 8984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet fold_right_params f fn init = 9004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen fold_right_param_range f init (param_end fn) (At_start fn) 901dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 9020be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinexternal llvm_add_param_attr : llvalue -> int32 -> unit 9030941534c712d77243d9dda5e8c1d927563b4edffChris Lattner = "llvm_add_param_attr" 9040be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinexternal llvm_remove_param_attr : llvalue -> int32 -> unit 9050941534c712d77243d9dda5e8c1d927563b4edffChris Lattner = "llvm_remove_param_attr" 9060941534c712d77243d9dda5e8c1d927563b4edffChris Lattner 9070941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerlet add_param_attr llval attr = 9080941534c712d77243d9dda5e8c1d927563b4edffChris Lattner llvm_add_param_attr llval (pack_attr attr) 9090941534c712d77243d9dda5e8c1d927563b4edffChris Lattner 9100941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerlet remove_param_attr llval attr = 9110941534c712d77243d9dda5e8c1d927563b4edffChris Lattner llvm_remove_param_attr llval (pack_attr attr) 9120941534c712d77243d9dda5e8c1d927563b4edffChris Lattner 913e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal set_param_alignment : llvalue -> int -> unit 914e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_set_param_alignment" 915e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 91646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Operations on basic blocks .........................................--*) 917dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal value_of_block : llbasicblock -> llvalue = "LLVMBasicBlockAsValue" 918dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal value_is_block : llvalue -> bool = "llvm_value_is_block" 919dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal block_of_value : llvalue -> llbasicblock = "LLVMValueAsBasicBlock" 920dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal block_parent : llbasicblock -> llvalue = "LLVMGetBasicBlockParent" 92146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal basic_blocks : llvalue -> llbasicblock array = "llvm_basic_blocks" 92246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal entry_block : llvalue -> llbasicblock = "LLVMGetEntryBasicBlock" 92346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_block : llbasicblock -> unit = "llvm_delete_block" 9248a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal remove_block : llbasicblock -> unit = "llvm_remove_block" 9258a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal move_block_before : llbasicblock -> llbasicblock -> unit 9268a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_move_block_before" 9278a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal move_block_after : llbasicblock -> llbasicblock -> unit 9288a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_move_block_after" 929b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal append_block : llcontext -> string -> llvalue -> llbasicblock 930b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar = "llvm_append_block" 931b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal insert_block : llcontext -> string -> llbasicblock -> llbasicblock 93246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_insert_block" 9334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_begin : llvalue -> (llvalue, llbasicblock) llpos 9344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_begin" 9354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_succ : llbasicblock -> (llvalue, llbasicblock) llpos 9364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_succ" 9374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_end : llvalue -> (llvalue, llbasicblock) llrev_pos 9384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_end" 9394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_pred : llbasicblock -> (llvalue, llbasicblock) llrev_pos 9404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_pred" 941ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinexternal block_terminator : llbasicblock -> llvalue option = 942ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin "llvm_block_terminator" 9434733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9444733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec iter_block_range f i e = 9454733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then () else 9464733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 9474733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_end _ -> raise (Invalid_argument "Invalid block range.") 9484733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | Before bb -> 9494733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen f bb; 9504733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen iter_block_range f (block_succ bb) e 9514733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet iter_blocks f fn = 9534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen iter_block_range f (block_begin fn) (At_end fn) 9544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9554733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec fold_left_block_range f init i e = 9564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then init else 9574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 9584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_end _ -> raise (Invalid_argument "Invalid block range.") 9594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | Before bb -> fold_left_block_range f (f init bb) (block_succ bb) e 9604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet fold_left_blocks f init fn = 9624733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen fold_left_block_range f init (block_begin fn) (At_end fn) 9634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9644733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec rev_iter_block_range f i e = 9654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then () else 9664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 9674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_start _ -> raise (Invalid_argument "Invalid block range.") 9684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | After bb -> 9694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen f bb; 9704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen rev_iter_block_range f (block_pred bb) e 9714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9724733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rev_iter_blocks f fn = 9734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen rev_iter_block_range f (block_end fn) (At_start fn) 9744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet rec fold_right_block_range f init i e = 9764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if i = e then init else 9774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen match i with 9784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | At_start _ -> raise (Invalid_argument "Invalid block range.") 9794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen | After bb -> fold_right_block_range f (f bb init) (block_pred bb) e 9804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenlet fold_right_blocks f fn init = 9824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen fold_right_block_range f init (block_end fn) (At_start fn) 983dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 984dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(*--... Operations on instructions .........................................--*) 985dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal instr_parent : llvalue -> llbasicblock = "LLVMGetInstructionParent" 986033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_begin : llbasicblock -> (llbasicblock, llvalue) llpos 987033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_begin" 988033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_succ : llvalue -> (llbasicblock, llvalue) llpos 989033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_succ" 990033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_end : llbasicblock -> (llbasicblock, llvalue) llrev_pos 991033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_end" 992033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_pred : llvalue -> (llbasicblock, llvalue) llrev_pos 993033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_pred" 994033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 9956563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinexternal instr_opcode : llvalue -> Opcode.t = "llvm_instr_get_opcode" 9964917ec9ec775d7bc7fbc3362b4c576c32b7617f4Torok Edwinexternal icmp_predicate : llvalue -> Icmp.t option = "llvm_instr_icmp_predicate" 99737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal fcmp_predicate : llvalue -> Fcmp.t option = "llvm_instr_fcmp_predicate" 99837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal instr_clone : llvalue -> llvalue = "llvm_instr_clone" 9994917ec9ec775d7bc7fbc3362b4c576c32b7617f4Torok Edwin 1000033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenlet rec iter_instrs_range f i e = 1001033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen if i = e then () else 1002033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen match i with 1003033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen | At_end _ -> raise (Invalid_argument "Invalid instruction range.") 1004033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen | Before i -> 1005033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen f i; 1006033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen iter_instrs_range f (instr_succ i) e 1007033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1008033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenlet iter_instrs f bb = 1009033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen iter_instrs_range f (instr_begin bb) (At_end bb) 1010033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1011033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenlet rec fold_left_instrs_range f init i e = 1012033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen if i = e then init else 1013033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen match i with 1014033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen | At_end _ -> raise (Invalid_argument "Invalid instruction range.") 1015033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen | Before i -> fold_left_instrs_range f (f init i) (instr_succ i) e 1016033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1017033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenlet fold_left_instrs f init bb = 1018033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen fold_left_instrs_range f init (instr_begin bb) (At_end bb) 1019033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1020033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenlet rec rev_iter_instrs_range f i e = 1021033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen if i = e then () else 1022033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen match i with 1023033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen | At_start _ -> raise (Invalid_argument "Invalid instruction range.") 1024033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen | After i -> 1025033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen f i; 1026033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen rev_iter_instrs_range f (instr_pred i) e 1027033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1028033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenlet rev_iter_instrs f bb = 1029033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen rev_iter_instrs_range f (instr_end bb) (At_start bb) 1030033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1031033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenlet rec fold_right_instr_range f i e init = 1032033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen if i = e then init else 1033033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen match i with 1034033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen | At_start _ -> raise (Invalid_argument "Invalid instruction range.") 1035033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen | After i -> fold_right_instr_range f (instr_pred i) e (f i init) 1036033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1037033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenlet fold_right_instrs f bb init = 1038033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen fold_right_instr_range f (instr_end bb) (At_start bb) init 1039033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 104046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1041cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen(*--... Operations on call sites ...........................................--*) 1042cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksenexternal instruction_call_conv: llvalue -> int 1043cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen = "llvm_instruction_call_conv" 1044cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksenexternal set_instruction_call_conv: int -> llvalue -> unit 1045cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen = "llvm_set_instruction_call_conv" 10460941534c712d77243d9dda5e8c1d927563b4edffChris Lattner 10470be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinexternal llvm_add_instruction_param_attr : llvalue -> int -> int32 -> unit 10480941534c712d77243d9dda5e8c1d927563b4edffChris Lattner = "llvm_add_instruction_param_attr" 10490be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinexternal llvm_remove_instruction_param_attr : llvalue -> int -> int32 -> unit 10500941534c712d77243d9dda5e8c1d927563b4edffChris Lattner = "llvm_remove_instruction_param_attr" 10510941534c712d77243d9dda5e8c1d927563b4edffChris Lattner 10520941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerlet add_instruction_param_attr llval i attr = 10530941534c712d77243d9dda5e8c1d927563b4edffChris Lattner llvm_add_instruction_param_attr llval i (pack_attr attr) 10540941534c712d77243d9dda5e8c1d927563b4edffChris Lattner 10550941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerlet remove_instruction_param_attr llval i attr = 10560941534c712d77243d9dda5e8c1d927563b4edffChris Lattner llvm_remove_instruction_param_attr llval i (pack_attr attr) 1057cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 105807cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(*--... Operations on call instructions (only) .............................--*) 105907cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksenexternal is_tail_call : llvalue -> bool = "llvm_is_tail_call" 106007cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksenexternal set_tail_call : bool -> llvalue -> unit = "llvm_set_tail_call" 106107cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 10628a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(*--... Operations on load/store instructions (only) .......................--*) 10638a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal is_volatile : llvalue -> bool = "llvm_is_volatile" 10648a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal set_volatile : bool -> llvalue -> unit = "llvm_set_volatile" 10658a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 106637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines(*--... Operations on terminators ..........................................--*) 106737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 106837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hineslet is_terminator llv = 106937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines let open ValueKind in 107037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines let open Opcode in 107137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines match classify_value llv with 107237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines | Instruction (Br | IndirectBr | Invoke | Resume | Ret | Switch | Unreachable) 107337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines -> true 107437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines | _ -> false 107537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 107637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal successor : llvalue -> int -> llbasicblock = "llvm_successor" 107737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal set_successor : llvalue -> int -> llbasicblock -> unit 107837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines = "llvm_set_successor" 107937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal num_successors : llvalue -> int = "llvm_num_successors" 108037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 108137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hineslet successors llv = 108237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines if not (is_terminator llv) then 108337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines raise (Invalid_argument "Llvm.successors can only be used on terminators") 108437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines else 108537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines Array.init (num_successors llv) (successor llv) 108637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 108737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hineslet iter_successors f llv = 108837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines if not (is_terminator llv) then 108937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines raise (Invalid_argument "Llvm.iter_successors can only be used on terminators") 109037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines else 109137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines for i = 0 to num_successors llv - 1 do 109237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines f (successor llv i) 109337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines done 109437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 109537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hineslet fold_successors f llv z = 109637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines if not (is_terminator llv) then 109737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines raise (Invalid_argument "Llvm.fold_successors can only be used on terminators") 109837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines else 109937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines let n = num_successors llv in 110037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines let rec aux i acc = 110137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines if i >= n then acc 110237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines else begin 110337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines let llb = successor llv i in 110437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines aux (i+1) (f llb acc) 110537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines end 110637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines in aux 0 z 110737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 110837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 110937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines(*--... Operations on branches .............................................--*) 111037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal condition : llvalue -> llvalue = "llvm_condition" 111137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal set_condition : llvalue -> llvalue -> unit 111237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines = "llvm_set_condition" 111337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesexternal is_conditional : llvalue -> bool = "llvm_is_conditional" 111437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 111537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hineslet get_branch llv = 111637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines if classify_value llv <> ValueKind.Instruction Opcode.Br then 111737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines None 111837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines else if is_conditional llv then 111937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines Some (`Conditional (condition llv, successor llv 0, successor llv 1)) 112037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines else 112137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines Some (`Unconditional (successor llv 0)) 112237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 11232618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen(*--... Operations on phi nodes ............................................--*) 11242618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal add_incoming : (llvalue * llbasicblock) -> llvalue -> unit 11252618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen = "llvm_add_incoming" 11262618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal incoming : llvalue -> (llvalue * llbasicblock) list = "llvm_incoming" 11272618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 1128ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinexternal delete_instruction : llvalue -> unit = "llvm_delete_instruction" 112946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 113046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*===-- Instruction builders ----------------------------------------------===*) 11315371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal builder : llcontext -> llbuilder = "llvm_builder" 1132033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal position_builder : (llbasicblock, llvalue) llpos -> llbuilder -> unit 1133033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_position_builder" 1134dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal insertion_block : llbuilder -> llbasicblock = "llvm_insertion_block" 11355c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaarexternal insert_into_builder : llvalue -> string -> llbuilder -> unit 11365c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar = "llvm_insert_into_builder" 113746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 11385371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarlet builder_at context ip = 11395371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar let b = builder context in 1140033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen position_builder ip b; 1141033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen b 1142033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 11435371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarlet builder_before context i = builder_at context (Before i) 11445371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarlet builder_at_end context bb = builder_at context (At_end bb) 1145033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1146033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenlet position_before i = position_builder (Before i) 1147033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenlet position_at_end bb = position_builder (At_end bb) 1148033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1149033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 115046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(*--... Metadata ...........................................................--*) 115146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal set_current_debug_location : llbuilder -> llvalue -> unit 115246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar = "llvm_set_current_debug_location" 115346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal clear_current_debug_location : llbuilder -> unit 115446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar = "llvm_clear_current_debug_location" 115546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal current_debug_location : llbuilder -> llvalue option 115646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar = "llvm_current_debug_location" 115746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal set_inst_debug_location : llbuilder -> llvalue -> unit 115846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar = "llvm_set_inst_debug_location" 115946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 116046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 116146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Terminators ........................................................--*) 116246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret_void : llbuilder -> llvalue = "llvm_build_ret_void" 116346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret : llvalue -> llbuilder -> llvalue = "llvm_build_ret" 1164e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_aggregate_ret : llvalue array -> llbuilder -> llvalue 1165e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_aggregate_ret" 116646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_br : llbasicblock -> llbuilder -> llvalue = "llvm_build_br" 116746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder -> 116846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_cond_br" 116946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_switch : llvalue -> llbasicblock -> int -> llbuilder -> llvalue 117046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_switch" 1171ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinexternal build_malloc : lltype -> string -> llbuilder -> llvalue = 1172ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin "llvm_build_malloc" 1173ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinexternal build_array_malloc : lltype -> llvalue -> string -> llbuilder -> 1174ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin llvalue = "llvm_build_array_malloc" 1175ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinexternal build_free : llvalue -> llbuilder -> llvalue = "llvm_build_free" 117621491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksenexternal add_case : llvalue -> llvalue -> llbasicblock -> unit 117721491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen = "llvm_add_case" 1178ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinexternal switch_default_dest : llvalue -> llbasicblock = 1179ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin "LLVMGetSwitchDefaultDest" 1180c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaarexternal build_indirect_br : llvalue -> int -> llbuilder -> llvalue 1181c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar = "llvm_build_indirect_br" 1182c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaarexternal add_destination : llvalue -> llbasicblock -> unit 1183c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar = "llvm_add_destination" 118446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_invoke : llvalue -> llvalue array -> llbasicblock -> 118546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbasicblock -> string -> llbuilder -> llvalue 118646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_invoke_bc" "llvm_build_invoke_nat" 118748488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwinexternal build_landingpad : lltype -> llvalue -> int -> string -> llbuilder -> 118848488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin llvalue = "llvm_build_landingpad" 118948488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwinexternal set_cleanup : llvalue -> bool -> unit = "llvm_set_cleanup" 1190ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinexternal add_clause : llvalue -> llvalue -> unit = "llvm_add_clause" 1191ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinexternal build_resume : llvalue -> llbuilder -> llvalue = "llvm_build_resume" 119246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unreachable : llbuilder -> llvalue = "llvm_build_unreachable" 119346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 119446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Arithmetic .........................................................--*) 119546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 119646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_add" 1197e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_nsw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 1198e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_nsw_add" 119919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 120019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_add" 1201e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fadd : llvalue -> llvalue -> string -> llbuilder -> llvalue 1202e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fadd" 120346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 120446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sub" 120519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nsw_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 120619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nsw_sub" 120719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 120819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_sub" 1209e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fsub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1210e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fsub" 121146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 121246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_mul" 121319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nsw_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 121419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nsw_mul" 121519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 121619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_mul" 1217e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fmul : llvalue -> llvalue -> string -> llbuilder -> llvalue 1218e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fmul" 121946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 122046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_udiv" 122146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 122246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sdiv" 1223e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_exact_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 1224e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_exact_sdiv" 122546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 122646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fdiv" 122746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue 122846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_urem" 122946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_srem : llvalue -> llvalue -> string -> llbuilder -> llvalue 123046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_srem" 123146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_frem : llvalue -> llvalue -> string -> llbuilder -> llvalue 123246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_frem" 123346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shl : llvalue -> llvalue -> string -> llbuilder -> llvalue 123446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_shl" 123546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_lshr : llvalue -> llvalue -> string -> llbuilder -> llvalue 123646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_lshr" 123746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ashr : llvalue -> llvalue -> string -> llbuilder -> llvalue 123846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_ashr" 123946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_and : llvalue -> llvalue -> string -> llbuilder -> llvalue 124046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_and" 124146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_or : llvalue -> llvalue -> string -> llbuilder -> llvalue 124246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_or" 124346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_xor : llvalue -> llvalue -> string -> llbuilder -> llvalue 124446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_xor" 124546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_neg : llvalue -> string -> llbuilder -> llvalue 124646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_neg" 124719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nsw_neg : llvalue -> string -> llbuilder -> llvalue 124819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nsw_neg" 124919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_neg : llvalue -> string -> llbuilder -> llvalue 125019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_neg" 125119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_fneg : llvalue -> string -> llbuilder -> llvalue 125219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_fneg" 125346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_not : llvalue -> string -> llbuilder -> llvalue 125446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_not" 125546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 125646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Memory .............................................................--*) 125746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_alloca : lltype -> string -> llbuilder -> llvalue 125846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_alloca" 125946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_alloca : lltype -> llvalue -> string -> llbuilder -> 126046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_array_alloca" 126146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_load : llvalue -> string -> llbuilder -> llvalue 126246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_load" 126346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_store : llvalue -> llvalue -> llbuilder -> llvalue 126446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_store" 12658a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovexternal build_atomicrmw : AtomicRMWBinOp.t -> llvalue -> llvalue -> 12668a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov AtomicOrdering.t -> bool -> string -> llbuilder -> 12678a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov llvalue 12688a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_build_atomicrmw_bytecode" 12698a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov "llvm_build_atomicrmw_native" 127046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue 127146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_gep" 1272e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_in_bounds_gep : llvalue -> llvalue array -> string -> 1273e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llbuilder -> llvalue = "llvm_build_in_bounds_gep" 1274e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_struct_gep : llvalue -> int -> string -> llbuilder -> llvalue 1275e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_struct_gep" 1276e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1277e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_global_string : string -> string -> llbuilder -> llvalue 1278e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_global_string" 1279e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_global_stringptr : string -> string -> llbuilder -> llvalue 1280e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_global_stringptr" 128146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 128246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Casts ..............................................................--*) 128346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue 128446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_trunc" 128546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_zext : llvalue -> lltype -> string -> llbuilder -> llvalue 128646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_zext" 128746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sext : llvalue -> lltype -> string -> llbuilder -> llvalue 128846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sext" 128946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptoui : llvalue -> lltype -> string -> llbuilder -> llvalue 129046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptoui" 129146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptosi : llvalue -> lltype -> string -> llbuilder -> llvalue 129246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptosi" 129346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_uitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 129446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_uitofp" 129546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 129646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sitofp" 129746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptrunc : llvalue -> lltype -> string -> llbuilder -> llvalue 129846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptrunc" 129946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fpext : llvalue -> lltype -> string -> llbuilder -> llvalue 130046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fpext" 130146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ptrtoint : llvalue -> lltype -> string -> llbuilder -> llvalue 130246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_prttoint" 130346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue 130446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_inttoptr" 130546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue 130646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_bitcast" 1307e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_zext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1308e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_zext_or_bitcast" 1309e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_sext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1310e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_sext_or_bitcast" 1311e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_trunc_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1312e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_trunc_or_bitcast" 1313e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_pointercast : llvalue -> lltype -> string -> llbuilder -> llvalue 1314e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_pointercast" 1315e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_intcast : llvalue -> lltype -> string -> llbuilder -> llvalue 1316e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_intcast" 1317e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fpcast : llvalue -> lltype -> string -> llbuilder -> llvalue 1318e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fpcast" 131946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 132046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Comparisons ........................................................--*) 1321404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_icmp : Icmp.t -> llvalue -> llvalue -> string -> 132246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_icmp" 1323404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_fcmp : Fcmp.t -> llvalue -> llvalue -> string -> 132446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_fcmp" 132546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 132646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Miscellaneous instructions .........................................--*) 13272618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal build_phi : (llvalue * llbasicblock) list -> string -> llbuilder -> 13282618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen llvalue = "llvm_build_phi" 1329ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesexternal build_empty_phi : lltype -> string -> llbuilder -> llvalue 1330ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines = "llvm_build_empty_phi" 133146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_call : llvalue -> llvalue array -> string -> llbuilder -> llvalue 133246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_call" 133346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_select : llvalue -> llvalue -> llvalue -> string -> llbuilder -> 133446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_select" 133546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_va_arg : llvalue -> lltype -> string -> llbuilder -> llvalue 133646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_va_arg" 133746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_extractelement : llvalue -> llvalue -> string -> llbuilder -> 133846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_extractelement" 133946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_insertelement : llvalue -> llvalue -> llvalue -> string -> 134046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_insertelement" 134146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shufflevector : llvalue -> llvalue -> llvalue -> string -> 134246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_shufflevector" 1343e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_extractvalue : llvalue -> int -> string -> llbuilder -> llvalue 1344e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_extractvalue" 1345e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_insertvalue : llvalue -> llvalue -> int -> string -> llbuilder -> 1346e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_insertvalue" 1347e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1348e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_is_null : llvalue -> string -> llbuilder -> llvalue 1349e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_is_null" 1350e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_is_not_null : llvalue -> string -> llbuilder -> llvalue 1351e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_is_not_null" 1352e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_ptrdiff : llvalue -> llvalue -> string -> llbuilder -> llvalue 1353e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_ptrdiff" 13548ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1355da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 1356da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen(*===-- Memory buffers ----------------------------------------------------===*) 1357da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 1358da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule MemoryBuffer = struct 1359da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external of_file : string -> llmemorybuffer = "llvm_memorybuffer_of_file" 1360da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external of_stdin : unit -> llmemorybuffer = "llvm_memorybuffer_of_stdin" 13618a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov external of_string : ?name:string -> string -> llmemorybuffer 13628a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov = "llvm_memorybuffer_of_string" 1363f00a9e0f79541538df7e3af2e83de37f40d904ccPeter Zotov external as_string : llmemorybuffer -> string = "llvm_memorybuffer_as_string" 1364da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external dispose : llmemorybuffer -> unit = "llvm_memorybuffer_dispose" 1365da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 13661ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 13671ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 1368d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen(*===-- Pass Manager ------------------------------------------------------===*) 1369d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1370d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenmodule PassManager = struct 1371d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type 'a t 1372d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type any = [ `Module | `Function ] 1373d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external create : unit -> [ `Module ] t = "llvm_passmanager_create" 137416609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar external create_function : llmodule -> [ `Function ] t 1375d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "LLVMCreateFunctionPassManager" 1376d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external run_module : llmodule -> [ `Module ] t -> bool 1377d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "llvm_passmanager_run_module" 1378d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external initialize : [ `Function ] t -> bool = "llvm_passmanager_initialize" 1379d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external run_function : llvalue -> [ `Function ] t -> bool 1380d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "llvm_passmanager_run_function" 1381d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external finalize : [ `Function ] t -> bool = "llvm_passmanager_finalize" 1382d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external dispose : [< any ] t -> unit = "llvm_passmanager_dispose" 1383d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenend 1384