Core.cpp revision f1ac0fd347823c5ab54577702f8eb062bf4ca70b
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} 5708b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 571e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstVector(LLVMValueRef *ScalarConstantVals, unsigned Size) { 572af7ec975870f92245f1f1484ac80a1e2db6a0afaOwen Anderson return wrap(ConstantVector::get( 57362e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ScalarConstantVals, Size), Size)); 5748b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 5754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 5764647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen/*--.. Constant expressions ................................................--*/ 5774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 578885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMOpcode LLVMGetConstOpcode(LLVMValueRef ConstantVal) { 579885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return (LLVMOpcode)unwrap<ConstantExpr>(ConstantVal)->getOpcode(); 580885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 581885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 582ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan SandsLLVMValueRef LLVMAlignOf(LLVMTypeRef Ty) { 583baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getAlignOf(unwrap(Ty))); 584ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands} 585ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands 5864647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMSizeOf(LLVMTypeRef Ty) { 587baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSizeOf(unwrap(Ty))); 5884647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 5894647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 5904647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstNeg(LLVMValueRef ConstantVal) { 591baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getNeg( 59256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal))); 59356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 59456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 59556b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFNeg(LLVMValueRef ConstantVal) { 59656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFNeg( 59756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal))); 5984647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 5994647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstNot(LLVMValueRef ConstantVal) { 601baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getNot( 60256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal))); 6034647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6044647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6054647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 606baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getAdd( 60762e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6084647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6094647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6104647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6116e7ad958683f34bf6c014c88fef723e5a2d741beDan GohmanLLVMValueRef LLVMConstNSWAdd(LLVMValueRef LHSConstant, 6126e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman LLVMValueRef RHSConstant) { 6136e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman return wrap(ConstantExpr::getNSWAdd( 6146e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unwrap<Constant>(LHSConstant), 6156e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unwrap<Constant>(RHSConstant))); 6166e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman} 6176e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman 61856b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 61956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFAdd( 62056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(LHSConstant), 62156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(RHSConstant))); 62256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 62356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 6244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 625baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSub( 62662e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6274647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6284647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6294647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 63056b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 63156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFSub(unwrap<Constant>(LHSConstant), 63256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(RHSConstant))); 63356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 63456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 6354647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 636baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getMul( 63762e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6394647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6404647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 64156b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 64256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFMul( 64356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(LHSConstant), 64456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(RHSConstant))); 64556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 64656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 6474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstUDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 648baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getUDiv( 64962e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6514647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6524647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6534647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 654baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSDiv( 65562e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6564647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6574647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6584647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6596e7ad958683f34bf6c014c88fef723e5a2d741beDan GohmanLLVMValueRef LLVMConstExactSDiv(LLVMValueRef LHSConstant, 6606e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman LLVMValueRef RHSConstant) { 6616e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman return wrap(ConstantExpr::getExactSDiv( 6626e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unwrap<Constant>(LHSConstant), 6636e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unwrap<Constant>(RHSConstant))); 6646e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman} 6656e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman 6664647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 667baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFDiv( 66862e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6704647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6714647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6724647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstURem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 673baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getURem( 67462e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6764647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6784647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 679baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSRem( 68062e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6814647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6824647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6834647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6844647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 685baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFRem( 68662e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6884647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6894647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6904647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstAnd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 691baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getAnd( 69262e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 6944647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 6954647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6964647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstOr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 697baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getOr( 69862e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 6994647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7014647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7024647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstXor(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 703baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getXor( 70462e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7054647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7064647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7074647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7084647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstICmp(LLVMIntPredicate Predicate, 7094647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 710baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getICmp(Predicate, 7114647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(LHSConstant), 7124647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7134647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7144647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7154647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFCmp(LLVMRealPredicate Predicate, 7164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 717baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFCmp(Predicate, 7184647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(LHSConstant), 7194647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7204647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7214647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstShl(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 723baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getShl( 72462e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7254647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7264647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7274647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7284647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstLShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 729baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getLShr( 73062e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7314647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7334647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstAShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 735baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getAShr( 73662e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(LHSConstant), 7374647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7394647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7404647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstGEP(LLVMValueRef ConstantVal, 7414647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef *ConstantIndices, unsigned NumIndices) { 742baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getGetElementPtr( 74362e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 7444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ConstantIndices, 7454647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen NumIndices), 7464647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen NumIndices)); 7474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7484647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7496e7ad958683f34bf6c014c88fef723e5a2d741beDan GohmanLLVMValueRef LLVMConstInBoundsGEP(LLVMValueRef ConstantVal, 7506e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman LLVMValueRef *ConstantIndices, 7516e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unsigned NumIndices) { 7526e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman Constant* Val = unwrap<Constant>(ConstantVal); 7536e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman Constant** Idxs = unwrap<Constant>(ConstantIndices, NumIndices); 7546e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman return wrap(ConstantExpr::getInBoundsGetElementPtr(Val, Idxs, NumIndices)); 7556e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman} 7566e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman 7574647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 758baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getTrunc( 75962e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 7604647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 7614647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7624647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7634647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 764baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSExt( 76562e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 7664647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 7674647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7684647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstZExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 770baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getZExt( 77162e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 7724647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 7734647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 776baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFPTrunc( 77762e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 7784647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 7794647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7804647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7814647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 782baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFPExtend( 78362e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 7844647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 7854647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7864647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstUIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 788baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getUIToFP( 78962e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 7904647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 7914647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 794baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSIToFP(unwrap<Constant>(ConstantVal), 7954647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 7964647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7974647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7984647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPToUI(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 799baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFPToUI(unwrap<Constant>(ConstantVal), 8004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8014647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8024647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8034647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPToSI(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 804baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFPToSI( 80562e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8064647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8074647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8084647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8094647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstPtrToInt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 810baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getPtrToInt( 81162e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8124647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8134647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8144647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8154647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstIntToPtr(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 816baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getIntToPtr( 81762e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8184647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8194647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8204647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8214647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstBitCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 822baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getBitCast( 82362e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantVal), 8244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 8254647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8264647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 82756b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstZExtOrBitCast(LLVMValueRef ConstantVal, 82856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 82956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getZExtOrBitCast( 83056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 83156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 83256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 83356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 83456b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstSExtOrBitCast(LLVMValueRef ConstantVal, 83556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 83656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getSExtOrBitCast( 83756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 83856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 83956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 84056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 84156b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstTruncOrBitCast(LLVMValueRef ConstantVal, 84256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 84356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getTruncOrBitCast( 84456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 84556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 84656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 84756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 84856b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstPointerCast(LLVMValueRef ConstantVal, 84956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 85056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getPointerCast( 85156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 85256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 85356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 85456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 85556b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstIntCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType, 856d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool isSigned) { 85756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getIntegerCast( 85856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 85956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType), 86056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar isSigned)); 86156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 86256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 86356b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFPCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 86456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFPCast( 86556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(ConstantVal), 86656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 86756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 86856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 8694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSelect(LLVMValueRef ConstantCondition, 8704647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef ConstantIfTrue, 8714647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef ConstantIfFalse) { 872baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSelect( 87362e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(ConstantCondition), 8744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ConstantIfTrue), 8754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ConstantIfFalse))); 8764647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8784647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstExtractElement(LLVMValueRef VectorConstant, 8794647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef IndexConstant) { 880baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getExtractElement( 88162e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(VectorConstant), 8824647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(IndexConstant))); 8834647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8844647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8854647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstInsertElement(LLVMValueRef VectorConstant, 8864647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef ElementValueConstant, 8874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef IndexConstant) { 888baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getInsertElement( 88962e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(VectorConstant), 8904647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ElementValueConstant), 8914647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(IndexConstant))); 8924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8944647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstShuffleVector(LLVMValueRef VectorAConstant, 8954647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef VectorBConstant, 8964647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef MaskConstant) { 897baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getShuffleVector( 89862e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(VectorAConstant), 8994647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(VectorBConstant), 9004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(MaskConstant))); 9014647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9028b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 903b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMConstExtractValue(LLVMValueRef AggConstant, unsigned *IdxList, 904b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unsigned NumIdx) { 905baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getExtractValue( 90662e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(AggConstant), 907b593117b44a74c72bc784080bb402576b3181d94Dan Gohman IdxList, NumIdx)); 908b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 909b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 910b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMConstInsertValue(LLVMValueRef AggConstant, 911b593117b44a74c72bc784080bb402576b3181d94Dan Gohman LLVMValueRef ElementValueConstant, 912b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unsigned *IdxList, unsigned NumIdx) { 913baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getInsertValue( 91462e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson unwrap<Constant>(AggConstant), 915b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unwrap<Constant>(ElementValueConstant), 916b593117b44a74c72bc784080bb402576b3181d94Dan Gohman IdxList, NumIdx)); 917b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 918b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 919d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMValueRef LLVMConstInlineAsm(LLVMTypeRef Ty, const char *AsmString, 920d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner const char *Constraints, 921d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool HasSideEffects, 922d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool IsAlignStack) { 923d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner return wrap(InlineAsm::get(dyn_cast<FunctionType>(unwrap(Ty)), AsmString, 9248ba2d5befc05ca73d3bac8708819bbbe759e2cf9Dale Johannesen Constraints, HasSideEffects, IsAlignStack)); 925851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 926851ba39dab544ad986f150aec9573add9d978397Chris Lattner 9278b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on global variables, functions, and aliases (globals) ....--*/ 9288b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 929dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMModuleRef LLVMGetGlobalParent(LLVMValueRef Global) { 930dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap<GlobalValue>(Global)->getParent()); 931dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 932dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 933d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsDeclaration(LLVMValueRef Global) { 9348b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalValue>(Global)->isDeclaration(); 9358b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 9368b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 9378b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMLinkage LLVMGetLinkage(LLVMValueRef Global) { 9384aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling switch (unwrap<GlobalValue>(Global)->getLinkage()) { 9394aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling default: 9404aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling assert(false && "Unhandled Linkage Type."); 9414aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::ExternalLinkage: 9424aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMExternalLinkage; 9434aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::AvailableExternallyLinkage: 9444aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMAvailableExternallyLinkage; 9454aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::LinkOnceAnyLinkage: 9464aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMLinkOnceAnyLinkage; 9474aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::LinkOnceODRLinkage: 9484aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMLinkOnceODRLinkage; 9494aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::WeakAnyLinkage: 9504aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMWeakAnyLinkage; 9514aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::WeakODRLinkage: 9524aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMWeakODRLinkage; 9534aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::AppendingLinkage: 9544aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMAppendingLinkage; 9554aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::InternalLinkage: 9564aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMInternalLinkage; 9574aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::PrivateLinkage: 9584aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMPrivateLinkage; 9594aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::LinkerPrivateLinkage: 9604aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMLinkerPrivateLinkage; 9614aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::DLLImportLinkage: 9624aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMDLLImportLinkage; 9634aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::DLLExportLinkage: 9644aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMDLLExportLinkage; 9654aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::ExternalWeakLinkage: 9664aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMExternalWeakLinkage; 9674aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::CommonLinkage: 9684aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMCommonLinkage; 9694aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling } 9704aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling 9714aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling // Should never get here. 9724aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return static_cast<LLVMLinkage>(0); 9738b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 9748b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 9758b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetLinkage(LLVMValueRef Global, LLVMLinkage Linkage) { 9764aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GlobalValue *GV = unwrap<GlobalValue>(Global); 9774aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling 9784aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling switch (Linkage) { 9794aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling default: 9804aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling assert(false && "Unhandled Linkage Type."); 9814aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMExternalLinkage: 9824aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::ExternalLinkage); 9834aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 9844aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMAvailableExternallyLinkage: 9854aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::AvailableExternallyLinkage); 9864aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 9874aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMLinkOnceAnyLinkage: 9884aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::LinkOnceAnyLinkage); 9894aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 9904aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMLinkOnceODRLinkage: 9914aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::LinkOnceODRLinkage); 9924aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 9934aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMWeakAnyLinkage: 9944aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::WeakAnyLinkage); 9954aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 9964aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMWeakODRLinkage: 9974aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::WeakODRLinkage); 9984aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 9994aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMAppendingLinkage: 10004aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::AppendingLinkage); 10014aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10024aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMInternalLinkage: 10034aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::InternalLinkage); 10044aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10054aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMPrivateLinkage: 10064aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::PrivateLinkage); 10074aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10084aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMLinkerPrivateLinkage: 10094aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::LinkerPrivateLinkage); 10104aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10114aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMDLLImportLinkage: 10124aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::DLLImportLinkage); 10134aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10144aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMDLLExportLinkage: 10154aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::DLLExportLinkage); 10164aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10174aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMExternalWeakLinkage: 10184aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::ExternalWeakLinkage); 10194aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10204aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMGhostLinkage: 1021f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin DEBUG(errs() 1022f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin << "LLVMSetLinkage(): LLVMGhostLinkage is no longer supported."); 10234aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10244aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMCommonLinkage: 10254aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::CommonLinkage); 10264aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 10274aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling } 10288b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10298b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10308b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenconst char *LLVMGetSection(LLVMValueRef Global) { 10318b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalValue>(Global)->getSection().c_str(); 10328b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10338b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10348b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetSection(LLVMValueRef Global, const char *Section) { 10358b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global)->setSection(Section); 10368b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10378b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10388b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMVisibility LLVMGetVisibility(LLVMValueRef Global) { 10398b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return static_cast<LLVMVisibility>( 10408b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global)->getVisibility()); 10418b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10428b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10438b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetVisibility(LLVMValueRef Global, LLVMVisibility Viz) { 10448b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global) 10458b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen ->setVisibility(static_cast<GlobalValue::VisibilityTypes>(Viz)); 10468b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10478b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10488b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenunsigned LLVMGetAlignment(LLVMValueRef Global) { 10498b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalValue>(Global)->getAlignment(); 10508b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10518b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10528b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetAlignment(LLVMValueRef Global, unsigned Bytes) { 10538b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global)->setAlignment(Bytes); 10548b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10558b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10568b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on global variables ......................................--*/ 10578b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10588b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMValueRef LLVMAddGlobal(LLVMModuleRef M, LLVMTypeRef Ty, const char *Name) { 1059e9b11b431308f4766b73cda93e38ec930c912122Owen Anderson return wrap(new GlobalVariable(*unwrap(M), unwrap(Ty), false, 1060e9b11b431308f4766b73cda93e38ec930c912122Owen Anderson GlobalValue::ExternalLinkage, 0, Name)); 10618b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10628b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10636d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon HenriksenLLVMValueRef LLVMGetNamedGlobal(LLVMModuleRef M, const char *Name) { 10646d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen return wrap(unwrap(M)->getNamedGlobal(Name)); 10656d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen} 10666d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen 106734000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetFirstGlobal(LLVMModuleRef M) { 106834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 106934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = Mod->global_begin(); 107034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->global_end()) 107134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 107234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 107334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 107434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 107534000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetLastGlobal(LLVMModuleRef M) { 107634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 107734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = Mod->global_end(); 107834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->global_begin()) 107934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 108034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 108134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 108234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 108334000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetNextGlobal(LLVMValueRef GlobalVar) { 108434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen GlobalVariable *GV = unwrap<GlobalVariable>(GlobalVar); 108534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = GV; 108634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == GV->getParent()->global_end()) 108734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 108834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 108934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 109034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 109134000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetPreviousGlobal(LLVMValueRef GlobalVar) { 109234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen GlobalVariable *GV = unwrap<GlobalVariable>(GlobalVar); 109334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = GV; 10944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == GV->getParent()->global_begin()) 109534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 109634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 109734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 109834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 10998b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMDeleteGlobal(LLVMValueRef GlobalVar) { 11008b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalVariable>(GlobalVar)->eraseFromParent(); 11018b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11028b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11038b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMValueRef LLVMGetInitializer(LLVMValueRef GlobalVar) { 1104885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner GlobalVariable* GV = unwrap<GlobalVariable>(GlobalVar); 1105885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner if ( !GV->hasInitializer() ) 1106885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return 0; 1107885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return wrap(GV->getInitializer()); 11088b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11098b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11108b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal) { 11118b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalVariable>(GlobalVar) 11128b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen ->setInitializer(unwrap<Constant>(ConstantVal)); 11138b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11148b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1115d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsThreadLocal(LLVMValueRef GlobalVar) { 11168b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalVariable>(GlobalVar)->isThreadLocal(); 11178b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11188b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1119d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattnervoid LLVMSetThreadLocal(LLVMValueRef GlobalVar, LLVMBool IsThreadLocal) { 11208b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalVariable>(GlobalVar)->setThreadLocal(IsThreadLocal != 0); 11218b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11228b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1123d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsGlobalConstant(LLVMValueRef GlobalVar) { 1124c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen return unwrap<GlobalVariable>(GlobalVar)->isConstant(); 1125c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen} 1126c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen 1127d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattnervoid LLVMSetGlobalConstant(LLVMValueRef GlobalVar, LLVMBool IsConstant) { 1128c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen unwrap<GlobalVariable>(GlobalVar)->setConstant(IsConstant != 0); 1129c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen} 1130c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen 1131851ba39dab544ad986f150aec9573add9d978397Chris Lattner/*--.. Operations on aliases ......................................--*/ 1132851ba39dab544ad986f150aec9573add9d978397Chris Lattner 1133851ba39dab544ad986f150aec9573add9d978397Chris LattnerLLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, 1134851ba39dab544ad986f150aec9573add9d978397Chris Lattner const char *Name) { 1135851ba39dab544ad986f150aec9573add9d978397Chris Lattner return wrap(new GlobalAlias(unwrap(Ty), GlobalValue::ExternalLinkage, Name, 1136851ba39dab544ad986f150aec9573add9d978397Chris Lattner unwrap<Constant>(Aliasee), unwrap (M))); 1137851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 1138851ba39dab544ad986f150aec9573add9d978397Chris Lattner 113946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Operations on functions .............................................--*/ 114046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 114146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name, 114246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef FunctionTy) { 1143051a950000e21935165db56695e35bade668193bGabor Greif return wrap(Function::Create(unwrap<FunctionType>(FunctionTy), 1144051a950000e21935165db56695e35bade668193bGabor Greif GlobalValue::ExternalLinkage, Name, unwrap(M))); 114546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 114646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 11476d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon HenriksenLLVMValueRef LLVMGetNamedFunction(LLVMModuleRef M, const char *Name) { 11486d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen return wrap(unwrap(M)->getFunction(Name)); 11496d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen} 11506d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen 115134000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetFirstFunction(LLVMModuleRef M) { 115234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 115334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Mod->begin(); 115434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->end()) 115534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 115634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 115734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 115834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 115934000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetLastFunction(LLVMModuleRef M) { 116034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 116134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Mod->end(); 116234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->begin()) 116334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 116434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 116534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 116634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 116734000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetNextFunction(LLVMValueRef Fn) { 116834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 116934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Func; 117034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == Func->getParent()->end()) 117134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 117234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 117334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 117434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 117534000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetPreviousFunction(LLVMValueRef Fn) { 117634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 117734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Func; 11784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == Func->getParent()->begin()) 117934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 118034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 118134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 118234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 118346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMDeleteFunction(LLVMValueRef Fn) { 118446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap<Function>(Fn)->eraseFromParent(); 118546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 118646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 118746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetIntrinsicID(LLVMValueRef Fn) { 118846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen if (Function *F = dyn_cast<Function>(unwrap(Fn))) 118946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return F->getIntrinsicID(); 119046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return 0; 119146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 119246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 119346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetFunctionCallConv(LLVMValueRef Fn) { 119446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return unwrap<Function>(Fn)->getCallingConv(); 119546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 119646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 119746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMSetFunctionCallConv(LLVMValueRef Fn, unsigned CC) { 119865c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel return unwrap<Function>(Fn)->setCallingConv( 119965c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel static_cast<CallingConv::ID>(CC)); 120046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 120146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 12025eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenconst char *LLVMGetGC(LLVMValueRef Fn) { 120380a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen Function *F = unwrap<Function>(Fn); 12045eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen return F->hasGC()? F->getGC() : 0; 120580a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen} 120680a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 12075eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenvoid LLVMSetGC(LLVMValueRef Fn, const char *GC) { 120880a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen Function *F = unwrap<Function>(Fn); 12095eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen if (GC) 12105eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen F->setGC(GC); 121180a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen else 12125eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen F->clearGC(); 121380a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen} 121480a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 1215e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsvoid LLVMAddFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA) { 1216e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Function *Func = unwrap<Function>(Fn); 1217e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands const AttrListPtr PAL = Func->getAttributes(); 1218f1ac0fd347823c5ab54577702f8eb062bf4ca70bKenneth Uildriks const AttrListPtr PALnew = PAL.addAttr(~0U, PA); 1219e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Func->setAttributes(PALnew); 1220e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands} 1221e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1222e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsvoid LLVMRemoveFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA) { 1223e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Function *Func = unwrap<Function>(Fn); 1224e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands const AttrListPtr PAL = Func->getAttributes(); 1225f1ac0fd347823c5ab54577702f8eb062bf4ca70bKenneth Uildriks const AttrListPtr PALnew = PAL.removeAttr(~0U, PA); 1226e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Func->setAttributes(PALnew); 1227e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands} 1228e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1229885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMAttribute LLVMGetFunctionAttr(LLVMValueRef Fn) { 1230885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Function *Func = unwrap<Function>(Fn); 1231885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner const AttrListPtr PAL = Func->getAttributes(); 1232885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Attributes attr = PAL.getFnAttributes(); 1233885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return (LLVMAttribute)attr; 1234885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 1235885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 1236dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen/*--.. Operations on parameters ............................................--*/ 1237dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1238dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenunsigned LLVMCountParams(LLVMValueRef FnRef) { 1239dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen // This function is strictly redundant to 1240dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen // LLVMCountParamTypes(LLVMGetElementType(LLVMTypeOf(FnRef))) 12414d515d0b09d43af59cd040bfb8bf1b7a2b992980Dan Gohman return unwrap<Function>(FnRef)->arg_size(); 1242dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1243dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1244dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenvoid LLVMGetParams(LLVMValueRef FnRef, LLVMValueRef *ParamRefs) { 1245dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen Function *Fn = unwrap<Function>(FnRef); 1246dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen for (Function::arg_iterator I = Fn->arg_begin(), 1247dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen E = Fn->arg_end(); I != E; I++) 1248dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen *ParamRefs++ = wrap(I); 1249dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1250dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1251dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMValueRef LLVMGetParam(LLVMValueRef FnRef, unsigned index) { 1252dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen Function::arg_iterator AI = unwrap<Function>(FnRef)->arg_begin(); 1253dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen while (index --> 0) 1254dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen AI++; 1255dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(AI); 1256dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1257dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1258dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMValueRef LLVMGetParamParent(LLVMValueRef V) { 1259dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap<Argument>(V)->getParent()); 1260dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1261dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 12624733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetFirstParam(LLVMValueRef Fn) { 12634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function *Func = unwrap<Function>(Fn); 12644733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = Func->arg_begin(); 12654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == Func->arg_end()) 12664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 12674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(I); 12684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 12694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12704733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetLastParam(LLVMValueRef Fn) { 12714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function *Func = unwrap<Function>(Fn); 12724733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = Func->arg_end(); 12734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == Func->arg_begin()) 12744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 12754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(--I); 12764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 12774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12784733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetNextParam(LLVMValueRef Arg) { 12794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Argument *A = unwrap<Argument>(Arg); 12804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = A; 12814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (++I == A->getParent()->arg_end()) 12824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 12834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(I); 12844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 12854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12864733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetPreviousParam(LLVMValueRef Arg) { 12874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Argument *A = unwrap<Argument>(Arg); 12884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = A; 12894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == A->getParent()->arg_begin()) 12904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 12914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(--I); 12924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 12934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12940598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMAddAttribute(LLVMValueRef Arg, LLVMAttribute PA) { 1295e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen unwrap<Argument>(Arg)->addAttr(PA); 1296e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1297e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 12980598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMRemoveAttribute(LLVMValueRef Arg, LLVMAttribute PA) { 1299e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen unwrap<Argument>(Arg)->removeAttr(PA); 1300e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1301e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 1302885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMAttribute LLVMGetAttribute(LLVMValueRef Arg) { 1303885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Argument *A = unwrap<Argument>(Arg); 1304885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Attributes attr = A->getParent()->getAttributes().getParamAttributes( 1305885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner A->getArgNo()+1); 1306885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return (LLVMAttribute)attr; 1307885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 1308885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 1309885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 1310e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksenvoid LLVMSetParamAlignment(LLVMValueRef Arg, unsigned align) { 1311e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen unwrap<Argument>(Arg)->addAttr( 13120598866c052147c31b808391f58434ce3dbfb838Devang Patel Attribute::constructAlignmentFromInt(align)); 1313e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1314e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 131546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Operations on basic blocks ..........................................--*/ 131646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1317dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMValueRef LLVMBasicBlockAsValue(LLVMBasicBlockRef BB) { 1318dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(static_cast<Value*>(unwrap(BB))); 131946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 132046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1321d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMValueIsBasicBlock(LLVMValueRef Val) { 132246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return isa<BasicBlock>(unwrap(Val)); 132346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 132446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 132546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMBasicBlockRef LLVMValueAsBasicBlock(LLVMValueRef Val) { 132646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap<BasicBlock>(Val)); 132746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 132846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 13294733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetBasicBlockParent(LLVMBasicBlockRef BB) { 13304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(unwrap(BB)->getParent()); 1331dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1332dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 133346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMCountBasicBlocks(LLVMValueRef FnRef) { 13344d515d0b09d43af59cd040bfb8bf1b7a2b992980Dan Gohman return unwrap<Function>(FnRef)->size(); 133546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 133646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 133746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMGetBasicBlocks(LLVMValueRef FnRef, LLVMBasicBlockRef *BasicBlocksRefs){ 133846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Function *Fn = unwrap<Function>(FnRef); 133946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen for (Function::iterator I = Fn->begin(), E = Fn->end(); I != E; I++) 134046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen *BasicBlocksRefs++ = wrap(I); 134146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 134246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 134346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMBasicBlockRef LLVMGetEntryBasicBlock(LLVMValueRef Fn) { 134446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(&unwrap<Function>(Fn)->getEntryBlock()); 134546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 134646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 134734000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetFirstBasicBlock(LLVMValueRef Fn) { 134834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 134934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Func->begin(); 135034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Func->end()) 135134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 135234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 135334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 135434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 135534000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetLastBasicBlock(LLVMValueRef Fn) { 135634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 135734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Func->end(); 135834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Func->begin()) 135934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 136034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 136134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 136234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 136334000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetNextBasicBlock(LLVMBasicBlockRef BB) { 136434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 136534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Block; 136634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == Block->getParent()->end()) 136734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 136834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 136934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 137034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 137134000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetPreviousBasicBlock(LLVMBasicBlockRef BB) { 137234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 137334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Block; 137434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Block->getParent()->begin()) 137534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 137634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 137734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 137834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 137922c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBasicBlockRef LLVMAppendBasicBlockInContext(LLVMContextRef C, 138022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar LLVMValueRef FnRef, 138122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar const char *Name) { 138222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(BasicBlock::Create(*unwrap(C), Name, unwrap<Function>(FnRef))); 138322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 138422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 138546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMBasicBlockRef LLVMAppendBasicBlock(LLVMValueRef FnRef, const char *Name) { 138622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMAppendBasicBlockInContext(LLVMGetGlobalContext(), FnRef, Name); 138722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 138822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 138922c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBasicBlockRef LLVMInsertBasicBlockInContext(LLVMContextRef C, 139022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar LLVMBasicBlockRef BBRef, 139122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar const char *Name) { 139222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar BasicBlock *BB = unwrap(BBRef); 139322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(BasicBlock::Create(*unwrap(C), Name, BB->getParent(), BB)); 139446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 139546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 139622c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBasicBlockRef LLVMInsertBasicBlock(LLVMBasicBlockRef BBRef, 139746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 139822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInsertBasicBlockInContext(LLVMGetGlobalContext(), BBRef, Name); 139946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 140046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 140146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMDeleteBasicBlock(LLVMBasicBlockRef BBRef) { 140246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(BBRef)->eraseFromParent(); 140346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 140446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1405dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen/*--.. Operations on instructions ..........................................--*/ 1406dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1407dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMBasicBlockRef LLVMGetInstructionParent(LLVMValueRef Inst) { 1408dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap<Instruction>(Inst)->getParent()); 1409dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1410dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 141134000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetFirstInstruction(LLVMBasicBlockRef BB) { 141234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 141334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Block->begin(); 141434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Block->end()) 141534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 141634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 141734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 141834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 141934000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetLastInstruction(LLVMBasicBlockRef BB) { 142034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 142134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Block->end(); 142234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Block->begin()) 142334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 142434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 142534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 142634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 142734000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetNextInstruction(LLVMValueRef Inst) { 142834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Instruction *Instr = unwrap<Instruction>(Inst); 142934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Instr; 143034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == Instr->getParent()->end()) 143134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 143234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 143334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 143434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 143534000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetPreviousInstruction(LLVMValueRef Inst) { 143634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Instruction *Instr = unwrap<Instruction>(Inst); 143734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Instr; 143834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Instr->getParent()->begin()) 143934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 144034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 144134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 144234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 144346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Call and invoke instructions ........................................--*/ 144446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 144546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetInstructionCallConv(LLVMValueRef Instr) { 144646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Value *V = unwrap(Instr); 144746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen if (CallInst *CI = dyn_cast<CallInst>(V)) 144846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return CI->getCallingConv(); 144946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen else if (InvokeInst *II = dyn_cast<InvokeInst>(V)) 145046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return II->getCallingConv(); 1451c23197a26f34f559ea9797de51e187087c039c42Torok Edwin llvm_unreachable("LLVMGetInstructionCallConv applies only to call and invoke!"); 145246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return 0; 145346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 145446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 145546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMSetInstructionCallConv(LLVMValueRef Instr, unsigned CC) { 145646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Value *V = unwrap(Instr); 145746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen if (CallInst *CI = dyn_cast<CallInst>(V)) 145865c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel return CI->setCallingConv(static_cast<CallingConv::ID>(CC)); 145946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen else if (InvokeInst *II = dyn_cast<InvokeInst>(V)) 146065c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel return II->setCallingConv(static_cast<CallingConv::ID>(CC)); 1461c23197a26f34f559ea9797de51e187087c039c42Torok Edwin llvm_unreachable("LLVMSetInstructionCallConv applies only to call and invoke!"); 146246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 146346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 14640598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMAddInstrAttribute(LLVMValueRef Instr, unsigned index, 14650598866c052147c31b808391f58434ce3dbfb838Devang Patel LLVMAttribute PA) { 1466e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen CallSite Call = CallSite(unwrap<Instruction>(Instr)); 14670598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.setAttributes( 14680598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.getAttributes().addAttr(index, PA)); 1469e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1470e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 14710598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMRemoveInstrAttribute(LLVMValueRef Instr, unsigned index, 14720598866c052147c31b808391f58434ce3dbfb838Devang Patel LLVMAttribute PA) { 1473e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen CallSite Call = CallSite(unwrap<Instruction>(Instr)); 14740598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.setAttributes( 14750598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.getAttributes().removeAttr(index, PA)); 1476e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1477e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 1478e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksenvoid LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index, 1479e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen unsigned align) { 1480e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen CallSite Call = CallSite(unwrap<Instruction>(Instr)); 14810598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.setAttributes( 14820598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.getAttributes().addAttr(index, 14830598866c052147c31b808391f58434ce3dbfb838Devang Patel Attribute::constructAlignmentFromInt(align))); 1484e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1485e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 148607cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen/*--.. Operations on call instructions (only) ..............................--*/ 148707cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 1488d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsTailCall(LLVMValueRef Call) { 148907cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen return unwrap<CallInst>(Call)->isTailCall(); 149007cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen} 149107cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 1492d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattnervoid LLVMSetTailCall(LLVMValueRef Call, LLVMBool isTailCall) { 149307cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen unwrap<CallInst>(Call)->setTailCall(isTailCall); 149407cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen} 149507cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 14962618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen/*--.. Operations on phi nodes .............................................--*/ 14972618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 14982618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenvoid LLVMAddIncoming(LLVMValueRef PhiNode, LLVMValueRef *IncomingValues, 14992618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen LLVMBasicBlockRef *IncomingBlocks, unsigned Count) { 15002618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen PHINode *PhiVal = unwrap<PHINode>(PhiNode); 15012618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen for (unsigned I = 0; I != Count; ++I) 15022618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen PhiVal->addIncoming(unwrap(IncomingValues[I]), unwrap(IncomingBlocks[I])); 15032618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 15042618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 15052618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenunsigned LLVMCountIncoming(LLVMValueRef PhiNode) { 15062618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen return unwrap<PHINode>(PhiNode)->getNumIncomingValues(); 15072618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 15082618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 15092618a6c1122d5d2007787fb56156be44b21ab32aGordon HenriksenLLVMValueRef LLVMGetIncomingValue(LLVMValueRef PhiNode, unsigned Index) { 15102618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen return wrap(unwrap<PHINode>(PhiNode)->getIncomingValue(Index)); 15112618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 15122618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 15132618a6c1122d5d2007787fb56156be44b21ab32aGordon HenriksenLLVMBasicBlockRef LLVMGetIncomingBlock(LLVMValueRef PhiNode, unsigned Index) { 15142618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen return wrap(unwrap<PHINode>(PhiNode)->getIncomingBlock(Index)); 15152618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 15162618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 151746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 151846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*===-- Instruction builders ----------------------------------------------===*/ 151946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 152022c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBuilderRef LLVMCreateBuilderInContext(LLVMContextRef C) { 152122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(new IRBuilder<>(*unwrap(C))); 152222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 152322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 152416c1f44d91211a225497062ea508d58fd25085a9Gordon HenriksenLLVMBuilderRef LLVMCreateBuilder(void) { 152522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMCreateBuilderInContext(LLVMGetGlobalContext()); 152646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 152746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 152834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksenvoid LLVMPositionBuilder(LLVMBuilderRef Builder, LLVMBasicBlockRef Block, 152934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen LLVMValueRef Instr) { 153034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *BB = unwrap(Block); 153134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Instruction *I = Instr? unwrap<Instruction>(Instr) : (Instruction*) BB->end(); 153234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen unwrap(Builder)->SetInsertPoint(BB, I); 153334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 153434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 153546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMPositionBuilderBefore(LLVMBuilderRef Builder, LLVMValueRef Instr) { 153646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Instruction *I = unwrap<Instruction>(Instr); 153746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Builder)->SetInsertPoint(I->getParent(), I); 153846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 153946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 154046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMPositionBuilderAtEnd(LLVMBuilderRef Builder, LLVMBasicBlockRef Block) { 154146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen BasicBlock *BB = unwrap(Block); 154246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Builder)->SetInsertPoint(BB); 154346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 154446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1545dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMBasicBlockRef LLVMGetInsertBlock(LLVMBuilderRef Builder) { 1546dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap(Builder)->GetInsertBlock()); 1547dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1548dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1549851ba39dab544ad986f150aec9573add9d978397Chris Lattnervoid LLVMClearInsertionPosition(LLVMBuilderRef Builder) { 1550851ba39dab544ad986f150aec9573add9d978397Chris Lattner unwrap(Builder)->ClearInsertionPoint (); 1551851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 1552851ba39dab544ad986f150aec9573add9d978397Chris Lattner 1553851ba39dab544ad986f150aec9573add9d978397Chris Lattnervoid LLVMInsertIntoBuilder(LLVMBuilderRef Builder, LLVMValueRef Instr) { 1554851ba39dab544ad986f150aec9573add9d978397Chris Lattner unwrap(Builder)->Insert(unwrap<Instruction>(Instr)); 1555851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 1556851ba39dab544ad986f150aec9573add9d978397Chris Lattner 15575c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaarvoid LLVMInsertIntoBuilderWithName(LLVMBuilderRef Builder, LLVMValueRef Instr, 15585c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar const char *Name) { 15595c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar unwrap(Builder)->Insert(unwrap<Instruction>(Instr), Name); 15605c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar} 15615c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar 156246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMDisposeBuilder(LLVMBuilderRef Builder) { 156346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen delete unwrap(Builder); 156446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 156546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 156646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Instruction builders ................................................--*/ 156746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 156846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildRetVoid(LLVMBuilderRef B) { 156946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateRetVoid()); 157046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 157146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 157246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildRet(LLVMBuilderRef B, LLVMValueRef V) { 157346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateRet(unwrap(V))); 157446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 157546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1576f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildAggregateRet(LLVMBuilderRef B, LLVMValueRef *RetVals, 1577f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar unsigned N) { 1578f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateAggregateRet(unwrap(RetVals), N)); 1579f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1580f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 158146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildBr(LLVMBuilderRef B, LLVMBasicBlockRef Dest) { 158246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateBr(unwrap(Dest))); 158346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 158446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 158546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildCondBr(LLVMBuilderRef B, LLVMValueRef If, 158646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMBasicBlockRef Then, LLVMBasicBlockRef Else) { 158746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateCondBr(unwrap(If), unwrap(Then), unwrap(Else))); 158846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 158946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 159046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSwitch(LLVMBuilderRef B, LLVMValueRef V, 159146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMBasicBlockRef Else, unsigned NumCases) { 159246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSwitch(unwrap(V), unwrap(Else), NumCases)); 159346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 159446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 159546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildInvoke(LLVMBuilderRef B, LLVMValueRef Fn, 159646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef *Args, unsigned NumArgs, 159746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, 159846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 159946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateInvoke(unwrap(Fn), unwrap(Then), unwrap(Catch), 160046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Args), unwrap(Args) + NumArgs, 160146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Name)); 160246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 160346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 160446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUnwind(LLVMBuilderRef B) { 160546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUnwind()); 160646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 160746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 160846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUnreachable(LLVMBuilderRef B) { 160946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUnreachable()); 161046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 161146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1612ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksenvoid LLVMAddCase(LLVMValueRef Switch, LLVMValueRef OnVal, 1613ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen LLVMBasicBlockRef Dest) { 1614ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen unwrap<SwitchInst>(Switch)->addCase(unwrap<ConstantInt>(OnVal), unwrap(Dest)); 1615ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen} 1616ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen 161746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Arithmetic ..........................................................--*/ 161846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 161946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 162046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 162146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAdd(unwrap(LHS), unwrap(RHS), Name)); 162246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 162346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1624f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildNSWAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1625f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1626f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateNSWAdd(unwrap(LHS), unwrap(RHS), Name)); 1627f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1628f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1629f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1630f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1631f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFAdd(unwrap(LHS), unwrap(RHS), Name)); 1632f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1633f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 163446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSub(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 163546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 163646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSub(unwrap(LHS), unwrap(RHS), Name)); 163746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 163846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1639f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFSub(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1640f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1641f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFSub(unwrap(LHS), unwrap(RHS), Name)); 1642f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1643f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 164446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildMul(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 164546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 164646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateMul(unwrap(LHS), unwrap(RHS), Name)); 164746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 164846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1649f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFMul(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1650f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1651f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFMul(unwrap(LHS), unwrap(RHS), Name)); 1652f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1653f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 165446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUDiv(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 165546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 165646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUDiv(unwrap(LHS), unwrap(RHS), Name)); 165746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 165846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 165946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSDiv(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 166046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 166146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSDiv(unwrap(LHS), unwrap(RHS), Name)); 166246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 166346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1664f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildExactSDiv(LLVMBuilderRef B, LLVMValueRef LHS, 1665f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMValueRef RHS, const char *Name) { 1666f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateExactSDiv(unwrap(LHS), unwrap(RHS), Name)); 1667f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1668f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 166946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFDiv(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 167046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 167146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFDiv(unwrap(LHS), unwrap(RHS), Name)); 167246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 167346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 167446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildURem(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 167546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 167646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateURem(unwrap(LHS), unwrap(RHS), Name)); 167746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 167846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 167946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSRem(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 168046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 168146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSRem(unwrap(LHS), unwrap(RHS), Name)); 168246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 168346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 168446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFRem(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 168546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 168646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFRem(unwrap(LHS), unwrap(RHS), Name)); 168746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 168846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 168946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildShl(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 169046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 169146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateShl(unwrap(LHS), unwrap(RHS), Name)); 169246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 169346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 169446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildLShr(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 169546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 169646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateLShr(unwrap(LHS), unwrap(RHS), Name)); 169746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 169846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 169946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAShr(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 170046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 170146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAShr(unwrap(LHS), unwrap(RHS), Name)); 170246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 170346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 170446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAnd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 170546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 170646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAnd(unwrap(LHS), unwrap(RHS), Name)); 170746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 170846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 170946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildOr(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 171046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 171146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateOr(unwrap(LHS), unwrap(RHS), Name)); 171246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 171346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 171446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildXor(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 171546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 171646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateXor(unwrap(LHS), unwrap(RHS), Name)); 171746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 171846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 171946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildNeg(LLVMBuilderRef B, LLVMValueRef V, const char *Name) { 172046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateNeg(unwrap(V), Name)); 172146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 172246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1723d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan GohmanLLVMValueRef LLVMBuildFNeg(LLVMBuilderRef B, LLVMValueRef V, const char *Name) { 1724d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan Gohman return wrap(unwrap(B)->CreateFNeg(unwrap(V), Name)); 1725d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan Gohman} 1726d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan Gohman 172746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildNot(LLVMBuilderRef B, LLVMValueRef V, const char *Name) { 172846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateNot(unwrap(V), Name)); 172946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 173046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 173146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Memory ..............................................................--*/ 173246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 173346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildMalloc(LLVMBuilderRef B, LLVMTypeRef Ty, 173446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 17359d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez const Type* ITy = Type::getInt32Ty(unwrap(B)->GetInsertBlock()->getContext()); 17369d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Constant* AllocSize = ConstantExpr::getSizeOf(unwrap(Ty)); 17379d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez AllocSize = ConstantExpr::getTruncOrBitCast(AllocSize, ITy); 17389d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Instruction* Malloc = CallInst::CreateMalloc(unwrap(B)->GetInsertBlock(), 17399d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez ITy, unwrap(Ty), AllocSize, 17409d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez 0, 0, ""); 17419d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez return wrap(unwrap(B)->Insert(Malloc, Twine(Name))); 174246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 174346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 174446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef B, LLVMTypeRef Ty, 174546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Val, const char *Name) { 17469d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez const Type* ITy = Type::getInt32Ty(unwrap(B)->GetInsertBlock()->getContext()); 17479d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Constant* AllocSize = ConstantExpr::getSizeOf(unwrap(Ty)); 17489d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez AllocSize = ConstantExpr::getTruncOrBitCast(AllocSize, ITy); 17499d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Instruction* Malloc = CallInst::CreateMalloc(unwrap(B)->GetInsertBlock(), 17509d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez ITy, unwrap(Ty), AllocSize, 17519d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez unwrap(Val), 0, ""); 17529d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez return wrap(unwrap(B)->Insert(Malloc, Twine(Name))); 175346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 175446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 175546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAlloca(LLVMBuilderRef B, LLVMTypeRef Ty, 175646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 175746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAlloca(unwrap(Ty), 0, Name)); 175846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 175946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 176046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef B, LLVMTypeRef Ty, 176146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Val, const char *Name) { 176246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAlloca(unwrap(Ty), unwrap(Val), Name)); 176346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 176446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 176546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFree(LLVMBuilderRef B, LLVMValueRef PointerVal) { 1766046e78ce55a7c3d82b7b6758d2d77f2d99f970bfVictor Hernandez return wrap(unwrap(B)->Insert( 1767046e78ce55a7c3d82b7b6758d2d77f2d99f970bfVictor Hernandez CallInst::CreateFree(unwrap(PointerVal), unwrap(B)->GetInsertBlock()))); 176846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 176946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 177046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 177146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildLoad(LLVMBuilderRef B, LLVMValueRef PointerVal, 177246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 177346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateLoad(unwrap(PointerVal), Name)); 177446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 177546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 177646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildStore(LLVMBuilderRef B, LLVMValueRef Val, 177746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef PointerVal) { 177846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateStore(unwrap(Val), unwrap(PointerVal))); 177946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 178046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 178146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildGEP(LLVMBuilderRef B, LLVMValueRef Pointer, 178246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef *Indices, unsigned NumIndices, 178346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 178446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateGEP(unwrap(Pointer), unwrap(Indices), 178546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Indices) + NumIndices, Name)); 178646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 178746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1788f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildInBoundsGEP(LLVMBuilderRef B, LLVMValueRef Pointer, 1789f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMValueRef *Indices, unsigned NumIndices, 1790f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1791f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateInBoundsGEP(unwrap(Pointer), unwrap(Indices), 1792f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar unwrap(Indices) + NumIndices, Name)); 1793f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1794f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1795f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer, 1796f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar unsigned Idx, const char *Name) { 1797f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateStructGEP(unwrap(Pointer), Idx, Name)); 1798f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1799f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1800f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const char *Str, 1801f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1802f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateGlobalString(Str, Name)); 1803f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1804f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1805f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildGlobalStringPtr(LLVMBuilderRef B, const char *Str, 1806f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1807f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateGlobalStringPtr(Str, Name)); 1808f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1809f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 181046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Casts ...............................................................--*/ 181146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 181246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildTrunc(LLVMBuilderRef B, LLVMValueRef Val, 181346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 181446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateTrunc(unwrap(Val), unwrap(DestTy), Name)); 181546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 181646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 181746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildZExt(LLVMBuilderRef B, LLVMValueRef Val, 181846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 181946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateZExt(unwrap(Val), unwrap(DestTy), Name)); 182046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 182146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 182246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSExt(LLVMBuilderRef B, LLVMValueRef Val, 182346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 182446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSExt(unwrap(Val), unwrap(DestTy), Name)); 182546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 182646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 182746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPToUI(LLVMBuilderRef B, LLVMValueRef Val, 182846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 182946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPToUI(unwrap(Val), unwrap(DestTy), Name)); 183046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 183146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 183246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPToSI(LLVMBuilderRef B, LLVMValueRef Val, 183346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 183446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPToSI(unwrap(Val), unwrap(DestTy), Name)); 183546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 183646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 183746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUIToFP(LLVMBuilderRef B, LLVMValueRef Val, 183846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 183946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUIToFP(unwrap(Val), unwrap(DestTy), Name)); 184046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 184146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 184246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSIToFP(LLVMBuilderRef B, LLVMValueRef Val, 184346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 184446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSIToFP(unwrap(Val), unwrap(DestTy), Name)); 184546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 184646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 184746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPTrunc(LLVMBuilderRef B, LLVMValueRef Val, 184846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 184946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPTrunc(unwrap(Val), unwrap(DestTy), Name)); 185046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 185146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 185246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPExt(LLVMBuilderRef B, LLVMValueRef Val, 185346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 185446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPExt(unwrap(Val), unwrap(DestTy), Name)); 185546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 185646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 185746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildPtrToInt(LLVMBuilderRef B, LLVMValueRef Val, 185846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 185946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreatePtrToInt(unwrap(Val), unwrap(DestTy), Name)); 186046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 186146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 186246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildIntToPtr(LLVMBuilderRef B, LLVMValueRef Val, 186346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 186446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateIntToPtr(unwrap(Val), unwrap(DestTy), Name)); 186546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 186646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 186746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildBitCast(LLVMBuilderRef B, LLVMValueRef Val, 186846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 186946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateBitCast(unwrap(Val), unwrap(DestTy), Name)); 187046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 187146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1872f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildZExtOrBitCast(LLVMBuilderRef B, LLVMValueRef Val, 1873f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1874f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateZExtOrBitCast(unwrap(Val), unwrap(DestTy), 1875f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar Name)); 1876f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1877f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1878f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildSExtOrBitCast(LLVMBuilderRef B, LLVMValueRef Val, 1879f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1880f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateSExtOrBitCast(unwrap(Val), unwrap(DestTy), 1881f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar Name)); 1882f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1883f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1884f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildTruncOrBitCast(LLVMBuilderRef B, LLVMValueRef Val, 1885f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1886f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateTruncOrBitCast(unwrap(Val), unwrap(DestTy), 1887f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar Name)); 1888f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1889f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1890f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef B, LLVMValueRef Val, 1891f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1892f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreatePointerCast(unwrap(Val), unwrap(DestTy), Name)); 1893f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1894f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1895f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildIntCast(LLVMBuilderRef B, LLVMValueRef Val, 1896e8e01b600cd377504e5288a31152b1db4b8477b1Duncan Sands LLVMTypeRef DestTy, const char *Name) { 1897e8e01b600cd377504e5288a31152b1db4b8477b1Duncan Sands return wrap(unwrap(B)->CreateIntCast(unwrap(Val), unwrap(DestTy), 1898e8e01b600cd377504e5288a31152b1db4b8477b1Duncan Sands /*isSigned*/true, Name)); 1899f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1900f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1901f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFPCast(LLVMBuilderRef B, LLVMValueRef Val, 1902f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 1903f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFPCast(unwrap(Val), unwrap(DestTy), Name)); 1904f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1905f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 190646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Comparisons .........................................................--*/ 190746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 190846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildICmp(LLVMBuilderRef B, LLVMIntPredicate Op, 190946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef LHS, LLVMValueRef RHS, 191046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 191146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateICmp(static_cast<ICmpInst::Predicate>(Op), 191246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(LHS), unwrap(RHS), Name)); 191346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 191446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 191546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFCmp(LLVMBuilderRef B, LLVMRealPredicate Op, 191646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef LHS, LLVMValueRef RHS, 191746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 191846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFCmp(static_cast<FCmpInst::Predicate>(Op), 191946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(LHS), unwrap(RHS), Name)); 192046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 192146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 192246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Miscellaneous instructions ..........................................--*/ 192346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 192446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildPhi(LLVMBuilderRef B, LLVMTypeRef Ty, const char *Name) { 192546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreatePHI(unwrap(Ty), Name)); 192646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 192746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 192846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, 192946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef *Args, unsigned NumArgs, 193046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 193146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateCall(unwrap(Fn), unwrap(Args), 193246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Args) + NumArgs, Name)); 193346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 193446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 193546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSelect(LLVMBuilderRef B, LLVMValueRef If, 193646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Then, LLVMValueRef Else, 193746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 193846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSelect(unwrap(If), unwrap(Then), unwrap(Else), 193946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Name)); 194046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 194146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 194246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildVAArg(LLVMBuilderRef B, LLVMValueRef List, 194346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef Ty, const char *Name) { 194446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateVAArg(unwrap(List), unwrap(Ty), Name)); 194546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 194646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 194746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildExtractElement(LLVMBuilderRef B, LLVMValueRef VecVal, 194846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Index, const char *Name) { 194946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateExtractElement(unwrap(VecVal), unwrap(Index), 195046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Name)); 195146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 195246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 195346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildInsertElement(LLVMBuilderRef B, LLVMValueRef VecVal, 195446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef EltVal, LLVMValueRef Index, 195546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 195646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateInsertElement(unwrap(VecVal), unwrap(EltVal), 195746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Index), Name)); 195846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 195946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 196046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildShuffleVector(LLVMBuilderRef B, LLVMValueRef V1, 196146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef V2, LLVMValueRef Mask, 196246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 196346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateShuffleVector(unwrap(V1), unwrap(V2), 196446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Mask), Name)); 196546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 19661ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 1967b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMBuildExtractValue(LLVMBuilderRef B, LLVMValueRef AggVal, 1968b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unsigned Index, const char *Name) { 1969b593117b44a74c72bc784080bb402576b3181d94Dan Gohman return wrap(unwrap(B)->CreateExtractValue(unwrap(AggVal), Index, Name)); 1970b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 1971b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 1972b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMBuildInsertValue(LLVMBuilderRef B, LLVMValueRef AggVal, 1973b593117b44a74c72bc784080bb402576b3181d94Dan Gohman LLVMValueRef EltVal, unsigned Index, 1974b593117b44a74c72bc784080bb402576b3181d94Dan Gohman const char *Name) { 1975b593117b44a74c72bc784080bb402576b3181d94Dan Gohman return wrap(unwrap(B)->CreateInsertValue(unwrap(AggVal), unwrap(EltVal), 1976b593117b44a74c72bc784080bb402576b3181d94Dan Gohman Index, Name)); 1977b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 1978b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 1979f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildIsNull(LLVMBuilderRef B, LLVMValueRef Val, 1980f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1981f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateIsNull(unwrap(Val), Name)); 1982f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1983f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1984f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildIsNotNull(LLVMBuilderRef B, LLVMValueRef Val, 1985f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1986f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateIsNotNull(unwrap(Val), Name)); 1987f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1988f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 1989f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildPtrDiff(LLVMBuilderRef B, LLVMValueRef LHS, 1990f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMValueRef RHS, const char *Name) { 1991f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreatePtrDiff(unwrap(LHS), unwrap(RHS), Name)); 1992f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1993f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 19941ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 19951ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen/*===-- Module providers --------------------------------------------------===*/ 19961ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 19971ae6135fa37eb061499d079b9b33dc82dcc1283fGordon HenriksenLLVMModuleProviderRef 19981ae6135fa37eb061499d079b9b33dc82dcc1283fGordon HenriksenLLVMCreateModuleProviderForExistingModule(LLVMModuleRef M) { 1999f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin return reinterpret_cast<LLVMModuleProviderRef>(M); 20001ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen} 20011ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 20021ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksenvoid LLVMDisposeModuleProvider(LLVMModuleProviderRef MP) { 20031ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen delete unwrap(MP); 20041ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen} 20051ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 2006da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2007da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen/*===-- Memory buffers ----------------------------------------------------===*/ 2008da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2009d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateMemoryBufferWithContentsOfFile( 2010d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner const char *Path, 2011d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMMemoryBufferRef *OutMemBuf, 2012d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner char **OutMessage) { 2013d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner 2014da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen std::string Error; 2015038112a4e0a9afd656f415ab397a230ae5921627Chris Lattner if (MemoryBuffer *MB = MemoryBuffer::getFile(Path, &Error)) { 2016da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen *OutMemBuf = wrap(MB); 2017da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen return 0; 2018da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen } 2019da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2020da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen *OutMessage = strdup(Error.c_str()); 2021da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen return 1; 2022da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 2023da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2024d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateMemoryBufferWithSTDIN(LLVMMemoryBufferRef *OutMemBuf, 2025d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner char **OutMessage) { 2026d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar MemoryBuffer *MB = MemoryBuffer::getSTDIN(); 2027d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar if (!MB->getBufferSize()) { 2028d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar delete MB; 2029d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar *OutMessage = strdup("stdin is empty."); 2030d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar return 1; 2031da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen } 2032d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar 2033d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar *OutMemBuf = wrap(MB); 2034d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar return 0; 2035da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 2036da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2037da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenvoid LLVMDisposeMemoryBuffer(LLVMMemoryBufferRef MemBuf) { 2038da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen delete unwrap(MemBuf); 2039da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 2040