Commit Graph

51203 Commits

Author SHA1 Message Date
Alexander Kornienko a74979d66f Added an inserter for ArrayRef<SourceRange>.
Summary:
Added an inserter for ArrayRef<SourceRange>, as it is already needed in at least
two places (static analyzer and clang-tidy).

Reviewers: jordan_rose

CC: cfe-commits, gribozavr

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

llvm-svn: 203117
2014-03-06 13:23:30 +00:00
Alexey Bataev d4dbdf5438 [OPENMP] Updated comments and _OPENMP macro value for OpenMP 4.0 (for 'omp simd' support)
llvm-svn: 203114
2014-03-06 12:27:56 +00:00
Alexey Bataev 178d599143 [OPENMP] Missed test for 'simd private'
llvm-svn: 203108
2014-03-06 11:48:22 +00:00
Ted Kremenek 6999d02587 [-Wunreachable-code] Refine treating all branches of 'switch' as reachable, which includes those with all cases covered but with no 'default:'.
llvm-svn: 203094
2014-03-06 08:09:00 +00:00
NAKAMURA Takumi e1879a90f8 CodeGenObjC/instr-profile.m: Add -target darwin to appease bots.
This expected;
  ; Function Attrs: uwtable
  define internal void @"\01+[A foreach:]"(i8* %self, i8* %_cmd, %0* %array) #0 {

But the Name is mangled on other hosts; (x86_64-unknown-unknown)
  ; Function Attrs: nounwind uwtable
  define internal void @_c_A__foreach_(i8* %self, i8* %_cmd, %1* %array) #0 {

llvm-svn: 203092
2014-03-06 07:29:30 +00:00
Ted Kremenek ec2dc73e86 [-Wunreachable-code] don't warn about dead 'return <string literal>' dominated by a 'noreturn' call, where literal becomes an std::string.
I have mixed feelings about this one.  It's used all over the codebase,
and is analogous to the current heuristic for ordinary C string literals.

This requires some ad hoc pattern matching of the AST.  While the
test case mirrors what we see std::string in libc++, it's not really
testing the libc++ headers.

llvm-svn: 203091
2014-03-06 06:50:46 +00:00
Bob Wilson b3fd21a42f Attempt to fix buildbots by dropping the -LABEL from some FileCheck patterns.
llvm-svn: 203090
2014-03-06 06:49:37 +00:00
Alexey Bataev 568a833f68 [OPENMP] Clause 'num_threads'
llvm-svn: 203087
2014-03-06 06:15:19 +00:00
Bob Wilson 5ec8fe19cf PGO: add instrumentation for Objective-C methods.
llvm-svn: 203085
2014-03-06 06:10:02 +00:00
Alexey Bataev 186b28a8cf [OPENMP] Added option -fopenmp=libiomp5|libgomp
llvm-svn: 203081
2014-03-06 05:43:53 +00:00
Ted Kremenek 90097491ed Remove 'break' dominated by 'return' in 'EmitBuiltinExpr'.
llvm-svn: 203080
2014-03-06 05:37:38 +00:00
Ted Kremenek 7bceca1fcf Remove 2 dead 'break' statements. The 'break' usage in this switch is inconsistent, making this hard to see.
llvm-svn: 203079
2014-03-06 05:37:35 +00:00
Ted Kremenek ad71fc6104 Remove dead return in Parser::MayBeDesignationStart().
llvm-svn: 203078
2014-03-06 05:37:32 +00:00
Ted Kremenek d8c64f573d Remove dead return in BugReporter (found via -Wunreachable-code).
llvm-svn: 203077
2014-03-06 05:37:28 +00:00
Bob Wilson da1ebedeea PGO: Use the main file name to help distinguish functions with local linkage.
In addition, for all functions, use the name from the llvm::Function to
identify the function in the profile data. Compute that "function name",
including the file name for local functions, once when assigning the PGO
counters and store it in the CodeGenPGO class.

Move the code to add InlineHint and Cold attributes out of StartFunction(),
because the "function name" string isn't available at that point.

llvm-svn: 203075
2014-03-06 04:55:41 +00:00
Bob Wilson d0b7824ece PGO: Rename variables to avoid referring to the "MangledName" of a function.
For C++ functions, we will continue to use the mangled name to identify
functions in the PGO profile data, but this name is confusing for things like
Objective-C methods. For functions with local linkage, we're also going to
include the file name to help distinguish those functions, so this changes to
use more generic variable names.

No functional changes.

llvm-svn: 203074
2014-03-06 04:55:37 +00:00
Bob Wilson 68f475faf7 Refactor PGO code in preparation for handling non-C/C++ code.
Move the PGO.assignRegionCounters() call out of StartFunction, because that
function is called from many places where it does not make sense to do PGO
instrumentation (e.g., compiler-generated helper functions). Change several
functions to take a StringRef argument for the unique name associated with
a function, so that the name can be set differently for things like Objective-C
methods and block literals.

llvm-svn: 203073
2014-03-06 04:55:35 +00:00
Bob Wilson 749ebc7f33 PGO: don't emit counter increment if no counters have been allocated.
I hit this while debugging another issue where my sources were in an
inconsistent state, so I don't have a testcase. Regardless, this check is
simpler and more direct than checking if the option is enabled.

llvm-svn: 203072
2014-03-06 04:55:28 +00:00
Chandler Carruth 00fa3f7bf1 [Layering] Update include of Linker.h to match its move to a Linker
subdirectory in LLVM r203065.

llvm-svn: 203067
2014-03-06 03:46:44 +00:00
Richard Smith 9d100866f2 Fix crash if a submodule overrides one of its own macros, and add support for
submodule macro overriding within the same top-level module (necessary for the
testcase to be remotely reasonable). Incidentally reduces the number of libc++
testsuite regressions with modules enabled from 7 to 6.

llvm-svn: 203063
2014-03-06 03:16:27 +00:00
Richard Trieu 1a1e818b13 Fix test from r203061
llvm-svn: 203062
2014-03-06 02:28:22 +00:00
Richard Trieu fe771c071a Suppress diagnostics during name lookup for absolute value type.
llvm-svn: 203061
2014-03-06 02:25:04 +00:00
Rafael Espindola d0bb55a1d4 Use private linkage for remaining GlobalVariables with private names.
This patch changes the remaining GlobalVariables using "\01L" and
"\01l" prefixes to use private linkage. What is strange about them is
that they currently use WeakAnyLinkage. There is no comment stating
why and that is really odd since the symbols are completely hidden, so
it doesn't make sense for them to be weak.

Clang revisions like r63329, r63408, r63770, r65761 set the linkage to
weak, but don't say why. I suspect they were just copying llvm-gcc.

In llvm-gcc I found r58599 and r56322 that set DECL_WEAK, but they
were just syncing from the apple gcc. I am not exactly sure what that
means, since the last commit to
svn://gcc.gnu.org/svn/gcc/branches/apple was in 2006, 2 years earlier.

In summary, I have no idea why weak linkage was being used :-(

To quote John McCall, "Let’s try without it and see" :-)

llvm-svn: 203059
2014-03-06 01:57:34 +00:00
Raul E. Silvera 57a9850961 Update clang test to cover for new treatment of intrinsics as readnone.
llvm-svn: 203056
2014-03-06 01:37:10 +00:00
Rafael Espindola 5d117f3742 Construct GlobalValues with the correct linkage instead of using setLinkage.
llvm-svn: 203052
2014-03-06 01:10:46 +00:00
Ted Kremenek 7549f0f9bf [-Wunreachable-code] Handle idiomatic do...while() with an uninteresting condition.
Sometimes do..while() is used to create a scope that can be left early.
In such cases, the unreachable 'while()' test is not usually interesting
unless it actually does something that is observable.

llvm-svn: 203051
2014-03-06 01:09:45 +00:00
Richard Trieu 532018f7a5 Change the color of comment nodes from bright yellow to blue. Bright yellow on
a white background is difficult to read.  Also include a chart showing which
colors are used by which elements in the AST dump.

llvm-svn: 203050
2014-03-06 01:09:03 +00:00
Chandler Carruth 0654bacac3 [Layering] Update include of DebugInfo.h which moved to the IR library
in LLVM r203046.

llvm-svn: 203047
2014-03-06 00:46:56 +00:00
Fariborz Jahanian 15dde89357 Objective-C properties. Fixes a crash in Sema where RHS of
the property assignment is an lvalue for an incomplete type.
// rdar://15118128. Reviewed offline by John McCall.

llvm-svn: 203043
2014-03-06 00:34:05 +00:00
Richard Smith bb29e518c8 Switch to an idiomatic C++ erase/remove for this loop, and fix a bug in the
process (I don't believe it's possible to write a testcase for the bug with
a non-checking STL implementation).

llvm-svn: 203042
2014-03-06 00:33:23 +00:00
Chandler Carruth 7c582545a4 [Layering] Update include for the move of DIBuilder.h to the IR library
in LLVM r203038.

llvm-svn: 203039
2014-03-06 00:22:29 +00:00
Ted Kremenek 1de2e14f2f [-Wunreachable-code] Handle idiomatic do...while() with an uninteresting condition.
Sometimes do..while() is used to create a scope that can be left early.
In such cases, the unreachable 'while()' test is not usually interesting
unless it actually does something that is observable.

llvm-svn: 203036
2014-03-06 00:17:44 +00:00
NAKAMURA Takumi 5145f4c1c8 clang/test/Modules/recursive.c: Tweak expressions for win32.
llvm-svn: 203034
2014-03-06 00:12:04 +00:00
Ted Kremenek 0a69cabd35 [-Wunreachable-code] generalize pruning out warning on trivial returns.
Previously we only pruned dead returns preceded by a call to a
'noreturn' function.  After looking at the results of the LLVM codebase,
there are many others that should be pruned as well.

llvm-svn: 203029
2014-03-05 23:46:07 +00:00
Fariborz Jahanian 6766f8d23b Objective-C. Suppress the warning for auto synthesis of property not
synthesizing protocol properties if class's super class
implements them. // rdar://16089191

llvm-svn: 203028
2014-03-05 23:44:00 +00:00
Ted Kremenek 21eea24d79 [-Wunreachabe-code] add test for double 'break'.
llvm-svn: 203027
2014-03-05 23:38:43 +00:00
Ted Kremenek 01a39b601f [-Wunreachable-code] include some enum constants in "configuration value" heuristic
llvm-svn: 203026
2014-03-05 23:38:41 +00:00
Richard Smith da3f4fd3fe PR19010: Make sure we initialize (empty) indirect base class subobjects when
evaluating trivial default initialization of a literal class type.

llvm-svn: 203025
2014-03-05 23:32:50 +00:00
Ted Kremenek 760a2acbb5 Fix recursion bug in logic to validate 'objc_protocol_requires_explicit_implementation' conformance.
llvm-svn: 203024
2014-03-05 23:18:22 +00:00
Richard Smith a13f8ae84e DR status page: add link targets for individual DRs, and link duplicates.
llvm-svn: 203022
2014-03-05 23:02:47 +00:00
Richard Smith faf156ad15 Tests for DR370-380.
Also promote a couple of Warnings on ill-formed code found by this testing to
ExtWarns.

llvm-svn: 203021
2014-03-05 22:54:58 +00:00
Ted Kremenek 3cdbc39a6e [-Wunreachable-code] generalize configuration value checking to all comparison operators.
llvm-svn: 203016
2014-03-05 22:32:39 +00:00
Aaron Ballman 4853a10e57 Updating this test case to appease build bots which support ANSI escape sequences (unlike my dev box).
llvm-svn: 203014
2014-03-05 21:59:02 +00:00
Aaron Ballman 6c8100748f Capabilities are required to pass a name specifying what type of capability is being annotated. There are currently only two supported names: mutex and role. Adding functionality to check for the capability name and diagnose when it's unexpected.
Note that for backwards compatibility, an unnamed capability will default to being a "mutex." This allows the deprecated lockable attribute to continue to function.

llvm-svn: 203012
2014-03-05 21:47:13 +00:00
Ben Langmuir 9385323747 Attempt to re-enable the VFS unittests on Windows
Using a //net/ path to hopefully avoid problems with non-absolute paths
on Windows.

llvm-svn: 203010
2014-03-05 21:32:20 +00:00
Rafael Espindola 191b95125a Don't produce an alias between destructors with different calling conventions.
Fixes pr19007.

llvm-svn: 203007
2014-03-05 21:04:41 +00:00
Richard Smith 7bea1d42d8 When building a module from the command line via -emit-module, add an entry to
the module build stack for the module being built, so we can correctly detect
recursive module builds.

llvm-svn: 203006
2014-03-05 20:55:36 +00:00
Richard Smith 8c71eba19f If a #include finds a file relative to the current file, don't forget to check
whether it's part of a module.

llvm-svn: 203005
2014-03-05 20:51:45 +00:00
Nico Weber fcf6128c71 Mention clang-cl in MSVCCompatibility.rst
llvm-svn: 203002
2014-03-05 20:18:59 +00:00
Rafael Espindola 1368f8ac96 Update for llvm change.
llvm-svn: 203000
2014-03-05 20:08:57 +00:00
Argyrios Kyrtzidis f8d46fb6eb [code-completion] Add a couple of test cases suggested by Jordan, and a FIXME.
llvm-svn: 202995
2014-03-05 19:10:31 +00:00
David Majnemer f27217ffaf AST: Remove layering violation with Sema
Scope lives in Sema and cannot be used in AST. Shuffle things around.

llvm-svn: 202993
2014-03-05 18:55:38 +00:00
Aaron Ballman 8f1439bd0c [C++11] Using std::unique_ptr to ensure that Argument objects do not leak (since clang-tblgen isn't long-lived, the old leak is probably acceptable, but it offended my senses nonetheless).
llvm-svn: 202989
2014-03-05 16:49:55 +00:00
Ben Langmuir 53145df884 Use ThreadSafeRefCountedBase for vfs::FileSystem
Allow trivial read-only filesystems such as RealFileSystem to be shared
between threads.

llvm-svn: 202986
2014-03-05 15:25:59 +00:00
Timur Iskhodzhanov 77764b6d4c Style fix: replace "1 entries" with "1 entry" in the vftable layout dumping code
llvm-svn: 202978
2014-03-05 13:54:07 +00:00
Benjamin Kramer 65f0a4a1af Revert "[C++11] Replace trivial lambda with std::cref."
MSVC2013's standard library is too broken to understand this pattern.

llvm-svn: 202971
2014-03-05 13:25:00 +00:00
Benjamin Kramer fcef811822 [C++11] Replace trivial lambda with std::cref.
llvm-svn: 202968
2014-03-05 11:38:18 +00:00
Alexander Kornienko cef10edcb2 Added a const qualifier to SourceManager& parameters.
llvm-svn: 202964
2014-03-05 10:38:27 +00:00
David Majnemer f017ec360c MS ABI: Mangle lambdas
Use a scheme inspired by the Itanium ABI to properly implement the
mangling of lambdas.

N.B.  The incredibly astute observer will notice that we do not generate
external names that are identical, or even compatible with, MSVC.
This is fine because they don't generate names that they can use across
translation units.  Technically, we can generate any name we'd like so
long as that name wouldn't conflict with any other and would be stable
across translation units.

This fixes PR15512.

llvm-svn: 202962
2014-03-05 10:35:06 +00:00
NAKAMURA Takumi 6a927ecb7a Disable BasicTests/VFS on win32 for now. Investigating.
Failing Tests (5):
    Clang-Unit :: Basic/BasicTests.exe/VFSFromYAMLTest.CaseInsensitive
    Clang-Unit :: Basic/BasicTests.exe/VFSFromYAMLTest.MappedFiles
    Clang-Unit :: Basic/BasicTests.exe/VFSFromYAMLTest.MultiComponentPath
    Clang-Unit :: Basic/BasicTests.exe/VFSFromYAMLTest.TrailingSlashes
    Clang-Unit :: Basic/BasicTests.exe/VFSFromYAMLTest.UseExternalName

llvm-svn: 202952
2014-03-05 09:10:04 +00:00
David Majnemer 2206bf5d5b [-cxx-abi microsoft] Implement local manglings accurately
Summary:
The MSVC ABI appears to mangle the lexical scope into the names of
statics.  Specifically, a counter is incremented whenever a scope is
entered where things can be declared in such a way that an ambiguity can
arise.  For example, a class scope inside of a class scope doesn't do
anything interesting because the nested class cannot collide with
another nested class.

There are problems with this scheme:
- It is unreliable. The counter is only incremented when a previously
  never encountered scope is entered.  There are cases where this will
  cause ambiguity amongst declarations that have the same name where one
  was introduced in a deep scope while the other was introduced right
  after in the previous lexical scope.
- It is wasteful.  Statements like: {{{{{{{ static int foo = a; }}}}}}}
  will make the mangling of "foo" larger than it need be because the
  scope counter has been incremented many times.

Because of these problems, and practical implementation concerns.  We
choose not to implement this scheme if the local static or local type
isn't visible.  The mangling of these declarations will look very
similar but the numbering will make far more sense, this scheme is
lifted from the Itanium ABI implementation.

Reviewers: rsmith, doug.gregor, rnk, eli.friedman, cdavis5x

Reviewed By: rnk

CC: cfe-commits

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

llvm-svn: 202951
2014-03-05 08:57:59 +00:00
Ted Kremenek 4b3c66e6e8 Adjust logic for 'objc_protocol_requires_explicit_implementation' for inherited protocols and protocols already conformed in the class hierarchy.
Per more discussion, 'objc_protocol_requires_explicit_implementation' is
refinement that it mainly adds that requirement that a protocol must be
explicitly satisfied at the moment the first class in the class hierarchy
conforms to it.  Any subclasses that also conform to that protocol,
either directly or via conforming to a protocol that inherits that protocol,
do not need to re-implement that protocol.

Doing this requires first doing a pass on the super class hierarchy,
gathering the set of protocols conformed to by the super classes,
and then culling those out when determining conformance.  This
two-pass algorithm could be generalized for all protocol checking,
and could possibly be a performance win in some cases.  For now
we restrict this change to protocols with this attribute to isolate
the change in logic (especially as the design continues to evolve).

This change needs to be adjusted for properties as well; this
only impacts methods right now.

llvm-svn: 202948
2014-03-05 08:13:08 +00:00
Alexey Bataev 2759a7c9c0 [OPENMP] allow clause 'private' on directive 'omp simd'
llvm-svn: 202944
2014-03-05 07:21:14 +00:00
Alexey Bataev 18a3764b4f [OPENMP] emit error message for clause 'if(1 0)'
llvm-svn: 202942
2014-03-05 06:53:13 +00:00
Argyrios Kyrtzidis 0692508670 [AST] A "Class<P>" type should not have '*' when printed out.
rdar://14309030

llvm-svn: 202941
2014-03-05 06:47:57 +00:00
Alexey Bataev af7849e7c7 [OPNEMP] Fixed instantiation of 'if' clause
llvm-svn: 202940
2014-03-05 06:45:14 +00:00
David Majnemer 197e2103a2 Speculatively fix MSVC buildbots
llvm-svn: 202938
2014-03-05 06:32:38 +00:00
Peter Collingbourne 875ba2da47 Merge using-decl-pr17575.cpp into existing test case.
llvm-svn: 202925
2014-03-05 02:12:55 +00:00
Peter Collingbourne 01c7d98043 Add a test case for PR17575.
llvm-svn: 202922
2014-03-05 01:49:35 +00:00
Ted Kremenek 6d9bb56cd3 [-Wunreachable-code] Don't warn about dead code guarded by a "configuration value".
Some unreachable code is only "sometimes unreachable" because it
is guarded by a configuration value that is determined at compile
time and is always constant.  Sometimes those represent real bugs,
but often they do not.  This patch causes the reachability analysis
to cover such branches even if they are technically unreachable
in the CFG itself.  There are some conservative heuristics at
play here to determine a "configuration value"; these are intended
to be refined over time.

llvm-svn: 202912
2014-03-05 00:01:17 +00:00
David Majnemer 1e57976ec0 Headers: Provide an ABI compatible max_align_t when _MSC_VER is defined
Summary:
Our usual definition of max_align_t wouldn't match up with MSVC if it
was used in a template argument.

Reviewers: chandlerc, rsmith, rnk

Reviewed By: chandlerc

CC: cfe-commits

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

llvm-svn: 202911
2014-03-04 23:43:48 +00:00
David Blaikie 9afd5daea3 Remove some unnecessary qualification
llvm-svn: 202909
2014-03-04 23:39:18 +00:00
Fariborz Jahanian 7a5830294f Objective-C. Return 0 as class of methods in protocols.
This simplifies my last patch a bit. No change in
functionality.

llvm-svn: 202906
2014-03-04 22:57:32 +00:00
Ben Langmuir a6f8ca8c5f Support relative paths in VFSFromYAML
Use llvm::sys::fs::make_absolute to get an absolute path before
matching. Also, allow "." directories to enable testing.  ".." is still
not supported, and will require crossing file system boundaries to
implement correctly.

llvm-svn: 202903
2014-03-04 22:34:50 +00:00
David Majnemer 75991301d2 TokenKinds: _Atomic isn't a keyword in MS mode
Summary:
This is needed to allow MSVC's <atomic> header to properly parse.
It uses _Atomic as a class-id.

Reviewers: rnk

Reviewed By: rnk

CC: cfe-commits

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

llvm-svn: 202901
2014-03-04 22:07:09 +00:00
David Blaikie 0856f66dd2 DebugInfo: Refix r202888 (a fix to r202769) in a different way, ensuring types aren't needlessly built during -gmlt
llvm-svn: 202900
2014-03-04 22:01:08 +00:00
Ted Kremenek 5a09527d0d [CFG] Tweak "?:" CFG construction to record the unreachable blocks.
llvm-svn: 202898
2014-03-04 21:53:26 +00:00
Richard Smith 841f1c782e [C++11] Simplify a callback to use a lambda.
llvm-svn: 202897
2014-03-04 21:50:01 +00:00
Benjamin Kramer cfcdd23339 Revert "FileEntry: Remove unused and half-broken copy ctor."
Looks like libstdc++ 4.7 still needs it.

llvm-svn: 202896
2014-03-04 21:49:45 +00:00
Benjamin Kramer 5bc79bfc10 [C++11] Push move semantics through APValue.
llvm-svn: 202894
2014-03-04 21:47:57 +00:00
Benjamin Kramer 4bd1ffa3ee FileEntry: Remove unused and half-broken copy ctor.
llvm-svn: 202893
2014-03-04 21:47:50 +00:00
Ted Kremenek eb862849a1 [-Wunreachable-code] handle cases where a dead 'return' may have a valid predecessor.
Fies PR19040.

llvm-svn: 202892
2014-03-04 21:41:38 +00:00
Reid Kleckner dfb1887cc9 Add a test case for r202888, which boiled down to -gline-tables-only
clang-cl defaults to -gline-tables-only, because that's the only
CodeView debug info that LLVM knows how to emit.

llvm-svn: 202891
2014-03-04 21:33:26 +00:00
Richard Smith 2f0e4e78b2 Add tests for newly-resolved core issues <= 370.
llvm-svn: 202889
2014-03-04 21:14:30 +00:00
Reid Kleckner e0b9201f5a Fix unconditional dereference of a WeakVH in CGDebugInfo TypeCache
This fails an "isa<> used with null pointer" assert during a clang-cl
self-host on Windows.  This was caused by r202769, and I'm currently
reducing a test case.

Reviewers: dblaikie

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

llvm-svn: 202888
2014-03-04 20:51:58 +00:00
Richard Smith 37213e219b Update DR status page to match post-Issaquah core issues list.
llvm-svn: 202886
2014-03-04 20:44:20 +00:00
Richard Smith 586cd94340 Add links to TSen from post-Issaquah mailing.
llvm-svn: 202882
2014-03-04 20:22:54 +00:00
Benjamin Kramer 9299637dc0 Pass llvm::Triple objects by const reference.
Copying isn't cheap as it contains a std::string.

llvm-svn: 202880
2014-03-04 19:31:42 +00:00
Simon Atanasyan 738f85a20e [Mips] Check all MIPS toolchains to find the one that best meets command
line arguments and directories tree. The old toolchain selection heuristics
worked incorrectly when user has a reduced MIPS toolchain supports
the O32 ABI only.

Patch reviewed by Jonathan Roelofs, David Majnemer.

llvm-svn: 202873
2014-03-04 18:37:28 +00:00
Fariborz Jahanian dafffbe2be Objective-C IRGen. Fix up the hueristics for determining
if an ivar offset load is invariant iff inside an instance method
and ivar belongs to instance method's class and one of its super class.
// rdar://16095748

llvm-svn: 202872
2014-03-04 18:34:52 +00:00
Roman Divacky b8322b13f8 The wmmintrin.h header includes two different sub-headers: one for AES support
and one for PCLMUL support.  The current immintrin.h header only includes
wmmintrin.h if AES support is enabled.  It should include it if either AES or
PCLMUL is enabled (GCC's version of immintrin.h does this).

Patch by John Baldwin!

llvm-svn: 202871
2014-03-04 18:26:12 +00:00
Timur Iskhodzhanov 3a9ac93478 First step towards fixing PR18967 - simplify the ComputeThisOffset interface
llvm-svn: 202870
2014-03-04 18:17:38 +00:00
Sean Callanan c94711c7e3 When deciding whether or not to resolve two
anonymous structs to the same Decl in the
ASTImporter, ensure that both are filled in
from their external sources (if present).
Otherwise two different structs may be 
identified erroneously.

llvm-svn: 202869
2014-03-04 18:11:50 +00:00
Reid Kleckner 51082b1a86 Tests for LLVM MS inline asm change r202865
llvm-svn: 202866
2014-03-04 17:57:56 +00:00
Jordan Rose af71031e3c Fix -Wsign-compare warning.
No functionality change.

llvm-svn: 202864
2014-03-04 17:45:43 +00:00
Benjamin Kramer b99c6b5d94 [C++11] Make StoredDeclsList move-only.
It is only moved when a StoredDeclsMap grows.

llvm-svn: 202859
2014-03-04 16:42:46 +00:00
Chandler Carruth 735e6d8046 [Modules] Update to reflect the move of CFG.h to the IR library in LLVM
r202827.

llvm-svn: 202828
2014-03-04 11:46:22 +00:00
Chandler Carruth 61743af166 [Modules] Update to reflect ValueHandle moving to the IR library in LLVM
r202821.

llvm-svn: 202822
2014-03-04 11:18:19 +00:00
Chandler Carruth c80ceea90b [Modules] Update to reflect the move of CallSite into the IR library in
LLVM r202816.

llvm-svn: 202817
2014-03-04 11:02:08 +00:00
Chandler Carruth 757fcd6d1f [cleanup] Re-sort includes with llvm/utils/sort_includes.py and fix
a missing include from CLog.h.

CLog.h referenced most of the core libclang types but never directly
included Index.h that provides them. Previously it got lucky and other
headers were always included first but with the sorting it ended up
first in one case and stopped compiling. Adding the Index.h include
fixes it right up.

llvm-svn: 202810
2014-03-04 10:05:20 +00:00
Yaron Keren 230f29f910 We now require Visual C++ 2012 (MSVC_VERSION = 1700) or later to build LLVM.
llvm-svn: 202804
2014-03-04 09:12:17 +00:00
NAKAMURA Takumi 4a5a9d2174 Give %itanium_abi_triple to the test to appease targeting msvc.
llvm-svn: 202803
2014-03-04 09:04:20 +00:00
Argyrios Kyrtzidis 7ffeea4ef3 [CMake] Add the newly introduced compiler header.
llvm-svn: 202792
2014-03-04 06:28:23 +00:00
David Majnemer 590604b2d4 MS ABI: Reorganize some tests
Move some c++11 specific tests to mangle-ms-cxx11

llvm-svn: 202790
2014-03-04 05:47:41 +00:00
David Majnemer 8f77453f7c MS ABI: Mangle variable templates properly
We wouldn't recognize variable templates as being templates leading us
to leave the template arguments off of the mangled name.  This would
allow two unrelated templates to map to the same mangled name.

N.B.  While MSVC doesn't support variable templates as of this date,
this mangling is the most likely thing they will choose to use.  Their
demangler can successfully demangle our manglings with the template
arguments shown.

llvm-svn: 202789
2014-03-04 05:38:05 +00:00
Alexey Bataev af02c1c003 Fix for r202778 - Implement __readeflags and __writeeflags intrinsics (renamed res to __res)
llvm-svn: 202784
2014-03-04 03:42:58 +00:00
David Blaikie 534f41ddfa DebugInfo: Make test (introduced in r202769) resilient to platforms that default to -fstandalone-debug
llvm-svn: 202780
2014-03-04 03:08:16 +00:00
David Blaikie f7f2185975 DebugInfo: Improvements/corrections to conservative emission of types in explicit template instantiation declarations
* detect out of line definitions correctly
* detect member function explicit specializations correctly

llvm-svn: 202779
2014-03-04 03:08:14 +00:00
Alexey Bataev 7cab007902 Implement __readeflags and __writeeflags intrinsics
llvm-svn: 202778
2014-03-04 03:03:03 +00:00
Pete Cooper a8290ac028 Add triple to test. On Mac OS it was failing to generate debug info which matched the check lines
llvm-svn: 202777
2014-03-04 02:56:59 +00:00
Richard Smith 309271b0ad Fix typo that resulted in names at TU scope getting lost sometimes after a
module import.

llvm-svn: 202771
2014-03-04 00:21:14 +00:00
David Blaikie 0e716b42f4 DebugInfo: Emit only the declaration of a class template that has an explicit instantiation declaration (& always emit such a type when there's an explicit instantiation definition)
We should only have this optimization fire when the explicit
instantiation definition would cause at  least one member function to be
emitted, thus ensuring that even a compiler not performing this
optimization would still emit the full type information elsewhere.

But we should also pessimize output still by always emitting the
definition when the explicit instantiation definition appears so that at
some point in the future we can depend on that information even when no
code had to be emitted in that TU. (this shouldn't happen very often,
since people mostly use explicit spec decl/defs to reduce code size -
but perhaps one day they could use it to explicitly reduce debug info
size too)

This was worth about 2% for Clang and LLVM - so not a huge win, but a
win. It looks really great for simple STL programs (include <string> and
just declare a string - 14k -> 1.4k of .dwo)

llvm-svn: 202769
2014-03-03 23:48:23 +00:00
Hans Wennborg 04110bfb77 Include <tuple> to speculatively try to fix VS2013 build after r202755
llvm-svn: 202765
2014-03-03 22:25:31 +00:00
Fariborz Jahanian 1d5c1fad68 Objective-C. Fixes a regression when figuring out linkage
for metadata symbols for forward referenced protocols which 
are never defined.  // rdar://16203115

llvm-svn: 202761
2014-03-03 21:53:57 +00:00
Richard Smith 446161b9ac Improve diagnostics for malformed constructor declarations (where lookup for
the type of the first parameter fails, and it is the only, unnamed, parameter).

llvm-svn: 202759
2014-03-03 21:12:53 +00:00
Benjamin Kramer 5367356a64 [C++11] Add missing include.
llvm-svn: 202757
2014-03-03 20:39:28 +00:00
Benjamin Kramer a741b8c451 [C++11] Simplify compare operators with std::tie.
No functionality change.

llvm-svn: 202755
2014-03-03 20:26:46 +00:00
Diego Novillo b56be64599 Schedule discriminator pass.
This needs to modify a line table test to account for the new lexical
block created to hold the new discriminator value.

llvm-svn: 202754
2014-03-03 20:06:18 +00:00
Jordan Rose ba16bce97d Re-fix previous commit.
Always run the test again, even for a trivial change...

llvm-svn: 202747
2014-03-03 19:46:28 +00:00
Jordan Rose 7b3c1bb158 Remove absolute path from r202733.
llvm-svn: 202746
2014-03-03 19:45:34 +00:00
Argyrios Kyrtzidis 3227d86f1b [libclang] Have clang_getCursorSpelling() return the string for a CXCursor_ObjCStringLiteral or CXCursor_StringLiteral cursor.
rdar://16206459

llvm-svn: 202745
2014-03-03 19:40:52 +00:00
Chandler Carruth b55d0226b7 [C++11] Remove a now unnecessary use of std::function for a remove_if
predicate. The wrapper used by SetVector was erroneously requiring an
adaptable predicate. It has been fixed and we really don't want to
require an indirect call for every predicate evaluation.

llvm-svn: 202744
2014-03-03 19:36:27 +00:00
Diego Novillo e6d398189e Update call DIBuilder::createLexicalBlock.
Create lexical blocks with discriminator value 0 by default.

llvm-svn: 202737
2014-03-03 18:53:32 +00:00
Aaron Ballman f08a5c7608 I guess we're still using LLVM_DELETED_FUNCTION instead of = delete. This should fix a complaining built bot.
llvm-svn: 202734
2014-03-03 18:41:48 +00:00
Jordan Rose 7ef1c387a0 Serialized diagnostic severity levels should be stable.
Serialized diagnostics were accidentally using the AST diagnostic level values
rather than a dedicated stable enum, so the addition of "remark" broke the
reading of existing serialized diagnostics files. I've added a .dia file
generated from Xcode 5's Clang to make sure we don't break this in the future.

llvm-svn: 202733
2014-03-03 18:29:52 +00:00
Reid Kleckner 77d7698709 Fix MSVCCompatibility doc ReST and wording.
llvm-svn: 202732
2014-03-03 18:22:25 +00:00
Aaron Ballman 3efb895bb1 Removing some unused functionality.
llvm-svn: 202727
2014-03-03 16:21:37 +00:00
Tom Stellard 81eeab3455 Update tests for addition of patch level to LLVM version
llvm-svn: 202721
2014-03-03 15:22:14 +00:00
Robert Lytton d21e2d76fc correct consitency of XCore caps
llvm-svn: 202711
2014-03-03 13:45:29 +00:00
Dmitri Gribenko 5ea34fcc8d Decl printing: add tests for typedefs
Patch by Konrad Kleine.

llvm-svn: 202709
2014-03-03 13:21:00 +00:00
Tim Northover 926a235fea AArch64: convert NEON tests to use CHECK-LABEL.
llvm-svn: 202703
2014-03-03 11:34:36 +00:00
Peter Collingbourne f93725459a MSVC 2012 doesn't support std::initializer_list at all, so don't rely on
that std::vector constructor.

llvm-svn: 202684
2014-03-03 08:13:06 +00:00
Argyrios Kyrtzidis 1594c15500 Introduce '-fmodules-user-build-path' which accepts the "canonical" path to a user workspace build.
This is used to avoid conflicts with user modules with the same name from different workspaces.

rdar://16042513

llvm-svn: 202683
2014-03-03 08:12:05 +00:00
Peter Collingbourne 2bbb029599 MSVC cannot understand temporaries formed from initializer lists.
llvm-svn: 202682
2014-03-03 07:49:35 +00:00
Argyrios Kyrtzidis d502a10c5e [libclang] Introduce APIs that assist in constructing a simple module.map file for a user framework.
rdar://16092858

llvm-svn: 202681
2014-03-03 07:41:45 +00:00
Ahmed Charles bf8e283f15 [C++11] Add #include's for OwningPtr.
Allows removing #include's in LLVM while switching to std::unique_ptr.

llvm-svn: 202677
2014-03-03 07:11:21 +00:00
Argyrios Kyrtzidis 74c96c0c75 [libclang] Change clang_VirtualFileOverlay_writeToBuffer to return a malloc'ed buffer.
Returning CXString is not appropriate if we want to switch to a non-string format buffer.

llvm-svn: 202675
2014-03-03 06:38:52 +00:00
Peter Collingbourne c0423b349b Disable all dependency output options when using the Tooling library.
It isn't appropriate for a tool to be stomping over the dependency files,
especially if the actual build uses a compiler other than Clang or the tool
cannot find all the headers for some reason (which would cause the existing
dependency file to be deleted).

If a tool actually needs to care about dependency files we can think about
adding a mechanism for getting to this information.

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

llvm-svn: 202669
2014-03-02 23:37:26 +00:00
David Majnemer dbd6acb64b Revert "Preprocessor: Add __ALIGNOF_MAX_ALIGN_T__"
This commit reverts r201037, it's functionality is not needed given the
definition of std::max_align_t in libcxx circa r201843.

llvm-svn: 202667
2014-03-02 23:01:10 +00:00
David Majnemer b100410365 Normalize line endings
Some files had CRLF line terminators, some only had a mixture of
CRLF and LF.  Switch to LF.

llvm-svn: 202659
2014-03-02 18:46:05 +00:00
Hal Finkel f7a07a5010 Add a PPC inline asm constraint type for single CR bits
This adds support for the PPC "wc" inline asm constraint (used for allocating
individual CR bits). Support for this constraint type was recently added to the
LLVM PowerPC backend. Although gcc does not currently support allocating
individual CR bits, this identifier choice has been coordinated with the gcc
PowerPC team, and will be marked as reserved for this purpose in the gcc
constraints.md file.

Prior to this change, none of the multi-character PPC constraints were handled
correctly (the '^' escape character was not being added as required by the
parsing code in LLVM). This should now be fixed. I'll add tests for these other
constraints as support is added for them in the backend.

llvm-svn: 202658
2014-03-02 18:24:18 +00:00
David Majnemer fc256c3952 AttributeReference: Use UNIX line endings
llvm-svn: 202656
2014-03-02 18:17:08 +00:00
Aaron Ballman b576a36c88 Adding some cross references to the sanitizer attribute documentation. Removes a Sphinx warning pointed out by Sean Silva.
llvm-svn: 202655
2014-03-02 17:48:20 +00:00
Aaron Ballman b097f7fe9a Simplifying attribute generation with range-based for loops. No functional changes intended.
llvm-svn: 202654
2014-03-02 17:38:37 +00:00
Benjamin Kramer bd39f6e364 [C++11] ASTMatchers: Use standard static_assert and type traits.
llvm-svn: 202653
2014-03-02 17:08:43 +00:00
Benjamin Kramer 4527fb2f33 [C++11] Use std::atomic instead of LLVM's.
No intended functionality change.

llvm-svn: 202652
2014-03-02 17:08:31 +00:00
Benjamin Kramer cef536ec0f [C++11] Work around an incompatibility between llvm::tie and std::tie.
llvm-svn: 202643
2014-03-02 13:18:22 +00:00
Chandler Carruth 06dde92cd6 [C++11] Switch from LLVM_STATIC_ASSERT to static_assert now that we
require host toolchains which support this.

llvm-svn: 202640
2014-03-02 13:02:01 +00:00
Benjamin Kramer 867ea1d426 [C++11] Replace llvm::tie with std::tie.
llvm-svn: 202639
2014-03-02 13:01:17 +00:00
Chandler Carruth f8b7266d57 [C++11] Switch the clang-format LLVM style to use C++11 style braced
init list formatting. This suggestion has now gone into the LLVM coding
standards, and is particularly relevant now that we're using C++11.

Updated a really ridiculous number of tests to reflect this change.

llvm-svn: 202637
2014-03-02 12:37:31 +00:00