]> granicus.if.org Git - clang/log
clang
5 years agoFix -Wdocumentation typo. NFCI.
Simon Pilgrim [Tue, 13 Aug 2019 13:52:20 +0000 (13:52 +0000)]
Fix -Wdocumentation typo. NFCI.

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

5 years ago[AIX][test/Index] Set/propagate AIXTHREAD_STK for AIX
Hubert Tong [Tue, 13 Aug 2019 13:38:15 +0000 (13:38 +0000)]
[AIX][test/Index] Set/propagate AIXTHREAD_STK for AIX

Summary:
Some tests perform deep recursion, which requires a larger pthread stack
size than the relatively low default of 192 KiB for 64-bit processes on
AIX. The `AIXTHREAD_STK` environment variable provides a non-intrusive
way to request a larger pthread stack size for the tests. The required
pthread stack size depends on the build configuration.

A 4 MiB default is generous compared to the 512 KiB of macOS; however,
it is known that some compilers on AIX produce code that uses
comparatively more stack space.

Reviewers: xingxue, daltenty, jasonliu

Reviewed By: daltenty

Subscribers: arphaman, jfb, cfe-commits

Tags: #clang

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

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

5 years ago[analyzer][NFC] Refactoring BugReporter.cpp P1.: Store interesting symbols/regions...
Kristof Umann [Tue, 13 Aug 2019 13:09:48 +0000 (13:09 +0000)]
[analyzer][NFC] Refactoring BugReporter.cpp P1.: Store interesting symbols/regions in a simple set

The goal of this refactoring effort was to better understand how interestingness
was propagated in BugReporter.cpp, which eventually turned out to be a dead end,
but with such a twist, I wouldn't even want to spoil it ahead of time. However,
I did get to learn a lot about how things are working in there.

In these series of patches, as well as cleaning up the code big time, I invite
you to study how BugReporter.cpp operates, and discuss how we could design this
file to reduce the horrible mess that it is.

This patch reverts a great part of rC162028, which holds the title "Allow
multiple PathDiagnosticConsumers to be used with a BugReporter at the same
time.". This, however doesn't imply that there's any need for multiple "layers"
or stacks of interesting symbols and regions, quite the contrary, I would argue
that we would like to generate the same amount of information for all output
types, and only process them differently.

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

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

5 years ago[libTooling] In Transformer, generalize `applyFirst` to admit rules with incompatible...
Yitzhak Mandelbaum [Tue, 13 Aug 2019 12:31:29 +0000 (12:31 +0000)]
[libTooling] In Transformer, generalize `applyFirst` to admit rules with incompatible matchers.

Summary:
This patch removes an (artificial) limitation of `applyFirst`, which requires
that all of the rules' matchers can be grouped together in a single `anyOf()`.
This change generalizes the code to group the matchers into separate `anyOf`s
based on compatibility. Correspondingly, `buildMatcher` is changed to
`buildMatchers`, to allow for returning a set of matchers rather than just one.

Reviewers: gribozavr

Subscribers: cfe-commits

Tags: #clang

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

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

5 years ago[CodeGen] Disable UBSan for coroutine functions
Brian Gesiak [Tue, 13 Aug 2019 12:02:25 +0000 (12:02 +0000)]
[CodeGen] Disable UBSan for coroutine functions

Summary:
As explained in http://lists.llvm.org/pipermail/llvm-dev/2018-March/121924.html,
the LLVM coroutines transforms are not yet able to move the
instructions for UBSan null checking past coroutine suspend boundaries.
For now, disable all UBSan checks when generating code for coroutines
functions.

I also considered an approach where only '-fsanitize=null' would be disabled,
However in practice this led to other LLVM errors when writing object files:
"Cannot represent a difference across sections". For now, disable all
UBSan checks until coroutine transforms are updated to handle them.

Test Plan:
1. check-clang
2. Compile the program in https://gist.github.com/modocache/54a036c3bf9c06882fe85122e105d153
   using the '-fsanitize=null' option and confirm it does not crash
   during LLVM IR generation.

Reviewers: GorNishanov, vsk, eric_niebler, lewissbaker

Reviewed By: vsk

Subscribers: cfe-commits

Tags: #clang

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

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

5 years ago[NFC] Updated tests after r368657
David Bolvansky [Tue, 13 Aug 2019 09:12:07 +0000 (09:12 +0000)]
[NFC] Updated tests after r368657

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

5 years ago[ASTImporter] Import additional flags for functions.
Balazs Keri [Tue, 13 Aug 2019 08:04:06 +0000 (08:04 +0000)]
[ASTImporter] Import additional flags for functions.

Summary:
At AST import of function delcarations import the flags for defaulted
and deleted.

Reviewers: martong, a.sidorin, shafik, a_sidorin

Reviewed By: a_sidorin

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

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

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

5 years agoclang-scan-deps: do not spawn threads when LLVM_ENABLE_THREADS is disabled
Alex Lorenz [Tue, 13 Aug 2019 00:36:35 +0000 (00:36 +0000)]
clang-scan-deps: do not spawn threads when LLVM_ENABLE_THREADS is disabled

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

5 years ago[X86] Remove 'Server' from Tigerlake description comments.
Craig Topper [Tue, 13 Aug 2019 00:00:27 +0000 (00:00 +0000)]
[X86] Remove 'Server' from Tigerlake description comments.

Tigerlake is a client CPU not a server CPU.

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

5 years ago[clang] Update isDerivedFrom to support Objective-C classes 🔍
Stephane Moore [Mon, 12 Aug 2019 23:23:35 +0000 (23:23 +0000)]
[clang] Update isDerivedFrom to support Objective-C classes 🔍

Summary:
This change updates `isDerivedFrom` to support Objective-C classes by
converting it to a polymorphic matcher.

Notes:
The matching behavior for Objective-C classes is modeled to match the
behavior of `isDerivedFrom` with C++ classes. To that effect,
`isDerivedFrom` matches aliased types of derived Objective-C classes,
including compatibility aliases. To achieve this, the AST visitor has
been updated to map compatibility aliases to their underlying
Objective-C class.

`isSameOrDerivedFrom` also provides similar behaviors for C++ and
Objective-C classes. The behavior that
`cxxRecordDecl(isSameOrDerivedFrom("X"))` does not match
`class Y {}; typedef Y X;` is mirrored for Objective-C in that
`objcInterfaceDecl(isSameOrDerivedFrom("X"))` does not match either
`@interface Y @end typedef Y X;` or
`@interface Y @end @compatibility_alias X Y;`.

Test Notes:
Ran clang unit tests.

Reviewers: aaron.ballman, jordan_rose, rjmccall, klimek, alexfh, gribozavr

Reviewed By: aaron.ballman, gribozavr

Subscribers: cfe-commits

Tags: #clang

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

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

5 years ago[Sema] Check __builtin_bit_cast operand for completeness before materializing it.
Erik Pilkington [Mon, 12 Aug 2019 19:29:43 +0000 (19:29 +0000)]
[Sema] Check __builtin_bit_cast operand for completeness before materializing it.

This shouldn't be observable, but it doesn't make sense to materialize an
incomplete type.

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

5 years ago[Sema] Require a complete type for __builtin_bit_cast operands
Erik Pilkington [Mon, 12 Aug 2019 18:31:27 +0000 (18:31 +0000)]
[Sema] Require a complete type for __builtin_bit_cast operands

Fixes llvm.org/PR42936

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

5 years ago[ASTDump] Add is_anonymous to VisitCXXRecordDecl
Shafik Yaghmour [Mon, 12 Aug 2019 17:07:49 +0000 (17:07 +0000)]
[ASTDump] Add is_anonymous to VisitCXXRecordDecl

Summary:
Adding is_anonymous the ASTDump for CXXRecordDecl. This turned out to be useful when debugging some problems with how LLDB creates ASTs from DWARF.

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

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

5 years agoFix multiple lifetime warning messages for range based for loop
Gabor Horvath [Mon, 12 Aug 2019 16:19:39 +0000 (16:19 +0000)]
Fix multiple lifetime warning messages for range based for loop

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

5 years ago[CrossTU] User docs: remove temporary limiation with macro expansion
Gabor Marton [Mon, 12 Aug 2019 12:46:28 +0000 (12:46 +0000)]
[CrossTU] User docs: remove temporary limiation with macro expansion

D65064, D64635, D64638 pathces solve the issue with macor expansion.

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

5 years ago[OpenCL] Ignore parentheses for sampler initialization
Sven van Haastregt [Mon, 12 Aug 2019 12:44:26 +0000 (12:44 +0000)]
[OpenCL] Ignore parentheses for sampler initialization

The sampler handling logic in SemaInit.cpp would inadvertently treat
parentheses around sampler arguments as an implicit cast, leading to
an unreachable "can't implicitly cast lvalue to rvalue with
this cast kind".  Fix by ignoring parentheses once we are in the
sampler initializer case.

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

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

5 years ago[OpenCL] Fix lang mode predefined macros for C++ mode.
Anastasia Stulova [Mon, 12 Aug 2019 10:44:07 +0000 (10:44 +0000)]
[OpenCL] Fix lang mode predefined macros for C++ mode.

In C++ mode we should only avoid adding __OPENCL_C_VERSION__,
all other predefined macros about the language mode are still
valid.

This change also fixes the language version check in the
headers accordingly.

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

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

5 years ago[ASTImporter] Fix for import of friend class template with definition.
Balazs Keri [Mon, 12 Aug 2019 10:07:38 +0000 (10:07 +0000)]
[ASTImporter] Fix for import of friend class template with definition.

Summary:
If there is a friend class template "prototype" (forward declaration)
and later a definition for it in the existing code, this existing
definition may be not found by ASTImporter because it is not linked
to the prototype (under the friend AST node). The problem is fixed by
looping over all found matching decls instead of break after the first
found one.

Reviewers: martong, a.sidorin, shafik, a_sidorin

Reviewed By: a_sidorin

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

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

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

5 years ago[CrossTU] Fix problem with CrossTU AST load limit and progress messages.
Balazs Keri [Mon, 12 Aug 2019 07:15:29 +0000 (07:15 +0000)]
[CrossTU] Fix problem with CrossTU AST load limit and progress messages.

Summary:
Number of loaded ASTs is to be incremented only if the AST was really loaded
but not if it was returned from cache. At the same place the message about
a loaded AST is displayed.

Reviewers: martong, gamesh411

Reviewed By: martong

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

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

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

5 years ago[X86] Support -march=tigerlake
Pengfei Wang [Mon, 12 Aug 2019 01:29:46 +0000 (01:29 +0000)]
[X86] Support -march=tigerlake

Support -march=tigerlake for x86.
Compare with Icelake Client, It include 4 more new features ,they are
avx512vp2intersect, movdiri, movdir64b, shstk.

Patch by Xiang Zhang (xiangzhangllvm)

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

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

5 years ago[clang-format] Expand AllowShortBlocksOnASingleLine for WebKit
Owen Pan [Sun, 11 Aug 2019 17:48:36 +0000 (17:48 +0000)]
[clang-format] Expand AllowShortBlocksOnASingleLine for WebKit

See PR40840

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

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

5 years agoProperly detect temporary gsl::Owners through reference initialization chains.
Gabor Horvath [Sun, 11 Aug 2019 14:39:42 +0000 (14:39 +0000)]
Properly detect temporary gsl::Owners through reference initialization chains.

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

5 years agoProperly handle reference initialization when detecting gsl::Pointer initialization...
Gabor Horvath [Sun, 11 Aug 2019 08:05:28 +0000 (08:05 +0000)]
Properly handle reference initialization when detecting gsl::Pointer initialization chains

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

5 years ago[clang] Fixed x86 cpuid NSC signature
Raphael Isemann [Sat, 10 Aug 2019 10:14:01 +0000 (10:14 +0000)]
[clang] Fixed x86 cpuid NSC signature

Summary:
The signature "Geode by NSC" for NSC vendor is wrong.
In lib/Headers/cpuid.h, signature_NSC_edx and signature_NSC_ecx constants are inverted (cpuid signature order is ebx # edx # ecx).

Reviewers: teemperor, rsmith, craig.topper

Reviewed By: teemperor, craig.topper

Subscribers: craig.topper, cfe-commits

Tags: #clang

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

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

5 years ago[modulemap] Add AArch64SVEACLETypes.def
Kristina Brooks [Sat, 10 Aug 2019 08:21:14 +0000 (08:21 +0000)]
[modulemap] Add AArch64SVEACLETypes.def

Update modulemap with a new textual header.

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

5 years ago[clang-format] Add SpaceInEmptyBlock option for WebKit
Owen Pan [Sat, 10 Aug 2019 07:51:21 +0000 (07:51 +0000)]
[clang-format] Add SpaceInEmptyBlock option for WebKit

See PR40840

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

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

5 years agoFix a false positive warning when initializing members with gsl::Owners.
Gabor Horvath [Sat, 10 Aug 2019 00:32:29 +0000 (00:32 +0000)]
Fix a false positive warning when initializing members with gsl::Owners.

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

5 years agoAttempt to reapply "Even more warnings utilizing gsl::Owner/gsl::Pointer annotations"
Gabor Horvath [Fri, 9 Aug 2019 23:03:50 +0000 (23:03 +0000)]
Attempt to reapply "Even more warnings utilizing gsl::Owner/gsl::Pointer annotations"

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

5 years agocfi-icall: Allow the jump table to be optionally made non-canonical.
Peter Collingbourne [Fri, 9 Aug 2019 22:31:59 +0000 (22:31 +0000)]
cfi-icall: Allow the jump table to be optionally made non-canonical.

The default behavior of Clang's indirect function call checker will replace
the address of each CFI-checked function in the output file's symbol table
with the address of a jump table entry which will pass CFI checks. We refer
to this as making the jump table `canonical`. This property allows code that
was not compiled with ``-fsanitize=cfi-icall`` to take a CFI-valid address
of a function, but it comes with a couple of caveats that are especially
relevant for users of cross-DSO CFI:

- There is a performance and code size overhead associated with each
  exported function, because each such function must have an associated
  jump table entry, which must be emitted even in the common case where the
  function is never address-taken anywhere in the program, and must be used
  even for direct calls between DSOs, in addition to the PLT overhead.

- There is no good way to take a CFI-valid address of a function written in
  assembly or a language not supported by Clang. The reason is that the code
  generator would need to insert a jump table in order to form a CFI-valid
  address for assembly functions, but there is no way in general for the
  code generator to determine the language of the function. This may be
  possible with LTO in the intra-DSO case, but in the cross-DSO case the only
  information available is the function declaration. One possible solution
  is to add a C wrapper for each assembly function, but these wrappers can
  present a significant maintenance burden for heavy users of assembly in
  addition to adding runtime overhead.

For these reasons, we provide the option of making the jump table non-canonical
with the flag ``-fno-sanitize-cfi-canonical-jump-tables``. When the jump
table is made non-canonical, symbol table entries point directly to the
function body. Any instances of a function's address being taken in C will
be replaced with a jump table address.

This scheme does have its own caveats, however. It does end up breaking
function address equality more aggressively than the default behavior,
especially in cross-DSO mode which normally preserves function address
equality entirely.

Furthermore, it is occasionally necessary for code not compiled with
``-fsanitize=cfi-icall`` to take a function address that is valid
for CFI. For example, this is necessary when a function's address
is taken by assembly code and then called by CFI-checking C code. The
``__attribute__((cfi_jump_table_canonical))`` attribute may be used to make
the jump table entry of a specific function canonical so that the external
code will end up taking a address for the function that will pass CFI checks.

Fixes PR41972.

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

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

5 years ago[OpenMP] Add support for close map modifier in Clang
Gheorghe-Teodor Bercea [Fri, 9 Aug 2019 21:42:13 +0000 (21:42 +0000)]
[OpenMP] Add support for close map modifier in Clang

Summary:
This patch adds support for the close map modifier in Clang.

This ensures that the new map type is marked and passed to the OpenMP runtime appropriately.

Additional regression tests have been merged from patch D55892 (author @saghir).

Reviewers: ABataev, caomhin, jdoerfert, kkwli0

Reviewed By: ABataev

Subscribers: kkwli0, Hahnfeld, saghir, guansong, cfe-commits

Tags: #clang

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

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

5 years agoDon't diagnose errors when a file matches an include component
Reid Kleckner [Fri, 9 Aug 2019 19:49:14 +0000 (19:49 +0000)]
Don't diagnose errors when a file matches an include component

This regressed in r368322, and was reported as PR42948 and on the
mailing list. The fix is to ignore the specific error code for this
case. The problem doesn't seem to reproduce on Windows, where a
different error code is used instead.

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

5 years agoUpdate test to explicity test with -fintegrated-as and -fno-integrated-as and to...
Douglas Yung [Fri, 9 Aug 2019 19:47:18 +0000 (19:47 +0000)]
Update test to explicity test with -fintegrated-as and -fno-integrated-as and to expect warnings when appropriate.

Reviewed by: thakis

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

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

5 years agoCodeGen: ensure 8-byte aligned String Swift CF ABI
Saleem Abdulrasool [Fri, 9 Aug 2019 19:29:05 +0000 (19:29 +0000)]
CodeGen: ensure 8-byte aligned String Swift CF ABI

CFStrings should be 8-byte aligned when built for the Swift CF runtime
ABI as the atomic CF info field must be properly aligned.  This is a
problem on 32-bit platforms which would give the structure 4-byte
alignment rather than 8-byte alignment.

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

5 years agoRevert Even more warnings utilizing gsl::Owner/gsl::Pointer annotations
Gabor Horvath [Fri, 9 Aug 2019 19:01:23 +0000 (19:01 +0000)]
Revert Even more warnings utilizing gsl::Owner/gsl::Pointer annotations

This reverts r368454 (git commit 7c3c8ba8daf40534e09f6fe8701b723e25e4e2dc)

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

5 years agoRevert Fix a build bot failure and multiple warnings instances for range base for...
Gabor Horvath [Fri, 9 Aug 2019 18:58:09 +0000 (18:58 +0000)]
Revert Fix a build bot failure and multiple warnings instances for range base for loops

This reverts r368459 (git commit 2bf522aea62e4fb653cacb68072167d25149099e)

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

5 years agoFix a build bot failure and multiple warnings instances for range base for loops
Gabor Horvath [Fri, 9 Aug 2019 17:42:41 +0000 (17:42 +0000)]
Fix a build bot failure and multiple warnings instances for range base for loops

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

5 years agoRename PCH/leakfiles test so it runs on bots.
Sam McCall [Fri, 9 Aug 2019 17:13:56 +0000 (17:13 +0000)]
Rename PCH/leakfiles test so it runs on bots.

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

5 years agoEven more warnings utilizing gsl::Owner/gsl::Pointer annotations
Gabor Horvath [Fri, 9 Aug 2019 17:11:32 +0000 (17:11 +0000)]
Even more warnings utilizing gsl::Owner/gsl::Pointer annotations

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

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

5 years agoMore warnings regarding gsl::Pointer and gsl::Owner attributes
Gabor Horvath [Fri, 9 Aug 2019 15:16:35 +0000 (15:16 +0000)]
More warnings regarding gsl::Pointer and gsl::Owner attributes

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

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

5 years agoAdd SVE opaque built-in types
Richard Sandiford [Fri, 9 Aug 2019 08:52:54 +0000 (08:52 +0000)]
Add SVE opaque built-in types

This patch adds the SVE built-in types defined by the Procedure Call
Standard for the Arm Architecture:

   https://developer.arm.com/docs/100986/0000

It handles the types in all relevant places that deal with built-in types.
At the moment, some of these places bail out with an error, including:

   (1) trying to generate LLVM IR for the types
   (2) trying to generate debug info for the types
   (3) trying to mangle the types using the Microsoft C++ ABI
   (4) trying to @encode the types in Objective C

(1) and (2) are fixed by follow-on patches but (unlike this patch)
they deal mostly with target-specific LLVM details, so seemed like
a logically separate change.  There is currently no spec for (3) and
(4), so reporting an error seems like the correct behaviour for now.

The intention is that the types will become sizeless types:

   http://lists.llvm.org/pipermail/cfe-dev/2019-June/062523.html

The main purpose of the sizeless type extension is to diagnose
impossible or dangerous uses of the types, such as any that would
require sizeof to have a meaningful defined value.

Until then, the patch sets the alignments of the types to the values
specified in the link above.  It also sets the sizes of the types to
zero, which is chosen to be consistently wrong and shouldn't affect
correctly-written code (i.e. code that would compile even with the
sizeless type extension).

The patch adds the common subset of functionality needed to test the
sizeless type extension on the one hand and to provide SVE intrinsic
functions on the other.  After this patch, the two pieces of work are
essentially independent.

The patch is based on one by Graham Hunter:

   https://reviews.llvm.org/D59245

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

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

5 years ago[AST] No longer visiting CXXMethodDecl bodies created by compiler when method was...
Johan Vikstrom [Fri, 9 Aug 2019 07:30:28 +0000 (07:30 +0000)]
[AST] No longer visiting CXXMethodDecl bodies created by compiler when method was default created.

Summary:
Clang generates function bodies and puts them in the AST for default methods if it is defaulted outside the class definition.

`
struct A {
   A &operator=(A &&O);
};

A &A::operator=(A &&O) = default;
`

This will generate a function body for the `A &A::operator=(A &&O)` and put it in the AST. This body should not be visited if implicit code is not visited as it is implicit.

This was causing SemanticHighlighting in clangd to generate duplicate tokens and putting them in weird places.

Reviewers: hokein, ilya-biryukov, gribozavr

Subscribers: mgorny, jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

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

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

5 years agoUse ASSERT_THAT_ERROR instead of logAllUnhandledErrors/exit
Dmitri Gribenko [Fri, 9 Aug 2019 06:14:54 +0000 (06:14 +0000)]
Use ASSERT_THAT_ERROR instead of logAllUnhandledErrors/exit

Summary: ASSERT_THAT_ERROR looks like the intended helper for use in tests.

Reviewers: plotfi, jkorous, compnerd

Subscribers: mgorny, dexonsmith, cfe-commits

Tags: #clang

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

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

5 years ago[clang][NFC] Consolidating usage of "FinalPhase" in Driver::BuildActions.
Puyan Lotfi [Fri, 9 Aug 2019 04:55:09 +0000 (04:55 +0000)]
[clang][NFC] Consolidating usage of "FinalPhase" in Driver::BuildActions.

I am working to remove this concept of the "FinalPhase" in the clang driver,
but it is used in a lot of different places to do argument handling for
different combinations of phase pipelines and arguments. I am trying to
consolidate most of the uses of "FinalPhase" into its own separate scope.
Eventually, in a subsequent patch I will move all of this stuff to a separate
function, and have more of the complication phase list construction setup into
types::getComplicationPhases.

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

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

5 years ago[PowerPC] [Clang] Port SSE3, SSSE3 and SSE4 intrinsics to PowerPC
Qiu Chaofan [Fri, 9 Aug 2019 03:39:55 +0000 (03:39 +0000)]
[PowerPC] [Clang] Port SSE3, SSSE3 and SSE4 intrinsics to PowerPC

Port existing headers which include x86 intrinsics implementation to
PowerPC platform (using Altivec), along with tests. Also, tests about
including these intrinsic headers are combined.

The headers are mainly developed by Steven Munroe, with contributions
from Paul Clarke, Bill Schmidt, Jinsong Ji and Zixuan Wu.

Reviewed By: Jinsong Ji

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

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

5 years ago[analyzer] CastValueChecker: Model castAs(), getAs()
Csaba Dabis [Fri, 9 Aug 2019 02:24:42 +0000 (02:24 +0000)]
[analyzer] CastValueChecker: Model castAs(), getAs()

Summary: Thanks to Kristóf Umann for the great idea!

Reviewed By: NoQ

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

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

5 years ago[analyzer] ConditionBRVisitor: Fix HTML PathDiagnosticPopUpPieces
Csaba Dabis [Fri, 9 Aug 2019 02:20:44 +0000 (02:20 +0000)]
[analyzer] ConditionBRVisitor: Fix HTML PathDiagnosticPopUpPieces

Summary:
A condition could be a multi-line expression where we create the highlight
in separated chunks. PathDiagnosticPopUpPiece is not made for that purpose,
it cannot be added to multiple lines because we have only one ending part
which contains all the notes. So that it cannot have multiple endings and
therefore this patch narrows down the ranges of the highlight to the given
interesting variable of the condition. It prevents HTML-breaking injections.

Reviewed By: NoQ

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

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

5 years ago[clang-scan-deps] Add minimizer support for C++20 modules.
Michael J. Spencer [Fri, 9 Aug 2019 02:01:10 +0000 (02:01 +0000)]
[clang-scan-deps] Add minimizer support for C++20 modules.

This only adds support to the minimizer, it doesn't actually capture the dependencies yet.

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

5 years agoMark clang-scan-deps test as requiring thread support
Reid Kleckner [Thu, 8 Aug 2019 21:45:59 +0000 (21:45 +0000)]
Mark clang-scan-deps test as requiring thread support

Otherwise the test calls a pure virtual method and crashes. Perhaps this
could be improved.

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

5 years agoFix up fd limit diagnosis code
Reid Kleckner [Thu, 8 Aug 2019 21:35:03 +0000 (21:35 +0000)]
Fix up fd limit diagnosis code

Apparently Windows returns the "invalid argument" error code when the
path contains invalid characters such as '<'. The
test/Preprocessor/include-likely-typo.c test does this, so it was
failing after r368322.

Also, the diagnostic requires two arguments, so add the filename.

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

5 years ago[analyzer] Fix scan-build's plist output in plist-html mode.
Artem Dergachev [Thu, 8 Aug 2019 20:22:32 +0000 (20:22 +0000)]
[analyzer] Fix scan-build's plist output in plist-html mode.

r366941 accidentally made it delete all plist files
as soon as they're produced.

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

5 years ago[clang] add REQUIRES: linux to driver test case
Brian Cain [Thu, 8 Aug 2019 20:12:54 +0000 (20:12 +0000)]
[clang] add REQUIRES: linux to driver test case

The test case explicitly leverages linux, so should include it as
a test requirement.

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

5 years ago[clang] add REQUIRES to driver test case
Brian Cain [Thu, 8 Aug 2019 20:04:39 +0000 (20:04 +0000)]
[clang] add REQUIRES to driver test case

The test case explicitly leverages x86, so should include it as
a test requirement.

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

5 years ago[clang] Add no-warn support for Wa
Brian Cain [Thu, 8 Aug 2019 19:19:20 +0000 (19:19 +0000)]
[clang] Add no-warn support for Wa

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

5 years ago[llvm-mc] Add reportWarning() to MCContext
Brian Cain [Thu, 8 Aug 2019 19:13:23 +0000 (19:13 +0000)]
[llvm-mc] Add reportWarning() to MCContext

Adding reportWarning() to MCContext, so that it can be used from
the Hexagon assembler backend.

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

5 years ago[clang][NFC] Move matcher ignoringElidableConstructorCall's tests to appropriate...
Yitzhak Mandelbaum [Thu, 8 Aug 2019 18:55:42 +0000 (18:55 +0000)]
[clang][NFC] Move matcher ignoringElidableConstructorCall's tests to appropriate file.

Summary:
`ignoringElidableConstructorCall` is a traversal matcher, but its tests are
grouped with narrowing-matcher tests. This revision moves them to the correct
file.

Reviewers: gribozavr

Subscribers: cfe-commits

Tags: #clang

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

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

5 years agoRecommit Devirtualize destructor of final class.
Hiroshi Yamauchi [Thu, 8 Aug 2019 18:00:49 +0000 (18:00 +0000)]
Recommit Devirtualize destructor of final class.

Original patch commited as r364100, reverted as r364359, recommitted as r365509,
reverted as r365850.

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

5 years agoclang: Diag running out of file handles while looking for files
Nico Weber [Thu, 8 Aug 2019 17:58:32 +0000 (17:58 +0000)]
clang: Diag running out of file handles while looking for files

clang would only print "file not found" when it's unable to find a
header file.  If the reason for that is a file handle leak, that's not a
very useful error message.  For errors that aren't in a small whitelist
("file not found", "file is directory"), print an error with the
strerror() output.

This changes behavior in corner cases: If clang was out of file handles
while looking in one -I dir but then suddenly wasn't when looking in the
next -I dir, and both directories contained a file with the desired
name, previously we'd silently return the file from the second
directory. For this reason, it's important to ignore "is a directory"
for this new diag: if a file foo/foo exists and -I -Ifoo are passed, an
include of "foo" should successfully open file "foo" in directory "foo/"
instead of complaining that "./foo" is a directory.

No test since we mostly hit this when there's a handle leak somewhere,
and currently there isn't one. I manually tested this with the repro
steps in comment 2 on the bug below.

Fixes PR42524.

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

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

5 years ago[clang] Update `ignoringElidableConstructorCall` matcher to ignore `ExprWithCleanups`.
Yitzhak Mandelbaum [Thu, 8 Aug 2019 17:41:44 +0000 (17:41 +0000)]
[clang] Update `ignoringElidableConstructorCall` matcher to ignore `ExprWithCleanups`.

Summary:
The `ExprWithCleanups` node is added to the AST along with the elidable
CXXConstructExpr.  If it is the outermost node of the node being matched, ignore
it as well.

Reviewers: gribozavr

Subscribers: cfe-commits

Tags: #clang

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

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

5 years ago[FIX][NFC] Update clang sema test
Diogo N. Sampaio [Thu, 8 Aug 2019 14:45:42 +0000 (14:45 +0000)]
[FIX][NFC] Update clang sema test

Try to fix Sema test for default alignment for when
compiling to ARM, but not to android, due
r9427aa2d543b

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

5 years ago[OPENMP]Add support for analysis of linear variables and step.
Alexey Bataev [Thu, 8 Aug 2019 13:42:45 +0000 (13:42 +0000)]
[OPENMP]Add support for analysis of linear variables and step.

Summary:
Added support for basic analysis of the linear variables and linear step
expression. Linear loop iteration variables must be excluded from this
analysis, only non-loop iteration variables must be analyzed.

Reviewers: NoQ

Subscribers: guansong, cfe-commits, caomhin, kkwli0

Tags: #clang

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

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

5 years ago[ARM] Set default alignment to 64bits
Diogo N. Sampaio [Thu, 8 Aug 2019 12:50:36 +0000 (12:50 +0000)]
[ARM] Set default alignment to 64bits

Summary:
The maximum alignment used by ARM arch
is 64bits, not 128.

This could cause overaligned memory
access for 128 bit neon vector that
have unpredictable behaviour.

This fixes: https://bugs.llvm.org/show_bug.cgi?id=42668

Reviewers: ostannard, dmgreen, srhines, danalbert, pirama, peter.smith

Reviewed By: pirama, peter.smith

Subscribers: phosek, thegameg, thakis, llvm-commits, carwil, peter.smith, javed.absar, kristof.beyls, cfe-commits

Tags: #clang, #llvm

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

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

5 years ago[clang-format] fix crash involving invalid preprocessor line
Krasimir Georgiev [Thu, 8 Aug 2019 11:56:18 +0000 (11:56 +0000)]
[clang-format] fix crash involving invalid preprocessor line

Summary:
This (invalid) fragment is crashing clang-format:
```
#if 1
int x;
#elif
int y;
#endif
```

The reason being that the parser expects a token after `#elif`, and the
subsequent parsing of the next line does not check if `CurrentToken` is null.

Reviewers: gribozavr

Reviewed By: gribozavr

Subscribers: cfe-commits

Tags: #clang

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

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

5 years ago[Extract] Fixed SemicolonExtractionPolicy for SwitchStmt and SwitchCase
Shaurya Gupta [Thu, 8 Aug 2019 08:37:49 +0000 (08:37 +0000)]
[Extract] Fixed SemicolonExtractionPolicy for SwitchStmt and SwitchCase

Reviewers: arphaman, sammccall

Subscribers: dexonsmith, cfe-commits

Tags: #clang

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

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

5 years ago[diagtool] Use `operator<<(Colors)` to print out colored output.
Rui Ueyama [Thu, 8 Aug 2019 07:04:01 +0000 (07:04 +0000)]
[diagtool] Use `operator<<(Colors)` to print out colored output.

r368131 introduced this new API to print out messages in colors.
If the colored output is disabled, `operator<<(Colors)` becomes nop.
No functionality change intended.

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

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

5 years ago[Driver] Delete XFAIL: windows-msvc after D65880/r368245
Fangrui Song [Thu, 8 Aug 2019 04:56:21 +0000 (04:56 +0000)]
[Driver] Delete XFAIL: windows-msvc after D65880/r368245

`-target %itanium_abi_triple` fixed the problem.

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

5 years ago[Driver] Move LIBRARY_PATH before user inputs
Fangrui Song [Thu, 8 Aug 2019 01:55:27 +0000 (01:55 +0000)]
[Driver] Move LIBRARY_PATH before user inputs

Fixes PR16786

Currently, library paths specified by LIBRARY_PATH are placed after inputs: `inputs LIBRARY_PATH stdlib`
In gcc, the order is: `LIBRARY_PATH inputs stdlib` if not cross compiling.
(On Darwin targets, isCrossCompiling() always returns false.)

This patch changes the behavior to match gcc.

Reviewed By: hfinkel

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

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

5 years agoInline diagnostic text into .td file. NFC.
Richard Trieu [Thu, 8 Aug 2019 01:45:31 +0000 (01:45 +0000)]
Inline diagnostic text into .td file.  NFC.

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

5 years agoUpdate fix-it hints for std::move warnings.
Richard Trieu [Thu, 8 Aug 2019 00:12:51 +0000 (00:12 +0000)]
Update fix-it hints for std::move warnings.

Fix -Wpessimizing-move and -Wredundant-move when warning on initializer lists.
The new fix-it hints for removing the std::move call will now also suggest
removing the braces for the initializer list so that the resulting code will
still be compilable.

This fixes PR42832

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

5 years agoAdd target requirements for those bots which don't handle x86.
Bill Wendling [Wed, 7 Aug 2019 19:36:48 +0000 (19:36 +0000)]
Add target requirements for those bots which don't handle x86.

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

5 years ago[Tooling] Expose ExecutorConcurrency option.
Diego Astiazaran [Wed, 7 Aug 2019 18:35:28 +0000 (18:35 +0000)]
[Tooling] Expose ExecutorConcurrency option.

D65628 requires a flag to specify the number of threads for a clang-doc step. It would be good to use ExecutorConcurrency after exposing it instead of creating a new one that has the same purpose.

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

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

5 years ago[clang][NFC] Fix typo in matcher comment
Yitzhak Mandelbaum [Wed, 7 Aug 2019 17:01:31 +0000 (17:01 +0000)]
[clang][NFC] Fix typo in matcher comment

Also updates corresponding html doc.

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

5 years agoRemove LLVM mutexes from clang in favor of std::mutex
Benjamin Kramer [Wed, 7 Aug 2019 14:44:40 +0000 (14:44 +0000)]
Remove LLVM mutexes from clang in favor of std::mutex

None of those need to be recursive mutexes. No functionality change
intended.

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

5 years ago[OPENMP]Set default version to OpenMP 4.5.
Alexey Bataev [Wed, 7 Aug 2019 14:39:17 +0000 (14:39 +0000)]
[OPENMP]Set default version to OpenMP 4.5.

Since clang fully supports OpenMP 4.5, set the default version to 4.5
instead of 3.1.

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

5 years ago[OPENMP]Add standard macro value _OPENMP for OpenMP 5.0.
Alexey Bataev [Wed, 7 Aug 2019 14:02:11 +0000 (14:02 +0000)]
[OPENMP]Add standard macro value _OPENMP for OpenMP 5.0.

According to the OpenMP standard, compiler must define _OPENMP macro,
which has value in format yyyymm, where yyyy is the year of the standard
and mm is the month of the standard. For OpenMP 5.0 this value must be
set to 201811.

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

5 years ago[ASTImporter] Do not import FunctionTemplateDecl in record twice.
Balazs Keri [Wed, 7 Aug 2019 12:40:17 +0000 (12:40 +0000)]
[ASTImporter] Do not import FunctionTemplateDecl in record twice.

Summary:
For functions there is a check to not duplicate the declaration if it is in a
record (class). For function templates there was no similar check, if a
template (in the same class) was imported multiple times the
FunctionTemplateDecl was created multiple times with the same templated
FunctionDecl. This can result in problems with the declaration chain.

Reviewers: martong, a.sidorin, shafik, a_sidorin

Reviewed By: a_sidorin

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

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

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

5 years agoReplace non-recursive sys::Mutex users with std::mutex
Benjamin Kramer [Wed, 7 Aug 2019 11:59:44 +0000 (11:59 +0000)]
Replace non-recursive sys::Mutex users with std::mutex

Also remove a use of sys::MutexImpl, that's just evil. No functionality
change intended.

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

5 years ago[clang] Fix mismatched args constructing AddressSpaceAttr.
Anton Bikineev [Wed, 7 Aug 2019 11:12:43 +0000 (11:12 +0000)]
[clang] Fix mismatched args constructing AddressSpaceAttr.

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

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

5 years agoReplace llvm::MutexGuard/UniqueLock with their standard equivalents
Benjamin Kramer [Wed, 7 Aug 2019 10:57:25 +0000 (10:57 +0000)]
Replace llvm::MutexGuard/UniqueLock with their standard equivalents

All supported platforms have <mutex> now, so we don't need our own
copies any longer. No functionality change intended.

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

5 years agogsl::Owner/gsl::Pointer: Add implicit annotations for some std types
Matthias Gehre [Wed, 7 Aug 2019 10:45:36 +0000 (10:45 +0000)]
gsl::Owner/gsl::Pointer: Add implicit annotations for some std types

Summary:
Hard code gsl::Owner/gsl::Pointer for std types. The paper mentions
some types explicitly. Generally, all containers and their iterators are
covered. For iterators, we cover both the case that they are defined
as an nested class or as an typedef/using. I have started to test this
implementation against some real standard library implementations, namely
libc++ 7.1.0, libc++ 8.0.1rc2, libstdc++ 4.6.4, libstdc++ 4.8.5,
libstdc++ 4.9.4, libstdc++ 5.4.0, libstdc++ 6.5.0, libstdc++ 7.3.0,
libstdc++ 8.3.0 and libstdc++ 9.1.0.

The tests are currently here
  https://github.com/mgehre/llvm-project/blob/lifetime-ci/lifetime-attr-test.sh
  https://github.com/mgehre/llvm-project/blob/lifetime-ci/lifetime-attr-test.cpp
I think due to their dependency on a standard library, they are not a good fit
for clang/test/. Where else could I put them?

Reviewers: gribozavr, xazax.hun

Subscribers: rnkovacs, cfe-commits

Tags: #clang

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

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

5 years agoRemove inclusion of a private gmock header from a test
Dmitri Gribenko [Wed, 7 Aug 2019 08:16:29 +0000 (08:16 +0000)]
Remove inclusion of a private gmock header from a test

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

5 years agoRe-submit r367649: Improve raw_ostream so that you can "write" colors using operator<<
Rui Ueyama [Wed, 7 Aug 2019 08:08:17 +0000 (08:08 +0000)]
Re-submit r367649: Improve raw_ostream so that you can "write" colors using operator<<

The original patch broke buildbots, perhaps because it changed the
default setting whether colors are enabled or not.

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

5 years ago[RISCV] Remove duplicated logic when determining the target ABI
Roger Ferrer Ibanez [Wed, 7 Aug 2019 07:08:00 +0000 (07:08 +0000)]
[RISCV] Remove duplicated logic when determining the target ABI

We were calculating twice ilp32/lp64. Do this in one place instead.

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

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

5 years ago[clang][DirectoryWatcher][NFC] Swapping asserts for llvm fatal_error in create
Puyan Lotfi [Tue, 6 Aug 2019 23:25:34 +0000 (23:25 +0000)]
[clang][DirectoryWatcher][NFC] Swapping asserts for llvm fatal_error in create

I also have replaced all the instances of
"auto DW = DirectoryWatcher::create" with
llvm::Expected<std::unique_ptr<DirectoryWatcher>> DW = DirectoryWatcher::create
to make it more clear that DirectoryWatcher::create is returning an Expected.

I've also allowed for logAllUnhandledErrors to consume errors in the case were
DirectoryWatcher::create produces them.

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

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

5 years agoDelay diagnosing asm constraints that require immediates until after inlining
Bill Wendling [Tue, 6 Aug 2019 22:41:22 +0000 (22:41 +0000)]
Delay diagnosing asm constraints that require immediates until after inlining

Summary:
An inline asm call may result in an immediate input value after inlining.
Therefore, don't emit a diagnostic here if the input isn't an immediate.

Reviewers: joerg, eli.friedman, rsmith

Subscribers: asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, s.egerton, krytarowski, mgorny, riccibruno, eraman, cfe-commits

Tags: #clang

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

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

5 years agohwasan: Instrument globals.
Peter Collingbourne [Tue, 6 Aug 2019 22:07:29 +0000 (22:07 +0000)]
hwasan: Instrument globals.

Globals are instrumented by adding a pointer tag to their symbol values
and emitting metadata into a special section that allows the runtime to tag
their memory when the library is loaded.

Due to order of initialization issues explained in more detail in the comments,
shadow initialization cannot happen during regular global initialization.
Instead, the location of the global section is marked using an ELF note,
and we require libc support for calling a function provided by the HWASAN
runtime when libraries are loaded and unloaded.

Based on ideas discussed with @evgeny777 in D56672.

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

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

5 years ago[WebAssembly] Lower ASan constructor priority on Emscripten
Guanzhong Chen [Tue, 6 Aug 2019 21:52:58 +0000 (21:52 +0000)]
[WebAssembly] Lower ASan constructor priority on Emscripten

Summary:
This change gives Emscripten the ability to use more than one constructor
priorities that runs before ASan. By convention, constructor priorites 0-100
are reserved for use by the system. ASan on Emscripten now uses priority 50,
leaving plenty of room for use by Emscripten before and after ASan.

This change is done in response to:
https://github.com/emscripten-core/emscripten/pull/9076#discussion_r310323723

Reviewers: kripken, tlively, aheejin

Reviewed By: tlively

Subscribers: cfe-commits, dschuff, sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits

Tags: #llvm, #clang

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

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

5 years agofix clang-scan-deps test to match filepaths on Windows
Alex Lorenz [Tue, 6 Aug 2019 21:45:43 +0000 (21:45 +0000)]
fix clang-scan-deps test to match filepaths on Windows

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

5 years ago[clang-scan-deps] Implementation of dependency scanner over minimized sources
Alex Lorenz [Tue, 6 Aug 2019 20:43:25 +0000 (20:43 +0000)]
[clang-scan-deps] Implementation of dependency scanner over minimized sources

This commit implements the fast dependency scanning mode in clang-scan-deps: the
preprocessing is done on files that are minimized using the dependency directives source minimizer.

A shared file system cache is used to ensure that the file system requests and source minimization
is performed only once. The cache assumes that the underlying filesystem won't change during the course
of the scan (or if it will, it will not affect the output), and it can't be evicted. This means that the
service and workers can be used for a single run of a dependency scanner, and can't be reused across multiple,
incremental runs. This is something that we'll most likely support in the future though.
Note that the driver still utilizes the underlying real filesystem.

This commit is also still missing the fast skipped PP block skipping optimization that I mentioned at EuroLLVM talk.
Additionally, the file manager is still not reused by the threads as well.

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

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

5 years agoTeach some warnings to respect gsl::Pointer and gsl::Owner attributes
Gabor Horvath [Tue, 6 Aug 2019 19:13:29 +0000 (19:13 +0000)]
Teach some warnings to respect gsl::Pointer and gsl::Owner attributes

This patch extends some existing warnings to utilize the knowledge about the gsl::Pointer and gsl::Owner attributes.

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

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

5 years ago[Syntax] Do not add a node for 'eof' into the tree
Ilya Biryukov [Tue, 6 Aug 2019 17:07:58 +0000 (17:07 +0000)]
[Syntax] Do not add a node for 'eof' into the tree

Summary:
While useful as a sentinel value when iterating over tokens, having
'eof' in the tree, seems to do more harm than good.

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: javed.absar, kristof.beyls, cfe-commits

Tags: #clang

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

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

5 years ago[AST] Traverse attributes inside DEF_TRAVERSE_DECL macro
Ilya Biryukov [Tue, 6 Aug 2019 15:46:12 +0000 (15:46 +0000)]
[AST] Traverse attributes inside DEF_TRAVERSE_DECL macro

Summary:
Instead of traversing inside the TraverseDecl() function.
Previously the attributes were traversed after Travese(Some)Decl
returns.

Logically attributes are properties of particular Decls and should be
traversed alongside other "child" nodes.

None of the tests relied on this behavior, hopefully this is an indication
that the change is relatively safe.

This change started with a discussion on cfe-dev, for details see:
https://lists.llvm.org/pipermail/cfe-dev/2019-July/062899.html

Reviewers: rsmith, gribozavr

Reviewed By: gribozavr

Subscribers: mgorny, cfe-commits

Tags: #clang

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

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

5 years agoImprove MSVC visualizations so the parser shows where we are in the code
Mike Spertus [Tue, 6 Aug 2019 13:29:35 +0000 (13:29 +0000)]
Improve MSVC visualizations so the parser shows where we are in the code

Also provide a visualizer for lambda introducers

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

5 years ago[CrossTU] Handle case when no USR could be generated during Decl search.
Balazs Keri [Tue, 6 Aug 2019 12:10:16 +0000 (12:10 +0000)]
[CrossTU] Handle case when no USR could be generated during Decl search.

Summary:
When searching for a declaration to be loaded the "lookup name" for every
other Decl is computed. If the USR can not be determined here should be
not an assert, instead skip this Decl.

Reviewers: martong

Reviewed By: martong

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

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

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

5 years agoAdd User docs for ASTImporter
Gabor Marton [Tue, 6 Aug 2019 09:52:21 +0000 (09:52 +0000)]
Add User docs for ASTImporter

Summary:
This document includes the description of the ASTImporter from the user/client
perspective.
A subsequent patch will describe the development internals.

Reviewers: a_sidorin, shafik, gamesh411, balazske, a.sidorin

Subscribers: rnkovacs, dkrupp, arphaman, Szelethus, cfe-commits

Tags: #clang

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

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

5 years ago[DirectoryWatcher] Fix asserts Mac builds
Shoaib Meenai [Tue, 6 Aug 2019 07:13:53 +0000 (07:13 +0000)]
[DirectoryWatcher] Fix asserts Mac builds

Add a missing semicolon after an assert. Remove the period from the
assert message while I'm here, because we don't usually have those.

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

5 years ago[Driver] Introduce -stdlib++-isystem
Shoaib Meenai [Tue, 6 Aug 2019 06:48:43 +0000 (06:48 +0000)]
[Driver] Introduce -stdlib++-isystem

There are times when we wish to explicitly control the C++ standard
library search paths used by the driver. For example, when we're
building against the Android NDK, we might want to use the NDK's C++
headers (which have a custom inline namespace) even if we have C++
headers installed next to the driver. We might also be building against
a non-standard directory layout and wanting to specify the C++ standard
library include directories explicitly.

We could accomplish this by passing -nostdinc++ and adding an explicit
-isystem for our custom search directories. However, users of our
toolchain may themselves want to use -nostdinc++ and a custom C++ search
path (libc++'s build does this, for example), and our added -isystem
won't respect the -nostdinc++, leading to multiple C++ header
directories on the search path, which causes build failures.

Add a new driver option -stdlib++-isystem to support this use case.
Passing this option suppresses adding the default C++ library include
paths in the driver, and it also respects -nostdinc++ to allow users to
still override the C++ library paths themselves.

It's a bit unfortunate that we end up with both -stdlib++-isystem and
-cxx-isystem, but their semantics differ significantly. -cxx-isystem is
unaffected by -nostdinc++ and is added to the end of the search path
(which is not appropriate for C++ standard library headers, since they
often #include_next into other system headers), while -stdlib++-isystem
respects -nostdinc++, is added to the beginning of the search path, and
suppresses the default C++ library include paths.

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

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

5 years ago[Driver] Prioritize SYSROOT/usr/include over RESOURCE_DIR/include on linux-musl
Fangrui Song [Tue, 6 Aug 2019 06:25:32 +0000 (06:25 +0000)]
[Driver] Prioritize SYSROOT/usr/include over RESOURCE_DIR/include on linux-musl

On a musl-based Linux distribution, stdalign.h stdarg.h stdbool.h stddef.h stdint.h stdnoreturn.h are expected to be provided by musl (/usr/include), instead of RESOURCE_DIR/include.
Reorder RESOURCE_DIR/include to fix the search order problem.
(Currently musl doesn't provide stdatomic.h. stdatomic.h is still found in RESOURCE_DIR/include.)

gcc on musl has a similar search order:

```
 /usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/../../../../include/c++/8.3.0
 /usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/../../../../include/c++/8.3.0/x86_64-alpine-linux-musl
 /usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/../../../../include/c++/8.3.0/backward
 /usr/local/include
 /usr/include/fortify
 /usr/include
 /usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/include
```

This is different from a glibc-based distribution where RESOURCE_DIR/include is placed before SYSROOT/usr/include.

According to the maintainer of musl:

> musl does not support use/mixing of compiler-provided std headers with its headers, and intentionally has no mechanism for communicating with such headers as to which types have already been defined or still need to be defined. If the current include order, with clang's headers before the libc ones, works in some situations, it's only by accident.

Reviewed by: phosek

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

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

5 years ago[clang][DirectoryWatcher] Adding llvm::Expected error handling to create.
Puyan Lotfi [Tue, 6 Aug 2019 05:12:23 +0000 (05:12 +0000)]
[clang][DirectoryWatcher] Adding llvm::Expected error handling to create.

Prior to this patch Unix style errno error reporting from the inotify layer was
used by DirectoryWatcher::create to simply return a nullptr on error. This
would generally be ok, except that in LLVM we have much more robust error
reporting through the facilities of llvm::Expected.

The other critical thing I stumbled across was that the unit tests for
DirectoryWatcher were not failing abruptly when inotify_init() was reporting an
error, but would continue with the testing and eventually hit a deadlock in a
pathological machine state (ie in the unit test, the return nullptr on ::create
was ignored).

Generally this pathological state never happens on any build bot, so it is
totally understandable that it was overlooked, but on a Linux desktop running
a dubious desktop environment (which I will not name) there is a chance that
said desktop environment could use up enough inotify instances to exceed the
user's limit. These are the conditions that led me to hit the deadlock I am
addressing in this patch with more robust error handling.

With the new llvm::Expected error handling when your system runs out of inotify
instances for your user, the unit test will be forced to handle the error or
crash and report the issue to the user instead of weirdly deadlocking on a
condition variable wait.

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

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

5 years agoBuiltins: Start adding half versions of math builtins
Matt Arsenault [Tue, 6 Aug 2019 03:28:37 +0000 (03:28 +0000)]
Builtins: Start adding half versions of math builtins

The implementation of the OpenCL builtin currently library uses 2
different hacks to get to the corresponding IR intrinsics from the
source. This will allow removal of those.

This is the set that is currently used (minus a few vector ones).

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

5 years ago[NFC][DirectoryWatchedTests] Unlocks mutexes before signaling condition variable
Puyan Lotfi [Tue, 6 Aug 2019 01:26:46 +0000 (01:26 +0000)]
[NFC][DirectoryWatchedTests] Unlocks mutexes before signaling condition variable

This should not affect actual behavior, but should pessimize the threading less
by avoiding the situation where:

  * mutex is still locked
  * T1 notifies on condition variable
  * T2 wakes to check mutex
  * T2 sees mutex is still locked
  * T2 waits
  * T1 unlocks mutex
  * T2 tries again, acquires mutex.

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

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