diff options
Diffstat (limited to 'lib/CodeGen/CGCall.cpp')
-rw-r--r-- | lib/CodeGen/CGCall.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/CodeGen/CGCall.cpp b/lib/CodeGen/CGCall.cpp index 1fc4143d60..220586db58 100644 --- a/lib/CodeGen/CGCall.cpp +++ b/lib/CodeGen/CGCall.cpp @@ -868,7 +868,10 @@ RValue CodeGenFunction::EmitCall(llvm::Value *Callee, llvm::PointerType::getUnqual(RetAI.getCoerceToType()); llvm::Value *V = CreateTempAlloca(ConvertType(RetTy), "tmp"); Builder.CreateStore(CI, Builder.CreateBitCast(V, CoerceToPTy)); - return RValue::getAggregate(V); + if (RetTy->isAnyComplexType()) + return RValue::getComplex(LoadComplexFromAddr(V, false)); + else + return RValue::getAggregate(V); } case ABIArgInfo::ByVal: |