aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/ExceptionDemo/ExceptionDemo.cpp259
1 files changed, 128 insertions, 131 deletions
diff --git a/examples/ExceptionDemo/ExceptionDemo.cpp b/examples/ExceptionDemo/ExceptionDemo.cpp
index f2203a72b6..5d7a63dce8 100644
--- a/examples/ExceptionDemo/ExceptionDemo.cpp
+++ b/examples/ExceptionDemo/ExceptionDemo.cpp
@@ -113,9 +113,9 @@ extern "C" {
} __attribute__((__aligned__));
struct _Unwind_Context;
- typedef struct _Unwind_Context* _Unwind_Context_t;
+ typedef struct _Unwind_Context *_Unwind_Context_t;
- extern const uint8_t* _Unwind_GetLanguageSpecificData (_Unwind_Context_t c);
+ extern const uint8_t *_Unwind_GetLanguageSpecificData (_Unwind_Context_t c);
extern uintptr_t _Unwind_GetGR (_Unwind_Context_t c, int i);
extern void _Unwind_SetGR (_Unwind_Context_t c, int i, uintptr_t n);
extern void _Unwind_SetIP (_Unwind_Context_t, uintptr_t new_value);
@@ -171,13 +171,13 @@ static uint64_t ourBaseExceptionClass = 0;
static std::vector<std::string> ourTypeInfoNames;
static std::map<int, std::string> ourTypeInfoNamesIndex;
-static llvm::StructType* ourTypeInfoType;
-static llvm::StructType* ourExceptionType;
-static llvm::StructType* ourUnwindExceptionType;
+static llvm::StructType *ourTypeInfoType;
+static llvm::StructType *ourExceptionType;
+static llvm::StructType *ourUnwindExceptionType;
-static llvm::ConstantInt* ourExceptionNotThrownState;
-static llvm::ConstantInt* ourExceptionThrownState;
-static llvm::ConstantInt* ourExceptionCaughtState;
+static llvm::ConstantInt *ourExceptionNotThrownState;
+static llvm::ConstantInt *ourExceptionThrownState;
+static llvm::ConstantInt *ourExceptionCaughtState;
typedef std::vector<std::string> ArgNames;
typedef std::vector<const llvm::Type*> ArgTypes;
@@ -198,11 +198,11 @@ typedef std::vector<const llvm::Type*> ArgTypes;
/// @param declarationOnly for function declarations
/// @param isVarArg function uses vararg arguments
/// @returns function instance
-llvm::Function *createFunction(llvm::Module& module,
- const llvm::Type* retType,
- const ArgTypes& theArgTypes,
- const ArgNames& theArgNames,
- const std::string& functName,
+llvm::Function *createFunction(llvm::Module &module,
+ const llvm::Type *retType,
+ const ArgTypes &theArgTypes,
+ const ArgNames &theArgNames,
+ const std::string &functName,
llvm::GlobalValue::LinkageTypes linkage,
bool declarationOnly,
bool isVarArg) {
@@ -234,13 +234,13 @@ llvm::Function *createFunction(llvm::Module& module,
/// @param type stack variable type
/// @param initWith optional constant initialization value
/// @returns AllocaInst instance
-static llvm::AllocaInst *createEntryBlockAlloca(llvm::Function& function,
+static llvm::AllocaInst *createEntryBlockAlloca(llvm::Function &function,
const std::string &varName,
- const llvm::Type* type,
- llvm::Constant* initWith = 0) {
- llvm::BasicBlock& block = function.getEntryBlock();
+ const llvm::Type *type,
+ llvm::Constant *initWith = 0) {
+ llvm::BasicBlock &block = function.getEntryBlock();
llvm::IRBuilder<> tmp(&block, block.begin());
- llvm::AllocaInst* ret = tmp.CreateAlloca(type, 0, varName.c_str());
+ llvm::AllocaInst *ret = tmp.CreateAlloca(type, 0, varName.c_str());
if (initWith)
tmp.CreateStore(initWith, ret);
@@ -265,7 +265,7 @@ extern "C" {
/// Prints a 32 bit number, according to the format, to stderr.
/// @param intToPrint integer to print
/// @param format printf like format to use when printing
-void print32Int(int intToPrint, const char* format) {
+void print32Int(int intToPrint, const char *format) {
if (format) {
// Note: No NULL check
fprintf(stderr, format, intToPrint);
@@ -282,7 +282,7 @@ void print32Int(int intToPrint, const char* format) {
/// Prints a 64 bit number, according to the format, to stderr.
/// @param intToPrint integer to print
/// @param format printf like format to use when printing
-void print64Int(long int intToPrint, const char* format) {
+void print64Int(long int intToPrint, const char *format) {
if (format) {
// Note: No NULL check
fprintf(stderr, format, intToPrint);
@@ -296,7 +296,7 @@ void print64Int(long int intToPrint, const char* format) {
/// Prints a C string to stderr
/// @param toPrint string to print
-void printStr(char* toPrint) {
+void printStr(char *toPrint) {
if (toPrint) {
fprintf(stderr, "%s", toPrint);
}
@@ -310,7 +310,7 @@ void printStr(char* toPrint) {
/// is calculated from the supplied OurBaseException_t::unwindException
/// member address. Handles (ignores), NULL pointers.
/// @param expToDelete exception to delete
-void deleteOurException(OurUnwindException* expToDelete) {
+void deleteOurException(OurUnwindException *expToDelete) {
#ifdef DEBUG
fprintf(stderr,
"deleteOurException(...).\n");
@@ -331,7 +331,7 @@ void deleteOurException(OurUnwindException* expToDelete) {
/// @unlink
/// @param expToDelete exception instance to delete
void deleteFromUnwindOurException(_Unwind_Reason_Code reason,
- OurUnwindException* expToDelete) {
+ OurUnwindException *expToDelete) {
#ifdef DEBUG
fprintf(stderr,
"deleteFromUnwindOurException(...).\n");
@@ -344,9 +344,9 @@ void deleteFromUnwindOurException(_Unwind_Reason_Code reason,
/// Creates (allocates on the heap), an exception (OurException instance),
/// of the supplied type info type.
/// @param type type info type
-OurUnwindException* createOurException(int type) {
+OurUnwindException *createOurException(int type) {
size_t size = sizeof(OurException);
- OurException* ret = (OurException*) memset(malloc(size), 0, size);
+ OurException *ret = (OurException*) memset(malloc(size), 0, size);
(ret->type).type = type;
(ret->unwindException).exception_class = ourBaseExceptionClass;
(ret->unwindException).exception_cleanup = deleteFromUnwindOurException;
@@ -360,11 +360,11 @@ OurUnwindException* createOurException(int type) {
/// @link http://dwarfstd.org/Dwarf3.pdf @unlink
/// @param data reference variable holding memory pointer to decode from
/// @returns decoded value
-static uintptr_t readULEB128(const uint8_t** data) {
+static uintptr_t readULEB128(const uint8_t **data) {
uintptr_t result = 0;
uintptr_t shift = 0;
unsigned char byte;
- const uint8_t* p = *data;
+ const uint8_t *p = *data;
do {
byte = *p++;
@@ -384,11 +384,11 @@ static uintptr_t readULEB128(const uint8_t** data) {
/// @link http://dwarfstd.org/Dwarf3.pdf @unlink
/// @param data reference variable holding memory pointer to decode from
/// @returns decoded value
-static uintptr_t readSLEB128(const uint8_t** data) {
+static uintptr_t readSLEB128(const uint8_t **data) {
uintptr_t result = 0;
uintptr_t shift = 0;
unsigned char byte;
- const uint8_t* p = *data;
+ const uint8_t *p = *data;
do {
byte = *p++;
@@ -413,9 +413,9 @@ static uintptr_t readSLEB128(const uint8_t** data) {
/// @param data reference variable holding memory pointer to decode from
/// @param encoding dwarf encoding type
/// @returns decoded value
-static uintptr_t readEncodedPointer(const uint8_t** data, uint8_t encoding) {
+static uintptr_t readEncodedPointer(const uint8_t **data, uint8_t encoding) {
uintptr_t result = 0;
- const uint8_t* p = *data;
+ const uint8_t *p = *data;
if (encoding == llvm::dwarf::DW_EH_PE_omit)
return(result);
@@ -522,7 +522,7 @@ static bool handleActionValue(int64_t *resultAction,
(exceptionClass != ourBaseExceptionClass))
return(ret);
- struct OurBaseException_t* excp = (struct OurBaseException_t*)
+ struct OurBaseException_t *excp = (struct OurBaseException_t*)
(((char*) exceptionObject) + ourBaseFromUnwindOffset);
struct OurExceptionType_t *excpType = &(excp->type);
int type = excpType->type;
@@ -598,10 +598,10 @@ static bool handleActionValue(int64_t *resultAction,
/// @param context unwind system context
/// @returns minimally supported unwinding control indicator
static _Unwind_Reason_Code handleLsda(int version,
- const uint8_t* lsda,
+ const uint8_t *lsda,
_Unwind_Action actions,
uint64_t exceptionClass,
- struct _Unwind_Exception* exceptionObject,
+ struct _Unwind_Exception *exceptionObject,
_Unwind_Context_t context) {
_Unwind_Reason_Code ret = _URC_CONTINUE_UNWIND;
@@ -621,7 +621,7 @@ static _Unwind_Reason_Code handleLsda(int version,
// emitted dwarf code)
uintptr_t funcStart = _Unwind_GetRegionStart(context);
uintptr_t pcOffset = pc - funcStart;
- struct OurExceptionType_t** classInfo = NULL;
+ struct OurExceptionType_t **classInfo = NULL;
// Note: See JITDwarfEmitter::EmitExceptionTable(...) for corresponding
// dwarf emission
@@ -649,11 +649,11 @@ static _Unwind_Reason_Code handleLsda(int version,
uint8_t callSiteEncoding = *lsda++;
uint32_t callSiteTableLength = readULEB128(&lsda);
- const uint8_t* callSiteTableStart = lsda;
- const uint8_t* callSiteTableEnd = callSiteTableStart +
+ const uint8_t *callSiteTableStart = lsda;
+ const uint8_t *callSiteTableEnd = callSiteTableStart +
callSiteTableLength;
- const uint8_t* actionTableStart = callSiteTableEnd;
- const uint8_t* callSitePtr = callSiteTableStart;
+ const uint8_t *actionTableStart = callSiteTableEnd;
+ const uint8_t *callSitePtr = callSiteTableStart;
bool foreignException = false;
@@ -704,14 +704,11 @@ static _Unwind_Reason_Code handleLsda(int version,
int64_t actionValue = 0;
if (actionEntry) {
- exceptionMatched = handleActionValue
- (
- &actionValue,
- classInfo,
- actionEntry,
- exceptionClass,
- exceptionObject
- );
+ exceptionMatched = handleActionValue(&actionValue,
+ classInfo,
+ actionEntry,
+ exceptionClass,
+ exceptionObject);
}
if (!(actions & _UA_SEARCH_PHASE)) {
@@ -789,7 +786,7 @@ static _Unwind_Reason_Code handleLsda(int version,
_Unwind_Reason_Code ourPersonality(int version,
_Unwind_Action actions,
uint64_t exceptionClass,
- struct _Unwind_Exception* exceptionObject,
+ struct _Unwind_Exception *exceptionObject,
_Unwind_Context_t context) {
#ifdef DEBUG
fprintf(stderr,
@@ -804,7 +801,7 @@ _Unwind_Reason_Code ourPersonality(int version,
}
#endif
- const uint8_t* lsda = _Unwind_GetLanguageSpecificData(context);
+ const uint8_t *lsda = _Unwind_GetLanguageSpecificData(context);
#ifdef DEBUG
fprintf(stderr,
@@ -860,15 +857,15 @@ uint64_t genClass(const unsigned char classChars[], size_t classCharsSize)
/// generated, and is used to hold the constant string. A value of
/// false indicates that the constant string will be stored on the
/// stack.
-void generateStringPrint(llvm::LLVMContext& context,
- llvm::Module& module,
- llvm::IRBuilder<>& builder,
+void generateStringPrint(llvm::LLVMContext &context,
+ llvm::Module &module,
+ llvm::IRBuilder<> &builder,
std::string toPrint,
bool useGlobal = true) {
llvm::Function *printFunct = module.getFunction("printStr");
llvm::Value *stringVar;
- llvm::Constant* stringConstant =
+ llvm::Constant *stringConstant =
llvm::ConstantArray::get(context, toPrint);
if (useGlobal) {
@@ -886,7 +883,7 @@ void generateStringPrint(llvm::LLVMContext& context,
builder.CreateStore(stringConstant, stringVar);
}
- llvm::Value* cast =
+ llvm::Value *cast =
builder.CreatePointerCast(stringVar,
builder.getInt8Ty()->getPointerTo());
builder.CreateCall(printFunct, cast);
@@ -905,11 +902,11 @@ void generateStringPrint(llvm::LLVMContext& context,
/// generated, and is used to hold the constant string. A value of
/// false indicates that the constant string will be stored on the
/// stack.
-void generateIntegerPrint(llvm::LLVMContext& context,
- llvm::Module& module,
- llvm::IRBuilder<>& builder,
- llvm::Function& printFunct,
- llvm::Value& toPrint,
+void generateIntegerPrint(llvm::LLVMContext &context,
+ llvm::Module &module,
+ llvm::IRBuilder<> &builder,
+ llvm::Function &printFunct,
+ llvm::Value &toPrint,
std::string format,
bool useGlobal = true) {
llvm::Constant *stringConstant = llvm::ConstantArray::get(context, format);
@@ -930,7 +927,7 @@ void generateIntegerPrint(llvm::LLVMContext& context,
builder.CreateStore(stringConstant, stringVar);
}
- llvm::Value* cast =
+ llvm::Value *cast =
builder.CreateBitCast(stringVar,
builder.getInt8Ty()->getPointerTo());
builder.CreateCall2(&printFunct, &toPrint, cast);
@@ -956,16 +953,16 @@ void generateIntegerPrint(llvm::LLVMContext& context,
/// @param exceptionCaughtFlag reference exception caught/thrown status storage
/// @param exceptionStorage reference to exception pointer storage
/// @returns newly created block
-static llvm::BasicBlock* createFinallyBlock(llvm::LLVMContext& context,
- llvm::Module& module,
- llvm::IRBuilder<>& builder,
- llvm::Function& toAddTo,
- std::string& blockName,
- std::string& functionId,
- llvm::BasicBlock& terminatorBlock,
- llvm::BasicBlock& unwindResumeBlock,
- llvm::Value** exceptionCaughtFlag,
- llvm::Value** exceptionStorage) {
+static llvm::BasicBlock *createFinallyBlock(llvm::LLVMContext &context,
+ llvm::Module &module,
+ llvm::IRBuilder<> &builder,
+ llvm::Function &toAddTo,
+ std::string &blockName,
+ std::string &functionId,
+ llvm::BasicBlock &terminatorBlock,
+ llvm::BasicBlock &unwindResumeBlock,
+ llvm::Value **exceptionCaughtFlag,
+ llvm::Value **exceptionStorage) {
assert(exceptionCaughtFlag &&
"ExceptionDemo::createFinallyBlock(...):exceptionCaughtFlag "
"is NULL");
@@ -979,7 +976,7 @@ static llvm::BasicBlock* createFinallyBlock(llvm::LLVMContext& context,
ourExceptionNotThrownState->getType(),
ourExceptionNotThrownState);
- const llvm::PointerType* exceptionStorageType =
+ const llvm::PointerType *exceptionStorageType =
builder.getInt8Ty()->getPointerTo();
*exceptionStorage =
createEntryBlockAlloca(toAddTo,
@@ -1003,7 +1000,7 @@ static llvm::BasicBlock* createFinallyBlock(llvm::LLVMContext& context,
bufferToPrint.str(),
USE_GLOBAL_STR_CONSTS);
- llvm::SwitchInst* theSwitch =
+ llvm::SwitchInst *theSwitch =
builder.CreateSwitch(builder.CreateLoad(*exceptionCaughtFlag),
&terminatorBlock,
2);
@@ -1026,14 +1023,14 @@ static llvm::BasicBlock* createFinallyBlock(llvm::LLVMContext& context,
/// @param terminatorBlock terminator "end" block
/// @param exceptionCaughtFlag exception caught/thrown status
/// @returns newly created block
-static llvm::BasicBlock* createCatchBlock(llvm::LLVMContext& context,
- llvm::Module& module,
- llvm::IRBuilder<>& builder,
- llvm::Function& toAddTo,
- std::string& blockName,
- std::string& functionId,
- llvm::BasicBlock& terminatorBlock,
- llvm::Value& exceptionCaughtFlag) {
+static llvm::BasicBlock *createCatchBlock(llvm::LLVMContext &context,
+ llvm::Module &module,
+ llvm::IRBuilder<> &builder,
+ llvm::Function &toAddTo,
+ std::string &blockName,
+ std::string &functionId,
+ llvm::BasicBlock &terminatorBlock,
+ llvm::Value &exceptionCaughtFlag) {
llvm::BasicBlock *ret = llvm::BasicBlock::Create(context,
blockName,
@@ -1079,15 +1076,15 @@ static llvm::BasicBlock* createCatchBlock(llvm::LLVMContext& context,
/// @param exceptionTypesToCatch array of type info types to "catch"
/// @returns generated function
static
-llvm::Function* createCatchWrappedInvokeFunction(llvm::Module& module,
- llvm::IRBuilder<>& builder,
- llvm::FunctionPassManager& fpm,
- llvm::Function& toInvoke,
- std::string ourId,
- unsigned numExceptionsToCatch,
- unsigned exceptionTypesToCatch[]) {
-
- llvm::LLVMContext& context = module.getContext();
+llvm::Function *createCatchWrappedInvokeFunction(llvm::Module &module,
+ llvm::IRBuilder<> &builder,
+ llvm::FunctionPassManager &fpm,
+ llvm::Function &toInvoke,
+ std::string ourId,
+ unsigned numExceptionsToCatch,
+ unsigned exceptionTypesToCatch[]) {
+
+ llvm::LLVMContext &context = module.getContext();
llvm::Function *toPrint32Int = module.getFunction("print32Int");
ArgTypes argTypes;
@@ -1096,7 +1093,7 @@ llvm::Function* createCatchWrappedInvokeFunction(llvm::Module& module,
ArgNames argNames;
argNames.push_back("exceptTypeToThrow");
- llvm::Function* ret = createFunction(module,
+ llvm::Function *ret = createFunction(module,
builder.getVoidTy(),
argTypes,
argNames,
@@ -1135,12 +1132,12 @@ llvm::Function* createCatchWrappedInvokeFunction(llvm::Module& module,
std::string nextName;
std::vector<llvm::BasicBlock*> catchBlocks(numExceptionsToCatch);
- llvm::Value* exceptionCaughtFlag = NULL;
- llvm::Value* exceptionStorage = NULL;
+ llvm::Value *exceptionCaughtFlag = NULL;
+ llvm::Value *exceptionStorage = NULL;
// Finally block which will branch to unwindResumeBlock if
// exception is not caught. Initializes/allocates stack locations.
- llvm::BasicBlock* finallyBlock = createFinallyBlock(context,
+ llvm::BasicBlock *finallyBlock = createFinallyBlock(context,
module,
builder,
*ret,
@@ -1224,13 +1221,13 @@ llvm::Function* createCatchWrappedInvokeFunction(llvm::Module& module,
llvm::Function *ehException = module.getFunction("llvm.eh.exception");
// Retrieve thrown exception
- llvm::Value* unwindException = builder.CreateCall(ehException);
+ llvm::Value *unwindException = builder.CreateCall(ehException);
// Store exception and flag
builder.CreateStore(unwindException, exceptionStorage);
builder.CreateStore(ourExceptionThrownState, exceptionCaughtFlag);
llvm::Function *personality = module.getFunction("ourPersonality");
- llvm::Value* functPtr =
+ llvm::Value *functPtr =
builder.CreatePointerCast(personality,
builder.getInt8Ty()->getPointerTo());
@@ -1256,14 +1253,14 @@ llvm::Function* createCatchWrappedInvokeFunction(llvm::Module& module,
// handles this call. This landing pad (this exception block), will be
// called either because it nees to cleanup (call finally) or a type
// info was found which matched the thrown exception.
- llvm::Value* retTypeInfoIndex = builder.CreateCall(ehSelector,
+ llvm::Value *retTypeInfoIndex = builder.CreateCall(ehSelector,
args.begin(),
args.end());
// Retrieve exception_class member from thrown exception
// (_Unwind_Exception instance). This member tells us whether or not
// the exception is foreign.
- llvm::Value* unwindExceptionClass =
+ llvm::Value *unwindExceptionClass =
builder.CreateLoad(builder.CreateStructGEP(
builder.CreatePointerCast(unwindException,
ourUnwindExceptionType->getPointerTo()),
@@ -1298,7 +1295,7 @@ llvm::Function* createCatchWrappedInvokeFunction(llvm::Module& module,
// (OurException instance).
//
// Note: ourBaseFromUnwindOffset is usually negative
- llvm::Value* typeInfoThrown =
+ llvm::Value *typeInfoThrown =
builder.CreatePointerCast(builder.CreateConstGEP1_64(unwindException,
ourBaseFromUnwindOffset),
ourExceptionType->getPointerTo());
@@ -1309,7 +1306,7 @@ llvm::Function* createCatchWrappedInvokeFunction(llvm::Module& module,
// unlike a true getelementptr (GEP) instruction
typeInfoThrown = builder.CreateStructGEP(typeInfoThrown, 0);
- llvm::Value* typeInfoThrownType =
+ llvm::Value *typeInfoThrownType =
builder.CreateStructGEP(typeInfoThrown, 0);
generateIntegerPrint(context,
@@ -1324,7 +1321,7 @@ llvm::Function* createCatchWrappedInvokeFunction(llvm::Module& module,
USE_GLOBAL_STR_CONSTS);
// Route to matched type info catch block or run cleanup finally block
- llvm::SwitchInst* switchToCatchBlock =
+ llvm::SwitchInst *switchToCatchBlock =
builder.CreateSwitch(retTypeInfoIndex,
finallyBlock,
numExceptionsToCatch);
@@ -1360,13 +1357,13 @@ llvm::Function* createCatchWrappedInvokeFunction(llvm::Module& module,
/// if the above nativeThrowType matches generated function's arg.
/// @returns generated function
static
-llvm::Function* createThrowExceptionFunction(llvm::Module& module,
- llvm::IRBuilder<>& builder,
- llvm::FunctionPassManager& fpm,
+llvm::Function *createThrowExceptionFunction(llvm::Module &module,
+ llvm::IRBuilder<> &builder,
+ llvm::FunctionPassManager &fpm,
std::string ourId,
int32_t nativeThrowType,
- llvm::Function& nativeThrowFunct) {
- llvm::LLVMContext& context = module.getContext();
+ llvm::Function &nativeThrowFunct) {
+ llvm::LLVMContext &context = module.getContext();
namedValues.clear();
ArgTypes unwindArgTypes;
unwindArgTypes.push_back(builder.getInt32Ty());
@@ -1398,7 +1395,7 @@ llvm::Function* createThrowExceptionFunction(llvm::Module& module,
"generatedThrow",
ret);
// Retrieved runtime type info type to throw
- llvm::Value* exceptionType = namedValues["exceptTypeToThrow"];
+ llvm::Value *exceptionType = namedValues["exceptTypeToThrow"];
// nativeThrowBlock block
@@ -1426,7 +1423,7 @@ llvm::Function* createThrowExceptionFunction(llvm::Module& module,
// Switches on runtime type info type value to determine whether or not
// a foreign exception is thrown. Defaults to throwing one of our
// generated exceptions.
- llvm::SwitchInst* theSwitch = builder.CreateSwitch(exceptionType,
+ llvm::SwitchInst *theSwitch = builder.CreateSwitch(exceptionType,
generatedThrowBlock,
1);
@@ -1444,7 +1441,7 @@ llvm::Function* createThrowExceptionFunction(llvm::Module& module,
module.getFunction("_Unwind_RaiseException");
// Creates exception to throw with runtime type info type.
- llvm::Value* exception =
+ llvm::Value *exception =
builder.CreateCall(createOurException,
namedValues["exceptTypeToThrow"]);
@@ -1459,8 +1456,8 @@ llvm::Function* createThrowExceptionFunction(llvm::Module& module,
}
static void createStandardUtilityFunctions(unsigned numTypeInfos,
- llvm::Module& module,
- llvm::IRBuilder<>& builder);
+ llvm::Module &module,
+ llvm::IRBuilder<> &builder);
/// Creates test code by generating and organizing these functions into the
/// test case. The test case consists of an outer function setup to invoke
@@ -1482,9 +1479,9 @@ static void createStandardUtilityFunctions(unsigned numTypeInfos,
/// @param nativeThrowFunctName name of external function which will throw
/// a foreign exception
/// @returns outermost generated test function.
-llvm::Function* createUnwindExceptionTest(llvm::Module& module,
- llvm::IRBuilder<>& builder,
- llvm::FunctionPassManager& fpm,
+llvm::Function *createUnwindExceptionTest(llvm::Module &module,
+ llvm::IRBuilder<> &builder,
+ llvm::FunctionPassManager &fpm,
std::string nativeThrowFunctName) {
// Number of type infos to generate
unsigned numTypeInfos = 6;
@@ -1499,7 +1496,7 @@ llvm::Function* createUnwindExceptionTest(llvm::Module& module,
// Create exception throw function using the value ~0 to cause
// foreign exceptions to be thrown.
- llvm::Function* throwFunct =
+ llvm::Function *throwFunct =
createThrowExceptionFunction(module,
builder,
fpm,
@@ -1512,7 +1509,7 @@ llvm::Function* createUnwindExceptionTest(llvm::Module& module,
sizeof(unsigned);
// Generate inner function.
- llvm::Function* innerCatchFunct =
+ llvm::Function *innerCatchFunct =
createCatchWrappedInvokeFunction(module,
builder,
fpm,
@@ -1527,7 +1524,7 @@ llvm::Function* createUnwindExceptionTest(llvm::Module& module,
sizeof(unsigned);
// Generate outer function
- llvm::Function* outerCatchFunct =
+ llvm::Function *outerCatchFunct =
createCatchWrappedInvokeFunction(module,
builder,
fpm,
@@ -1547,10 +1544,10 @@ public:
OurCppRunException(const std::string reason) :
std::runtime_error(reason) {}
- OurCppRunException (const OurCppRunException& toCopy) :
+ OurCppRunException (const OurCppRunException &toCopy) :
std::runtime_error(toCopy) {}
- OurCppRunException& operator = (const OurCppRunException& toCopy) {
+ OurCppRunException &operator = (const OurCppRunException &toCopy) {
return(reinterpret_cast<OurCppRunException&>(
std::runtime_error::operator=(toCopy)));
}
@@ -1579,8 +1576,8 @@ typedef void (*OurExceptionThrowFunctType) (int32_t typeToThrow);
/// @param typeToThrow type info type of generated exception to throw, or
/// indicator to cause foreign exception to be thrown.
static
-void runExceptionThrow(llvm::ExecutionEngine* engine,
- llvm::Function* function,
+void runExceptionThrow(llvm::ExecutionEngine *engine,
+ llvm::Function *function,
int32_t typeToThrow) {
// Find test's function pointer
@@ -1624,10 +1621,10 @@ typedef llvm::ArrayRef<const llvm::Type*> TypeArray;
/// @param module code for module instance
/// @param builder builder instance
static void createStandardUtilityFunctions(unsigned numTypeInfos,
- llvm::Module& module,
- llvm::IRBuilder<>& builder) {
+ llvm::Module &module,
+ llvm::IRBuilder<> &builder) {
- llvm::LLVMContext& context = module.getContext();
+ llvm::LLVMContext &context = module.getContext();
// Exception initializations
@@ -1683,7 +1680,7 @@ static void createStandardUtilityFunctions(unsigned numTypeInfos,
std::vector<llvm::Constant*> structVals;
llvm::Constant *nextStruct;
- llvm::GlobalVariable* nextGlobal = NULL;
+ llvm::GlobalVariable *nextGlobal = NULL;
// Generate each type info
//
@@ -1712,11 +1709,11 @@ static void createStandardUtilityFunctions(unsigned numTypeInfos,
ArgNames argNames;
ArgTypes argTypes;
- llvm::Function* funct = NULL;
+ llvm::Function *funct = NULL;
// print32Int
- const llvm::Type* retType = builder.getVoidTy();
+ const llvm::Type *retType = builder.getVoidTy();
argTypes.clear();
argTypes.push_back(builder.getInt32Ty());
@@ -1910,7 +1907,7 @@ static void createStandardUtilityFunctions(unsigned numTypeInfos,
/// <= 6 and >= 1 will be caught by test functions; and type info types > 6
/// will result in exceptions which pass through to the test harness. All other
/// type info types are not supported and could cause a crash.
-int main(int argc, char* argv[]) {
+int main(int argc, char *argv[]) {
if (argc == 1) {
fprintf(stderr,
"\nUsage: ExceptionDemo <exception type to throw> "
@@ -1929,17 +1926,17 @@ int main(int argc, char* argv[]) {
llvm::JITExceptionHandling = true;
llvm::InitializeNativeTarget();
- llvm::LLVMContext& context = llvm::getGlobalContext();
+ llvm::LLVMContext &context = llvm::getGlobalContext();
llvm::IRBuilder<> theBuilder(context);
// Make the module, which holds all the code.
- llvm::Module* module = new llvm::Module("my cool jit", context);
+ llvm::Module *module = new llvm::Module("my cool jit", context);
// Build engine with JIT
llvm::EngineBuilder factory(module);
factory.setEngineKind(llvm::EngineKind::JIT);
factory.setAllocateGVsWithCode(false);
- llvm::ExecutionEngine* executionEngine = factory.create();
+ llvm::ExecutionEngine *executionEngine = factory.create();
{
llvm::FunctionPassManager fpm(module);
@@ -1976,7 +1973,7 @@ int main(int argc, char* argv[]) {
// Generate test code using function throwCppException(...) as
// the function which throws foreign exceptions.
- llvm::Function* toRun =
+ llvm::Function *toRun =
createUnwindExceptionTest(*module,
theBuilder,
fpm,