X86: Simplify X86WindowsTargetObjectFile::getSectionForConstant
authorDavid Majnemer <david.majnemer@gmail.com>
Tue, 15 Jul 2014 23:01:10 +0000 (23:01 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Tue, 15 Jul 2014 23:01:10 +0000 (23:01 +0000)
There exists a helper function to abstract away the various differences
between ConstantVector, ConstantDataVector, ConstantAggregateZero, etc.

Use it to simplify X86WindowsTargetObjectFile::getSectionForConstant.

llvm-svn: 213104

llvm/lib/Target/X86/X86TargetObjectFile.cpp

index 21ee047..f8bcd61 100644 (file)
@@ -151,15 +151,9 @@ X86WindowsTargetObjectFile::getSectionForConstant(SectionKind Kind,
         uint64_t NumBits = VTy->getBitWidth();
         if (NumBits == 128 || NumBits == 256) {
           COMDATSymName = NumBits == 128 ? "__xmm@" : "__ymm@";
-          if (const auto *CDV = dyn_cast<ConstantDataVector>(C)) {
-            for (int I = CDV->getNumElements() - 1, E = -1; I != E; --I)
-              COMDATSymName +=
-                  scalarConstantToHexString(CDV->getElementAsConstant(I));
-          } else {
-            const auto *CV = cast<ConstantVector>(C);
-            for (int I = CV->getNumOperands() - 1, E = -1; I != E; --I)
-              COMDATSymName += scalarConstantToHexString(CV->getOperand(I));
-          }
+          for (int I = VTy->getNumElements() - 1, E = -1; I != E; --I)
+            COMDATSymName +=
+                scalarConstantToHexString(C->getAggregateElement(I));
         }
       }
       if (!COMDATSymName.empty()) {