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// 10b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson// This file implements the common infrastructure (including the C bindings) 11b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson// for libLLVMCore.a, which implements the LLVM intermediate representation. 128b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen// 138b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen//===----------------------------------------------------------------------===// 148b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 158b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm-c/Core.h" 16164b86b4399559e45fab7846f1e3e09119cab4e2Kostya Serebryany#include "llvm/Attributes.h" 178b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm/Bitcode/ReaderWriter.h" 188b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm/Constants.h" 198b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm/DerivedTypes.h" 208b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include "llvm/GlobalVariable.h" 21851ba39dab544ad986f150aec9573add9d978397Chris Lattner#include "llvm/GlobalAlias.h" 228b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson#include "llvm/LLVMContext.h" 23851ba39dab544ad986f150aec9573add9d978397Chris Lattner#include "llvm/InlineAsm.h" 242a9c671a51126def8020870103316e6aedc73edfGordon Henriksen#include "llvm/IntrinsicInst.h" 2511112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman#include "llvm/PassManager.h" 26e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen#include "llvm/Support/CallSite.h" 27f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin#include "llvm/Support/Debug.h" 28c25e7581b9b8088910da31702d4ca21c4734c6d7Torok Edwin#include "llvm/Support/ErrorHandling.h" 29f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin#include "llvm/Support/MemoryBuffer.h" 30f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin#include "llvm/Support/raw_ostream.h" 31333fb04506233255f10d8095c9e2de5e5f0fdc6fMichael J. Spencer#include "llvm/Support/system_error.h" 328b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen#include <cassert> 33da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen#include <cstdlib> 34ae9f3a3b7c915f725aef5a7250e88eaeddda03c6Anton Korobeynikov#include <cstring> 358b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 368b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenusing namespace llvm; 378b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 38b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Andersonvoid llvm::initializeCore(PassRegistry &Registry) { 39b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson initializeDominatorTreePass(Registry); 40b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson initializePrintModulePassPass(Registry); 41b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson initializePrintFunctionPassPass(Registry); 42b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson initializeVerifierPass(Registry); 43b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson initializePreVerifierPass(Registry); 44b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson} 45b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson 46b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Andersonvoid LLVMInitializeCore(LLVMPassRegistryRef R) { 47b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson initializeCore(*unwrap(R)); 48b8a1ccfc4b2eb84cc59465e2109019c9f85c9114Owen Anderson} 498b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 50da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen/*===-- Error handling ----------------------------------------------------===*/ 51da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 52da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenvoid LLVMDisposeMessage(char *Message) { 53da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen free(Message); 54da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 55da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 56da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 578b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson/*===-- Operations on contexts --------------------------------------------===*/ 588b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson 598b477ed579794ba6d76915d56b3f448a7dd20120Owen AndersonLLVMContextRef LLVMContextCreate() { 608b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson return wrap(new LLVMContext()); 618b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson} 628b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson 63c70e62110b7e165ab8f04c38ffd97f905dcda95dOwen AndersonLLVMContextRef LLVMGetGlobalContext() { 64c70e62110b7e165ab8f04c38ffd97f905dcda95dOwen Anderson return wrap(&getGlobalContext()); 65c70e62110b7e165ab8f04c38ffd97f905dcda95dOwen Anderson} 66c70e62110b7e165ab8f04c38ffd97f905dcda95dOwen Anderson 678b477ed579794ba6d76915d56b3f448a7dd20120Owen Andersonvoid LLVMContextDispose(LLVMContextRef C) { 688b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson delete unwrap(C); 698b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson} 708b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson 7146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarunsigned LLVMGetMDKindIDInContext(LLVMContextRef C, const char* Name, 7246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar unsigned SLen) { 7346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar return unwrap(C)->getMDKindID(StringRef(Name, SLen)); 7446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 7546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 7646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarunsigned LLVMGetMDKindID(const char* Name, unsigned SLen) { 7746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar return LLVMGetMDKindIDInContext(LLVMGetGlobalContext(), Name, SLen); 7846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 7946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 808b477ed579794ba6d76915d56b3f448a7dd20120Owen Anderson 818b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*===-- Operations on modules ---------------------------------------------===*/ 828b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 83c8897d9c2f9fcee6061a2c2d380028269026a836Owen AndersonLLVMModuleRef LLVMModuleCreateWithName(const char *ModuleID) { 84c8897d9c2f9fcee6061a2c2d380028269026a836Owen Anderson return wrap(new Module(ModuleID, getGlobalContext())); 85c8897d9c2f9fcee6061a2c2d380028269026a836Owen Anderson} 86c8897d9c2f9fcee6061a2c2d380028269026a836Owen Anderson 87c8897d9c2f9fcee6061a2c2d380028269026a836Owen AndersonLLVMModuleRef LLVMModuleCreateWithNameInContext(const char *ModuleID, 88c8897d9c2f9fcee6061a2c2d380028269026a836Owen Anderson LLVMContextRef C) { 8931895e73591d3c9ceae731a1274c8f56194b9616Owen Anderson return wrap(new Module(ModuleID, *unwrap(C))); 908b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 918b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 928b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMDisposeModule(LLVMModuleRef M) { 938b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen delete unwrap(M); 948b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 958b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 96a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen/*--.. Data layout .........................................................--*/ 97a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenconst char * LLVMGetDataLayout(LLVMModuleRef M) { 98a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen return unwrap(M)->getDataLayout().c_str(); 99a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen} 100a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 101a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenvoid LLVMSetDataLayout(LLVMModuleRef M, const char *Triple) { 102a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen unwrap(M)->setDataLayout(Triple); 103a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen} 104a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 105a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen/*--.. Target triple .......................................................--*/ 106a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenconst char * LLVMGetTarget(LLVMModuleRef M) { 107a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen return unwrap(M)->getTargetTriple().c_str(); 108a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen} 109a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 110a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenvoid LLVMSetTarget(LLVMModuleRef M, const char *Triple) { 111a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen unwrap(M)->setTargetTriple(Triple); 112a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen} 113a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 114af59b105bb3f9a31f1812e470eb9db28a8a1b491Gordon Henriksenvoid LLVMDumpModule(LLVMModuleRef M) { 115af59b105bb3f9a31f1812e470eb9db28a8a1b491Gordon Henriksen unwrap(M)->dump(); 116af59b105bb3f9a31f1812e470eb9db28a8a1b491Gordon Henriksen} 117af59b105bb3f9a31f1812e470eb9db28a8a1b491Gordon Henriksen 1185c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans WennborgLLVMBool LLVMPrintModuleToFile(LLVMModuleRef M, const char *Filename, 1195c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg char **ErrorMessage) { 1205c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg std::string error; 1215c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg raw_fd_ostream dest(Filename, error); 1225c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg if (!error.empty()) { 1235c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg *ErrorMessage = strdup(error.c_str()); 1245c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg return true; 1255c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg } 1265c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg 1275c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg unwrap(M)->print(dest, NULL); 1285c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg 1295c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg if (!error.empty()) { 1305c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg *ErrorMessage = strdup(error.c_str()); 1315c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg return true; 1325c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg } 1335c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg dest.flush(); 1345c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg return false; 1355c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg} 1365c87b4958d1a5dabf2400be5b3a86aed4f82db91Hans Wennborg 1370941534c712d77243d9dda5e8c1d927563b4edffChris Lattner/*--.. Operations on inline assembler ......................................--*/ 1380941534c712d77243d9dda5e8c1d927563b4edffChris Lattnervoid LLVMSetModuleInlineAsm(LLVMModuleRef M, const char *Asm) { 1390941534c712d77243d9dda5e8c1d927563b4edffChris Lattner unwrap(M)->setModuleInlineAsm(StringRef(Asm)); 1400941534c712d77243d9dda5e8c1d927563b4edffChris Lattner} 1410941534c712d77243d9dda5e8c1d927563b4edffChris Lattner 1428b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 143a1ac3bbec703f7faf20cbc06fa0eb9d34bb4f5f6Chris Lattner/*--.. Operations on module contexts ......................................--*/ 144a1ac3bbec703f7faf20cbc06fa0eb9d34bb4f5f6Chris LattnerLLVMContextRef LLVMGetModuleContext(LLVMModuleRef M) { 145a1ac3bbec703f7faf20cbc06fa0eb9d34bb4f5f6Chris Lattner return wrap(&unwrap(M)->getContext()); 146a1ac3bbec703f7faf20cbc06fa0eb9d34bb4f5f6Chris Lattner} 147a1ac3bbec703f7faf20cbc06fa0eb9d34bb4f5f6Chris Lattner 148a1ac3bbec703f7faf20cbc06fa0eb9d34bb4f5f6Chris Lattner 1498b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*===-- Operations on types -----------------------------------------------===*/ 1508b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1518b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on all types (mostly) ....................................--*/ 1528b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1538b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMTypeKind LLVMGetTypeKind(LLVMTypeRef Ty) { 1540df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner switch (unwrap(Ty)->getTypeID()) { 15550bee42b54cd9aec5f49566307df2b0cf23afcf6Craig Topper default: llvm_unreachable("Unhandled TypeID."); 1560df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::VoidTyID: 1570df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMVoidTypeKind; 158ce16339930a2b03e53b4e6399ef59c092a7f2cfaDan Gohman case Type::HalfTyID: 159ce16339930a2b03e53b4e6399ef59c092a7f2cfaDan Gohman return LLVMHalfTypeKind; 1600df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::FloatTyID: 1610df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMFloatTypeKind; 1620df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::DoubleTyID: 1630df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMDoubleTypeKind; 1640df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::X86_FP80TyID: 1650df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMX86_FP80TypeKind; 1660df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::FP128TyID: 1670df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMFP128TypeKind; 1680df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::PPC_FP128TyID: 1690df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMPPC_FP128TypeKind; 1700df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::LabelTyID: 1710df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMLabelTypeKind; 1720df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::MetadataTyID: 1730df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMMetadataTypeKind; 1740df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::IntegerTyID: 1750df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMIntegerTypeKind; 1760df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::FunctionTyID: 1770df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMFunctionTypeKind; 1780df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::StructTyID: 1790df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMStructTypeKind; 1800df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::ArrayTyID: 1810df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMArrayTypeKind; 1820df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::PointerTyID: 1830df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMPointerTypeKind; 1840df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner case Type::VectorTyID: 1850df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner return LLVMVectorTypeKind; 186bb811a244567aa8a1522203f15588f4d001b7353Dale Johannesen case Type::X86_MMXTyID: 187bb811a244567aa8a1522203f15588f4d001b7353Dale Johannesen return LLVMX86_MMXTypeKind; 1880df5c8e3f1061cd23f8abde64840828f713d4597Chris Lattner } 1898b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 1908b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 191ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok EdwinLLVMBool LLVMTypeIsSized(LLVMTypeRef Ty) 192ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwin{ 193ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwin return unwrap(Ty)->isSized(); 194ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwin} 195ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwin 19622c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMContextRef LLVMGetTypeContext(LLVMTypeRef Ty) { 19722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(&unwrap(Ty)->getContext()); 19822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 19922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 2008b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on integer types .........................................--*/ 2018b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 20222c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMInt1TypeInContext(LLVMContextRef C) { 20322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getInt1Ty(*unwrap(C)); 20422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 20522c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMInt8TypeInContext(LLVMContextRef C) { 20622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getInt8Ty(*unwrap(C)); 20722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 20822c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMInt16TypeInContext(LLVMContextRef C) { 20922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getInt16Ty(*unwrap(C)); 21022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 21122c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMInt32TypeInContext(LLVMContextRef C) { 21222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getInt32Ty(*unwrap(C)); 21322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 21422c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMInt64TypeInContext(LLVMContextRef C) { 21522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getInt64Ty(*unwrap(C)); 21622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 21722c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMIntTypeInContext(LLVMContextRef C, unsigned NumBits) { 21822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(IntegerType::get(*unwrap(C), NumBits)); 21922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 22022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 2211d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMInt1Type(void) { 22222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInt1TypeInContext(LLVMGetGlobalContext()); 2231d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2241d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMInt8Type(void) { 22522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInt8TypeInContext(LLVMGetGlobalContext()); 2261d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2271d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMInt16Type(void) { 22822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInt16TypeInContext(LLVMGetGlobalContext()); 2291d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2301d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMInt32Type(void) { 23122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInt32TypeInContext(LLVMGetGlobalContext()); 2321d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2331d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMInt64Type(void) { 23422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInt64TypeInContext(LLVMGetGlobalContext()); 2351d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 23681a788176ecf158432af2b208b0a85321e5ec74aGordon HenriksenLLVMTypeRef LLVMIntType(unsigned NumBits) { 23722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMIntTypeInContext(LLVMGetGlobalContext(), NumBits); 2388b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2398b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 24046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetIntTypeWidth(LLVMTypeRef IntegerTy) { 2418b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<IntegerType>(IntegerTy)->getBitWidth(); 2428b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2438b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 2448b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on real types ............................................--*/ 2458b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 246ce16339930a2b03e53b4e6399ef59c092a7f2cfaDan GohmanLLVMTypeRef LLVMHalfTypeInContext(LLVMContextRef C) { 247ce16339930a2b03e53b4e6399ef59c092a7f2cfaDan Gohman return (LLVMTypeRef) Type::getHalfTy(*unwrap(C)); 248ce16339930a2b03e53b4e6399ef59c092a7f2cfaDan Gohman} 24922c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMFloatTypeInContext(LLVMContextRef C) { 25022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getFloatTy(*unwrap(C)); 25122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 25222c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMDoubleTypeInContext(LLVMContextRef C) { 25322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getDoubleTy(*unwrap(C)); 25422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 25522c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMX86FP80TypeInContext(LLVMContextRef C) { 25622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getX86_FP80Ty(*unwrap(C)); 25722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 25822c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMFP128TypeInContext(LLVMContextRef C) { 25922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getFP128Ty(*unwrap(C)); 26022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 26122c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMPPCFP128TypeInContext(LLVMContextRef C) { 26222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return (LLVMTypeRef) Type::getPPC_FP128Ty(*unwrap(C)); 26322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 264bb811a244567aa8a1522203f15588f4d001b7353Dale JohannesenLLVMTypeRef LLVMX86MMXTypeInContext(LLVMContextRef C) { 265bb811a244567aa8a1522203f15588f4d001b7353Dale Johannesen return (LLVMTypeRef) Type::getX86_MMXTy(*unwrap(C)); 266bb811a244567aa8a1522203f15588f4d001b7353Dale Johannesen} 26722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 268ce16339930a2b03e53b4e6399ef59c092a7f2cfaDan GohmanLLVMTypeRef LLVMHalfType(void) { 269ce16339930a2b03e53b4e6399ef59c092a7f2cfaDan Gohman return LLVMHalfTypeInContext(LLVMGetGlobalContext()); 270ce16339930a2b03e53b4e6399ef59c092a7f2cfaDan Gohman} 2711d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMFloatType(void) { 27222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMFloatTypeInContext(LLVMGetGlobalContext()); 2731d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2741d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMDoubleType(void) { 27522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMDoubleTypeInContext(LLVMGetGlobalContext()); 2761d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2771d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMX86FP80Type(void) { 27822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMX86FP80TypeInContext(LLVMGetGlobalContext()); 2791d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2801d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMFP128Type(void) { 28122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMFP128TypeInContext(LLVMGetGlobalContext()); 2821d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 2831d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMPPCFP128Type(void) { 28422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMPPCFP128TypeInContext(LLVMGetGlobalContext()); 2851d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 286bb811a244567aa8a1522203f15588f4d001b7353Dale JohannesenLLVMTypeRef LLVMX86MMXType(void) { 287bb811a244567aa8a1522203f15588f4d001b7353Dale Johannesen return LLVMX86MMXTypeInContext(LLVMGetGlobalContext()); 288bb811a244567aa8a1522203f15588f4d001b7353Dale Johannesen} 2898b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 2908b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on function types ........................................--*/ 2918b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 29281a788176ecf158432af2b208b0a85321e5ec74aGordon HenriksenLLVMTypeRef LLVMFunctionType(LLVMTypeRef ReturnType, 29381a788176ecf158432af2b208b0a85321e5ec74aGordon Henriksen LLVMTypeRef *ParamTypes, unsigned ParamCount, 294d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool IsVarArg) { 295d155945f15f73eb5619756d94e69b5bc5319d89aFrits van Bommel ArrayRef<Type*> Tys(unwrap(ParamTypes), ParamCount); 296debcb01b0f0a15f568ca69e8f288fade4bfc7297Owen Anderson return wrap(FunctionType::get(unwrap(ReturnType), Tys, IsVarArg != 0)); 2978b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 2988b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 299d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsFunctionVarArg(LLVMTypeRef FunctionTy) { 3008b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<FunctionType>(FunctionTy)->isVarArg(); 3018b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3028b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 30346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMTypeRef LLVMGetReturnType(LLVMTypeRef FunctionTy) { 3048b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return wrap(unwrap<FunctionType>(FunctionTy)->getReturnType()); 3058b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3068b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 30746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMCountParamTypes(LLVMTypeRef FunctionTy) { 3088b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<FunctionType>(FunctionTy)->getNumParams(); 3098b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3108b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 31146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMGetParamTypes(LLVMTypeRef FunctionTy, LLVMTypeRef *Dest) { 3128b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen FunctionType *Ty = unwrap<FunctionType>(FunctionTy); 3138b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen for (FunctionType::param_iterator I = Ty->param_begin(), 3148b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen E = Ty->param_end(); I != E; ++I) 3158b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen *Dest++ = wrap(*I); 3168b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3178b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 3188b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on struct types ..........................................--*/ 3198b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 32022c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMStructTypeInContext(LLVMContextRef C, LLVMTypeRef *ElementTypes, 321d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner unsigned ElementCount, LLVMBool Packed) { 322d155945f15f73eb5619756d94e69b5bc5319d89aFrits van Bommel ArrayRef<Type*> Tys(unwrap(ElementTypes), ElementCount); 32322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(StructType::get(*unwrap(C), Tys, Packed != 0)); 3248b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3258b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 32622c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMStructType(LLVMTypeRef *ElementTypes, 327d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner unsigned ElementCount, LLVMBool Packed) { 32822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMStructTypeInContext(LLVMGetGlobalContext(), ElementTypes, 32922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar ElementCount, Packed); 33022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 33122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 332d91aa14075d5c4c093ed1a84ea4b5397ce5f6eb4Chris LattnerLLVMTypeRef LLVMStructCreateNamed(LLVMContextRef C, const char *Name) 333d91aa14075d5c4c093ed1a84ea4b5397ce5f6eb4Chris Lattner{ 334c4d0e9fbddfe6b0ee5d5d7ef8eb1b341a8a242cfChris Lattner return wrap(StructType::create(*unwrap(C), Name)); 335d91aa14075d5c4c093ed1a84ea4b5397ce5f6eb4Chris Lattner} 336d91aa14075d5c4c093ed1a84ea4b5397ce5f6eb4Chris Lattner 337c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwinconst char *LLVMGetStructName(LLVMTypeRef Ty) 338c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwin{ 33931116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin StructType *Type = unwrap<StructType>(Ty); 34031116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin if (!Type->hasName()) 34131116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin return 0; 34231116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin return Type->getName().data(); 343c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwin} 344c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwin 345d91aa14075d5c4c093ed1a84ea4b5397ce5f6eb4Chris Lattnervoid LLVMStructSetBody(LLVMTypeRef StructTy, LLVMTypeRef *ElementTypes, 346d91aa14075d5c4c093ed1a84ea4b5397ce5f6eb4Chris Lattner unsigned ElementCount, LLVMBool Packed) { 347d155945f15f73eb5619756d94e69b5bc5319d89aFrits van Bommel ArrayRef<Type*> Tys(unwrap(ElementTypes), ElementCount); 348d91aa14075d5c4c093ed1a84ea4b5397ce5f6eb4Chris Lattner unwrap<StructType>(StructTy)->setBody(Tys, Packed != 0); 349d91aa14075d5c4c093ed1a84ea4b5397ce5f6eb4Chris Lattner} 35022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 35146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMCountStructElementTypes(LLVMTypeRef StructTy) { 3528b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<StructType>(StructTy)->getNumElements(); 3538b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3548b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 3558b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMGetStructElementTypes(LLVMTypeRef StructTy, LLVMTypeRef *Dest) { 3568b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen StructType *Ty = unwrap<StructType>(StructTy); 3578c6d1962107504e92a7413cbacc6afd5cc82cdc3Nick Lewycky for (StructType::element_iterator I = Ty->element_begin(), 3588b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen E = Ty->element_end(); I != E; ++I) 3598b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen *Dest++ = wrap(*I); 3608b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3618b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 362d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsPackedStruct(LLVMTypeRef StructTy) { 3638b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<StructType>(StructTy)->isPacked(); 3648b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3658b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 36661afc8820f2bc85f7b7158850a0250f9d8c1ebaaChris LattnerLLVMBool LLVMIsOpaqueStruct(LLVMTypeRef StructTy) { 36761afc8820f2bc85f7b7158850a0250f9d8c1ebaaChris Lattner return unwrap<StructType>(StructTy)->isOpaque(); 36861afc8820f2bc85f7b7158850a0250f9d8c1ebaaChris Lattner} 36961afc8820f2bc85f7b7158850a0250f9d8c1ebaaChris Lattner 37061afc8820f2bc85f7b7158850a0250f9d8c1ebaaChris LattnerLLVMTypeRef LLVMGetTypeByName(LLVMModuleRef M, const char *Name) { 37161afc8820f2bc85f7b7158850a0250f9d8c1ebaaChris Lattner return wrap(unwrap(M)->getTypeByName(Name)); 37261afc8820f2bc85f7b7158850a0250f9d8c1ebaaChris Lattner} 37361afc8820f2bc85f7b7158850a0250f9d8c1ebaaChris Lattner 3748b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on array, pointer, and vector types (sequence types) .....--*/ 3758b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 37657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon HenriksenLLVMTypeRef LLVMArrayType(LLVMTypeRef ElementType, unsigned ElementCount) { 377debcb01b0f0a15f568ca69e8f288fade4bfc7297Owen Anderson return wrap(ArrayType::get(unwrap(ElementType), ElementCount)); 3788b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3798b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 38057cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon HenriksenLLVMTypeRef LLVMPointerType(LLVMTypeRef ElementType, unsigned AddressSpace) { 381debcb01b0f0a15f568ca69e8f288fade4bfc7297Owen Anderson return wrap(PointerType::get(unwrap(ElementType), AddressSpace)); 3828b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3838b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 38457cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon HenriksenLLVMTypeRef LLVMVectorType(LLVMTypeRef ElementType, unsigned ElementCount) { 385debcb01b0f0a15f568ca69e8f288fade4bfc7297Owen Anderson return wrap(VectorType::get(unwrap(ElementType), ElementCount)); 3868b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3878b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 3888b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMTypeRef LLVMGetElementType(LLVMTypeRef Ty) { 3898b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return wrap(unwrap<SequentialType>(Ty)->getElementType()); 3908b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3918b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 3928b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenunsigned LLVMGetArrayLength(LLVMTypeRef ArrayTy) { 3938b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<ArrayType>(ArrayTy)->getNumElements(); 3948b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 3958b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 39657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenunsigned LLVMGetPointerAddressSpace(LLVMTypeRef PointerTy) { 39757cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen return unwrap<PointerType>(PointerTy)->getAddressSpace(); 39857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen} 39957cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 4008b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenunsigned LLVMGetVectorSize(LLVMTypeRef VectorTy) { 4018b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<VectorType>(VectorTy)->getNumElements(); 4028b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4038b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 4048b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on other types ...........................................--*/ 4058b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 40622c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMVoidTypeInContext(LLVMContextRef C) { 40722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(Type::getVoidTy(*unwrap(C))); 40822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 40922c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMTypeRef LLVMLabelTypeInContext(LLVMContextRef C) { 41022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(Type::getLabelTy(*unwrap(C))); 41122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 41222c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 4131d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMVoidType(void) { 41422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMVoidTypeInContext(LLVMGetGlobalContext()); 4151d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 4161d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen AndersonLLVMTypeRef LLVMLabelType(void) { 41722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMLabelTypeInContext(LLVMGetGlobalContext()); 4181d0be15f89cb5056e20e2d24faa8d6afb1573bcaOwen Anderson} 4198b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 4208b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*===-- Operations on values ----------------------------------------------===*/ 4218b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 4228b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on all values ............................................--*/ 4238b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 42446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMTypeRef LLVMTypeOf(LLVMValueRef Val) { 4258b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return wrap(unwrap(Val)->getType()); 4268b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4278b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 4288b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenconst char *LLVMGetValueName(LLVMValueRef Val) { 42993b67e40de356569493c285b86b138a3f11b5035Daniel Dunbar return unwrap(Val)->getName().data(); 4308b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4318b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 4328b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetValueName(LLVMValueRef Val, const char *Name) { 4338b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap(Val)->setName(Name); 4348b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 4358b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 43688cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksenvoid LLVMDumpValue(LLVMValueRef Val) { 43788cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksen unwrap(Val)->dump(); 43888cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksen} 43988cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksen 440885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattnervoid LLVMReplaceAllUsesWith(LLVMValueRef OldVal, LLVMValueRef NewVal) { 441885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner unwrap(OldVal)->replaceAllUsesWith(unwrap(NewVal)); 442885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 4432a9c671a51126def8020870103316e6aedc73edfGordon Henriksen 44446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarint LLVMHasMetadata(LLVMValueRef Inst) { 44546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar return unwrap<Instruction>(Inst)->hasMetadata(); 44646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 44746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 44846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick TryzelaarLLVMValueRef LLVMGetMetadata(LLVMValueRef Inst, unsigned KindID) { 44946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar return wrap(unwrap<Instruction>(Inst)->getMetadata(KindID)); 45046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 45146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 45246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarvoid LLVMSetMetadata(LLVMValueRef Inst, unsigned KindID, LLVMValueRef MD) { 45346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar unwrap<Instruction>(Inst)->setMetadata(KindID, MD? unwrap<MDNode>(MD) : NULL); 45446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 45546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 4562a9c671a51126def8020870103316e6aedc73edfGordon Henriksen/*--.. Conversion functions ................................................--*/ 4572a9c671a51126def8020870103316e6aedc73edfGordon Henriksen 4582a9c671a51126def8020870103316e6aedc73edfGordon Henriksen#define LLVM_DEFINE_VALUE_CAST(name) \ 4592a9c671a51126def8020870103316e6aedc73edfGordon Henriksen LLVMValueRef LLVMIsA##name(LLVMValueRef Val) { \ 4602a9c671a51126def8020870103316e6aedc73edfGordon Henriksen return wrap(static_cast<Value*>(dyn_cast_or_null<name>(unwrap(Val)))); \ 4612a9c671a51126def8020870103316e6aedc73edfGordon Henriksen } 4622a9c671a51126def8020870103316e6aedc73edfGordon Henriksen 4632a9c671a51126def8020870103316e6aedc73edfGordon HenriksenLLVM_FOR_EACH_VALUE_SUBCLASS(LLVM_DEFINE_VALUE_CAST) 4642a9c671a51126def8020870103316e6aedc73edfGordon Henriksen 465885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner/*--.. Operations on Uses ..................................................--*/ 46624b3733425511cf60268fddda13c306ab140b55fErick TryzelaarLLVMUseRef LLVMGetFirstUse(LLVMValueRef Val) { 467885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Value *V = unwrap(Val); 468885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Value::use_iterator I = V->use_begin(); 469885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner if (I == V->use_end()) 470885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return 0; 471885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return wrap(&(I.getUse())); 472885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 473885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 47424b3733425511cf60268fddda13c306ab140b55fErick TryzelaarLLVMUseRef LLVMGetNextUse(LLVMUseRef U) { 47524b3733425511cf60268fddda13c306ab140b55fErick Tryzelaar Use *Next = unwrap(U)->getNext(); 47624b3733425511cf60268fddda13c306ab140b55fErick Tryzelaar if (Next) 47724b3733425511cf60268fddda13c306ab140b55fErick Tryzelaar return wrap(Next); 47824b3733425511cf60268fddda13c306ab140b55fErick Tryzelaar return 0; 479885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 480885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 48124b3733425511cf60268fddda13c306ab140b55fErick TryzelaarLLVMValueRef LLVMGetUser(LLVMUseRef U) { 48224b3733425511cf60268fddda13c306ab140b55fErick Tryzelaar return wrap(unwrap(U)->getUser()); 483885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 484885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 48524b3733425511cf60268fddda13c306ab140b55fErick TryzelaarLLVMValueRef LLVMGetUsedValue(LLVMUseRef U) { 48624b3733425511cf60268fddda13c306ab140b55fErick Tryzelaar return wrap(unwrap(U)->get()); 487885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 488885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 489885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner/*--.. Operations on Users .................................................--*/ 490885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMValueRef LLVMGetOperand(LLVMValueRef Val, unsigned Index) { 4914f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin Value *V = unwrap(Val); 4924f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin if (MDNode *MD = dyn_cast<MDNode>(V)) 4934f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin return wrap(MD->getOperand(Index)); 4944f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin return wrap(cast<User>(V)->getOperand(Index)); 495885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 4962a9c671a51126def8020870103316e6aedc73edfGordon Henriksen 497f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaarvoid LLVMSetOperand(LLVMValueRef Val, unsigned Index, LLVMValueRef Op) { 498f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar unwrap<User>(Val)->setOperand(Index, unwrap(Op)); 499f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar} 500f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar 501f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaarint LLVMGetNumOperands(LLVMValueRef Val) { 5024f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin Value *V = unwrap(Val); 5034f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin if (MDNode *MD = dyn_cast<MDNode>(V)) 5044f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin return MD->getNumOperands(); 5054f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin return cast<User>(V)->getNumOperands(); 506f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar} 507f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar 5088b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on constants of any type .................................--*/ 5098b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 510e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstNull(LLVMTypeRef Ty) { 511a7235ea7245028a0723e8ab7fd011386b3900777Owen Anderson return wrap(Constant::getNullValue(unwrap(Ty))); 5128b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 5138b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 514e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstAllOnes(LLVMTypeRef Ty) { 515a7235ea7245028a0723e8ab7fd011386b3900777Owen Anderson return wrap(Constant::getAllOnesValue(unwrap(Ty))); 5168b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 5178b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 5188b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMValueRef LLVMGetUndef(LLVMTypeRef Ty) { 5199e9a0d5fc26878e51a58a8b57900fcbf952c2691Owen Anderson return wrap(UndefValue::get(unwrap(Ty))); 5208b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 5218b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 522d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsConstant(LLVMValueRef Ty) { 523344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen return isa<Constant>(unwrap(Ty)); 524344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen} 525344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen 526d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsNull(LLVMValueRef Val) { 5278b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen if (Constant *C = dyn_cast<Constant>(unwrap(Val))) 5288b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return C->isNullValue(); 5298b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return false; 5308b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 5318b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 532d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsUndef(LLVMValueRef Val) { 533344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen return isa<UndefValue>(unwrap(Val)); 534344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen} 535344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksen 536e4840bc611f8260065d3879a412ea3b501550995Chris LattnerLLVMValueRef LLVMConstPointerNull(LLVMTypeRef Ty) { 53762e744b555d48b4c8b9023739fef8ae403bb20e8Owen Anderson return 5389e9a0d5fc26878e51a58a8b57900fcbf952c2691Owen Anderson wrap(ConstantPointerNull::get(unwrap<PointerType>(Ty))); 539e4840bc611f8260065d3879a412ea3b501550995Chris Lattner} 540e4840bc611f8260065d3879a412ea3b501550995Chris Lattner 54146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar/*--.. Operations on metadata nodes ........................................--*/ 54246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 54346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick TryzelaarLLVMValueRef LLVMMDStringInContext(LLVMContextRef C, const char *Str, 54446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar unsigned SLen) { 54546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar return wrap(MDString::get(*unwrap(C), StringRef(Str, SLen))); 54646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 54746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 54846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick TryzelaarLLVMValueRef LLVMMDString(const char *Str, unsigned SLen) { 54946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar return LLVMMDStringInContext(LLVMGetGlobalContext(), Str, SLen); 55046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 55146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 55246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick TryzelaarLLVMValueRef LLVMMDNodeInContext(LLVMContextRef C, LLVMValueRef *Vals, 55346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar unsigned Count) { 554ec9186bcf975c9ffa3ec7ca97867f0ec6eb55115Jay Foad return wrap(MDNode::get(*unwrap(C), 55539b5abf507b43da6b92f68b86406e0015ead18e9Frits van Bommel makeArrayRef(unwrap<Value>(Vals, Count), Count))); 55646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 55746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 55846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick TryzelaarLLVMValueRef LLVMMDNode(LLVMValueRef *Vals, unsigned Count) { 55946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar return LLVMMDNodeInContext(LLVMGetGlobalContext(), Vals, Count); 56046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 56146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 5624f661ab0fb87f97c4a12912249c3c366df882102Torok Edwinconst char *LLVMGetMDString(LLVMValueRef V, unsigned* Len) { 56331116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin if (const MDString *S = dyn_cast<MDString>(unwrap(V))) { 56431116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin *Len = S->getString().size(); 56531116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin return S->getString().data(); 56631116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin } 56731116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin *Len = 0; 56831116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin return 0; 5694f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin} 5704f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin 5714f661ab0fb87f97c4a12912249c3c366df882102Torok Edwinunsigned LLVMGetNamedMetadataNumOperands(LLVMModuleRef M, const char* name) 5724f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin{ 57331116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin if (NamedMDNode *N = unwrap(M)->getNamedMetadata(name)) { 57431116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin return N->getNumOperands(); 57531116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin } 57631116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin return 0; 5774f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin} 5784f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin 5794f661ab0fb87f97c4a12912249c3c366df882102Torok Edwinvoid LLVMGetNamedMetadataOperands(LLVMModuleRef M, const char* name, LLVMValueRef *Dest) 5804f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin{ 58131116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin NamedMDNode *N = unwrap(M)->getNamedMetadata(name); 58231116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin if (!N) 58331116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin return; 58431116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin for (unsigned i=0;i<N->getNumOperands();i++) 58531116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin Dest[i] = wrap(N->getOperand(i)); 5864f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin} 5874f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin 58845ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patelvoid LLVMAddNamedMetadataOperand(LLVMModuleRef M, const char* name, 58945ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patel LLVMValueRef Val) 59045ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patel{ 59145ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patel NamedMDNode *N = unwrap(M)->getOrInsertNamedMetadata(name); 59245ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patel if (!N) 59345ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patel return; 59445ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patel MDNode *Op = Val ? unwrap<MDNode>(Val) : NULL; 59545ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patel if (Op) 59645ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patel N->addOperand(Op); 59745ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patel} 59845ca049f1f221f5fc1a118f6aab83ac290cb8211Devang Patel 5998b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on scalar constants ......................................--*/ 6008b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 601e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstInt(LLVMTypeRef IntTy, unsigned long long N, 602d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool SignExtend) { 603eed707b1e6097aac2bb6b3d47271f6300ace7f2eOwen Anderson return wrap(ConstantInt::get(unwrap<IntegerType>(IntTy), N, SignExtend != 0)); 6048b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 6058b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 6065400570097a25f05694d451afed7f949281b789eChris LattnerLLVMValueRef LLVMConstIntOfArbitraryPrecision(LLVMTypeRef IntTy, 6075400570097a25f05694d451afed7f949281b789eChris Lattner unsigned NumWords, 6085400570097a25f05694d451afed7f949281b789eChris Lattner const uint64_t Words[]) { 6095400570097a25f05694d451afed7f949281b789eChris Lattner IntegerType *Ty = unwrap<IntegerType>(IntTy); 6105400570097a25f05694d451afed7f949281b789eChris Lattner return wrap(ConstantInt::get(Ty->getContext(), 6113ba292dbc2acee2d1052fb7ffe332e2164147b47Jeffrey Yasskin APInt(Ty->getBitWidth(), 6123ba292dbc2acee2d1052fb7ffe332e2164147b47Jeffrey Yasskin makeArrayRef(Words, NumWords)))); 6135400570097a25f05694d451afed7f949281b789eChris Lattner} 6145400570097a25f05694d451afed7f949281b789eChris Lattner 615e0a1bf64c9885df16bf596447d037f1c75f92637Erick TryzelaarLLVMValueRef LLVMConstIntOfString(LLVMTypeRef IntTy, const char Str[], 616e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar uint8_t Radix) { 617e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar return wrap(ConstantInt::get(unwrap<IntegerType>(IntTy), StringRef(Str), 618e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar Radix)); 619e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar} 620e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar 621e0a1bf64c9885df16bf596447d037f1c75f92637Erick TryzelaarLLVMValueRef LLVMConstIntOfStringAndSize(LLVMTypeRef IntTy, const char Str[], 622e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar unsigned SLen, uint8_t Radix) { 623e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar return wrap(ConstantInt::get(unwrap<IntegerType>(IntTy), StringRef(Str, SLen), 624e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar Radix)); 625e62a8a353c3b21b551c00b9025800d3352e5349eGordon Henriksen} 626e62a8a353c3b21b551c00b9025800d3352e5349eGordon Henriksen 627e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstReal(LLVMTypeRef RealTy, double N) { 628e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar return wrap(ConstantFP::get(unwrap(RealTy), N)); 629e62a8a353c3b21b551c00b9025800d3352e5349eGordon Henriksen} 630e62a8a353c3b21b551c00b9025800d3352e5349eGordon Henriksen 631e62a8a353c3b21b551c00b9025800d3352e5349eGordon HenriksenLLVMValueRef LLVMConstRealOfString(LLVMTypeRef RealTy, const char *Text) { 632e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar return wrap(ConstantFP::get(unwrap(RealTy), StringRef(Text))); 633e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar} 634e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar 635e0a1bf64c9885df16bf596447d037f1c75f92637Erick TryzelaarLLVMValueRef LLVMConstRealOfStringAndSize(LLVMTypeRef RealTy, const char Str[], 636e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar unsigned SLen) { 637e0a1bf64c9885df16bf596447d037f1c75f92637Erick Tryzelaar return wrap(ConstantFP::get(unwrap(RealTy), StringRef(Str, SLen))); 6388b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 6398b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 640885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattnerunsigned long long LLVMConstIntGetZExtValue(LLVMValueRef ConstantVal) { 641885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return unwrap<ConstantInt>(ConstantVal)->getZExtValue(); 642885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 643885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 644885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattnerlong long LLVMConstIntGetSExtValue(LLVMValueRef ConstantVal) { 645885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return unwrap<ConstantInt>(ConstantVal)->getSExtValue(); 646885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 647885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 6488b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on composite constants ...................................--*/ 6498b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 65022c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMValueRef LLVMConstStringInContext(LLVMContextRef C, const char *Str, 651d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner unsigned Length, 652d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool DontNullTerminate) { 6538b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen /* Inverted the sense of AddNull because ', 0)' is a 6548b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen better mnemonic for null termination than ', 1)'. */ 65518c7f80b3e83ab584bd8572695a3cde8bafd9d3cChris Lattner return wrap(ConstantDataArray::getString(*unwrap(C), StringRef(Str, Length), 65618c7f80b3e83ab584bd8572695a3cde8bafd9d3cChris Lattner DontNullTerminate == 0)); 6578b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 65822c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMValueRef LLVMConstStructInContext(LLVMContextRef C, 65922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar LLVMValueRef *ConstantVals, 660d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner unsigned Count, LLVMBool Packed) { 661b065b06c12dba6001b8140df2744d0c856ef6ea1Chris Lattner Constant **Elements = unwrap<Constant>(ConstantVals, Count); 66239b5abf507b43da6b92f68b86406e0015ead18e9Frits van Bommel return wrap(ConstantStruct::getAnon(*unwrap(C), makeArrayRef(Elements, Count), 663b065b06c12dba6001b8140df2744d0c856ef6ea1Chris Lattner Packed != 0)); 66422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 6658b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 66622c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMValueRef LLVMConstString(const char *Str, unsigned Length, 667d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool DontNullTerminate) { 66822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMConstStringInContext(LLVMGetGlobalContext(), Str, Length, 66922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar DontNullTerminate); 67022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 671e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstArray(LLVMTypeRef ElementTy, 672e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen LLVMValueRef *ConstantVals, unsigned Length) { 673267010864e139781ef5949939e081c41f954de0aJay Foad ArrayRef<Constant*> V(unwrap<Constant>(ConstantVals, Length), Length); 674267010864e139781ef5949939e081c41f954de0aJay Foad return wrap(ConstantArray::get(ArrayType::get(unwrap(ElementTy), Length), V)); 6758b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 676e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstStruct(LLVMValueRef *ConstantVals, unsigned Count, 677d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool Packed) { 67822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMConstStructInContext(LLVMGetGlobalContext(), ConstantVals, Count, 67922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar Packed); 6808b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 68164090bd2d468ec70b9644bdf492684dd278de8a7Rafael Espindola 68264090bd2d468ec70b9644bdf492684dd278de8a7Rafael EspindolaLLVMValueRef LLVMConstNamedStruct(LLVMTypeRef StructTy, 68364090bd2d468ec70b9644bdf492684dd278de8a7Rafael Espindola LLVMValueRef *ConstantVals, 68464090bd2d468ec70b9644bdf492684dd278de8a7Rafael Espindola unsigned Count) { 68564090bd2d468ec70b9644bdf492684dd278de8a7Rafael Espindola Constant **Elements = unwrap<Constant>(ConstantVals, Count); 686db125cfaf57cc83e7dd7453de2d509bc8efd0e5eChris Lattner StructType *Ty = cast<StructType>(unwrap(StructTy)); 68764090bd2d468ec70b9644bdf492684dd278de8a7Rafael Espindola 68839b5abf507b43da6b92f68b86406e0015ead18e9Frits van Bommel return wrap(ConstantStruct::get(Ty, makeArrayRef(Elements, Count))); 68964090bd2d468ec70b9644bdf492684dd278de8a7Rafael Espindola} 69064090bd2d468ec70b9644bdf492684dd278de8a7Rafael Espindola 691e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon HenriksenLLVMValueRef LLVMConstVector(LLVMValueRef *ScalarConstantVals, unsigned Size) { 69239b5abf507b43da6b92f68b86406e0015ead18e9Frits van Bommel return wrap(ConstantVector::get(makeArrayRef( 6932ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner unwrap<Constant>(ScalarConstantVals, Size), Size))); 6948b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 6954df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin 6964df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin/*-- Opcode mapping */ 6974df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin 6984df1557f4073cd91893a186acfee96bee64b28ccTorok Edwinstatic LLVMOpcode map_to_llvmopcode(int opcode) 6994df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin{ 7004df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin switch (opcode) { 70150bee42b54cd9aec5f49566307df2b0cf23afcf6Craig Topper default: llvm_unreachable("Unhandled Opcode."); 7024df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin#define HANDLE_INST(num, opc, clas) case num: return LLVM##opc; 7034df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin#include "llvm/Instruction.def" 7044df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin#undef HANDLE_INST 7054df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin } 7064df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin} 7074df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin 7084df1557f4073cd91893a186acfee96bee64b28ccTorok Edwinstatic int map_from_llvmopcode(LLVMOpcode code) 7094df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin{ 7104df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin switch (code) { 7114df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin#define HANDLE_INST(num, opc, clas) case LLVM##opc: return num; 7124df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin#include "llvm/Instruction.def" 7134df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin#undef HANDLE_INST 7144df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin } 7152dd674fdce68f8fd59d78a3bbab2cf5b8d220290David Blaikie llvm_unreachable("Unhandled Opcode."); 7164df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin} 7174df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin 7184647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen/*--.. Constant expressions ................................................--*/ 7194647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 720885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMOpcode LLVMGetConstOpcode(LLVMValueRef ConstantVal) { 7214df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin return map_to_llvmopcode(unwrap<ConstantExpr>(ConstantVal)->getOpcode()); 722885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 723885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 724ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan SandsLLVMValueRef LLVMAlignOf(LLVMTypeRef Ty) { 725baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getAlignOf(unwrap(Ty))); 726ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands} 727ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands 7284647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMSizeOf(LLVMTypeRef Ty) { 729baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSizeOf(unwrap(Ty))); 7304647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7314647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstNeg(LLVMValueRef ConstantVal) { 7332ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getNeg(unwrap<Constant>(ConstantVal))); 73456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 73556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 73619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNSWNeg(LLVMValueRef ConstantVal) { 7372ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getNSWNeg(unwrap<Constant>(ConstantVal))); 73819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 73919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 74019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNUWNeg(LLVMValueRef ConstantVal) { 7412ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getNUWNeg(unwrap<Constant>(ConstantVal))); 74219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 74319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 74419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 74556b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFNeg(LLVMValueRef ConstantVal) { 7462ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getFNeg(unwrap<Constant>(ConstantVal))); 7474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7484647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7494647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstNot(LLVMValueRef ConstantVal) { 7502ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getNot(unwrap<Constant>(ConstantVal))); 7514647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7524647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7534647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 7542ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getAdd(unwrap<Constant>(LHSConstant), 7554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7564647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7574647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7586e7ad958683f34bf6c014c88fef723e5a2d741beDan GohmanLLVMValueRef LLVMConstNSWAdd(LLVMValueRef LHSConstant, 7596e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman LLVMValueRef RHSConstant) { 7602ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getNSWAdd(unwrap<Constant>(LHSConstant), 7616e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unwrap<Constant>(RHSConstant))); 7626e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman} 7636e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman 76419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNUWAdd(LLVMValueRef LHSConstant, 76519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar LLVMValueRef RHSConstant) { 7662ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getNUWAdd(unwrap<Constant>(LHSConstant), 76719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(RHSConstant))); 76819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 76919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 77056b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 7712ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getFAdd(unwrap<Constant>(LHSConstant), 77256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(RHSConstant))); 77356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 77456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 7754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 7762ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getSub(unwrap<Constant>(LHSConstant), 7774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 7784647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 7794647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 78019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNSWSub(LLVMValueRef LHSConstant, 78119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar LLVMValueRef RHSConstant) { 7822ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getNSWSub(unwrap<Constant>(LHSConstant), 78319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(RHSConstant))); 78419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 78519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 78619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNUWSub(LLVMValueRef LHSConstant, 78719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar LLVMValueRef RHSConstant) { 7882ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getNUWSub(unwrap<Constant>(LHSConstant), 78919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(RHSConstant))); 79019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 79119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 79256b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 79356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar return wrap(ConstantExpr::getFSub(unwrap<Constant>(LHSConstant), 79456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(RHSConstant))); 79556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 79656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 7974647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 7982ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getMul(unwrap<Constant>(LHSConstant), 7994647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8014647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 80219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNSWMul(LLVMValueRef LHSConstant, 80319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar LLVMValueRef RHSConstant) { 8042ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getNSWMul(unwrap<Constant>(LHSConstant), 80519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(RHSConstant))); 80619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 80719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 80819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMConstNUWMul(LLVMValueRef LHSConstant, 80919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar LLVMValueRef RHSConstant) { 8102ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getNUWMul(unwrap<Constant>(LHSConstant), 81119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unwrap<Constant>(RHSConstant))); 81219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 81319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 81456b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8152ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getFMul(unwrap<Constant>(LHSConstant), 81656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap<Constant>(RHSConstant))); 81756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 81856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 8194647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstUDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8202ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getUDiv(unwrap<Constant>(LHSConstant), 8214647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8234647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8252ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getSDiv(unwrap<Constant>(LHSConstant), 8264647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8274647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8284647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8296e7ad958683f34bf6c014c88fef723e5a2d741beDan GohmanLLVMValueRef LLVMConstExactSDiv(LLVMValueRef LHSConstant, 8306e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman LLVMValueRef RHSConstant) { 8312ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getExactSDiv(unwrap<Constant>(LHSConstant), 8326e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unwrap<Constant>(RHSConstant))); 8336e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman} 8346e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman 8354647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8362ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getFDiv(unwrap<Constant>(LHSConstant), 8374647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8394647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8404647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstURem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8412ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getURem(unwrap<Constant>(LHSConstant), 8424647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8434647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8454647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8462ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getSRem(unwrap<Constant>(LHSConstant), 8474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8484647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8494647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8512ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getFRem(unwrap<Constant>(LHSConstant), 8524647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8534647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8544647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstAnd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8562ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getAnd(unwrap<Constant>(LHSConstant), 8574647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8584647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8594647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8604647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstOr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8612ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getOr(unwrap<Constant>(LHSConstant), 8624647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8634647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8644647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8654647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstXor(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8662ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getXor(unwrap<Constant>(LHSConstant), 8674647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8684647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8704647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstICmp(LLVMIntPredicate Predicate, 8714647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 872baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getICmp(Predicate, 8734647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(LHSConstant), 8744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8764647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFCmp(LLVMRealPredicate Predicate, 8784647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 879baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFCmp(Predicate, 8804647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(LHSConstant), 8814647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8824647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8834647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8844647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstShl(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8852ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getShl(unwrap<Constant>(LHSConstant), 8862ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner unwrap<Constant>(RHSConstant))); 8874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8884647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8894647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstLShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8902ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getLShr(unwrap<Constant>(LHSConstant), 8914647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8944647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstAShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant) { 8952ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getAShr(unwrap<Constant>(LHSConstant), 8964647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(RHSConstant))); 8974647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 8984647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 8994647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstGEP(LLVMValueRef ConstantVal, 9004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef *ConstantIndices, unsigned NumIndices) { 901dab3d29605a5c83db41b28176273ef55961120c1Jay Foad ArrayRef<Constant *> IdxList(unwrap<Constant>(ConstantIndices, NumIndices), 902dab3d29605a5c83db41b28176273ef55961120c1Jay Foad NumIndices); 9032ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getGetElementPtr(unwrap<Constant>(ConstantVal), 904dab3d29605a5c83db41b28176273ef55961120c1Jay Foad IdxList)); 9054647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9064647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9076e7ad958683f34bf6c014c88fef723e5a2d741beDan GohmanLLVMValueRef LLVMConstInBoundsGEP(LLVMValueRef ConstantVal, 9086e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman LLVMValueRef *ConstantIndices, 9096e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman unsigned NumIndices) { 9106e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman Constant* Val = unwrap<Constant>(ConstantVal); 911dab3d29605a5c83db41b28176273ef55961120c1Jay Foad ArrayRef<Constant *> IdxList(unwrap<Constant>(ConstantIndices, NumIndices), 912dab3d29605a5c83db41b28176273ef55961120c1Jay Foad NumIndices); 913dab3d29605a5c83db41b28176273ef55961120c1Jay Foad return wrap(ConstantExpr::getInBoundsGetElementPtr(Val, IdxList)); 9146e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman} 9156e7ad958683f34bf6c014c88fef723e5a2d741beDan Gohman 9164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 9172ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getTrunc(unwrap<Constant>(ConstantVal), 9184647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9194647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9204647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9214647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 9222ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getSExt(unwrap<Constant>(ConstantVal), 9234647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9254647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9264647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstZExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 9272ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getZExt(unwrap<Constant>(ConstantVal), 9284647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9294647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9304647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9314647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 9322ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getFPTrunc(unwrap<Constant>(ConstantVal), 9334647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9354647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9364647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 9372ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getFPExtend(unwrap<Constant>(ConstantVal), 9384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9394647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9404647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9414647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstUIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 9422ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getUIToFP(unwrap<Constant>(ConstantVal), 9434647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9454647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9464647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 947baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getSIToFP(unwrap<Constant>(ConstantVal), 9484647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9494647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9514647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPToUI(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 952baf3c404409d5e47b13984a7f95bfbd6d1f2e79eOwen Anderson return wrap(ConstantExpr::getFPToUI(unwrap<Constant>(ConstantVal), 9534647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9544647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9564647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstFPToSI(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 9572ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getFPToSI(unwrap<Constant>(ConstantVal), 9584647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9594647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9604647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9614647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstPtrToInt(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 9622ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getPtrToInt(unwrap<Constant>(ConstantVal), 9634647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9644647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9654647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9664647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstIntToPtr(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 9672ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getIntToPtr(unwrap<Constant>(ConstantVal), 9684647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9704647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9714647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstBitCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 9722ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getBitCast(unwrap<Constant>(ConstantVal), 9734647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap(ToType))); 9744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 9754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 97656b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstZExtOrBitCast(LLVMValueRef ConstantVal, 97756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 9782ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getZExtOrBitCast(unwrap<Constant>(ConstantVal), 97956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 98056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 98156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 98256b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstSExtOrBitCast(LLVMValueRef ConstantVal, 98356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 9842ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getSExtOrBitCast(unwrap<Constant>(ConstantVal), 98556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 98656b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 98756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 98856b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstTruncOrBitCast(LLVMValueRef ConstantVal, 98956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 9902ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getTruncOrBitCast(unwrap<Constant>(ConstantVal), 99156b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 99256b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 99356b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 99456b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstPointerCast(LLVMValueRef ConstantVal, 99556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar LLVMTypeRef ToType) { 9962ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getPointerCast(unwrap<Constant>(ConstantVal), 99756b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 99856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 99956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 100056b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstIntCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType, 1001d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool isSigned) { 10022ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getIntegerCast(unwrap<Constant>(ConstantVal), 10032ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner unwrap(ToType), isSigned)); 100456b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 100556b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 100656b22697d81cc4f520e3023e914f38081b9b6a0cErick TryzelaarLLVMValueRef LLVMConstFPCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType) { 10072ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getFPCast(unwrap<Constant>(ConstantVal), 100856b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar unwrap(ToType))); 100956b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar} 101056b22697d81cc4f520e3023e914f38081b9b6a0cErick Tryzelaar 10114647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstSelect(LLVMValueRef ConstantCondition, 10124647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef ConstantIfTrue, 10134647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef ConstantIfFalse) { 10142ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getSelect(unwrap<Constant>(ConstantCondition), 10154647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ConstantIfTrue), 10164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ConstantIfFalse))); 10174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 10184647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 10194647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstExtractElement(LLVMValueRef VectorConstant, 10204647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef IndexConstant) { 10212ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getExtractElement(unwrap<Constant>(VectorConstant), 10224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(IndexConstant))); 10234647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 10244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 10254647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstInsertElement(LLVMValueRef VectorConstant, 10264647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef ElementValueConstant, 10274647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef IndexConstant) { 10282ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getInsertElement(unwrap<Constant>(VectorConstant), 10294647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(ElementValueConstant), 10304647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(IndexConstant))); 10314647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 10324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 10334647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon HenriksenLLVMValueRef LLVMConstShuffleVector(LLVMValueRef VectorAConstant, 10344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef VectorBConstant, 10354647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen LLVMValueRef MaskConstant) { 10362ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getShuffleVector(unwrap<Constant>(VectorAConstant), 10374647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(VectorBConstant), 10384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen unwrap<Constant>(MaskConstant))); 10394647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen} 10408b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1041b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMConstExtractValue(LLVMValueRef AggConstant, unsigned *IdxList, 1042b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unsigned NumIdx) { 10432ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getExtractValue(unwrap<Constant>(AggConstant), 104439b5abf507b43da6b92f68b86406e0015ead18e9Frits van Bommel makeArrayRef(IdxList, NumIdx))); 1045b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 1046b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 1047b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMConstInsertValue(LLVMValueRef AggConstant, 1048b593117b44a74c72bc784080bb402576b3181d94Dan Gohman LLVMValueRef ElementValueConstant, 1049b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unsigned *IdxList, unsigned NumIdx) { 10502ca5c8644e6c35b3a7910a576ed89cddb7b82c3bChris Lattner return wrap(ConstantExpr::getInsertValue(unwrap<Constant>(AggConstant), 1051b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unwrap<Constant>(ElementValueConstant), 105239b5abf507b43da6b92f68b86406e0015ead18e9Frits van Bommel makeArrayRef(IdxList, NumIdx))); 1053b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 1054b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 1055d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMValueRef LLVMConstInlineAsm(LLVMTypeRef Ty, const char *AsmString, 1056d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner const char *Constraints, 1057d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool HasSideEffects, 1058d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool IsAlignStack) { 1059d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner return wrap(InlineAsm::get(dyn_cast<FunctionType>(unwrap(Ty)), AsmString, 10608ba2d5befc05ca73d3bac8708819bbbe759e2cf9Dale Johannesen Constraints, HasSideEffects, IsAlignStack)); 1061851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 1062851ba39dab544ad986f150aec9573add9d978397Chris Lattner 1063c59286bff1cca8c4fa15f390c9002db94117614eErick TryzelaarLLVMValueRef LLVMBlockAddress(LLVMValueRef F, LLVMBasicBlockRef BB) { 1064c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar return wrap(BlockAddress::get(unwrap<Function>(F), unwrap(BB))); 1065c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar} 1066c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar 10678b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on global variables, functions, and aliases (globals) ....--*/ 10688b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1069dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMModuleRef LLVMGetGlobalParent(LLVMValueRef Global) { 1070dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap<GlobalValue>(Global)->getParent()); 1071dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1072dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1073d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsDeclaration(LLVMValueRef Global) { 10748b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalValue>(Global)->isDeclaration(); 10758b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 10768b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 10778b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMLinkage LLVMGetLinkage(LLVMValueRef Global) { 10784aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling switch (unwrap<GlobalValue>(Global)->getLinkage()) { 10794aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::ExternalLinkage: 10804aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMExternalLinkage; 10814aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::AvailableExternallyLinkage: 10824aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMAvailableExternallyLinkage; 10834aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::LinkOnceAnyLinkage: 10844aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMLinkOnceAnyLinkage; 10854aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::LinkOnceODRLinkage: 10864aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMLinkOnceODRLinkage; 108732811bef956e0fae4329e6515420d85f7e510660Bill Wendling case GlobalValue::LinkOnceODRAutoHideLinkage: 108832811bef956e0fae4329e6515420d85f7e510660Bill Wendling return LLVMLinkOnceODRAutoHideLinkage; 10894aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::WeakAnyLinkage: 10904aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMWeakAnyLinkage; 10914aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::WeakODRLinkage: 10924aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMWeakODRLinkage; 10934aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::AppendingLinkage: 10944aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMAppendingLinkage; 10954aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::InternalLinkage: 10964aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMInternalLinkage; 10974aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::PrivateLinkage: 10984aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMPrivateLinkage; 10994aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::LinkerPrivateLinkage: 11004aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMLinkerPrivateLinkage; 11015e721d768254a920b78b9129d79a84c0163cb3f4Bill Wendling case GlobalValue::LinkerPrivateWeakLinkage: 11025e721d768254a920b78b9129d79a84c0163cb3f4Bill Wendling return LLVMLinkerPrivateWeakLinkage; 11034aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::DLLImportLinkage: 11044aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMDLLImportLinkage; 11054aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::DLLExportLinkage: 11064aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMDLLExportLinkage; 11074aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::ExternalWeakLinkage: 11084aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMExternalWeakLinkage; 11094aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case GlobalValue::CommonLinkage: 11104aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling return LLVMCommonLinkage; 11114aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling } 11124aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling 111358bd1510a4fea29b1ea57d6a6c4038eeea0264a2David Blaikie llvm_unreachable("Invalid GlobalValue linkage!"); 11148b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11158b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11168b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetLinkage(LLVMValueRef Global, LLVMLinkage Linkage) { 11174aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GlobalValue *GV = unwrap<GlobalValue>(Global); 11184aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling 11194aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling switch (Linkage) { 11204aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMExternalLinkage: 11214aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::ExternalLinkage); 11224aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11234aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMAvailableExternallyLinkage: 11244aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::AvailableExternallyLinkage); 11254aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11264aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMLinkOnceAnyLinkage: 11274aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::LinkOnceAnyLinkage); 11284aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11294aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMLinkOnceODRLinkage: 11304aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::LinkOnceODRLinkage); 11314aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 113232811bef956e0fae4329e6515420d85f7e510660Bill Wendling case LLVMLinkOnceODRAutoHideLinkage: 113332811bef956e0fae4329e6515420d85f7e510660Bill Wendling GV->setLinkage(GlobalValue::LinkOnceODRAutoHideLinkage); 113432811bef956e0fae4329e6515420d85f7e510660Bill Wendling break; 11354aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMWeakAnyLinkage: 11364aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::WeakAnyLinkage); 11374aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11384aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMWeakODRLinkage: 11394aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::WeakODRLinkage); 11404aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11414aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMAppendingLinkage: 11424aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::AppendingLinkage); 11434aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11444aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMInternalLinkage: 11454aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::InternalLinkage); 11464aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11474aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMPrivateLinkage: 11484aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::PrivateLinkage); 11494aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11504aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMLinkerPrivateLinkage: 11514aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::LinkerPrivateLinkage); 11524aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11535e721d768254a920b78b9129d79a84c0163cb3f4Bill Wendling case LLVMLinkerPrivateWeakLinkage: 11545e721d768254a920b78b9129d79a84c0163cb3f4Bill Wendling GV->setLinkage(GlobalValue::LinkerPrivateWeakLinkage); 11555e721d768254a920b78b9129d79a84c0163cb3f4Bill Wendling break; 11564aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMDLLImportLinkage: 11574aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::DLLImportLinkage); 11584aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11594aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMDLLExportLinkage: 11604aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::DLLExportLinkage); 11614aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11624aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMExternalWeakLinkage: 11634aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::ExternalWeakLinkage); 11644aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11654aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMGhostLinkage: 1166f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin DEBUG(errs() 1167f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin << "LLVMSetLinkage(): LLVMGhostLinkage is no longer supported."); 11684aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11694aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling case LLVMCommonLinkage: 11704aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling GV->setLinkage(GlobalValue::CommonLinkage); 11714aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling break; 11724aebcb4f5f69e545da86f7482a19a6a3902a5f9fBill Wendling } 11738b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11748b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11758b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenconst char *LLVMGetSection(LLVMValueRef Global) { 11768b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalValue>(Global)->getSection().c_str(); 11778b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11788b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11798b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetSection(LLVMValueRef Global, const char *Section) { 11808b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global)->setSection(Section); 11818b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11828b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11838b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMVisibility LLVMGetVisibility(LLVMValueRef Global) { 11848b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return static_cast<LLVMVisibility>( 11858b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global)->getVisibility()); 11868b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11878b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11888b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetVisibility(LLVMValueRef Global, LLVMVisibility Viz) { 11898b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global) 11908b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen ->setVisibility(static_cast<GlobalValue::VisibilityTypes>(Viz)); 11918b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11928b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11938b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenunsigned LLVMGetAlignment(LLVMValueRef Global) { 11948b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalValue>(Global)->getAlignment(); 11958b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 11968b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 11978b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetAlignment(LLVMValueRef Global, unsigned Bytes) { 11988b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalValue>(Global)->setAlignment(Bytes); 11998b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 12008b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 12018b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen/*--.. Operations on global variables ......................................--*/ 12028b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 12038b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMValueRef LLVMAddGlobal(LLVMModuleRef M, LLVMTypeRef Ty, const char *Name) { 1204e9b11b431308f4766b73cda93e38ec930c912122Owen Anderson return wrap(new GlobalVariable(*unwrap(M), unwrap(Ty), false, 1205e9b11b431308f4766b73cda93e38ec930c912122Owen Anderson GlobalValue::ExternalLinkage, 0, Name)); 12068b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 12078b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 12088e130b1d0d53346e05d0a1161a52c6d62de163c4Erick TryzelaarLLVMValueRef LLVMAddGlobalInAddressSpace(LLVMModuleRef M, LLVMTypeRef Ty, 12098e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar const char *Name, 12108e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar unsigned AddressSpace) { 12118e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar return wrap(new GlobalVariable(*unwrap(M), unwrap(Ty), false, 12126d52102b92aea76b677004a9e72dd84d2e50e163Duncan Sands GlobalValue::ExternalLinkage, 0, Name, 0, 1213ce718ff9f42c7da092eaa01dd0242e8d5ba84713Hans Wennborg GlobalVariable::NotThreadLocal, AddressSpace)); 12148e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar} 12158e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar 12166d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon HenriksenLLVMValueRef LLVMGetNamedGlobal(LLVMModuleRef M, const char *Name) { 12176d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen return wrap(unwrap(M)->getNamedGlobal(Name)); 12186d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen} 12196d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen 122034000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetFirstGlobal(LLVMModuleRef M) { 122134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 122234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = Mod->global_begin(); 122334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->global_end()) 122434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 122534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 122634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 122734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 122834000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetLastGlobal(LLVMModuleRef M) { 122934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 123034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = Mod->global_end(); 123134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->global_begin()) 123234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 123334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 123434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 123534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 123634000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetNextGlobal(LLVMValueRef GlobalVar) { 123734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen GlobalVariable *GV = unwrap<GlobalVariable>(GlobalVar); 123834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = GV; 123934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == GV->getParent()->global_end()) 124034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 124134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 124234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 124334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 124434000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetPreviousGlobal(LLVMValueRef GlobalVar) { 124534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen GlobalVariable *GV = unwrap<GlobalVariable>(GlobalVar); 124634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::global_iterator I = GV; 12474733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == GV->getParent()->global_begin()) 124834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 124934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 125034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 125134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 12528b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMDeleteGlobal(LLVMValueRef GlobalVar) { 12538b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalVariable>(GlobalVar)->eraseFromParent(); 12548b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 12558b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 12568b94a14a782867b1da1f272b6f502562d0c2a1aaGordon HenriksenLLVMValueRef LLVMGetInitializer(LLVMValueRef GlobalVar) { 1257885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner GlobalVariable* GV = unwrap<GlobalVariable>(GlobalVar); 1258885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner if ( !GV->hasInitializer() ) 1259885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return 0; 1260885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner return wrap(GV->getInitializer()); 12618b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 12628b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 12638b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksenvoid LLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal) { 12648b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalVariable>(GlobalVar) 12658b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen ->setInitializer(unwrap<Constant>(ConstantVal)); 12668b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 12678b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1268d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsThreadLocal(LLVMValueRef GlobalVar) { 12698b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen return unwrap<GlobalVariable>(GlobalVar)->isThreadLocal(); 12708b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 12718b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1272d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattnervoid LLVMSetThreadLocal(LLVMValueRef GlobalVar, LLVMBool IsThreadLocal) { 12738b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen unwrap<GlobalVariable>(GlobalVar)->setThreadLocal(IsThreadLocal != 0); 12748b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen} 12758b94a14a782867b1da1f272b6f502562d0c2a1aaGordon Henriksen 1276d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsGlobalConstant(LLVMValueRef GlobalVar) { 1277c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen return unwrap<GlobalVariable>(GlobalVar)->isConstant(); 1278c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen} 1279c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen 1280d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattnervoid LLVMSetGlobalConstant(LLVMValueRef GlobalVar, LLVMBool IsConstant) { 1281c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen unwrap<GlobalVariable>(GlobalVar)->setConstant(IsConstant != 0); 1282c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen} 1283c84c16be9b29b4f805b92bfc2d93e2dfaa952f8fGordon Henriksen 1284851ba39dab544ad986f150aec9573add9d978397Chris Lattner/*--.. Operations on aliases ......................................--*/ 1285851ba39dab544ad986f150aec9573add9d978397Chris Lattner 1286851ba39dab544ad986f150aec9573add9d978397Chris LattnerLLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, 1287851ba39dab544ad986f150aec9573add9d978397Chris Lattner const char *Name) { 1288851ba39dab544ad986f150aec9573add9d978397Chris Lattner return wrap(new GlobalAlias(unwrap(Ty), GlobalValue::ExternalLinkage, Name, 1289851ba39dab544ad986f150aec9573add9d978397Chris Lattner unwrap<Constant>(Aliasee), unwrap (M))); 1290851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 1291851ba39dab544ad986f150aec9573add9d978397Chris Lattner 129246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Operations on functions .............................................--*/ 129346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 129446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name, 129546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef FunctionTy) { 1296051a950000e21935165db56695e35bade668193bGabor Greif return wrap(Function::Create(unwrap<FunctionType>(FunctionTy), 1297051a950000e21935165db56695e35bade668193bGabor Greif GlobalValue::ExternalLinkage, Name, unwrap(M))); 129846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 129946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 13006d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon HenriksenLLVMValueRef LLVMGetNamedFunction(LLVMModuleRef M, const char *Name) { 13016d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen return wrap(unwrap(M)->getFunction(Name)); 13026d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen} 13036d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen 130434000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetFirstFunction(LLVMModuleRef M) { 130534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 130634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Mod->begin(); 130734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->end()) 130834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 130934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 131034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 131134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 131234000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetLastFunction(LLVMModuleRef M) { 131334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module *Mod = unwrap(M); 131434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Mod->end(); 131534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Mod->begin()) 131634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 131734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 131834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 131934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 132034000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetNextFunction(LLVMValueRef Fn) { 132134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 132234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Func; 132334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == Func->getParent()->end()) 132434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 132534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 132634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 132734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 132834000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetPreviousFunction(LLVMValueRef Fn) { 132934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 133034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Module::iterator I = Func; 13314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == Func->getParent()->begin()) 133234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 133334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 133434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 133534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 133646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMDeleteFunction(LLVMValueRef Fn) { 133746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap<Function>(Fn)->eraseFromParent(); 133846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 133946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 134046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetIntrinsicID(LLVMValueRef Fn) { 134146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen if (Function *F = dyn_cast<Function>(unwrap(Fn))) 134246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return F->getIntrinsicID(); 134346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return 0; 134446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 134546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 134646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetFunctionCallConv(LLVMValueRef Fn) { 134746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return unwrap<Function>(Fn)->getCallingConv(); 134846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 134946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 135046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMSetFunctionCallConv(LLVMValueRef Fn, unsigned CC) { 135165c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel return unwrap<Function>(Fn)->setCallingConv( 135265c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel static_cast<CallingConv::ID>(CC)); 135346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 135446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 13555eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenconst char *LLVMGetGC(LLVMValueRef Fn) { 135680a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen Function *F = unwrap<Function>(Fn); 13575eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen return F->hasGC()? F->getGC() : 0; 135880a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen} 135980a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 13605eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenvoid LLVMSetGC(LLVMValueRef Fn, const char *GC) { 136180a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen Function *F = unwrap<Function>(Fn); 13625eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen if (GC) 13635eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen F->setGC(GC); 136480a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen else 13655eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen F->clearGC(); 136680a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen} 136780a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 1368e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsvoid LLVMAddFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA) { 1369e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Function *Func = unwrap<Function>(Fn); 1370e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands const AttrListPtr PAL = Func->getAttributes(); 1371164b86b4399559e45fab7846f1e3e09119cab4e2Kostya Serebryany const AttrListPtr PALnew = PAL.addAttr(~0U, Attributes(PA)); 1372e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Func->setAttributes(PALnew); 1373e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands} 1374e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1375e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsvoid LLVMRemoveFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA) { 1376e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Function *Func = unwrap<Function>(Fn); 1377e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands const AttrListPtr PAL = Func->getAttributes(); 1378164b86b4399559e45fab7846f1e3e09119cab4e2Kostya Serebryany const AttrListPtr PALnew = PAL.removeAttr(~0U, Attributes(PA)); 1379e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands Func->setAttributes(PALnew); 1380e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands} 1381e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1382885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMAttribute LLVMGetFunctionAttr(LLVMValueRef Fn) { 1383885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Function *Func = unwrap<Function>(Fn); 1384885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner const AttrListPtr PAL = Func->getAttributes(); 1385885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Attributes attr = PAL.getFnAttributes(); 1386164b86b4399559e45fab7846f1e3e09119cab4e2Kostya Serebryany return (LLVMAttribute)attr.Raw(); 1387885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 1388885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 1389dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen/*--.. Operations on parameters ............................................--*/ 1390dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1391dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenunsigned LLVMCountParams(LLVMValueRef FnRef) { 1392dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen // This function is strictly redundant to 1393dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen // LLVMCountParamTypes(LLVMGetElementType(LLVMTypeOf(FnRef))) 13944d515d0b09d43af59cd040bfb8bf1b7a2b992980Dan Gohman return unwrap<Function>(FnRef)->arg_size(); 1395dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1396dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1397dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenvoid LLVMGetParams(LLVMValueRef FnRef, LLVMValueRef *ParamRefs) { 1398dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen Function *Fn = unwrap<Function>(FnRef); 1399dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen for (Function::arg_iterator I = Fn->arg_begin(), 1400dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen E = Fn->arg_end(); I != E; I++) 1401dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen *ParamRefs++ = wrap(I); 1402dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1403dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1404dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMValueRef LLVMGetParam(LLVMValueRef FnRef, unsigned index) { 1405dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen Function::arg_iterator AI = unwrap<Function>(FnRef)->arg_begin(); 1406dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen while (index --> 0) 1407dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen AI++; 1408dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(AI); 1409dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1410dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1411dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMValueRef LLVMGetParamParent(LLVMValueRef V) { 1412dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap<Argument>(V)->getParent()); 1413dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1414dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 14154733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetFirstParam(LLVMValueRef Fn) { 14164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function *Func = unwrap<Function>(Fn); 14174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = Func->arg_begin(); 14184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == Func->arg_end()) 14194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 14204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(I); 14214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 14224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14234733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetLastParam(LLVMValueRef Fn) { 14244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function *Func = unwrap<Function>(Fn); 14254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = Func->arg_end(); 14264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == Func->arg_begin()) 14274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 14284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(--I); 14294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 14304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14314733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetNextParam(LLVMValueRef Arg) { 14324733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Argument *A = unwrap<Argument>(Arg); 14334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = A; 14344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (++I == A->getParent()->arg_end()) 14354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 14364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(I); 14374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 14384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14394733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetPreviousParam(LLVMValueRef Arg) { 14404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Argument *A = unwrap<Argument>(Arg); 14414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen Function::arg_iterator I = A; 14424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen if (I == A->getParent()->arg_begin()) 14434733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return 0; 14444733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(--I); 14454733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen} 14464733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14470598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMAddAttribute(LLVMValueRef Arg, LLVMAttribute PA) { 1448164b86b4399559e45fab7846f1e3e09119cab4e2Kostya Serebryany unwrap<Argument>(Arg)->addAttr(Attributes(PA)); 1449e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1450e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 14510598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMRemoveAttribute(LLVMValueRef Arg, LLVMAttribute PA) { 1452164b86b4399559e45fab7846f1e3e09119cab4e2Kostya Serebryany unwrap<Argument>(Arg)->removeAttr(Attributes(PA)); 1453e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1454e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 1455885dffc3914be3e33cffdd2496ed031f6d8acd08Chris LattnerLLVMAttribute LLVMGetAttribute(LLVMValueRef Arg) { 1456885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Argument *A = unwrap<Argument>(Arg); 1457885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner Attributes attr = A->getParent()->getAttributes().getParamAttributes( 1458885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner A->getArgNo()+1); 1459164b86b4399559e45fab7846f1e3e09119cab4e2Kostya Serebryany return (LLVMAttribute)attr.Raw(); 1460885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner} 1461885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 1462885dffc3914be3e33cffdd2496ed031f6d8acd08Chris Lattner 1463e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksenvoid LLVMSetParamAlignment(LLVMValueRef Arg, unsigned align) { 1464e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen unwrap<Argument>(Arg)->addAttr( 14650598866c052147c31b808391f58434ce3dbfb838Devang Patel Attribute::constructAlignmentFromInt(align)); 1466e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1467e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 146846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Operations on basic blocks ..........................................--*/ 146946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1470dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMValueRef LLVMBasicBlockAsValue(LLVMBasicBlockRef BB) { 1471dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(static_cast<Value*>(unwrap(BB))); 147246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 147346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1474d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMValueIsBasicBlock(LLVMValueRef Val) { 147546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return isa<BasicBlock>(unwrap(Val)); 147646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 147746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 147846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMBasicBlockRef LLVMValueAsBasicBlock(LLVMValueRef Val) { 147946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap<BasicBlock>(Val)); 148046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 148146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 14824733be38930ae81716bba9ae75a8281bcb180634Gordon HenriksenLLVMValueRef LLVMGetBasicBlockParent(LLVMBasicBlockRef BB) { 14834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen return wrap(unwrap(BB)->getParent()); 1484dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1485dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 14867ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate BegemanLLVMValueRef LLVMGetBasicBlockTerminator(LLVMBasicBlockRef BB) { 14877ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman return wrap(unwrap(BB)->getTerminator()); 14887ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman} 14897ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman 149046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMCountBasicBlocks(LLVMValueRef FnRef) { 14914d515d0b09d43af59cd040bfb8bf1b7a2b992980Dan Gohman return unwrap<Function>(FnRef)->size(); 149246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 149346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 149446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMGetBasicBlocks(LLVMValueRef FnRef, LLVMBasicBlockRef *BasicBlocksRefs){ 149546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Function *Fn = unwrap<Function>(FnRef); 149646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen for (Function::iterator I = Fn->begin(), E = Fn->end(); I != E; I++) 149746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen *BasicBlocksRefs++ = wrap(I); 149846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 149946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 150046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMBasicBlockRef LLVMGetEntryBasicBlock(LLVMValueRef Fn) { 150146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(&unwrap<Function>(Fn)->getEntryBlock()); 150246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 150346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 150434000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetFirstBasicBlock(LLVMValueRef Fn) { 150534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 150634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Func->begin(); 150734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Func->end()) 150834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 150934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 151034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 151134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 151234000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetLastBasicBlock(LLVMValueRef Fn) { 151334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function *Func = unwrap<Function>(Fn); 151434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Func->end(); 151534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Func->begin()) 151634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 151734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 151834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 151934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 152034000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetNextBasicBlock(LLVMBasicBlockRef BB) { 152134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 152234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Block; 152334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == Block->getParent()->end()) 152434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 152534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 152634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 152734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 152834000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMBasicBlockRef LLVMGetPreviousBasicBlock(LLVMBasicBlockRef BB) { 152934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 153034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Function::iterator I = Block; 153134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Block->getParent()->begin()) 153234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 153334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 153434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 153534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 153622c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBasicBlockRef LLVMAppendBasicBlockInContext(LLVMContextRef C, 153722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar LLVMValueRef FnRef, 153822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar const char *Name) { 153922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(BasicBlock::Create(*unwrap(C), Name, unwrap<Function>(FnRef))); 154022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 154122c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 154246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMBasicBlockRef LLVMAppendBasicBlock(LLVMValueRef FnRef, const char *Name) { 154322c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMAppendBasicBlockInContext(LLVMGetGlobalContext(), FnRef, Name); 154422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 154522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 154622c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBasicBlockRef LLVMInsertBasicBlockInContext(LLVMContextRef C, 154722c3f1877d22972adb787c553192edb426874594Erick Tryzelaar LLVMBasicBlockRef BBRef, 154822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar const char *Name) { 154922c3f1877d22972adb787c553192edb426874594Erick Tryzelaar BasicBlock *BB = unwrap(BBRef); 155022c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(BasicBlock::Create(*unwrap(C), Name, BB->getParent(), BB)); 155146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 155246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 155322c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBasicBlockRef LLVMInsertBasicBlock(LLVMBasicBlockRef BBRef, 155446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 155522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMInsertBasicBlockInContext(LLVMGetGlobalContext(), BBRef, Name); 155646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 155746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 155846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMDeleteBasicBlock(LLVMBasicBlockRef BBRef) { 155946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(BBRef)->eraseFromParent(); 156046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 156146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 15627ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begemanvoid LLVMRemoveBasicBlockFromParent(LLVMBasicBlockRef BBRef) { 15637ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman unwrap(BBRef)->removeFromParent(); 15647ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman} 15657ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman 1566837a0c3b052cdbfd7b212d9e9f570f7aaf864b44Duncan Sandsvoid LLVMMoveBasicBlockBefore(LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos) { 1567837a0c3b052cdbfd7b212d9e9f570f7aaf864b44Duncan Sands unwrap(BB)->moveBefore(unwrap(MovePos)); 1568837a0c3b052cdbfd7b212d9e9f570f7aaf864b44Duncan Sands} 1569837a0c3b052cdbfd7b212d9e9f570f7aaf864b44Duncan Sands 1570837a0c3b052cdbfd7b212d9e9f570f7aaf864b44Duncan Sandsvoid LLVMMoveBasicBlockAfter(LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos) { 1571837a0c3b052cdbfd7b212d9e9f570f7aaf864b44Duncan Sands unwrap(BB)->moveAfter(unwrap(MovePos)); 1572837a0c3b052cdbfd7b212d9e9f570f7aaf864b44Duncan Sands} 1573837a0c3b052cdbfd7b212d9e9f570f7aaf864b44Duncan Sands 1574dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen/*--.. Operations on instructions ..........................................--*/ 1575dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1576dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMBasicBlockRef LLVMGetInstructionParent(LLVMValueRef Inst) { 1577dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap<Instruction>(Inst)->getParent()); 1578dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1579dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 158034000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetFirstInstruction(LLVMBasicBlockRef BB) { 158134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 158234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Block->begin(); 158334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Block->end()) 158434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 158534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 158634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 158734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 158834000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetLastInstruction(LLVMBasicBlockRef BB) { 158934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *Block = unwrap(BB); 159034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Block->end(); 159134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Block->begin()) 159234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 159334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 159434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 159534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 159634000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetNextInstruction(LLVMValueRef Inst) { 159734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Instruction *Instr = unwrap<Instruction>(Inst); 159834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Instr; 159934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (++I == Instr->getParent()->end()) 160034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 160134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(I); 160234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 160334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 160434000979662d9ae9b22e4d05272b77d944871d1cGordon HenriksenLLVMValueRef LLVMGetPreviousInstruction(LLVMValueRef Inst) { 160534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Instruction *Instr = unwrap<Instruction>(Inst); 160634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock::iterator I = Instr; 160734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen if (I == Instr->getParent()->begin()) 160834000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return 0; 160934000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen return wrap(--I); 161034000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 161134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 16120e6a24d92ab4661bb39f838ac390ccb17f649cb5Devang Patelvoid LLVMInstructionEraseFromParent(LLVMValueRef Inst) { 16130e6a24d92ab4661bb39f838ac390ccb17f649cb5Devang Patel unwrap<Instruction>(Inst)->eraseFromParent(); 16140e6a24d92ab4661bb39f838ac390ccb17f649cb5Devang Patel} 16150e6a24d92ab4661bb39f838ac390ccb17f649cb5Devang Patel 16164917ec9ec775d7bc7fbc3362b4c576c32b7617f4Torok EdwinLLVMIntPredicate LLVMGetICmpPredicate(LLVMValueRef Inst) { 161731116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin if (ICmpInst *I = dyn_cast<ICmpInst>(unwrap(Inst))) 161831116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin return (LLVMIntPredicate)I->getPredicate(); 161931116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin if (ConstantExpr *CE = dyn_cast<ConstantExpr>(unwrap(Inst))) 162031116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin if (CE->getOpcode() == Instruction::ICmp) 162131116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin return (LLVMIntPredicate)CE->getPredicate(); 162231116410de16f435d8c76c53e3d6b95fa812cd2cTorok Edwin return (LLVMIntPredicate)0; 16234917ec9ec775d7bc7fbc3362b4c576c32b7617f4Torok Edwin} 16244917ec9ec775d7bc7fbc3362b4c576c32b7617f4Torok Edwin 16256563c879964c3bcf5c77d40da8d4c807adf605aaTorok EdwinLLVMOpcode LLVMGetInstructionOpcode(LLVMValueRef Inst) { 16266563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin if (Instruction *C = dyn_cast<Instruction>(unwrap(Inst))) 16276563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin return map_to_llvmopcode(C->getOpcode()); 16286563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin return (LLVMOpcode)0; 16296563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin} 16306563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin 163146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Call and invoke instructions ........................................--*/ 163246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 163346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenunsigned LLVMGetInstructionCallConv(LLVMValueRef Instr) { 163446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Value *V = unwrap(Instr); 163546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen if (CallInst *CI = dyn_cast<CallInst>(V)) 163646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return CI->getCallingConv(); 16374d6ccb5f68cd7c6418a209f1fa4dbade569e4493David Blaikie if (InvokeInst *II = dyn_cast<InvokeInst>(V)) 163846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return II->getCallingConv(); 1639c23197a26f34f559ea9797de51e187087c039c42Torok Edwin llvm_unreachable("LLVMGetInstructionCallConv applies only to call and invoke!"); 164046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 164146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 164246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMSetInstructionCallConv(LLVMValueRef Instr, unsigned CC) { 164346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Value *V = unwrap(Instr); 164446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen if (CallInst *CI = dyn_cast<CallInst>(V)) 164565c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel return CI->setCallingConv(static_cast<CallingConv::ID>(CC)); 164646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen else if (InvokeInst *II = dyn_cast<InvokeInst>(V)) 164765c3c8f323198b99b88b109654194540cf9b3fa5Sandeep Patel return II->setCallingConv(static_cast<CallingConv::ID>(CC)); 1648c23197a26f34f559ea9797de51e187087c039c42Torok Edwin llvm_unreachable("LLVMSetInstructionCallConv applies only to call and invoke!"); 164946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 165046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 16510598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMAddInstrAttribute(LLVMValueRef Instr, unsigned index, 16520598866c052147c31b808391f58434ce3dbfb838Devang Patel LLVMAttribute PA) { 1653e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen CallSite Call = CallSite(unwrap<Instruction>(Instr)); 16540598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.setAttributes( 1655164b86b4399559e45fab7846f1e3e09119cab4e2Kostya Serebryany Call.getAttributes().addAttr(index, Attributes(PA))); 1656e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1657e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 16580598866c052147c31b808391f58434ce3dbfb838Devang Patelvoid LLVMRemoveInstrAttribute(LLVMValueRef Instr, unsigned index, 16590598866c052147c31b808391f58434ce3dbfb838Devang Patel LLVMAttribute PA) { 1660e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen CallSite Call = CallSite(unwrap<Instruction>(Instr)); 16610598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.setAttributes( 1662164b86b4399559e45fab7846f1e3e09119cab4e2Kostya Serebryany Call.getAttributes().removeAttr(index, Attributes(PA))); 1663e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1664e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 1665e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksenvoid LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index, 1666e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen unsigned align) { 1667e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen CallSite Call = CallSite(unwrap<Instruction>(Instr)); 16680598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.setAttributes( 16690598866c052147c31b808391f58434ce3dbfb838Devang Patel Call.getAttributes().addAttr(index, 16700598866c052147c31b808391f58434ce3dbfb838Devang Patel Attribute::constructAlignmentFromInt(align))); 1671e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen} 1672e2435da8abe5ca62c7f08f29c242b6b98e0ec7afGordon Henriksen 167307cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen/*--.. Operations on call instructions (only) ..............................--*/ 167407cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 1675d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMIsTailCall(LLVMValueRef Call) { 167607cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen return unwrap<CallInst>(Call)->isTailCall(); 167707cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen} 167807cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 1679d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattnervoid LLVMSetTailCall(LLVMValueRef Call, LLVMBool isTailCall) { 168007cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen unwrap<CallInst>(Call)->setTailCall(isTailCall); 168107cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen} 168207cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 16837ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman/*--.. Operations on switch instructions (only) ............................--*/ 16847ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman 16857ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate BegemanLLVMBasicBlockRef LLVMGetSwitchDefaultDest(LLVMValueRef Switch) { 16867ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman return wrap(unwrap<SwitchInst>(Switch)->getDefaultDest()); 16877ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman} 16887ced7763cab4fc22b8198f39fbbb6b7264cd1628Nate Begeman 16892618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen/*--.. Operations on phi nodes .............................................--*/ 16902618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 16912618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenvoid LLVMAddIncoming(LLVMValueRef PhiNode, LLVMValueRef *IncomingValues, 16922618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen LLVMBasicBlockRef *IncomingBlocks, unsigned Count) { 16932618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen PHINode *PhiVal = unwrap<PHINode>(PhiNode); 16942618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen for (unsigned I = 0; I != Count; ++I) 16952618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen PhiVal->addIncoming(unwrap(IncomingValues[I]), unwrap(IncomingBlocks[I])); 16962618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 16972618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 16982618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenunsigned LLVMCountIncoming(LLVMValueRef PhiNode) { 16992618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen return unwrap<PHINode>(PhiNode)->getNumIncomingValues(); 17002618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 17012618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 17022618a6c1122d5d2007787fb56156be44b21ab32aGordon HenriksenLLVMValueRef LLVMGetIncomingValue(LLVMValueRef PhiNode, unsigned Index) { 17032618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen return wrap(unwrap<PHINode>(PhiNode)->getIncomingValue(Index)); 17042618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 17052618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 17062618a6c1122d5d2007787fb56156be44b21ab32aGordon HenriksenLLVMBasicBlockRef LLVMGetIncomingBlock(LLVMValueRef PhiNode, unsigned Index) { 17072618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen return wrap(unwrap<PHINode>(PhiNode)->getIncomingBlock(Index)); 17082618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen} 17092618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 171046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 171146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*===-- Instruction builders ----------------------------------------------===*/ 171246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 171322c3f1877d22972adb787c553192edb426874594Erick TryzelaarLLVMBuilderRef LLVMCreateBuilderInContext(LLVMContextRef C) { 171422c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return wrap(new IRBuilder<>(*unwrap(C))); 171522c3f1877d22972adb787c553192edb426874594Erick Tryzelaar} 171622c3f1877d22972adb787c553192edb426874594Erick Tryzelaar 171716c1f44d91211a225497062ea508d58fd25085a9Gordon HenriksenLLVMBuilderRef LLVMCreateBuilder(void) { 171822c3f1877d22972adb787c553192edb426874594Erick Tryzelaar return LLVMCreateBuilderInContext(LLVMGetGlobalContext()); 171946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 172046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 172134000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksenvoid LLVMPositionBuilder(LLVMBuilderRef Builder, LLVMBasicBlockRef Block, 172234000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen LLVMValueRef Instr) { 172334000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen BasicBlock *BB = unwrap(Block); 172434000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen Instruction *I = Instr? unwrap<Instruction>(Instr) : (Instruction*) BB->end(); 172534000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen unwrap(Builder)->SetInsertPoint(BB, I); 172634000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen} 172734000979662d9ae9b22e4d05272b77d944871d1cGordon Henriksen 172846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMPositionBuilderBefore(LLVMBuilderRef Builder, LLVMValueRef Instr) { 172946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Instruction *I = unwrap<Instruction>(Instr); 173046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Builder)->SetInsertPoint(I->getParent(), I); 173146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 173246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 173346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMPositionBuilderAtEnd(LLVMBuilderRef Builder, LLVMBasicBlockRef Block) { 173446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen BasicBlock *BB = unwrap(Block); 173546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Builder)->SetInsertPoint(BB); 173646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 173746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1738dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon HenriksenLLVMBasicBlockRef LLVMGetInsertBlock(LLVMBuilderRef Builder) { 1739dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen return wrap(unwrap(Builder)->GetInsertBlock()); 1740dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen} 1741dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1742851ba39dab544ad986f150aec9573add9d978397Chris Lattnervoid LLVMClearInsertionPosition(LLVMBuilderRef Builder) { 1743a41b9153c3e568c874eb777d2b295659a9aca10aChris Lattner unwrap(Builder)->ClearInsertionPoint(); 1744851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 1745851ba39dab544ad986f150aec9573add9d978397Chris Lattner 1746851ba39dab544ad986f150aec9573add9d978397Chris Lattnervoid LLVMInsertIntoBuilder(LLVMBuilderRef Builder, LLVMValueRef Instr) { 1747851ba39dab544ad986f150aec9573add9d978397Chris Lattner unwrap(Builder)->Insert(unwrap<Instruction>(Instr)); 1748851ba39dab544ad986f150aec9573add9d978397Chris Lattner} 1749851ba39dab544ad986f150aec9573add9d978397Chris Lattner 17505c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaarvoid LLVMInsertIntoBuilderWithName(LLVMBuilderRef Builder, LLVMValueRef Instr, 17515c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar const char *Name) { 17525c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar unwrap(Builder)->Insert(unwrap<Instruction>(Instr), Name); 17535c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar} 17545c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar 175546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenvoid LLVMDisposeBuilder(LLVMBuilderRef Builder) { 175646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen delete unwrap(Builder); 175746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 175846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 175946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar/*--.. Metadata builders ...................................................--*/ 176046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 176146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarvoid LLVMSetCurrentDebugLocation(LLVMBuilderRef Builder, LLVMValueRef L) { 1762a41b9153c3e568c874eb777d2b295659a9aca10aChris Lattner MDNode *Loc = L ? unwrap<MDNode>(L) : NULL; 176384e679beea11ac55ed7871eec4deaccdf393de3eChris Lattner unwrap(Builder)->SetCurrentDebugLocation(DebugLoc::getFromDILocation(Loc)); 176446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 176546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 176646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick TryzelaarLLVMValueRef LLVMGetCurrentDebugLocation(LLVMBuilderRef Builder) { 1767a41b9153c3e568c874eb777d2b295659a9aca10aChris Lattner return wrap(unwrap(Builder)->getCurrentDebugLocation() 1768a41b9153c3e568c874eb777d2b295659a9aca10aChris Lattner .getAsMDNode(unwrap(Builder)->getContext())); 176946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 177046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 177146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarvoid LLVMSetInstDebugLocation(LLVMBuilderRef Builder, LLVMValueRef Inst) { 177246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar unwrap(Builder)->SetInstDebugLocation(unwrap<Instruction>(Inst)); 177346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar} 177446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 177546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 177646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Instruction builders ................................................--*/ 177746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 177846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildRetVoid(LLVMBuilderRef B) { 177946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateRetVoid()); 178046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 178146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 178246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildRet(LLVMBuilderRef B, LLVMValueRef V) { 178346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateRet(unwrap(V))); 178446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 178546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1786f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildAggregateRet(LLVMBuilderRef B, LLVMValueRef *RetVals, 1787f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar unsigned N) { 1788f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateAggregateRet(unwrap(RetVals), N)); 1789f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1790f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 179146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildBr(LLVMBuilderRef B, LLVMBasicBlockRef Dest) { 179246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateBr(unwrap(Dest))); 179346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 179446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 179546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildCondBr(LLVMBuilderRef B, LLVMValueRef If, 179646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMBasicBlockRef Then, LLVMBasicBlockRef Else) { 179746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateCondBr(unwrap(If), unwrap(Then), unwrap(Else))); 179846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 179946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 180046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSwitch(LLVMBuilderRef B, LLVMValueRef V, 180146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMBasicBlockRef Else, unsigned NumCases) { 180246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSwitch(unwrap(V), unwrap(Else), NumCases)); 180346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 180446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1805c59286bff1cca8c4fa15f390c9002db94117614eErick TryzelaarLLVMValueRef LLVMBuildIndirectBr(LLVMBuilderRef B, LLVMValueRef Addr, 1806c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar unsigned NumDests) { 1807c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar return wrap(unwrap(B)->CreateIndirectBr(unwrap(Addr), NumDests)); 1808c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar} 1809c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar 181046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildInvoke(LLVMBuilderRef B, LLVMValueRef Fn, 181146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef *Args, unsigned NumArgs, 181246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, 181346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 181446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateInvoke(unwrap(Fn), unwrap(Then), unwrap(Catch), 181539b5abf507b43da6b92f68b86406e0015ead18e9Frits van Bommel makeArrayRef(unwrap(Args), NumArgs), 181646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Name)); 181746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 181846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1819e6e8826870bee3facb04f950f0bd725f8a88623dBill WendlingLLVMValueRef LLVMBuildLandingPad(LLVMBuilderRef B, LLVMTypeRef Ty, 1820e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling LLVMValueRef PersFn, unsigned NumClauses, 1821e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling const char *Name) { 1822e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling return wrap(unwrap(B)->CreateLandingPad(unwrap(Ty), 1823e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling cast<Function>(unwrap(PersFn)), 1824e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling NumClauses, Name)); 1825e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling} 1826e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling 1827dccc03b2423fe65efb5963ae816b99c24fc53374Bill WendlingLLVMValueRef LLVMBuildResume(LLVMBuilderRef B, LLVMValueRef Exn) { 1828dccc03b2423fe65efb5963ae816b99c24fc53374Bill Wendling return wrap(unwrap(B)->CreateResume(unwrap(Exn))); 1829dccc03b2423fe65efb5963ae816b99c24fc53374Bill Wendling} 1830dccc03b2423fe65efb5963ae816b99c24fc53374Bill Wendling 183146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUnreachable(LLVMBuilderRef B) { 183246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUnreachable()); 183346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 183446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1835ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksenvoid LLVMAddCase(LLVMValueRef Switch, LLVMValueRef OnVal, 1836ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen LLVMBasicBlockRef Dest) { 1837ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen unwrap<SwitchInst>(Switch)->addCase(unwrap<ConstantInt>(OnVal), unwrap(Dest)); 1838ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen} 1839ab477ccde9382b58d3883eeb574ba09469d4cde8Gordon Henriksen 1840c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaarvoid LLVMAddDestination(LLVMValueRef IndirectBr, LLVMBasicBlockRef Dest) { 1841c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar unwrap<IndirectBrInst>(IndirectBr)->addDestination(unwrap(Dest)); 1842c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar} 1843c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar 1844e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendlingvoid LLVMAddClause(LLVMValueRef LandingPad, LLVMValueRef ClauseVal) { 1845e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling unwrap<LandingPadInst>(LandingPad)-> 1846e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling addClause(cast<Constant>(unwrap(ClauseVal))); 1847e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling} 1848e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling 1849e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendlingvoid LLVMSetCleanup(LLVMValueRef LandingPad, LLVMBool Val) { 1850e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling unwrap<LandingPadInst>(LandingPad)->setCleanup(Val); 1851e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling} 1852e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling 185346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Arithmetic ..........................................................--*/ 185446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 185546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 185646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 185746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAdd(unwrap(LHS), unwrap(RHS), Name)); 185846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 185946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1860f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildNSWAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1861f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1862f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateNSWAdd(unwrap(LHS), unwrap(RHS), Name)); 1863f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1864f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 186519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNUWAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 186619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 186719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNUWAdd(unwrap(LHS), unwrap(RHS), Name)); 186819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 186919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1870f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFAdd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1871f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1872f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFAdd(unwrap(LHS), unwrap(RHS), Name)); 1873f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1874f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 187546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSub(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 187646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 187746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSub(unwrap(LHS), unwrap(RHS), Name)); 187846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 187946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 188019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNSWSub(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 188119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 188219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNSWSub(unwrap(LHS), unwrap(RHS), Name)); 188319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 188419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 188519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNUWSub(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 188619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 188719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNUWSub(unwrap(LHS), unwrap(RHS), Name)); 188819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 188919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1890f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFSub(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1891f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1892f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFSub(unwrap(LHS), unwrap(RHS), Name)); 1893f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1894f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 189546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildMul(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 189646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 189746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateMul(unwrap(LHS), unwrap(RHS), Name)); 189846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 189946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 190019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNSWMul(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 190119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 190219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNSWMul(unwrap(LHS), unwrap(RHS), Name)); 190319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 190419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 190519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNUWMul(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 190619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 190719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNUWMul(unwrap(LHS), unwrap(RHS), Name)); 190819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 190919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1910f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFMul(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 1911f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 1912f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFMul(unwrap(LHS), unwrap(RHS), Name)); 1913f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1914f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 191546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUDiv(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 191646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 191746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUDiv(unwrap(LHS), unwrap(RHS), Name)); 191846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 191946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 192046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSDiv(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 192146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 192246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSDiv(unwrap(LHS), unwrap(RHS), Name)); 192346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 192446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1925f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildExactSDiv(LLVMBuilderRef B, LLVMValueRef LHS, 1926f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMValueRef RHS, const char *Name) { 1927f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateExactSDiv(unwrap(LHS), unwrap(RHS), Name)); 1928f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 1929f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 193046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFDiv(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 193146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 193246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFDiv(unwrap(LHS), unwrap(RHS), Name)); 193346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 193446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 193546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildURem(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 193646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 193746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateURem(unwrap(LHS), unwrap(RHS), Name)); 193846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 193946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 194046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSRem(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 194146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 194246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSRem(unwrap(LHS), unwrap(RHS), Name)); 194346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 194446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 194546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFRem(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 194646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 194746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFRem(unwrap(LHS), unwrap(RHS), Name)); 194846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 194946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 195046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildShl(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 195146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 195246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateShl(unwrap(LHS), unwrap(RHS), Name)); 195346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 195446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 195546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildLShr(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 195646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 195746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateLShr(unwrap(LHS), unwrap(RHS), Name)); 195846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 195946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 196046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAShr(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 196146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 196246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAShr(unwrap(LHS), unwrap(RHS), Name)); 196346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 196446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 196546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAnd(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 196646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 196746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAnd(unwrap(LHS), unwrap(RHS), Name)); 196846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 196946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 197046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildOr(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 197146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 197246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateOr(unwrap(LHS), unwrap(RHS), Name)); 197346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 197446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 197546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildXor(LLVMBuilderRef B, LLVMValueRef LHS, LLVMValueRef RHS, 197646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 197746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateXor(unwrap(LHS), unwrap(RHS), Name)); 197846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 197946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1980abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick TryzelaarLLVMValueRef LLVMBuildBinOp(LLVMBuilderRef B, LLVMOpcode Op, 1981abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar LLVMValueRef LHS, LLVMValueRef RHS, 1982abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar const char *Name) { 19834df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin return wrap(unwrap(B)->CreateBinOp(Instruction::BinaryOps(map_from_llvmopcode(Op)), unwrap(LHS), 1984abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar unwrap(RHS), Name)); 1985abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar} 1986abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar 198746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildNeg(LLVMBuilderRef B, LLVMValueRef V, const char *Name) { 198846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateNeg(unwrap(V), Name)); 198946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 199046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 199119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNSWNeg(LLVMBuilderRef B, LLVMValueRef V, 199219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 199319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNSWNeg(unwrap(V), Name)); 199419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 199519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 199619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick TryzelaarLLVMValueRef LLVMBuildNUWNeg(LLVMBuilderRef B, LLVMValueRef V, 199719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar const char *Name) { 199819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar return wrap(unwrap(B)->CreateNUWNeg(unwrap(V), Name)); 199919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar} 200019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 2001d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan GohmanLLVMValueRef LLVMBuildFNeg(LLVMBuilderRef B, LLVMValueRef V, const char *Name) { 2002d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan Gohman return wrap(unwrap(B)->CreateFNeg(unwrap(V), Name)); 2003d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan Gohman} 2004d0c5a292aaf4d9d69c77fe059bfcbab0496d5f2cDan Gohman 200546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildNot(LLVMBuilderRef B, LLVMValueRef V, const char *Name) { 200646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateNot(unwrap(V), Name)); 200746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 200846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 200946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Memory ..............................................................--*/ 201046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 201146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildMalloc(LLVMBuilderRef B, LLVMTypeRef Ty, 201246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 2013db125cfaf57cc83e7dd7453de2d509bc8efd0e5eChris Lattner Type* ITy = Type::getInt32Ty(unwrap(B)->GetInsertBlock()->getContext()); 20149d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Constant* AllocSize = ConstantExpr::getSizeOf(unwrap(Ty)); 20159d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez AllocSize = ConstantExpr::getTruncOrBitCast(AllocSize, ITy); 20169d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Instruction* Malloc = CallInst::CreateMalloc(unwrap(B)->GetInsertBlock(), 20179d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez ITy, unwrap(Ty), AllocSize, 20189d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez 0, 0, ""); 20199d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez return wrap(unwrap(B)->Insert(Malloc, Twine(Name))); 202046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 202146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 202246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef B, LLVMTypeRef Ty, 202346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Val, const char *Name) { 2024db125cfaf57cc83e7dd7453de2d509bc8efd0e5eChris Lattner Type* ITy = Type::getInt32Ty(unwrap(B)->GetInsertBlock()->getContext()); 20259d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Constant* AllocSize = ConstantExpr::getSizeOf(unwrap(Ty)); 20269d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez AllocSize = ConstantExpr::getTruncOrBitCast(AllocSize, ITy); 20279d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez Instruction* Malloc = CallInst::CreateMalloc(unwrap(B)->GetInsertBlock(), 20289d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez ITy, unwrap(Ty), AllocSize, 20299d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez unwrap(Val), 0, ""); 20309d0b704e3ea418441001dac4d1a56c2c224cdbf5Victor Hernandez return wrap(unwrap(B)->Insert(Malloc, Twine(Name))); 203146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 203246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 203346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildAlloca(LLVMBuilderRef B, LLVMTypeRef Ty, 203446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 203546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAlloca(unwrap(Ty), 0, Name)); 203646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 203746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 203846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef B, LLVMTypeRef Ty, 203946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Val, const char *Name) { 204046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateAlloca(unwrap(Ty), unwrap(Val), Name)); 204146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 204246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 204346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFree(LLVMBuilderRef B, LLVMValueRef PointerVal) { 2044046e78ce55a7c3d82b7b6758d2d77f2d99f970bfVictor Hernandez return wrap(unwrap(B)->Insert( 2045046e78ce55a7c3d82b7b6758d2d77f2d99f970bfVictor Hernandez CallInst::CreateFree(unwrap(PointerVal), unwrap(B)->GetInsertBlock()))); 204646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 204746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 204846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 204946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildLoad(LLVMBuilderRef B, LLVMValueRef PointerVal, 205046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 205146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateLoad(unwrap(PointerVal), Name)); 205246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 205346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 205446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildStore(LLVMBuilderRef B, LLVMValueRef Val, 205546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef PointerVal) { 205646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateStore(unwrap(Val), unwrap(PointerVal))); 205746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 205846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 205946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildGEP(LLVMBuilderRef B, LLVMValueRef Pointer, 206046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef *Indices, unsigned NumIndices, 206146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 20620a2a60ace9b79164b71794ce7ff981171c61e442Jay Foad ArrayRef<Value *> IdxList(unwrap(Indices), NumIndices); 20630a2a60ace9b79164b71794ce7ff981171c61e442Jay Foad return wrap(unwrap(B)->CreateGEP(unwrap(Pointer), IdxList, Name)); 206446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 206546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 2066f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildInBoundsGEP(LLVMBuilderRef B, LLVMValueRef Pointer, 2067f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMValueRef *Indices, unsigned NumIndices, 2068f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 20690a2a60ace9b79164b71794ce7ff981171c61e442Jay Foad ArrayRef<Value *> IdxList(unwrap(Indices), NumIndices); 20700a2a60ace9b79164b71794ce7ff981171c61e442Jay Foad return wrap(unwrap(B)->CreateInBoundsGEP(unwrap(Pointer), IdxList, Name)); 2071f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2072f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2073f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer, 2074f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar unsigned Idx, const char *Name) { 2075f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateStructGEP(unwrap(Pointer), Idx, Name)); 2076f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2077f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2078f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const char *Str, 2079f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 2080f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateGlobalString(Str, Name)); 2081f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2082f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2083f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildGlobalStringPtr(LLVMBuilderRef B, const char *Str, 2084f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 2085f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateGlobalStringPtr(Str, Name)); 2086f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2087f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2088eabe3ad57d824c2b07016352fd97ce85777b6f9dChris LattnerLLVMBool LLVMGetVolatile(LLVMValueRef MemAccessInst) { 2089eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner Value *P = unwrap<Value>(MemAccessInst); 2090eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner if (LoadInst *LI = dyn_cast<LoadInst>(P)) 2091eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner return LI->isVolatile(); 2092eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner return cast<StoreInst>(P)->isVolatile(); 2093eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner} 2094eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner 2095eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattnervoid LLVMSetVolatile(LLVMValueRef MemAccessInst, LLVMBool isVolatile) { 2096eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner Value *P = unwrap<Value>(MemAccessInst); 2097eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner if (LoadInst *LI = dyn_cast<LoadInst>(P)) 2098eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner return LI->setVolatile(isVolatile); 2099eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner return cast<StoreInst>(P)->setVolatile(isVolatile); 2100eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner} 2101eabe3ad57d824c2b07016352fd97ce85777b6f9dChris Lattner 210246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Casts ...............................................................--*/ 210346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 210446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildTrunc(LLVMBuilderRef B, LLVMValueRef Val, 210546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 210646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateTrunc(unwrap(Val), unwrap(DestTy), Name)); 210746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 210846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 210946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildZExt(LLVMBuilderRef B, LLVMValueRef Val, 211046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 211146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateZExt(unwrap(Val), unwrap(DestTy), Name)); 211246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 211346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 211446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSExt(LLVMBuilderRef B, LLVMValueRef Val, 211546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 211646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSExt(unwrap(Val), unwrap(DestTy), Name)); 211746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 211846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 211946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPToUI(LLVMBuilderRef B, LLVMValueRef Val, 212046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 212146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPToUI(unwrap(Val), unwrap(DestTy), Name)); 212246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 212346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 212446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPToSI(LLVMBuilderRef B, LLVMValueRef Val, 212546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 212646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPToSI(unwrap(Val), unwrap(DestTy), Name)); 212746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 212846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 212946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildUIToFP(LLVMBuilderRef B, LLVMValueRef Val, 213046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 213146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateUIToFP(unwrap(Val), unwrap(DestTy), Name)); 213246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 213346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 213446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSIToFP(LLVMBuilderRef B, LLVMValueRef Val, 213546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 213646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSIToFP(unwrap(Val), unwrap(DestTy), Name)); 213746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 213846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 213946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPTrunc(LLVMBuilderRef B, LLVMValueRef Val, 214046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 214146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPTrunc(unwrap(Val), unwrap(DestTy), Name)); 214246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 214346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 214446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFPExt(LLVMBuilderRef B, LLVMValueRef Val, 214546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 214646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFPExt(unwrap(Val), unwrap(DestTy), Name)); 214746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 214846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 214946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildPtrToInt(LLVMBuilderRef B, LLVMValueRef Val, 215046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 215146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreatePtrToInt(unwrap(Val), unwrap(DestTy), Name)); 215246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 215346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 215446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildIntToPtr(LLVMBuilderRef B, LLVMValueRef Val, 215546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 215646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateIntToPtr(unwrap(Val), unwrap(DestTy), Name)); 215746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 215846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 215946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildBitCast(LLVMBuilderRef B, LLVMValueRef Val, 216046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef DestTy, const char *Name) { 216146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateBitCast(unwrap(Val), unwrap(DestTy), Name)); 216246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 216346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 2164f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildZExtOrBitCast(LLVMBuilderRef B, LLVMValueRef Val, 2165f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 2166f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateZExtOrBitCast(unwrap(Val), unwrap(DestTy), 2167f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar Name)); 2168f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2169f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2170f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildSExtOrBitCast(LLVMBuilderRef B, LLVMValueRef Val, 2171f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 2172f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateSExtOrBitCast(unwrap(Val), unwrap(DestTy), 2173f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar Name)); 2174f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2175f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2176f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildTruncOrBitCast(LLVMBuilderRef B, LLVMValueRef Val, 2177f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 2178f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateTruncOrBitCast(unwrap(Val), unwrap(DestTy), 2179f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar Name)); 2180f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2181f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2182abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick TryzelaarLLVMValueRef LLVMBuildCast(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val, 2183abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 21844df1557f4073cd91893a186acfee96bee64b28ccTorok Edwin return wrap(unwrap(B)->CreateCast(Instruction::CastOps(map_from_llvmopcode(Op)), unwrap(Val), 2185abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar unwrap(DestTy), Name)); 2186abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar} 2187abbcc5ee6fa39daadadaa0b583579b3e17f32fd7Erick Tryzelaar 2188f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef B, LLVMValueRef Val, 2189f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 2190f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreatePointerCast(unwrap(Val), unwrap(DestTy), Name)); 2191f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2192f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2193f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildIntCast(LLVMBuilderRef B, LLVMValueRef Val, 2194e8e01b600cd377504e5288a31152b1db4b8477b1Duncan Sands LLVMTypeRef DestTy, const char *Name) { 2195e8e01b600cd377504e5288a31152b1db4b8477b1Duncan Sands return wrap(unwrap(B)->CreateIntCast(unwrap(Val), unwrap(DestTy), 2196e8e01b600cd377504e5288a31152b1db4b8477b1Duncan Sands /*isSigned*/true, Name)); 2197f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2198f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2199f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildFPCast(LLVMBuilderRef B, LLVMValueRef Val, 2200f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMTypeRef DestTy, const char *Name) { 2201f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateFPCast(unwrap(Val), unwrap(DestTy), Name)); 2202f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2203f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 220446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Comparisons .........................................................--*/ 220546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 220646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildICmp(LLVMBuilderRef B, LLVMIntPredicate Op, 220746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef LHS, LLVMValueRef RHS, 220846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 220946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateICmp(static_cast<ICmpInst::Predicate>(Op), 221046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(LHS), unwrap(RHS), Name)); 221146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 221246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 221346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildFCmp(LLVMBuilderRef B, LLVMRealPredicate Op, 221446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef LHS, LLVMValueRef RHS, 221546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 221646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateFCmp(static_cast<FCmpInst::Predicate>(Op), 221746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(LHS), unwrap(RHS), Name)); 221846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 221946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 222046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen/*--.. Miscellaneous instructions ..........................................--*/ 222146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 222246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildPhi(LLVMBuilderRef B, LLVMTypeRef Ty, const char *Name) { 22233ecfc861b4365f341c5c969b40e1afccde676e6fJay Foad return wrap(unwrap(B)->CreatePHI(unwrap(Ty), 0, Name)); 222446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 222546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 222646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, 222746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef *Args, unsigned NumArgs, 222846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 2229a3efbb15ddd5aa9006564cd79086723640084878Jay Foad return wrap(unwrap(B)->CreateCall(unwrap(Fn), 223039b5abf507b43da6b92f68b86406e0015ead18e9Frits van Bommel makeArrayRef(unwrap(Args), NumArgs), 2231a3efbb15ddd5aa9006564cd79086723640084878Jay Foad Name)); 223246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 223346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 223446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildSelect(LLVMBuilderRef B, LLVMValueRef If, 223546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Then, LLVMValueRef Else, 223646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 223746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateSelect(unwrap(If), unwrap(Then), unwrap(Else), 223846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Name)); 223946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 224046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 224146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildVAArg(LLVMBuilderRef B, LLVMValueRef List, 224246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMTypeRef Ty, const char *Name) { 224346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateVAArg(unwrap(List), unwrap(Ty), Name)); 224446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 224546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 224646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildExtractElement(LLVMBuilderRef B, LLVMValueRef VecVal, 224746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef Index, const char *Name) { 224846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateExtractElement(unwrap(VecVal), unwrap(Index), 224946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Name)); 225046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 225146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 225246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildInsertElement(LLVMBuilderRef B, LLVMValueRef VecVal, 225346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef EltVal, LLVMValueRef Index, 225446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 225546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateInsertElement(unwrap(VecVal), unwrap(EltVal), 225646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Index), Name)); 225746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 225846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 225946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon HenriksenLLVMValueRef LLVMBuildShuffleVector(LLVMBuilderRef B, LLVMValueRef V1, 226046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen LLVMValueRef V2, LLVMValueRef Mask, 226146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen const char *Name) { 226246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen return wrap(unwrap(B)->CreateShuffleVector(unwrap(V1), unwrap(V2), 226346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen unwrap(Mask), Name)); 226446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen} 22651ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 2266b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMBuildExtractValue(LLVMBuilderRef B, LLVMValueRef AggVal, 2267b593117b44a74c72bc784080bb402576b3181d94Dan Gohman unsigned Index, const char *Name) { 2268b593117b44a74c72bc784080bb402576b3181d94Dan Gohman return wrap(unwrap(B)->CreateExtractValue(unwrap(AggVal), Index, Name)); 2269b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 2270b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 2271b593117b44a74c72bc784080bb402576b3181d94Dan GohmanLLVMValueRef LLVMBuildInsertValue(LLVMBuilderRef B, LLVMValueRef AggVal, 2272b593117b44a74c72bc784080bb402576b3181d94Dan Gohman LLVMValueRef EltVal, unsigned Index, 2273b593117b44a74c72bc784080bb402576b3181d94Dan Gohman const char *Name) { 2274b593117b44a74c72bc784080bb402576b3181d94Dan Gohman return wrap(unwrap(B)->CreateInsertValue(unwrap(AggVal), unwrap(EltVal), 2275b593117b44a74c72bc784080bb402576b3181d94Dan Gohman Index, Name)); 2276b593117b44a74c72bc784080bb402576b3181d94Dan Gohman} 2277b593117b44a74c72bc784080bb402576b3181d94Dan Gohman 2278f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildIsNull(LLVMBuilderRef B, LLVMValueRef Val, 2279f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 2280f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateIsNull(unwrap(Val), Name)); 2281f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2282f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2283f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildIsNotNull(LLVMBuilderRef B, LLVMValueRef Val, 2284f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar const char *Name) { 2285f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreateIsNotNull(unwrap(Val), Name)); 2286f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2287f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 2288f72596c04a06458c6152a51c9678690a34d59ab8Erick TryzelaarLLVMValueRef LLVMBuildPtrDiff(LLVMBuilderRef B, LLVMValueRef LHS, 2289f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar LLVMValueRef RHS, const char *Name) { 2290f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar return wrap(unwrap(B)->CreatePtrDiff(unwrap(LHS), unwrap(RHS), Name)); 2291f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar} 2292f72596c04a06458c6152a51c9678690a34d59ab8Erick Tryzelaar 22931ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 22941ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen/*===-- Module providers --------------------------------------------------===*/ 22951ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 22961ae6135fa37eb061499d079b9b33dc82dcc1283fGordon HenriksenLLVMModuleProviderRef 22971ae6135fa37eb061499d079b9b33dc82dcc1283fGordon HenriksenLLVMCreateModuleProviderForExistingModule(LLVMModuleRef M) { 2298f0356fe140af1a30587b9a86bcfb1b2c51b8ce20Jeffrey Yasskin return reinterpret_cast<LLVMModuleProviderRef>(M); 22991ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen} 23001ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 23011ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksenvoid LLVMDisposeModuleProvider(LLVMModuleProviderRef MP) { 23021ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen delete unwrap(MP); 23031ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen} 23041ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 2305da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2306da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen/*===-- Memory buffers ----------------------------------------------------===*/ 2307da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2308d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateMemoryBufferWithContentsOfFile( 2309d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner const char *Path, 2310d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMMemoryBufferRef *OutMemBuf, 2311d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner char **OutMessage) { 2312d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner 23133ff9563c3e391954b2e224afcf8b2b0fcc3888aaMichael J. Spencer OwningPtr<MemoryBuffer> MB; 2314333fb04506233255f10d8095c9e2de5e5f0fdc6fMichael J. Spencer error_code ec; 23153ff9563c3e391954b2e224afcf8b2b0fcc3888aaMichael J. Spencer if (!(ec = MemoryBuffer::getFile(Path, MB))) { 23163ff9563c3e391954b2e224afcf8b2b0fcc3888aaMichael J. Spencer *OutMemBuf = wrap(MB.take()); 2317da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen return 0; 2318da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen } 2319333fb04506233255f10d8095c9e2de5e5f0fdc6fMichael J. Spencer 2320333fb04506233255f10d8095c9e2de5e5f0fdc6fMichael J. Spencer *OutMessage = strdup(ec.message().c_str()); 2321da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen return 1; 2322da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 2323da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2324d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateMemoryBufferWithSTDIN(LLVMMemoryBufferRef *OutMemBuf, 2325d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner char **OutMessage) { 23263ff9563c3e391954b2e224afcf8b2b0fcc3888aaMichael J. Spencer OwningPtr<MemoryBuffer> MB; 2327333fb04506233255f10d8095c9e2de5e5f0fdc6fMichael J. Spencer error_code ec; 23283ff9563c3e391954b2e224afcf8b2b0fcc3888aaMichael J. Spencer if (!(ec = MemoryBuffer::getSTDIN(MB))) { 23293ff9563c3e391954b2e224afcf8b2b0fcc3888aaMichael J. Spencer *OutMemBuf = wrap(MB.take()); 233030377e780918aacda1befa47054c61b0155c194cDan Gohman return 0; 2331da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen } 2332d65267ee625bb9cf8dc655a0c0409760e2b76c71Daniel Dunbar 2333333fb04506233255f10d8095c9e2de5e5f0fdc6fMichael J. Spencer *OutMessage = strdup(ec.message().c_str()); 233430377e780918aacda1befa47054c61b0155c194cDan Gohman return 1; 2335da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 2336da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2337da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenvoid LLVMDisposeMemoryBuffer(LLVMMemoryBufferRef MemBuf) { 2338da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen delete unwrap(MemBuf); 2339da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen} 234011112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman 23411a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson/*===-- Pass Registry -----------------------------------------------------===*/ 23421a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson 23431a3d23362168ae6d8e07efd547a92cc36738a789Owen AndersonLLVMPassRegistryRef LLVMGetGlobalPassRegistry(void) { 23441a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson return wrap(PassRegistry::getPassRegistry()); 23451a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson} 234611112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman 234711112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman/*===-- Pass Manager ------------------------------------------------------===*/ 234811112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman 234911112e0d7b1fb2741ed65a5085037918d1425916Dan GohmanLLVMPassManagerRef LLVMCreatePassManager() { 235011112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman return wrap(new PassManager()); 235111112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman} 235211112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman 235311112e0d7b1fb2741ed65a5085037918d1425916Dan GohmanLLVMPassManagerRef LLVMCreateFunctionPassManagerForModule(LLVMModuleRef M) { 235411112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman return wrap(new FunctionPassManager(unwrap(M))); 235511112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman} 235611112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman 235711112e0d7b1fb2741ed65a5085037918d1425916Dan GohmanLLVMPassManagerRef LLVMCreateFunctionPassManager(LLVMModuleProviderRef P) { 235811112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman return LLVMCreateFunctionPassManagerForModule( 235911112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman reinterpret_cast<LLVMModuleRef>(P)); 236011112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman} 236111112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman 236211112e0d7b1fb2741ed65a5085037918d1425916Dan GohmanLLVMBool LLVMRunPassManager(LLVMPassManagerRef PM, LLVMModuleRef M) { 236311112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman return unwrap<PassManager>(PM)->run(*unwrap(M)); 236411112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman} 236511112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman 236611112e0d7b1fb2741ed65a5085037918d1425916Dan GohmanLLVMBool LLVMInitializeFunctionPassManager(LLVMPassManagerRef FPM) { 236711112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman return unwrap<FunctionPassManager>(FPM)->doInitialization(); 236811112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman} 236911112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman 237011112e0d7b1fb2741ed65a5085037918d1425916Dan GohmanLLVMBool LLVMRunFunctionPassManager(LLVMPassManagerRef FPM, LLVMValueRef F) { 237111112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman return unwrap<FunctionPassManager>(FPM)->run(*unwrap<Function>(F)); 237211112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman} 237311112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman 237411112e0d7b1fb2741ed65a5085037918d1425916Dan GohmanLLVMBool LLVMFinalizeFunctionPassManager(LLVMPassManagerRef FPM) { 237511112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman return unwrap<FunctionPassManager>(FPM)->doFinalization(); 237611112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman} 237711112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman 237811112e0d7b1fb2741ed65a5085037918d1425916Dan Gohmanvoid LLVMDisposePassManager(LLVMPassManagerRef PM) { 237911112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman delete unwrap(PM); 238011112e0d7b1fb2741ed65a5085037918d1425916Dan Gohman} 2381