summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PTX/PTXAsmPrinter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/PTX/PTXAsmPrinter.cpp')
-rw-r--r--llvm/lib/Target/PTX/PTXAsmPrinter.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/lib/Target/PTX/PTXAsmPrinter.cpp b/llvm/lib/Target/PTX/PTXAsmPrinter.cpp
index dd3e895eaa2..27c96053bfe 100644
--- a/llvm/lib/Target/PTX/PTXAsmPrinter.cpp
+++ b/llvm/lib/Target/PTX/PTXAsmPrinter.cpp
@@ -313,13 +313,23 @@ void PTXAsmPrinter::EmitVariableDeclaration(const GlobalVariable *gv) {
const ArrayType* arrayTy = dyn_cast<const ArrayType>(elementTy);
elementTy = arrayTy->getElementType();
+ unsigned numElements = arrayTy->getNumElements();
+
+ while (elementTy->isArrayTy()) {
+
+ arrayTy = dyn_cast<const ArrayType>(elementTy);
+ elementTy = arrayTy->getElementType();
+
+ numElements *= arrayTy->getNumElements();
+ }
+
// FIXME: isPrimitiveType() == false for i16?
assert(elementTy->isSingleValueType() &&
"Non-primitive types are not handled");
// Compute the size of the array, in bytes.
uint64_t arraySize = (elementTy->getPrimitiveSizeInBits() >> 3)
- * arrayTy->getNumElements();
+ * numElements;
decl += ".b8 ";
decl += gvsym->getName();
OpenPOWER on IntegriCloud