diff options
| author | Chris Lattner <sabre@nondot.org> | 2009-07-26 06:26:55 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2009-07-26 06:26:55 +0000 | 
| commit | fb6867c7db4ea9368b38a92e59b45cac034dc998 (patch) | |
| tree | fe6174c7ba81199b10b5b0c2e679fdb79427cd98 /llvm/lib/CodeGen/AsmPrinter | |
| parent | aae21f49156a17c347cf6da44ff30af1ba7bde54 (diff) | |
| download | bcm5719-llvm-fb6867c7db4ea9368b38a92e59b45cac034dc998.tar.gz bcm5719-llvm-fb6867c7db4ea9368b38a92e59b45cac034dc998.zip | |
simplify getSectionForMergableConstant to take a SectionKind.
llvm-svn: 77134
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 21 | 
1 files changed, 16 insertions, 5 deletions
| diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 582acce0da3..e12a0f2f0e7 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -301,17 +301,28 @@ void AsmPrinter::EmitConstantPool(MachineConstantPool *MCP) {    const std::vector<MachineConstantPoolEntry> &CP = MCP->getConstants();    if (CP.empty()) return; -  const TargetData &TD = *TM.getTargetData(); -      // Calculate sections for constant pool entries. We collect entries to go into    // the same section together to reduce amount of section switch statements.    SmallVector<SectionCPs, 4> CPSections;    for (unsigned i = 0, e = CP.size(); i != e; ++i) {      const MachineConstantPoolEntry &CPE = CP[i];      unsigned Align = CPE.getAlignment(); -    uint64_t Size = TD.getTypeAllocSize(CPE.getType()); -    const Section *S = -      TAI->getSectionForMergableConstant(Size, CPE.getRelocationInfo()); +     +    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; +      } +    } + +    const Section *S = TAI->getSectionForMergableConstant(Kind);      // The number of sections are small, just do a linear search from the      // last section to the first. | 

