]> granicus.if.org Git - clang/log
clang
10 years agoEnhance attribute 'nonnull' to be applicable to parameters directly (infix).
Ted Kremenek [Fri, 17 Jan 2014 06:24:56 +0000 (06:24 +0000)]
Enhance attribute 'nonnull' to be applicable to parameters directly (infix).

This allows the following syntax:

  void baz(__attribute__((nonnull)) const char *str);

instead of:

  void baz(const char *str) __attribute__((nonnull(1)));

This also extends to Objective-C methods.

The checking logic in Sema is not as clean as I would like.  Effectively
now we need to check both the FunctionDecl/ObjCMethodDecl and the parameters,
so the point of truth is spread in two places, but the logic isn't that
cumbersome.

Implements <rdar://problem/14691443>.

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

10 years agoAdd ArrayRef<> interface to get the parameters of a FunctionDecl/ObjCMethodDecl.
Ted Kremenek [Fri, 17 Jan 2014 06:24:50 +0000 (06:24 +0000)]
Add ArrayRef<> interface to get the parameters of a FunctionDecl/ObjCMethodDecl.

This is an alternate interface to the separate iterator interfaces
provided by FunctionDecl and ObjCMethodDecl, which precede ArrayRef.

Providing this new interface is more convenient for some uses, and
likely the old interfaces should be removed.  I have not undertaken
that effort in this change because this API introduction may
solicit commentary and that was a larger change than I wanted
to introduce all at once to serve a direct purpose.

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

10 years agoPush NonNullAttr inspection loop into CheckNonNullArguments.
Ted Kremenek [Fri, 17 Jan 2014 06:24:47 +0000 (06:24 +0000)]
Push NonNullAttr inspection loop into CheckNonNullArguments.

No functionality change.

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

10 years agoMake 'CheckNonNullArguments' a static function. No functionality change.
Ted Kremenek [Fri, 17 Jan 2014 06:24:43 +0000 (06:24 +0000)]
Make 'CheckNonNullArguments' a static function.  No functionality change.

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

10 years agoRefine diagnostic: attribute 'nonnull' applies to both functions and methods.
Ted Kremenek [Fri, 17 Jan 2014 04:58:29 +0000 (04:58 +0000)]
Refine diagnostic: attribute 'nonnull' applies to both functions and methods.

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

10 years agoKill off obsolete err_target_unknown_cxxabi diag
Alp Toker [Fri, 17 Jan 2014 04:23:58 +0000 (04:23 +0000)]
Kill off obsolete err_target_unknown_cxxabi diag

Unused since r199250.

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

10 years agoMake -cl-kernel-arg-info a cc1-only option like the others
Alp Toker [Fri, 17 Jan 2014 04:19:59 +0000 (04:19 +0000)]
Make -cl-kernel-arg-info a cc1-only option like the others

The driver wasn't doing anything with it. Also rephrase the help text.

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

10 years agoUpdating the minimum version information for Visual Studio.
Aaron Ballman [Fri, 17 Jan 2014 03:38:49 +0000 (03:38 +0000)]
Updating the minimum version information for Visual Studio.

Patch thanks to Nikola Smiljanic!

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

10 years agoTweak test run line for readability
Alp Toker [Fri, 17 Jan 2014 03:35:04 +0000 (03:35 +0000)]
Tweak test run line for readability

Matching up the argument order in r199455's two RUN lines better demonstrates
what's going on.

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

10 years agoMake -verify a -cc1 NoDriverOption
Alp Toker [Fri, 17 Jan 2014 03:21:54 +0000 (03:21 +0000)]
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

10 years agoDriver: Stub -Wa,-compress-debug-sections support for integrated-as with a suppressab...
David Blaikie [Fri, 17 Jan 2014 03:17:40 +0000 (03:17 +0000)]
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

10 years agoPR18477: Create a function scope representing the constructor call when
Richard Smith [Fri, 17 Jan 2014 03:11:34 +0000 (03:11 +0000)]
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

10 years agoIssue a warning if a throwing operator new or operator new[] returns a null
Richard Smith [Fri, 17 Jan 2014 02:09:33 +0000 (02:09 +0000)]
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

10 years agoSplit out -verify into two distinct option flags
Alp Toker [Fri, 17 Jan 2014 02:06:23 +0000 (02:06 +0000)]
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

10 years agoms-intrin.cpp: add -Werror to the test
Hans Wennborg [Fri, 17 Jan 2014 01:41:07 +0000 (01:41 +0000)]
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

10 years agoImprove the error message when a PCH dependency is modified
Ben Langmuir [Fri, 17 Jan 2014 00:19:09 +0000 (00:19 +0000)]
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

10 years agoDebug info: Refactor NoLocation and ArtificialLocation to use a common base
Adrian Prantl [Fri, 17 Jan 2014 00:15:10 +0000 (00:15 +0000)]
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

10 years agoMove away from 'general' / 'generalized' as a way of identifying C++11
Richard Smith [Fri, 17 Jan 2014 00:11:48 +0000 (00:11 +0000)]
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

10 years agoms-intrin.cpp: no need for -verify anymore
Hans Wennborg [Fri, 17 Jan 2014 00:04:43 +0000 (00:04 +0000)]
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

10 years agoRelax the ms-intrin.cpp test
Hans Wennborg [Thu, 16 Jan 2014 23:59:08 +0000 (23:59 +0000)]
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

10 years agoAdd implementations of _cpuid and _xgetbv to Intrin.h
Hans Wennborg [Thu, 16 Jan 2014 23:39:35 +0000 (23:39 +0000)]
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

10 years agoClean up variable template handling a bit, and correct the behavior of name
Richard Smith [Thu, 16 Jan 2014 23:39:20 +0000 (23:39 +0000)]
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

10 years agoConsumed analysis: bugfix for operator calls. Also fixes some formatting
DeLesley Hutchins [Thu, 16 Jan 2014 23:07:16 +0000 (23:07 +0000)]
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

10 years agoRemove an unnecessary special case to check for a few Darwin-specific options.
Bob Wilson [Thu, 16 Jan 2014 21:50:37 +0000 (21:50 +0000)]
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

10 years agoMS ABI: Improve selection of an inheritance model
David Majnemer [Thu, 16 Jan 2014 20:05:57 +0000 (20:05 +0000)]
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

10 years agoWhen generating Spelling enumeration values, do not generate identifiers in the reser...
Aaron Ballman [Thu, 16 Jan 2014 19:44:01 +0000 (19:44 +0000)]
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

10 years agoclang-format: Improve formatting of ObjC Blocks with return type.
Daniel Jasper [Thu, 16 Jan 2014 19:14:34 +0000 (19:14 +0000)]
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

10 years agoGiving a spelling to the Override attribute, and commenting on the absence of a spell...
Aaron Ballman [Thu, 16 Jan 2014 19:00:04 +0000 (19:00 +0000)]
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

10 years ago[analyzer] Shitfing a constant value by its bit width is undefined.
Jordan Rose [Thu, 16 Jan 2014 18:02:23 +0000 (18:02 +0000)]
[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

10 years agowww: update the "Follow what's going on" section too
Alp Toker [Thu, 16 Jan 2014 17:04:52 +0000 (17:04 +0000)]
www: update the "Follow what's going on" section too

Includes some style tweaks and removes the tautological observation that "Clang
is still under heavy development" -- it hopefully always will be.

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

10 years agoSPARCv9 implements long double as an IEEE quad.
Jakob Stoklund Olesen [Thu, 16 Jan 2014 16:43:19 +0000 (16:43 +0000)]
SPARCv9 implements long double as an IEEE quad.

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

10 years agowww: link to the planet clang newsfeed
Alp Toker [Thu, 16 Jan 2014 16:29:02 +0000 (16:29 +0000)]
www: link to the planet clang newsfeed

Also shuffle the Communication section so the bug tracker comes first.

(The sidebar isn't scrollable at the moment so this gives a better chance of
the bug tracker being seen. The links further down are basically invisible --
we should look into that.)

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

10 years agoFixing a warning that causes the sanitizer build disliked about mixing && and ||...
Aaron Ballman [Thu, 16 Jan 2014 14:32:03 +0000 (14:32 +0000)]
Fixing a warning that causes the sanitizer build disliked about mixing && and ||. Since this is generated code, the && has been removed from the expression entirely.

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

10 years ago[ASan] Enough to have llvm-symbolizer in $PATH.
Alexander Potapenko [Thu, 16 Jan 2014 14:01:39 +0000 (14:01 +0000)]
[ASan] Enough to have llvm-symbolizer in $PATH.

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

10 years agoFactored some function-like type reasoning out of SemaDeclAttr and onto Decl itself...
Aaron Ballman [Thu, 16 Jan 2014 13:55:42 +0000 (13:55 +0000)]
Factored some function-like type reasoning out of SemaDeclAttr and onto Decl itself. This allows for more declarative subjects in attribute tablegen where the attribute appertains to something function-like, but not strictly a FunctionDecl.

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

10 years ago[ASan] Typo fix (symbolize=0 disables online symbolization)
Alexander Potapenko [Thu, 16 Jan 2014 13:48:16 +0000 (13:48 +0000)]
[ASan] Typo fix (symbolize=0 disables online symbolization)

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

10 years ago[ASan] Describe online/offline symbolization of reports, mention dsymutil.
Alexander Potapenko [Thu, 16 Jan 2014 13:46:29 +0000 (13:46 +0000)]
[ASan] Describe online/offline symbolization of reports, mention dsymutil.

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

10 years agoGiving the asm attribute some keyword spellings based off of GCC's documentation...
Aaron Ballman [Thu, 16 Jan 2014 13:45:57 +0000 (13:45 +0000)]
Giving the asm attribute some keyword spellings based off of GCC's documentation. No functional changes.

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

10 years agoDistinguish between attributes explicitly written at the request of the user, and...
Aaron Ballman [Thu, 16 Jan 2014 13:03:14 +0000 (13:03 +0000)]
Distinguish between attributes explicitly written at the request of the user, and attributes implicitly generated to assist in bookkeeping by the compiler. This is done so by table generating a CreateImplicit method for each attribute.

Additionally, remove the optional nature of the spelling list index when creating attributes. This is supported by table generating a Spelling enumeration when the spellings for an attribute are distinct enough to warrant it.

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

10 years agoSema: Fix crash during member pointer conversion involving incomplete classes
David Majnemer [Thu, 16 Jan 2014 12:02:55 +0000 (12:02 +0000)]
Sema: Fix crash during member pointer conversion involving incomplete classes

We would attempt to determine the inheritance relationship between
classes 'A' and 'B' during static_cast if we tried to convert from 'int
A::*' to 'int B::*'.  However, the question "does A derive from B" is
not meaningful when 'A' isn't defined.

Handle this case by requiring that 'A' be defined.

This fixes PR18506.

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

10 years ago[asan] Remove -fsanitize-address-zero-base-shadow command line
Evgeniy Stepanov [Thu, 16 Jan 2014 10:19:31 +0000 (10:19 +0000)]
[asan] Remove -fsanitize-address-zero-base-shadow command line
flag from clang, and disable zero-base shadow support on all platforms
where it is not the default behavior.

- It is completely unused, as far as we know.
- It is ABI-incompatible with non-zero-base shadow, which means all
objects in a process must be built with the same setting. Failing to
do so results in a segmentation fault at runtime.
- It introduces a backward dependency of compiler-rt on user code,
which is uncommon and complicates testing.

This is the Clang part of a larger change.

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

10 years agoclang-format: Enable formatting of lambdas with explicit return type.
Daniel Jasper [Thu, 16 Jan 2014 09:11:55 +0000 (09:11 +0000)]
clang-format: Enable formatting of lambdas with explicit return type.

So clang-format can now format:

  int c = []()->int { return 2; }();
  int c = []()->vector<int> { return { 2 }; }();

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

10 years agoMachO: use *-*-*-macho for MachO embedded targets.
Tim Northover [Thu, 16 Jan 2014 08:48:16 +0000 (08:48 +0000)]
MachO: use *-*-*-macho for MachO embedded targets.

Previously we had bodged together some hacks mapping MachO embedded
targets (i.e. mainly ARM v6M and v7M) to the "*-*-darwin-eabi" triple.
This is incorrect in both details (they don't run Darwin and they're
not EABI in any real sense).

This commit appropriates the existing "MachO" environment for the
purpose instead.

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

10 years agoForbid driver use in Sema tests
Alp Toker [Thu, 16 Jan 2014 02:37:08 +0000 (02:37 +0000)]
Forbid driver use in Sema tests

This ports the last Sema tests over to use the frontend directly, and adds a
local lit substitution to disable inappropriate %clang usage under this
directory.

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

10 years agoDisable and XFAIL a test that never worked
Alp Toker [Thu, 16 Jan 2014 02:36:24 +0000 (02:36 +0000)]
Disable and XFAIL a test that never worked

-verify was simply ignored by the driver.

This commit fixes the RUN line and XFAILs the test, unblocking changes to ban
use of the driver in Sema tests and avoid problems like this.

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

10 years agoRemove support for armv7f slice. <rdar://problem/12478440>
Bob Wilson [Wed, 15 Jan 2014 21:43:40 +0000 (21:43 +0000)]
Remove support for armv7f slice. <rdar://problem/12478440>

This was never used for anything so we should just get rid of it.

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

10 years agoEnsure i686-nacl long long is aligned 8 bytes (like malign-double)
Jan Wen Voung [Wed, 15 Jan 2014 21:42:41 +0000 (21:42 +0000)]
Ensure i686-nacl long long is aligned 8 bytes (like malign-double)

Set NaCl OSTargetInfo to have LongLongAlign = 64. Otherwise, it will
pick up the setting of 32 from X86_32TargetInfo.

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

10 years agoMake -fno-inline attach NoInline attribute to all functions that are not
Roman Divacky [Wed, 15 Jan 2014 19:07:16 +0000 (19:07 +0000)]
Make -fno-inline attach NoInline attribute to all functions that are not
marked as AlwaysInline or ForceInline.

This moves us to what gcc does with -fno-inline. The attribute approach
was discussed to be better than switching to InlineAlways inliner in presence
of LTO.

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

10 years ago[analyzer] BlockCall shouldn't really be an AnyFunctionCall.
Jordan Rose [Wed, 15 Jan 2014 17:25:15 +0000 (17:25 +0000)]
[analyzer] BlockCall shouldn't really be an AnyFunctionCall.

Per discussion with Anna a /long/ time ago, it was way too easy to misuse
BlockCall: because it inherited from AnyFunctionCall (through SimpleCall),
getDecl() was constrained to return a FunctionDecl, and you had to call
getBlockDecl() instead. This goes against the whole point of CallEvent
(to abstract over different ways to invoke bodies of code).

Now, BlockCall just inherits directly from CallEvent. There's a bit of
duplication in getting things out of the origin expression (which is still
known to be a CallExpr), but nothing significant.

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

10 years ago[analyzer] Print function name when dumping its CFG.
Jordan Rose [Wed, 15 Jan 2014 17:25:05 +0000 (17:25 +0000)]
[analyzer] Print function name when dumping its CFG.

This allows us to use CHECK-LABEL to ensure that we're checking the right CFG.

Debugging change only.

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

10 years agoclang-format: Fixed formatting of JavaScript container literals
Daniel Jasper [Wed, 15 Jan 2014 15:09:08 +0000 (15:09 +0000)]
clang-format: Fixed formatting of JavaScript container literals

Before:
  var arr = [ 1, 2, 3 ];
  var obj = {a : 1, b : 2, c : 3};

After:
  var arr = [1, 2, 3];
  var obj = {a: 1, b: 2, c: 3};

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

10 years agoFix for PR9812: warn about bool instead of _Bool.
Erik Verbruggen [Wed, 15 Jan 2014 09:15:43 +0000 (09:15 +0000)]
Fix for PR9812: warn about bool instead of _Bool.

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

10 years agoMove a bunch of tests to directly use the CC1 layer. This at least saves
Chandler Carruth [Wed, 15 Jan 2014 09:08:07 +0000 (09:08 +0000)]
Move a bunch of tests to directly use the CC1 layer. This at least saves
a subprocess invocation which is pretty significant on Windows. It also
likely saves a bunch of thrashing the host machine needlessly. Finally
it makes the tests much more predictable and less dependent on the host.
For example 'header_lookup1.c' was passing '-fno-ms-extensions' just to
thwart the host detection adding it into the compilation. By runnig CC1
directly we don't have to deal with such oddities.

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

10 years agoSwitch this test from needlessly running the clang driver to directly
Chandler Carruth [Wed, 15 Jan 2014 09:07:56 +0000 (09:07 +0000)]
Switch this test from needlessly running the clang driver to directly
test the CC1 layer.

This actually uncovered that the test semes to no longer be passing for
the reasons intended. =[ The name of the test would lead me to believe
that it should be testing the semantics of noreturn in the static
analyzer.... but there are in fact no -verify assertions about noreturn
that i can find. And the noreturn checker is no longer in 'alpha.core'.
It is in 'core.builtins'. The test *does* have one assertion for a null
dereference warning. This *also* isn't in 'alpha.core', but the driver
inserts a pile of other checker packages, including 'core' which has
this warning.

So I have switch the RUN line to actually do the minimal thing that this
test currently exercises, but someone who works on the static analyzer
should probably look at this and either nuke it or move it to actually
check the noreturn behavior.

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

10 years agoThis code block wasn't showing up in the html. Try this?
Nick Lewycky [Wed, 15 Jan 2014 08:33:00 +0000 (08:33 +0000)]
This code block wasn't showing up in the html. Try this?

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

10 years agoreplace LeakSanitizerIsTurnedOffForTheCurrentProcess with __lsan_is_turned_off, but...
Kostya Serebryany [Wed, 15 Jan 2014 07:59:37 +0000 (07:59 +0000)]
replace LeakSanitizerIsTurnedOffForTheCurrentProcess with __lsan_is_turned_off, but this time hide it under __has_feature(address_sanitizer); also include <sanitizer/lsan_interface.h>

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

10 years agoCodeGen: Simplify CodeGenFunction::EmitCaseStmt
Justin Bogner [Wed, 15 Jan 2014 07:30:30 +0000 (07:30 +0000)]
CodeGen: Simplify CodeGenFunction::EmitCaseStmt

Way back in r129652 we tried to avoid emitting an empty block at -O0
for switch cases that did nothing but break. This led to a poor
debugging experience as reported in PR9796, so we disabled the
optimization for -O0 but left it in for higher optimization levels in
r154420.

Since the whole point of this was to improve -O0, it's silly to keep
the complexity at all.

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

10 years agoFix the attribute enable_if example in the docs to be 100% real-world, instead of...
Nick Lewycky [Wed, 15 Jan 2014 06:34:12 +0000 (06:34 +0000)]
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

10 years agoFix cxx_variable_templates feature check and documentation
Alp Toker [Wed, 15 Jan 2014 04:11:24 +0000 (04:11 +0000)]
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

10 years agoFixed error recovery if sizeof is used without parenthesis
Serge Pavlov [Wed, 15 Jan 2014 01:53:39 +0000 (01:53 +0000)]
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

10 years agoRename QA_OVERRIDE_GCC3_OPTIONS to CCC_OVERRIDE_OPTIONS. <rdar://14578381>
Bob Wilson [Wed, 15 Jan 2014 01:41:52 +0000 (01:41 +0000)]
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

10 years agolit.cfg: Don't expand %ms_abi_triple to non-X86 triples
Hans Wennborg [Wed, 15 Jan 2014 01:08:42 +0000 (01:08 +0000)]
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

10 years agoObjectiveC. Improve on diagnostics per Jordan's feedback.
Fariborz Jahanian [Wed, 15 Jan 2014 00:59:25 +0000 (00:59 +0000)]
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

10 years agoTeach DeadStoresChecker about attribute objc_precise_lifetime.
Ted Kremenek [Wed, 15 Jan 2014 00:59:23 +0000 (00:59 +0000)]
Teach DeadStoresChecker about attribute objc_precise_lifetime.

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

10 years agoUse i686 as the ISA in %microsoft_abi_triple on ARM
Reid Kleckner [Tue, 14 Jan 2014 22:36:02 +0000 (22:36 +0000)]
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

10 years agoImprove comment.
Fariborz Jahanian [Tue, 14 Jan 2014 22:01:08 +0000 (22:01 +0000)]
Improve comment.

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

10 years agoObjectiveC. add comment.
Fariborz Jahanian [Tue, 14 Jan 2014 21:33:54 +0000 (21:33 +0000)]
ObjectiveC. add comment.

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

10 years agoDriver: clarify help string for "-###"
Tim Northover [Tue, 14 Jan 2014 20:49:19 +0000 (20:49 +0000)]
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

10 years agoObjectiveC. produce more expressive warning when
Fariborz Jahanian [Tue, 14 Jan 2014 20:35:13 +0000 (20:35 +0000)]
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

10 years agoRemove the -cxx-abi command-line flag.
Hans Wennborg [Tue, 14 Jan 2014 19:35:09 +0000 (19:35 +0000)]
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

10 years agoDarwin: add __sinpi (etc) and __exp10 libbuiltins
Tim Northover [Tue, 14 Jan 2014 19:26:03 +0000 (19:26 +0000)]
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

10 years agoClarify driver/frontend -fms-compatibility help text
Alp Toker [Tue, 14 Jan 2014 19:13:00 +0000 (19:13 +0000)]
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

10 years agoRemove unused function to fix clang -Werror build
Reid Kleckner [Tue, 14 Jan 2014 18:10:42 +0000 (18:10 +0000)]
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

10 years agoSimplifying the OpenCL image attribute. It does not need a semantic integer parameter...
Aaron Ballman [Tue, 14 Jan 2014 17:41:53 +0000 (17:41 +0000)]
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

10 years agoCFG: use Visit instead of VisitStmt to look through parens.
Jordan Rose [Tue, 14 Jan 2014 17:29:12 +0000 (17:29 +0000)]
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

10 years ago[analyzer] Use synthesized ASTs for property getters when available.
Jordan Rose [Tue, 14 Jan 2014 17:29:06 +0000 (17:29 +0000)]
[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

10 years agoUse a proper lvalue-to-rvalue conversion in Objective-C++ property accessors.
Jordan Rose [Tue, 14 Jan 2014 17:29:00 +0000 (17:29 +0000)]
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

10 years agoUpdate CodeGen to use DLL storage class for dllimport/dllexport
Nico Rieck [Tue, 14 Jan 2014 15:23:53 +0000 (15:23 +0000)]
Update CodeGen to use DLL storage class for dllimport/dllexport

With the old linkage types removed, set the linkage to external for both
dllimport and dllexport to reflect what's currently supported.

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

10 years agoClarify the LibTooling.rst a bit
Eli Bendersky [Tue, 14 Jan 2014 14:29:19 +0000 (14:29 +0000)]
Clarify the LibTooling.rst a bit

The ClangCheck tool has changed and no longer is exactly equivalent to the
code pasted in the doc.

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

10 years agoSwitch around the order of MSVCCompat and MicrosoftExt
Alp Toker [Tue, 14 Jan 2014 12:53:58 +0000 (12:53 +0000)]
Switch around the order of MSVCCompat and MicrosoftExt

Full language modes usually get listed before minor language extensions in
LangOpts, so that subsequent sub-modes can predicate on the major modes.

This also lends to a cleanup in CompilerInvocation to better indicate to the
reader that MSVCCompat is a superset of MicrosoftExt.

Cleanup only.

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

10 years agoRename language option MicrosoftMode to MSVCCompat
Alp Toker [Tue, 14 Jan 2014 12:51:41 +0000 (12:51 +0000)]
Rename language option MicrosoftMode to MSVCCompat

There's been long-standing confusion over the role of these two options. This
commit makes the necessary changes to differentiate them clearly, following up
from r198936.

MicrosoftExt (aka. fms-extensions):
 Enable largely unobjectionable Microsoft language extensions to ease
 portability. This mode, also supported by gcc, is used for building software
 like FreeBSD and Linux kernel extensions that share code with Windows drivers.

MSVCCompat (aka. -fms-compatibility, formerly MicrosoftMode):
 Turn on a special mode supporting 'heinous' extensions for drop-in
 compatibility with the Microsoft Visual C++ product. Standards-compilant C and
 C++ code isn't guaranteed to work in this mode. Implies MicrosoftExt.

Note that full -fms-compatibility mode is currently enabled by default on the
Windows target, which may need tuning to serve as a reasonable default.

See cfe-commits for the full discourse, thread 'r198497 - Move MS predefined
type_info out of InitializePredefinedMacros'

No change in behaviour.

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

10 years ago[OpenCL] Disallow casts between address spaces.
Joey Gouly [Tue, 14 Jan 2014 12:47:29 +0000 (12:47 +0000)]
[OpenCL] Disallow casts between address spaces.

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

10 years agoclang/test/Index/recursive-cxx-member-calls.cpp: Add "-target" rather than XFAILing.
NAKAMURA Takumi [Tue, 14 Jan 2014 11:07:55 +0000 (11:07 +0000)]
clang/test/Index/recursive-cxx-member-calls.cpp: Add "-target" rather than XFAILing.

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

10 years agoRemove trailing spaces
Sylvestre Ledru [Tue, 14 Jan 2014 10:25:26 +0000 (10:25 +0000)]
Remove trailing spaces

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

10 years agoclang-format: Fix bug introduced in r198871.
Daniel Jasper [Tue, 14 Jan 2014 09:53:07 +0000 (09:53 +0000)]
clang-format: Fix bug introduced in r198871.

We cannot simply change the start column to accomodate for the @ in an
ObjC string literal as that will make clang-format happily violate the
column limit.

Use a different workaround instead. However, a better long-term
solution might be to join the @ and the rest of the literal into a
single token.

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

10 years agoDisable this test for windows builders
David Majnemer [Tue, 14 Jan 2014 08:19:51 +0000 (08:19 +0000)]
Disable this test for windows builders

This test provides definitions of size_t which are at odds with
-fms-compatibility.  Disable this test on those builders (for now).

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

10 years agoSwitch to ssize_t from size_t to unbreak windows builders.
David Majnemer [Tue, 14 Jan 2014 08:18:49 +0000 (08:18 +0000)]
Switch to ssize_t from size_t to unbreak windows builders.

Builders that have -fms-compatibility on by default define size_t implicitly.
Tests that provide conflicting definitions would cause unintended failures.

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

10 years agoSema: Predefine size_t in MSVC Compatibility mode
David Majnemer [Tue, 14 Jan 2014 06:19:35 +0000 (06:19 +0000)]
Sema: Predefine size_t in MSVC Compatibility mode

MSVC defines size_t without any explicit declarations.  This change
allows us to be compatible with TUs that depend on this declaration
appearing from nowhere.

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

10 years agoThis test is passing on SPARC.
Jakob Stoklund Olesen [Tue, 14 Jan 2014 06:19:29 +0000 (06:19 +0000)]
This test is passing on SPARC.

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

10 years agoPuny 24-byte structs are returned by value on SPARC.
Jakob Stoklund Olesen [Tue, 14 Jan 2014 06:19:26 +0000 (06:19 +0000)]
Puny 24-byte structs are returned by value on SPARC.

Pad these structs up so they are sret-returned even on that
architecture.

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

10 years agoUpdate feature name "Generalized Attributes" to match the heading in the paper.
Richard Smith [Tue, 14 Jan 2014 02:52:38 +0000 (02:52 +0000)]
Update feature name "Generalized Attributes" to match the heading in the paper.

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

10 years agoRemove a temporary workaround that is no longer relevant.
Bob Wilson [Tue, 14 Jan 2014 01:56:31 +0000 (01:56 +0000)]
Remove a temporary workaround that is no longer relevant.

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

10 years agoRemoving some attribute magic related to the OpenCL keyword attributes. Instead of...
Aaron Ballman [Tue, 14 Jan 2014 01:29:54 +0000 (01:29 +0000)]
Removing some attribute magic related to the OpenCL keyword attributes. Instead of mapping them to their semantics as a custom part of the parser, they instead map declaratively through the rest of the attribute system.

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

10 years ago[ms-abi] Small Change to pack+alignment interaction.
Warren Hunt [Tue, 14 Jan 2014 00:54:36 +0000 (00:54 +0000)]
[ms-abi] Small Change to pack+alignment interaction.

This patch makes a small behavioral change to the interaction between
pack and alignment.  Specifically it makes __declspec(align()) on a
field change that field's alignment without respect to pack but the
alignment change to the record alignment as a whole still obeys pack.

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

10 years ago[ms-abi] Remove duplicated vbptr offset code
Reid Kleckner [Tue, 14 Jan 2014 00:50:39 +0000 (00:50 +0000)]
[ms-abi] Remove duplicated vbptr offset code

Record layout will tell us the offset of a shared vbptr inside a
non-virtual base.

No functionality change.

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

10 years agoConsumed analysis: add two new attributes which fine-tune the behavior of
DeLesley Hutchins [Tue, 14 Jan 2014 00:36:53 +0000 (00:36 +0000)]
Consumed analysis: add two new attributes which fine-tune the behavior of
consumable objects.  These are useful for implementing error codes that
must be checked.  Patch also includes some significant refactoring, which was
necesary to implement the new behavior.

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

10 years ago[ms-abi] Report VBPtrOffset correctly
Warren Hunt [Tue, 14 Jan 2014 00:31:30 +0000 (00:31 +0000)]
[ms-abi] Report VBPtrOffset correctly

Although VBPtrs were being placed correctly by the ms-abi layout engine,
their offsets were being improperly reported to the ASTRecordLayout
builder due to a bug.  This patch fixes that and fixes the test cases to
use the correct values.
y

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

10 years ago[ms-abi] Always generate complete constructors in the Microsoft C++ ABI
Reid Kleckner [Mon, 13 Jan 2014 22:57:31 +0000 (22:57 +0000)]
[ms-abi] Always generate complete constructors in the Microsoft C++ ABI

Fixes PR18435, where we generated a base ctor instead of a complete
ctor, and so failed to construct virtual bases when constructing the
complete object.

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

10 years ago[ms-abi] Reordering __declspec(align) pragma pack handling
Warren Hunt [Mon, 13 Jan 2014 22:25:55 +0000 (22:25 +0000)]
[ms-abi] Reordering __declspec(align) pragma pack handling

This patch moves the check for pragma pack until after the application
of __declspec align to before pragma pack.  This causes observable
changes in the use of tail padding for bases.  A test case is included.

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

10 years agoclang-cl: Ignore /fallback when not actually compiling (PR18456)
Hans Wennborg [Mon, 13 Jan 2014 22:24:42 +0000 (22:24 +0000)]
clang-cl: Ignore /fallback when not actually compiling (PR18456)

For example, don't fall back in /P (preprocess) mode.

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