MCStreamer.cpp revision 32ae3fe0ba469240753e2342e36485f7c9acfb5c
1a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar//===- lib/MC/MCStreamer.cpp - Streaming Machine Code Output --------------===//
2a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar//
3a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar//                     The LLVM Compiler Infrastructure
4a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar//
5a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar// This file is distributed under the University of Illinois Open Source
6a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar// License. See LICENSE.TXT for details.
7a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar//
8a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar//===----------------------------------------------------------------------===//
9a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar
10a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar#include "llvm/MC/MCStreamer.h"
11ddf6bdde44287b5b559bc403a02ff971e15e8303Chris Lattner#include "llvm/MC/MCExpr.h"
12a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar
13a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbarusing namespace llvm;
14a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar
15dabf07c70a5e13a4560d75667fa5c7db28921a92Chris LattnerMCStreamer::MCStreamer(MCContext &_Context) : Context(_Context), CurSection(0) {
16a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar}
17a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar
18a11af531ec48ad84f790b9511f003ac5c934a999Daniel DunbarMCStreamer::~MCStreamer() {
19a11af531ec48ad84f790b9511f003ac5c934a999Daniel Dunbar}
20ddf6bdde44287b5b559bc403a02ff971e15e8303Chris Lattner
2132ae3fe0ba469240753e2342e36485f7c9acfb5cChris Lattner/// EmitIntValue - Special case of EmitValue that avoids the client having to
2232ae3fe0ba469240753e2342e36485f7c9acfb5cChris Lattner/// pass in a MCExpr for constant integers.
2332ae3fe0ba469240753e2342e36485f7c9acfb5cChris Lattnervoid MCStreamer::EmitIntValue(uint64_t Value, unsigned Size,
2432ae3fe0ba469240753e2342e36485f7c9acfb5cChris Lattner                              unsigned AddrSpace) {
2532ae3fe0ba469240753e2342e36485f7c9acfb5cChris Lattner  EmitValue(MCConstantExpr::Create(Value, getContext()), Size, AddrSpace);
2632ae3fe0ba469240753e2342e36485f7c9acfb5cChris Lattner}
2732ae3fe0ba469240753e2342e36485f7c9acfb5cChris Lattner
28ddf6bdde44287b5b559bc403a02ff971e15e8303Chris Lattner/// EmitFill - Emit NumBytes bytes worth of the value specified by
29ddf6bdde44287b5b559bc403a02ff971e15e8303Chris Lattner/// FillValue.  This implements directives such as '.space'.
30aaec205b87637cd0d59d4f11630db603686eb73dChris Lattnervoid MCStreamer::EmitFill(uint64_t NumBytes, uint8_t FillValue,
31aaec205b87637cd0d59d4f11630db603686eb73dChris Lattner                          unsigned AddrSpace) {
32ddf6bdde44287b5b559bc403a02ff971e15e8303Chris Lattner  const MCExpr *E = MCConstantExpr::Create(FillValue, getContext());
33ddf6bdde44287b5b559bc403a02ff971e15e8303Chris Lattner  for (uint64_t i = 0, e = NumBytes; i != e; ++i)
34aaec205b87637cd0d59d4f11630db603686eb73dChris Lattner    EmitValue(E, 1, AddrSpace);
35ddf6bdde44287b5b559bc403a02ff971e15e8303Chris Lattner}
36