]> granicus.if.org Git - clang/log
clang
7 years ago[clang-format] Clang-tidy cleanup of NamespaceEndCommentFixerTest.cpp, NFC
Krasimir Georgiev [Fri, 21 Apr 2017 14:30:01 +0000 (14:30 +0000)]
[clang-format] Clang-tidy cleanup of NamespaceEndCommentFixerTest.cpp, NFC

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

7 years ago[clang-format] Clang-tidy cleanup of CleanupTest.cpp, NFC
Krasimir Georgiev [Fri, 21 Apr 2017 14:21:21 +0000 (14:21 +0000)]
[clang-format] Clang-tidy cleanup of CleanupTest.cpp, NFC

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

7 years ago[PR32667] -Wdocumentation should allow @param/@returns for fields/variables
Alex Lorenz [Fri, 21 Apr 2017 14:17:49 +0000 (14:17 +0000)]
[PR32667] -Wdocumentation should allow @param/@returns for fields/variables
that have a function/block pointer type

This commit improves the -Wdocumentation warning by making sure that @param and
@returns commands won't trigger warnings when used for fields, variables,
or properties whose type is a function/block pointer type. The
function/block pointer type must be specified directly with the declaration,
and when a typedef is used the warning is still emitted.

In the future we might also want to handle the std::function type as well.

rdar://24978538

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

7 years agoAdd support for openSUSE ARM Triples
Ismail Donmez [Fri, 21 Apr 2017 12:26:43 +0000 (12:26 +0000)]
Add support for openSUSE ARM Triples

Summary: Add support for armv6hl-suse-linux-gnueabi and armv7hl-suse-linux-gnueabi triples used by openSUSE/SUSE.

Reviewers: cfe-commits, rovka, compnerd, rengolin

Reviewed By: rengolin

Subscribers: aemerson, rengolin, bkramer, chandlerc

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

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

7 years ago[index] Take advantage of 'external_source_symbol' attribute for indexing purposes
Argyrios Kyrtzidis [Fri, 21 Apr 2017 05:42:46 +0000 (05:42 +0000)]
[index] Take advantage of 'external_source_symbol' attribute for indexing purposes

- Ignore decls marked as 'generated_declaration'
- Include the 'defined_in' in the USR for additional namespacing

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

7 years ago[index] For 'transparent' tag typedefs, ignore their tag reference
Argyrios Kyrtzidis [Fri, 21 Apr 2017 05:42:40 +0000 (05:42 +0000)]
[index] For 'transparent' tag typedefs, ignore their tag reference

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

7 years ago[modules] Properly look up the owning module for an instantiation of a merged template.
Richard Smith [Fri, 21 Apr 2017 01:15:13 +0000 (01:15 +0000)]
[modules] Properly look up the owning module for an instantiation of a merged template.

When looking for the template instantiation pattern of a templated entity,
consistently select the definition of the pattern if there is one. This means
we'll pick the same owning module when we start instantiating a template that
we'll later pick when determining which modules are visible during that
instantiation.

This reinstates r300650, reverted in r300659, with a fix for a regression
reported by Chandler after commit.

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

7 years ago[analyzer] Fix assert in ExprEngine::processSwitch
Alexander Shaposhnikov [Fri, 21 Apr 2017 01:05:26 +0000 (01:05 +0000)]
[analyzer] Fix assert in ExprEngine::processSwitch

This diff replaces getTypeSize(CondE->getType()))
with getIntWidth(CondE->getType())) in ExprEngine::processSwitch.
These calls are not equivalent for bool, see ASTContext.cpp
Add a test case.

Test plan:
make check-clang-analysis
make check-clang

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

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

7 years agoUse __CLANG_ATOMIC_TYPE_LOCK_FREE macros in `stdatomic.h`
Eric Fiselier [Thu, 20 Apr 2017 23:07:38 +0000 (23:07 +0000)]
Use __CLANG_ATOMIC_TYPE_LOCK_FREE macros in `stdatomic.h`

Summary: This patch makes the header `stdatomic.h` work when `-fms-compatibility` is specified.

Reviewers: rsmith

Reviewed By: rsmith

Subscribers: cfe-commits

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

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

7 years ago[CMake] Enable ARM target in Fuchsia toolchain
Petr Hosek [Thu, 20 Apr 2017 23:06:53 +0000 (23:06 +0000)]
[CMake] Enable ARM target in Fuchsia toolchain

This is still used by some users of Fuchsia toolchain. Also include
llc and opt which is useful for development and testing.

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

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

7 years agoAdd __CLANG_ATOMIC_<TYPE>_LOCK_FREE macros for use in MSVC compatibility mode.
Eric Fiselier [Thu, 20 Apr 2017 22:53:57 +0000 (22:53 +0000)]
Add __CLANG_ATOMIC_<TYPE>_LOCK_FREE macros for use in MSVC compatibility mode.

Summary:
Libc++ currently implements the `ATOMIC_<TYPE>_LOCK_FREE` macros using the `__GCC_ATOMIC_<TYPE>_LOCK_FREE` macros. However these are not available when MSVC compatibility is enabled even though C11 `_Atomic` is.  This prevents libc++ from correctly implementing `ATOMIC_<TYPE>_LOCK_FREE`.

This patch adds an alternative spelling `__CLANG_ATOMIC_<TYPE>_LOCK_FREE` that is enabled with `-fms-compatibility`.

Reviewers: rsmith, aaron.ballman, majnemer, zturner, compnerd, jfb, rnk

Reviewed By: rsmith

Subscribers: BillyONeal, smeenai, jfb, cfe-commits, dschuff

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

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

7 years agoSema: protect against ObjC++ typo-correction failure
Saleem Abdulrasool [Thu, 20 Apr 2017 22:23:10 +0000 (22:23 +0000)]
Sema: protect against ObjC++ typo-correction failure

ObjC++ has two different types of "pointer" types (ObjCClassPointerType
and PointerType).  Both can be indirected through.  However, the former
is not a member expression.  Ensure that we do not try to rebuild the
MRE in that case.

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

7 years agoParse: cleanup some bleeding whitespace
Saleem Abdulrasool [Thu, 20 Apr 2017 22:23:07 +0000 (22:23 +0000)]
Parse: cleanup some bleeding whitespace

Clean up some bleeding whitespace that I noticed.  NFC

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

7 years agoFix Python 2 vs 3 incompatability with dict.items() vs iteritems()
Eric Fiselier [Thu, 20 Apr 2017 21:23:58 +0000 (21:23 +0000)]
Fix Python 2 vs 3 incompatability with dict.items() vs iteritems()

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

7 years agoEnable leak sanitizer builds for darwin
Francis Ricci [Thu, 20 Apr 2017 21:11:51 +0000 (21:11 +0000)]
Enable leak sanitizer builds for darwin

Summary:
Support for leak sanitizer on darwin has been added to
compiler-rt, this patch adds compiler support.

Reviewers: dexonsmith, compnerd

Subscribers: alekseyshl, kubamracek, cfe-commits

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

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

7 years agoBegin making git-clang-format python3 compatible.
Eric Fiselier [Thu, 20 Apr 2017 21:05:58 +0000 (21:05 +0000)]
Begin making git-clang-format python3 compatible.

This patch fixes most of the python3 incompatabilities
within git-clang-format while keeping the script python2 compatible.
There is still one remaining incompatability that prevents using Python3
which is the `str` vs `byte` type change. I plan to put those fixes
up for review separately.

This patch contains fixes for the following incompatabilities:

1) Use the new style Python3 `print` function. This requires importing
   __future__.print_function.

2) Fix incompatability between the Python3 octal prefix and the
   octal prefix Git uses.

3) Replace use of dict.iteritems() with dict.viewitems() because iteritems()
   has been removed in Python3. viewitems() reviews python 2.7 but that is
   also what the script is documented as requiring.

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

7 years ago[Driver] Add a missing -no-canonical-prefixes to test.
Benjamin Kramer [Thu, 20 Apr 2017 19:06:24 +0000 (19:06 +0000)]
[Driver] Add a missing -no-canonical-prefixes to test.

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

7 years agoDon't pass FPOpFusion::Strict to the backend
Adam Nemet [Thu, 20 Apr 2017 17:09:35 +0000 (17:09 +0000)]
Don't pass FPOpFusion::Strict to the backend

This restores the behavior prior to D31167 where the code-gen default was
FPC_On which mapped to FPOpFusion::Standard.  After merging the FE
state (on/off) and the code-gen state (on/fast/off), the default became off to
match the front-end.

In other words, the front-end controls when to fuse along the language
standards and the backend shouldn't override this by splitting fused
intrinsics as FPOpFusion::Strict would imply.

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

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

7 years agoDelete unused IncompleteFormat variable, NFCi.
Krasimir Georgiev [Thu, 20 Apr 2017 13:37:27 +0000 (13:37 +0000)]
Delete unused IncompleteFormat variable, NFCi.

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

7 years ago[index] Record class template specializations using a new 'SpecializationOf'
Alex Lorenz [Thu, 20 Apr 2017 10:43:22 +0000 (10:43 +0000)]
[index] Record class template specializations using a new 'SpecializationOf'
relationship

rdar://31603531

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

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

7 years agoAdd Python 3 support to clang.cindex
Jonathan Coe [Thu, 20 Apr 2017 10:11:01 +0000 (10:11 +0000)]
Add Python 3 support to clang.cindex

Summary:
Introduce an interop string to convert from unicode to c-strings where needed.
Add missing conversions from _CXString to strings in function registrations.
Explicitly evaluate lists where Python 3's lazy iterators would not otherwise do so.

This is an improvement upon the reverted change proposed in https://reviews.llvm.org/D26082

Reviewers: compnerd, skalinichev, modocache, MathieuDuponchelle

Reviewed By: compnerd

Subscribers: cfe-commits

Tags: #clang-c

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

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

7 years agoAdd #pragma clang attribute support to the availability attribute
Alex Lorenz [Thu, 20 Apr 2017 09:35:02 +0000 (09:35 +0000)]
Add #pragma clang attribute support to the availability attribute

rdar://31707804

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

7 years agoPR19260: Teach doxygen to spell correctly the include paths.
Vassil Vassilev [Thu, 20 Apr 2017 08:57:41 +0000 (08:57 +0000)]
PR19260: Teach doxygen to spell correctly the include paths.

Currently we have #include <Sema.h> in the doxygen page documenting Sema. The
patch changes it ot #include "clang/Sema/Sema.h" which is what we would spell if
we need to include it in a real codebase.

Patch by Yuka Takahashi (D32113)!

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

7 years ago[AVR] Add -mmcu option to the driver
Leslie Zhai [Thu, 20 Apr 2017 04:23:24 +0000 (04:23 +0000)]
[AVR] Add -mmcu option to the driver

A patch by Peter Wu!

Reviewers: jroelofs, xiangzhai

Reviewed By: jroelofs, dylanmckay, xiangzhai

Subscribers: dlj, dylanmckay, cfe-commits

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

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

7 years ago[ODRHash] clean up test and add new examples. NFC
Richard Trieu [Thu, 20 Apr 2017 02:53:53 +0000 (02:53 +0000)]
[ODRHash] clean up test and add new examples.  NFC

Use a macro to generate the struct with all decls.  Previously, four identical
changes would be needed to update this test.  This macro reduces that to one
location.  Added two other tests for issues that triggered false positives
during testing.

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

7 years agoPR32673: Don't wrap parameter packs in SubstTemplateTypeParmPackType nodes when formi...
Richard Smith [Thu, 20 Apr 2017 01:15:31 +0000 (01:15 +0000)]
PR32673: Don't wrap parameter packs in SubstTemplateTypeParmPackType nodes when forming implicit deduction guides.

Doing so thwarts template type deduction. Instead, substitute the pack directly
by picking "slice 0" of the resulting expansion.

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

7 years ago[Sema] Use MSVC inner class behavior on Itanium
Shoaib Meenai [Thu, 20 Apr 2017 01:11:42 +0000 (01:11 +0000)]
[Sema] Use MSVC inner class behavior on Itanium

Windows Itanium aims to use MSVC export and import semantics. Inner
class members shouldn't be exported on a dllexport explicit
instantiation definition of the outer class, and they shouldn't be
imported on a dllimport explicit instantiation declaration of the outer
class (instead a local copy should be emitted). We were doing the first
but not the second, and this mismatch can lead to link errors. Fix the
behavior and add tests for both.

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

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

7 years agoAdd a triple to codegen test.
Richard Smith [Thu, 20 Apr 2017 01:02:29 +0000 (01:02 +0000)]
Add a triple to codegen test.

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

7 years ago[OpenMP] Prepare sema to support combined constructs with omp distribute and omp for
Carlo Bertolli [Thu, 20 Apr 2017 00:39:39 +0000 (00:39 +0000)]
[OpenMP] Prepare sema to support combined constructs with omp distribute and omp for

https://reviews.llvm.org/D32237

This patch prepares sema with additional fields to support all those composite and combined constructs of OpenMP that include pragma 'distribute' and 'for', such as 'distribute parallel for'. It also extends the regression tests for 'distribute parallel for' and adds a new one.

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

7 years ago[sanitizer-coverage] trim down the docs
Kostya Serebryany [Wed, 19 Apr 2017 22:25:30 +0000 (22:25 +0000)]
[sanitizer-coverage] trim down the docs

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

7 years ago[sanitizer-coverage] deprecate -fsanitize-coverage=trace-bb
Kostya Serebryany [Wed, 19 Apr 2017 21:31:11 +0000 (21:31 +0000)]
[sanitizer-coverage] deprecate -fsanitize-coverage=trace-bb

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

7 years agoCorrrect warn_unused_result attribute
Erich Keane [Wed, 19 Apr 2017 21:24:55 +0000 (21:24 +0000)]
Corrrect warn_unused_result attribute

The original idea was that if the attribute on an operator,
that the return-value unused-ness wouldn't matter. However,
all of the operators except postfix inc/dec return
references! References don't result in this warning
anyway, so those are already excluded.

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

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

7 years agoFix assertion failure in codegen on non-template deduction guide.
Richard Smith [Wed, 19 Apr 2017 21:15:45 +0000 (21:15 +0000)]
Fix assertion failure in codegen on non-template deduction guide.

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

7 years ago[CodeGen] Use preincrement version of APInt::operator++ instead of postincrement...
Craig Topper [Wed, 19 Apr 2017 21:02:45 +0000 (21:02 +0000)]
[CodeGen] Use preincrement version of APInt::operator++ instead of postincrement to avoid creating and immediately discarding a temporary APInt.

This is preparation for a clang change to improve the [[nodiscard]] warning to not be ignored on methods that return a class marked [[nodiscard]] that are defined in the class itself. See D32207.

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

7 years agoFix a leak in tools/driver/cc1as_main.cpp
Kostya Serebryany [Wed, 19 Apr 2017 20:57:13 +0000 (20:57 +0000)]
Fix a leak in tools/driver/cc1as_main.cpp

Summary: For some reason, the asan bot has recently started reporting this leak even though it existed for ages.

Reviewers: pcc

Reviewed By: pcc

Subscribers: cfe-commits

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

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

7 years ago[sanitizer-coverage] deprecate -fsanitize-coverage=8bit-counters
Kostya Serebryany [Wed, 19 Apr 2017 20:15:58 +0000 (20:15 +0000)]
[sanitizer-coverage] deprecate -fsanitize-coverage=8bit-counters

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

7 years agoParse backend options during thinlto backend compile actions
David Blaikie [Wed, 19 Apr 2017 20:08:21 +0000 (20:08 +0000)]
Parse backend options during thinlto backend compile actions

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

7 years ago[sanitizer-coverage] deprecate some of the stale coverage variants
Kostya Serebryany [Wed, 19 Apr 2017 19:57:16 +0000 (19:57 +0000)]
[sanitizer-coverage] deprecate some of the stale coverage variants

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

7 years ago[Coverage] Don't emit mappings for functions in dependent contexts (fixes PR32679)
Vedant Kumar [Wed, 19 Apr 2017 17:58:30 +0000 (17:58 +0000)]
[Coverage] Don't emit mappings for functions in dependent contexts (fixes PR32679)

The coverage implementation marks functions which won't be emitted as
'deferred', so that it can emit empty coverage regions for them later
(once their linkages are known).

Functions in dependent contexts are an exception: if there isn't a full
instantiation of a function, it shouldn't be marked 'deferred'. We've
been breaking that rule without much consequence because we just ended
up with useless, extra, empty coverage mappings. With PR32679, this
behavior finally caused a crash, because clang marked a partial template
specialization as 'deferred', causing the MS mangler to choke in its
delayed-template-parsing mode:

  error: cannot mangle this template type parameter type yet
  (http://bugs.llvm.org/show_bug.cgi?id=32679)

Fix this by checking if a decl's context is a dependent context before
marking it 'deferred'.

Based on a patch by Adam Folwarczny!

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

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

7 years ago[Sema][ObjC] Disallow jumping into ObjC fast enumeration loops.
Akira Hatanaka [Wed, 19 Apr 2017 17:54:08 +0000 (17:54 +0000)]
[Sema][ObjC] Disallow jumping into ObjC fast enumeration loops.

rdar://problem/31635406

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

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

7 years agoPrefer addAttr(Attribute::AttrKind) over the AttributeList overload
Reid Kleckner [Wed, 19 Apr 2017 17:28:52 +0000 (17:28 +0000)]
Prefer addAttr(Attribute::AttrKind) over the AttributeList overload

This should simplify the call sites, which typically want to tweak one
attribute at a time. It should also avoid creating ephemeral
AttributeLists that live forever.

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

7 years agoAdd #pragma clang attribute support to the external_source_symbol attribute
Alex Lorenz [Wed, 19 Apr 2017 15:52:11 +0000 (15:52 +0000)]
Add #pragma clang attribute support to the external_source_symbol attribute

Prior to this commit the external_source_symbol attribute wasn't supported by
#pragma clang attribute for the following two reasons:

- The Named attribute subject hasn't been supported by TableGen.
- There was no way to specify a subject match rule for #pragma clang attribute
 that could operate on a set of attribute subjects (e.g. the ones that derive
 from NamedDecl).

This commit fixes the two issues and thus adds external_source_symbol support to
#pragma clang attribute.

rdar://31169028

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

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

7 years agoRemove unnecessary condition as suggested by clang-tidy. NFC
Gabor Horvath [Wed, 19 Apr 2017 15:11:10 +0000 (15:11 +0000)]
Remove unnecessary condition as suggested by clang-tidy. NFC

Patch by: Gergely Angeli!

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

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

7 years ago[Driver] Unify linking of OpenMP runtime. NFCI.
Jonas Hahnfeld [Wed, 19 Apr 2017 13:55:39 +0000 (13:55 +0000)]
[Driver] Unify linking of OpenMP runtime. NFCI.

While at it, extend test for FreeBSD and check for -lrt iff on Linux.

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

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

7 years agoAvoid assert when a non-static member function is qualified with __unaligned
Roger Ferrer Ibanez [Wed, 19 Apr 2017 12:23:28 +0000 (12:23 +0000)]
Avoid assert when a non-static member function is qualified with __unaligned

Under -fms-extensions __unaligned is a type-qualifier that can be applied to a
non-static member function declaration.

This causes an assertion when mangling the name under Itanium, where that
qualifier is not mangled.

This patch justs makes the minimal change to avoid the crash and avoid mangling
__unaligned, as it currently happens with non-member functions.

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

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

7 years agoAdd support for editor placeholders to Clang
Alex Lorenz [Wed, 19 Apr 2017 08:58:56 +0000 (08:58 +0000)]
Add support for editor placeholders to Clang

This commit teaches Clang to recognize editor placeholders that are produced
when an IDE like Xcode inserts a code-completion result that includes a
placeholder. Now when the lexer sees a placeholder token, it emits an
'editor placeholder in source file' error and creates an identifier token
that represents the placeholder. The parser/sema can now recognize the
placeholders and can suppress the diagnostics related to the placeholders. This
ensures that live issues in an IDE like Xcode won't get spurious diagnostics
related to placeholders.

This commit also adds a new compiler option named '-fallow-editor-placeholders'
that silences the 'editor placeholder in source file' error. This is useful
for an IDE like Xcode as we don't want to display those errors in live issues.

rdar://31581400

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

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

7 years agoclang-format: Properly match parens of macro parameter lists.
Daniel Jasper [Wed, 19 Apr 2017 06:06:38 +0000 (06:06 +0000)]
clang-format: Properly match parens of macro parameter lists.

No tests yet, but this will be tested by the upcoming:
https://reviews.llvm.org/D28462

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

7 years agoRevert r300653 and r300650. The underlying commit fixes one issue with
Chandler Carruth [Wed, 19 Apr 2017 05:25:13 +0000 (05:25 +0000)]
Revert r300653 and r300650. The underlying commit fixes one issue with
modules but exposes much more widespread issues. Example and more
information is on the review thread for r300650.

Original commit summary:
[modules] Properly look up the owning module for an instantiation of a merged template.

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

7 years ago[CodeGen] Use APInt::lshrInPlace instead of APInt::lshr. NFC
Craig Topper [Wed, 19 Apr 2017 05:17:33 +0000 (05:17 +0000)]
[CodeGen] Use APInt::lshrInPlace instead of APInt::lshr. NFC

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

7 years agoFix member function call with null 'this' pointer.
Richard Smith [Wed, 19 Apr 2017 02:19:21 +0000 (02:19 +0000)]
Fix member function call with null 'this' pointer.

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

7 years ago[modules] Properly look up the owning module for an instantiation of a merged template.
Richard Smith [Wed, 19 Apr 2017 01:36:43 +0000 (01:36 +0000)]
[modules] Properly look up the owning module for an instantiation of a merged template.

When looking for the template instantiation pattern of a templated entity,
consistently select the definition of the pattern if there is one. This means
we'll pick the same owning module when we start instantiating a template that
we'll later pick when determining which modules are visible during that
instantiation.

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

7 years agoUse less temporary AttributeLists NFC
Reid Kleckner [Tue, 18 Apr 2017 23:50:03 +0000 (23:50 +0000)]
Use less temporary AttributeLists NFC

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

7 years ago[modules-ts] Fold together -x c++ and -x c++-module at -cc1 level.
Richard Smith [Tue, 18 Apr 2017 21:55:37 +0000 (21:55 +0000)]
[modules-ts] Fold together -x c++ and -x c++-module at -cc1 level.

The driver needs to know whether it's building a module interface or
implementation unit because it affects which outputs it produces and how it
builds the command pipeline. But the frontend doesn't need to know and should
not care: all it needs to know is what action it is being asked to perform on
the input.

(This is in preparation for permitting -emit-obj to be used on a module
interface unit to produce object code without going via a "full" PCM file.)

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

7 years agoDo not warn about whitespace between ??/ trigraph and newline in line comments if...
Richard Smith [Tue, 18 Apr 2017 21:45:04 +0000 (21:45 +0000)]
Do not warn about whitespace between ??/ trigraph and newline in line comments if trigraphs are disabled in the current language.

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

7 years agoPR30508: Downgrade error to warning if the umbrella folder doesn't exist.
Vassil Vassilev [Tue, 18 Apr 2017 20:57:29 +0000 (20:57 +0000)]
PR30508: Downgrade error to warning if the umbrella folder doesn't exist.

Patch by Yuka Takahashi (D32119)!

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

7 years agoThe SubjectMatchRule enum should not be used as a DenseMap key to avoid
Alex Lorenz [Tue, 18 Apr 2017 20:54:23 +0000 (20:54 +0000)]
The SubjectMatchRule enum should not be used as a DenseMap key to avoid
UBSAN 'invalid value' failures

The commit r300556 introduced a UBSAN issue that was caught by
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap. The DenseMap
failed to create an empty/tombstone value as the empty/tombstone values for the
SubjectMatchRule enum were not valid enum constants.

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

7 years ago[DOXYGEN] Minor improvements in doxygen comments.
Ekaterina Romanova [Tue, 18 Apr 2017 19:44:07 +0000 (19:44 +0000)]
[DOXYGEN] Minor improvements in doxygen comments.

- To be consistent with the rest of the intrinsics headers, I removed the tags <i> .. </i> for marking instruction names in italics in in smmintrin.h.

- Formatting changes to fit into 80 characters.

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@300578 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRemove unused varible
Reid Kleckner [Tue, 18 Apr 2017 17:44:41 +0000 (17:44 +0000)]
Remove unused varible

The Result variable is unused both in Sema::CheckARMBuiltinFunctionCall
and Sema::CheckAArch64BuiltinFunctionCall, remove it.

Patch by Wei-Ren Chen!

Reviewers: craig.topper, rnk

Reviewed By: rnk

Subscribers: aemerson, cfe-commits, rengolin

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

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

7 years ago[AArch64][clang] Pass cpu/arch information to assembler for AArch64.
Manoj Gupta [Tue, 18 Apr 2017 17:36:10 +0000 (17:36 +0000)]
[AArch64][clang] Pass cpu/arch information to assembler for AArch64.

Summary:
Pass Cpu/Arch options to assembler for AArch64 with no-integrated-as.
This fixes PR20019.

Reviewers: richard.barton.arm, kristof.beyls, rengolin

Reviewed By: rengolin

Subscribers: srhines, pirama, aemerson, rengolin, cfe-commits

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

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

7 years agoTesting commit access.
Manoj Gupta [Tue, 18 Apr 2017 17:34:46 +0000 (17:34 +0000)]
Testing commit access.

Summary: Test commit access.

Reviewers: gbiv, george.burgess.iv

Reviewed By: george.burgess.iv

Subscribers: cfe-commits

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

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

7 years agomingw-w64: enable support for __declspec(selectany)
Martell Malone [Tue, 18 Apr 2017 15:56:24 +0000 (15:56 +0000)]
mingw-w64: enable support for __declspec(selectany)

Add selectany as a GCC spelling for mingw-w64

Reviewers: rnk

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

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

7 years ago[ASTPrinter] Print template parameter lists for out-of-line functions
Alex Lorenz [Tue, 18 Apr 2017 15:12:34 +0000 (15:12 +0000)]
[ASTPrinter] Print template parameter lists for out-of-line functions

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

7 years agoAdd #pragma clang attribute
Alex Lorenz [Tue, 18 Apr 2017 14:33:39 +0000 (14:33 +0000)]
Add #pragma clang attribute

This is a recommit of r300539 that was reverted in r300543 due to test failures.
The original commit message is displayed below:

The new '#pragma clang attribute' directive can be used to apply attributes to
multiple declarations. An attribute must satisfy the following conditions to
be supported by the pragma:
- It must have a subject list that's defined in the TableGen file.
- It must be documented.
- It must not be late parsed.
- It must have a GNU/C++11 spelling.

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

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

7 years agoDriver: Better detection of mingw-gcc
Martell Malone [Tue, 18 Apr 2017 14:27:36 +0000 (14:27 +0000)]
Driver: Better detection of mingw-gcc

Stop blindly searching for "gcc.exe" on windows.
Stop assuming "/usr" on unix, fixes cross compiling.

Reviewers: mati865, yaron.keren

Subscribers: ismail, rnk

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

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

7 years ago[ARM] Add hardware build attributes in assembler
Oliver Stannard [Tue, 18 Apr 2017 13:21:05 +0000 (13:21 +0000)]
[ARM] Add hardware build attributes in assembler

This passes an option to the ARM assembly parser to emit build
attributes for the hardware selected by command line options, when
assembling an assembly file.

This is not enabled for C/C++, as this would result in duplicate build
attribute directives being emitted in each inline assembly block, when
emitting assembly.

This also adds an option to allow disabling this behaviour for assembly
files, for users who were relying on the old behaviour.

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

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

7 years ago[ARM,AArch64] Define __ELF__ for arm-none-eabihf and AArch64
Oliver Stannard [Tue, 18 Apr 2017 13:12:36 +0000 (13:12 +0000)]
[ARM,AArch64] Define __ELF__ for arm-none-eabihf and AArch64

This macro is defined for arm-none-eabi as of r266625, but it should also be
defined for eabihf and aarch64.

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

7 years agoRevert r300539 - Add #pragma clang attribute
Alex Lorenz [Tue, 18 Apr 2017 10:46:41 +0000 (10:46 +0000)]
Revert r300539 - Add #pragma clang attribute

Some tests fail on the Windows buildbots. I will have to investigate more.
This commit reverts r300539, r300540 and r300542.

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

7 years agoFix one more 'not all control paths return a value' MSVC warning
Alex Lorenz [Tue, 18 Apr 2017 10:17:41 +0000 (10:17 +0000)]
Fix one more 'not all control paths return a value' MSVC warning

The warning was caused by r300539.

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

7 years ago[TableGen] Fix MSVC warning that occurs in TableGen generated function
Alex Lorenz [Tue, 18 Apr 2017 09:59:27 +0000 (09:59 +0000)]
[TableGen] Fix MSVC warning that occurs in TableGen generated function

This should fix the Windows buildbot failure that happened after r300539.

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

7 years agoAdd #pragma clang attribute
Alex Lorenz [Tue, 18 Apr 2017 09:41:47 +0000 (09:41 +0000)]
Add #pragma clang attribute

The new '#pragma clang attribute' directive can be used to apply attributes to
multiple declarations. An attribute must satisfy the following conditions to
be supported by the pragma:
- It must have a subject list that's defined in the TableGen file.
- It must be documented.
- It must not be late parsed.
- It must have a GNU/C++11 spelling.

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

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

7 years agoAssert that a valid operator new/delete signature is always found by the coroutine...
Eric Fiselier [Tue, 18 Apr 2017 05:30:39 +0000 (05:30 +0000)]
Assert that a valid operator new/delete signature is always found by the coroutine body

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

7 years agoSpeculatively attempt to fix bot failures caused by recent coroutine changes.
Eric Fiselier [Tue, 18 Apr 2017 05:08:08 +0000 (05:08 +0000)]
Speculatively attempt to fix bot failures caused by recent coroutine changes.

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

7 years ago[coroutines] Fix building of new/delete expressions when get_return_object_on_allocat...
Eric Fiselier [Tue, 18 Apr 2017 03:12:48 +0000 (03:12 +0000)]
[coroutines] Fix building of new/delete expressions when get_return_object_on_allocation_failure() is present.

Summary:
This patch implements [dcl.fct.def.coroutine]p8:
> The unqualified-id get_return_object_on_allocation_failure is looked up in the scope of
> class P by class member access lookup (3.4.5). If a declaration is found, ..., and if a
> global allocation function is selected, the ::operator new(size_t, nothrow_t) form shall be used.
> [...]
> The allocation function used in this case must have a non-throwing noexcept-specification.

Reviewers: GorNishanov, rsmith, majnemer, aaron.ballman

Reviewed By: GorNishanov

Subscribers: cfe-commits

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

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

7 years agoDebug Info: Remove special-casing of indirect function argument handling.
Adrian Prantl [Tue, 18 Apr 2017 01:22:01 +0000 (01:22 +0000)]
Debug Info: Remove special-casing of indirect function argument handling.

LLVM has changed the semantics of dbg.declare for describing function
arguments. After this patch a dbg.declare always takes the *address*
of a variable as the first argument, even if the argument is not an
alloca.

https://bugs.llvm.org/show_bug.cgi?id=32382
rdar://problem/31205000

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

7 years agoFix mishandling of escaped newlines followed by newlines or nuls.
Richard Smith [Mon, 17 Apr 2017 23:44:51 +0000 (23:44 +0000)]
Fix mishandling of escaped newlines followed by newlines or nuls.

Previously, if an escaped newline was followed by a newline or a nul, we'd lex
the escaped newline as a bogus space character. This led to a bunch of
different broken corner cases:

For the pattern "\\\n\0#", we would then have a (horizontal) space whose
spelling ends in a newline, and would decide that the '#' is at the start of a
line, and incorrectly start preprocessing a directive in the middle of a
logical source line. If we were already in the middle of a directive, this
would result in our attempting to process multiple directives at the same time!
This resulted in crashes, asserts, and hangs on invalid input, as discovered by
fuzz-testing.

For the pattern "\\\n" at EOF (with an implicit following nul byte), we would
produce a bogus trailing space character with spelling "\\\n". This was mostly
harmless, but would lead to clang-format getting confused and misformatting in
rare cases. We now produce a trailing EOF token with spelling "\\\n",
consistent with our handling for other similar cases -- an escaped newline is
always part of the token containing the next character, if any.

For the pattern "\\\n\n", this was somewhat more benign, but would produce an
extraneous whitespace token to clients who care about preserving whitespace.
However, it turns out that our lexing for line comments was relying on this bug
due to an off-by-one error in its computation of the end of the comment, on the
slow path where the comment might contain escaped newlines.

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

7 years agoRename coroutine warning when unhandled_exception() is missing
Eric Fiselier [Mon, 17 Apr 2017 23:28:02 +0000 (23:28 +0000)]
Rename coroutine warning when unhandled_exception() is missing

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

7 years agoRevert r300504 - [coroutines] Fix rebuilding of implicit and dependent coroutine...
Eric Fiselier [Mon, 17 Apr 2017 22:40:44 +0000 (22:40 +0000)]
Revert r300504 - [coroutines] Fix rebuilding of implicit and dependent coroutine statements.

I have no idea what's happening here. The tests that fail on all of the bots
pass on my machine. Further investigation needed.

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

7 years ago[ubsan] Skip null checks if they are constant-folded away
Vedant Kumar [Mon, 17 Apr 2017 22:26:10 +0000 (22:26 +0000)]
[ubsan] Skip null checks if they are constant-folded away

The IR builder can constant-fold null checks if the pointer operand
points to a constant. If the "is-non-null" check is folded away to
"true", don't emit the null check + branch.

Testing: check-clang, check-ubsan.

This slightly reduces the amount of null checks we emit when compiling
X86ISelLowering.cpp. Here are the numbers from patched/unpatched clangs
based on r300371.

  -------------------------------------
  | Setup          | # of null checks |
  -------------------------------------
  | unpatched, -O0 |            25251 |
  | patched, -O0   |            23925 | (-5.3%)
  -------------------------------------

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

7 years ago[ubsan] Skip null checks on pointers to the start of an alloca
Vedant Kumar [Mon, 17 Apr 2017 22:26:07 +0000 (22:26 +0000)]
[ubsan] Skip null checks on pointers to the start of an alloca

Pointers to the start of an alloca are non-null, so we don't need to
emit runtime null checks for them.

Testing: check-clang, check-ubsan.

This significantly reduces the amount of null checks we emit when
compiling X86ISelLowering.cpp. Here are the numbers from patched /
unpatched clangs based on r300371.

  -------------------------------------
  | Setup          | # of null checks |
  -------------------------------------
  | unpatched, -O0 |            45439 |
  | patched, -O0   |            25251 | (-44.4%)
  -------------------------------------

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

7 years ago[coroutines] Fix rebuilding of implicit and dependent coroutine statements.
Eric Fiselier [Mon, 17 Apr 2017 22:06:13 +0000 (22:06 +0000)]
[coroutines] Fix rebuilding of implicit and dependent coroutine statements.

Summary:
Certain implicitly generated coroutine statements, such as the calls to 'return_value()' or `return_void()` or `get_return_object_on_allocation_failure()`, cannot be built until the promise type is no longer dependent. This means they are not built until after the coroutine body statement has been transformed.

This patch fixes an issue where these statements would never be built for coroutine templates.

It also fixes a small issue where diagnostics about `get_return_object_on_allocation_failure()` were incorrectly suppressed.

Reviewers: rsmith, majnemer, GorNishanov, aaron.ballman

Reviewed By: GorNishanov

Subscribers: cfe-commits

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

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

7 years agoclang-cl: Support the /Zc:twoPhase[-] command-line option (PR32680)
Hans Wennborg [Mon, 17 Apr 2017 21:28:36 +0000 (21:28 +0000)]
clang-cl: Support the /Zc:twoPhase[-] command-line option (PR32680)

It sounds like MSVC is adding support for two-phase name lookup in a
future version, enabled by this flag (see bug).

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

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

7 years agoRevert "Address http://bugs.llvm.org/pr30994 so that a non-friend can properly replac...
Benjamin Kramer [Mon, 17 Apr 2017 20:57:40 +0000 (20:57 +0000)]
Revert "Address http://bugs.llvm.org/pr30994 so that a non-friend can properly replace a friend, and a visible friend can properly replace an invisible friend but not vice verse, and definitions are not replaced. This fixes the two FIXME in SemaTemplate/friend-template.cpp."

This reverts commit r300443. Breaks compiling libc++ with modules in
some configurations.

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

7 years agoCodeGen: Let byval parameter use alloca address space
Yaxun Liu [Mon, 17 Apr 2017 20:10:44 +0000 (20:10 +0000)]
CodeGen: Let byval parameter use alloca address space

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

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

7 years agoCodeGen: Let lifetime intrinsic use alloca address space
Yaxun Liu [Mon, 17 Apr 2017 20:03:11 +0000 (20:03 +0000)]
CodeGen: Let lifetime intrinsic use alloca address space

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

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

7 years agoUse default ref capture to simplify local lambdas, use a template to avoid std::funct...
David Blaikie [Mon, 17 Apr 2017 17:16:19 +0000 (17:16 +0000)]
Use default ref capture to simplify local lambdas, use a template to avoid std::function overhead, other cleanup

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

7 years ago[ObjC] Mark loads from __NSArray0 and __NSDictionary0 as invariant.load.
Akira Hatanaka [Mon, 17 Apr 2017 15:21:55 +0000 (15:21 +0000)]
[ObjC] Mark loads from __NSArray0 and __NSDictionary0 as invariant.load.

Also, simplify code by calling MakeNaturalAlignAddrLValue.

This is a follow-up to r300396.

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

7 years agoAddress http://bugs.llvm.org/pr30994 so that a non-friend can properly replace a...
Yaron Keren [Mon, 17 Apr 2017 08:51:20 +0000 (08:51 +0000)]
Address http://bugs.llvm.org/pr30994 so that a non-friend can properly replace a friend, and a visible friend can properly replace an invisible friend but not vice verse, and definitions are not replaced. This fixes the two FIXME in SemaTemplate/friend-template.cpp.

The code implements Richard Smith suggestion in comment 3 of the PR.

reviewer: Vassil Vassilev

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

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

7 years ago[clang] Register isConstexpr matcher
Alexander Shaposhnikov [Sun, 16 Apr 2017 19:05:17 +0000 (19:05 +0000)]
[clang] Register isConstexpr matcher

This diff registers isConstexpr matcher.

Test plan:
make check-all
check that "match varDecl(isConstexpr())"
works in clang-query

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

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

7 years agoUse setUsedForHeaderGuard() accessor function instead of direcly accessing UsedForHea...
Yaron Keren [Sun, 16 Apr 2017 15:53:19 +0000 (15:53 +0000)]
Use setUsedForHeaderGuard() accessor function instead of direcly accessing UsedForHeaderGuard.

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

7 years agoRevert r300420 - [coroutines] Fix building of new/delete expressions when get_return_...
Eric Fiselier [Sun, 16 Apr 2017 09:34:28 +0000 (09:34 +0000)]
Revert r300420 - [coroutines] Fix building of new/delete expressions when get_return_object_on_allocation_failure() is present

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

7 years ago[coroutines] Fix building of new/delete expressions when get_return_object_on_allocat...
Eric Fiselier [Sun, 16 Apr 2017 09:19:59 +0000 (09:19 +0000)]
[coroutines] Fix building of new/delete expressions when get_return_object_on_allocation_failure() is present.

Summary:
This patch implements [dcl.fct.def.coroutine]p8:
> The unqualified-id get_return_object_on_allocation_failure is looked up in the scope of
> class P by class member access lookup (3.4.5). If a declaration is found, ..., and if a
> global allocation function is selected, the ::operator new(size_t, nothrow_t) form shall be used.
> [...]
> The allocation function used in this case must have a non-throwing noexcept-specification.

Reviewers: GorNishanov, rsmith, majnemer, aaron.ballman

Reviewed By: GorNishanov

Subscribers: cfe-commits

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

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

7 years agoAdd isStaticStorageClass to the dynamic matcher registry so that it can be used from...
Aaron Ballman [Sat, 15 Apr 2017 12:53:20 +0000 (12:53 +0000)]
Add isStaticStorageClass to the dynamic matcher registry so that it can be used from clang-query.

Patch by Dave Lee.

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

7 years ago[ObjC] Use empty Objective-C collection literal constants when
Akira Hatanaka [Sat, 15 Apr 2017 06:42:00 +0000 (06:42 +0000)]
[ObjC] Use empty Objective-C collection literal constants when
available.

Original patch by Douglas Gregor with minor modifications.

This recommits r300389, which broke bots because there have been API
changes since the original patch was written.

rdar://problem/20689633

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

7 years agoWhen we turn on vsx it should also turn on altivec explicitly, same
Eric Christopher [Sat, 15 Apr 2017 06:15:00 +0000 (06:15 +0000)]
When we turn on vsx it should also turn on altivec explicitly, same
with disabling it as well as disabling all vsx specific features when
turning off altivec.

Fixes PR32663.

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

7 years agoDo not run tests for crash recovery if libstdc++ safe mode is enabled
Serge Pavlov [Sat, 15 Apr 2017 05:53:49 +0000 (05:53 +0000)]
Do not run tests for crash recovery if libstdc++ safe mode is enabled

If expensive checks are enabled, safe mode of libstdc++ is enabled too.
In this mode the library uses more complex data that allow additional
checks, for instance, a container may keep list of iterators that points
to it. If a code crashes it can leave these complex library objects in
inconsistent state. It occurs in a few tests that check error recovery
if compiler crashes. These test hang in expensive check mode, as the
library tries to synchronize access to the iterators pointing to some
container, but corresponding mutex remains locked after the crash.

This fix marks these tests as unsupported if clang is built with
libstdc++ safe mode enabled.

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

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

7 years agoRevert "[ObjC] Use empty Objective-C collection literal constants when"
Akira Hatanaka [Sat, 15 Apr 2017 05:44:27 +0000 (05:44 +0000)]
Revert "[ObjC] Use empty Objective-C collection literal constants when"

This reverts commit r300389. There were mistakes in the changes I made
to CodeGen.

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

7 years ago[ObjC] Use empty Objective-C collection literal constants when
Akira Hatanaka [Sat, 15 Apr 2017 05:31:35 +0000 (05:31 +0000)]
[ObjC] Use empty Objective-C collection literal constants when
available.

Original patch by Douglas Gregor with minor modifications.

rdar://problem/20689633

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

7 years ago[Coverage] Use the new getInstrProfSectionName API (NFC)
Vedant Kumar [Sat, 15 Apr 2017 00:10:05 +0000 (00:10 +0000)]
[Coverage] Use the new getInstrProfSectionName API (NFC)

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

7 years agoModules: Do not serialize #pragma pack state
Duncan P. N. Exon Smith [Sat, 15 Apr 2017 00:07:57 +0000 (00:07 +0000)]
Modules: Do not serialize #pragma pack state

The modules side of r299226, which serializes #pragma pack state,
doesn't work well.

The main purpose was to make -include and -include-pch match semantics
(the PCH side).  We also started serializing #pragma pack in PCMs, in
the hopes of making modules and non-modules builds more consistent.  But
consider:

    $ cat a.h
    $ cat b.h
    #pragma pack(push, 2)
    $ cat module.modulemap
    module M {
        module a { header "a.h" }
        module b { header "b.h" }
    }
    $ cat t.cpp
    #include "a.h"
    #pragma pack(show)

As of r299226, the #pragma pack(show) gives "2", even though we've only
included "a.h".

- With -fmodules-local-submodule-visibility, this is clearly wrong.  We
  should get the default state (8 on x86_64).

- Without -fmodules-local-submodule-visibility, this kind of matches how
  other things work (as if include-the-whole-module), but it's still
  really terrible, and it doesn't actually make modules and non-modules
  builds more consistent.

This commit disables the serialization for modules, essentially a
partial revert of r299226.

Going forward:

 1. Having this #pragma pack stuff escape is terrible design (or, more
    often, a horrible bug).  We should prioritize adding warnings (maybe
    -Werror by default?).

 2. If we eventually reintroduce this for modules, it should only apply
    to -fmodules-local-submodule-visibility, and it should be tracked on
    a per-submodule basis.

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

7 years ago[ubsan] Don't check alignment if the alignment is 1
Vedant Kumar [Fri, 14 Apr 2017 22:03:37 +0000 (22:03 +0000)]
[ubsan] Don't check alignment if the alignment is 1

If a pointer is 1-byte aligned, there's no use in checking its
alignment. Somewhat surprisingly, ubsan can spend a significant amount
of time doing just that!

This loosely depends on D30283.

Testing: check-clang, check-ubsan, and a stage2 ubsan build.

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

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