that return an opaque type by value, as long as you don't
call it or provide a body (you can take the address of it).
So it is wrong to insist that sret parameters not be an
opaque*. And I guess it is really up to codegen to complain
if someone tries to call such a function. I'm also removing
the analogous check from byval parameters, since I don't
see why we shouldn't allow them as long as no-one tries to
call the function or give it a body.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46216
91177308-0d34-0410-b5e6-
96231b3b80d8
// Attributes that only apply to integers.
Incompatible |= SExt | ZExt;
- if (const PointerType *PTy = dyn_cast<PointerType>(Ty)) {
- if (!PTy->getElementType()->isSized())
- // The byval and sret attributes only apply to pointers to sized types.
- Incompatible |= ByVal | StructRet;
- } else {
+ if (!isa<PointerType>(Ty))
// Attributes that only apply to pointers.
Incompatible |= ByVal | Nest | NoAlias | StructRet;
- }
return Incompatible;
}