From 2c11624b65a65fe487f335603dc0bf6372a50a89 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Fri, 14 Aug 2009 03:11:09 +0000 Subject: [PATCH] Add MCValue::{print, dump} git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78982 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/MC/MCValue.h | 7 +++++++ lib/MC/MCValue.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 lib/MC/MCValue.cpp diff --git a/include/llvm/MC/MCValue.h b/include/llvm/MC/MCValue.h index d032f170c3f..ee5ba84dd0f 100644 --- a/include/llvm/MC/MCValue.h +++ b/include/llvm/MC/MCValue.h @@ -20,6 +20,7 @@ namespace llvm { class MCSymbol; +class raw_ostream; /// MCValue - This represents an "assembler immediate". In its most general /// form, this can hold "SymbolA - SymbolB + imm64". Not all targets supports @@ -52,6 +53,12 @@ public: return SymA ? SymA->getSection() : 0; } + /// print - Print the value to the stream \arg OS. + void print(raw_ostream &OS) const; + + /// dump - Print the value to stderr. + void dump() const; + static MCValue get(MCSymbol *SymA, MCSymbol *SymB = 0, int64_t Val = 0) { MCValue R; assert((!SymB || SymA) && "Invalid relocatable MCValue!"); diff --git a/lib/MC/MCValue.cpp b/lib/MC/MCValue.cpp new file mode 100644 index 00000000000..9c7317096ce --- /dev/null +++ b/lib/MC/MCValue.cpp @@ -0,0 +1,30 @@ +//===- lib/MC/MCValue.cpp - MCValue implementation ------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm/MC/MCValue.h" +#include "llvm/Support/raw_ostream.h" + +using namespace llvm; + +void MCValue::print(raw_ostream &OS) const { + if (isAbsolute()) { + OS << getConstant(); + return; + } + + OS << getSymA(); + if (getSymB()) + OS << " - " << getSymB(); + if (getConstant()) + OS << " + " << getConstant(); +} + +void MCValue::dump() const { + print(errs()); +}