aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms/Utils/LowerInvoke.cpp
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2006-12-12 05:05:00 +0000
committerReid Spencer <rspencer@reidspencer.com>2006-12-12 05:05:00 +0000
commit4da49122f3f3c8da68a52723d846b88c72166a68 (patch)
treea7cb69a70439f795df63c88c5d56200e3ae17be6 /lib/Transforms/Utils/LowerInvoke.cpp
parenta30fc5ed0430081f6495b33e027b7655ca2a66e5 (diff)
Change inferred getCast into specific getCast. Passes all tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32469 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/LowerInvoke.cpp')
-rw-r--r--lib/Transforms/Utils/LowerInvoke.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/Transforms/Utils/LowerInvoke.cpp b/lib/Transforms/Utils/LowerInvoke.cpp
index dfeb8349f4..4fbd43c6f4 100644
--- a/lib/Transforms/Utils/LowerInvoke.cpp
+++ b/lib/Transforms/Utils/LowerInvoke.cpp
@@ -215,8 +215,12 @@ void LowerInvoke::writeAbortMessage(Instruction *IB) {
unsigned NumArgs = FT->getNumParams();
for (unsigned i = 0; i != 3; ++i)
if (i < NumArgs && FT->getParamType(i) != Args[i]->getType())
- Args[i] = ConstantExpr::getCast(cast<Constant>(Args[i]),
- FT->getParamType(i));
+ if (Args[i]->getType()->isInteger())
+ Args[i] = ConstantExpr::getIntegerCast(cast<Constant>(Args[i]),
+ FT->getParamType(i), true);
+ else
+ Args[i] = ConstantExpr::getBitCast(cast<Constant>(Args[i]),
+ FT->getParamType(i));
(new CallInst(WriteFn, Args, "", IB))->setTailCall();
}