summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDan Bailey <dan@dneg.com>2011-11-03 19:24:46 +0000
committerDan Bailey <dan@dneg.com>2011-11-03 19:24:46 +0000
commitb68515c23238841c16da2098b64073a3ba35e91d (patch)
tree9629fec317747858559a6c78dad963ad55e36d9d /llvm/lib
parent52d87a6f824ac6fd2ac2bc22b676b10d59e873a7 (diff)
downloadbcm5719-llvm-b68515c23238841c16da2098b64073a3ba35e91d.tar.gz
bcm5719-llvm-b68515c23238841c16da2098b64073a3ba35e91d.zip
fixed global array handling for ptx to use the correct bit widths
llvm-svn: 143640
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/PTX/PTXAsmPrinter.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/llvm/lib/Target/PTX/PTXAsmPrinter.cpp b/llvm/lib/Target/PTX/PTXAsmPrinter.cpp
index b2aa7b27edb..e329d5dcc7d 100644
--- a/llvm/lib/Target/PTX/PTXAsmPrinter.cpp
+++ b/llvm/lib/Target/PTX/PTXAsmPrinter.cpp
@@ -318,11 +318,7 @@ void PTXAsmPrinter::EmitVariableDeclaration(const GlobalVariable *gv) {
if (PointerType::classof(gv->getType())) {
PointerType* pointerTy = dyn_cast<PointerType>(gv->getType());
Type* elementTy = pointerTy->getElementType();
-
- decl += ".b8 ";
- decl += gvsym->getName();
- decl += "[";
-
+
if (elementTy->isArrayTy())
{
assert(elementTy->isArrayTy() && "Only pointers to arrays are supported");
@@ -343,15 +339,24 @@ void PTXAsmPrinter::EmitVariableDeclaration(const GlobalVariable *gv) {
// FIXME: isPrimitiveType() == false for i16?
assert(elementTy->isSingleValueType() &&
"Non-primitive types are not handled");
+
+ // Find the size of the element in bits
+ unsigned elementSize = elementTy->getPrimitiveSizeInBits();
- // Compute the size of the array, in bytes.
- uint64_t arraySize = (elementTy->getPrimitiveSizeInBits() >> 3)
- * numElements;
-
- decl += utostr(arraySize);
+ decl += ".b";
+ decl += utostr(elementSize);
+ decl += " ";
+ decl += gvsym->getName();
+ decl += "[";
+ decl += utostr(numElements);
+ decl += "]";
+ }
+ else
+ {
+ decl += ".b8 ";
+ decl += gvsym->getName();
+ decl += "[]";
}
-
- decl += "]";
// handle string constants (assume ConstantArray means string)
OpenPOWER on IntegriCloud