DebugInfo: Specify that a value is stored indirectly
authorDavid Blaikie <dblaikie@gmail.com>
Wed, 19 Jun 2013 21:52:48 +0000 (21:52 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Wed, 19 Jun 2013 21:52:48 +0000 (21:52 +0000)
This is a precursor to fix a regression caused by PR14763/r183329 where
the location of a non-trivial pass-by-value parameter ends up
incorrectly referring directly to the parameter (a pointer) rather than
the object pointed to by the pointer.

llvm-svn: 184365

llvm/include/llvm/DebugInfo.h

index 61d0681..01ff634 100644 (file)
@@ -63,7 +63,8 @@ namespace llvm {
       FlagObjcClassComplete  = 1 << 9,
       FlagObjectPointer      = 1 << 10,
       FlagVector             = 1 << 11,
-      FlagStaticMember       = 1 << 12
+      FlagStaticMember       = 1 << 12,
+      FlagIndirectVariable   = 1 << 13
     };
   protected:
     const MDNode *DbgNode;
@@ -553,6 +554,11 @@ namespace llvm {
       return (getUnsignedField(6) & FlagObjectPointer) != 0;
     }
 
+    /// \brief Return true if this variable is represented as a pointer.
+    bool isIndirect() const {
+      return (getUnsignedField(6) & FlagIndirectVariable) != 0;
+    }
+
     /// getInlinedAt - If this variable is inlined then return inline location.
     MDNode *getInlinedAt() const;