Const'ify CompilerInvocation::toArgs().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158298 91177308-0d34-0410-b5e6-96231b3b80d8
Documentation cleanup, fixing Doxygen markup. Mostly this avoids common terms
such as "protocol" and "expression" being implicitly turned into links to
mistakenly-generated Doxygen pages:
- Escaping @ symbols when Doxygen would otherwise incorrectly interpret them;
- Escaping # symbols when they're not intended as explicit Doxygen link 
  requests, such as when discussing preprocessor directives;
- In one odd case, unescaping @ in @__experimental_modules_import, because
  Doxygen wrote '\@' to the output in that case, causing the example in the
  description of ImportDecl to be wrong; and
- Fixing a typo: @breif -> @brief.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158299 91177308-0d34-0410-b5e6-96231b3b80d8
Add XOP shift and compare intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158300 91177308-0d34-0410-b5e6-96231b3b80d8
[clang.py] Implement SourceLocation.from_offset

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158307 91177308-0d34-0410-b5e6-96231b3b80d8
We were computing the visibility and linkage of template parameters, but
only using the linkage.

Use and test both, documenting that considering the visibility and linkage
of template parameters is a difference from gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158309 91177308-0d34-0410-b5e6-96231b3b80d8
Enable -Wunused-private-field with -Wunused.

It found a lot of cruft in LLVM that I removed last week and I couldn't find any
false positives. Time to give it more testing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158317 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] When looking for a known class, only traverse the hierarchy once.

This has a small hit in the case where only one class is interesting
(NilArgChecker) but is a big improvement when looking for one of several
interesting classes (VariadicMethodTypeChecker), in which the most common
case is that there is no match.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158318 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Add ObjCLoopChecker: objects from NSArray et al are non-nil.

While collections containing nil elements can still be iterated over in an
Objective-C for-in loop, the most common Cocoa collections -- NSArray,
NSDictionary, and NSSet -- cannot contain nil elements. This checker adds
that assumption to the analyzer state.

This was the cause of some minor false positives concerning CFRelease calls
on objects in an NSArray.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158319 91177308-0d34-0410-b5e6-96231b3b80d8
Etch out the code path for MS-style inline assembly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158325 91177308-0d34-0410-b5e6-96231b3b80d8
Make CodeGenFunction::EmitMSAsmStmt throw a fatal error as MS-style inline
assembly is completely untested and unsupported.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158329 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] WWW: Mention that we do not support "noreturn" for methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158330 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] WWW: Add table of contents, fixed code examples.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158331 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] The FAQ question style shouldn't be the same as code_example.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158332 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] WWW: FAQ - fix the assertion use example.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158333 91177308-0d34-0410-b5e6-96231b3b80d8
Add PPC support for translating gcc-style -mcpu options into LLVM -target-cpu options.

This functionality is based on what is done on ARM, and enables selecting PPC CPUs
in a way compatible with gcc's driver. Also, mirroring gcc (and what is done on x86),
-mcpu=native support was added. This uses the host cpu detection from LLVM
(which will also soon be updated by refactoring code currently in backend).

In order for this to work, the target needs a list of valid CPUs -- we now accept all CPUs accepted by LLVM.
A few preprocessor defines for common CPU types have been added.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158334 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] WWW: Add FAQ to the menu.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158335 91177308-0d34-0410-b5e6-96231b3b80d8
[analyzer] Treat LValueBitCasts like regular pointer bit casts.

These casts only appear in very well-defined circumstances, in which the
target of a reinterpret_cast or a function formal parameter is an lvalue
reference. According to the C++ standard, the following are equivalent:

 reinterpret_cast<T&>( x)
*reinterpret_cast<T*>(&x)

[expr.reinterpret.cast]p11

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158338 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "[analyzer] Treat LValueBitCasts like regular pointer bit casts."

This does not actually give us the right behavior for reinterpret_cast
of references. Reverting so I can think about it some more.

This reverts commit 50a75a6e26a49011150067adac556ef978639fe6.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158343 91177308-0d34-0410-b5e6-96231b3b80d8
Correct comment.  The return type was changed to const Type* in r123814.  Patch by David Röthlisberger.


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