LLVM
15.0.0git
include
llvm
MC
MCSymbolXCOFF.h
Go to the documentation of this file.
1
//===- MCSymbolXCOFF.h - ----------------------------------------*- C++ -*-===//
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
#ifndef LLVM_MC_MCSYMBOLXCOFF_H
9
#define LLVM_MC_MCSYMBOLXCOFF_H
10
11
#include "
llvm/ADT/Optional.h
"
12
#include "
llvm/ADT/StringRef.h
"
13
#include "
llvm/BinaryFormat/XCOFF.h
"
14
#include "
llvm/MC/MCSymbol.h
"
15
16
namespace
llvm
{
17
18
class
MCSectionXCOFF;
19
20
class
MCSymbolXCOFF
:
public
MCSymbol
{
21
public
:
22
MCSymbolXCOFF
(
const
StringMapEntry<bool>
*
Name
,
bool
isTemporary
)
23
:
MCSymbol
(
SymbolKindXCOFF
,
Name
,
isTemporary
) {}
24
25
static
bool
classof
(
const
MCSymbol
*
S
) {
return
S
->isXCOFF(); }
26
27
static
StringRef
getUnqualifiedName
(
StringRef
Name
) {
28
if
(
Name
.back() ==
']'
) {
29
StringRef
Lhs, Rhs;
30
std::tie(Lhs, Rhs) =
Name
.rsplit(
'['
);
31
assert
(!Rhs.
empty
() &&
"Invalid SMC format in XCOFF symbol."
);
32
return
Lhs;
33
}
34
return
Name
;
35
}
36
37
void
setStorageClass
(
XCOFF::StorageClass
SC
) {
38
StorageClass
=
SC
;
39
};
40
41
XCOFF::StorageClass
getStorageClass
()
const
{
42
assert
(
StorageClass
&&
"StorageClass not set on XCOFF MCSymbol."
);
43
return
StorageClass
.getValue();
44
}
45
46
StringRef
getUnqualifiedName
()
const
{
return
getUnqualifiedName
(
getName
()); }
47
48
MCSectionXCOFF
*
getRepresentedCsect
()
const
;
49
50
void
setRepresentedCsect
(
MCSectionXCOFF
*
C
);
51
52
void
setVisibilityType
(
XCOFF::VisibilityType
SVT) {
VisibilityType
= SVT; };
53
54
XCOFF::VisibilityType
getVisibilityType
()
const
{
return
VisibilityType
; }
55
56
bool
hasRename
()
const
{
return
!SymbolTableName.
empty
(); }
57
58
void
setSymbolTableName
(
StringRef
STN) { SymbolTableName = STN; }
59
60
StringRef
getSymbolTableName
()
const
{
61
if
(
hasRename
())
62
return
SymbolTableName;
63
return
getUnqualifiedName
();
64
}
65
66
private
:
67
Optional<XCOFF::StorageClass>
StorageClass
;
68
MCSectionXCOFF
*RepresentedCsect =
nullptr
;
69
XCOFF::VisibilityType
VisibilityType
=
XCOFF::SYM_V_UNSPECIFIED
;
70
StringRef
SymbolTableName;
71
};
72
73
}
// end namespace llvm
74
75
#endif // LLVM_MC_MCSYMBOLXCOFF_H
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:17
llvm::MCSymbol
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition:
MCSymbol.h:41
llvm::MCSectionXCOFF
Definition:
MCSectionXCOFF.h:32
llvm::StringMapEntry
StringMapEntry - This is used to represent one value that is inserted into a StringMap.
Definition:
StringMapEntry.h:101
Optional.h
llvm::MCSymbol::isTemporary
bool isTemporary() const
isTemporary - Check if this is an assembler temporary symbol.
Definition:
MCSymbol.h:215
llvm::MCSymbolXCOFF::MCSymbolXCOFF
MCSymbolXCOFF(const StringMapEntry< bool > *Name, bool isTemporary)
Definition:
MCSymbolXCOFF.h:22
StringRef.h
llvm::MCSymbolXCOFF::getSymbolTableName
StringRef getSymbolTableName() const
Definition:
MCSymbolXCOFF.h:60
llvm::XCOFF::VisibilityType
VisibilityType
Values for visibility as they would appear when encoded in the high 4 bits of the 16-bit unsigned n_t...
Definition:
XCOFF.h:235
llvm::MCSymbolXCOFF::getUnqualifiedName
static StringRef getUnqualifiedName(StringRef Name)
Definition:
MCSymbolXCOFF.h:27
llvm::Optional< XCOFF::StorageClass >
llvm::MCSymbolXCOFF::getVisibilityType
XCOFF::VisibilityType getVisibilityType() const
Definition:
MCSymbolXCOFF.h:54
llvm::MCSymbolXCOFF::setRepresentedCsect
void setRepresentedCsect(MCSectionXCOFF *C)
Definition:
MCSymbolXCOFF.cpp:22
llvm::MCSymbolXCOFF::setSymbolTableName
void setSymbolTableName(StringRef STN)
Definition:
MCSymbolXCOFF.h:58
llvm::MCSymbolXCOFF::getRepresentedCsect
MCSectionXCOFF * getRepresentedCsect() const
Definition:
MCSymbolXCOFF.cpp:13
llvm::MCSymbolXCOFF::setVisibilityType
void setVisibilityType(XCOFF::VisibilityType SVT)
Definition:
MCSymbolXCOFF.h:52
XCOFF.h
llvm::PPCISD::SC
@ SC
CHAIN = SC CHAIN, Imm128 - System call.
Definition:
PPCISelLowering.h:418
C
(vector float) vec_cmpeq(*A, *B) C
Definition:
README_ALTIVEC.txt:86
MCSymbol.h
llvm::MCSymbolXCOFF::hasRename
bool hasRename() const
Definition:
MCSymbolXCOFF.h:56
llvm::MCSymbol::getName
StringRef getName() const
getName - Get the symbol name.
Definition:
MCSymbol.h:198
llvm::MCSymbolXCOFF::getStorageClass
XCOFF::StorageClass getStorageClass() const
Definition:
MCSymbolXCOFF.h:41
llvm::MCSymbolXCOFF::setStorageClass
void setStorageClass(XCOFF::StorageClass SC)
Definition:
MCSymbolXCOFF.h:37
llvm::XCOFF::StorageClass
StorageClass
Definition:
XCOFF.h:154
llvm::StringRef::empty
constexpr LLVM_NODISCARD bool empty() const
empty - Check if the string is empty.
Definition:
StringRef.h:153
assert
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
llvm::MCSymbolXCOFF::classof
static bool classof(const MCSymbol *S)
Definition:
MCSymbolXCOFF.h:25
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition:
StringRef.h:58
llvm::MCSymbolXCOFF::getUnqualifiedName
StringRef getUnqualifiedName() const
Definition:
MCSymbolXCOFF.h:46
llvm::MCSymbol::SymbolKindXCOFF
@ SymbolKindXCOFF
Definition:
MCSymbol.h:52
S
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
Definition:
README.txt:210
llvm::XCOFF::SYM_V_UNSPECIFIED
@ SYM_V_UNSPECIFIED
Definition:
XCOFF.h:236
llvm::GraphProgram::Name
Name
Definition:
GraphWriter.h:50
llvm::MCSymbolXCOFF
Definition:
MCSymbolXCOFF.h:20
Generated on Sat Jul 2 2022 13:24:38 for LLVM by
1.8.17