mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-13 22:58:50 +00:00
CodeGen: Add a getSectionKind method to MachineConstantPoolEntry
This is just a helper routine, no functionality has changed. llvm-svn: 212993
This commit is contained in:
parent
b5624180ce
commit
8551d97f34
@ -17,6 +17,7 @@
|
||||
#define LLVM_CODEGEN_MACHINECONSTANTPOOL_H
|
||||
|
||||
#include "llvm/ADT/DenseSet.h"
|
||||
#include "llvm/MC/SectionKind.h"
|
||||
#include <cassert>
|
||||
#include <climits>
|
||||
#include <vector>
|
||||
@ -119,6 +120,8 @@ public:
|
||||
/// them.
|
||||
/// 2: This entry may have arbitrary relocations.
|
||||
unsigned getRelocationInfo() const;
|
||||
|
||||
SectionKind getSectionKind(const DataLayout *DL) const;
|
||||
};
|
||||
|
||||
/// The MachineConstantPool class keeps track of constants referenced by a
|
||||
|
@ -1062,21 +1062,7 @@ void AsmPrinter::EmitConstantPool() {
|
||||
const MachineConstantPoolEntry &CPE = CP[i];
|
||||
unsigned Align = CPE.getAlignment();
|
||||
|
||||
SectionKind Kind;
|
||||
switch (CPE.getRelocationInfo()) {
|
||||
default: llvm_unreachable("Unknown section kind");
|
||||
case 2: Kind = SectionKind::getReadOnlyWithRel(); break;
|
||||
case 1:
|
||||
Kind = SectionKind::getReadOnlyWithRelLocal();
|
||||
break;
|
||||
case 0:
|
||||
switch (TM.getDataLayout()->getTypeAllocSize(CPE.getType())) {
|
||||
case 4: Kind = SectionKind::getMergeableConst4(); break;
|
||||
case 8: Kind = SectionKind::getMergeableConst8(); break;
|
||||
case 16: Kind = SectionKind::getMergeableConst16();break;
|
||||
default: Kind = SectionKind::getMergeableConst(); break;
|
||||
}
|
||||
}
|
||||
SectionKind Kind = CPE.getSectionKind(TM.getDataLayout());
|
||||
|
||||
const MCSection *S = getObjFileLowering().getSectionForConstant(Kind);
|
||||
|
||||
|
@ -836,6 +836,37 @@ unsigned MachineConstantPoolEntry::getRelocationInfo() const {
|
||||
return Val.ConstVal->getRelocationInfo();
|
||||
}
|
||||
|
||||
SectionKind
|
||||
MachineConstantPoolEntry::getSectionKind(const DataLayout *DL) const {
|
||||
SectionKind Kind;
|
||||
switch (getRelocationInfo()) {
|
||||
default:
|
||||
llvm_unreachable("Unknown section kind");
|
||||
case 2:
|
||||
Kind = SectionKind::getReadOnlyWithRel();
|
||||
break;
|
||||
case 1:
|
||||
Kind = SectionKind::getReadOnlyWithRelLocal();
|
||||
break;
|
||||
case 0:
|
||||
switch (DL->getTypeAllocSize(getType())) {
|
||||
case 4:
|
||||
Kind = SectionKind::getMergeableConst4();
|
||||
break;
|
||||
case 8:
|
||||
Kind = SectionKind::getMergeableConst8();
|
||||
break;
|
||||
case 16:
|
||||
Kind = SectionKind::getMergeableConst16();
|
||||
break;
|
||||
default:
|
||||
Kind = SectionKind::getMergeableConst();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return Kind;
|
||||
}
|
||||
|
||||
MachineConstantPool::~MachineConstantPool() {
|
||||
for (unsigned i = 0, e = Constants.size(); i != e; ++i)
|
||||
if (Constants[i].isMachineConstantPoolEntry())
|
||||
|
Loading…
Reference in New Issue
Block a user