[PATCH] D34198: Fix __has_trivial_destructor crash when the type is incomplete with unknown array bounds.

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 21 11:16:37 PDT 2017

rjmccall added inline comments.

Comment at: lib/Sema/SemaExprCXX.cpp:4128
+        return true;
+    }
puneetha wrote:
> rjmccall wrote:
> > I don't understand the difference you're creating between traits here.  Three specific traits about destructibility allow incomplete array types regardless of whether the base type is incomplete, but the rest do not?
> > 
> > Anyway, I think what you want here is basically just:
> > 
> >   if (auto ArrayTy = S.Context.getAsIncompleteArrayType(ArgTy)) {
> >     ArgTy = ArrayTy->getElementType();
> >   }
> Of my understanding, these traits are defined by MSVC. There is no mention of them in the GCC type-traits documentation. For these traits, GCC lets us pass an array of incomplete bounds for any base type, complete or incomplete.
> Please correct me if I am wrong.
I see.  If we're matching GCC bug-for-bug, it doesn't really matter if the behavior seems inconsistent.


More information about the cfe-commits mailing list