18 #include "llvm/Support/Compiler.h" 20 using namespace clang;
27 if (
auto *Cons = dyn_cast<CXXConstructorDecl>(F)) {
28 const std::string &Name = Cons->getParent()->getNameAsString();
29 OS << Name <<
"::" << Name <<
":\n";
39 OS <<
"rvo: " <<
hasRVO() <<
"\n";
41 auto PrintName = [&OS](
const char *Name) {
43 for (
long I = 0, N = strlen(Name); I < 30 - N; ++I) {
49 size_t Addr = PC - Start;
50 auto Op = PC.read<
Opcode>();
51 OS << llvm::format(
"%8d", Addr) <<
" ";
54 #include "Opcodes.inc" 63 for (
auto &Func : Funcs) {
66 for (
auto &Anon : AnonFuncs) {
Pointer into the code segment.
bool hasRVO() const
Checks if the first argument is a RVO pointer.
CodePtr getCodeEnd() const
Returns a pointer to the end of the code.
void dump() const
Dumps the disassembled bytecode to llvm::errs().
CodePtr getCodeBegin() const
Returns a pointer to the start of the code.
std::string getNameAsString() const
Get a human-readable name for the declaration, even if it is one of the special kinds of names (C++ c...
unsigned getFrameSize() const
Returns the size of the function's local stack.
Dataflow Directional Tag Classes.
Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate.h) and friends (in DeclFriend.h).
unsigned getArgSize() const
Returns the size of the argument stackx.
void dump() const
Dumps the disassembled bytecode to llvm::errs().