Richard Smith [Thu, 7 Aug 2014 18:53:08 +0000 (18:53 +0000)]
[modules] When emitting an update record containing the body of a destructor,
also emit the updated 'operator delete' looked up for that destructor. Switch
from UpdateDecl to an actual update record when this happens due to implicitly
defining a special member function and unify this code path and the one for
instantiating a function definition.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215132
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 7 Aug 2014 18:45:21 +0000 (18:45 +0000)]
test/Modules: Use FileCheck's -allow-empty instead of "count 0"
Piping stderr into "count 0" in tests doesn't work - things like guard
malloc write to stderr and mess up the count. This comes up all the
time, so I've added a feature to FileCheck to fix it this time.
Fixes test failures caused by r215046 under guard malloc.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215129
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Klimek [Thu, 7 Aug 2014 18:44:19 +0000 (18:44 +0000)]
Mark successors as reachable/unreachable instead of changing the CFG.
As suggested by Ted, this makes a few warnings less aggressive.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215128
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Klimek [Thu, 7 Aug 2014 17:02:21 +0000 (17:02 +0000)]
Fix CFG for temporary dtors when the branch taken is known.
Use the parent context when visiting temporaries when we do not insert a
temporary dtor decision branch.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215120
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Klimek [Thu, 7 Aug 2014 16:05:51 +0000 (16:05 +0000)]
Model temporary destructors from logical operators with known values.
If the truth value of a LHS is known, we can build the knowledge whether
a temporary destructor is executed or not into the CFG. This is needed
by the return type analysis.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215118
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Klimek [Thu, 7 Aug 2014 14:25:43 +0000 (14:25 +0000)]
Only have one path in the CFG for ternaries if the condition is known.
The return type analysis requires that the CFG is simplified when the
truth values of branches are statically known at analysis time.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215114
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 7 Aug 2014 14:23:03 +0000 (14:23 +0000)]
Update for llvm API change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215113
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Klimek [Thu, 7 Aug 2014 10:42:17 +0000 (10:42 +0000)]
Re-applying r214962.
Changes to the original patch:
- model the CFG for temporary destructors in conditional operators so that
the destructors of the true and false branch are always exclusive. This
is necessary because we must not have impossible paths for the path
based analysis to work.
- add multiple regression tests with ternary operators
Original description:
Fix modelling of non-lifetime-extended temporary destructors in the
analyzer.
Changes to the CFG:
When creating the CFG for temporary destructors, we create a structure
that mirrors the branch structure of the conditionally executed
temporary constructors in a full expression.
The branches we create use a CXXBindTemporaryExpr as terminator which
corresponds to the temporary constructor which must have been executed
to enter the destruction branch.
2. Changes to the Analyzer:
When we visit a CXXBindTemporaryExpr we mark the CXXBindTemporaryExpr as
executed in the state; when we reach a branch that contains the
corresponding CXXBindTemporaryExpr as terminator, we branch out
depending on whether the corresponding CXXBindTemporaryExpr was marked
as executed.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215096
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 7 Aug 2014 03:58:32 +0000 (03:58 +0000)]
Driver: Add tests for -fprofile-arcs and -fno-profile-arcs
I tried to be lazy and get away with no test in r215051, but Chad
caught me :)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215053
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 7 Aug 2014 03:14:34 +0000 (03:14 +0000)]
Driver: Add -fno-profile-arcs to go with -fprofile-arcs
This is a trivial gcc-compatible change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215051
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Trieu [Thu, 7 Aug 2014 02:09:05 +0000 (02:09 +0000)]
Update the context location of the condition of a conditional operator to the
question mark instead of the context of the conditional operator. The
condition does not need the context of the conditional operator at all.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215048
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 7 Aug 2014 01:00:42 +0000 (01:00 +0000)]
Make FullExprArg trivially copyable by removing the copy ctor
The default copy ctor is good. This avoids using inalloca for a bunch
of Sema methods when self-hosting.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215047
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Thu, 7 Aug 2014 00:24:21 +0000 (00:24 +0000)]
Use -Rblah, not -Wblah, to control remark diagnostics. This was always the
intent when we added remark support, but was never implemented in the general
case, because the first -R flags didn't need it. (-Rpass= had special handling
to accomodate its argument.)
-Rno-foo, -Reverything, and -Rno-everything can be used to turn off a remark,
or to turn on or off all remarks. Per discussion on cfe-commits, -Weverything
does not affect remarks, and -Reverything does not affect warnings or errors.
The only "real" -R flag we have right now is -Rmodule-build; that flag is
effectively renamed from -Wmodule-build to -Rmodule-build by this change.
-Wpass and -Wno-pass (and their friends) are also renamed to -Rpass and
-Rno-pass by this change; it's not completely clear whether we intended to have
a -Rpass (with no =pattern), but that is unchanged by this commit, other than
the flag name. The default pattern is effectively one which matches no passes.
In future, we may want to make the default pattern be .*, so that -Reverything
works for -Rpass properly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215046
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 7 Aug 2014 00:05:00 +0000 (00:05 +0000)]
Add back the leading space when printing commands with -###
This was an unintentional behavior change from r214924.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215044
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 6 Aug 2014 23:40:31 +0000 (23:40 +0000)]
Objective-C ARC. More code for Objective-C's
new APIs for literals. nfc. wip. rdar://
17554063
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215043
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Wed, 6 Aug 2014 22:01:54 +0000 (22:01 +0000)]
Revert "Fix modelling of non-lifetime-extended temporary destructors in the analyzer."
This reverts commit r214962 because after the change the
following code doesn't compile with -Wreturn-type -Werror.
#include <cstdlib>
class NoReturn {
public:
~NoReturn() __attribute__((noreturn)) { exit(1); }
};
int check() {
true ? NoReturn() : NoReturn();
}
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214998
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 6 Aug 2014 20:56:21 +0000 (20:56 +0000)]
Objective-C ARC. Adding declarations for Objective-C's
new APIs for literals. nfc. wip. rdar://
17554063
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214993
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 6 Aug 2014 18:13:46 +0000 (18:13 +0000)]
Objective-C ARC. First patch toward generating new APIs
for Objective-C's array and dictionary literals.
rdar://
17554063. This is wip.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214983
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 6 Aug 2014 16:53:13 +0000 (16:53 +0000)]
FormatTokenLexer: Avoid non-static member initializer.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214976
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Klimek [Wed, 6 Aug 2014 14:21:59 +0000 (14:21 +0000)]
Remove unnecessary semicolon.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214970
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Jasper [Wed, 6 Aug 2014 14:15:41 +0000 (14:15 +0000)]
clang-format: Correct SBPO_Always-behavior after function-like keywords
Before:
auto f (int x) -> decltype(x) { return sizeof(x); }
int g () noexcept(someCall ());
static_assert(sizeof(char) == 1, "Your compiler is broken");
After:
auto f (int x) -> decltype (x) { return sizeof (x); }
int g () noexcept (someCall ());
static_assert (sizeof (char) == 1, "Your compiler is broken");
This fixes llvm.org/PR20559.
Patch by Roman Kashitsyn, thank you!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214969
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Liew [Wed, 6 Aug 2014 13:49:33 +0000 (13:49 +0000)]
Fix sphinx warning.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214967
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Jasper [Wed, 6 Aug 2014 13:40:26 +0000 (13:40 +0000)]
clang-format: Add special comments to disable formatting.
With this patch:
int ThisWillBeFormatted;
// clang-format off
int ThisWontBeFormatted;
// clang-format on
int Formatted;
This is for regions where a significantly nicer code layout can be found
knowing the content of the code.
This fixes llvm.org/PR20463.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214966
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Jasper [Wed, 6 Aug 2014 13:14:58 +0000 (13:14 +0000)]
Manuel Klimek [Wed, 6 Aug 2014 12:45:51 +0000 (12:45 +0000)]
Fix modelling of non-lifetime-extended temporary destructors in the analyzer.
1. Changes to the CFG:
When creating the CFG for temporary destructors, we create a structure
that mirrors the branch structure of the conditionally executed
temporary constructors in a full expression.
The branches we create use a CXXBindTemporaryExpr as terminator which
corresponds to the temporary constructor which must have been executed
to enter the destruction branch.
2. Changes to the Analyzer:
When we visit a CXXBindTemporaryExpr we mark the CXXBindTemporaryExpr as
executed in the state; when we reach a branch that contains the
corresponding CXXBindTemporaryExpr as terminator, we branch out
depending on whether the corresponding CXXBindTemporaryExpr was marked
as executed.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214962
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Wed, 6 Aug 2014 06:04:48 +0000 (06:04 +0000)]
[Driver] Add missed include header.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214950
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Wed, 6 Aug 2014 05:44:47 +0000 (05:44 +0000)]
[Driver] Move information about toolchain specific include directories
from the common driver code to the corresponding `MultilibSet` declarations.
Now the `MultilibSet` can hold an optional callback function which is
responsible to return a set of include directories specific for the toolchain.
That allows to remove MIPS toolchain specific directories from
`Linux::AddClangSystemIncludeArgs` method and simplify adding new directories
in the future.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214949
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 6 Aug 2014 03:12:47 +0000 (03:12 +0000)]
MS ABI: Mangle lambdas which are given the same mangling number
It is possible for lambdas to get the same mangling number because they
may exist in different mangling contexts. To handle this correctly,
mangle the context into the name as well.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214947
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Tue, 5 Aug 2014 23:43:21 +0000 (23:43 +0000)]
Remove trailing whitespaces
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214935
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 5 Aug 2014 22:43:45 +0000 (22:43 +0000)]
MS ABI: Mangle empty type parameter packs compatibly
The MS mangling scheme apparently has separate manglings for type and
non-type parameter packs when they are empty. Match template arguments
with parameters during mangling; check the parameter to see if it was
destined to hold type-ish things or nontype-ish things.
Differential Revision: http://reviews.llvm.org/D4792
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214932
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 5 Aug 2014 22:39:07 +0000 (22:39 +0000)]
Fix Driver tests that I broke on Windows in r214924
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214931
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Tue, 5 Aug 2014 22:27:50 +0000 (22:27 +0000)]
Expose the name mangling C API to Python bindings.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214930
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 5 Aug 2014 20:49:12 +0000 (20:49 +0000)]
Make crash diagnostics on Windows the tiniest bit more useful
This escapes any backslashes in the executable path and fixes an issue
with a trailing quote when the main file name had to be quoted during
printing.
It's impossible to test this without putting backslashes or quotes into
the executable path, so I didn't add automated tests.
The crash diagnostics are still only useful if you're using bash on
Windows, though. This should probably be writing a batch file instead.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214924
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Tue, 5 Aug 2014 18:37:48 +0000 (18:37 +0000)]
Introduce f[no-]max-unknown-pointer-align=[number] option
to instruct the code generator to not enforce a higher alignment
than the given number (of bytes) when accessing memory via an opaque
pointer or reference. Patch reviewed by John McCall (with post-commit
review pending). rdar://
16254558
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214911
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Yartsev [Tue, 5 Aug 2014 18:26:05 +0000 (18:26 +0000)]
[Analyzer] fix for PR19102
Newly-created unconsumed instance is now assumed escaped if an invoked constructor has an argument of a pointer-to-record type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214909
91177308-0d34-0410-b5e6-
96231b3b80d8
Arthur Marble [Tue, 5 Aug 2014 18:21:20 +0000 (18:21 +0000)]
Added f and m flags to be ignored. These will not display a warning. The revision
for this patch is here: http://reviews.llvm.org/D4570. This will help with the
rebuild of Debian with clang. Here is a link to the errors that Debian is
experiencing: http://clang.debian.net/status.php?version=3.4.2&key=UNKNOWN_ARG
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214907
91177308-0d34-0410-b5e6-
96231b3b80d8
Arthur Marble [Tue, 5 Aug 2014 18:13:48 +0000 (18:13 +0000)]
Added flags that should be ignored for compatibility. These flags will display
a warning. Revision for this patch is here: http://reviews.llvm.org/D4565. This
patch will help with the rebuild of Debian with clang and many other projects
that wish to use clang. Here is a link to the errors that Debian is experiencing:
http://clang.debian.net/status.php?version=3.4.2&key=UNKNOWN_ARG
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214906
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 5 Aug 2014 17:58:54 +0000 (17:58 +0000)]
[PR19983] SBPO_Always not covering all the cases.
Patch by "Roman Kashitsyn" <romankashicin@gmail.com>.
Phabricator revision: http://reviews.llvm.org/D4788
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214904
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Tue, 5 Aug 2014 17:28:23 +0000 (17:28 +0000)]
[AVX512] Add intrinsic for valignd/q
Note that similar to palingr, we could further optimize these to emit
shufflevector when the shift count is <=64. This however does not
change the overall design that unlike palignr we would still need the LLVM
intrinsic corresponding to this intruction to handle the >64 cases. (palignr
uses the psrldq intrinsic in this case.)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214891
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 5 Aug 2014 17:19:14 +0000 (17:19 +0000)]
ReleaseNotes: try to fix links
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214883
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 5 Aug 2014 17:15:00 +0000 (17:15 +0000)]
ReleaseNotes: mention basic debug info and ASan support in the Windows blurb
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214882
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 5 Aug 2014 15:54:43 +0000 (15:54 +0000)]
ASTMatchersTests/matchesConditionallyWithCuda: Add -fno-ms-extensions, and get rid of initializer list.
I am not sure whether -xcuda might imply -fno-ms-extensions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214876
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 5 Aug 2014 15:01:31 +0000 (15:01 +0000)]
ASTMatchers.h: Fix an annotation. [-Wdocumentation-html]
Angle brackets, aka < >, should be escaped.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214870
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 5 Aug 2014 15:01:12 +0000 (15:01 +0000)]
[CMake] clangCodeGen: Update libdeps to add clangLex for PPChainedCallbacks.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214869
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Jasper [Tue, 5 Aug 2014 12:16:31 +0000 (12:16 +0000)]
clang-format: Add option to always break after a function's return type.
This is required for GNU coding style, among others.
Also update the configuration documentation.
Modified from an original patch by Jarkko Hietaniemi, thank you!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214858
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Jasper [Tue, 5 Aug 2014 12:06:20 +0000 (12:06 +0000)]
clang-format: Break before 'else' in Stroustrup style.
Seems to be the desired thing to do according to:
http://www.stroustrup.com/Programming/PPP-style-rev3.pdf
Patch by Jarkko Hietaniemi, thank you!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214857
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 5 Aug 2014 11:48:21 +0000 (11:48 +0000)]
Updating the documentation comment to list another parameter. No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214856
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 5 Aug 2014 11:07:26 +0000 (11:07 +0000)]
MachO: set sizeof result type to what embedded headers expect.
Embedded systems seem to have inherited Darwin's choise of "unsigned long" for
size_t (via a bunch of headers), so we should respect that.
rdar://problem/
17872787
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214854
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Klimek [Tue, 5 Aug 2014 09:45:53 +0000 (09:45 +0000)]
Adds AST matchers for matching CUDA declarations.
Patch by Jacques Pienaar.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214852
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 5 Aug 2014 06:42:40 +0000 (06:42 +0000)]
MS ABI: Make the alias template mangling more correct
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214847
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 5 Aug 2014 00:21:23 +0000 (00:21 +0000)]
ReleaseNotes: add blurb about Windows support
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214830
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 5 Aug 2014 00:01:15 +0000 (00:01 +0000)]
CodeGenObjCXX: Add a test for r214699
I forgot to add this with the changes for r214699.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214829
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 5 Aug 2014 00:01:13 +0000 (00:01 +0000)]
MS ABI: Aligned tentative definitions don't have CommonLinkage
int __declspec(align(16)) foo; is a tentative definition but the storage
for that variable should not have CommonLinkage.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214828
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Schmidt [Mon, 4 Aug 2014 23:21:26 +0000 (23:21 +0000)]
[PPC64LE] Fix wrong IR for vec_sld and vec_vsldoi
My original LE implementation of the vsldoi instruction, with its
altivec.h interfaces vec_sld and vec_vsldoi, produces incorrect
shufflevector operations in the LLVM IR. Correct code is generated
because the back end handles the incorrect shufflevector in a
consistent manner.
This patch and a companion patch for LLVM correct this problem by
removing the fixup from altivec.h and the corresponding fixup from the
PowerPC back end. Several test cases are also modified to reflect the
now-correct LLVM IR.
The vec_sums and vec_vsumsws interfaces in altivec.h are also fixed,
because they used vec_perm calls intended to be recognized as vsldoi
instructions. These vec_perm calls are now replaced with code that
more clearly shows the intent of the transformation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214801
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 4 Aug 2014 22:48:46 +0000 (22:48 +0000)]
ThreadSafety.cpp: Prune bogus \param(s). [-Wdocumentation]
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214796
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 4 Aug 2014 22:48:36 +0000 (22:48 +0000)]
ThreadSafetyAnalysis: Fix annotations in class members. [-Wdocumentation]
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214795
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 4 Aug 2014 22:48:19 +0000 (22:48 +0000)]
clang/test/Sema/struct-packed-align.c: Add the case in MS mode that alignment doesn't affect packing.
Also, revert a couple of suppressions.
r214298, "Suppress clang/test/Sema/struct-packed-align.c for targeting LLP64."
r214301, "Suppress clang/test/Sema/struct-packed-align.c also on msvc for investigating."
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214794
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 4 Aug 2014 22:48:09 +0000 (22:48 +0000)]
Trailing linefeed.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214793
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 4 Aug 2014 22:35:30 +0000 (22:35 +0000)]
Remove separator parameter from static local naming code
It was always set to ".", which was duplicated in a few places.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214792
91177308-0d34-0410-b5e6-
96231b3b80d8
DeLesley Hutchins [Mon, 4 Aug 2014 22:13:06 +0000 (22:13 +0000)]
Thread Safety Analysis: add a -Wthread-safety-negative flag that warns whenever
a mutex is acquired, but corresponding mutex is not provably not-held. This
is based on the earlier negative requirements patch.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214789
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 4 Aug 2014 21:33:42 +0000 (21:33 +0000)]
Update for LLVM API change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214786
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Mon, 4 Aug 2014 21:07:58 +0000 (21:07 +0000)]
UsersManual: update clang-cl options
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214777
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Mon, 4 Aug 2014 20:54:39 +0000 (20:54 +0000)]
Don't drop dllimport from qualified friend redeclarations (PR20512)
This matches MSVC's logic, which seems to be that when the friend
declaration is qualified, it cannot be a declaration of a new symbol
and so the dll linkage doesn't change.
Differential Revision: http://reviews.llvm.org/D4764
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214774
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 4 Aug 2014 20:49:47 +0000 (20:49 +0000)]
Nit picky const-correctness with auto. No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214773
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 4 Aug 2014 20:28:35 +0000 (20:28 +0000)]
A static_assert declaration cannot be a template; adding the diagnostic for this instead of silently accepting and producing possibly-unexpected behavior.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214770
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Mon, 4 Aug 2014 19:04:38 +0000 (19:04 +0000)]
Revert r214757 (Same fix as r214758)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214759
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 4 Aug 2014 18:59:39 +0000 (18:59 +0000)]
Add CoverageMappingGen.cpp (introduced in r214752) to CMakeLists.txt
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214758
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Mon, 4 Aug 2014 18:55:53 +0000 (18:55 +0000)]
add lib/CodeGen/CoverageMappingGen.cpp to CMake
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214757
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Mon, 4 Aug 2014 18:41:51 +0000 (18:41 +0000)]
Add coverage mapping generation.
This patch adds the '-fcoverage-mapping' option which
allows clang to generate the coverage mapping information
that can be used to provide code coverage analysis using
the execution counts obtained from the instrumentation
based profiling (-fprofile-instr-generate).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214752
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 4 Aug 2014 17:49:55 +0000 (17:49 +0000)]
Removing some extraneous spaces; no functional changes intended.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214739
91177308-0d34-0410-b5e6-
96231b3b80d8
Olivier Goffart [Mon, 4 Aug 2014 17:28:11 +0000 (17:28 +0000)]
Fix crash when accessing a property of an invalid interface
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214735
91177308-0d34-0410-b5e6-
96231b3b80d8
Olivier Goffart [Mon, 4 Aug 2014 17:28:05 +0000 (17:28 +0000)]
Fix crash when assiging to a property with an invalid type
This is a regression from clang 3.4
Set the result to ExprError and returns true, rather than simply
returns false because errors have been reported already and returning
false show a confusing error
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214734
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 4 Aug 2014 17:03:51 +0000 (17:03 +0000)]
Diagnose GNU-style attributes preceding virt-specifiers, but only when the attribute is known to GCC. Clang accepts attributes in this position, but
GCC does not, so this is a GCC-compat warning. If the attribute is not known to GCC, then the diagnostic is suppressed.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214730
91177308-0d34-0410-b5e6-
96231b3b80d8
DeLesley Hutchins [Mon, 4 Aug 2014 16:10:59 +0000 (16:10 +0000)]
Thread safety analysis: Add support for negative requirements, which are
capability expressions of the form !expr, and denote a capability that must
not be held.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214725
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 4 Aug 2014 15:26:33 +0000 (15:26 +0000)]
Highlight the offending function parameter when the format argument refers to an invalid function parameter type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214723
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 4 Aug 2014 15:17:29 +0000 (15:17 +0000)]
Highlight the offending function parameter when the format_arg argument refers to an invalid function parameter type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214722
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Jasper [Mon, 4 Aug 2014 14:51:02 +0000 (14:51 +0000)]
clang-format: Understand parameter pack initialization.
Before:
Constructor(A... a) : a_(X<A> { std::forward<A>(a) }...) {}
After:
Constructor(A... a) : a_(X<A>{std::forward<A>(a)}...) {}
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214720
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Mon, 4 Aug 2014 12:57:52 +0000 (12:57 +0000)]
[Driver][Mips] Construct dynamic linker path by string concatination.
That reduces a number of `if` operators and prevent a combinatorics explosion
if/when more dynamic linker path variants added.
No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214712
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Chupin [Mon, 4 Aug 2014 12:39:43 +0000 (12:39 +0000)]
[x32] Add __int128 support
Summary:
Adding __int128 support explicitly for x86_64 because currently it's on
only when pointer size >= 64 which is not the case for x32.
Test Plan: One of the tests using __int128 is updated
Reviewers: atanasyan, chandlerc
Subscribers: cfe-commits, rob.khasanov, zinovy.nis, dschuff
Differential Revision: http://reviews.llvm.org/D4755
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214710
91177308-0d34-0410-b5e6-
96231b3b80d8
Keith Walker [Mon, 4 Aug 2014 10:13:09 +0000 (10:13 +0000)]
Fix tests Clang::Sema/statements.c and Clang::SemaTemplate/instantiate-expr-1.cpp when AArch64 is the default target.
Commit r213935 added additional validation of register constants/size for AArch64 and because these tests which contain Intel assembler the new validation caused these tests to fail when the default target is changed to an AArch64 target.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214706
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Mon, 4 Aug 2014 06:16:50 +0000 (06:16 +0000)]
AST: Fix the mangling for unqualified-blocks
CXXNameMangler::mangleUnqualifiedBlock believed that
MangleContext::getBlockId returned something that used Itanium-style
discriminator numbers.
Discriminator numbers start their numberign from 1 and the first
mangling that actually gets any sort of number mangled in is the second
discriminator.
However, Block IDs start from zero. The logic for omitting the mangling
number did a ' > 1' instead of a ' > 0' comparison; this could
potentially cause mangling conflicts.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214699
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Mon, 4 Aug 2014 05:11:01 +0000 (05:11 +0000)]
AST: Propagate 'AlignIsRequired' though many levels of typedefs
A typedef of a typedef should have AlignIsRequired if *either* typedef
has an AlignAttr attached to it.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214698
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Mon, 4 Aug 2014 00:40:48 +0000 (00:40 +0000)]
PR11778: Fix the rejects-valid half of this bug. We still produce the same
poorly-worded warning for a case value that is not a possible value of the
switched-on expression.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214678
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Sun, 3 Aug 2014 23:41:04 +0000 (23:41 +0000)]
Don't destroy MacroInfos if we find the macro definition is invalid; it'll get
destroyed on shutdown regardless. Fixes a double-delete.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214675
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Sun, 3 Aug 2014 21:46:33 +0000 (21:46 +0000)]
Driver: Simplify a use of the path API
It's a bit more obvious what's going on if we use path::filename
rather than decrementing an iterator here.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214668
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Sun, 3 Aug 2014 16:11:05 +0000 (16:11 +0000)]
[Mips] Add the `mips64-linux-gnu` target to the test case to check `in128`
type handling.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214662
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sun, 3 Aug 2014 01:11:44 +0000 (01:11 +0000)]
Tools.cpp: Avoid std::to_string() on -fbuild-session-timestamp to appease mingw32 builder.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214656
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Sat, 2 Aug 2014 15:07:21 +0000 (15:07 +0000)]
vcfsx and dss instructions require immediates, variables are not valid.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214635
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 2 Aug 2014 07:24:04 +0000 (07:24 +0000)]
libclang/Makefile: Update LINK_COMPONENTS take #3. Sorry for the noise.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214620
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 2 Aug 2014 07:16:14 +0000 (07:16 +0000)]
libclang/Makefile: Update LINK_COMPONENTS take #2.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214619
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 2 Aug 2014 07:05:38 +0000 (07:05 +0000)]
libclang/Makefile: Restore some components in LINK_COMPONENTS. Clang's Makefile(s) are not transitive on clang libs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214617
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 2 Aug 2014 06:58:39 +0000 (06:58 +0000)]
libclang: Update LINK_COMPONENTS.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214616
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Sat, 2 Aug 2014 00:50:16 +0000 (00:50 +0000)]
In the case of mangling collisions, make an attempt to note both definitions
involved.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214606
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Sat, 2 Aug 2014 00:35:50 +0000 (00:35 +0000)]
[ASan] Use metadata to pass source-level information from Clang to ASan.
Instead of creating global variables for source locations and global names,
just create metadata nodes and strings. They will be transformed into actual
globals in the instrumentation pass (if necessary). This approach is more
flexible:
1) we don't have to ensure that our custom globals survive all the optimizations
2) if globals are discarded for some reason, we will simply ignore metadata for them
and won't have to erase corresponding globals
3) metadata for source locations can be reused for other purposes: e.g. we may
attach source location metadata to alloca instructions and provide better descriptions
for stack variables in ASan error reports.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214604
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Langmuir [Fri, 1 Aug 2014 22:58:19 +0000 (22:58 +0000)]
Fix test from r214577 for other timezones
Unsurprisingly, changing a file modification time to a specific
date/time doesn't give the same epoch time everywhere. Just make the
file move into the past and look at only the first few digits of the
epoch time.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214589
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 1 Aug 2014 22:50:16 +0000 (22:50 +0000)]
InstrProf: Update for LLVM API change
We've added support for a multiple functions with the same name in
LLVM's profile data, so the lookup returning the function hash it
found doesn't make sense anymore. Update to pass in the hash we
expect.
This also adds a test that the version 1 format is still readable,
since the new API is expected to handle that.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214586
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Fri, 1 Aug 2014 22:42:16 +0000 (22:42 +0000)]
Notional simplification: defer emitting deferred inline methods until we finish
emitting everything, rather than potentially doing this reentrantly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214582
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Fri, 1 Aug 2014 22:17:28 +0000 (22:17 +0000)]
Actually fix problem with modules buildbot this time.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214579
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Langmuir [Fri, 1 Aug 2014 22:12:21 +0000 (22:12 +0000)]
Add -fbuild-session-file as an alternative to -fbuild-session-timestamp
Build systems tend to traffic in files and modification times, so having
them touch a file at the beginning of the build can be easier than
having them update the compile command they use every time they build.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214577
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Fri, 1 Aug 2014 21:35:28 +0000 (21:35 +0000)]
[Sanitizer] Introduce SanitizerMetadata class.
It is responsible for generating metadata consumed by sanitizer instrumentation
passes in the backend. Move several methods from CodeGenModule to SanitizerMetadata.
For now the class is stateless, but soon it won't be the case.
Instead of creating globals providing source-level information to ASan, we will create
metadata nodes/strings which will be turned into actual global variables in the
backend (if needed).
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214564
91177308-0d34-0410-b5e6-
96231b3b80d8