1cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines//===- AArch64TargetStreamer.cpp - AArch64TargetStreamer class --*- C++ -*---------===// 2cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// 3cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// The LLVM Compiler Infrastructure 4cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// 5cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// This file is distributed under the University of Illinois Open Source 6cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// License. See LICENSE.TXT for details. 7cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// 8cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines//===----------------------------------------------------------------------===// 9cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// 10cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// This file implements the AArch64TargetStreamer class. 11cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// 12cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines//===----------------------------------------------------------------------===// 13cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#include "llvm/ADT/MapVector.h" 14cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#include "llvm/MC/ConstantPools.h" 15cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#include "llvm/MC/MCContext.h" 16cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#include "llvm/MC/MCExpr.h" 17cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#include "llvm/MC/MCStreamer.h" 18cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 19cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesusing namespace llvm; 20cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 21cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// 22cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// AArch64TargetStreamer Implemenation 23cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// 24cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen HinesAArch64TargetStreamer::AArch64TargetStreamer(MCStreamer &S) 25cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines : MCTargetStreamer(S), ConstantPools(new AssemblerConstantPools()) {} 26cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 27cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen HinesAArch64TargetStreamer::~AArch64TargetStreamer() {} 28cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 29cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// The constant pool handling is shared by all AArch64TargetStreamer 30cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// implementations. 31cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesconst MCExpr *AArch64TargetStreamer::addConstantPoolEntry(const MCExpr *Expr) { 32cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines return ConstantPools->addEntry(Streamer, Expr); 33cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines} 34cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 35cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesvoid AArch64TargetStreamer::emitCurrentConstantPool() { 36cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines ConstantPools->emitForCurrentSection(Streamer); 37cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines} 38cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 39cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// finish() - write out any non-empty assembler constant pools. 40cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesvoid AArch64TargetStreamer::finish() { ConstantPools->emitAll(Streamer); } 41