]> granicus.if.org Git - clang/log
clang
7 years ago[Analyzer] Refactor analyzer testing scripts.
George Karpenkov [Fri, 22 Sep 2017 01:41:16 +0000 (01:41 +0000)]
[Analyzer] Refactor analyzer testing scripts.

 - Exporting needed function for future reuse.
 - Idiomatic python: using with `file as f` instead of `try/finally`.
 - Fixing some indentation issues.
 - No need to reinvent python `multiprocessing.getCPUCount()`
 - Removing a function parameter which is always the same under all invocations.
 - Adding some docstrings.

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

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

7 years agoFix tracking of whether a destructor would be deleted.
Richard Smith [Fri, 22 Sep 2017 01:04:22 +0000 (01:04 +0000)]
Fix tracking of whether a destructor would be deleted.

I've been unable to find any cases whose behavior is actually changed by this,
but only because an implicitly deleted destructor also results in it being
impossible to have a trivial (non-deleted) copy constructor, which the place
where this really matters (choosing whether to pass a class in registers)
happens to also check.

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

7 years agoAdd support for attribute 'noescape'.
Akira Hatanaka [Fri, 22 Sep 2017 00:41:05 +0000 (00:41 +0000)]
Add support for attribute 'noescape'.

The attribute informs the compiler that the annotated pointer parameter
of a function cannot escape and enables IRGen to attach attribute
'nocapture' to parameters that are annotated with the attribute. That is
the only optimization that currently takes advantage of 'noescape', but
there are other optimizations that will be added later that improves
IRGen for ObjC blocks.

This recommits r313722, which was reverted in r313725 because clang
couldn't build compiler-rt. It failed to build because there were
function declarations that were missing 'noescape'. That has been fixed
in r313929.

rdar://problem/19886775

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

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

7 years ago[Analyzer] Log when auto-synthesized body is used.
George Karpenkov [Fri, 22 Sep 2017 00:37:12 +0000 (00:37 +0000)]
[Analyzer] Log when auto-synthesized body is used.

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

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

7 years agoExtend -ast-dump for CXXRecordDecl to dump the flags from the DefinitionData.
Richard Smith [Fri, 22 Sep 2017 00:11:15 +0000 (00:11 +0000)]
Extend -ast-dump for CXXRecordDecl to dump the flags from the DefinitionData.

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

7 years agoResubmit "[lit] Refactor out some more common lit configuration code."
Zachary Turner [Thu, 21 Sep 2017 22:16:40 +0000 (22:16 +0000)]
Resubmit "[lit] Refactor out some more common lit configuration code."

There were two issues, one Python 3 specific related to Unicode,
and another which is that the tool substitution for lld no longer
rejected matches where a / preceded the tool name.

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

7 years ago[Analyzer] Use CC environment variable to select analyzer path in SATestBuild.
George Karpenkov [Thu, 21 Sep 2017 22:12:49 +0000 (22:12 +0000)]
[Analyzer] Use CC environment variable to select analyzer path in SATestBuild.

This change is required to easily test the given checkout of the analyzer,
rather than the one bundled with a system compiler.

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

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

7 years ago[Analyzer] Add simple help to SATestAdd.py
George Karpenkov [Thu, 21 Sep 2017 21:47:33 +0000 (21:47 +0000)]
[Analyzer] Add simple help to SATestAdd.py

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

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

7 years ago[Analyzer] Remove dead code from CmpRuns.py.
George Karpenkov [Thu, 21 Sep 2017 21:47:13 +0000 (21:47 +0000)]
[Analyzer] Remove dead code from CmpRuns.py.

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

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

7 years agoRevert "[lit] Refactor out some more common lit configuration code."
Zachary Turner [Thu, 21 Sep 2017 21:45:45 +0000 (21:45 +0000)]
Revert "[lit] Refactor out some more common lit configuration code."

This is breaking several bots.  I have enough information to
investigate, so I'm reverting to green until I get it figured
out.

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

7 years ago[lit] Refactor out some more common lit configuration code.
Zachary Turner [Thu, 21 Sep 2017 21:27:31 +0000 (21:27 +0000)]
[lit] Refactor out some more common lit configuration code.

debuginfo-tests has need to reuse a lot of common configuration
from clang and lld, and in general it seems like all of the
projects which are tightly coupled (e.g. lld, clang, llvm, lldb,
etc) can benefit from knowing about one other.  For example,
lldb needs to know various things about how to run clang in its
test suite.  Since there's a lot of common substitutions and
operations that need to be shared among projects, sinking this
up into LLVM makes sense.

In addition, this patch introduces a function add_tool_substitution
which handles all the dirty intricacies of matching tool names
which was previously copied around the various config files.  This
is now a simple straightforward interface which is hard to mess
up.

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

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

7 years ago[libclang] Keep track of TranslationUnit instance when annotating tokens
Jonathan Coe [Thu, 21 Sep 2017 20:48:43 +0000 (20:48 +0000)]
[libclang] Keep track of TranslationUnit instance when annotating tokens

Summary:
Previously the `_tu` was not propagated to the returned cursor, leading to errors when calling any
method on that cursor (e.g. `cursor.referenced`).

Reviewers: jbcoe, rsmith

Reviewed By: jbcoe

Subscribers: cfe-commits

Tags: #clang

Patch by jklaehn (Johann Klähn)

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

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

7 years agoRemove svn-properties for file added in 313909 (NFC)
Erich Keane [Thu, 21 Sep 2017 20:31:01 +0000 (20:31 +0000)]
Remove svn-properties for file added in 313909 (NFC)

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

7 years agoAdd testcase I forgot to add in R313907.
Erich Keane [Thu, 21 Sep 2017 20:14:08 +0000 (20:14 +0000)]
Add testcase I forgot to add in R313907.

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

7 years agoSuppress Wsign-conversion for enums with matching underlying type
Erich Keane [Thu, 21 Sep 2017 19:58:55 +0000 (19:58 +0000)]
Suppress Wsign-conversion for enums with matching underlying type

As reported here: https://bugs.llvm.org/show_bug.cgi?id=34692

A non-defined enum with a backing type was always defaulting to
being treated as a signed type. IN the case where it IS defined,
the signed-ness of the actual items is used.

This patch uses the underlying type's signed-ness in the non-defined
case to test signed-comparision.

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

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

7 years ago[Sema] Prevent InstantiateClass from checking unrelated exception specs.
Volodymyr Sapsai [Thu, 21 Sep 2017 19:54:12 +0000 (19:54 +0000)]
[Sema] Prevent InstantiateClass from checking unrelated exception specs.

Sema::InstantiateClass should check only exception specs added during
class instantiation and ignore already present delayed specs. This fixes
a case where we instantiate a class before parsing member initializers,
check exceptions for a different class and fail to find a member
initializer. Which is required for comparing exception specs for
explicitly-defaulted and implicit default constructor. With the fix we
are still checking exception specs but only after member initializers
are present.

Removing errors in crash-unparsed-exception.cpp is acceptable according
to discussion in PR24000 because other compilers accept code in
crash-unparsed-exception.cpp as valid.

rdar://problem/34167492

Reviewers: davide, rsmith

Reviewed By: rsmith

Subscribers: dim, cfe-commits

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

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

7 years ago[CUDA] Fixed order of words in the names of shfl builtins.
Artem Belevich [Thu, 21 Sep 2017 18:46:39 +0000 (18:46 +0000)]
[CUDA] Fixed order of words in the names of shfl builtins.

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

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

7 years ago[NVPTX] Implemented bar.warp.sync, barrier.sync, and vote{.sync} instructions/intrins...
Artem Belevich [Thu, 21 Sep 2017 18:44:49 +0000 (18:44 +0000)]
[NVPTX] Implemented bar.warp.sync, barrier.sync, and vote{.sync} instructions/intrinsics/builtins.

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

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

7 years ago[Sema] Fix using old initializer during switch statement transformation.
Volodymyr Sapsai [Thu, 21 Sep 2017 17:58:27 +0000 (17:58 +0000)]
[Sema] Fix using old initializer during switch statement transformation.

It fixes a crash in CodeGen when we are trying to generate code for
initializer expression created before template instantiation, like

    CallExpr '<dependent type>'
    |-UnresolvedLookupExpr '<overloaded function type>' lvalue (ADL) = 'parse'
    `-DeclRefExpr 'Buffer<N>' lvalue ParmVar 'buffer' 'Buffer<N>'

rdar://problem/33888545

Reviewers: rsmith, ahatanak

Reviewed By: ahatanak

Subscribers: aemerson, kristof.beyls, cfe-commits

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

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

7 years ago[fixup][Sema] Allow in C to define tags inside enumerations.
Volodymyr Sapsai [Thu, 21 Sep 2017 17:41:30 +0000 (17:41 +0000)]
[fixup][Sema] Allow in C to define tags inside enumerations.

Fix for too aggressive error err_type_defined_in_enum introduced in
r313386. Defining tags inside enumerations is prohibited in C++ but
allowed in C.

Reviewers: aaron.ballman, rnk, doug.gregor

Reviewed By: rnk

Subscribers: alberto_magni, cfe-commits

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

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

7 years ago[lit] Rename lld and clang lit configs to end in .py
Zachary Turner [Thu, 21 Sep 2017 17:38:13 +0000 (17:38 +0000)]
[lit] Rename lld and clang lit configs to end in .py

This follows in line with a previous patch of renaming LLVM's.

Working on these files is difficult in certain operating systems
and/or environments that don't like handling python code with a
non .py file extension.

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

7 years ago[OPENMP] Use canonical declarations for redeclarations checks.
Alexey Bataev [Thu, 21 Sep 2017 14:06:59 +0000 (14:06 +0000)]
[OPENMP] Use canonical declarations for redeclarations checks.

If the captured variable has some redeclarations we may run into the
situation where the redeclaration is used instead of the canonical
declaration and we may consider this variable as one not captured
before.

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

7 years ago[analyzer] Fix an assertion fail in VirtualCallChecker
Gabor Horvath [Thu, 21 Sep 2017 08:18:59 +0000 (08:18 +0000)]
[analyzer] Fix an assertion fail in VirtualCallChecker

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

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

7 years agoRevert "Give external linkage and mangling to lambdas inside inline variables and...
Vitaly Buka [Thu, 21 Sep 2017 02:51:56 +0000 (02:51 +0000)]
Revert "Give external linkage and mangling to lambdas inside inline variables and variable templates."

To fix: runtime error: load of value 15, which is not a valid value for type 'clang::LVComputationKind'

This reverts commit r313827.

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

7 years ago[MSan] Disable sanitization for __sanitizer_dtor_callback.
Matt Morehouse [Wed, 20 Sep 2017 22:53:08 +0000 (22:53 +0000)]
[MSan] Disable sanitization for __sanitizer_dtor_callback.

Summary:
Eliminate unnecessary instrumentation at __sanitizer_dtor_callback
call sites.  Fixes https://github.com/google/sanitizers/issues/861.

Reviewers: eugenis, kcc

Reviewed By: eugenis

Subscribers: vitalybuka, llvm-commits, cfe-commits, hiraditya

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

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

7 years ago[MS Compat]Allow __interfaces to have properties.
Erich Keane [Wed, 20 Sep 2017 22:28:24 +0000 (22:28 +0000)]
[MS Compat]Allow __interfaces to have properties.

__interface types are allowed in MSVC to have "property" data members
(marked with declspec property). This patch alters Sema to allow property
data members.

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

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

7 years agoGive external linkage and mangling to lambdas inside inline variables and variable...
Richard Smith [Wed, 20 Sep 2017 22:17:55 +0000 (22:17 +0000)]
Give external linkage and mangling to lambdas inside inline variables and variable templates.

This implements the proposed approach in https://github.com/itanium-cxx-abi/cxx-abi/issues/33

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

7 years ago[NVPTX] Implemented shfl.sync instruction and supporting intrinsics/builtins.
Artem Belevich [Wed, 20 Sep 2017 21:23:07 +0000 (21:23 +0000)]
[NVPTX] Implemented shfl.sync instruction and supporting intrinsics/builtins.

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

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

7 years ago[OPENMP] Support for re-declarations when checking captured variables.
Alexey Bataev [Wed, 20 Sep 2017 20:11:31 +0000 (20:11 +0000)]
[OPENMP] Support for re-declarations when checking captured variables.

Need to check for variables re-declarations when checking that the
variable was already captured in the captured region.

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

7 years agoFixed unused variable warning introduced in r313796 causing build failure
Cameron Desrochers [Wed, 20 Sep 2017 19:37:37 +0000 (19:37 +0000)]
Fixed unused variable warning introduced in r313796 causing build failure

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

7 years ago[PCH] Fixed preamble breaking with BOM presence (and particularly, fluctuating BOM...
Cameron Desrochers [Wed, 20 Sep 2017 19:03:37 +0000 (19:03 +0000)]
[PCH] Fixed preamble breaking with BOM presence (and particularly, fluctuating BOM presence)

This patch fixes broken preamble-skipping when the preamble region includes a byte order mark (BOM). Previously, parsing would fail if preamble PCH generation was enabled and a BOM was present.

This also fixes preamble invalidation when a BOM appears or disappears. This may seem to be an obscure edge case, but it happens regularly with IDEs that pass buffer overrides that never (or always) have a BOM, yet the underlying file from the initial parse that generated a PCH might (or might not) have a BOM.

I've included a test case for these scenarios.

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

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

7 years agoRemove offset size check in nullptr arithmetic handling
Andrew Kaylor [Wed, 20 Sep 2017 18:06:44 +0000 (18:06 +0000)]
Remove offset size check in nullptr arithmetic handling

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

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

7 years agoPut target deduced from executable name at the start of argument list
Serge Pavlov [Wed, 20 Sep 2017 15:22:27 +0000 (15:22 +0000)]
Put target deduced from executable name at the start of argument list

When clang is called as 'target-clang', put deduced target option at
the start of argument list so that option '--target=' specified in command
line could override it.

This change fixes PR34671.

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

7 years agoReplace r313747, don't always warn on enums, rework testcases.
Roman Lebedev [Wed, 20 Sep 2017 13:50:01 +0000 (13:50 +0000)]
Replace r313747, don't always warn on enums, rework testcases.

As Aaron Ballman has pointed out, that is not really correct.
So the key problem there is the invalidity of the testcase.

Revert r313747, and rework testcase in such a way, so these
details (platform-specific default enum sigdness) are
accounted for.

Also, add a C++-specific testcase.

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

7 years ago[Sema] CheckTautologicalComparisonWithZero(): always complain about enums
Roman Lebedev [Wed, 20 Sep 2017 10:15:27 +0000 (10:15 +0000)]
[Sema] CheckTautologicalComparisonWithZero(): always complain about enums

Hopefully fixes test-clang-msc-x64-on-i686-linux-RA build.

The underlying problem is that the enum is signed there.
Yet still, it is invalid for it to contain negative values,
so the comparison is always tautological in this case.

No differential, but related to https://reviews.llvm.org/D37629

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

7 years ago[Sema] Move some stuff into -Wtautological-unsigned-enum-zero-compare
Roman Lebedev [Wed, 20 Sep 2017 09:54:47 +0000 (09:54 +0000)]
[Sema] Move some stuff into -Wtautological-unsigned-enum-zero-compare

Recommit. Original commit was reverted because buildbots broke.
The error was only reproducible in the build with assertions.
The problem was that the diagnostic expected true/false as
bool, while it was provided as string "true"/"false".

Summary:
As requested by Sam McCall:
> Enums (not new I guess). Typical case: if (enum < 0 || enum > MAX)
> The warning strongly suggests that the enum < 0 check has no effect
> (for enums with nonnegative ranges).
> Clang doesn't seem to optimize such checks out though, and they seem
> likely to catch bugs in some cases. Yes, only if there's UB elsewhere,
> but I assume not optimizing out these checks indicates a deliberate
> decision to stay somewhat compatible with a technically-incorrect
> mental model.
> If this is the case, should we move these to a
> -Wtautological-compare-enum subcategory?

Reviewers: rjmccall, rsmith, aaron.ballman, sammccall, bkramer, djasper

Reviewed By: aaron.ballman

Subscribers: jroelofs, cfe-commits

Tags: #clang

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

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

7 years agoclang-format clang-format.
Manuel Klimek [Wed, 20 Sep 2017 09:51:03 +0000 (09:51 +0000)]
clang-format clang-format.

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

7 years agoFix clang-format's detection of structured bindings.
Manuel Klimek [Wed, 20 Sep 2017 09:29:37 +0000 (09:29 +0000)]
Fix clang-format's detection of structured bindings.

Correctly determine when [ is part of a structured binding instead of a
lambda.

To be able to reuse the implementation already available, this patch also:
- sets the Previous link of FormatTokens in the UnwrappedLineParser
- moves the isCppStructuredBinding function into FormatToken

Before:
  auto const const &&[x, y] { A *i };

After:
  auto const const && [x, y]{A * i};

Fixing formatting of the type of the structured binding is still missing.

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

7 years agoImplement C++ [basic.link]p8.
Richard Smith [Wed, 20 Sep 2017 07:22:00 +0000 (07:22 +0000)]
Implement C++ [basic.link]p8.

If a function or variable has a type with no linkage (and is not extern "C"),
any use of it requires a definition within the same translation unit; the idea
is that it is not possible to define the entity elsewhere, so any such use is
necessarily an error.

There is an exception, though: some types formally have no linkage but
nonetheless can be referenced from other translation units (for example, this
happens to anonymous structures defined within inline functions). For entities
with those types, we suppress the diagnostic except under -pedantic.

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

7 years agoRevert "Add support for attribute 'noescape'."
Akira Hatanaka [Wed, 20 Sep 2017 06:55:43 +0000 (06:55 +0000)]
Revert "Add support for attribute 'noescape'."

This reverts commit r313722.

It looks like compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc cannot be
compiled because some of the functions declared in the file do not match
the ones in the SDK headers (which are annotated with 'noescape').

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

7 years agoAdd support for attribute 'noescape'.
Akira Hatanaka [Wed, 20 Sep 2017 06:32:45 +0000 (06:32 +0000)]
Add support for attribute 'noescape'.

The attribute informs the compiler that the annotated pointer parameter
of a function cannot escape and enables IRGen to attach attribute
'nocapture' to parameters that are annotated with the attribute. That is
the only optimization that currently takes advantage of 'noescape', but
there are other optimizations that will be added later that improves
IRGen for ObjC blocks.

rdar://problem/19886775

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

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

7 years agoRevert "Add support for attribute 'noescape'."
Akira Hatanaka [Wed, 20 Sep 2017 06:27:39 +0000 (06:27 +0000)]
Revert "Add support for attribute 'noescape'."

This reverts r313717.

I closed the wrong phabricator review.

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

7 years agoAdd support for attribute 'noescape'.
Akira Hatanaka [Wed, 20 Sep 2017 06:22:51 +0000 (06:22 +0000)]
Add support for attribute 'noescape'.

The attribute informs the compiler that the annotated pointer parameter
of a function cannot escape and enables IRGen to attach attribute
'nocapture' to parameters that are annotated with the attribute. That is
the only optimization that currently takes advantage of 'noescape', but
there are other optimizations that will be added later that improves
IRGen for ObjC blocks.

rdar://problem/19886775

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

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

7 years ago[Sema][ObjC] Warn about mismatches in attributes between overriding and
Akira Hatanaka [Wed, 20 Sep 2017 05:39:18 +0000 (05:39 +0000)]
[Sema][ObjC] Warn about mismatches in attributes between overriding and
overridden methods when compiling for non-ARC.

Previously, clang would error out when compiling for ARC, but didn't
print any diagnostics when compiling for non-ARC.

This was pointed out in the patch review for attribute noescape:

https://reviews.llvm.org/D32210

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

7 years agoAdd override for ClangDiagnosticHandler::isAnyRemarkEnabled()
Adam Nemet [Tue, 19 Sep 2017 23:00:59 +0000 (23:00 +0000)]
Add override for ClangDiagnosticHandler::isAnyRemarkEnabled()

This is used by the new closure-based variant of
OptimizationRemarkEmitter::emit().

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

7 years agoFix 32-bit buildbots by removing tests that are dependent on pointer-size comparisons.
Andrew Kaylor [Tue, 19 Sep 2017 21:43:01 +0000 (21:43 +0000)]
Fix 32-bit buildbots by removing tests that are dependent on pointer-size comparisons.

The recently behavior in the code that these tests were meant to be checking will be ammended as soon as a suitable change can be properly reviewed.

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

7 years agoRevert "[Sema] Move some stuff into -Wtautological-unsigned-enum-zero-compare"
Roman Lebedev [Tue, 19 Sep 2017 21:40:41 +0000 (21:40 +0000)]
Revert "[Sema] Move some stuff into -Wtautological-unsigned-enum-zero-compare"

This reverts commit r313677.

Buildbots fail with assertion failure
Failing Tests (7):
    Clang :: Analysis/null-deref-ps.c
    Clang :: CodeGen/enum.c
    Clang :: Sema/compare.c
    Clang :: Sema/outof-range-constant-compare.c
    Clang :: Sema/tautological-unsigned-enum-zero-compare.c
    Clang :: Sema/tautological-unsigned-zero-compare.c
    Clang :: SemaCXX/compare.cpp

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

7 years ago[Sema] Move some stuff into -Wtautological-unsigned-enum-zero-compare
Roman Lebedev [Tue, 19 Sep 2017 21:11:35 +0000 (21:11 +0000)]
[Sema] Move some stuff into -Wtautological-unsigned-enum-zero-compare

Summary:
As requested by Sam McCall:
> Enums (not new I guess). Typical case: if (enum < 0 || enum > MAX)
> The warning strongly suggests that the enum < 0 check has no effect
> (for enums with nonnegative ranges).
> Clang doesn't seem to optimize such checks out though, and they seem
> likely to catch bugs in some cases. Yes, only if there's UB elsewhere,
> but I assume not optimizing out these checks indicates a deliberate
> decision to stay somewhat compatible with a technically-incorrect
> mental model.
> If this is the case, should we move these to a
> -Wtautological-compare-enum subcategory?

Reviewers: rjmccall, rsmith, aaron.ballman, sammccall, bkramer, djasper

Reviewed By: aaron.ballman

Subscribers: jroelofs, cfe-commits

Tags: #clang

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

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

7 years ago[OpenMP] fix seg-faults printing diagnostics with invalid ordered(n) values
Rachel Craik [Tue, 19 Sep 2017 21:04:23 +0000 (21:04 +0000)]
[OpenMP] fix seg-faults printing diagnostics with invalid ordered(n) values

When the value specified for n in ordered(n) is larger than the number of loops a segmentation fault can occur in one of two ways when attempting to print out a diagnostic for an associated depend(sink : vec):
1) The iteration vector vec contains less than n items
2) The iteration vector vec contains a variable that is not a loop control variable
This patch addresses both of these issues.

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

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

7 years agoTeach clang to tolerate the 'p = nullptr + n' idiom used by glibc
Andrew Kaylor [Tue, 19 Sep 2017 20:26:40 +0000 (20:26 +0000)]
Teach clang to tolerate the 'p = nullptr + n' idiom used by glibc

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

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

7 years agoFix ClangDiagnosticHandler::is*RemarkEnabled members
Adam Nemet [Tue, 19 Sep 2017 17:59:40 +0000 (17:59 +0000)]
Fix ClangDiagnosticHandler::is*RemarkEnabled members

Apparently these weren't really working. I added test coverage and fixed the
typo in the name and the parameter.

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

7 years ago[Sema] Disallow assigning record lvalues with nested const-qualified fields.
Bjorn Pettersson [Tue, 19 Sep 2017 13:10:30 +0000 (13:10 +0000)]
[Sema] Disallow assigning record lvalues with nested const-qualified fields.

Summary:
According to C99 6.3.2.1p1, structs and unions with nested
const-qualified fields (that is, const-qualified fields
declared at some recursive level of the aggregate) are not
modifiable lvalues. However, Clang permits assignments of
these lvalues.

With this patch, we both prohibit the assignment of records
with const-qualified fields and emit a best-effort diagnostic.
This fixes https://bugs.llvm.org/show_bug.cgi?id=31796 .

Committing on behalf of bevinh (Bevin Hansson).

Reviewers: rtrieu, rsmith, bjope

Reviewed By: bjope

Subscribers: Ka-Ka, rogfer01, bjope, fhahn, cfe-commits

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

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

7 years agoLowering Mask Set1 intrinsics to LLVM IR
Jina Nahias [Tue, 19 Sep 2017 11:00:27 +0000 (11:00 +0000)]
Lowering Mask Set1 intrinsics to LLVM IR

This patch, together with a matching llvm patch (https://reviews.llvm.org/D37669), implements the lowering of X86 mask set1 intrinsics to IR.

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

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

7 years agoFix formatting of lambda introducers with initializers.
Manuel Klimek [Tue, 19 Sep 2017 09:59:30 +0000 (09:59 +0000)]
Fix formatting of lambda introducers with initializers.

Most of the work was already done when we introduced a look-behind based
lambda introducer detection.

This patch finishes the transition by completely relying on the simple
lambda introducer detection and simply recursing into normal
brace-parsing code to parse until the end of the introducer.

This fixes initializers in lambdas, including nested lambdas.

Before:
  auto a = [b = [c = 42]{}]{};
  auto b = [c = &i + 23]{};

After:
  auto a = [b = [c = 42] {}] {};
  auto b = [c = &i + 23] {};

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

7 years ago[Coverage] Remove deferred region for trailing return, fixes PR34611
Vedant Kumar [Tue, 19 Sep 2017 00:29:46 +0000 (00:29 +0000)]
[Coverage] Remove deferred region for trailing return, fixes PR34611

As a special case, throw away deferred regions for trailing returns.
This allows the closing curly brace to have a count, and is less
distracting.

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

7 years ago[Coverage] Use a new API to label gap areas
Vedant Kumar [Mon, 18 Sep 2017 23:37:30 +0000 (23:37 +0000)]
[Coverage] Use a new API to label gap areas

This will make it possible for llvm-cov to pick better line execution
counts, and is part of the fix for llvm.org/PR34612.

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

7 years ago[Docs] Document cache pruning support for gold
Yi Kong [Mon, 18 Sep 2017 23:24:01 +0000 (23:24 +0000)]
[Docs] Document cache pruning support for gold

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

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

7 years ago[lit] Update clang and lld to use new config helpers.
Zachary Turner [Mon, 18 Sep 2017 22:26:48 +0000 (22:26 +0000)]
[lit] Update clang and lld to use new config helpers.

NFC intended here, this only updates clang and lld's lit configs
to use some helper functionality in the lit.llvm submodule.

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

7 years ago[Sema] Fix a pair of crashes when generating exception specifiers with an
Erich Keane [Mon, 18 Sep 2017 21:28:55 +0000 (21:28 +0000)]
[Sema] Fix a pair of crashes when generating exception specifiers with an
error'ed field for a template class' default ctor.

The two examples in the test would both cause a compiler assert when attempting
to calculate the exception specifier for the default constructor for the
template classes. The problem was that dependents of this function expect that
Field->getInClassInitializer (including canThrow) is not nullptr. However, if
the template's initializer has an error, exactly that situation happens.

This patch simply sets the field to be invalid.

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

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

7 years agoAnother attempt to fix warning discovered by r313487. [-Wunused-lambda-capture]
Vitaly Buka [Mon, 18 Sep 2017 08:26:01 +0000 (08:26 +0000)]
Another attempt to fix warning discovered by r313487. [-Wunused-lambda-capture]

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

7 years agoRevert rL313511, "Fix a warning discovered by rL313487. [-Wunused-lambda-capture]"
NAKAMURA Takumi [Mon, 18 Sep 2017 05:52:57 +0000 (05:52 +0000)]
Revert rL313511, "Fix a warning discovered by rL313487. [-Wunused-lambda-capture]"

It was incompatible to msc.

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

7 years agoFix a warning discovered by rL313487. [-Wunused-lambda-capture]
NAKAMURA Takumi [Mon, 18 Sep 2017 04:55:33 +0000 (04:55 +0000)]
Fix a warning discovered by rL313487. [-Wunused-lambda-capture]

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

7 years agoReformat.
NAKAMURA Takumi [Mon, 18 Sep 2017 04:55:31 +0000 (04:55 +0000)]
Reformat.

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

7 years ago[X86] Move even more of our CPU to feature mapping switch to use fallthroughs
Craig Topper [Sun, 17 Sep 2017 19:05:46 +0000 (19:05 +0000)]
[X86] Move even more of our CPU to feature mapping switch to use fallthroughs

This arranges more of the Intel and AMD CPUs into fallthrough positions based on their features. We may be able to merge this new AMD set with the BTVER or BDVER sets but I didn't look that closely.

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

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

7 years agoFix the second half of PR34266: Don't implicitly capture '*this' if the members...
Faisal Vali [Sun, 17 Sep 2017 15:37:51 +0000 (15:37 +0000)]
Fix the second half of PR34266:  Don't implicitly capture '*this' if the members are found in a class unrelated to the enclosing class.

https://bugs.llvm.org/show_bug.cgi?id=34266

For e.g.
  struct A {
     void f(int);
     static void f(char);
  };
  struct B {
    auto foo() {
      return [&] (auto a) {
         A::f(a); // this should not cause a capture of '*this'
      };
    }
  };

The patch does the following:
1) It moves the check to attempt an implicit capture of '*this' by reference into the more logical location of when the call is actually built within ActOnCallExpr (as opposed to when the unresolved-member-lookup node is created).
  - Reminder: A capture of '*this' by value has to always be an explicit capture.

2) It additionally checks whether the naming class of the UnresolvedMemberExpr ('A' in the example above) is related to the enclosing class ('B' above).

P.S. If you have access to ISO-C++'s CWG reflector, see this thread for some potentially related discussion: http://lists.isocpp.org/core/2017/08/2851.php

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

7 years ago[X86] Remove unnecessary extra encodings from the CPU name enum in clang
Craig Topper [Sat, 16 Sep 2017 16:44:39 +0000 (16:44 +0000)]
[X86] Remove unnecessary extra encodings from the CPU name enum in clang

Summary:
For a lot of older CPUs we have a 1:1 mapping between CPU name and enum name. But many of them are effectively aliases of each other and as a result are always repeated together at every usage

This patch removes most of the duplication. It also uses StringSwitch::Cases to make the many to one mapping in the StringSwitch more obvious.

Reviewers: RKSimon, spatel, zvi, igorb

Reviewed By: RKSimon

Subscribers: cfe-commits

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

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

7 years agoRemove comment accidentally committed with D36642. NFC.
Vedant Kumar [Sat, 16 Sep 2017 06:26:51 +0000 (06:26 +0000)]
Remove comment accidentally committed with D36642. NFC.

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

7 years ago[WebAssembly] Restore __builtin_wasm_rethrow builtin
Heejin Ahn [Sat, 16 Sep 2017 01:07:43 +0000 (01:07 +0000)]
[WebAssembly] Restore __builtin_wasm_rethrow builtin

Summary:
Restore the `__builtin_wasm_rethrow` builtin deleted in D37931. On second
thought, it appears it can be used to implement `__cxa_rethrow`.

Reviewers: dschuff, sunfish

Reviewed By: dschuff

Subscribers: jfb, sbc100, jgravelle-google

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

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

7 years ago[docs] add Windows examples to ThinLTO.rst
Bob Haarman [Sat, 16 Sep 2017 00:16:13 +0000 (00:16 +0000)]
[docs] add Windows examples to ThinLTO.rst

Reviewers: pcc, ruiu

Reviewed By: ruiu

Subscribers: mehdi_amini, eraman, cfe-commits

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

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

7 years ago[X86] Use native shuffle vector for the perm2f128 intrinsics
Craig Topper [Fri, 15 Sep 2017 23:00:59 +0000 (23:00 +0000)]
[X86] Use native shuffle vector for the perm2f128 intrinsics

This patch replaces the perm2f128 intrinsics with native shuffle vectors.

This uses a pretty simple approach to allocate source 0 to the lower half input and source 1 to the upper half input. Then its just a matter of filling in the indices to use either the lower or upper half of that specific source. This can result in the same source being used by both operands. InstCombine or SelectionDAGBuilder should be able to clean that up.

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

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

7 years agoResubmit "[lit] Force site configs to run before source-tree configs"
Zachary Turner [Fri, 15 Sep 2017 22:10:46 +0000 (22:10 +0000)]
Resubmit "[lit] Force site configs to run before source-tree configs"

This is a resubmission of r313270.  It broke standalone builds of
compiler-rt because we were not correctly generating the llvm-lit
script in the standalone build directory.

The fixes incorporated here attempt to find llvm/utils/llvm-lit
from the source tree returned by llvm-config.  If present, it
will generate llvm-lit into the output directory.  Regardless,
the user can specify -DLLVM_EXTERNAL_LIT to point to a specific
lit.py on their file system.  This supports the use case of
someone installing lit via a package manager.  If it cannot find
a source tree, and -DLLVM_EXTERNAL_LIT is either unspecified or
invalid, then we print a warning that tests will not be able
to run.

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

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

7 years agoRemove __builtin_wasm_rethrow builtin
Heejin Ahn [Fri, 15 Sep 2017 22:01:22 +0000 (22:01 +0000)]
Remove __builtin_wasm_rethrow builtin

Summary:
Remove `__builtin_wasm_rethrow` builtin. I thought it was required to implement
`__cxa_rethrow` function in libcxxabi, but it turned out it will be using
`__builtin_wasm_throw` instead.

Reviewers: dschuff, jgravelle-google

Reviewed By: jgravelle-google

Subscribers: jfb, sbc100, jgravelle-google

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

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

7 years ago[X86] Disable _mm512_maskz_set1_epi64 intrinsic on 32-bit targets to prevent a backen...
Craig Topper [Fri, 15 Sep 2017 20:27:59 +0000 (20:27 +0000)]
[X86] Disable _mm512_maskz_set1_epi64 intrinsic on 32-bit targets to prevent a backend isel failure.

The __builtin_ia32_pbroadcastq512_mem_mask we were previously trying to use in 32-bit mode is not implemented in the x86 backend and causes isel to fail in release builds. In debug builds it fails even earlier during legalization with an llvm_unreachable.

While there add the missing test case for this intrinsic for this for 64-bit mode.

This fixes PR34631. D37668 should be able to recover this for 32-bit mode soon. But I wanted to fix the crash ahead of that.

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

7 years agoThis patch fixes https://bugs.llvm.org/show_bug.cgi?id=32352 LLVM code change is...
Vivek Pandya [Fri, 15 Sep 2017 20:09:55 +0000 (20:09 +0000)]
This patch fixes https://bugs.llvm.org/show_bug.cgi?id=32352 LLVM code change is as per https://reviews.llvm.org/D33514

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

7 years ago[Sema] Error out early for tags defined inside an enumeration.
Volodymyr Sapsai [Fri, 15 Sep 2017 19:51:42 +0000 (19:51 +0000)]
[Sema] Error out early for tags defined inside an enumeration.

This fixes PR28903 by avoiding access check for inner enum constant. We
are performing access check because one enum constant references another
and because enum is defined in CXXRecordDecl. But access check doesn't
work because FindDeclaringClass doesn't expect more than one EnumDecl
and because inner enum has access AS_none due to not being an immediate
child of a record.

The change detects an enum is defined in wrong place and allows to skip
parsing its body. Access check is skipped together with body parsing.
There was no crash in C, added test case to cover the new error.

rdar://problem/28530809

Reviewers: rnk, doug.gregor, rsmith

Reviewed By: doug.gregor

Subscribers: cfe-commits

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

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

7 years ago[Analyzer] Check function name size before indexing.
George Karpenkov [Fri, 15 Sep 2017 19:51:26 +0000 (19:51 +0000)]
[Analyzer] Check function name size before indexing.

https://reviews.llvm.org/D37908

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

7 years ago[CUDA] Work around a new quirk in CUDA9 headers.
Artem Belevich [Fri, 15 Sep 2017 17:30:53 +0000 (17:30 +0000)]
[CUDA] Work around a new quirk in CUDA9 headers.

In CUDA-9 some of device-side math functions that we need are conditionally
defined within '#if _GLIBCXX_MATH_H'. We need to temporarily undo the guard
around inclusion of math_functions.hpp.

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

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

7 years agoFix the __interface inheritence rules to work better with IUnknown and IDispatch
Erich Keane [Fri, 15 Sep 2017 16:03:35 +0000 (16:03 +0000)]
Fix the __interface inheritence rules to work better with IUnknown and IDispatch

__interface objects in MSVC are permitted to inherit from __interface types,
and interface-like types.

Additionally, there are two default interface-like types
(IUnknown and IDispatch) that all interface-like
types must inherit from.

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

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

7 years ago[clang-format] New flag - BraceWrapping.AfterExternBlock
Krasimir Georgiev [Fri, 15 Sep 2017 11:23:50 +0000 (11:23 +0000)]
[clang-format] New flag - BraceWrapping.AfterExternBlock

Summary:
Bug: https://bugs.llvm.org/show_bug.cgi?id=34016 - **"extern C part"**

**Problem:**

Due to the lack of "brace wrapping extern" flag, clang format does parse the block after **extern** keyword moving the opening bracket to the header line always!

**Patch description:**

A new style added, new configuration flag - **BraceWrapping.AfterExternBlock** that allows us to decide whether we want a break before brace or not.

Reviewers: djasper, krasimir

Reviewed By: krasimir

Subscribers: klimek, cfe-commits

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

Contributed by @PriMee!

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

7 years agoRevert "[lit] Force site configs to run before source-tree configs"
Zachary Turner [Fri, 15 Sep 2017 02:56:40 +0000 (02:56 +0000)]
Revert "[lit] Force site configs to run before source-tree configs"

This patch is still breaking several multi-stage compiler-rt bots.
I already know what the fix is, but I want to get the bots green
for now and then try re-applying in the morning.

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

7 years ago[Sema] Correct typos in LHS, RHS before building a binop expression.
Volodymyr Sapsai [Fri, 15 Sep 2017 00:08:37 +0000 (00:08 +0000)]
[Sema] Correct typos in LHS, RHS before building a binop expression.

Specifically, typo correction should be done before dispatching between
different kinds of binary operations like pseudo-object assignment,
overloaded binary operation, etc.

Without this change we hit an assertion

    Assertion failed: (!LHSExpr->hasPlaceholderType(BuiltinType::PseudoObject)), function CheckAssignmentOperands

when in Objective-C we reference a property without `self` and there are
2 equally good typo correction candidates: ivar and a class name. In
this case LHS expression in `BuildBinOp` is

    CXXDependentScopeMemberExpr
    `-TypoExpr

and instead of handling Obj-C property assignment as pseudo-object
assignment, we call `CreateBuiltinBinOp` which corrects typo to

    ObjCPropertyRefExpr '<pseudo-object type>'

but cannot handle pseudo-objects and asserts about it (indirectly,
through `CheckAssignmentOperands`).

rdar://problem/33102722

Reviewers: rsmith, ahatanak, majnemer

Reviewed By: ahatanak

Subscribers: cfe-commits

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

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

7 years agoFix reStructuredText warning.
Douglas Gregor [Thu, 14 Sep 2017 23:58:18 +0000 (23:58 +0000)]
Fix reStructuredText warning.

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

7 years ago[MSan] Specify use-after-dtor default value in header.
Matt Morehouse [Thu, 14 Sep 2017 23:53:56 +0000 (23:53 +0000)]
[MSan] Specify use-after-dtor default value in header.

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

7 years agoMinor cleanups to address feedback from Bruno. NFC
Douglas Gregor [Thu, 14 Sep 2017 23:40:51 +0000 (23:40 +0000)]
Minor cleanups to address feedback from Bruno. NFC

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

7 years agoAdd /System/Library/PrivateFrameworks as a header search path.
Douglas Gregor [Thu, 14 Sep 2017 23:38:44 +0000 (23:38 +0000)]
Add /System/Library/PrivateFrameworks as a header search path.

Addresses rdar://problem/34438708.

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

7 years ago[Module map] Introduce a private module re-export directive.
Douglas Gregor [Thu, 14 Sep 2017 23:38:44 +0000 (23:38 +0000)]
[Module map] Introduce a private module re-export directive.

Introduce a new "export_as" directive for top-level modules, which
indicates that the current module is a "private" module whose symbols
will eventually be exported through the named "public" module. This is
in support of a common pattern in the Darwin ecosystem where a single
public framework is constructed of several private frameworks, with
(currently) header duplication and some support from the linker.

Addresses rdar://problem/34438420.

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

7 years agoDiagnostic specific failed condition in a static_assert.
Douglas Gregor [Thu, 14 Sep 2017 23:38:42 +0000 (23:38 +0000)]
Diagnostic specific failed condition in a static_assert.

When a static_assert fails, dig out a specific condition to diagnose,
using the same logic that we use to find the enable_if condition to
diagnose.

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

7 years ago[MSan] Add flag to disable use-after-dtor.
Matt Morehouse [Thu, 14 Sep 2017 23:14:37 +0000 (23:14 +0000)]
[MSan] Add flag to disable use-after-dtor.

Summary: Flag is -fno-sanitize-use-after-dtor.

Reviewers: vitalybuka, eugenis, kcc

Reviewed By: vitalybuka, eugenis

Subscribers: cfe-commits

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

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

7 years ago[WebAssembly] Fix wasm-toolchain.c tests
Sam Clegg [Thu, 14 Sep 2017 22:36:44 +0000 (22:36 +0000)]
[WebAssembly] Fix wasm-toolchain.c tests

Summary: This test should have been updated in r313299

Subscribers: jfb, dschuff, jgravelle-google, aheejin

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

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

7 years agoFix 2 stage build on some apple bots.
Zachary Turner [Thu, 14 Sep 2017 21:30:27 +0000 (21:30 +0000)]
Fix 2 stage build on some apple bots.

The recent lit refactor changed the location of the lit script
run by check targets from <source>/utils/lit/lit.py to
<bin>/llvm-lit.py.  In some 2-stage build scenarios, the location
of <bin> was not properly passed through to the second stage,
and it was looking for /llvm-lit.py instead, causing failures.

Fix suggested by Mike Edwards and Chris Bieneman @apple

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

7 years ago[WebAssembly] Remove invliad lld arguments
Sam Clegg [Thu, 14 Sep 2017 21:29:25 +0000 (21:29 +0000)]
[WebAssembly] Remove invliad lld arguments

These arguments don't (not yet at least) make sense for
the wasm lld port.

Subscribers: jfb, dschuff, jgravelle-google, aheejin

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

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

7 years agoEnable __declspec(selectany) on any platform
Piotr Padlewski [Thu, 14 Sep 2017 17:33:08 +0000 (17:33 +0000)]
Enable __declspec(selectany) on any platform

Summary:
This feature was disabled probably by mistake in rL300562
This fixes bug https://bugs.llvm.org/show_bug.cgi?id=33285

Reviewers: davide, rnk

Subscribers: cfe-commits

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

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

7 years ago[lit] Force site configs to be run before source-tree configs
Zachary Turner [Thu, 14 Sep 2017 16:47:58 +0000 (16:47 +0000)]
[lit] Force site configs to be run before source-tree configs

This patch simplifies LLVM's lit infrastructure by enforcing an ordering
that a site config is always run before a source-tree config.

A significant amount of the complexity from lit config files arises from
the fact that inside of a source-tree config file, we don't yet know if
the site config has been run.  However it is *always* required to run
a site config first, because it passes various variables down through
CMake that the main config depends on.  As a result, every config
file has to do a bunch of magic to try to reverse-engineer the location
of the site config file if they detect (heuristically) that the site
config file has not yet been run.

This patch solves the problem by emitting a mapping from source tree
config file to binary tree site config file in llvm-lit.py. Then, during
discovery when we find a config file, we check to see if we have a
target mapping for it, and if so we use that instead.

This mechanism is generic enough that it does not affect external users
of lit. They will just not have a config mapping defined, and everything
will work as normal.

On the other hand, for us it allows us to make many simplifications:

* We are guaranteed that a site config will be executed first
* Inside of a main config, we no longer have to assume that attributes
  might not be present and use getattr everywhere.
* We no longer have to pass parameters such as --param llvm_site_config=<path>
  on the command line.
* It is future-proof, meaning you don't have to edit llvm-lit.in to add
  support for new projects.
* All of the duplicated logic of trying various fallback mechanisms of
  finding a site config from the main config are now gone.

One potentially noteworthy thing that was required to implement this
change is that whereas the ninja check targets previously used the first
method to spawn lit, they now use the second. In particular, you can no
longer run lit.py against the source tree while specifying the various
`foo_site_config=<path>` parameters.  Instead, you need to run
llvm-lit.py.

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

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

7 years agoFix Refactor/tool-test-support.c test on Windows by avoiding
Alex Lorenz [Thu, 14 Sep 2017 15:10:39 +0000 (15:10 +0000)]
Fix Refactor/tool-test-support.c test on Windows by avoiding
the STDERR redirect

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

7 years ago[refactor] Use CommonOptionsParser in clang-refactor
Alex Lorenz [Thu, 14 Sep 2017 13:16:14 +0000 (13:16 +0000)]
[refactor] Use CommonOptionsParser in clang-refactor

This commit ensures that CommonOptionsParser works with subcommands. This allows
clang-refactor to use the CommonOptionsParser.

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

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

7 years agoLink clang-refactor with clangFormat
Alex Lorenz [Thu, 14 Sep 2017 10:46:29 +0000 (10:46 +0000)]
Link clang-refactor with clangFormat

This is an attempt to fix
http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage after r313244.

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

7 years agoLink clang-refactor with clangAST and clangLex
Alex Lorenz [Thu, 14 Sep 2017 10:38:04 +0000 (10:38 +0000)]
Link clang-refactor with clangAST and clangLex

This is an attempt to fix http://bb.pgr.jp/builders/clang-i686-linux-RA/ after
r313244.

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

7 years ago[refactor] add clang-refactor tool with initial testing support and
Alex Lorenz [Thu, 14 Sep 2017 10:06:52 +0000 (10:06 +0000)]
[refactor] add clang-refactor tool with initial testing support and
local-rename action

This commit introduces the clang-refactor tool alongside the local-rename action
which uses the existing renaming engine used by clang-rename. The tool
doesn't actually perform the source transformations yet, it just provides
testing support. This commit also moves only one test from clang-rename over to
test/Refactor. I will continue to move the other tests throughout
development of clang-refactor.

The following options are supported by clang-refactor:

-v: use verbose output
-selection: The source range that corresponds to the portion of the source
 that's selected (currently only special command test:<file> is supported).

Please note that a follow-up commit will migrate clang-refactor to
libTooling's common option parser, so clang-refactor will be able to use
the common interface with compilation database and options like -p, -extra-arg,
etc.

The testing support provided by clang-refactor is described below:

When -selection=test:<file> is given, clang-refactor will parse the selection
commands from that file. The selection commands are grouped and the specified
refactoring action invoked by the tool. Each command in a group is expected to
produce an identical result. The precise syntax for the selection commands is
described in a comment in TestSupport.h.

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

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

7 years ago[Headers] Fix the return type of _InterlockedCompareExchange_rel
Martin Storsjo [Thu, 14 Sep 2017 07:04:59 +0000 (07:04 +0000)]
[Headers] Fix the return type of _InterlockedCompareExchange_rel

This was a typo in SVN r282447, where it was added.

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

7 years ago[NFC] [Analyzer] Fix RST markup in documentation.
George Karpenkov [Thu, 14 Sep 2017 00:04:56 +0000 (00:04 +0000)]
[NFC] [Analyzer] Fix RST markup in documentation.

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