Ensure we preserve line information for each trap for

-fcatch-undefined-behavior if we aren't optimizing.  WIP.

llvm-svn: 91382
This commit is contained in:
Mike Stump 2009-12-15 00:59:40 +00:00
parent 0e8b9e32d1
commit 9a4e0128a8
1 changed files with 9 additions and 1 deletions

View File

@ -18,6 +18,7 @@
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclObjC.h"
#include "llvm/Intrinsics.h"
#include "clang/CodeGen/CodeGenOptions.h"
#include "llvm/Target/TargetData.h"
using namespace clang;
using namespace CodeGen;
@ -1014,7 +1015,14 @@ LValue CodeGenFunction::EmitPredefinedLValue(const PredefinedExpr *E) {
}
llvm::BasicBlock*CodeGenFunction::getTrapBB() {
if (TrapBB)
const CodeGenOptions &GCO = CGM.getCodeGenOpts();
// If we are not optimzing, don't collapse all calls to trap in the function
// to the same call, that way, in the debugger they can see which operation
// did in fact fail. If we are optimizing, we collpase all call to trap down
// to just one per function to save on codesize.
if (GCO.OptimizationLevel
&& TrapBB)
return TrapBB;
llvm::BasicBlock *Cont = 0;