[lld] r234860 - ELF: Make ARMELFMappingAtom a non-template class.

Rui Ueyama ruiu at google.com
Mon Apr 13 22:21:26 PDT 2015


Author: ruiu
Date: Tue Apr 14 00:21:26 2015
New Revision: 234860

URL: http://llvm.org/viewvc/llvm-project?rev=234860&view=rev
Log:
ELF: Make ARMELFMappingAtom a non-template class.

Modified:
    lld/trunk/lib/ReaderWriter/ELF/ARM/ARMELFFile.h

Modified: lld/trunk/lib/ReaderWriter/ELF/ARM/ARMELFFile.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMELFFile.h?rev=234860&r1=234859&r2=234860&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/ARM/ARMELFFile.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/ARM/ARMELFFile.h Tue Apr 14 00:21:26 2015
@@ -17,14 +17,16 @@ namespace elf {
 
 class ARMLinkingContext;
 
-template <DefinedAtom::CodeModel Model>
 class ARMELFMappingAtom : public ELFDefinedAtom<ELF32LE> {
 public:
   template <typename... T>
-  ARMELFMappingAtom(T &&... args)
-      : ELFDefinedAtom<ELF32LE>(std::forward<T>(args)...) {}
+  ARMELFMappingAtom(DefinedAtom::CodeModel model, T &&... args)
+      : ELFDefinedAtom<ELF32LE>(std::forward<T>(args)...), _model(model) {}
+
+  DefinedAtom::CodeModel codeModel() const override { return _model; }
 
-  DefinedAtom::CodeModel codeModel() const override { return Model; }
+private:
+  DefinedAtom::CodeModel _model;
 };
 
 class ARMELFDefinedAtom : public ELFDefinedAtom<ELF32LE> {
@@ -86,17 +88,20 @@ private:
     if (symName.size() >= 2 && symName[0] == '$') {
       switch (symName[1]) {
       case 'a':
-        return new (_readerStorage) ARMELFMappingAtom<DefinedAtom::codeARM_a>(
-            *this, symName, sectionName, sym, sectionHdr, contentData,
-            referenceStart, referenceEnd, referenceList);
+        return new (_readerStorage)
+            ARMELFMappingAtom(DefinedAtom::codeARM_a, *this, symName,
+                              sectionName, sym, sectionHdr, contentData,
+                              referenceStart, referenceEnd, referenceList);
       case 'd':
-        return new (_readerStorage) ARMELFMappingAtom<DefinedAtom::codeARM_d>(
-            *this, symName, sectionName, sym, sectionHdr, contentData,
-            referenceStart, referenceEnd, referenceList);
+        return new (_readerStorage)
+            ARMELFMappingAtom(DefinedAtom::codeARM_d, *this, symName,
+                              sectionName, sym, sectionHdr, contentData,
+                              referenceStart, referenceEnd, referenceList);
       case 't':
-        return new (_readerStorage) ARMELFMappingAtom<DefinedAtom::codeARM_t>(
-            *this, symName, sectionName, sym, sectionHdr, contentData,
-            referenceStart, referenceEnd, referenceList);
+        return new (_readerStorage)
+            ARMELFMappingAtom(DefinedAtom::codeARM_t, *this, symName,
+                              sectionName, sym, sectionHdr, contentData,
+                              referenceStart, referenceEnd, referenceList);
       default:
         // Fall through and create regular defined atom.
         break;





More information about the llvm-commits mailing list