aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CodeGenFunction.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-07-20 21:07:09 +0000
committerChris Lattner <sabre@nondot.org>2010-07-20 21:07:09 +0000
commit83252dcfe61aaebcb6bc117e71dc12968729513f (patch)
treea303b42463464aef9a146dbc5678a70d0c0bfe31 /lib/CodeGen/CodeGenFunction.h
parent021a7a63984f0f912dc9e9dae2a1b3e1509a40ce (diff)
Follow the implementation approach suggested by PR6687,
which generates more efficient and more obviously conformant code. We now test for overflow of the multiply then force the result to -1 if so. On X86, this generates nice code like this: __Z4testl: ## @_Z4testl ## BB#0: ## %entry subl $12, %esp movl $4, %eax mull 16(%esp) testl %edx, %edx movl $-1, %ecx cmovel %eax, %ecx movl %ecx, (%esp) call __Znam addl $12, %esp ret git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108927 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CodeGenFunction.h')
-rw-r--r--lib/CodeGen/CodeGenFunction.h6
1 files changed, 1 insertions, 5 deletions
diff --git a/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h
index 1a117cab96..f236eb4253 100644
--- a/lib/CodeGen/CodeGenFunction.h
+++ b/lib/CodeGen/CodeGenFunction.h
@@ -656,7 +656,7 @@ private:
llvm::BasicBlock *TerminateLandingPad;
llvm::BasicBlock *TerminateHandler;
- llvm::BasicBlock *TrapBB, *ThrowLengthErrorBB;
+ llvm::BasicBlock *TrapBB;
public:
CodeGenFunction(CodeGenModule &cgm);
@@ -1544,10 +1544,6 @@ public:
/// generate a branch around the created basic block as necessary.
llvm::BasicBlock *getTrapBB();
- /// getThrowLengthErrorBB - Create a basic block that will call
- /// std::__throw_length_error to throw a std::length_error exception.
- llvm::BasicBlock *getThrowLengthErrorBB();
-
/// EmitCallArg - Emit a single call argument.
RValue EmitCallArg(const Expr *E, QualType ArgType);