int is() const {
// Is it PT1/PT2?
if (::llvm::getPointerUnionTypeNum<PT1, PT2>((T*)0) != -1)
- return Val.get<InnerUnion>().is<T>();
+ return Val.is<InnerUnion>() && Val.get<InnerUnion>().is<T>();
// Must be PT3 or statically invalid.
assert(Val.is<T>());
return true;