LLVM
17.0.0git
lib
Target
ARM
MCTargetDesc
ARMMCExpr.cpp
Go to the documentation of this file.
1
//===-- ARMMCExpr.cpp - ARM specific MC expression classes ----------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include "
ARMMCExpr.h
"
10
#include "
llvm/MC/MCContext.h
"
11
#include "
llvm/MC/MCStreamer.h
"
12
using namespace
llvm
;
13
14
#define DEBUG_TYPE "armmcexpr"
15
16
const
ARMMCExpr
*
17
ARMMCExpr::create
(
VariantKind
Kind,
const
MCExpr
*Expr,
18
MCContext
&Ctx) {
19
return
new
(Ctx)
ARMMCExpr
(Kind, Expr);
20
}
21
22
void
ARMMCExpr::printImpl
(
raw_ostream
&
OS
,
const
MCAsmInfo
*MAI)
const
{
23
switch
(Kind) {
24
default
:
llvm_unreachable
(
"Invalid kind!"
);
25
case
VK_ARM_HI16
:
OS
<<
":upper16:"
;
break
;
26
case
VK_ARM_LO16
:
OS
<<
":lower16:"
;
break
;
27
}
28
29
const
MCExpr
*Expr =
getSubExpr
();
30
if
(Expr->
getKind
() !=
MCExpr::SymbolRef
)
31
OS
<<
'('
;
32
Expr->
print
(
OS
, MAI);
33
if
(Expr->
getKind
() !=
MCExpr::SymbolRef
)
34
OS
<<
')'
;
35
}
36
37
void
ARMMCExpr::visitUsedExpr
(
MCStreamer
&Streamer)
const
{
38
Streamer.
visitUsedExpr
(*
getSubExpr
());
39
}
ARMMCExpr.h
MCContext.h
MCStreamer.h
OS
raw_pwrite_stream & OS
Definition:
SampleProfWriter.cpp:53
llvm::ARMMCExpr
Definition:
ARMMCExpr.h:16
llvm::ARMMCExpr::printImpl
void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override
Definition:
ARMMCExpr.cpp:22
llvm::ARMMCExpr::getSubExpr
const MCExpr * getSubExpr() const
getSubExpr - Get the child of this expression.
Definition:
ARMMCExpr.h:54
llvm::ARMMCExpr::visitUsedExpr
void visitUsedExpr(MCStreamer &Streamer) const override
Definition:
ARMMCExpr.cpp:37
llvm::ARMMCExpr::VariantKind
VariantKind
Definition:
ARMMCExpr.h:18
llvm::ARMMCExpr::VK_ARM_LO16
@ VK_ARM_LO16
Definition:
ARMMCExpr.h:21
llvm::ARMMCExpr::VK_ARM_HI16
@ VK_ARM_HI16
Definition:
ARMMCExpr.h:20
llvm::ARMMCExpr::create
static const ARMMCExpr * create(VariantKind Kind, const MCExpr *Expr, MCContext &Ctx)
Definition:
ARMMCExpr.cpp:17
llvm::MCAsmInfo
This class is intended to be used as a base class for asm properties and features specific to the tar...
Definition:
MCAsmInfo.h:56
llvm::MCContext
Context object for machine code objects.
Definition:
MCContext.h:76
llvm::MCExpr
Base class for the full range of assembler expressions which are needed for parsing.
Definition:
MCExpr.h:35
llvm::MCExpr::SymbolRef
@ SymbolRef
References to labels and assigned expressions.
Definition:
MCExpr.h:40
llvm::MCExpr::print
void print(raw_ostream &OS, const MCAsmInfo *MAI, bool InParens=false) const
Definition:
MCExpr.cpp:41
llvm::MCExpr::getKind
ExprKind getKind() const
Definition:
MCExpr.h:81
llvm::MCStreamer
Streaming machine code generation interface.
Definition:
MCStreamer.h:212
llvm::MCStreamer::visitUsedExpr
void visitUsedExpr(const MCExpr &Expr)
Definition:
MCStreamer.cpp:1073
llvm::raw_ostream
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition:
raw_ostream.h:52
llvm_unreachable
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Definition:
ErrorHandling.h:143
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
Generated on Fri Mar 31 2023 21:11:04 for LLVM by
1.9.6