[lld] r182033 - [lld] Do not create a temporary pair.

Rui Ueyama ruiu at google.com
Thu May 16 10:58:14 PDT 2013


Author: ruiu
Date: Thu May 16 12:58:14 2013
New Revision: 182033

URL: http://llvm.org/viewvc/llvm-project?rev=182033&view=rev
Log:
[lld] Do not create a temporary pair.

Modified:
    lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h

Modified: lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h?rev=182033&r1=182032&r2=182033&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h Thu May 16 12:58:14 2013
@@ -163,20 +163,18 @@ public:
   }
 
 private:
-  std::pair<Elf_Phdr *, bool> allocateProgramHeader() {
+  Elf_Phdr *allocateProgramHeader(bool &allocatedNew) {
     Elf_Phdr *phdr;
-    bool ret = false;
     if (_phi == _ph.end()) {
       phdr = new (_allocator) Elf_Phdr;
       _ph.push_back(phdr);
       _phi = _ph.end();
-      ret = true;
+      allocatedNew = true;
     } else {
       phdr = (*_phi);
       ++_phi;
     }
-
-    return std::make_pair(phdr, ret);
+    return phdr;
   }
 
   std::vector<Elf_Phdr *> _ph;
@@ -191,17 +189,15 @@ bool ProgramHeader<ELFT>::addSegment(Seg
   // just pick the values directly from the segment as there
   // wouldnt be any slices within that
   if (segment->segmentType() != llvm::ELF::PT_LOAD) {
-    auto phdr = allocateProgramHeader();
-    if (phdr.second)
-      allocatedNew = true;
-    phdr.first->p_type = segment->segmentType();
-    phdr.first->p_offset = segment->fileOffset();
-    phdr.first->p_vaddr = segment->virtualAddr();
-    phdr.first->p_paddr = segment->virtualAddr();
-    phdr.first->p_filesz = segment->fileSize();
-    phdr.first->p_memsz = segment->memSize();
-    phdr.first->p_flags = segment->flags();
-    phdr.first->p_align = segment->align2();
+    Elf_Phdr *phdr = allocateProgramHeader(allocatedNew);
+    phdr->p_type = segment->segmentType();
+    phdr->p_offset = segment->fileOffset();
+    phdr->p_vaddr = segment->virtualAddr();
+    phdr->p_paddr = segment->virtualAddr();
+    phdr->p_filesz = segment->fileSize();
+    phdr->p_memsz = segment->memSize();
+    phdr->p_flags = segment->flags();
+    phdr->p_align = segment->align2();
     this->_fsize = fileSize();
     this->_msize = this->_fsize;
     return allocatedNew;
@@ -209,17 +205,15 @@ bool ProgramHeader<ELFT>::addSegment(Seg
   // For all other segments, use the slice
   // to derive program headers
   for (auto slice : segment->slices()) {
-    auto phdr = allocateProgramHeader();
-    if (phdr.second)
-      allocatedNew = true;
-    phdr.first->p_type = segment->segmentType();
-    phdr.first->p_offset = slice->fileOffset();
-    phdr.first->p_vaddr = slice->virtualAddr();
-    phdr.first->p_paddr = slice->virtualAddr();
-    phdr.first->p_filesz = slice->fileSize();
-    phdr.first->p_memsz = slice->memSize();
-    phdr.first->p_flags = segment->flags();
-    phdr.first->p_align = (phdr.first->p_type == llvm::ELF::PT_LOAD) ?
+    Elf_Phdr *phdr = allocateProgramHeader(allocatedNew);
+    phdr->p_type = segment->segmentType();
+    phdr->p_offset = slice->fileOffset();
+    phdr->p_vaddr = slice->virtualAddr();
+    phdr->p_paddr = slice->virtualAddr();
+    phdr->p_filesz = slice->fileSize();
+    phdr->p_memsz = slice->memSize();
+    phdr->p_flags = segment->flags();
+    phdr->p_align = (phdr->p_type == llvm::ELF::PT_LOAD) ?
                           segment->pageSize() : slice->align2();
   }
   this->_fsize = fileSize();





More information about the llvm-commits mailing list