Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
include/llvm/Target/TargetFrameLowering.h
Show First 20 Lines • Show All 333 Lines • ▼ Show 20 Lines | if (!F->hasLocalLinkage() || F->hasAddressTaken() || | ||||
return false; | return false; | ||||
// Function should not be optimized as tail call. | // Function should not be optimized as tail call. | ||||
for (const User *U : F->users()) | for (const User *U : F->users()) | ||||
if (auto CS = ImmutableCallSite(U)) | if (auto CS = ImmutableCallSite(U)) | ||||
if (CS.isTailCall()) | if (CS.isTailCall()) | ||||
return false; | return false; | ||||
return true; | return true; | ||||
} | } | ||||
// Set initial incoming and outgoing cfa offset and register values for basic | |||||
// blocks. Initial values are the ones valid at the beginning of the function | |||||
aprantl: `///` please | |||||
// (before any stack operations). Incoming and outgoing cfa offset and | |||||
MatzeB: - Use doxygen `///` comments.
- I guess `const MachineFunction &MF` should work as well? | |||||
// register values are used to keep track of offset and register that are | |||||
// valid at basic block entry and exit. This information is used by a late | |||||
// pass that corrects the CFA calculation rule for a basic block if needed. | |||||
// Having CFI instructions in function epilogue can cause incorrect CFA | |||||
ditto MatzeB: ditto | |||||
// calculation rule for some basic blocks. This can happen if, due to basic | |||||
// block reordering, or the existence of multiple epilogue blocks, some of the | |||||
// blocks have wrong cfa offset and register values set by the epilogue block | |||||
// above them. | |||||
virtual void initializeCFIInfo(MachineFunction & MF) const {} | |||||
// Check whether CFI info is maintained for this target. If not, it shouldn't | |||||
// be verified for consistency (in CFIInfoVerifier) and additional CFI | |||||
// instructions should not be inserted to correct CFA calculation rule (in | |||||
// CFIInstrInserter). | |||||
virtual bool maintainsCFIInfo() const { return false; } | |||||
}; | }; | ||||
} // End llvm namespace | } // End llvm namespace | ||||
#endif | #endif |
/// please