Allow the use of pointers to const within PointerUnion.
authorDouglas Gregor <dgregor@apple.com>
Tue, 31 Mar 2009 23:19:54 +0000 (23:19 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 31 Mar 2009 23:19:54 +0000 (23:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68159 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/PointerUnion.h

index 1075711ec0c93d686aa8146236eb801ba63093c8..b3baec1ff3772631afd976d11b9109b823791e3d 100644 (file)
@@ -69,11 +69,13 @@ namespace llvm {
     PointerUnion() {}
     
     PointerUnion(PT1 V) {
-      Val.setPointer(PointerLikeTypeTraits<PT1>::getAsVoidPointer(V));
+      Val.setPointer(
+         const_cast<void *>(PointerLikeTypeTraits<PT1>::getAsVoidPointer(V)));
       Val.setInt(0);
     }
     PointerUnion(PT2 V) {
-      Val.setPointer(PointerLikeTypeTraits<PT2>::getAsVoidPointer(V));
+      Val.setPointer(
+         const_cast<void *>(PointerLikeTypeTraits<PT2>::getAsVoidPointer(V)));
       Val.setInt(1);
     }
     
@@ -109,12 +111,14 @@ namespace llvm {
     /// Assignment operators - Allow assigning into this union from either
     /// pointer type, setting the discriminator to remember what it came from.
     const PointerUnion &operator=(const PT1 &RHS) {
-      Val.setPointer(PointerLikeTypeTraits<PT1>::getAsVoidPointer(RHS));
+      Val.setPointer(
+         const_cast<void *>(PointerLikeTypeTraits<PT1>::getAsVoidPointer(RHS)));
       Val.setInt(0);
       return *this;
     }
     const PointerUnion &operator=(const PT2 &RHS) {
-      Val.setPointer(PointerLikeTypeTraits<PT2>::getAsVoidPointer(RHS));
+      Val.setPointer(
+        const_cast<void *>(PointerLikeTypeTraits<PT2>::getAsVoidPointer(RHS)));
       Val.setInt(1);
       return *this;
     }