diff options
author | Devang Patel <dpatel@apple.com> | 2008-03-03 18:58:16 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2008-03-03 18:58:16 +0000 |
commit | 9d5c63d6a91b1c60fb85847f089479e463eb4239 (patch) | |
tree | 2a3496c6685db645cc4d1bda65bdbd2542aab91b /lib/VMCore | |
parent | 0a42ac0b418b9deb271dacccf4b0f59a78b6c87d (diff) | |
download | external_llvm-9d5c63d6a91b1c60fb85847f089479e463eb4239.zip external_llvm-9d5c63d6a91b1c60fb85847f089479e463eb4239.tar.gz external_llvm-9d5c63d6a91b1c60fb85847f089479e463eb4239.tar.bz2 |
If a function uses multive values in ret instruction then it
is returning a struct value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47848 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore')
-rw-r--r-- | lib/VMCore/Function.cpp | 3 | ||||
-rw-r--r-- | lib/VMCore/Verifier.cpp | 3 |
2 files changed, 2 insertions, 4 deletions
diff --git a/lib/VMCore/Function.cpp b/lib/VMCore/Function.cpp index d913358..92737f6 100644 --- a/lib/VMCore/Function.cpp +++ b/lib/VMCore/Function.cpp @@ -170,7 +170,8 @@ bool Function::onlyReadsMemory() const { /// @brief Determine if the function returns a structure. bool Function::isStructReturn() const { - return paramHasAttr(1, ParamAttr::StructRet); + return paramHasAttr(1, ParamAttr::StructRet) + || isa<StructType>(getReturnType()); } //===----------------------------------------------------------------------===// diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index 575bb82..3d68324 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -455,9 +455,6 @@ void Verifier::visitFunction(Function &F) { isa<StructType>(F.getReturnType()), "Functions cannot return aggregate values!", &F); - Assert1(!F.isStructReturn() || FT->getReturnType() == Type::VoidTy, - "Invalid struct-return function!", &F); - const ParamAttrsList *Attrs = F.getParamAttrs(); Assert1(!Attrs || |