diff options
Diffstat (limited to 'examples/ExceptionDemo/ExceptionDemo.cpp')
-rw-r--r-- | examples/ExceptionDemo/ExceptionDemo.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/examples/ExceptionDemo/ExceptionDemo.cpp b/examples/ExceptionDemo/ExceptionDemo.cpp index 360407abb6..9e823168e2 100644 --- a/examples/ExceptionDemo/ExceptionDemo.cpp +++ b/examples/ExceptionDemo/ExceptionDemo.cpp @@ -62,6 +62,9 @@ #include "llvm/Support/Dwarf.h" #include "llvm/Support/TargetSelect.h" +// FIXME: See use of UpgradeExceptionHandling(...) below +#include "llvm/AutoUpgrade.h" + // FIXME: Although all systems tested with (Linux, OS X), do not need this // header file included. A user on ubuntu reported, undefined symbols // for stderr, and fprintf, and the addition of this include fixed the @@ -1341,6 +1344,17 @@ llvm::Function *createCatchWrappedInvokeFunction(llvm::Module &module, catchBlocks[nextTypeToCatch]); } + // FIXME: This is a hack to get the demo working with the new 3.0 exception + // infrastructure. As this makes the demo no longer a demo, and + // especially not a demo on how to use the llvm exception mechanism, + // this hack will shortly be changed to use the new 3.0 exception + // infrastructure. However for the time being this demo is an + // example on how to use the AutoUpgrade UpgradeExceptionHandling(...) + // function on < 3.0 exception handling code. + // + // Must be run before verifier + UpgradeExceptionHandling(&module); + llvm::verifyFunction(*ret); fpm.run(*ret); @@ -1981,10 +1995,10 @@ int main(int argc, char *argv[]) { // Generate test code using function throwCppException(...) as // the function which throws foreign exceptions. llvm::Function *toRun = - createUnwindExceptionTest(*module, - theBuilder, - fpm, - "throwCppException"); + createUnwindExceptionTest(*module, + theBuilder, + fpm, + "throwCppException"); fprintf(stderr, "\nBegin module dump:\n\n"); |