Add 'getInt64Field()' method to get the signed integer instead of unsigned.
authorBill Wendling <isanbard@gmail.com>
Mon, 3 Dec 2012 19:44:25 +0000 (19:44 +0000)
committerBill Wendling <isanbard@gmail.com>
Mon, 3 Dec 2012 19:44:25 +0000 (19:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169145 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/DebugInfo.h
lib/VMCore/DebugInfo.cpp

index e66ee933b3b050f669c9da6b63f9ce172f507401..ee0505b2f5323dc155b3e6434fb59c4a71237955 100644 (file)
@@ -71,6 +71,7 @@ namespace llvm {
       return (unsigned)getUInt64Field(Elt);
     }
     uint64_t getUInt64Field(unsigned Elt) const;
+    int64_t getInt64Field(unsigned Elt) const;
     DIDescriptor getDescriptorField(unsigned Elt) const;
 
     template <typename DescTy>
index 7d8cf72aab208bf6aa5872bad7c420735a52140e..73eb92ee84662159579059a2d61cf39d4b8ad5d1 100644 (file)
@@ -75,6 +75,18 @@ uint64_t DIDescriptor::getUInt64Field(unsigned Elt) const {
   return 0;
 }
 
+int64_t DIDescriptor::getInt64Field(unsigned Elt) const {
+  if (DbgNode == 0)
+    return 0;
+
+  if (Elt < DbgNode->getNumOperands())
+    if (ConstantInt *CI
+        = dyn_cast_or_null<ConstantInt>(DbgNode->getOperand(Elt)))
+      return CI->getSExtValue();
+
+  return 0;
+}
+
 DIDescriptor DIDescriptor::getDescriptorField(unsigned Elt) const {
   if (DbgNode == 0)
     return DIDescriptor();