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