[analyzer]Revert part of r161511; suppresses leak false positives in C++

This is a "quick fix".

The underlining issue is that when a const pointer to a struct is passed
into a function, we do not invalidate the pointer fields. This results
in false positives that are common in C++ (since copy constructors are
prevalent). (Silences two llvm false positives.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174468 91177308-0d34-0410-b5e6-96231b3b80d8
Added test for r174461 that checks that the desired behavior also occurs in ObjC++ alongside ObjC.

\end paranoia.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174471 91177308-0d34-0410-b5e6-96231b3b80d8
[Headers] Use standard builtin defines instead of typeof trickery.

 - The trickery can confuse more basic source processors, in particular the
   Unix conformance tool that wants to scan headers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174475 91177308-0d34-0410-b5e6-96231b3b80d8
Use a dyn_cast to avoid a crash when the TypeLoc is not a ConstantArrayTypeLoc.
rdar://13153516


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