mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 21:29:20 +00:00
s/isReturnStruct()/hasStructRetAttr()/g
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47857 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6790943540
commit
41e2397b72
@ -181,8 +181,9 @@ public:
|
||||
/// @brief Determine if the function does not access or only reads memory.
|
||||
bool onlyReadsMemory() const;
|
||||
|
||||
/// @brief Determine if the function returns a structure.
|
||||
bool isStructReturn() const;
|
||||
/// @brief Determine if the function returns a structure through first
|
||||
/// pointer argument.
|
||||
bool hasStructRetAttr() const;
|
||||
|
||||
/// deleteBody - This method deletes the body of the function, and converts
|
||||
/// the linkage to external.
|
||||
|
@ -957,8 +957,9 @@ public:
|
||||
bool doesNotThrow() const;
|
||||
void setDoesNotThrow(bool doesNotThrow = true);
|
||||
|
||||
/// @brief Determine if the call returns a structure.
|
||||
bool isStructReturn() const;
|
||||
/// @brief Determine if the call returns a structure through first
|
||||
/// pointer argument.
|
||||
bool hasStructRetAttr() const;
|
||||
|
||||
/// @brief Determine if any call argument is an aggregate passed by value.
|
||||
bool hasByValArgument() const;
|
||||
@ -1769,8 +1770,9 @@ public:
|
||||
bool doesNotThrow() const;
|
||||
void setDoesNotThrow(bool doesNotThrow = true);
|
||||
|
||||
/// @brief Determine if the call returns a structure.
|
||||
bool isStructReturn() const;
|
||||
/// @brief Determine if the call returns a structure through first
|
||||
/// pointer argument.
|
||||
bool hasStructRetAttr() const;
|
||||
|
||||
/// getCalledFunction - Return the function called, or null if this is an
|
||||
/// indirect function invocation.
|
||||
|
@ -1904,7 +1904,7 @@ void CWriter::printContainedStructs(const Type *Ty,
|
||||
|
||||
void CWriter::printFunctionSignature(const Function *F, bool Prototype) {
|
||||
/// isStructReturn - Should this function actually return a struct by-value?
|
||||
bool isStructReturn = F->isStructReturn();
|
||||
bool isStructReturn = F->hasStructRetAttr();
|
||||
|
||||
if (F->hasInternalLinkage()) Out << "static ";
|
||||
if (F->hasDLLImportLinkage()) Out << "__declspec(dllimport) ";
|
||||
@ -2024,7 +2024,7 @@ static inline bool isFPIntBitCast(const Instruction &I) {
|
||||
|
||||
void CWriter::printFunction(Function &F) {
|
||||
/// isStructReturn - Should this function actually return a struct by-value?
|
||||
bool isStructReturn = F.isStructReturn();
|
||||
bool isStructReturn = F.hasStructRetAttr();
|
||||
|
||||
printFunctionSignature(&F, false);
|
||||
Out << " {\n";
|
||||
@ -2148,7 +2148,7 @@ void CWriter::printBasicBlock(BasicBlock *BB) {
|
||||
//
|
||||
void CWriter::visitReturnInst(ReturnInst &I) {
|
||||
// If this is a struct return function, return the temporary struct.
|
||||
bool isStructReturn = I.getParent()->getParent()->isStructReturn();
|
||||
bool isStructReturn = I.getParent()->getParent()->hasStructRetAttr();
|
||||
|
||||
if (isStructReturn) {
|
||||
Out << " return StructReturn;\n";
|
||||
@ -2584,7 +2584,7 @@ void CWriter::visitCallInst(CallInst &I) {
|
||||
// parameter instead of passing it to the call.
|
||||
const ParamAttrsList *PAL = I.getParamAttrs();
|
||||
bool hasByVal = I.hasByValArgument();
|
||||
bool isStructRet = I.isStructReturn();
|
||||
bool isStructRet = I.hasStructRetAttr();
|
||||
if (isStructRet) {
|
||||
writeOperandDeref(I.getOperand(1));
|
||||
Out << " = ";
|
||||
|
@ -102,13 +102,13 @@ void X86SharedAsmPrinter::decorateName(std::string &Name,
|
||||
case StdCall:
|
||||
// "Pure" variadic functions do not receive @0 suffix.
|
||||
if (!FT->isVarArg() || (FT->getNumParams() == 0) ||
|
||||
(FT->getNumParams() == 1 && F->isStructReturn()))
|
||||
(FT->getNumParams() == 1 && F->hasStructRetAttr()))
|
||||
Name += '@' + utostr_32(Info->getBytesToPopOnReturn());
|
||||
break;
|
||||
case FastCall:
|
||||
// "Pure" variadic functions do not receive @0 suffix.
|
||||
if (!FT->isVarArg() || (FT->getNumParams() == 0) ||
|
||||
(FT->getNumParams() == 1 && F->isStructReturn()))
|
||||
(FT->getNumParams() == 1 && F->hasStructRetAttr()))
|
||||
Name += '@' + utostr_32(Info->getBytesToPopOnReturn());
|
||||
|
||||
if (Name[0] == '_') {
|
||||
|
@ -255,7 +255,7 @@ DAE::Liveness DAE::getArgumentLiveness(const Argument &A) {
|
||||
const Function *F = A.getParent();
|
||||
|
||||
// If this is the return value of a struct function, it's not really dead.
|
||||
if (F->isStructReturn() && &*(F->arg_begin()) == &A)
|
||||
if (F->hasStructRetAttr() && &*(F->arg_begin()) == &A)
|
||||
return Live;
|
||||
|
||||
if (A.use_empty()) // First check, directly dead?
|
||||
|
@ -75,7 +75,7 @@ bool SRETPromotion::PromoteReturn(CallGraphNode *CGN) {
|
||||
return false;
|
||||
|
||||
// Make sure that function returns struct.
|
||||
if (F->arg_size() == 0 || !F->isStructReturn() || F->doesNotReturn())
|
||||
if (F->arg_size() == 0 || !F->hasStructRetAttr() || F->doesNotReturn())
|
||||
return false;
|
||||
|
||||
assert (F->getReturnType() == Type::VoidTy && "Invalid function return type");
|
||||
|
@ -168,10 +168,10 @@ bool Function::onlyReadsMemory() const {
|
||||
return doesNotAccessMemory() || paramHasAttr(0, ParamAttr::ReadOnly);
|
||||
}
|
||||
|
||||
/// @brief Determine if the function returns a structure.
|
||||
bool Function::isStructReturn() const {
|
||||
return paramHasAttr(1, ParamAttr::StructRet)
|
||||
|| isa<StructType>(getReturnType());
|
||||
/// @brief Determine if the function returns a structure through first
|
||||
/// pointer argument.
|
||||
bool Function::hasStructRetAttr() const {
|
||||
return paramHasAttr(1, ParamAttr::StructRet);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -419,8 +419,9 @@ bool CallInst::doesNotThrow() const {
|
||||
return paramHasAttr(0, ParamAttr::NoUnwind);
|
||||
}
|
||||
|
||||
/// @brief Determine if the call returns a structure.
|
||||
bool CallInst::isStructReturn() const {
|
||||
/// @brief Determine if the call returns a structure through first
|
||||
/// pointer argument.
|
||||
bool CallInst::hasStructRetAttr() const {
|
||||
// Be friendly and also check the callee.
|
||||
return paramHasAttr(1, ParamAttr::StructRet);
|
||||
}
|
||||
@ -560,8 +561,9 @@ void InvokeInst::setDoesNotThrow(bool doesNotThrow) {
|
||||
setParamAttrs(PAL);
|
||||
}
|
||||
|
||||
/// @brief Determine if the call returns a structure.
|
||||
bool InvokeInst::isStructReturn() const {
|
||||
/// @brief Determine if the invoke returns a structure through first
|
||||
/// pointer argument.
|
||||
bool InvokeInst::hasStructRetAttr() const {
|
||||
// Be friendly and also check the callee.
|
||||
return paramHasAttr(1, ParamAttr::StructRet);
|
||||
}
|
||||
|
@ -455,6 +455,9 @@ void Verifier::visitFunction(Function &F) {
|
||||
isa<StructType>(F.getReturnType()),
|
||||
"Functions cannot return aggregate values!", &F);
|
||||
|
||||
Assert1(!F.hasStructRetAttr() || F.getReturnType() == Type::VoidTy,
|
||||
"Invalid struct return type!", &F);
|
||||
|
||||
const ParamAttrsList *Attrs = F.getParamAttrs();
|
||||
|
||||
Assert1(!Attrs ||
|
||||
|
Loading…
Reference in New Issue
Block a user