Core.cpp revision 19f047f5f6c44d1cd5681f9314b3ff5e7bae122d
18b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen//===-- Core.cpp ----------------------------------------------------------===// 28b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen// 38b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen// The LLVM Compiler Infrastructure 48b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen// 54ee451de366474b9c228b4e5fa573795a715216dChris Lattner// This file is distributed under the University of Illinois Open Source 64ee451de366474b9c228b4e5fa573795a715216dChris Lattner// License. See LICENSE.TXT for details. 78b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen// 88b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen//===----------------------------------------------------------------------===// 98b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen// 108b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen// This file implements the C bindings for libLLVMCore.a, which implements 118b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen// the LLVM intermediate representation. 128b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen// 138b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen//===----------------------------------------------------------------------===// 148b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 158b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm-c/Core.h" 168b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm/Bitcode/ReaderWriter.h" 178b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm/Constants.h" 188b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm/DerivedTypes.h" 198b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm/GlobalVariable.h" 20851ba39dab544ad986f150aec9573add9d978397Chris Lattner#include "llvm/GlobalAlias.h" 218b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson#include "llvm/LLVMContext.h" 2246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen#include "llvm/TypeSymbolTable.h" 23851ba39dab544ad986f150aec9573add9d978397Chris Lattner#include "llvm/InlineAsm.h" 242a9c671a51126def8020870103316e6aedc73edfGordon Henriksen#include "llvm/IntrinsicInst.h" 25e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen#include "llvm/Support/CallSite.h" 26f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin#include "llvm/Support/Debug.h" 27c25e7581b9b8088910da31702d4ca21c4734c6d7Torok Edwin#include "llvm/Support/ErrorHandling.h" 28f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin#include "llvm/Support/MemoryBuffer.h" 29f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin#include "llvm/Support/raw_ostream.h" 308b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include <cassert> 31da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen#include <cstdlib> 32ae9f3a3b7c915f725aef5a7250e88eaeddda03c6Anton Korobeynikov#include <cstring> 338b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 348b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenusing namespace llvm; 358b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 368b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 37da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen/*===-- Error handling ----------------------------------------------------===*/ 38da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 39da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenvoid LLVMDisposeMessage(char *Message) { 40da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen free(Message); 41da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 42da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 43da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 448b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson/*===-- Operations on contexts --------------------------------------------===*/ 458b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson 468b477ed579794ba6d76915d56b3f448a7dd20120Owen AndersonLLVMContextRef LLVMContextCreate() { 478b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson return wrap(new LLVMContext()); 488b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson} 498b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson 50c70e62110b7e165ab8f04c38ffd97f905dcda95dOwen AndersonLLVMContextRef LLVMGetGlobalContext() { 51c70e62110b7e165ab8f04c38ffd97f905dcda95dOwen Anderson return wrap(&getGlobalContext()); 52c70e62110b7e165ab8f04c38ffd97f905dcda95dOwen Anderson} 53c70e62110b7e165ab8f04c38ffd97f905dcda95dOwen Anderson 548b477ed579794ba6d76915d56b3f448a7dd20120Owen Andersonvoid LLVMContextDispose(LLVMContextRef C) { 558b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson delete unwrap(C); 568b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson} 578b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson 588b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson 598b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*===-- Operations on modules ---------------------------------------------===*/ 608b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 61c8897d9c2f9fcee6061a2c2d380028269026a836Owen AndersonLLVMModuleRef LLVMModuleCreateWithName(const char *ModuleID) { 62c8897d9c2f9fcee6061a2c2d380028269026a836Owen Anderson return wrap(new Module(ModuleID, getGlobalContext())); 63c8897d9c2f9fcee6061a2c2d380028269026a836Owen Anderson} 64c8897d9c2f9fcee6061a2c2d380028269026a836Owen Anderson 65c8897d9c2f9fcee6061a2c2d380028269026a836Owen AndersonLLVMModuleRef LLVMModuleCreateWithNameInContext(const char *ModuleID, 66c8897d9c2f9fcee6061a2c2d380028269026a836Owen Anderson LLVMContextRef C) { 6731895e73591d3c9ceae731a1274c8f56194b9616Owen Anderson return wrap(new Module(ModuleID, *unwrap(C))); 688b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 698b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 708b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMDisposeModule(LLVMModuleRef M) { 718b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen delete unwrap(M); 728b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 738b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 74a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen/*--.. Data layout .........................................................--*/ 75a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenconst char * LLVMGetDataLayout(LLVMModuleRef M) { 76a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen return unwrap(M)->getDataLayout().c_str(); 77a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen} 78a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 79a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenvoid LLVMSetDataLayout(LLVMModuleRef M, const char *Triple) { 80a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen unwrap(M)->setDataLayout(Triple); 81a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen} 82a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 83a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen/*--.. Target triple .......................................................--*/ 84a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenconst char * LLVMGetTarget(LLVMModuleRef M) { 85a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen return unwrap(M)->getTargetTriple().c_str(); 86a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen} 87a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 88a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenvoid LLVMSetTarget(LLVMModuleRef M, const char *Triple) { 89a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen unwrap(M)->setTargetTriple(Triple); 90a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen} 91a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 92a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen/*--.. Type names ..........................................................--*/ 93d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMAddTypeName(LLVMModuleRef M, const char *Name, LLVMTypeRef Ty) { 948b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap(M)->addTypeName(Name, unwrap(Ty)); 958b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 968b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 9746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMDeleteTypeName(LLVMModuleRef M, const char *Name) { 9846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen TypeSymbolTable &TST = unwrap(M)->getTypeSymbolTable(); 998113c6739e854d94910491965d83797487bc8a54Daniel Dunbar 1008113c6739e854d94910491965d83797487bc8a54Daniel Dunbar TypeSymbolTable::iterator I = TST.find(Name); 1018113c6739e854d94910491965d83797487bc8a54Daniel Dunbar if (I != TST.end()) 1028113c6739e854d94910491965d83797487bc8a54Daniel Dunbar TST.remove(I); 10346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 10446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 105e4840bc611f8260065d3879a412ea3b501550995Chris LattnerLLVMTypeRef LLVMGetTypeByName(LLVMModuleRef M, const char *Name) { 1068113c6739e854d94910491965d83797487bc8a54Daniel Dunbar return wrap(unwrap(M)->getTypeByName(Name)); 107e4840bc611f8260065d3879a412ea3b501550995Chris Lattner} 108e4840bc611f8260065d3879a412ea3b501550995Chris Lattner 109af59b105bb3f9a31f1812e470eb9db28a8a1b491Gordon Henriksenvoid LLVMDumpModule(LLVMModuleRef M) { 110af59b105bb3f9a31f1812e470eb9db28a8a1b491Gordon Henriksen unwrap(M)->dump(); 111af59b105bb3f9a31f1812e470eb9db28a8a1b491Gordon Henriksen} 112af59b105bb3f9a31f1812e470eb9db28a8a1b491Gordon Henriksen 1138b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1148b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*===-- Operations on types -----------------------------------------------===*/ 1158b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1168b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on all types (mostly) ....................................--*/ 1178b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1188b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMTypeKind LLVMGetTypeKind(LLVMTypeRef Ty) { 1190df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner switch (unwrap(Ty)->getTypeID()) { 120efd280b4caf261b95551a317bb398a90d2e90011Daniel Dunbar default: 121efd280b4caf261b95551a317bb398a90d2e90011Daniel Dunbar assert(false && "Unhandled TypeID."); 1220df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::VoidTyID: 1230df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMVoidTypeKind; 1240df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::FloatTyID: 1250df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMFloatTypeKind; 1260df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::DoubleTyID: 1270df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMDoubleTypeKind; 1280df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::X86_FP80TyID: 1290df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMX86_FP80TypeKind; 1300df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::FP128TyID: 1310df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMFP128TypeKind; 1320df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::PPC_FP128TyID: 1330df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMPPC_FP128TypeKind; 1340df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::LabelTyID: 1350df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMLabelTypeKind; 1360df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::MetadataTyID: 1370df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMMetadataTypeKind; 1380df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::IntegerTyID: 1390df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMIntegerTypeKind; 1400df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::FunctionTyID: 1410df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMFunctionTypeKind; 1420df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::StructTyID: 1430df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMStructTypeKind; 144fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner case Type::UnionTyID: 145fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner return LLVMUnionTypeKind; 1460df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::ArrayTyID: 1470df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMArrayTypeKind; 1480df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::PointerTyID: 1490df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMPointerTypeKind; 1500df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::OpaqueTyID: 1510df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMOpaqueTypeKind; 1520df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::VectorTyID: 1530df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMVectorTypeKind; 1540df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner } 1558b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 1568b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 15722c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMContextRef LLVMGetTypeContext(LLVMTypeRef Ty) { 15822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(&unwrap(Ty)->getContext()); 15922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 16022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 1618b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on integer types .........................................--*/ 1628b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 16322c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMInt1TypeInContext(LLVMContextRef C) { 16422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getInt1Ty(*unwrap(C)); 16522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 16622c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMInt8TypeInContext(LLVMContextRef C) { 16722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getInt8Ty(*unwrap(C)); 16822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 16922c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMInt16TypeInContext(LLVMContextRef C) { 17022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getInt16Ty(*unwrap(C)); 17122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 17222c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMInt32TypeInContext(LLVMContextRef C) { 17322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getInt32Ty(*unwrap(C)); 17422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 17522c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMInt64TypeInContext(LLVMContextRef C) { 17622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getInt64Ty(*unwrap(C)); 17722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 17822c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMIntTypeInContext(LLVMContextRef C, unsigned NumBits) { 17922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(IntegerType::get(*unwrap(C), NumBits)); 18022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 18122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 1821d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMInt1Type(void) { 18322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInt1TypeInContext(LLVMGetGlobalContext()); 1841d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 1851d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMInt8Type(void) { 18622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInt8TypeInContext(LLVMGetGlobalContext()); 1871d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 1881d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMInt16Type(void) { 18922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInt16TypeInContext(LLVMGetGlobalContext()); 1901d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 1911d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMInt32Type(void) { 19222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInt32TypeInContext(LLVMGetGlobalContext()); 1931d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 1941d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMInt64Type(void) { 19522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInt64TypeInContext(LLVMGetGlobalContext()); 1961d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 19781a788176ecf158432af2b208b0a85321e5ec74aGordon HenriksenLLVMTypeRef LLVMIntType(unsigned NumBits) { 19822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMIntTypeInContext(LLVMGetGlobalContext(), NumBits); 1998b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2008b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 20146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetIntTypeWidth(LLVMTypeRef IntegerTy) { 2028b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<IntegerType>(IntegerTy)->getBitWidth(); 2038b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2048b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 2058b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on real types ............................................--*/ 2068b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 20722c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMFloatTypeInContext(LLVMContextRef C) { 20822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getFloatTy(*unwrap(C)); 20922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 21022c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMDoubleTypeInContext(LLVMContextRef C) { 21122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getDoubleTy(*unwrap(C)); 21222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 21322c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMX86FP80TypeInContext(LLVMContextRef C) { 21422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getX86_FP80Ty(*unwrap(C)); 21522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 21622c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMFP128TypeInContext(LLVMContextRef C) { 21722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getFP128Ty(*unwrap(C)); 21822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 21922c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMPPCFP128TypeInContext(LLVMContextRef C) { 22022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getPPC_FP128Ty(*unwrap(C)); 22122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 22222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 2231d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMFloatType(void) { 22422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMFloatTypeInContext(LLVMGetGlobalContext()); 2251d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2261d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMDoubleType(void) { 22722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMDoubleTypeInContext(LLVMGetGlobalContext()); 2281d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2291d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMX86FP80Type(void) { 23022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMX86FP80TypeInContext(LLVMGetGlobalContext()); 2311d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2321d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMFP128Type(void) { 23322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMFP128TypeInContext(LLVMGetGlobalContext()); 2341d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2351d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMPPCFP128Type(void) { 23622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMPPCFP128TypeInContext(LLVMGetGlobalContext()); 2371d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2388b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 2398b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on function types ........................................--*/ 2408b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 24181a788176ecf158432af2b208b0a85321e5ec74aGordon HenriksenLLVMTypeRef LLVMFunctionType(LLVMTypeRef ReturnType, 24281a788176ecf158432af2b208b0a85321e5ec74aGordon Henriksen LLVMTypeRef *ParamTypes, unsigned ParamCount, 243d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool IsVarArg) { 2448b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen std::vector<const Type*> Tys; 2458b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen for (LLVMTypeRef *I = ParamTypes, *E = ParamTypes + ParamCount; I != E; ++I) 2468b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen Tys.push_back(unwrap(*I)); 2478b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 248debcb01b0f0a15f568ca69e8f288fade4bfc7297Owen Anderson return wrap(FunctionType::get(unwrap(ReturnType), Tys, IsVarArg != 0)); 2498b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2508b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 251d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsFunctionVarArg(LLVMTypeRef FunctionTy) { 2528b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<FunctionType>(FunctionTy)->isVarArg(); 2538b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2548b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 25546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMTypeRef LLVMGetReturnType(LLVMTypeRef FunctionTy) { 2568b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return wrap(unwrap<FunctionType>(FunctionTy)->getReturnType()); 2578b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2588b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 25946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMCountParamTypes(LLVMTypeRef FunctionTy) { 2608b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<FunctionType>(FunctionTy)->getNumParams(); 2618b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2628b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 26346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMGetParamTypes(LLVMTypeRef FunctionTy, LLVMTypeRef *Dest) { 2648b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen FunctionType *Ty = unwrap<FunctionType>(FunctionTy); 2658b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen for (FunctionType::param_iterator I = Ty->param_begin(), 2668b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen E = Ty->param_end(); I != E; ++I) 2678b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen *Dest++ = wrap(*I); 2688b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2698b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 2708b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on struct types ..........................................--*/ 2718b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 27222c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMStructTypeInContext(LLVMContextRef C, LLVMTypeRef *ElementTypes, 273d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner unsigned ElementCount, LLVMBool Packed) { 2748b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen std::vector<const Type*> Tys; 2758b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen for (LLVMTypeRef *I = ElementTypes, 2768b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen *E = ElementTypes + ElementCount; I != E; ++I) 2778b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen Tys.push_back(unwrap(*I)); 2788b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 27922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(StructType::get(*unwrap(C), Tys, Packed != 0)); 2808b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2818b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 28222c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMStructType(LLVMTypeRef *ElementTypes, 283d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner unsigned ElementCount, LLVMBool Packed) { 28422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMStructTypeInContext(LLVMGetGlobalContext(), ElementTypes, 28522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar ElementCount, Packed); 28622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 28722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 28822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 28946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMCountStructElementTypes(LLVMTypeRef StructTy) { 2908b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<StructType>(StructTy)->getNumElements(); 2918b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2928b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 2938b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMGetStructElementTypes(LLVMTypeRef StructTy, LLVMTypeRef *Dest) { 2948b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen StructType *Ty = unwrap<StructType>(StructTy); 2958b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen for (FunctionType::param_iterator I = Ty->element_begin(), 2968b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen E = Ty->element_end(); I != E; ++I) 2978b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen *Dest++ = wrap(*I); 2988b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2998b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 300d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsPackedStruct(LLVMTypeRef StructTy) { 3018b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<StructType>(StructTy)->isPacked(); 3028b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3038b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 304fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner/*--.. Operations on union types ..........................................--*/ 305fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner 306fdfeb6976f07ad10d809b922ed7376ba2a3539beChris LattnerLLVMTypeRef LLVMUnionTypeInContext(LLVMContextRef C, LLVMTypeRef *ElementTypes, 307fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner unsigned ElementCount) { 308fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner SmallVector<const Type*, 8> Tys; 309fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner for (LLVMTypeRef *I = ElementTypes, 310fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner *E = ElementTypes + ElementCount; I != E; ++I) 311fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner Tys.push_back(unwrap(*I)); 312fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner 313fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner return wrap(UnionType::get(&Tys[0], Tys.size())); 314fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner} 315fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner 316fdfeb6976f07ad10d809b922ed7376ba2a3539beChris LattnerLLVMTypeRef LLVMUnionType(LLVMTypeRef *ElementTypes, 317fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner unsigned ElementCount, int Packed) { 318fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner return LLVMUnionTypeInContext(LLVMGetGlobalContext(), ElementTypes, 319fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner ElementCount); 320fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner} 321fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner 322fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattnerunsigned LLVMCountUnionElementTypes(LLVMTypeRef UnionTy) { 323fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner return unwrap<UnionType>(UnionTy)->getNumElements(); 324fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner} 325fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner 326fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattnervoid LLVMGetUnionElementTypes(LLVMTypeRef UnionTy, LLVMTypeRef *Dest) { 327fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner UnionType *Ty = unwrap<UnionType>(UnionTy); 328fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner for (FunctionType::param_iterator I = Ty->element_begin(), 329fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner E = Ty->element_end(); I != E; ++I) 330fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner *Dest++ = wrap(*I); 331fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner} 332fdfeb6976f07ad10d809b922ed7376ba2a3539beChris Lattner 3338b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on array, pointer, and vector types (sequence types) .....--*/ 3348b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 33557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon HenriksenLLVMTypeRef LLVMArrayType(LLVMTypeRef ElementType, unsigned ElementCount) { 336debcb01b0f0a15f568ca69e8f288fade4bfc7297Owen Anderson return wrap(ArrayType::get(unwrap(ElementType), ElementCount)); 3378b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3388b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 33957cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon HenriksenLLVMTypeRef LLVMPointerType(LLVMTypeRef ElementType, unsigned AddressSpace) { 340debcb01b0f0a15f568ca69e8f288fade4bfc7297Owen Anderson return wrap(PointerType::get(unwrap(ElementType), AddressSpace)); 3418b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3428b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 34357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon HenriksenLLVMTypeRef LLVMVectorType(LLVMTypeRef ElementType, unsigned ElementCount) { 344debcb01b0f0a15f568ca69e8f288fade4bfc7297Owen Anderson return wrap(VectorType::get(unwrap(ElementType), ElementCount)); 3458b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3468b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 3478b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMTypeRef LLVMGetElementType(LLVMTypeRef Ty) { 3488b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return wrap(unwrap<SequentialType>(Ty)->getElementType()); 3498b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3508b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 3518b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenunsigned LLVMGetArrayLength(LLVMTypeRef ArrayTy) { 3528b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<ArrayType>(ArrayTy)->getNumElements(); 3538b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3548b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 35557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenunsigned LLVMGetPointerAddressSpace(LLVMTypeRef PointerTy) { 35657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen return unwrap<PointerType>(PointerTy)->getAddressSpace(); 35757cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen} 35857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 3598b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenunsigned LLVMGetVectorSize(LLVMTypeRef VectorTy) { 3608b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<VectorType>(VectorTy)->getNumElements(); 3618b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3628b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 3638b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on other types ...........................................--*/ 3648b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 36522c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMVoidTypeInContext(LLVMContextRef C) { 36622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(Type::getVoidTy(*unwrap(C))); 36722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 36822c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMLabelTypeInContext(LLVMContextRef C) { 36922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(Type::getLabelTy(*unwrap(C))); 37022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 37122c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMOpaqueTypeInContext(LLVMContextRef C) { 37222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(OpaqueType::get(*unwrap(C))); 37322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 37422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 3751d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMVoidType(void) { 37622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMVoidTypeInContext(LLVMGetGlobalContext()); 3771d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 3781d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMLabelType(void) { 37922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMLabelTypeInContext(LLVMGetGlobalContext()); 3801d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 38116c1f44d91211a225497062ea508d58fd25085a9Gordon HenriksenLLVMTypeRef LLVMOpaqueType(void) { 38222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMOpaqueTypeInContext(LLVMGetGlobalContext()); 3838b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3848b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 385dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen/*--.. Operations on type handles ..........................................--*/ 3861cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen 3871cf08fddc7413076dedad58dbb8d8d67e69a490fGordon HenriksenLLVMTypeHandleRef LLVMCreateTypeHandle(LLVMTypeRef PotentiallyAbstractTy) { 3881cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen return wrap(new PATypeHolder(unwrap(PotentiallyAbstractTy))); 3891cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen} 3901cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen 3911cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenvoid LLVMDisposeTypeHandle(LLVMTypeHandleRef TypeHandle) { 3921cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen delete unwrap(TypeHandle); 3931cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen} 3941cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen 3951cf08fddc7413076dedad58dbb8d8d67e69a490fGordon HenriksenLLVMTypeRef LLVMResolveTypeHandle(LLVMTypeHandleRef TypeHandle) { 3961cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen return wrap(unwrap(TypeHandle)->get()); 3971cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen} 3981cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen 3991cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenvoid LLVMRefineType(LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy) { 4001cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen unwrap<DerivedType>(AbstractTy)->refineAbstractTypeTo(unwrap(ConcreteTy)); 4011cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen} 4021cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen 4038b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 4048b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*===-- Operations on values ----------------------------------------------===*/ 4058b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 4068b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on all values ............................................--*/ 4078b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 40846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMTypeRef LLVMTypeOf(LLVMValueRef Val) { 4098b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return wrap(unwrap(Val)->getType()); 4108b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4118b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 4128b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenconst char *LLVMGetValueName(LLVMValueRef Val) { 41393b67e40de356569493c285b86b138a3f11b5035Daniel Dunbar return unwrap(Val)->getName().data(); 4148b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4158b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 4168b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetValueName(LLVMValueRef Val, const char *Name) { 4178b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap(Val)->setName(Name); 4188b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4198b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 42088cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksenvoid LLVMDumpValue(LLVMValueRef Val) { 42188cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksen unwrap(Val)->dump(); 42288cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksen} 42388cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksen 424885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattnervoid LLVMReplaceAllUsesWith(LLVMValueRef OldVal, LLVMValueRef NewVal) { 425885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner unwrap(OldVal)->replaceAllUsesWith(unwrap(NewVal)); 426885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 4272a9c671a51126def8020870103316e6aedc73edfGordon Henriksen 4282a9c671a51126def8020870103316e6aedc73edfGordon Henriksen/*--.. Conversion functions ................................................--*/ 4292a9c671a51126def8020870103316e6aedc73edfGordon Henriksen 4302a9c671a51126def8020870103316e6aedc73edfGordon Henriksen#define LLVM_DEFINE_VALUE_CAST(name) \ 4312a9c671a51126def8020870103316e6aedc73edfGordon Henriksen LLVMValueRef LLVMIsA##name(LLVMValueRef Val) { \ 4322a9c671a51126def8020870103316e6aedc73edfGordon Henriksen return wrap(static_cast<Value*>(dyn_cast_or_null<name>(unwrap(Val)))); \ 4332a9c671a51126def8020870103316e6aedc73edfGordon Henriksen } 4342a9c671a51126def8020870103316e6aedc73edfGordon Henriksen 4352a9c671a51126def8020870103316e6aedc73edfGordon HenriksenLLVM_FOR_EACH_VALUE_SUBCLASS(LLVM_DEFINE_VALUE_CAST) 4362a9c671a51126def8020870103316e6aedc73edfGordon Henriksen 437885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner/*--.. Operations on Uses ..................................................--*/ 438885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMUseIteratorRef LLVMGetFirstUse(LLVMValueRef Val) { 439885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Value *V = unwrap(Val); 440885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Value::use_iterator I = V->use_begin(); 441885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner if (I == V->use_end()) 442885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return 0; 443885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return wrap(&(I.getUse())); 444885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 445885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 446885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMUseIteratorRef LLVMGetNextUse(LLVMUseIteratorRef UR) { 447885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return wrap(unwrap(UR)->getNext()); 448885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 449885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 450885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMValueRef LLVMGetUser(LLVMUseIteratorRef UR) { 451885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return wrap(unwrap(UR)->getUser()); 452885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 453885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 454885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMValueRef LLVMGetUsedValue(LLVMUseIteratorRef UR) { 455885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return wrap(unwrap(UR)->get()); 456885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 457885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 458885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner/*--.. Operations on Users .................................................--*/ 459885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMValueRef LLVMGetOperand(LLVMValueRef Val, unsigned Index) { 460885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return wrap(unwrap<User>(Val)->getOperand(Index)); 461885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 4622a9c671a51126def8020870103316e6aedc73edfGordon Henriksen 4638b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on constants of any type .................................--*/ 4648b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 465e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstNull(LLVMTypeRef Ty) { 466a7235ea7245028a0723e8ab7fd011386b3900777Owen Anderson return wrap(Constant::getNullValue(unwrap(Ty))); 4678b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4688b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 469e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstAllOnes(LLVMTypeRef Ty) { 470a7235ea7245028a0723e8ab7fd011386b3900777Owen Anderson return wrap(Constant::getAllOnesValue(unwrap(Ty))); 4718b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4728b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 4738b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMValueRef LLVMGetUndef(LLVMTypeRef Ty) { 4749e9a0d5fc26878e51a58a8b57900fcbf952c2691Owen Anderson return wrap(UndefValue::get(unwrap(Ty))); 4758b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4768b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 477d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsConstant(LLVMValueRef Ty) { 478344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen return isa<Constant>(unwrap(Ty)); 479344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen} 480344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen 481d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsNull(LLVMValueRef Val) { 4828b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen if (Constant *C = dyn_cast<Constant>(unwrap(Val))) 4838b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return C->isNullValue(); 4848b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return false; 4858b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4868b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 487d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsUndef(LLVMValueRef Val) { 488344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen return isa<UndefValue>(unwrap(Val)); 489344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen} 490344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen 491e4840bc611f8260065d3879a412ea3b501550995Chris LattnerLLVMValueRef LLVMConstPointerNull(LLVMTypeRef Ty) { 49262e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson return 4939e9a0d5fc26878e51a58a8b57900fcbf952c2691Owen Anderson wrap(ConstantPointerNull::get(unwrap<PointerType>(Ty))); 494e4840bc611f8260065d3879a412ea3b501550995Chris Lattner} 495e4840bc611f8260065d3879a412ea3b501550995Chris Lattner 4968b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on scalar constants ......................................--*/ 4978b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 498e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstInt(LLVMTypeRef IntTy, unsigned long long N, 499d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool SignExtend) { 500eed707b1e6097aac2bb6b3d47271f6300ace7f2eOwen Anderson return wrap(ConstantInt::get(unwrap<IntegerType>(IntTy), N, SignExtend != 0)); 5018b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 5028b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 503e0a1bf64c9885df16bf596447d037f1c75f92637Erick TryzelaarLLVMValueRef LLVMConstIntOfString(LLVMTypeRef IntTy, const char Str[], 504e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar uint8_t Radix) { 505e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar return wrap(ConstantInt::get(unwrap<IntegerType>(IntTy), StringRef(Str), 506e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar Radix)); 507e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar} 508e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar 509e0a1bf64c9885df16bf596447d037f1c75f92637Erick TryzelaarLLVMValueRef LLVMConstIntOfStringAndSize(LLVMTypeRef IntTy, const char Str[], 510e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar unsigned SLen, uint8_t Radix) { 511e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar return wrap(ConstantInt::get(unwrap<IntegerType>(IntTy), StringRef(Str, SLen), 512e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar Radix)); 513e62a8a353c3b21b551c00b9025800d3352e5349eGordon Henriksen} 514e62a8a353c3b21b551c00b9025800d3352e5349eGordon Henriksen 515e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstReal(LLVMTypeRef RealTy, double N) { 516e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar return wrap(ConstantFP::get(unwrap(RealTy), N)); 517e62a8a353c3b21b551c00b9025800d3352e5349eGordon Henriksen} 518e62a8a353c3b21b551c00b9025800d3352e5349eGordon Henriksen 519e62a8a353c3b21b551c00b9025800d3352e5349eGordon HenriksenLLVMValueRef LLVMConstRealOfString(LLVMTypeRef RealTy, const char *Text) { 520e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar return wrap(ConstantFP::get(unwrap(RealTy), StringRef(Text))); 521e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar} 522e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar 523e0a1bf64c9885df16bf596447d037f1c75f92637Erick TryzelaarLLVMValueRef LLVMConstRealOfStringAndSize(LLVMTypeRef RealTy, const char Str[], 524e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar unsigned SLen) { 525e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar return wrap(ConstantFP::get(unwrap(RealTy), StringRef(Str, SLen))); 5268b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 5278b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 528885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattnerunsigned long long LLVMConstIntGetZExtValue(LLVMValueRef ConstantVal) { 529885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return unwrap<ConstantInt>(ConstantVal)->getZExtValue(); 530885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 531885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 532885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattnerlong long LLVMConstIntGetSExtValue(LLVMValueRef ConstantVal) { 533885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return unwrap<ConstantInt>(ConstantVal)->getSExtValue(); 534885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 535885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 5368b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on composite constants ...................................--*/ 5378b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 53822c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMValueRef LLVMConstStringInContext(LLVMContextRef C, const char *Str, 539d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner unsigned Length, 540d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool DontNullTerminate) { 5418b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen /* Inverted the sense of AddNull because ', 0)' is a 5428b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen better mnemonic for null termination than ', 1)'. */ 54322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(ConstantArray::get(*unwrap(C), std::string(Str, Length), 5448b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen DontNullTerminate == 0)); 5458b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 54622c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMValueRef LLVMConstStructInContext(LLVMContextRef C, 54722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar LLVMValueRef *ConstantVals, 548d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner unsigned Count, LLVMBool Packed) { 54922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(ConstantStruct::get(*unwrap(C), 55022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar unwrap<Constant>(ConstantVals, Count), 55122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar Count, Packed != 0)); 55222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 5538b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 55422c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMValueRef LLVMConstString(const char *Str, unsigned Length, 555d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool DontNullTerminate) { 55622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMConstStringInContext(LLVMGetGlobalContext(), Str, Length, 55722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar DontNullTerminate); 55822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 559e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstArray(LLVMTypeRef ElementTy, 560e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen LLVMValueRef *ConstantVals, unsigned Length) { 561debcb01b0f0a15f568ca69e8f288fade4bfc7297Owen Anderson return wrap(ConstantArray::get(ArrayType::get(unwrap(ElementTy), Length), 5628b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<Constant>(ConstantVals, Length), 5638b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen Length)); 5648b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 565e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstStruct(LLVMValueRef *ConstantVals, unsigned Count, 566d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool Packed) { 56722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMConstStructInContext(LLVMGetGlobalContext(), ConstantVals, Count, 56822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar Packed); 5698b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 570e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstVector(LLVMValueRef *ScalarConstantVals, unsigned Size) { 571af7ec975870f92245f1f1484ac80a1e2db6a0afaOwen Anderson return wrap(ConstantVector::get( 57262e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ScalarConstantVals, Size), Size)); 5738b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 5741940dd10dd6b79e3332f384756c268b85d0ad400Erick TryzelaarLLVMValueRef LLVMConstUnion(LLVMTypeRef Ty, LLVMValueRef Val) { 5751940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar return wrap(ConstantUnion::get(unwrap<UnionType>(Ty), unwrap<Constant>(Val))); 5761940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar} 5774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 5784647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen/*--.. Constant expressions ................................................--*/ 5794647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 580885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMOpcode LLVMGetConstOpcode(LLVMValueRef ConstantVal) { 581885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return (LLVMOpcode)unwrap<ConstantExpr>(ConstantVal)->getOpcode(); 582885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 583885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 584ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan SandsLLVMValueRef LLVMAlignOf(LLVMTypeRef Ty) { 585baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getAlignOf(unwrap(Ty))); 586ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands} 587ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands 5884647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMSizeOf(LLVMTypeRef Ty) { 589baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSizeOf(unwrap(Ty))); 5904647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 5914647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 5924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstNeg(LLVMValueRef ConstantVal) { 593baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getNeg( 59456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal))); 59556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 59656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 59719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNSWNeg(LLVMValueRef ConstantVal) { 59819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(ConstantExpr::getNSWNeg( 59919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(ConstantVal))); 60019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 60119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 60219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNUWNeg(LLVMValueRef ConstantVal) { 60319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(ConstantExpr::getNUWNeg( 60419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(ConstantVal))); 60519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 60619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 60719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 60856b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFNeg(LLVMValueRef ConstantVal) { 60956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFNeg( 61056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal))); 6114647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6124647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6134647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstNot(LLVMValueRef ConstantVal) { 614baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getNot( 61556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal))); 6164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6184647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 619baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getAdd( 62062e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6214647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6234647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6246e7ad958683f34bf6c014c88fef723e5a2d741beDan GohmanLLVMValueRef LLVMConstNSWAdd(LLVMValueRef LHSConstant, 6256e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman LLVMValueRef RHSConstant) { 6266e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman return wrap(ConstantExpr::getNSWAdd( 6276e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unwrap<Constant>(LHSConstant), 6286e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unwrap<Constant>(RHSConstant))); 6296e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman} 6306e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman 63119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNUWAdd(LLVMValueRef LHSConstant, 63219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar LLVMValueRef RHSConstant) { 63319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(ConstantExpr::getNUWAdd( 63419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(LHSConstant), 63519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(RHSConstant))); 63619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 63719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 63856b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 63956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFAdd( 64056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(LHSConstant), 64156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(RHSConstant))); 64256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 64356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 6444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 645baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSub( 64662e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6484647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6494647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 65019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNSWSub(LLVMValueRef LHSConstant, 65119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar LLVMValueRef RHSConstant) { 65219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(ConstantExpr::getNSWSub( 65319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(LHSConstant), 65419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(RHSConstant))); 65519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 65619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 65719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNUWSub(LLVMValueRef LHSConstant, 65819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar LLVMValueRef RHSConstant) { 65919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(ConstantExpr::getNUWSub( 66019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(LHSConstant), 66119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(RHSConstant))); 66219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 66319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 66456b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 66556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFSub(unwrap<Constant>(LHSConstant), 66656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(RHSConstant))); 66756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 66856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 6694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 670baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getMul( 67162e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6724647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6734647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 67519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNSWMul(LLVMValueRef LHSConstant, 67619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar LLVMValueRef RHSConstant) { 67719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(ConstantExpr::getNSWMul( 67819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(LHSConstant), 67919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(RHSConstant))); 68019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 68119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 68219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNUWMul(LLVMValueRef LHSConstant, 68319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar LLVMValueRef RHSConstant) { 68419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(ConstantExpr::getNUWMul( 68519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(LHSConstant), 68619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(RHSConstant))); 68719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 68819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 68956b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 69056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFMul( 69156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(LHSConstant), 69256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(RHSConstant))); 69356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 69456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 6954647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstUDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 696baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getUDiv( 69762e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6984647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6994647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7014647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 702baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSDiv( 70362e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7044647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7054647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7064647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7076e7ad958683f34bf6c014c88fef723e5a2d741beDan GohmanLLVMValueRef LLVMConstExactSDiv(LLVMValueRef LHSConstant, 7086e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman LLVMValueRef RHSConstant) { 7096e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman return wrap(ConstantExpr::getExactSDiv( 7106e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unwrap<Constant>(LHSConstant), 7116e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unwrap<Constant>(RHSConstant))); 7126e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman} 7136e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman 7144647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 715baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFDiv( 71662e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7184647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7194647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7204647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstURem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 721baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getURem( 72262e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7234647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7254647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7264647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 727baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSRem( 72862e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7294647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7304647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7314647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 733baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFRem( 73462e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7354647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7364647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7374647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstAnd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 739baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getAnd( 74062e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7414647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7424647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7434647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstOr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 745baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getOr( 74662e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7484647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7494647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstXor(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 751baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getXor( 75262e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7534647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7544647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7564647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstICmp(LLVMIntPredicate Predicate, 7574647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 758baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getICmp(Predicate, 7594647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(LHSConstant), 7604647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7614647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7624647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7634647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFCmp(LLVMRealPredicate Predicate, 7644647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 765baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFCmp(Predicate, 7664647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(LHSConstant), 7674647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7684647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7704647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstShl(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 771baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getShl( 77262e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7734647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7764647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstLShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 777baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getLShr( 77862e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7794647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7804647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7814647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7824647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstAShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 783baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getAShr( 78462e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7854647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7864647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7884647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstGEP(LLVMValueRef ConstantVal, 7894647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef *ConstantIndices, unsigned NumIndices) { 790baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getGetElementPtr( 79162e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 7924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ConstantIndices, 7934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen NumIndices), 7944647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen NumIndices)); 7954647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7964647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7976e7ad958683f34bf6c014c88fef723e5a2d741beDan GohmanLLVMValueRef LLVMConstInBoundsGEP(LLVMValueRef ConstantVal, 7986e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman LLVMValueRef *ConstantIndices, 7996e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unsigned NumIndices) { 8006e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman Constant* Val = unwrap<Constant>(ConstantVal); 8016e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman Constant** Idxs = unwrap<Constant>(ConstantIndices, NumIndices); 8026e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman return wrap(ConstantExpr::getInBoundsGetElementPtr(Val, Idxs, NumIndices)); 8036e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman} 8046e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman 8054647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 806baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getTrunc( 80762e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8084647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8094647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8104647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8114647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 812baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSExt( 81362e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8144647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8154647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstZExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 818baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getZExt( 81962e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8204647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8214647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8234647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 824baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFPTrunc( 82562e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8264647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8274647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8284647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8294647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 830baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFPExtend( 83162e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8334647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8354647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstUIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 836baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getUIToFP( 83762e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8394647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8404647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8414647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 842baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSIToFP(unwrap<Constant>(ConstantVal), 8434647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8454647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8464647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPToUI(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 847baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFPToUI(unwrap<Constant>(ConstantVal), 8484647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8494647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8514647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPToSI(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 852baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFPToSI( 85362e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8544647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8564647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8574647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstPtrToInt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 858baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getPtrToInt( 85962e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8604647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8614647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8624647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8634647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstIntToPtr(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 864baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getIntToPtr( 86562e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8664647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8674647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8684647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstBitCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 870baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getBitCast( 87162e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8724647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8734647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 87556b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstZExtOrBitCast(LLVMValueRef ConstantVal, 87656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 87756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getZExtOrBitCast( 87856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 87956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 88056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 88156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 88256b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstSExtOrBitCast(LLVMValueRef ConstantVal, 88356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 88456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getSExtOrBitCast( 88556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 88656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 88756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 88856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 88956b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstTruncOrBitCast(LLVMValueRef ConstantVal, 89056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 89156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getTruncOrBitCast( 89256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 89356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 89456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 89556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 89656b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstPointerCast(LLVMValueRef ConstantVal, 89756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 89856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getPointerCast( 89956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 90056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 90156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 90256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 90356b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstIntCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType, 904d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool isSigned) { 90556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getIntegerCast( 90656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 90756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType), 90856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar isSigned)); 90956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 91056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 91156b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFPCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 91256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFPCast( 91356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 91456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 91556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 91656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 9174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSelect(LLVMValueRef ConstantCondition, 9184647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef ConstantIfTrue, 9194647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef ConstantIfFalse) { 920baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSelect( 92162e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantCondition), 9224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ConstantIfTrue), 9234647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ConstantIfFalse))); 9244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9254647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9264647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstExtractElement(LLVMValueRef VectorConstant, 9274647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef IndexConstant) { 928baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getExtractElement( 92962e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(VectorConstant), 9304647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(IndexConstant))); 9314647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9334647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstInsertElement(LLVMValueRef VectorConstant, 9344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef ElementValueConstant, 9354647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef IndexConstant) { 936baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getInsertElement( 93762e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(VectorConstant), 9384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ElementValueConstant), 9394647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(IndexConstant))); 9404647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9414647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9424647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstShuffleVector(LLVMValueRef VectorAConstant, 9434647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef VectorBConstant, 9444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef MaskConstant) { 945baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getShuffleVector( 94662e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(VectorAConstant), 9474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(VectorBConstant), 9484647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(MaskConstant))); 9494647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9508b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 951b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMConstExtractValue(LLVMValueRef AggConstant, unsigned *IdxList, 952b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unsigned NumIdx) { 953baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getExtractValue( 95462e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(AggConstant), 955b593117b44a74c72bc784080bb402576b3181d94Dan Gohman IdxList, NumIdx)); 956b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 957b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 958b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMConstInsertValue(LLVMValueRef AggConstant, 959b593117b44a74c72bc784080bb402576b3181d94Dan Gohman LLVMValueRef ElementValueConstant, 960b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unsigned *IdxList, unsigned NumIdx) { 961baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getInsertValue( 96262e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(AggConstant), 963b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unwrap<Constant>(ElementValueConstant), 964b593117b44a74c72bc784080bb402576b3181d94Dan Gohman IdxList, NumIdx)); 965b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 966b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 967d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMValueRef LLVMConstInlineAsm(LLVMTypeRef Ty, const char *AsmString, 968d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner const char *Constraints, 969d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool HasSideEffects, 970d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool IsAlignStack) { 971d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner return wrap(InlineAsm::get(dyn_cast<FunctionType>(unwrap(Ty)), AsmString, 9728ba2d5befc05ca73d3bac8708819bbbe759e2cf9Dale Johannesen Constraints, HasSideEffects, IsAlignStack)); 973851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 974851ba39dab544ad986f150aec9573add9d978397Chris Lattner 9758b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on global variables, functions, and aliases (globals) ....--*/ 9768b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 977dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMModuleRef LLVMGetGlobalParent(LLVMValueRef Global) { 978dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap<GlobalValue>(Global)->getParent()); 979dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 980dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 981d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsDeclaration(LLVMValueRef Global) { 9828b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalValue>(Global)->isDeclaration(); 9838b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 9848b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 9858b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMLinkage LLVMGetLinkage(LLVMValueRef Global) { 9864aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling switch (unwrap<GlobalValue>(Global)->getLinkage()) { 9874aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling default: 9884aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling assert(false && "Unhandled Linkage Type."); 9894aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::ExternalLinkage: 9904aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMExternalLinkage; 9914aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::AvailableExternallyLinkage: 9924aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMAvailableExternallyLinkage; 9934aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::LinkOnceAnyLinkage: 9944aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMLinkOnceAnyLinkage; 9954aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::LinkOnceODRLinkage: 9964aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMLinkOnceODRLinkage; 9974aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::WeakAnyLinkage: 9984aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMWeakAnyLinkage; 9994aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::WeakODRLinkage: 10004aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMWeakODRLinkage; 10014aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::AppendingLinkage: 10024aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMAppendingLinkage; 10034aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::InternalLinkage: 10044aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMInternalLinkage; 10054aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::PrivateLinkage: 10064aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMPrivateLinkage; 10074aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::LinkerPrivateLinkage: 10084aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMLinkerPrivateLinkage; 10094aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::DLLImportLinkage: 10104aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMDLLImportLinkage; 10114aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::DLLExportLinkage: 10124aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMDLLExportLinkage; 10134aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::ExternalWeakLinkage: 10144aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMExternalWeakLinkage; 10154aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::CommonLinkage: 10164aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMCommonLinkage; 10174aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling } 10184aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling 10194aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling // Should never get here. 10204aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return static_cast<LLVMLinkage>(0); 10218b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10228b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10238b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetLinkage(LLVMValueRef Global, LLVMLinkage Linkage) { 10244aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GlobalValue *GV = unwrap<GlobalValue>(Global); 10254aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling 10264aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling switch (Linkage) { 10274aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling default: 10284aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling assert(false && "Unhandled Linkage Type."); 10294aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMExternalLinkage: 10304aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::ExternalLinkage); 10314aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10324aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMAvailableExternallyLinkage: 10334aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::AvailableExternallyLinkage); 10344aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10354aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMLinkOnceAnyLinkage: 10364aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::LinkOnceAnyLinkage); 10374aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10384aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMLinkOnceODRLinkage: 10394aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::LinkOnceODRLinkage); 10404aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10414aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMWeakAnyLinkage: 10424aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::WeakAnyLinkage); 10434aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10444aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMWeakODRLinkage: 10454aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::WeakODRLinkage); 10464aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10474aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMAppendingLinkage: 10484aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::AppendingLinkage); 10494aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10504aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMInternalLinkage: 10514aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::InternalLinkage); 10524aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10534aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMPrivateLinkage: 10544aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::PrivateLinkage); 10554aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10564aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMLinkerPrivateLinkage: 10574aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::LinkerPrivateLinkage); 10584aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10594aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMDLLImportLinkage: 10604aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::DLLImportLinkage); 10614aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10624aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMDLLExportLinkage: 10634aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::DLLExportLinkage); 10644aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10654aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMExternalWeakLinkage: 10664aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::ExternalWeakLinkage); 10674aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10684aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMGhostLinkage: 1069f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin DEBUG(errs() 1070f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin << "LLVMSetLinkage(): LLVMGhostLinkage is no longer supported."); 10714aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10724aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMCommonLinkage: 10734aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::CommonLinkage); 10744aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10754aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling } 10768b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10778b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10788b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenconst char *LLVMGetSection(LLVMValueRef Global) { 10798b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalValue>(Global)->getSection().c_str(); 10808b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10818b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10828b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetSection(LLVMValueRef Global, const char *Section) { 10838b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global)->setSection(Section); 10848b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10858b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10868b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMVisibility LLVMGetVisibility(LLVMValueRef Global) { 10878b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return static_cast<LLVMVisibility>( 10888b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global)->getVisibility()); 10898b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10908b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10918b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetVisibility(LLVMValueRef Global, LLVMVisibility Viz) { 10928b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global) 10938b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen ->setVisibility(static_cast<GlobalValue::VisibilityTypes>(Viz)); 10948b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10958b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10968b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenunsigned LLVMGetAlignment(LLVMValueRef Global) { 10978b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalValue>(Global)->getAlignment(); 10988b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10998b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11008b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetAlignment(LLVMValueRef Global, unsigned Bytes) { 11018b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global)->setAlignment(Bytes); 11028b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11038b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11048b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on global variables ......................................--*/ 11058b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11068b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMValueRef LLVMAddGlobal(LLVMModuleRef M, LLVMTypeRef Ty, const char *Name) { 1107e9b11b431308f4766b73cda93e38ec930c912122Owen Anderson return wrap(new GlobalVariable(*unwrap(M), unwrap(Ty), false, 1108e9b11b431308f4766b73cda93e38ec930c912122Owen Anderson GlobalValue::ExternalLinkage, 0, Name)); 11098b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11108b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11116d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon HenriksenLLVMValueRef LLVMGetNamedGlobal(LLVMModuleRef M, const char *Name) { 11126d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen return wrap(unwrap(M)->getNamedGlobal(Name)); 11136d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen} 11146d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen 111534000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetFirstGlobal(LLVMModuleRef M) { 111634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 111734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = Mod->global_begin(); 111834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->global_end()) 111934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 112034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 112134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 112234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 112334000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetLastGlobal(LLVMModuleRef M) { 112434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 112534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = Mod->global_end(); 112634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->global_begin()) 112734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 112834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 112934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 113034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 113134000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetNextGlobal(LLVMValueRef GlobalVar) { 113234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen GlobalVariable *GV = unwrap<GlobalVariable>(GlobalVar); 113334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = GV; 113434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == GV->getParent()->global_end()) 113534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 113634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 113734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 113834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 113934000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetPreviousGlobal(LLVMValueRef GlobalVar) { 114034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen GlobalVariable *GV = unwrap<GlobalVariable>(GlobalVar); 114134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = GV; 11424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == GV->getParent()->global_begin()) 114334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 114434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 114534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 114634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 11478b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMDeleteGlobal(LLVMValueRef GlobalVar) { 11488b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalVariable>(GlobalVar)->eraseFromParent(); 11498b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11508b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11518b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMValueRef LLVMGetInitializer(LLVMValueRef GlobalVar) { 1152885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner GlobalVariable* GV = unwrap<GlobalVariable>(GlobalVar); 1153885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner if ( !GV->hasInitializer() ) 1154885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return 0; 1155885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return wrap(GV->getInitializer()); 11568b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11578b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11588b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal) { 11598b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalVariable>(GlobalVar) 11608b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen ->setInitializer(unwrap<Constant>(ConstantVal)); 11618b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11628b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1163d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsThreadLocal(LLVMValueRef GlobalVar) { 11648b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalVariable>(GlobalVar)->isThreadLocal(); 11658b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11668b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1167d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattnervoid LLVMSetThreadLocal(LLVMValueRef GlobalVar, LLVMBool IsThreadLocal) { 11688b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalVariable>(GlobalVar)->setThreadLocal(IsThreadLocal != 0); 11698b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11708b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1171d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsGlobalConstant(LLVMValueRef GlobalVar) { 1172c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen return unwrap<GlobalVariable>(GlobalVar)->isConstant(); 1173c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen} 1174c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen 1175d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattnervoid LLVMSetGlobalConstant(LLVMValueRef GlobalVar, LLVMBool IsConstant) { 1176c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen unwrap<GlobalVariable>(GlobalVar)->setConstant(IsConstant != 0); 1177c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen} 1178c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen 1179851ba39dab544ad986f150aec9573add9d978397Chris Lattner/*--.. Operations on aliases ......................................--*/ 1180851ba39dab544ad986f150aec9573add9d978397Chris Lattner 1181851ba39dab544ad986f150aec9573add9d978397Chris LattnerLLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, 1182851ba39dab544ad986f150aec9573add9d978397Chris Lattner const char *Name) { 1183851ba39dab544ad986f150aec9573add9d978397Chris Lattner return wrap(new GlobalAlias(unwrap(Ty), GlobalValue::ExternalLinkage, Name, 1184851ba39dab544ad986f150aec9573add9d978397Chris Lattner unwrap<Constant>(Aliasee), unwrap (M))); 1185851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 1186851ba39dab544ad986f150aec9573add9d978397Chris Lattner 118746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Operations on functions .............................................--*/ 118846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 118946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name, 119046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef FunctionTy) { 1191051a950000e21935165db56695e35bade668193bGabor Greif return wrap(Function::Create(unwrap<FunctionType>(FunctionTy), 1192051a950000e21935165db56695e35bade668193bGabor Greif GlobalValue::ExternalLinkage, Name, unwrap(M))); 119346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 119446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 11956d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon HenriksenLLVMValueRef LLVMGetNamedFunction(LLVMModuleRef M, const char *Name) { 11966d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen return wrap(unwrap(M)->getFunction(Name)); 11976d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen} 11986d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen 119934000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetFirstFunction(LLVMModuleRef M) { 120034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 120134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Mod->begin(); 120234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->end()) 120334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 120434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 120534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 120634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 120734000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetLastFunction(LLVMModuleRef M) { 120834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 120934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Mod->end(); 121034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->begin()) 121134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 121234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 121334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 121434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 121534000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetNextFunction(LLVMValueRef Fn) { 121634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 121734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Func; 121834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == Func->getParent()->end()) 121934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 122034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 122134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 122234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 122334000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetPreviousFunction(LLVMValueRef Fn) { 122434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 122534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Func; 12264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == Func->getParent()->begin()) 122734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 122834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 122934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 123034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 123146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMDeleteFunction(LLVMValueRef Fn) { 123246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap<Function>(Fn)->eraseFromParent(); 123346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 123446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 123546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetIntrinsicID(LLVMValueRef Fn) { 123646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen if (Function *F = dyn_cast<Function>(unwrap(Fn))) 123746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return F->getIntrinsicID(); 123846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return 0; 123946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 124046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 124146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetFunctionCallConv(LLVMValueRef Fn) { 124246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return unwrap<Function>(Fn)->getCallingConv(); 124346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 124446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 124546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMSetFunctionCallConv(LLVMValueRef Fn, unsigned CC) { 124665c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel return unwrap<Function>(Fn)->setCallingConv( 124765c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel static_cast<CallingConv::ID>(CC)); 124846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 124946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 12505eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenconst char *LLVMGetGC(LLVMValueRef Fn) { 125180a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen Function *F = unwrap<Function>(Fn); 12525eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen return F->hasGC()? F->getGC() : 0; 125380a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen} 125480a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 12555eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenvoid LLVMSetGC(LLVMValueRef Fn, const char *GC) { 125680a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen Function *F = unwrap<Function>(Fn); 12575eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen if (GC) 12585eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen F->setGC(GC); 125980a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen else 12605eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen F->clearGC(); 126180a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen} 126280a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 1263e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsvoid LLVMAddFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA) { 1264e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Function *Func = unwrap<Function>(Fn); 1265e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands const AttrListPtr PAL = Func->getAttributes(); 1266f1ac0fd347823c5ab54577702f8eb062bf4ca70bKenneth Uildriks const AttrListPtr PALnew = PAL.addAttr(~0U, PA); 1267e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Func->setAttributes(PALnew); 1268e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands} 1269e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1270e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsvoid LLVMRemoveFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA) { 1271e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Function *Func = unwrap<Function>(Fn); 1272e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands const AttrListPtr PAL = Func->getAttributes(); 1273f1ac0fd347823c5ab54577702f8eb062bf4ca70bKenneth Uildriks const AttrListPtr PALnew = PAL.removeAttr(~0U, PA); 1274e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Func->setAttributes(PALnew); 1275e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands} 1276e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1277885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMAttribute LLVMGetFunctionAttr(LLVMValueRef Fn) { 1278885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Function *Func = unwrap<Function>(Fn); 1279885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner const AttrListPtr PAL = Func->getAttributes(); 1280885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Attributes attr = PAL.getFnAttributes(); 1281885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return (LLVMAttribute)attr; 1282885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 1283885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 1284dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen/*--.. Operations on parameters ............................................--*/ 1285dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1286dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenunsigned LLVMCountParams(LLVMValueRef FnRef) { 1287dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen // This function is strictly redundant to 1288dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen // LLVMCountParamTypes(LLVMGetElementType(LLVMTypeOf(FnRef))) 12894d515d0b09d43af59cd040bfb8bf1b7a2b992980Dan Gohman return unwrap<Function>(FnRef)->arg_size(); 1290dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1291dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1292dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenvoid LLVMGetParams(LLVMValueRef FnRef, LLVMValueRef *ParamRefs) { 1293dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen Function *Fn = unwrap<Function>(FnRef); 1294dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen for (Function::arg_iterator I = Fn->arg_begin(), 1295dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen E = Fn->arg_end(); I != E; I++) 1296dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen *ParamRefs++ = wrap(I); 1297dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1298dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1299dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMValueRef LLVMGetParam(LLVMValueRef FnRef, unsigned index) { 1300dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen Function::arg_iterator AI = unwrap<Function>(FnRef)->arg_begin(); 1301dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen while (index --> 0) 1302dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen AI++; 1303dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(AI); 1304dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1305dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1306dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMValueRef LLVMGetParamParent(LLVMValueRef V) { 1307dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap<Argument>(V)->getParent()); 1308dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1309dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 13104733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetFirstParam(LLVMValueRef Fn) { 13114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function *Func = unwrap<Function>(Fn); 13124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = Func->arg_begin(); 13134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == Func->arg_end()) 13144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 13154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(I); 13164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 13174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13184733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetLastParam(LLVMValueRef Fn) { 13194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function *Func = unwrap<Function>(Fn); 13204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = Func->arg_end(); 13214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == Func->arg_begin()) 13224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 13234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(--I); 13244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 13254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13264733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetNextParam(LLVMValueRef Arg) { 13274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Argument *A = unwrap<Argument>(Arg); 13284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = A; 13294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (++I == A->getParent()->arg_end()) 13304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 13314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(I); 13324733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 13334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13344733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetPreviousParam(LLVMValueRef Arg) { 13354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Argument *A = unwrap<Argument>(Arg); 13364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = A; 13374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == A->getParent()->arg_begin()) 13384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 13394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(--I); 13404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 13414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13420598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMAddAttribute(LLVMValueRef Arg, LLVMAttribute PA) { 1343e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen unwrap<Argument>(Arg)->addAttr(PA); 1344e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1345e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 13460598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMRemoveAttribute(LLVMValueRef Arg, LLVMAttribute PA) { 1347e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen unwrap<Argument>(Arg)->removeAttr(PA); 1348e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1349e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 1350885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMAttribute LLVMGetAttribute(LLVMValueRef Arg) { 1351885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Argument *A = unwrap<Argument>(Arg); 1352885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Attributes attr = A->getParent()->getAttributes().getParamAttributes( 1353885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner A->getArgNo()+1); 1354885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return (LLVMAttribute)attr; 1355885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 1356885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 1357885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 1358e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksenvoid LLVMSetParamAlignment(LLVMValueRef Arg, unsigned align) { 1359e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen unwrap<Argument>(Arg)->addAttr( 13600598866c052147c31b808391f58434ce3dbfb838Devang Patel Attribute::constructAlignmentFromInt(align)); 1361e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1362e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 136346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Operations on basic blocks ..........................................--*/ 136446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1365dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMValueRef LLVMBasicBlockAsValue(LLVMBasicBlockRef BB) { 1366dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(static_cast<Value*>(unwrap(BB))); 136746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 136846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1369d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMValueIsBasicBlock(LLVMValueRef Val) { 137046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return isa<BasicBlock>(unwrap(Val)); 137146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 137246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 137346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMBasicBlockRef LLVMValueAsBasicBlock(LLVMValueRef Val) { 137446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap<BasicBlock>(Val)); 137546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 137646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 13774733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetBasicBlockParent(LLVMBasicBlockRef BB) { 13784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(unwrap(BB)->getParent()); 1379dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1380dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 138146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMCountBasicBlocks(LLVMValueRef FnRef) { 13824d515d0b09d43af59cd040bfb8bf1b7a2b992980Dan Gohman return unwrap<Function>(FnRef)->size(); 138346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 138446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 138546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMGetBasicBlocks(LLVMValueRef FnRef, LLVMBasicBlockRef *BasicBlocksRefs){ 138646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Function *Fn = unwrap<Function>(FnRef); 138746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen for (Function::iterator I = Fn->begin(), E = Fn->end(); I != E; I++) 138846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen *BasicBlocksRefs++ = wrap(I); 138946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 139046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 139146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMBasicBlockRef LLVMGetEntryBasicBlock(LLVMValueRef Fn) { 139246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(&unwrap<Function>(Fn)->getEntryBlock()); 139346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 139446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 139534000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetFirstBasicBlock(LLVMValueRef Fn) { 139634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 139734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Func->begin(); 139834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Func->end()) 139934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 140034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 140134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 140234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 140334000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetLastBasicBlock(LLVMValueRef Fn) { 140434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 140534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Func->end(); 140634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Func->begin()) 140734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 140834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 140934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 141034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 141134000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetNextBasicBlock(LLVMBasicBlockRef BB) { 141234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 141334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Block; 141434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == Block->getParent()->end()) 141534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 141634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 141734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 141834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 141934000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetPreviousBasicBlock(LLVMBasicBlockRef BB) { 142034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 142134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Block; 142234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Block->getParent()->begin()) 142334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 142434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 142534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 142634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 142722c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBasicBlockRef LLVMAppendBasicBlockInContext(LLVMContextRef C, 142822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar LLVMValueRef FnRef, 142922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar const char *Name) { 143022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(BasicBlock::Create(*unwrap(C), Name, unwrap<Function>(FnRef))); 143122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 143222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 143346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMBasicBlockRef LLVMAppendBasicBlock(LLVMValueRef FnRef, const char *Name) { 143422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMAppendBasicBlockInContext(LLVMGetGlobalContext(), FnRef, Name); 143522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 143622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 143722c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBasicBlockRef LLVMInsertBasicBlockInContext(LLVMContextRef C, 143822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar LLVMBasicBlockRef BBRef, 143922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar const char *Name) { 144022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar BasicBlock *BB = unwrap(BBRef); 144122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(BasicBlock::Create(*unwrap(C), Name, BB->getParent(), BB)); 144246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 144346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 144422c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBasicBlockRef LLVMInsertBasicBlock(LLVMBasicBlockRef BBRef, 144546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 144622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInsertBasicBlockInContext(LLVMGetGlobalContext(), BBRef, Name); 144746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 144846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 144946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMDeleteBasicBlock(LLVMBasicBlockRef BBRef) { 145046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(BBRef)->eraseFromParent(); 145146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 145246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1453dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen/*--.. Operations on instructions ..........................................--*/ 1454dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1455dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMBasicBlockRef LLVMGetInstructionParent(LLVMValueRef Inst) { 1456dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap<Instruction>(Inst)->getParent()); 1457dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1458dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 145934000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetFirstInstruction(LLVMBasicBlockRef BB) { 146034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 146134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Block->begin(); 146234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Block->end()) 146334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 146434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 146534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 146634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 146734000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetLastInstruction(LLVMBasicBlockRef BB) { 146834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 146934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Block->end(); 147034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Block->begin()) 147134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 147234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 147334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 147434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 147534000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetNextInstruction(LLVMValueRef Inst) { 147634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Instruction *Instr = unwrap<Instruction>(Inst); 147734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Instr; 147834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == Instr->getParent()->end()) 147934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 148034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 148134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 148234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 148334000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetPreviousInstruction(LLVMValueRef Inst) { 148434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Instruction *Instr = unwrap<Instruction>(Inst); 148534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Instr; 148634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Instr->getParent()->begin()) 148734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 148834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 148934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 149034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 149146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Call and invoke instructions ........................................--*/ 149246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 149346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetInstructionCallConv(LLVMValueRef Instr) { 149446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Value *V = unwrap(Instr); 149546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen if (CallInst *CI = dyn_cast<CallInst>(V)) 149646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return CI->getCallingConv(); 149746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen else if (InvokeInst *II = dyn_cast<InvokeInst>(V)) 149846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return II->getCallingConv(); 1499c23197a26f34f559ea9797de51e187087c039c42Torok Edwin llvm_unreachable("LLVMGetInstructionCallConv applies only to call and invoke!"); 150046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return 0; 150146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 150246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 150346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMSetInstructionCallConv(LLVMValueRef Instr, unsigned CC) { 150446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Value *V = unwrap(Instr); 150546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen if (CallInst *CI = dyn_cast<CallInst>(V)) 150665c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel return CI->setCallingConv(static_cast<CallingConv::ID>(CC)); 150746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen else if (InvokeInst *II = dyn_cast<InvokeInst>(V)) 150865c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel return II->setCallingConv(static_cast<CallingConv::ID>(CC)); 1509c23197a26f34f559ea9797de51e187087c039c42Torok Edwin llvm_unreachable("LLVMSetInstructionCallConv applies only to call and invoke!"); 151046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 151146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 15120598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMAddInstrAttribute(LLVMValueRef Instr, unsigned index, 15130598866c052147c31b808391f58434ce3dbfb838Devang Patel LLVMAttribute PA) { 1514e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen CallSite Call = CallSite(unwrap<Instruction>(Instr)); 15150598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.setAttributes( 15160598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.getAttributes().addAttr(index, PA)); 1517e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1518e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 15190598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMRemoveInstrAttribute(LLVMValueRef Instr, unsigned index, 15200598866c052147c31b808391f58434ce3dbfb838Devang Patel LLVMAttribute PA) { 1521e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen CallSite Call = CallSite(unwrap<Instruction>(Instr)); 15220598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.setAttributes( 15230598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.getAttributes().removeAttr(index, PA)); 1524e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1525e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 1526e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksenvoid LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index, 1527e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen unsigned align) { 1528e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen CallSite Call = CallSite(unwrap<Instruction>(Instr)); 15290598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.setAttributes( 15300598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.getAttributes().addAttr(index, 15310598866c052147c31b808391f58434ce3dbfb838Devang Patel Attribute::constructAlignmentFromInt(align))); 1532e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1533e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 153407cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen/*--.. Operations on call instructions (only) ..............................--*/ 153507cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 1536d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsTailCall(LLVMValueRef Call) { 153707cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen return unwrap<CallInst>(Call)->isTailCall(); 153807cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen} 153907cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 1540d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattnervoid LLVMSetTailCall(LLVMValueRef Call, LLVMBool isTailCall) { 154107cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen unwrap<CallInst>(Call)->setTailCall(isTailCall); 154207cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen} 154307cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 15442618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen/*--.. Operations on phi nodes .............................................--*/ 15452618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 15462618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenvoid LLVMAddIncoming(LLVMValueRef PhiNode, LLVMValueRef *IncomingValues, 15472618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen LLVMBasicBlockRef *IncomingBlocks, unsigned Count) { 15482618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen PHINode *PhiVal = unwrap<PHINode>(PhiNode); 15492618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen for (unsigned I = 0; I != Count; ++I) 15502618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen PhiVal->addIncoming(unwrap(IncomingValues[I]), unwrap(IncomingBlocks[I])); 15512618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 15522618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 15532618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenunsigned LLVMCountIncoming(LLVMValueRef PhiNode) { 15542618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen return unwrap<PHINode>(PhiNode)->getNumIncomingValues(); 15552618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 15562618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 15572618a6c1122d5d2007787fb56156be44b21ab32aGordon HenriksenLLVMValueRef LLVMGetIncomingValue(LLVMValueRef PhiNode, unsigned Index) { 15582618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen return wrap(unwrap<PHINode>(PhiNode)->getIncomingValue(Index)); 15592618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 15602618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 15612618a6c1122d5d2007787fb56156be44b21ab32aGordon HenriksenLLVMBasicBlockRef LLVMGetIncomingBlock(LLVMValueRef PhiNode, unsigned Index) { 15622618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen return wrap(unwrap<PHINode>(PhiNode)->getIncomingBlock(Index)); 15632618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 15642618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 156546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 156646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*===-- Instruction builders ----------------------------------------------===*/ 156746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 156822c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBuilderRef LLVMCreateBuilderInContext(LLVMContextRef C) { 156922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(new IRBuilder<>(*unwrap(C))); 157022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 157122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 157216c1f44d91211a225497062ea508d58fd25085a9Gordon HenriksenLLVMBuilderRef LLVMCreateBuilder(void) { 157322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMCreateBuilderInContext(LLVMGetGlobalContext()); 157446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 157546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 157634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksenvoid LLVMPositionBuilder(LLVMBuilderRef Builder, LLVMBasicBlockRef Block, 157734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen LLVMValueRef Instr) { 157834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *BB = unwrap(Block); 157934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Instruction *I = Instr? unwrap<Instruction>(Instr) : (Instruction*) BB->end(); 158034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen unwrap(Builder)->SetInsertPoint(BB, I); 158134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 158234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 158346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMPositionBuilderBefore(LLVMBuilderRef Builder, LLVMValueRef Instr) { 158446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Instruction *I = unwrap<Instruction>(Instr); 158546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Builder)->SetInsertPoint(I->getParent(), I); 158646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 158746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 158846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMPositionBuilderAtEnd(LLVMBuilderRef Builder, LLVMBasicBlockRef Block) { 158946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen BasicBlock *BB = unwrap(Block); 159046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Builder)->SetInsertPoint(BB); 159146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 159246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1593dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMBasicBlockRef LLVMGetInsertBlock(LLVMBuilderRef Builder) { 1594dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap(Builder)->GetInsertBlock()); 1595dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1596dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1597851ba39dab544ad986f150aec9573add9d978397Chris Lattnervoid LLVMClearInsertionPosition(LLVMBuilderRef Builder) { 1598851ba39dab544ad986f150aec9573add9d978397Chris Lattner unwrap(Builder)->ClearInsertionPoint (); 1599851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 1600851ba39dab544ad986f150aec9573add9d978397Chris Lattner 1601851ba39dab544ad986f150aec9573add9d978397Chris Lattnervoid LLVMInsertIntoBuilder(LLVMBuilderRef Builder, LLVMValueRef Instr) { 1602851ba39dab544ad986f150aec9573add9d978397Chris Lattner unwrap(Builder)->Insert(unwrap<Instruction>(Instr)); 1603851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 1604851ba39dab544ad986f150aec9573add9d978397Chris Lattner 16055c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaarvoid LLVMInsertIntoBuilderWithName(LLVMBuilderRef Builder, LLVMValueRef Instr, 16065c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar const char *Name) { 16075c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar unwrap(Builder)->Insert(unwrap<Instruction>(Instr), Name); 16085c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar} 16095c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar 161046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMDisposeBuilder(LLVMBuilderRef Builder) { 161146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen delete unwrap(Builder); 161246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 161346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 161446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Instruction builders ................................................--*/ 161546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 161646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildRetVoid(LLVMBuilderRef B) { 161746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateRetVoid()); 161846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 161946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 162046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildRet(LLVMBuilderRef B, LLVMValueRef V) { 162146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateRet(unwrap(V))); 162246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 162346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1624f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildAggregateRet(LLVMBuilderRef B, LLVMValueRef *RetVals, 1625f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar unsigned N) { 1626f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateAggregateRet(unwrap(RetVals), N)); 1627f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1628f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 162946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildBr(LLVMBuilderRef B, LLVMBasicBlockRef Dest) { 163046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateBr(unwrap(Dest))); 163146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 163246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 163346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildCondBr(LLVMBuilderRef B, LLVMValueRef If, 163446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMBasicBlockRef Then, LLVMBasicBlockRef Else) { 163546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateCondBr(unwrap(If), unwrap(Then), unwrap(Else))); 163646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 163746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 163846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSwitch(LLVMBuilderRef B, LLVMValueRef V, 163946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMBasicBlockRef Else, unsigned NumCases) { 164046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSwitch(unwrap(V), unwrap(Else), NumCases)); 164146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 164246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 164346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildInvoke(LLVMBuilderRef B, LLVMValueRef Fn, 164446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef *Args, unsigned NumArgs, 164546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, 164646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 164746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateInvoke(unwrap(Fn), unwrap(Then), unwrap(Catch), 164846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Args), unwrap(Args) + NumArgs, 164946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Name)); 165046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 165146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 165246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUnwind(LLVMBuilderRef B) { 165346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUnwind()); 165446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 165546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 165646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUnreachable(LLVMBuilderRef B) { 165746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUnreachable()); 165846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 165946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1660ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksenvoid LLVMAddCase(LLVMValueRef Switch, LLVMValueRef OnVal, 1661ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen LLVMBasicBlockRef Dest) { 1662ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen unwrap<SwitchInst>(Switch)->addCase(unwrap<ConstantInt>(OnVal), unwrap(Dest)); 1663ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen} 1664ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen 166546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Arithmetic ..........................................................--*/ 166646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 166746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 166846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 166946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAdd(unwrap(LHS), unwrap(RHS), Name)); 167046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 167146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1672f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildNSWAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1673f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1674f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateNSWAdd(unwrap(LHS), unwrap(RHS), Name)); 1675f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1676f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 167719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNUWAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 167819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 167919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNUWAdd(unwrap(LHS), unwrap(RHS), Name)); 168019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 168119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1682f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1683f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1684f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFAdd(unwrap(LHS), unwrap(RHS), Name)); 1685f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1686f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 168746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSub(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 168846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 168946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSub(unwrap(LHS), unwrap(RHS), Name)); 169046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 169146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 169219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNSWSub(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 169319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 169419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNSWSub(unwrap(LHS), unwrap(RHS), Name)); 169519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 169619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 169719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNUWSub(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 169819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 169919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNUWSub(unwrap(LHS), unwrap(RHS), Name)); 170019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 170119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1702f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFSub(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1703f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1704f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFSub(unwrap(LHS), unwrap(RHS), Name)); 1705f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1706f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 170746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildMul(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 170846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 170946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateMul(unwrap(LHS), unwrap(RHS), Name)); 171046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 171146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 171219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNSWMul(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 171319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 171419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNSWMul(unwrap(LHS), unwrap(RHS), Name)); 171519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 171619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 171719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNUWMul(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 171819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 171919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNUWMul(unwrap(LHS), unwrap(RHS), Name)); 172019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 172119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1722f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFMul(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1723f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1724f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFMul(unwrap(LHS), unwrap(RHS), Name)); 1725f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1726f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 172746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUDiv(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 172846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 172946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUDiv(unwrap(LHS), unwrap(RHS), Name)); 173046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 173146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 173246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSDiv(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 173346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 173446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSDiv(unwrap(LHS), unwrap(RHS), Name)); 173546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 173646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1737f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildExactSDiv(LLVMBuilderRef B, LLVMValueRef LHS, 1738f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMValueRef RHS, const char *Name) { 1739f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateExactSDiv(unwrap(LHS), unwrap(RHS), Name)); 1740f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1741f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 174246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFDiv(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 174346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 174446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFDiv(unwrap(LHS), unwrap(RHS), Name)); 174546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 174646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 174746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildURem(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 174846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 174946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateURem(unwrap(LHS), unwrap(RHS), Name)); 175046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 175146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 175246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSRem(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 175346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 175446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSRem(unwrap(LHS), unwrap(RHS), Name)); 175546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 175646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 175746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFRem(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 175846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 175946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFRem(unwrap(LHS), unwrap(RHS), Name)); 176046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 176146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 176246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildShl(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 176346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 176446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateShl(unwrap(LHS), unwrap(RHS), Name)); 176546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 176646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 176746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildLShr(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 176846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 176946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateLShr(unwrap(LHS), unwrap(RHS), Name)); 177046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 177146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 177246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAShr(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 177346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 177446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAShr(unwrap(LHS), unwrap(RHS), Name)); 177546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 177646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 177746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAnd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 177846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 177946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAnd(unwrap(LHS), unwrap(RHS), Name)); 178046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 178146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 178246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildOr(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 178346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 178446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateOr(unwrap(LHS), unwrap(RHS), Name)); 178546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 178646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 178746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildXor(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 178846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 178946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateXor(unwrap(LHS), unwrap(RHS), Name)); 179046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 179146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1792abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick TryzelaarLLVMValueRef LLVMBuildBinOp(LLVMBuilderRef B, LLVMOpcode Op, 1793abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar LLVMValueRef LHS, LLVMValueRef RHS, 1794abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar const char *Name) { 1795abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar return wrap(unwrap(B)->CreateBinOp(Instruction::BinaryOps(Op), unwrap(LHS), 1796abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar unwrap(RHS), Name)); 1797abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar} 1798abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar 179946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildNeg(LLVMBuilderRef B, LLVMValueRef V, const char *Name) { 180046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateNeg(unwrap(V), Name)); 180146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 180246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 180319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNSWNeg(LLVMBuilderRef B, LLVMValueRef V, 180419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 180519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNSWNeg(unwrap(V), Name)); 180619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 180719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 180819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNUWNeg(LLVMBuilderRef B, LLVMValueRef V, 180919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 181019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNUWNeg(unwrap(V), Name)); 181119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 181219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1813d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan GohmanLLVMValueRef LLVMBuildFNeg(LLVMBuilderRef B, LLVMValueRef V, const char *Name) { 1814d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan Gohman return wrap(unwrap(B)->CreateFNeg(unwrap(V), Name)); 1815d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan Gohman} 1816d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan Gohman 181746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildNot(LLVMBuilderRef B, LLVMValueRef V, const char *Name) { 181846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateNot(unwrap(V), Name)); 181946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 182046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 182146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Memory ..............................................................--*/ 182246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 182346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildMalloc(LLVMBuilderRef B, LLVMTypeRef Ty, 182446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 18259d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez const Type* ITy = Type::getInt32Ty(unwrap(B)->GetInsertBlock()->getContext()); 18269d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Constant* AllocSize = ConstantExpr::getSizeOf(unwrap(Ty)); 18279d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez AllocSize = ConstantExpr::getTruncOrBitCast(AllocSize, ITy); 18289d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Instruction* Malloc = CallInst::CreateMalloc(unwrap(B)->GetInsertBlock(), 18299d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez ITy, unwrap(Ty), AllocSize, 18309d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez 0, 0, ""); 18319d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez return wrap(unwrap(B)->Insert(Malloc, Twine(Name))); 183246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 183346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 183446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef B, LLVMTypeRef Ty, 183546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Val, const char *Name) { 18369d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez const Type* ITy = Type::getInt32Ty(unwrap(B)->GetInsertBlock()->getContext()); 18379d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Constant* AllocSize = ConstantExpr::getSizeOf(unwrap(Ty)); 18389d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez AllocSize = ConstantExpr::getTruncOrBitCast(AllocSize, ITy); 18399d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Instruction* Malloc = CallInst::CreateMalloc(unwrap(B)->GetInsertBlock(), 18409d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez ITy, unwrap(Ty), AllocSize, 18419d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez unwrap(Val), 0, ""); 18429d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez return wrap(unwrap(B)->Insert(Malloc, Twine(Name))); 184346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 184446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 184546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAlloca(LLVMBuilderRef B, LLVMTypeRef Ty, 184646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 184746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAlloca(unwrap(Ty), 0, Name)); 184846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 184946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 185046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef B, LLVMTypeRef Ty, 185146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Val, const char *Name) { 185246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAlloca(unwrap(Ty), unwrap(Val), Name)); 185346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 185446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 185546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFree(LLVMBuilderRef B, LLVMValueRef PointerVal) { 1856046e78ce55a7c3d82b7b6758d2d77f2d99f970bfVictor Hernandez return wrap(unwrap(B)->Insert( 1857046e78ce55a7c3d82b7b6758d2d77f2d99f970bfVictor Hernandez CallInst::CreateFree(unwrap(PointerVal), unwrap(B)->GetInsertBlock()))); 185846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 185946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 186046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 186146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildLoad(LLVMBuilderRef B, LLVMValueRef PointerVal, 186246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 186346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateLoad(unwrap(PointerVal), Name)); 186446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 186546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 186646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildStore(LLVMBuilderRef B, LLVMValueRef Val, 186746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef PointerVal) { 186846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateStore(unwrap(Val), unwrap(PointerVal))); 186946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 187046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 187146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildGEP(LLVMBuilderRef B, LLVMValueRef Pointer, 187246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef *Indices, unsigned NumIndices, 187346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 187446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateGEP(unwrap(Pointer), unwrap(Indices), 187546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Indices) + NumIndices, Name)); 187646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 187746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1878f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildInBoundsGEP(LLVMBuilderRef B, LLVMValueRef Pointer, 1879f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMValueRef *Indices, unsigned NumIndices, 1880f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1881f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateInBoundsGEP(unwrap(Pointer), unwrap(Indices), 1882f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar unwrap(Indices) + NumIndices, Name)); 1883f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1884f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1885f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer, 1886f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar unsigned Idx, const char *Name) { 1887f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateStructGEP(unwrap(Pointer), Idx, Name)); 1888f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1889f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1890f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const char *Str, 1891f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1892f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateGlobalString(Str, Name)); 1893f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1894f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1895f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildGlobalStringPtr(LLVMBuilderRef B, const char *Str, 1896f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1897f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateGlobalStringPtr(Str, Name)); 1898f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1899f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 190046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Casts ...............................................................--*/ 190146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 190246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildTrunc(LLVMBuilderRef B, LLVMValueRef Val, 190346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 190446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateTrunc(unwrap(Val), unwrap(DestTy), Name)); 190546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 190646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 190746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildZExt(LLVMBuilderRef B, LLVMValueRef Val, 190846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 190946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateZExt(unwrap(Val), unwrap(DestTy), Name)); 191046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 191146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 191246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSExt(LLVMBuilderRef B, LLVMValueRef Val, 191346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 191446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSExt(unwrap(Val), unwrap(DestTy), Name)); 191546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 191646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 191746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPToUI(LLVMBuilderRef B, LLVMValueRef Val, 191846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 191946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPToUI(unwrap(Val), unwrap(DestTy), Name)); 192046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 192146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 192246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPToSI(LLVMBuilderRef B, LLVMValueRef Val, 192346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 192446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPToSI(unwrap(Val), unwrap(DestTy), Name)); 192546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 192646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 192746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUIToFP(LLVMBuilderRef B, LLVMValueRef Val, 192846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 192946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUIToFP(unwrap(Val), unwrap(DestTy), Name)); 193046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 193146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 193246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSIToFP(LLVMBuilderRef B, LLVMValueRef Val, 193346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 193446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSIToFP(unwrap(Val), unwrap(DestTy), Name)); 193546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 193646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 193746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPTrunc(LLVMBuilderRef B, LLVMValueRef Val, 193846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 193946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPTrunc(unwrap(Val), unwrap(DestTy), Name)); 194046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 194146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 194246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPExt(LLVMBuilderRef B, LLVMValueRef Val, 194346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 194446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPExt(unwrap(Val), unwrap(DestTy), Name)); 194546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 194646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 194746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildPtrToInt(LLVMBuilderRef B, LLVMValueRef Val, 194846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 194946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreatePtrToInt(unwrap(Val), unwrap(DestTy), Name)); 195046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 195146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 195246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildIntToPtr(LLVMBuilderRef B, LLVMValueRef Val, 195346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 195446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateIntToPtr(unwrap(Val), unwrap(DestTy), Name)); 195546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 195646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 195746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildBitCast(LLVMBuilderRef B, LLVMValueRef Val, 195846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 195946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateBitCast(unwrap(Val), unwrap(DestTy), Name)); 196046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 196146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1962f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildZExtOrBitCast(LLVMBuilderRef B, LLVMValueRef Val, 1963f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1964f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateZExtOrBitCast(unwrap(Val), unwrap(DestTy), 1965f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar Name)); 1966f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1967f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1968f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildSExtOrBitCast(LLVMBuilderRef B, LLVMValueRef Val, 1969f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1970f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateSExtOrBitCast(unwrap(Val), unwrap(DestTy), 1971f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar Name)); 1972f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1973f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1974f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildTruncOrBitCast(LLVMBuilderRef B, LLVMValueRef Val, 1975f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1976f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateTruncOrBitCast(unwrap(Val), unwrap(DestTy), 1977f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar Name)); 1978f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1979f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1980abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick TryzelaarLLVMValueRef LLVMBuildCast(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val, 1981abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1982abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar return wrap(unwrap(B)->CreateCast(Instruction::CastOps(Op), unwrap(Val), 1983abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar unwrap(DestTy), Name)); 1984abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar} 1985abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar 1986f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef B, LLVMValueRef Val, 1987f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1988f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreatePointerCast(unwrap(Val), unwrap(DestTy), Name)); 1989f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1990f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1991f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildIntCast(LLVMBuilderRef B, LLVMValueRef Val, 1992e8e01b600cd377504e5288a31152b1db4b8477b1Duncan Sands LLVMTypeRef DestTy, const char *Name) { 1993e8e01b600cd377504e5288a31152b1db4b8477b1Duncan Sands return wrap(unwrap(B)->CreateIntCast(unwrap(Val), unwrap(DestTy), 1994e8e01b600cd377504e5288a31152b1db4b8477b1Duncan Sands /*isSigned*/true, Name)); 1995f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1996f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1997f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFPCast(LLVMBuilderRef B, LLVMValueRef Val, 1998f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1999f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFPCast(unwrap(Val), unwrap(DestTy), Name)); 2000f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2001f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 200246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Comparisons .........................................................--*/ 200346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 200446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildICmp(LLVMBuilderRef B, LLVMIntPredicate Op, 200546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef LHS, LLVMValueRef RHS, 200646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 200746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateICmp(static_cast<ICmpInst::Predicate>(Op), 200846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(LHS), unwrap(RHS), Name)); 200946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 201046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 201146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFCmp(LLVMBuilderRef B, LLVMRealPredicate Op, 201246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef LHS, LLVMValueRef RHS, 201346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 201446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFCmp(static_cast<FCmpInst::Predicate>(Op), 201546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(LHS), unwrap(RHS), Name)); 201646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 201746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 201846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Miscellaneous instructions ..........................................--*/ 201946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 202046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildPhi(LLVMBuilderRef B, LLVMTypeRef Ty, const char *Name) { 202146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreatePHI(unwrap(Ty), Name)); 202246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 202346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 202446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, 202546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef *Args, unsigned NumArgs, 202646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 202746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateCall(unwrap(Fn), unwrap(Args), 202846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Args) + NumArgs, Name)); 202946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 203046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 203146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSelect(LLVMBuilderRef B, LLVMValueRef If, 203246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Then, LLVMValueRef Else, 203346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 203446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSelect(unwrap(If), unwrap(Then), unwrap(Else), 203546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Name)); 203646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 203746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 203846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildVAArg(LLVMBuilderRef B, LLVMValueRef List, 203946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef Ty, const char *Name) { 204046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateVAArg(unwrap(List), unwrap(Ty), Name)); 204146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 204246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 204346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildExtractElement(LLVMBuilderRef B, LLVMValueRef VecVal, 204446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Index, const char *Name) { 204546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateExtractElement(unwrap(VecVal), unwrap(Index), 204646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Name)); 204746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 204846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 204946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildInsertElement(LLVMBuilderRef B, LLVMValueRef VecVal, 205046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef EltVal, LLVMValueRef Index, 205146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 205246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateInsertElement(unwrap(VecVal), unwrap(EltVal), 205346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Index), Name)); 205446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 205546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 205646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildShuffleVector(LLVMBuilderRef B, LLVMValueRef V1, 205746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef V2, LLVMValueRef Mask, 205846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 205946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateShuffleVector(unwrap(V1), unwrap(V2), 206046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Mask), Name)); 206146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 20621ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 2063b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMBuildExtractValue(LLVMBuilderRef B, LLVMValueRef AggVal, 2064b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unsigned Index, const char *Name) { 2065b593117b44a74c72bc784080bb402576b3181d94Dan Gohman return wrap(unwrap(B)->CreateExtractValue(unwrap(AggVal), Index, Name)); 2066b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 2067b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 2068b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMBuildInsertValue(LLVMBuilderRef B, LLVMValueRef AggVal, 2069b593117b44a74c72bc784080bb402576b3181d94Dan Gohman LLVMValueRef EltVal, unsigned Index, 2070b593117b44a74c72bc784080bb402576b3181d94Dan Gohman const char *Name) { 2071b593117b44a74c72bc784080bb402576b3181d94Dan Gohman return wrap(unwrap(B)->CreateInsertValue(unwrap(AggVal), unwrap(EltVal), 2072b593117b44a74c72bc784080bb402576b3181d94Dan Gohman Index, Name)); 2073b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 2074b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 2075f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildIsNull(LLVMBuilderRef B, LLVMValueRef Val, 2076f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 2077f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateIsNull(unwrap(Val), Name)); 2078f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2079f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2080f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildIsNotNull(LLVMBuilderRef B, LLVMValueRef Val, 2081f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 2082f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateIsNotNull(unwrap(Val), Name)); 2083f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2084f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2085f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildPtrDiff(LLVMBuilderRef B, LLVMValueRef LHS, 2086f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMValueRef RHS, const char *Name) { 2087f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreatePtrDiff(unwrap(LHS), unwrap(RHS), Name)); 2088f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2089f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 20901ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 20911ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen/*===-- Module providers --------------------------------------------------===*/ 20921ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 20931ae6135fa37eb061499d079b9b33dc82dcc1283fGordon HenriksenLLVMModuleProviderRef 20941ae6135fa37eb061499d079b9b33dc82dcc1283fGordon HenriksenLLVMCreateModuleProviderForExistingModule(LLVMModuleRef M) { 2095f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin return reinterpret_cast<LLVMModuleProviderRef>(M); 20961ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen} 20971ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 20981ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksenvoid LLVMDisposeModuleProvider(LLVMModuleProviderRef MP) { 20991ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen delete unwrap(MP); 21001ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen} 21011ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 2102da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2103da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen/*===-- Memory buffers ----------------------------------------------------===*/ 2104da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2105d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateMemoryBufferWithContentsOfFile( 2106d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner const char *Path, 2107d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMMemoryBufferRef *OutMemBuf, 2108d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner char **OutMessage) { 2109d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner 2110da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen std::string Error; 2111038112a4e0a9afd656f415ab397a230ae5921627Chris Lattner if (MemoryBuffer *MB = MemoryBuffer::getFile(Path, &Error)) { 2112da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen *OutMemBuf = wrap(MB); 2113da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen return 0; 2114da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen } 2115da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2116da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen *OutMessage = strdup(Error.c_str()); 2117da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen return 1; 2118da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 2119da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2120d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateMemoryBufferWithSTDIN(LLVMMemoryBufferRef *OutMemBuf, 2121d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner char **OutMessage) { 2122d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar MemoryBuffer *MB = MemoryBuffer::getSTDIN(); 2123d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar if (!MB->getBufferSize()) { 2124d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar delete MB; 2125d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar *OutMessage = strdup("stdin is empty."); 2126d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar return 1; 2127da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen } 2128d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar 2129d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar *OutMemBuf = wrap(MB); 2130d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar return 0; 2131da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 2132da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2133da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenvoid LLVMDisposeMemoryBuffer(LLVMMemoryBufferRef MemBuf) { 2134da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen delete unwrap(MemBuf); 2135da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 2136