simplify getSectionForMergableConstant to take a SectionKind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77134 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2009-07-26 06:26:55 +00:00
parent f15327290e
commit 5c2f789952
8 changed files with 43 additions and 45 deletions
+14 -4
View File
@@ -29,7 +29,6 @@
//===----------------------------------------------------------------------===//
#define DEBUG_TYPE "elfwriter"
#include "ELF.h"
#include "ELFWriter.h"
#include "ELFCodeEmitter.h"
@@ -155,10 +154,21 @@ ELFSection &ELFWriter::getJumpTableSection() {
// Get a constant pool section based on the section name returned by TAI
ELFSection &ELFWriter::getConstantPoolSection(MachineConstantPoolEntry &CPE) {
uint64_t Size = TM.getTargetData()->getTypeAllocSize(CPE.getType());
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.getTargetData()->getTypeAllocSize(CPE.getType())) {
case 4: Kind = SectionKind::getMergableConst4(); break;
case 8: Kind = SectionKind::getMergableConst8(); break;
case 16: Kind = SectionKind::getMergableConst16(); break;
default: Kind = SectionKind::getMergableConst(); break;
}
}
std::string CstPoolName =
TAI->getSectionForMergableConstant(Size,CPE.getRelocationInfo())->getName();
std::string CstPoolName = TAI->getSectionForMergableConstant(Kind)->getName();
return getSection(CstPoolName,
ELFSection::SHT_PROGBITS,
ELFSection::SHF_MERGE | ELFSection::SHF_ALLOC,