Skip to content

Instantly share code, notes, and snippets.

@WheretIB
Created March 24, 2019 13:43
Show Gist options
  • Save WheretIB/732d025b624097828172d029c9474489 to your computer and use it in GitHub Desktop.
Save WheretIB/732d025b624097828172d029c9474489 to your computer and use it in GitHub Desktop.
llvm interface stubs
struct LLVMContextRefOpaque{};
struct LLVMModuleRefOpaque{};
struct LLVMBuilderRefOpaque{};
struct LLVMPassManagerRefOpaque{};
struct LLVMTypeRefOpaque{};
struct LLVMValueRefOpaque{};
struct LLVMBasicBlockRefOpaque{};
typedef LLVMContextRefOpaque* LLVMContextRef;
typedef LLVMModuleRefOpaque* LLVMModuleRef;
typedef LLVMBuilderRefOpaque* LLVMBuilderRef;
typedef LLVMPassManagerRefOpaque* LLVMPassManagerRef;
typedef LLVMTypeRefOpaque* LLVMTypeRef;
typedef LLVMValueRefOpaque* LLVMValueRef;
typedef LLVMBasicBlockRefOpaque* LLVMBasicBlockRef;
static LLVMTypeRefOpaque placeholderType;
static LLVMValueRefOpaque placeholderValue;
static LLVMBasicBlockRefOpaque placeholderBasicBlock;
LLVMTypeRef LLVMVoidTypeInContext(LLVMContextRef){ return &placeholderType; }
LLVMTypeRef LLVMInt1TypeInContext(LLVMContextRef){ return &placeholderType; }
LLVMTypeRef LLVMInt8TypeInContext(LLVMContextRef){ return &placeholderType; }
LLVMTypeRef LLVMInt16TypeInContext(LLVMContextRef){ return &placeholderType; }
LLVMTypeRef LLVMInt32TypeInContext(LLVMContextRef){ return &placeholderType; }
LLVMTypeRef LLVMInt64TypeInContext(LLVMContextRef){ return &placeholderType; }
LLVMTypeRef LLVMFloatTypeInContext(LLVMContextRef){ return &placeholderType; }
LLVMTypeRef LLVMDoubleTypeInContext(LLVMContextRef){ return &placeholderType; }
LLVMTypeRef LLVMPointerType(LLVMTypeRef, unsigned){ return &placeholderType; }
LLVMTypeRef LLVMStructTypeInContext(LLVMContextRef, LLVMTypeRef*, unsigned, bool){ return &placeholderType; }
LLVMTypeRef LLVMArrayType(LLVMTypeRef, unsigned){ return &placeholderType; }
LLVMTypeRef LLVMStructCreateNamed(LLVMContextRef, const char*){ return &placeholderType; }
void LLVMStructSetBody(LLVMTypeRef, LLVMTypeRef*, unsigned, bool){}
LLVMTypeRef LLVMFunctionType(LLVMTypeRef, LLVMTypeRef*, unsigned, bool){ return &placeholderType; }
static int LLVMIntNE = 0;
static int LLVMRealUNE = 0;
static int LLVMIntEQ = 0;
static int LLVMIntSLT = 0;
static int LLVMRealULT = 0;
static int LLVMIntSLE = 0;
static int LLVMRealULE = 0;
static int LLVMIntSGT = 0;
static int LLVMRealUGT = 0;
static int LLVMIntSGE = 0;
static int LLVMRealUGE = 0;
static int LLVMRealUEQ = 0;
LLVMValueRef LLVMBuildSExt(LLVMBuilderRef, LLVMValueRef, LLVMTypeRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildFPCast(LLVMBuilderRef, LLVMValueRef, LLVMTypeRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildTrunc(LLVMBuilderRef, LLVMValueRef, LLVMTypeRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildFPToSI(LLVMBuilderRef, LLVMValueRef, LLVMTypeRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildSIToFP(LLVMBuilderRef, LLVMValueRef, LLVMTypeRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef, LLVMTypeRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildGEP(LLVMBuilderRef, LLVMValueRef, LLVMValueRef*, unsigned, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildStore(LLVMBuilderRef, LLVMValueRef, LLVMValueRef){ return &placeholderValue; }
LLVMValueRef LLVMBuildLoad(LLVMBuilderRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildAdd(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildFAdd(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildZExt(LLVMBuilderRef, LLVMValueRef, LLVMTypeRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildICmp(LLVMBuilderRef, int, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildFCmp(LLVMBuilderRef, int, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildExtractValue(LLVMBuilderRef, LLVMValueRef, unsigned, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildInsertValue(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, unsigned, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef, LLVMValueRef, LLVMTypeRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildCall(LLVMBuilderRef, LLVMValueRef, LLVMValueRef*, unsigned, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildNeg(LLVMBuilderRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildFNeg(LLVMBuilderRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildNot(LLVMBuilderRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildCondBr(LLVMBuilderRef, LLVMValueRef, LLVMBasicBlockRef, LLVMBasicBlockRef){ return &placeholderValue; }
LLVMValueRef LLVMBuildBr(LLVMBuilderRef, LLVMBasicBlockRef){ return &placeholderValue; }
LLVMValueRef LLVMBuildPhi(LLVMBuilderRef, LLVMTypeRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildSub(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildFSub(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildMul(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildFMul(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildSDiv(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildFDiv(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildSRem(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildFRem(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildShl(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildAShr(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildAnd(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildOr(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildXor(LLVMBuilderRef, LLVMValueRef, LLVMValueRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMBuildRetVoid(LLVMBuilderRef){ return &placeholderValue; }
LLVMValueRef LLVMBuildRet(LLVMBuilderRef, LLVMValueRef){ return &placeholderValue; }
LLVMValueRef LLVMBuildSwitch(LLVMBuilderRef, LLVMValueRef, LLVMBasicBlockRef, unsigned){ return &placeholderValue; }
LLVMValueRef LLVMConstInt(LLVMTypeRef, unsigned long long, bool){ return &placeholderValue; }
LLVMValueRef LLVMConstReal(LLVMTypeRef, double){ return &placeholderValue; }
LLVMValueRef LLVMConstStringInContext(LLVMContextRef, char*, unsigned, bool){ return &placeholderValue; }
LLVMValueRef LLVMConstNamedStruct(LLVMTypeRef, LLVMValueRef*, unsigned){ return &placeholderValue; }
LLVMValueRef LLVMConstPointerNull(LLVMTypeRef){ return &placeholderValue; }
LLVMValueRef LLVMConstNull(LLVMTypeRef){ return &placeholderValue; }
LLVMBasicBlockRef LLVMAppendBasicBlockInContext(LLVMContextRef, LLVMValueRef, const char*){ return &placeholderBasicBlock; }
void LLVMPositionBuilderAtEnd(LLVMBuilderRef, LLVMBasicBlockRef){}
void LLVMAddIncoming(LLVMValueRef, LLVMValueRef*, LLVMBasicBlockRef*, unsigned){}
void LLVMAddCase(LLVMValueRef, LLVMValueRef, LLVMBasicBlockRef){}
LLVMValueRef LLVMAddFunction(LLVMModuleRef, const char*, LLVMTypeRef){ return &placeholderValue; }
LLVMValueRef LLVMGetNamedFunction(LLVMModuleRef, const char*){ return &placeholderValue; }
LLVMValueRef LLVMGetParam(LLVMValueRef, unsigned){ return &placeholderValue; }
LLVMValueRef LLVMAddGlobal(LLVMModuleRef, LLVMTypeRef, const char*){ return &placeholderValue; }
LLVMTypeRef LLVMTypeOf(LLVMValueRef){ return &placeholderType; }
void LLVMDumpType(LLVMTypeRef){}
void LLVMDumpValue(LLVMValueRef){}
static int LLVMReturnStatusAction = 0;
int LLVMVerifyFunction(LLVMValueRef, int){ return 0; }
int LLVMVerifyModule(LLVMModuleRef, int, char**){ return 0; }
void LLVMDisposeMessage(const char*){}
int LLVMRunFunctionPassManager(LLVMPassManagerRef, LLVMValueRef){ return 0; }
LLVMContextRef LLVMContextCreate(){ return 0; }
LLVMModuleRef LLVMModuleCreateWithNameInContext(const char*, LLVMContextRef){ return 0; }
LLVMBuilderRef LLVMCreateBuilderInContext(LLVMContextRef){ return 0; }
LLVMPassManagerRef LLVMCreateFunctionPassManagerForModule(LLVMModuleRef){ return 0; }
void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef){}
void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef){}
void LLVMAddInstructionCombiningPass(LLVMPassManagerRef){}
void LLVMAddEarlyCSEPass(LLVMPassManagerRef){}
void LLVMAddReassociatePass(LLVMPassManagerRef){}
void LLVMAddGVNPass(LLVMPassManagerRef){}
void LLVMAddConstantPropagationPass(LLVMPassManagerRef){}
void LLVMAddCFGSimplificationPass(LLVMPassManagerRef){}
void LLVMAddAggressiveDCEPass(LLVMPassManagerRef){}
void LLVMInitializeFunctionPassManager(LLVMPassManagerRef){}
void LLVMFinalizeFunctionPassManager(LLVMPassManagerRef){}
void LLVMDisposePassManager(LLVMPassManagerRef){}
void LLVMDisposeBuilder(LLVMBuilderRef){}
void LLVMDisposeModule(LLVMModuleRef){}
void LLVMContextDispose(LLVMContextRef){}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment