forked from OSchip/llvm-project
[IR] Don't print "!DIExpression() = !DIExpression()" when dumping
Now that we print DIExpressions inline everywhere, we don't need to print them once as an operand and again as a value. This is only really visible when calling dump() or print() directly on a DIExpression during debugging. llvm-svn: 312168
This commit is contained in:
parent
955bb84090
commit
b95b427409
|
@ -3592,7 +3592,7 @@ static void printMetadataImpl(raw_ostream &ROS, const Metadata &MD,
|
|||
/* FromValue */ true);
|
||||
|
||||
auto *N = dyn_cast<MDNode>(&MD);
|
||||
if (OnlyAsOperand || !N)
|
||||
if (OnlyAsOperand || !N || isa<DIExpression>(MD))
|
||||
return;
|
||||
|
||||
OS << " = ";
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
#include "llvm/BinaryFormat/Dwarf.h"
|
||||
#include "llvm/IR/DebugInfoMetadata.h"
|
||||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/IRBuilder.h"
|
||||
#include "llvm/IR/LLVMContext.h"
|
||||
|
@ -34,4 +36,19 @@ TEST(AsmWriterTest, DebugPrintDetachedInstruction) {
|
|||
EXPECT_TRUE(r != std::string::npos);
|
||||
}
|
||||
|
||||
TEST(AsmWriterTest, DumpDIExpression) {
|
||||
LLVMContext Ctx;
|
||||
uint64_t Ops[] = {
|
||||
dwarf::DW_OP_constu, 4,
|
||||
dwarf::DW_OP_minus,
|
||||
dwarf::DW_OP_deref,
|
||||
};
|
||||
DIExpression *Expr = DIExpression::get(Ctx, Ops);
|
||||
std::string S;
|
||||
raw_string_ostream OS(S);
|
||||
Expr->print(OS);
|
||||
EXPECT_EQ("!DIExpression(DW_OP_constu, 4, DW_OP_minus, DW_OP_deref)",
|
||||
OS.str());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue