Add pretty printers for llvm::PointerIntPair and llvm::PointerUnion.

Reviewers: aprantl, dblaikie, jdoerfert, nicolasvasilache

Reviewed By: dblaikie

Subscribers: jpienaar, dexonsmith, merge_guards_bot, llvm-commits

Tags: #llvm, #clang, #lldb, #openmp

Differential Revision: https://reviews.llvm.org/D72557

GitOrigin-RevId: 97431831e5690275a453567430d1153c47ba1585
diff --git a/llvm-prettyprinters/gdb/prettyprinters.cpp b/llvm-prettyprinters/gdb/prettyprinters.cpp
index 03cef4d..bb0e02d 100644
--- a/llvm-prettyprinters/gdb/prettyprinters.cpp
+++ b/llvm-prettyprinters/gdb/prettyprinters.cpp
@@ -1,12 +1,15 @@
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/Optional.h"
+#include "llvm/ADT/PointerIntPair.h"
+#include "llvm/ADT/PointerUnion.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/Twine.h"
 #include "llvm/Support/Error.h"
 
 int Array[] = {1, 2, 3};
+auto IntPtr = reinterpret_cast<int *>(0xabc);
 
 llvm::ArrayRef<int> ArrayRef(Array);
 llvm::MutableArrayRef<int> MutableArrayRef(Array);
@@ -19,7 +22,7 @@
 llvm::SmallString<5> SmallString("foo");
 llvm::StringRef StringRef = "bar";
 llvm::Twine Twine = llvm::Twine(SmallString) + StringRef;
+llvm::PointerIntPair<int *, 1> PointerIntPair(IntPtr, 1);
+llvm::PointerUnion<float *, int *> PointerUnion(IntPtr);
 
-int main() {
-  return 0;
-}
+int main() { return 0; }
diff --git a/llvm-prettyprinters/gdb/prettyprinters.gdb b/llvm-prettyprinters/gdb/prettyprinters.gdb
index 94213f9..d6e8164 100644
--- a/llvm-prettyprinters/gdb/prettyprinters.gdb
+++ b/llvm-prettyprinters/gdb/prettyprinters.gdb
@@ -39,3 +39,10 @@
 # CHECK: "\"foo\"\"bar\""
 p Twine
 
+# CHECK: llvm::PointerIntPair<int *> = {pointer = 0xabc, value = 1}
+p PointerIntPair
+
+# CHECK: llvm::PointerUnion containing int * = {pointer = 0xabc}
+p PointerUnion
+
+