Use a proper lvalue-to-rvalue conversion in Objective-C++ property accessors.

Previously, the synthesized AST contained an rvalue DeclRefExpr for 'self'.
Now, it has an lvalue DeclRefExpr wrapped in an lvalue-to-rvalue
ImplicitCastExpr, which is what's generated when an ivar access is written
in the source.

No (intended) functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199225 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Use synthesized ASTs for property getters when available.

This allows the analyzer to handle properties with C++ class type,
finishing up the FIXME from r198953.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199226 91177308-0d34-0410-b5e6-96231b3b80d8
CFG: use Visit instead of VisitStmt to look through parens.

PR18472

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199227 91177308-0d34-0410-b5e6-96231b3b80d8
Simplifying the OpenCL image attribute. It does not need a semantic integer parameter because the required information is encoded in the spelling. Added an appropriate subject to the attribute, and simplified the semantic checking (which will likely be expanded upon in a future patch). Also, removed the GNU spelling since it was unsupported in the first place.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199229 91177308-0d34-0410-b5e6-96231b3b80d8
Remove unused function to fix clang -Werror build

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199230 91177308-0d34-0410-b5e6-96231b3b80d8
Clarify driver/frontend -fms-compatibility help text

Better describe the flag that enables drop-in MSVC compatibility, including
ability to parse MS standard headers. This is intended to distinguish it from
-fms-extensions, the more established and 'gentler' flag also supported by GCC.

The new wording matches up with the internal description introduced in r198936.
Still room for improvement (e.g. C++ is part of the product name, yet the flag
also applies to C) but it's a step forward from "Microsoft mode".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199247 91177308-0d34-0410-b5e6-96231b3b80d8
Darwin: add __sinpi (etc) and __exp10 libbuiltins

These functions have the same constness properties of the normal libm
functions, which allows LLVM to optimise code better in general. There
are also a couple of specific optimisations that only trigger when
these are properly marked.

rdar://problem/13729466

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199249 91177308-0d34-0410-b5e6-96231b3b80d8
Remove the -cxx-abi command-line flag.

This makes the C++ ABI depend entirely on the target: MS ABI for -win32 triples,
Itanium otherwise. It's no longer possible to do weird combinations.

To be able to run a test with a specific ABI without constraining it to a
specific triple, new substitutions are added to lit: %itanium_abi_triple and
%ms_abi_triple can be used to get the current target triple adjusted to the
desired ABI. For example, if the test suite is running with the i686-pc-win32
target, %itanium_abi_triple will expand to i686-pc-mingw32.

Differential Revision: http://llvm-reviews.chandlerc.com/D2545

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199250 91177308-0d34-0410-b5e6-96231b3b80d8
ObjectiveC. produce more expressive warning when
-Wselector detects an unimplemented method used
in an @selector expression. // rdar://15781538


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199255 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: clarify help string for "-###"

Someone recently wasted some time not realising that "-###" didn't
actually execute the commands it printed, and suggested a
documentation tweak.

Having made the same mistake myself on at least one occasion, I
sympathise. So here it is. Any kibitzing on an even better text
welcome.

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


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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199258 91177308-0d34-0410-b5e6-96231b3b80d8
Use i686 as the ISA in %microsoft_abi_triple on ARM

Long term we should make -triple arm7l-*-win32 do something sensible,
but for now it's broken and untested.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199260 91177308-0d34-0410-b5e6-96231b3b80d8
Teach DeadStoresChecker about attribute objc_precise_lifetime.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199277 91177308-0d34-0410-b5e6-96231b3b80d8
ObjectiveC. Improve on diagnostics per Jordan's feedback.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199278 91177308-0d34-0410-b5e6-96231b3b80d8
lit.cfg: Don't expand %ms_abi_triple to non-X86 triples

This is a follow-up to r199260. On ARM hosts, we were attempting to run
tests with triples such as armv7l-unknown-win32. This expands that fix to
cover all non-x86 targets since we only support MS ABI on x86.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199280 91177308-0d34-0410-b5e6-96231b3b80d8
Rename QA_OVERRIDE_GCC3_OPTIONS to CCC_OVERRIDE_OPTIONS. <rdar://14578381>

Continue to accept the old name for a while to make it an easier transition
for people who rely on this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199283 91177308-0d34-0410-b5e6-96231b3b80d8
Fixed error recovery if sizeof is used without parenthesis

Changes made in r192200 fixed PR16992, which requested fixit suggesting
parenthesis if sizeof is followed by type-id. However expression in form
T() followed by ')' was incorrectly considered as a type-id if 'T' is
typedef name. This change fixes this case.

Differential Revision: http://llvm-reviews.chandlerc.com/D2440


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199284 91177308-0d34-0410-b5e6-96231b3b80d8
Fix cxx_variable_templates feature check and documentation

This C++ feature has been marked complete since r191549, but the documentation
claimed it wasn't supported at all and the extension check misreported it as
being available in C.

No regression test; this was a short-lived typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199292 91177308-0d34-0410-b5e6-96231b3b80d8
Fix the attribute enable_if example in the docs to be 100% real-world, instead of merely being close to the real world to mislead people. This now matches the test.


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