summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorJoseph Tremoulet <jotrem@microsoft.com>2015-10-17 00:08:08 +0000
committerJoseph Tremoulet <jotrem@microsoft.com>2015-10-17 00:08:08 +0000
commit55b51e9dccd1328995b410772f24be3973a122a2 (patch)
treee7e8cc40a79ed9cfa8288e8a848cb991bf4a1f48 /llvm/lib
parentce10cec56a83c415409bbeb0bce5d5dd9ac5cf64 (diff)
downloadbcm5719-llvm-55b51e9dccd1328995b410772f24be3973a122a2.tar.gz
bcm5719-llvm-55b51e9dccd1328995b410772f24be3973a122a2.zip
[WinEH] Fix eh.exceptionpointer intrinsic lowering
Summary: Some shared code for handling eh.exceptionpointer and eh.exceptioncode needs to not share the part that truncates to 32 bits, which is intended just for exception codes. Reviewers: rnk Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D13747 llvm-svn: 250588
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index 3f061f3150d..cd4ef362d47 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -5258,7 +5258,8 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
unsigned VReg = FuncInfo.getCatchPadExceptionPointerVReg(CPI, PtrRC);
SDValue N =
DAG.getCopyFromReg(DAG.getEntryNode(), getCurSDLoc(), VReg, PtrVT);
- N = DAG.getZExtOrTrunc(N, getCurSDLoc(), MVT::i32);
+ if (Intrinsic == Intrinsic::eh_exceptioncode)
+ N = DAG.getZExtOrTrunc(N, getCurSDLoc(), MVT::i32);
setValue(&I, N);
return nullptr;
}
OpenPOWER on IntegriCloud