[analyzer] Shitfing a constant value by its bit width is undefined.

Citation: C++11 [expr.shift]p1 (and the equivalent text in C11).

This fixes PR18073, but the right thing to do (as noted in the FIXME) is to
have a real checker for too-large shifts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199405 91177308-0d34-0410-b5e6-96231b3b80d8
Giving a spelling to the Override attribute, and commenting on the absence of a spelling for a few implicitly-only attributes. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199410 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Improve formatting of ObjC Blocks with return type.

Before:
  int a = [operation block:^int(int * i) { return 1; }];

After:
  int a = [operation block:^int(int *i) { return 1; }];

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199411 91177308-0d34-0410-b5e6-96231b3b80d8
When generating Spelling enumeration values, do not generate identifiers in the reserved namespace. Strip underscores as appropriate, taking care to not create duplicate identifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199414 91177308-0d34-0410-b5e6-96231b3b80d8
MS ABI: Improve selection of an inheritance model

The MSVC ABI is rather finicky about the exact representation of it's
pointer-to-member representation.  The exact position of when and where
it will go with one representation versus another appears to be when it
desires the pointer-to-member to be complete.

To properly implement this in clang, do several things:
- Give up on tracking the polymorphic nature of the class.  It isn't
  useful to Sema and is only pertinent when choosing CodeGen-time
  details like whether the field-offset can be 0 instead of -1.
- Insist on locking-in the inheritance model when we ask our
  pointer-to-member type to be complete.  From there, grab the
  underlying CXXRecordDecl and try to make *that* complete.  Once we've
  done this, we can calculate it's inheritance model and apply it using
  an attribute.

N.B. My first bullet point is a lie.  We will eventually care about the
specifics of whether or not a CXXRecordDecl is or is not polymorphic
because MSVC compatible mangling of such things depends on it.  However,
I believe we will handle this in a rather different way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199416 91177308-0d34-0410-b5e6-96231b3b80d8
Remove an unnecessary special case to check for a few Darwin-specific options.

Using -mmacosx-version-min (etc.) on non-Darwin platforms should be a warning,
not a hard error. There is no reason to add a special check for these options
in the default toolchain. This just removes the special check and then we get
the usual -Wunused-command-line-argument warning if someone tries to use one
of these options for a target where they are not supported.
<rdar://problem/15569346>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199431 91177308-0d34-0410-b5e6-96231b3b80d8
Consumed analysis: bugfix for operator calls.  Also fixes some formatting
issues, a few testcases, and kills fish.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199436 91177308-0d34-0410-b5e6-96231b3b80d8
Clean up variable template handling a bit, and correct the behavior of name
lookup when declaring a variable template specialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199438 91177308-0d34-0410-b5e6-96231b3b80d8
Add implementations of _cpuid and _xgetbv to Intrin.h

The _cpuid() implementation is the same as in lib/Headers/cpuid.h
with the parameter names adjusted to match the interface.

_xgetbv just does what the Intel manual says.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199439 91177308-0d34-0410-b5e6-96231b3b80d8
Relax the ms-intrin.cpp test

The part that checks that certain functions are marked deprecated doesn't
seem that useful, and it has the bad effect that the test hard-coded the
locations of the notes from that test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199441 91177308-0d34-0410-b5e6-96231b3b80d8
ms-intrin.cpp: no need for -verify anymore

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199442 91177308-0d34-0410-b5e6-96231b3b80d8
Move away from 'general' / 'generalized' as a way of identifying C++11
attribute syntax. There's nothing generalized about this; it's one of
several first-class attribute syntaxes we support, all of which are
more-or-less equally general.

As discussed on cfe-commits, we may want to revisit this if we start allowing
this syntax as an extension in C (or if C adopts the syntax), but hopefully
this diagnostic wording will be crystal clear to everyone in the mean time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199443 91177308-0d34-0410-b5e6-96231b3b80d8
Debug info: Refactor NoLocation and ArtificialLocation to use a common base
class and use it pervasively to restore debug locations.
Fixes an interaction between cleanup and EH that caused the location
to not be restored properly after emitting a landing pad.
rdar://problem/15208190

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199444 91177308-0d34-0410-b5e6-96231b3b80d8
Improve the error message when a PCH dependency is modified

Show the top-level pch file as the culprit, rather than the immediate
dependency when a pch file imports a pcm from a module. To clarify the
relationship, the pch import stack is printed as notes. The old behaviour was
misleading when a pch imported a pcm (from a module), since removing the pcm
would not fix the problem, whereas rebuilding the pch would.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199446 91177308-0d34-0410-b5e6-96231b3b80d8
ms-intrin.cpp: add -Werror to the test

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199450 91177308-0d34-0410-b5e6-96231b3b80d8
Split out -verify into two distinct option flags

Instead of dual-purposing a single flag, rename the driver option to
--verify-debug-info.

The frontend -verify option that enables diagnostic verification remains
unchanged except that it's now a pure CC1Option.

Both have been given proper help text.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199451 91177308-0d34-0410-b5e6-96231b3b80d8
Issue a warning if a throwing operator new or operator new[] returns a null
pointer, since this invokes undefined behavior. Based on a patch by Artyom
Skrobov! Handling of dependent exception specifications and some additional
testcases by me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199452 91177308-0d34-0410-b5e6-96231b3b80d8
PR18477: Create a function scope representing the constructor call when
handling C++11 default initializers. Without this, other parts of Sema (such as
lambda capture) would think the default initializer is part of the surrounding
function scope.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199453 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Stub -Wa,-compress-debug-sections support for integrated-as with a suppressable warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199454 91177308-0d34-0410-b5e6-96231b3b80d8
Make -verify a -cc1 NoDriverOption

'%clang -verify' will now issue an error instead of succeeding without
verification. This should catch flawed tests like r199347.

Followup to r199451.

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