12c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar//===- lib/MC/MCValue.cpp - MCValue implementation ------------------------===//
22c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar//
32c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar//                     The LLVM Compiler Infrastructure
42c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar//
52c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar// This file is distributed under the University of Illinois Open Source
62c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar// License. See LICENSE.TXT for details.
72c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar//
82c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar//===----------------------------------------------------------------------===//
92c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar
102c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar#include "llvm/MC/MCValue.h"
119a1d20042f6a6ec648a3588f9b13264a4570aab0Daniel Dunbar#include "llvm/MC/MCExpr.h"
1224c802bc8d6b3e248b4bc4e5951c88127dd799d6David Greene#include "llvm/Support/Debug.h"
132c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar#include "llvm/Support/raw_ostream.h"
142c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar
152c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbarusing namespace llvm;
162c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar
17684c593d05db0bd277268fc9d8c05bce138c745aChris Lattnervoid MCValue::print(raw_ostream &OS, const MCAsmInfo *MAI) const {
182c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar  if (isAbsolute()) {
192c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar    OS << getConstant();
202c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar    return;
212c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar  }
222c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar
239a1d20042f6a6ec648a3588f9b13264a4570aab0Daniel Dunbar  getSymA()->print(OS);
241689e0cf55205042b830fdbe3fc5f7b483997334Daniel Dunbar
259a1d20042f6a6ec648a3588f9b13264a4570aab0Daniel Dunbar  if (getSymB()) {
269a1d20042f6a6ec648a3588f9b13264a4570aab0Daniel Dunbar    OS << " - ";
279a1d20042f6a6ec648a3588f9b13264a4570aab0Daniel Dunbar    getSymB()->print(OS);
289a1d20042f6a6ec648a3588f9b13264a4570aab0Daniel Dunbar  }
291689e0cf55205042b830fdbe3fc5f7b483997334Daniel Dunbar
302c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar  if (getConstant())
312c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar    OS << " + " << getConstant();
322c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar}
332c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar
34286c4dc355b8be6806081b23c3097485821c7642Manman Ren#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
352c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbarvoid MCValue::dump() const {
3624c802bc8d6b3e248b4bc4e5951c88127dd799d6David Greene  print(dbgs(), 0);
372c11624b65a65fe487f335603dc0bf6372a50a89Daniel Dunbar}
38cc77eece74c8db09acc2af425e7e6c88a5bb30d1Manman Ren#endif
39