]> granicus.if.org Git - clang/log
clang
7 years ago[clang-format] Fix PR30527: Regression when clang-format insert spaces in [] when...
Nico Weber [Thu, 10 Nov 2016 21:49:25 +0000 (21:49 +0000)]
[clang-format] Fix PR30527: Regression when clang-format insert spaces in [] when in template

Actual regression was introduced in r272668. This revision fixes JS script, but
also regress Cpp case. It manifests with spaces added when template is followed
with array. Bug 30527 mentions case of array as a nested template type
(foo<bar<baz>[]>). Fix is to detect such case and to prevent treating it as
array initialization, but as a subscript case. However, before r272668, this
case was treated simple because we were detecting it as a StartsObjCMethodExpr.
Same was true for other similar case - array of templates (foo<int>[]). This
patch tries to address two problems: 1) fixing regression 2) making sure both
cases (array as a nested type, array of templates) which were entering
StartsObjCMethodExpr branch are handled now appropriately.

https://reviews.llvm.org/D26163
Patch from Branko Kokanovic <branko@kokanovic.org>!

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

7 years ago[Sema] Range-ify for loop, add period to comment. NFC.
George Burgess IV [Thu, 10 Nov 2016 21:47:12 +0000 (21:47 +0000)]
[Sema] Range-ify for loop, add period to comment. NFC.

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

7 years agoClean up uses of unique_ptr for RAII objects. NFC.
George Burgess IV [Thu, 10 Nov 2016 20:43:52 +0000 (20:43 +0000)]
Clean up uses of unique_ptr for RAII objects. NFC.

- EnterExpressionEvaluationContext allows you to specify whether you
  *actually* want to enter an evaluation context.
- For types that don't allow that, llvm::Optional<Foo> should do the
  same thing as std::unique_ptr<Foo>, but with 100% less heap
  allocations.

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

7 years agoCorrecting a documentation formatting bug; NFC.
Aaron Ballman [Thu, 10 Nov 2016 19:45:49 +0000 (19:45 +0000)]
Correcting a documentation formatting bug; NFC.

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

7 years agoAdd -Wduplicate-protocol for existing diagnostic
Alex Lorenz [Thu, 10 Nov 2016 18:30:26 +0000 (18:30 +0000)]
Add -Wduplicate-protocol for existing diagnostic

Expose a warning flag for warn_duplicate_protocol_def. This allows control
over the severity of duplicate protocol definitions.

For example -Werror=duplicate-protocol or
#pragma clang diagnostic ignored "-Wduplicate-protocol".

Patch provided by Dave Lee!

Differential Revision: https://reviews.llvm.org/D26406

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

7 years agodrop kw_module from ASI protection block
Martin Probst [Thu, 10 Nov 2016 16:21:04 +0000 (16:21 +0000)]
drop kw_module from ASI protection block

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

7 years agoclang-format: [JS] do not break after declare namespace.
Martin Probst [Thu, 10 Nov 2016 16:21:02 +0000 (16:21 +0000)]
clang-format: [JS] do not break after declare namespace.

Summary:
See TypeScript grammar for tokens following 'declare':
https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#A.10

Additional minor change:
clang-format: [JS] Prevent ASI before const.

Reviewers: djasper

Subscribers: cfe-commits, klimek

Differential Revision: https://reviews.llvm.org/D26274

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

7 years agoclang-format: [JS] do not break after declare namespace.
Martin Probst [Thu, 10 Nov 2016 16:20:58 +0000 (16:20 +0000)]
clang-format: [JS] do not break after declare namespace.

See TypeScript grammar for tokens following 'declare':
https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#A.10

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

7 years ago[Sema] Avoid -Wshadow warnings for shadowed variables that
Alex Lorenz [Thu, 10 Nov 2016 16:19:11 +0000 (16:19 +0000)]
[Sema] Avoid -Wshadow warnings for shadowed variables that
aren't captured by lambdas with a default capture specifier

This commit is a follow-up to r286354. It avoids the -Wshadow warning for
variables which shadow variables that aren't captured by lambdas with a default
capture specifier. It provides an additional note that points to location of
the capture.

The old behaviour is preserved with -Wshadow-all or -Wshadow-uncaptured-local.

rdar://14984176

Differential Revision: https://reviews.llvm.org/D26448

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

7 years agoAdd the loop end location to the loop metadata. This additional information
Amara Emerson [Thu, 10 Nov 2016 14:44:30 +0000 (14:44 +0000)]
Add the loop end location to the loop metadata. This additional information
can be used to improve the locations when generating remarks for loops.

Depends on the companion LLVM change r286227.

Patch by Florian Hahn.

Differential Revision: https://reviews.llvm.org/D25764

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

7 years ago[PowerPC] Implement plain VSX load/store builtins.
Tony Jiang [Thu, 10 Nov 2016 14:39:56 +0000 (14:39 +0000)]
[PowerPC] Implement plain VSX load/store builtins.

Implement all the different 24 overloads for vec_xl and vec_xst.

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

7 years agoMake output of -ast-print a valid C++ code.
Serge Pavlov [Thu, 10 Nov 2016 08:49:37 +0000 (08:49 +0000)]
Make output of -ast-print a valid C++ code.

Output generated by option -ast-print looks like C/C++ code, and it
really is for plain C. For C++ the produced output was not valid C++
code, but the differences were small. With this change the output
is fixed and can be compiled. Tests are changed so that output produced
by -ast-print is compiled again with the same flags and both outputs are
compared.

Option -ast-print is extensively used in clang tests but it itself
was tested poorly, existing tests only checked that compiler did not
crash. There are unit tests in file DeclPrinterTest.cpp, but they test
only terse output mode.

Differential Revision: https://reviews.llvm.org/D26452

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

7 years ago[libclang] Fix issue with clang_tokenize and make sure it interprets CXSourceRange...
Argyrios Kyrtzidis [Wed, 9 Nov 2016 23:58:39 +0000 (23:58 +0000)]
[libclang] Fix issue with clang_tokenize and make sure it interprets CXSourceRange as half-open character range.

Patch provided by Emilio Cobos Álvarez! (https://reviews.llvm.org/D26446)

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

7 years ago[Sema] Use MS ABI behavior for dllexport in Itanium
Shoaib Meenai [Wed, 9 Nov 2016 23:52:20 +0000 (23:52 +0000)]
[Sema] Use MS ABI behavior for dllexport in Itanium

Similar to r284288, make the Itanium ABI follow MS ABI dllexport
semantics in the case of an explicit instantiation declaration followed
by a dllexport explicit instantiation definition.

Differential Revision: https://reviews.llvm.org/D26471

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

7 years agoRemove extra whitespace
Adrian Prantl [Wed, 9 Nov 2016 23:10:44 +0000 (23:10 +0000)]
Remove extra whitespace

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

7 years agoRelax testcase so it also works on Windows.
Adrian Prantl [Wed, 9 Nov 2016 23:05:16 +0000 (23:05 +0000)]
Relax testcase so it also works on Windows.

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

7 years ago[Sema][NFC] Reset HasFallthroughStmt when clearing FunctionScopeInfo
Erik Pilkington [Wed, 9 Nov 2016 22:52:23 +0000 (22:52 +0000)]
[Sema][NFC] Reset HasFallthroughStmt when clearing FunctionScopeInfo

Differential revision: https://reviews.llvm.org/D22770

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

7 years agoUse an artificial debug location for non-virtual thunks.
Adrian Prantl [Wed, 9 Nov 2016 21:43:51 +0000 (21:43 +0000)]
Use an artificial debug location for non-virtual thunks.
Thunks are artificial and have no corresponding source location except for the
line number on the DISubprogram, which is marked as artificial.

<rdar://problem/11941095>

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

7 years ago[Sparc] Unbreak test
Douglas Katzman [Wed, 9 Nov 2016 17:02:07 +0000 (17:02 +0000)]
[Sparc] Unbreak test

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

7 years ago[Sparc] LLONG is not lock-free atomic on v8
Douglas Katzman [Wed, 9 Nov 2016 15:43:51 +0000 (15:43 +0000)]
[Sparc] LLONG is not lock-free atomic on v8

Differential Revision: https://reviews.llvm.org/D26286

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

7 years agoclang-format: [TypeScript] Fix bug in handling of non-null operator.
Daniel Jasper [Wed, 9 Nov 2016 14:12:55 +0000 (14:12 +0000)]
clang-format: [TypeScript] Fix bug in handling of non-null operator.

Before:
  var i = x!-1;

After:
  var i = x! - 1;

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

7 years ago[AST] Dump dependent scope member expression with its member name
Alex Lorenz [Wed, 9 Nov 2016 14:02:18 +0000 (14:02 +0000)]
[AST] Dump dependent scope member expression with its member name

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

7 years ago[CodeCompletion] Show block invocation results for block property setters
Alex Lorenz [Wed, 9 Nov 2016 13:43:18 +0000 (13:43 +0000)]
[CodeCompletion] Show block invocation results for block property setters

This commit changes the code completion results for block property setters:
The default block property result is now a block invocation rather than a simple
property reference.

rdar://28846196

Differential Revision: https://reviews.llvm.org/D26071

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

7 years agoReplace TimeValue with TimePoint in BuildSystem.cpp. NFC.
Pavel Labath [Wed, 9 Nov 2016 11:19:39 +0000 (11:19 +0000)]
Replace TimeValue with TimePoint in BuildSystem.cpp. NFC.

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

7 years ago[VFS] Replace TimeValue usage with std::chrono
Pavel Labath [Wed, 9 Nov 2016 10:52:22 +0000 (10:52 +0000)]
[VFS] Replace TimeValue usage with std::chrono

Summary: NFCI

Reviewers: benlangmuir, zturner

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D25948

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

7 years ago[Sema] Avoid -Wshadow warnings for shadowed variables that aren't captured
Alex Lorenz [Wed, 9 Nov 2016 10:38:57 +0000 (10:38 +0000)]
[Sema] Avoid -Wshadow warnings for shadowed variables that aren't captured
by lambdas with an explicit capture list

This commit avoids the -Wshadow warning for variables which shadow variables
that aren't captured by lambdas with an explicit capture list. It provides an
additional note that points to location of the explicit capture.

The old behaviour is preserved with -Wshadow-all or -Wshadow-uncaptured-local.

rdar://17135966

Differential Revision: https://reviews.llvm.org/D26278

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

7 years ago[AVX-512] Make VBMI instruction set enabling imply that the BWI instruction set is...
Craig Topper [Wed, 9 Nov 2016 04:51:03 +0000 (04:51 +0000)]
[AVX-512] Make VBMI instruction set enabling imply that the BWI instruction set is also enabled.

Summary: This is needed to make the v64i8 and v32i16 types legal for the 512-bit VBMI instructions. Fixes PR30912.

Reviewers: delena, zvi

Subscribers: RKSimon, cfe-commits

Differential Revision: https://reviews.llvm.org/D26306

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

7 years agoDoxygen comments for avxintrin.h.
Ekaterina Romanova [Wed, 9 Nov 2016 03:58:30 +0000 (03:58 +0000)]
Doxygen comments for avxintrin.h.

Added doxygen comments to avxintrin.h's intrinsics. As of now, around 75% of the
intrinsics in this file are documented here. The patches for the other 25% will be se
nt out later.

Removed extra spaces in emmitrin.h.

Note: The doxygen comments are automatically generated based on Sony's intrinsics document.

I got an OK from Eric Christopher to commit doxygen comments without prior code
review upstream.

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

7 years ago[index] Fix issue with protocol name locations in conformance list of an ObjC class...
Argyrios Kyrtzidis [Wed, 9 Nov 2016 02:47:07 +0000 (02:47 +0000)]
[index] Fix issue with protocol name locations in conformance list of an ObjC class when they come from a typedef.

The ObjC class protocol list assumes there is an associated location for each protocol but no location is provided
when the protocol list comes from a typedef, and we end up with a buffer overflow when trying to get locations for the protocol names.

Fixes crash of rdar://28980278.

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

7 years agoclang-cl: Pass /Zc:threadSafeInit through to MSVC with /fallback (PR30948)
Hans Wennborg [Wed, 9 Nov 2016 00:56:42 +0000 (00:56 +0000)]
clang-cl: Pass /Zc:threadSafeInit through to MSVC with /fallback (PR30948)

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

7 years agoEmit debug info for global constants whose address is taken exactly once.
Adrian Prantl [Wed, 9 Nov 2016 00:42:03 +0000 (00:42 +0000)]
Emit debug info for global constants whose address is taken exactly once.

Add a check to the DeclCache before emitting debug info for a
GlobalVariable a second time and just attach the previsously created one to it.

<rdar://problem/26721101>

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

7 years ago[CUDA] Use only the GVALinkage on function definitions.
Justin Lebar [Tue, 8 Nov 2016 23:45:51 +0000 (23:45 +0000)]
[CUDA] Use only the GVALinkage on function definitions.

Summary:
Previously we'd look at the GVALinkage of whatever FunctionDecl you
happened to be calling.

This is not right.  In the absence of the gnu_inline attribute, to be
handled separately, the function definition determines the function's
linkage.  So we need to wait until we get a def before we can know
whether something is known-emitted.

Reviewers: tra

Subscribers: cfe-commits, rsmith

Differential Revision: https://reviews.llvm.org/D26268

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

7 years ago[analyzer] Provide Contains() on ImmutableMap program state partial trait.
Dominic Chen [Tue, 8 Nov 2016 22:39:14 +0000 (22:39 +0000)]
[analyzer] Provide Contains() on ImmutableMap program state partial trait.

Reviewers: zaks.anna, dcoughlin

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D26373

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

7 years agoRevert "Define __ANDROID_API__ for all Android builds."
Stephen Hines [Tue, 8 Nov 2016 21:54:49 +0000 (21:54 +0000)]
Revert "Define __ANDROID_API__ for all Android builds."

Summary: This reverts commit a8804ddd9fe71304b28e5b834d134fe93e568ee0.

Subscribers: cfe-commits, pirama, eugenis, tberghammer, danalbert

Differential Revision: https://reviews.llvm.org/D26422

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

7 years agoDefine __ANDROID_API__ for all Android builds.
Stephen Hines [Tue, 8 Nov 2016 21:23:26 +0000 (21:23 +0000)]
Define __ANDROID_API__ for all Android builds.

Summary:
Bug: https://llvm.org/bugs/show_bug.cgi?id=30940

This macro (along with __ANDROID__) should always be defined for Android
targets. We set it to the major (only) version of the Android API being
compiled for. The Android version is able to be set as an integer suffix
for any valid Android target.

Reviewers: danalbert, eugenis

Subscribers: cfe-commits, pirama, eugenis, tberghammer, danalbert

Differential Revision: https://reviews.llvm.org/D26385

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

7 years agoRemove FormatContext from libClang as it is now unused.
Daniel Jasper [Tue, 8 Nov 2016 19:47:19 +0000 (19:47 +0000)]
Remove FormatContext from libClang as it is now unused.

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

7 years agoRevert "Remove now unnecessary FormatRewriterContext."
Daniel Jasper [Tue, 8 Nov 2016 18:30:52 +0000 (18:30 +0000)]
Revert "Remove now unnecessary FormatRewriterContext."

This reverts commit r286262. I accidentally committed it without all of
the changes.

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

7 years agoRemove now unnecessary FormatRewriterContext.
Daniel Jasper [Tue, 8 Nov 2016 18:29:19 +0000 (18:29 +0000)]
Remove now unnecessary FormatRewriterContext.

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

7 years ago[clang-format] Remove (SourceManager, FileID) variants
Daniel Jasper [Tue, 8 Nov 2016 16:11:33 +0000 (16:11 +0000)]
[clang-format] Remove (SourceManager, FileID) variants

In Format, remove the reformat() and clean() functions taking a SourceManager
and a FileID. Keep the versions taking StringRef Code.

- there was duplicated functionality
- the FileID versions were harder to use
- the clean() version is dead code anyways

Patch by Krasimir Georgiev. Thank you.

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

7 years ago[X86][AVX512][Clang] Add support for mask_{move|store|load}_s{s/d} and int2mask/mask2...
Ayman Musa [Tue, 8 Nov 2016 12:00:30 +0000 (12:00 +0000)]
[X86][AVX512][Clang] Add support for mask_{move|store|load}_s{s/d} and int2mask/mask2int intrinsics.

Differential Revision: https://reviews.llvm.org/D26021

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

7 years agoTest commit of vbyakovl.
Vladimir Yakovlev [Tue, 8 Nov 2016 10:32:10 +0000 (10:32 +0000)]
Test commit of vbyakovl.

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

7 years agoAdd a method to get the list of registered static analyzer checkers.
Alexander Kornienko [Tue, 8 Nov 2016 07:23:32 +0000 (07:23 +0000)]
Add a method to get the list of registered static analyzer checkers.

Summary:
This provides a better interface for clang-tidy and encapsulates the knowledge
about experimental checkers instead of leaving this to the clients.

Reviewers: zaks.anna

Subscribers: a.sidorin, NoQ, dcoughlin, cfe-commits

Differential Revision: https://reviews.llvm.org/D26310

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

7 years agoIR, Bitcode: Change bitcode reader to no longer own its memory buffer.
Peter Collingbourne [Tue, 8 Nov 2016 06:03:43 +0000 (06:03 +0000)]
IR, Bitcode: Change bitcode reader to no longer own its memory buffer.

Unique ownership is just one possible ownership pattern for the memory buffer
underlying the bitcode reader. In practice, as this patch shows, ownership can
often reside at a higher level. With the upcoming change to allow multiple
modules in a single bitcode file, it will no longer be appropriate for
modules to generally have unique ownership of their memory buffer.

The C API exposes the ownership relation via the LLVMGetBitcodeModuleInContext
and LLVMGetBitcodeModuleInContext2 functions, so we still need some way for
the module to own the memory buffer. This patch does so by adding an owned
memory buffer field to Module, and using it in a few other places where it
is convenient.

Differential Revision: https://reviews.llvm.org/D26384

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

7 years agoclang-format: Use git-ls-tree to get file mode in diff mode
Stephen Hines [Tue, 8 Nov 2016 05:50:14 +0000 (05:50 +0000)]
clang-format: Use git-ls-tree to get file mode in diff mode

Summary:
If a file has been renamed/deleted from the filesystem and --diff mode
with two commits is active, attempting to get the file's mode will fail.
This change uses git-ls-tree instead to get the correct permissions for
the given revision.

Patch by Luis Hector Chavez!

Reviewers: djasper, lodato

Subscribers: srhines, cfe-commits

Differential Revision: https://reviews.llvm.org/D26287

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

7 years agocmake: Don't try to install exports if there aren't any
Justin Bogner [Tue, 8 Nov 2016 05:02:33 +0000 (05:02 +0000)]
cmake: Don't try to install exports if there aren't any

When using LLVM_DISTRIBUTION_COMPONENTS, it's possible for clang's
export list to be empty. If this happens the install(EXPORTS) command
will fail, but since there isn't anything to install anyway we really
just want to skip it.

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

7 years agoBitcode: Decouple block info block state from reader.
Peter Collingbourne [Tue, 8 Nov 2016 04:17:11 +0000 (04:17 +0000)]
Bitcode: Decouple block info block state from reader.

As proposed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2016-October/106630.html

Move block info block state to a new class, BitstreamBlockInfo.
Clients may set the block info for a particular cursor with the
BitstreamCursor::setBlockInfo() method.

At this point BitstreamReader is not much more than a container for an
ArrayRef<uint8_t>, so remove it and replace all uses with direct uses
of memory buffers.

Differential Revision: https://reviews.llvm.org/D26259

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

7 years ago[PowerPC] Implement remaining vector comparison builtins.
Tony Jiang [Tue, 8 Nov 2016 04:15:45 +0000 (04:15 +0000)]
[PowerPC] Implement remaining vector comparison builtins.

vector bool char vec_cmpeq (vector bool char, vector bool char);
vector bool int vec_cmpeq (vector bool int, vector bool int);
vector bool long long vec_cmpeq (vector bool long long, vector bool long lon
vector bool short vec_cmpeq (vector bool short, vector bool short);

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

7 years agoMake a const variable static. NFC.
George Burgess IV [Tue, 8 Nov 2016 03:30:49 +0000 (03:30 +0000)]
Make a const variable static. NFC.

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

7 years agoCorrectly ignore unnamed bit-fields when checking whether a union has fields.
Richard Smith [Tue, 8 Nov 2016 01:07:26 +0000 (01:07 +0000)]
Correctly ignore unnamed bit-fields when checking whether a union has fields.

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

7 years agocmake: Support exports correctly with LLVM_DISTRIBUTION_COMPONENTS
Justin Bogner [Mon, 7 Nov 2016 23:46:05 +0000 (23:46 +0000)]
cmake: Support exports correctly with LLVM_DISTRIBUTION_COMPONENTS

We need to apply the same export logic in clang as in llvm for
LLVM_DISTRIBUTION_COMPONENTS, or the clang exports will be invalid
when we use this config.

This makes using distribution components without setting
LLVM_TOOLCHAIN_ONLY=On work correctly.

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

7 years ago[index] Handle properly C++14's template variables.
Argyrios Kyrtzidis [Mon, 7 Nov 2016 21:20:15 +0000 (21:20 +0000)]
[index] Handle properly C++14's template variables.

- Infer the right symbol kind.
- Provide a templated USR, similar to how we handle class templates.

rdar://28980398

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

7 years ago[index] Make sure to mark class template symbols as having 'generic' sub-kind.
Argyrios Kyrtzidis [Mon, 7 Nov 2016 21:20:08 +0000 (21:20 +0000)]
[index] Make sure to mark class template symbols as having 'generic' sub-kind.

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

7 years agoName some anonymous structs to avoid using a (very common) extension.
John McCall [Mon, 7 Nov 2016 21:13:27 +0000 (21:13 +0000)]
Name some anonymous structs to avoid using a (very common) extension.

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

7 years agoUpdated ASTMerge/macro.m to use _Nullable.
Sean Callanan [Mon, 7 Nov 2016 21:10:31 +0000 (21:10 +0000)]
Updated ASTMerge/macro.m to use _Nullable.

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

7 years agoUse -fsanitize-recover instead of -mllvm -msan-keep-going: clang.
Evgeniy Stepanov [Mon, 7 Nov 2016 21:02:11 +0000 (21:02 +0000)]
Use -fsanitize-recover instead of -mllvm -msan-keep-going: clang.

Summary: Use -fsanitize-recover instead of -mllvm -msan-keep-going: pass -fsanitize-recover value to msan.

Reviewers: eugenis

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D26354

Patch by Aleksey Shlyapnikov.

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

7 years agoWhen the ASTImporter imports a source location, it avoids importing macro
Sean Callanan [Mon, 7 Nov 2016 20:42:25 +0000 (20:42 +0000)]
When the ASTImporter imports a source location, it avoids importing macro
expansions by calling getSpellingLoc(). That's great in most cases, but for
macros defined in the '<built-in>' source file, the source file is invalid
and does not import correctly, causing an assertion failure (the assertion
is Invalid SLocOffset or bad function choice).

A more reliable way to avoid this is to use getFileLoc(), which does not
return built-in locations. This avoids the crash but still preserves valid
source locations.

I've added a testcase that covers the previously crashing scenario.

https://reviews.llvm.org/D26054

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

7 years agoFix memory leak caused by r286096.
Eric Liu [Mon, 7 Nov 2016 18:40:41 +0000 (18:40 +0000)]
Fix memory leak caused by r286096.

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

7 years ago[OPENMP] Fixed codegen for __real/__imag expressions in atomic
Alexey Bataev [Mon, 7 Nov 2016 18:15:02 +0000 (18:15 +0000)]
[OPENMP] Fixed codegen for __real/__imag expressions in atomic
constructs.

For __real/__imag unary expressions clang emits lvalue with the
associated type from the original complex expression, but not the
underlying builtin integer or float type. This causes crash in codegen
for atomic constructs, if __real/__imag expression are used in atomic
  constructs.

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

7 years agoFix use-of-temporary with StringRef in code coverage
Jordan Rose [Mon, 7 Nov 2016 17:28:04 +0000 (17:28 +0000)]
Fix use-of-temporary with StringRef in code coverage

The fixed code is basically identical to the same loop below, which
might indicate an opportunity for refactoring. I just wanted to fix
the use-of-temporary issue.

Caught by adding a similar check to StringRef as r283798 did for
ArrayRef. I'll be upstreaming that soon.

Reviewed by Vedant Kumar as https://reviews.llvm.org/D26317.

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

7 years ago[www] Update the link to the 'include what you use' project
Alex Lorenz [Mon, 7 Nov 2016 16:56:19 +0000 (16:56 +0000)]
[www] Update the link to the 'include what you use' project

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

7 years ago[OpenCL] Remove redundant test for OpenCL header file
Yaxun Liu [Mon, 7 Nov 2016 15:55:51 +0000 (15:55 +0000)]
[OpenCL] Remove redundant test for OpenCL header file
Differential Revision: https://reviews.llvm.org/D26302

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

7 years ago[OPENMP] Fixed test on MIPS-based buildbots.
Alexey Bataev [Mon, 7 Nov 2016 13:37:34 +0000 (13:37 +0000)]
[OPENMP] Fixed test on MIPS-based buildbots.

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

7 years ago[OPENMP] Fixed capturing of VLA variables.
Alexey Bataev [Mon, 7 Nov 2016 11:16:04 +0000 (11:16 +0000)]
[OPENMP] Fixed capturing of VLA variables.

After some changes in codegen capturing of VLA variables in OpenMP regions was broken, causing compiler crash. Patch fixes this issue.

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

7 years agoRevert "[OPENMP] Fixed capturing of VLA variables."
Diana Picus [Mon, 7 Nov 2016 10:01:43 +0000 (10:01 +0000)]
Revert "[OPENMP] Fixed capturing of VLA variables."

This reverts commit r286098 because the modified test breaks on many of the
buildbots.

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

7 years ago[OPENMP] Fixed capturing of VLA variables.
Alexey Bataev [Mon, 7 Nov 2016 08:07:25 +0000 (08:07 +0000)]
[OPENMP] Fixed capturing of VLA variables.

After some changes in codegen capturing of VLA variables in OpenMP
regions was broken, causing compiler crash. Patch fixes this issue.

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

7 years ago[AVX-512][Sema] Add more intrinsics to the checks for valid immediates for embedded...
Craig Topper [Mon, 7 Nov 2016 07:01:09 +0000 (07:01 +0000)]
[AVX-512][Sema] Add more intrinsics to the checks for valid immediates for embedded rounding control arguments.

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

7 years agoDeduplicate replacements by FileEntry instead of file names.
Eric Liu [Mon, 7 Nov 2016 06:08:23 +0000 (06:08 +0000)]
Deduplicate replacements by FileEntry instead of file names.

Summary:
The current version does not deduplicate equivalent file paths correctly.
For example, a relative path and an absolute path are considered inequivalent.
Comparing FileEnry addresses these issues.

Reviewers: djasper

Subscribers: alexshap, klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D26288

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

7 years agoclang-format: Better support for CUDA's triple brackets.
Daniel Jasper [Sat, 5 Nov 2016 17:43:16 +0000 (17:43 +0000)]
clang-format: Better support for CUDA's triple brackets.

Before:
  aaaaaaaaaaaaaaa<
      aaaaaaaaaaaaaaaaaaa,
      aaaaaaaaaaaaaa><<<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>>>();

After:
  aaaaaaaaaaaaaaa<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>
      <<<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>>>();

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

7 years ago[test] Test that static_assert is properly visited in liblcang
Olivier Goffart [Fri, 4 Nov 2016 12:04:16 +0000 (12:04 +0000)]
[test] Test that static_assert is properly visited in liblcang

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

7 years ago[python bindings] Expose CXCursor_FriendDecl as CursorKind.FRIEND_DECL
Olivier Goffart [Fri, 4 Nov 2016 06:50:59 +0000 (06:50 +0000)]
[python bindings] Expose CXCursor_FriendDecl as CursorKind.FRIEND_DECL

CXCursor_FriendDecl was added in r285984

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

7 years agoAdd some more asserts to clearly indicate that there are special cases
Chandler Carruth [Fri, 4 Nov 2016 06:32:57 +0000 (06:32 +0000)]
Add some more asserts to clearly indicate that there are special cases
which guarantee pointers are not null. These all seem to have useful
properties and correlations to document, in one case we even had it in
a comment but now it will also be an assert.

This should prevent PVS-Studio from incorrectly claiming that there are
a bunch of potential bugs here. But I feel really strongly that the
PVS-Studio warnings that pointed at this code have a far too high
false-positive rate to be entirely useful. These are just places where
there did seem to be a useful invariant to document and verify with an
assert. Several other places in the code were already correct and
already have perfectly clear code documenting and validating their
invariants, but still ran afoul of PVS-Studio.

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

7 years ago[index] Expose FriendDecl
Olivier Goffart [Fri, 4 Nov 2016 06:29:27 +0000 (06:29 +0000)]
[index] Expose FriendDecl

Differential Revision: https://reviews.llvm.org/D26285

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

7 years agoDelete a trivially true check for a variable 'S' being null.
Chandler Carruth [Fri, 4 Nov 2016 06:16:09 +0000 (06:16 +0000)]
Delete a trivially true check for a variable 'S' being null.

The exact same test guards entry into the loop in which this test
occurs, and there is nothing inside the loop that assigns to the
variable, so it has already been checked for null.

This was flagged by PVS-Studio as well, but the report is actually wrong
-- this is not a case where we dereference a variable prior to testing
it for null, this is a case where we have a redundant test for null
after we already performed the exact same test.

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

7 years agoAdd an assert to further check the invariant that a null pointer
Chandler Carruth [Fri, 4 Nov 2016 06:11:54 +0000 (06:11 +0000)]
Add an assert to further check the invariant that a null pointer
corresponds to another argument being valid.

This makes it clear that the code is correct despite the PVS-Studio
report that a pointer might be dereferenced prior to being checked for
whether it is null. It likely is also enough for static analyzers to not
flag the code.

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

7 years agoEnhancement to test for -ast-print
Serge Pavlov [Fri, 4 Nov 2016 06:09:23 +0000 (06:09 +0000)]
Enhancement to test for -ast-print

Present tests for the functionality provided by command lime option
`-ast-print` check only absence of crash. This change tries to make
testing better, - the output produced by the compiler is compiled again
with option `-print-ast` and both outputs are compared. Such test at
least checks that the output is valid code. This change fixes only the
test for pure C.

This is recommit of r285882.

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

7 years agoRemove no-op checks for a null CodeCompleter. We have already
Chandler Carruth [Fri, 4 Nov 2016 06:06:50 +0000 (06:06 +0000)]
Remove no-op checks for a null CodeCompleter. We have already
dereferenced the pointer at this point, and these routines are
exclusively called after the parser encounters a code completion token.
Other code completion routines called at that point do not check for
null either, so this is clearly the current invariant expected in the
code.

This fixes another PVS-Studio found issue.

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

7 years agoDo not print enum underlying type if language is not C++11
Serge Pavlov [Fri, 4 Nov 2016 06:03:34 +0000 (06:03 +0000)]
Do not print enum underlying type if language is not C++11

Output generated by option '-ast-print' must not contains enum
base type specifications if source language does not include C++11.

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

7 years agoRemove the unused POLLY_LINK_LIBS for linking polly into clang
Hongbin Zheng [Thu, 3 Nov 2016 22:02:40 +0000 (22:02 +0000)]
Remove the unused POLLY_LINK_LIBS for linking polly into clang

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

7 years agoAdd debug info support for C++11 inline namespaces.
Adrian Prantl [Thu, 3 Nov 2016 19:42:14 +0000 (19:42 +0000)]
Add debug info support for C++11 inline namespaces.

<rdar://problem/18616046>

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

7 years agoImprove obvious-most-derived-type devirtualization:
Richard Smith [Thu, 3 Nov 2016 18:55:18 +0000 (18:55 +0000)]
Improve obvious-most-derived-type devirtualization:

  * if the base is produced by a series of derived-to-base conversions, check
    the expression inside them when looking for an expression with a known
    dynamic type
  * step past MaterializeTemporaryExprs when checking for a known dynamic type
  * when checking for a known dynamic type, treat all class prvalues as having
    a known dynamic type after skipping all relevant rvalue subobject
    adjustments
  * treat callees formed by pointer-to-member access for a non-reference member
    type like callees formed by member access.

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

7 years agoInstead of resetting the pointer, or releasing it which was the previous
Chandler Carruth [Thu, 3 Nov 2016 18:03:14 +0000 (18:03 +0000)]
Instead of resetting the pointer, or releasing it which was the previous
code, let's just assert that the DiagonsticEngine doesn't own the client
because our constructor took ownership of it and has a std::unique_ptr
that handles deleting it. This seems much more clear -- the release was
harmless but confusing as if there were some memory there it would have
leaked, and the reset was harmless but confusing as if there were some
memory there it would have been double-freed. But in both cases there
was nothing there.

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

7 years agoUsing release to free memory is at best confusing -- one would expect
Chandler Carruth [Thu, 3 Nov 2016 17:42:32 +0000 (17:42 +0000)]
Using release to free memory is at best confusing -- one would expect
that its result is in fact used. Instead, use reset.

This was pointed out by PVS-Studio.

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

7 years agoFix spelling mistake.
Akira Hatanaka [Thu, 3 Nov 2016 17:11:28 +0000 (17:11 +0000)]
Fix spelling mistake.

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

7 years agoFixed column shift when formatting line containing bit shift operators
Malcolm Parsons [Thu, 3 Nov 2016 16:57:30 +0000 (16:57 +0000)]
Fixed column shift when formatting line containing bit shift operators

Summary:
During clang-format source lexing >> and << operators are split and
treated as two less/greater operators but column position of following
tokens was not adjusted accordingly.

Fixes PR26887

Patch by Paweł Żukowski.

Reviewers: djasper

Subscribers: malcolm.parsons, mprobst, klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D25439

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

7 years agoRename the version of ConstructJob for multiple outputs to ConstructJobMultipleOutputs.
Samuel Antao [Thu, 3 Nov 2016 15:41:50 +0000 (15:41 +0000)]
Rename the version of ConstructJob for multiple outputs to ConstructJobMultipleOutputs.

It was causing trouble with the GCC bots.

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

7 years ago[Sema] Avoid instantiating templates only when UncompilableErrorOccurred
Akira Hatanaka [Thu, 3 Nov 2016 15:04:58 +0000 (15:04 +0000)]
[Sema] Avoid instantiating templates only when UncompilableErrorOccurred
and FatalErrorOccurred are both set.

This fixes a crash that occurs when a warning promoted to a fatal error
leaves the AST in an incomplete state, and then later CFG analysis is
run on the incomplete AST.

rdar://problem/28558923

Differential Revision: https://reviews.llvm.org/D26166

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

7 years agoSupport for Python 3 in libclang python bindings
Jonathan Coe [Thu, 3 Nov 2016 13:55:34 +0000 (13:55 +0000)]
Support for Python 3 in libclang python bindings

Summary:
Python bindings tests now pass in Python 3.

`map` in Python 3 is lazily evaluated so the method by which functions are registered needed updating.

Strings are unicode in Python 3 not UTF-8, I've tried to create an new c_types-like class (c_string_p) to automate the conversion.

String conversions made explicit where required.

Reviewers: eliben, nemanjai, skalinichev, compnerd

Subscribers: mgorny, cfe-commits

Differential Revision: https://reviews.llvm.org/D26082

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

7 years agoRemove redundant calls to std::string::data()
Malcolm Parsons [Thu, 3 Nov 2016 12:25:51 +0000 (12:25 +0000)]
Remove redundant calls to std::string::data()

Reviewers: aaron.ballman, mehdi_amini, dblaikie

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D26276

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

7 years agoReverted r285882 (Enhancement to test for -ast-print)
Serge Pavlov [Thu, 3 Nov 2016 08:58:44 +0000 (08:58 +0000)]
Reverted r285882 (Enhancement to test for -ast-print)

It broke buildbot on Windows.

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

7 years agoFix heuristics skipping invalid ctor-initializers with C++11
Olivier Goffart [Thu, 3 Nov 2016 07:36:17 +0000 (07:36 +0000)]
Fix heuristics skipping invalid ctor-initializers with C++11

Use better heuristics to detect if a '{' might be the start of the constructor body
or not. Especially when there is a completion token.

Fix the test 'test/CodeCompletion/ctor-initializer.cpp ' when clang defaults to c++11

The problem was is how we recover invalid code in the ctor-init part as we skip the
function body. In particular, we want to know if a '{' is the begining of the body.
In C++03, we always consider it as the beginng of the body. The problem was that in
C++11, it may be the start of an initializer, so we skip over it, causing further
parse errors later. (It is important that we are able to parse correctly the rest
of the class definition, to know what are the class member, for example)

This commit is improving the heuristics to decide if the '{' is starting a function
body. The rules are the following: If we are not in a template argument, and that the
previous tokens are not an identifier, or a >, then it is much more likely to be the
function body. We verify that further by checking the token after the matching '}'

The commit also fix the behavior when there is a code_completion token in the
ctor-initializers.

Differential Revision: https://reviews.llvm.org/D21502

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

7 years agoEnhancement to test for -ast-print
Serge Pavlov [Thu, 3 Nov 2016 07:32:02 +0000 (07:32 +0000)]
Enhancement to test for -ast-print

Present tests for the functionality provided by command lime option
`-ast-print` check only absence of crash. This change tries to make
testing better, - the output produced by the compiler is compiled again
with option `-print-ast` and both outputs are compared. Such test at
least checks that the output is valid code. This change fixes only the
test for pure C.

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

7 years ago[Sema] Remove a dead assignment, NFC.
Vedant Kumar [Thu, 3 Nov 2016 06:35:16 +0000 (06:35 +0000)]
[Sema] Remove a dead assignment, NFC.

The assignment to NextIsDereference is either followed by (1) another,
unrelated assignment to NextIsDereference or by (2) an early loop exit.

Found by clang's static analyzer: http://llvm.org/reports/scan-build

(While we're at it fix a typo.)

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

7 years ago[CodeGen] Use StringRef. NFC.
George Burgess IV [Thu, 3 Nov 2016 02:21:43 +0000 (02:21 +0000)]
[CodeGen] Use StringRef. NFC.

Looks like CurFn's name outlives FunctionName, so we can just pass
StringRefs around rather than going from a StringRef to a std::string
to a const char* to a StringRef.

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

7 years ago[Sema] Allow static_cast<T&&>(e) to check explicit conversions for non-reference...
Eric Fiselier [Thu, 3 Nov 2016 02:13:17 +0000 (02:13 +0000)]
[Sema] Allow static_cast<T&&>(e) to check explicit conversions for non-reference-related types.

Summary:
[expr.cast.static] states:
> 3. A glvalue of type “cv1 T1” can be cast to type “rvalue reference to cv2 T2” if “cv2 T2” is reference-compatible
> with “cv1 T1”. The result refers to the object or the specified base class subobject thereof. If T2 is
> an inaccessible or ambiguous base class of T1, a program that necessitates such a cast is
> ill-formed.
>
> 4. Otherwise, an expression e can be explicitly converted to a type T using a static_cast of the form static_-
> cast<T>(e) if the declaration T t(e); is well-formed, for some invented temporary variable t. [...]

Currently when checking p3 Clang will diagnose `static_cast<T&&>(e)` as invalid if the argument is not reference compatible with `T`. However I believe the correct behavior is to also check p4 in those cases.  For example:

```
double y = 42;
static_cast<int&&>(y); // this should be OK.  'int&& t(y)' is well formed
```

Note that we still don't check p4 for non-reference-compatible types which are reference-related since  `T&& t(e);` should never be well formed in those cases.

Reviewers: rsmith

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D26231

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

7 years agoUpdate manglings for C++17 noexcept function types to match Jason Merrill's
Richard Smith [Thu, 3 Nov 2016 00:27:54 +0000 (00:27 +0000)]
Update manglings for C++17 noexcept function types to match Jason Merrill's
proposal on cxx-abi-dev earlier today.

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

7 years agoTeach clang-query to dump types. I couldn't find any existing tests for clang-query...
Richard Smith [Wed, 2 Nov 2016 23:57:18 +0000 (23:57 +0000)]
Teach clang-query to dump types. I couldn't find any existing tests for clang-query's dumping functionality. =(

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

7 years ago[index] Fix assertion hit when handling a declaration of C++'s 'operator new' function.
Argyrios Kyrtzidis [Wed, 2 Nov 2016 23:42:33 +0000 (23:42 +0000)]
[index] Fix assertion hit when handling a declaration of C++'s 'operator new' function.

Part of this is to allow creating a USR for the canonical decl of that which is implicit and does
not have a source location.

rdar://28978992

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

7 years agoDon't require nullability on template parameters in typedefs.
Jordan Rose [Wed, 2 Nov 2016 20:44:07 +0000 (20:44 +0000)]
Don't require nullability on template parameters in typedefs.

Previously the following code would warn on the use of "T":

  template <typename T>
  struct X {
    typedef T *type;
  };

...because nullability is /allowed/ on template parameters (because
they could be pointers). (Actually putting nullability on this use of
'T' will of course break if the argument is a non-pointer type.)

This fix doesn't handle the case where a template parameter is used
/outside/ of a typedef. That seems trickier, especially in parameter
position.

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

7 years ago[analyzer] StdLibraryFunctions: provide platform-specific function summaries.
Artem Dergachev [Wed, 2 Nov 2016 19:35:20 +0000 (19:35 +0000)]
[analyzer] StdLibraryFunctions: provide platform-specific function summaries.

Because standard functions can be defined differently on different platforms,
this commit introduces a method for constructing summaries with multiple
variants, whichever matches better. It is also useful for supporting overloads.

Differential Revision: https://reviews.llvm.org/D25940

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

7 years agoregcall: Implement regcall Calling Conv in clang
Erich Keane [Wed, 2 Nov 2016 18:29:35 +0000 (18:29 +0000)]
regcall: Implement regcall Calling Conv in clang

This patch implements the register call calling convention, which ensures
as many values as possible are passed in registers. CodeGen changes
were committed in https://reviews.llvm.org/rL284108.

Differential Revision: https://reviews.llvm.org/D25204

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