Skip to content

Commit

Permalink
Emit comment for gc.relocate showing base and derived pointers in hum…
Browse files Browse the repository at this point in the history
…an readable form.

Differential Revision: http://reviews.llvm.org/D9326

llvm-svn: 236497
  • Loading branch information
igor-laevsky committed May 5, 2015
1 parent c23ba55 commit 2aa8caf
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions llvm/lib/IR/AsmWriter.cpp
Expand Up @@ -31,6 +31,7 @@
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/Statepoint.h"
#include "llvm/IR/TypeFinder.h"
#include "llvm/IR/UseListOrder.h"
#include "llvm/IR/ValueSymbolTable.h"
Expand Down Expand Up @@ -2002,6 +2003,10 @@ class AssemblyWriter {
// printInfoComment - Print a little comment after the instruction indicating
// which slot it occupies.
void printInfoComment(const Value &V);

// printGCRelocateComment - print comment after call to the gc.relocate
// intrinsic indicating base and derived pointer names.
void printGCRelocateComment(const Value &V);
};
} // namespace

Expand Down Expand Up @@ -2642,10 +2647,26 @@ void AssemblyWriter::printInstructionLine(const Instruction &I) {
Out << '\n';
}

/// printGCRelocateComment - print comment after call to the gc.relocate
/// intrinsic indicating base and derived pointer names.
void AssemblyWriter::printGCRelocateComment(const Value &V) {
assert(isGCRelocate(&V));
GCRelocateOperands GCOps(cast<Instruction>(&V));

Out << " ; (";
writeOperand(GCOps.basePtr(), false);
Out << ", ";
writeOperand(GCOps.derivedPtr(), false);
Out << ")";
}

/// printInfoComment - Print a little comment after the instruction indicating
/// which slot it occupies.
///
void AssemblyWriter::printInfoComment(const Value &V) {
if (isGCRelocate(&V))
printGCRelocateComment(V);

if (AnnotationWriter)
AnnotationWriter->printInfoComment(V, Out);
}
Expand Down

0 comments on commit 2aa8caf

Please sign in to comment.