diff options
-rw-r--r-- | lib/Transforms/InstCombine/InstCombineCalls.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/Transforms/InstCombine/InstCombineCalls.cpp b/lib/Transforms/InstCombine/InstCombineCalls.cpp index 84209aa457..5bdba9c017 100644 --- a/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -1108,7 +1108,9 @@ bool InstCombiner::transformConstExprCastCall(CallSite CS) { // If both the callee and the cast type are varargs, we still have to make // sure the number of fixed parameters are the same or we have the same // ABI issues as if we introduce a varargs call. - if (FT->getNumParams() != + if (FT->isVarArg() && + cast<FunctionType>(APTy->getElementType())->isVarArg() && + FT->getNumParams() != cast<FunctionType>(APTy->getElementType())->getNumParams()) return false; } |