Add an explicit operator bool conversion to DIDescriptor to make
authorEric Christopher <echristo@gmail.com>
Wed, 17 Jul 2013 22:53:05 +0000 (22:53 +0000)
committerEric Christopher <echristo@gmail.com>
Wed, 17 Jul 2013 22:53:05 +0000 (22:53 +0000)
it clear what we want to do. Unfortunately the conversion to
pointer operator fires now instead and chasing down all of the
conversions and making them explicit and handled is a large task
so add a FIXME with it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186543 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/DebugInfo.h

index 372d367b7075ec87f41edd1def186201d898ee64..1d7384c11703a4e00183f7497f4a7e7fc0b0d746 100644 (file)
@@ -102,6 +102,13 @@ namespace llvm {
     operator MDNode *() const { return const_cast<MDNode*>(DbgNode); }
     MDNode *operator ->() const { return const_cast<MDNode*>(DbgNode); }
 
+    // An explicit operator bool so that we can do testing of DI values
+    // easily.
+    // FIXME: This operator bool isn't actually protecting anything at the
+    // moment due to the conversion operator above making DIDescriptor nodes
+    // implicitly convertable to pointer.
+    LLVM_EXPLICIT operator bool() const { return DbgNode != 0; }
+
     unsigned getTag() const {
       return getUnsignedField(0) & ~LLVMDebugVersionMask;
     }