]> granicus.if.org Git - clang/log
clang
6 years agoAMDGPU: Add -mxnack/-mno-xnack options that set +/-xnack feature
Konstantin Zhuravlyov [Fri, 10 Nov 2017 19:28:25 +0000 (19:28 +0000)]
AMDGPU: Add -mxnack/-mno-xnack options that set +/-xnack feature

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

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

6 years agoAMDGPU/NFC: Move getAMDGPUTargetFeatures to AMDGPU toolchain
Konstantin Zhuravlyov [Fri, 10 Nov 2017 19:09:57 +0000 (19:09 +0000)]
AMDGPU/NFC: Move getAMDGPUTargetFeatures to AMDGPU toolchain

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

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

6 years ago[clang-format] Handle leading comments in using declaration
Daniel Jasper [Fri, 10 Nov 2017 17:11:18 +0000 (17:11 +0000)]
[clang-format] Handle leading comments in using declaration

This fixes clang-format internal assertion for the following code:

  /* override */ using std::string;

Patch by Igor Sugak. Thank you.

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

6 years ago[NFC] Pacify bbot for OpenMP 'teams distribute parallel for'
Carlo Bertolli [Fri, 10 Nov 2017 16:49:09 +0000 (16:49 +0000)]
[NFC] Pacify bbot for OpenMP 'teams distribute parallel for'

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

6 years ago[python] [tests] Rewrite to use standard unittest module
Michal Gorny [Fri, 10 Nov 2017 16:44:12 +0000 (16:44 +0000)]
[python] [tests] Rewrite to use standard unittest module

Rewrite the tests from using plain 'assert' mixed with some nosetests
methods to the standard unittest module layout. Improve the code
to use the most canonical assertion methods whenever possible.

This has a few major advantages:

- the code uses standard methods now, resulting in a reduced number
of WTFs whenever someone with basic Python knowledge gets to read it,

- completely unnecessary dependency on nosetests is removed since
the standard library supplies all that is necessary for the tests
to run,

- the tests can be run via any test runner, including the one built-in
in Python,

- the failure output for most of the tests is improved from 'assertion
x == y failed' to actually telling the values.

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

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

6 years ago[OpenMP] Parse+Sema for copyin clause of 'teams distribute parallel for'
Carlo Bertolli [Fri, 10 Nov 2017 16:05:00 +0000 (16:05 +0000)]
[OpenMP] Parse+Sema for copyin clause of 'teams distribute parallel for'

https://reviews.llvm.org/D39902

Simply leverage existing implementation and verify correct functioning with two regression tests.

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

6 years ago[OpenMP] diagnose assign to firstprivate const, patch by Joel E. Denny
Alexey Bataev [Fri, 10 Nov 2017 15:39:50 +0000 (15:39 +0000)]
[OpenMP] diagnose assign to firstprivate const, patch by Joel E. Denny

Summary:
[OpenMP] diagnose assign to firstprivate const

Clang does not diagnose assignments to const variables declared
firstprivate.  Furthermore, codegen is broken such that, at run time,
such assignments simply have no effect.  For example, the following
prints 0 not 1:

int main() {
  const int i = 0;
  #pragma omp parallel firstprivate(i)
  { i=1; printf("%d\n", i); }
  return 0;
}

This commit makes these assignments a compile error, which is
consistent with other OpenMP compilers I've tried (pgcc 17.4-0, gcc
6.3.0).

Reviewers: ABataev

Reviewed By: ABataev

Subscribers: cfe-commits

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

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

6 years ago[clang-format] Support python-style comments in text protos
Krasimir Georgiev [Fri, 10 Nov 2017 12:50:09 +0000 (12:50 +0000)]
[clang-format] Support python-style comments in text protos

Summary: This patch adds support for python-style comments in text protos.

Reviewers: djasper

Reviewed By: djasper

Subscribers: bkramer, cfe-commits, klimek

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

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

6 years agoRevert "[XRay][darwin] Initial XRay in Darwin Support"
Dean Michael Berris [Fri, 10 Nov 2017 07:00:55 +0000 (07:00 +0000)]
Revert "[XRay][darwin] Initial XRay in Darwin Support"

This reverts r317875.

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

6 years ago[XRay][darwin] Initial XRay in Darwin Support
Dean Michael Berris [Fri, 10 Nov 2017 05:50:13 +0000 (05:50 +0000)]
[XRay][darwin] Initial XRay in Darwin Support

Summary:
This change implements the changes required in both clang and
compiler-rt to allow building XRay-instrumented binaries in Darwin. For
now we limit this to x86_64. We also start building the XRay runtime
library in compiler-rt for osx.

A caveat to this is that we don't have the tests set up and running
yet, which we'll do in a set of follow-on changes.

This patch uses the monorepo layout for the coordinated change across
multiple projects.

Reviewers: kubamracek

Subscribers: mgorny, cfe-commits, llvm-commits

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

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

6 years ago[X86] Reduce the number of FMA builtins needed by the frontend by adding negates...
Craig Topper [Fri, 10 Nov 2017 05:20:32 +0000 (05:20 +0000)]
[X86] Reduce the number of FMA builtins needed by the frontend by adding negates to operands of the fmadd and fmaddsub builtins.

The backend should be able to combine the negates to create fmsub, fnmadd, and fnmsub. faddsub converting to fsubadd still needs work I think, but should be very doable.

This matches what we already do for the masked builtins.

This only covers the packed builtins. Scalar builtins will be done after FMA4 is fixed.

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

6 years ago[Driver] Make clang/cc conforms to UNIX standard
Steven Wu [Fri, 10 Nov 2017 01:32:47 +0000 (01:32 +0000)]
[Driver] Make clang/cc conforms to UNIX standard

Summary:
This is basically reverting r261774 with a tweak for clang-cl. UNIX
standard states:
When c99 encounters a compilation error that causes an object file not
to be created, it shall write a diagnostic to standard error and
continue to compile other source code operands, but it shall not perform
the link phase and it shall return a non-zero exit status

The same goes for c89 or cc. And they are all alias or shims pointing to
clang on Darwin.

The original commit was intended for CUDA so the error message doesn't
get emit twice for both host and device. It seems that the clang driver
has been changed to model the CUDA dependency differently. Now the
driver behaves the same without this commit.

rdar://problem/32223263

Reviewers: thakis, dexonsmith, tra

Reviewed By: tra

Subscribers: jlebar, cfe-commits

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

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

6 years ago[AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor...
Eugene Zelenko [Fri, 10 Nov 2017 00:59:22 +0000 (00:59 +0000)]
[AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

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

6 years ago[analyzer] [NFC] Minor ExprEngineC refactoring
George Karpenkov [Thu, 9 Nov 2017 23:33:37 +0000 (23:33 +0000)]
[analyzer] [NFC] Minor ExprEngineC refactoring

Move a repeated block of code into a function.

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

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

6 years ago[analyzer] do not crash when trying to convert an APSInt to an unexpected type
George Karpenkov [Thu, 9 Nov 2017 21:49:38 +0000 (21:49 +0000)]
[analyzer] do not crash when trying to convert an APSInt to an unexpected type

This is the issue breaking the postgresql bot, purely by chance exposed
through taint checker, somehow appearing after
https://reviews.llvm.org/D38358 got committed.

The backstory is that the taint checker requests SVal for the value of
the pointer, and analyzer has a "fast path" in the getter to return a
constant when we know that the value is constant.
Unfortunately, the getter requires a cast to get signedness correctly,
and for the pointer `void *` the cast crashes.

This is more of a band-aid patch, as I am not sure what could be done
here "correctly", but it should be applied in any case to avoid the
crash.

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

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

6 years ago[index] tag declarations should use the decl role instead of ref
Alex Lorenz [Thu, 9 Nov 2017 20:50:59 +0000 (20:50 +0000)]
[index] tag declarations should use the decl role instead of ref

The 'decl' role is more canonical than the 'ref'. This helps us establish the
'specialization-of' relation just by looking at decls or defs.

rdar://31884960

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

6 years ago[python] [tests] Update priority values in code completion test
Michal Gorny [Thu, 9 Nov 2017 20:17:41 +0000 (20:17 +0000)]
[python] [tests] Update priority values in code completion test

The priority for destructors and operators was reduced in r314019.
Adjust the values used in the test appropriately to fix the test
failure.

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

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

6 years ago[analyzer] assume bitwise arithmetic axioms
George Karpenkov [Thu, 9 Nov 2017 19:06:22 +0000 (19:06 +0000)]
[analyzer] assume bitwise arithmetic axioms

Patches the solver to assume that bitwise OR of an unsigned value with a
constant always produces a value larger-or-equal than the constant, and
bitwise AND with a constant always produces a value less-or-equal than
the constant.

This patch is especially useful in the context of using bitwise
arithmetic for error code encoding: the analyzer would be able to state
that the error code produced using a bitwise OR is non-zero.

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

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

6 years ago[OPENMP] Codegen for `#pragma omp target parallel for simd`.
Alexey Bataev [Thu, 9 Nov 2017 17:32:15 +0000 (17:32 +0000)]
[OPENMP] Codegen for `#pragma omp target parallel for simd`.

Added codegen for `#pragma omp target parallel for simd` and clauses.

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

6 years ago[OPENMP] Treat '#pragma omp target parallel for simd' as simd directive.
Alexey Bataev [Thu, 9 Nov 2017 17:01:35 +0000 (17:01 +0000)]
[OPENMP] Treat '#pragma omp target parallel for simd' as simd directive.

`#pragma omp target parallel for simd` mistakenly was not treated as a
simd directive, fixed this problem.

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

6 years ago[VirtualFileSystem] InMemoryFileSystem::addFile(): Type and Perms
Ben Hamilton [Thu, 9 Nov 2017 16:01:16 +0000 (16:01 +0000)]
[VirtualFileSystem] InMemoryFileSystem::addFile(): Type and Perms

Summary:
This implements a FIXME in InMemoryFileSystem::addFile(), allowing
clients to specify User, Group, Type, and/or Perms when creating a
file in an in-memory filesystem.

New tests included. Ran tests with:

% ninja BasicTests && ./tools/clang/unittests/Basic/BasicTests

Fixes PR#35172 (https://bugs.llvm.org/show_bug.cgi?id=35172)

Reviewers: bkramer, hokein

Reviewed By: bkramer, hokein

Subscribers: alexfh

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

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

6 years ago[clang-format] Keep Sphinx happy after r317794
Krasimir Georgiev [Thu, 9 Nov 2017 15:54:59 +0000 (15:54 +0000)]
[clang-format] Keep Sphinx happy after r317794

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

6 years ago[clang-format] Sort using declarations by splitting on '::'
Krasimir Georgiev [Thu, 9 Nov 2017 15:41:23 +0000 (15:41 +0000)]
[clang-format] Sort using declarations by splitting on '::'

Summary: This patch improves using declarations sorting.

Reviewers: bkramer

Reviewed By: bkramer

Subscribers: cfe-commits, klimek

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

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

6 years ago[clang-format] Apply a clang-tidy suggestion, NFC
Krasimir Georgiev [Thu, 9 Nov 2017 15:12:17 +0000 (15:12 +0000)]
[clang-format] Apply a clang-tidy suggestion, NFC

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

6 years ago[clang-format] Fix a clang-tidy finding, NFC
Krasimir Georgiev [Thu, 9 Nov 2017 13:22:03 +0000 (13:22 +0000)]
[clang-format] Fix a clang-tidy finding, NFC

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

6 years ago[clang-format] Fix argument name comment, NFC
Krasimir Georgiev [Thu, 9 Nov 2017 13:19:14 +0000 (13:19 +0000)]
[clang-format] Fix argument name comment, NFC

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

6 years ago[Tooling] Use FixedCompilationDatabase when `compile_flags.txt` is found.
Sam McCall [Thu, 9 Nov 2017 10:37:39 +0000 (10:37 +0000)]
[Tooling] Use FixedCompilationDatabase when `compile_flags.txt` is found.

Summary:
This is an alternative to JSONCompilationDatabase for simple projects that
don't use a build system such as CMake.
(You can also drop one in ~, to make your tools use e.g. C++11 by default)

There's no facility for varying flags per-source-file or per-machine.
Possibly this could be accommodated backwards-compatibly using cpp, but even if
not the simplicity seems worthwhile for the cases that are addressed.

Tested with clangd, works great! (requires clangd restart)

Reviewers: klimek

Subscribers: ilya-biryukov, cfe-commits

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

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

6 years agoFix a bug with the use of __builtin_bzero in a conditional expression.
John McCall [Thu, 9 Nov 2017 09:32:32 +0000 (09:32 +0000)]
Fix a bug with the use of __builtin_bzero in a conditional expression.

Patch by Bharathi Seshadri!

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

6 years ago[X86] Rename the VEX scalar fma builtins to end with a '3' to match gcc
Craig Topper [Thu, 9 Nov 2017 04:10:46 +0000 (04:10 +0000)]
[X86] Rename the VEX scalar fma builtins to end with a '3' to match gcc

I think we need to use different builtins for the FMA4 instructions since those instructions zero the upper bits and FMA3 instructions pass the bits through.

So this moves the existing builtins to be the FMA3 versions. New versions will be added for FMA4.

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

6 years ago[Coverage] Emit deferred regions in headers
Vedant Kumar [Thu, 9 Nov 2017 02:33:40 +0000 (02:33 +0000)]
[Coverage] Emit deferred regions in headers

There are some limitations with emitting regions in macro expansions
because we don't gather file IDs within the expansions. Fix the check
that prevents us from emitting deferred regions in expansions to make an
exception for headers, which is something we can handle.

rdar://35373009

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

6 years ago[Coverage] Complete top-level deferred regions before labels
Vedant Kumar [Thu, 9 Nov 2017 02:33:39 +0000 (02:33 +0000)]
[Coverage] Complete top-level deferred regions before labels

The area immediately after a terminated region in the function top-level
should have the same count as the label it precedes.

This solves another problem with wrapped segments. Consider:

  1| a:
  2|   return 0;
  3| b:
  4|   return 1;

Without a gap area starting after the first return, the wrapped segment
from line 2 would make it look like line 3 is executed, when it's not.

rdar://35373009

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

6 years ago[Coverage] Emit a gap area after if conditions
Vedant Kumar [Thu, 9 Nov 2017 02:33:38 +0000 (02:33 +0000)]
[Coverage] Emit a gap area after if conditions

The area immediately after the closing right-paren of an if condition
should have a count equal to the 'then' block's count. Use a gap region
to set this count, so that region highlighting for the 'then' block
remains precise.

This solves a problem we have with wrapped segments. Consider:

  1| if (false)
  2|   foo();

Without a gap area starting after the condition, the wrapped segment
from line 1 would make it look like line 2 is executed, when it's not.

rdar://35373009

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

6 years agoRemove redundant copy-pasted comment in test file from r317736
Alex Lorenz [Wed, 8 Nov 2017 22:47:15 +0000 (22:47 +0000)]
Remove redundant copy-pasted comment in test file from r317736

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

6 years ago[ObjC] Fix function signature handling for blocks literals with attributes
Alex Lorenz [Wed, 8 Nov 2017 22:44:34 +0000 (22:44 +0000)]
[ObjC] Fix function signature handling for blocks literals with attributes

Block literals can have a type with attributes in its signature, e.g.
ns_returns_retained. The code that inspected the type loc of the block when
declaring its parameters didn't account for this fact, and only looked through
paren type loc. This commit ensures that getAsAdjusted is used instead of
IgnoreParens to find the block's FunctionProtoTypeLoc. This ensures that
block parameters are declared correctly in the block and avoids the
'undeclared identifier' error.

rdar://35416160

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

6 years ago[ObjC] Boxed strings should use the nullability from stringWithUTF8String's return...
Alex Lorenz [Wed, 8 Nov 2017 21:33:15 +0000 (21:33 +0000)]
[ObjC] Boxed strings should use the nullability from stringWithUTF8String's return type

Objective-C NSString has a class method stringWithUTF8String that creates a new
NSString from a C string. Objective-C box expression @(...) can be used to
create an NSString instead of invoking the stringWithUTF8String method directly
(The compiler lowers it down to the invocation though). This commit ensures that
the type of @(string-value) gets the same nullability attributes as the return
type of stringWithUTF8String to ensure that the diagnostics are consistent
between the two.

rdar://33847186

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

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

6 years ago[OPENMP] Codegen for `#pragma omp target parallel for`.
Alexey Bataev [Wed, 8 Nov 2017 20:16:14 +0000 (20:16 +0000)]
[OPENMP] Codegen for `#pragma omp target parallel for`.

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

6 years agoAdd a missing "REQUIRES: system-windows" to a Windows-only test.
David L. Jones [Wed, 8 Nov 2017 20:03:11 +0000 (20:03 +0000)]
Add a missing "REQUIRES: system-windows" to a Windows-only test.

This un-breaks builds on other platforms. Otherwise, they fail due to warnings like:

warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt [-Wmsvc-not-found]

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

6 years agoAdd CoreOption flag to "-coverage" option to make it available for clang-cl
Marco Castelluccio [Wed, 8 Nov 2017 19:21:54 +0000 (19:21 +0000)]
Add CoreOption flag to "-coverage" option to make it available for clang-cl

Summary:
The -coverage option is not a CoreOption, so it is not available to clang-cl.
This patch adds the CoreOption flag to "-coverage" to allow it to be used with clang-cl.

Reviewers: rnk

Reviewed By: rnk

Subscribers: cfe-commits

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

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

6 years ago[bindings] fix TLS test failure
Masud Rahman [Wed, 8 Nov 2017 19:17:27 +0000 (19:17 +0000)]
[bindings] fix TLS test failure

Since cfe commit r237337, '__declspec(thread)' and 'thread_local' have
been the same since MSVC 2015.  i.e. they are both considered to supply
a dynamic TLS kind, not a static TLS kind.

This test originally did not specify which version of MS compatibility
to assume.  As a result, the test was brittle, since changing the
default compatibility version could break the test.

This commit adds a specific version when building up the flags used to
parse the translation unit, and tests both versions.

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

6 years ago[analyzer] Fix a crash on logical operators with vectors.
Artem Dergachev [Wed, 8 Nov 2017 17:27:58 +0000 (17:27 +0000)]
[analyzer] Fix a crash on logical operators with vectors.

Do not crash when trying to compute x && y or x || y where x and y are
of a vector type.

For now we do not seem to properly model operations with vectors. In particular,
operations && and || on a pair of vectors are not short-circuit, unlike regular
logical operators, so even our CFG is incorrect.

Avoid the crash, add respective FIXME tests for later.

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

rdar://problem/34317663

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

6 years ago[clang-refactor] Get rid of OccurrencesFinder in RenamingAction, NFC
Haojian Wu [Wed, 8 Nov 2017 14:53:08 +0000 (14:53 +0000)]
[clang-refactor] Get rid of OccurrencesFinder in RenamingAction, NFC

Summary:
The OccurrencesFinder is only used in RenameOccurrences to find symbol
occurrences, there is no need to inherit RefactoringRule.

Replace it with a single utility function to avoid code misleading.

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: klimek, cfe-commits

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

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

6 years agoWorkaround reverse-iteration buildbot breakages. Filed PR35244.
Ilya Biryukov [Wed, 8 Nov 2017 13:05:52 +0000 (13:05 +0000)]
Workaround reverse-iteration buildbot breakages. Filed PR35244.

Clang's completion output is non-deterministic, causing test failures
with turned on LLVM_REVERSE_ITERATION.
The workaround is to use CHECK-DAGs for now, will remove them when
PR35244 gets fixed.

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

6 years agoAvoid printing some redundant name qualifiers in completion
Ilya Biryukov [Wed, 8 Nov 2017 10:39:09 +0000 (10:39 +0000)]
Avoid printing some redundant name qualifiers in completion

Summary:
Adjusted PrintingPolicy inside code completion to avoid printing some
redundant name qualifiers.

Before this change, typedefs that were written unqualified in source
code were printed with qualifiers in completion. For example, in the
following code

    struct foo {
        typedef int type;
        type method();
    };

completion item for `method` had return type of `foo::type`, even
though the original code used `type` without qualifiers.
After this change, the completion item has return type `type`, as
originally written in the source code.

Note that this change does not suppress qualifiers written by the
user. For example, in the following code

    typedef int type;
    struct foo {
        typedef int type;
        ::type method(foo::type);
    };

completion item for `method` has return type of `::type` and
parameter type of `foo::type`, as originally written in the source
code.

Reviewers: arphaman, bkramer, klimek

Reviewed By: arphaman

Subscribers: mgorny, eraman, cfe-commits

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

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

6 years agoMoved QualTypeNames.h from Tooling to AST.
Ilya Biryukov [Wed, 8 Nov 2017 10:39:03 +0000 (10:39 +0000)]
Moved QualTypeNames.h from Tooling to AST.

Summary:
For code reuse in SemaCodeComplete.
Note that the tests for QualTypeNames are still in Tooling as they use
Tooling's common testing code.

Reviewers: rsmith, saugustine, rnk, klimek, bkramer

Reviewed By: rnk

Subscribers: cfe-commits, mgorny

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

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

6 years ago[clang-refactor] Introduce a new rename rule for qualified symbols
Haojian Wu [Wed, 8 Nov 2017 08:56:56 +0000 (08:56 +0000)]
[clang-refactor] Introduce a new rename rule for qualified symbols

Summary: Prototype of a new rename rule for renaming qualified symbol.

Reviewers: arphaman, ioeric, sammccall

Reviewed By: arphaman, sammccall

Subscribers: jklaehn, cfe-commits, klimek

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

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

6 years ago[X86] Add masked vcvtps2ph builtins to CheckX86BuiltinFunctionCall.
Craig Topper [Wed, 8 Nov 2017 04:54:26 +0000 (04:54 +0000)]
[X86] Add masked vcvtps2ph builtins to CheckX86BuiltinFunctionCall.

This ensures that only immediates that fit in 8-bits are used. This matches what we do for the unmasked versions.

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

6 years ago[Serialization] Fix some Clang-tidy modernize and Include What You Use warnings;...
Eugene Zelenko [Wed, 8 Nov 2017 01:03:16 +0000 (01:03 +0000)]
[Serialization] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

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

6 years ago[AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor...
Eugene Zelenko [Wed, 8 Nov 2017 00:39:18 +0000 (00:39 +0000)]
[AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

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

6 years agoChange noplt.c to work for non-x86 targets.
Sriraman Tallam [Tue, 7 Nov 2017 22:34:55 +0000 (22:34 +0000)]
Change noplt.c to work for non-x86 targets.

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

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

6 years ago[NVPTX] Implement __nvvm_atom_add_gen_d builtin.
Justin Lebar [Tue, 7 Nov 2017 22:10:54 +0000 (22:10 +0000)]
[NVPTX] Implement __nvvm_atom_add_gen_d builtin.

Summary:
This just seems to have been an oversight.  We already supported the f64
atomic add with an explicit scope (e.g. "cta"), but not the scopeless
version.

Reviewers: tra

Subscribers: jholewinski, sanjoy, cfe-commits, llvm-commits, hiraditya

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

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

6 years ago[ObjC++] Don't warn about pessimizing move for __block variables
Alex Lorenz [Tue, 7 Nov 2017 21:40:11 +0000 (21:40 +0000)]
[ObjC++] Don't warn about pessimizing move for __block variables

rdar://33316951

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

6 years agoUpdate SanitizerSpecialCaseList to use renamed functions in base class.
Mitch Phillips [Tue, 7 Nov 2017 21:16:37 +0000 (21:16 +0000)]
Update SanitizerSpecialCaseList to use renamed functions in base class.

Note: This change has a cyclical dependency on D39485. Both these changes must be submitted at the same time to avoid a build breakage.

Reviewers: vlad.tsyrklevich

Subscribers: llvm-commits

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

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

6 years agoNew clang option -fno-plt which avoids the PLT and lazy binding while making external...
Sriraman Tallam [Tue, 7 Nov 2017 19:37:51 +0000 (19:37 +0000)]
New clang option -fno-plt which avoids the PLT and lazy binding while making external calls.

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

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

6 years ago[refactor] rename field references in __builtin_offsetof
Alex Lorenz [Tue, 7 Nov 2017 18:30:23 +0000 (18:30 +0000)]
[refactor] rename field references in __builtin_offsetof

rdar://33875453

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

6 years agoClang/libomptarget map interface flag renaming - NFC patch
George Rokos [Tue, 7 Nov 2017 18:27:04 +0000 (18:27 +0000)]
Clang/libomptarget map interface flag renaming - NFC patch

This patch renames some of the flag names of the clang/libomptarget map interface. The old names are slightly misleading, whereas the new ones describe in a better way what each flag is about.

Only the macros within the enumeration are renamed, there is no change in functionality therefore there are no updated regression tests.

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

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

6 years ago[index] __builtin_offset's field reference is located at the end location
Alex Lorenz [Tue, 7 Nov 2017 18:25:36 +0000 (18:25 +0000)]
[index] __builtin_offset's field reference is located at the end location

The starting location is the location of the '.'

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

6 years ago[index] index field references in __builtin_offset
Alex Lorenz [Tue, 7 Nov 2017 17:29:11 +0000 (17:29 +0000)]
[index] index field references in __builtin_offset

rdar://35109556

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

6 years agoSystemZ Swift TargetInfo: swifterror support in the backend is broken
Arnold Schwaighofer [Tue, 7 Nov 2017 16:40:51 +0000 (16:40 +0000)]
SystemZ Swift TargetInfo: swifterror support in the backend is broken

Return false for swifterror support until the backend is fixed.

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

6 years ago[CodeGen] split math and complex tests into separate files; NFCI
Sanjay Patel [Tue, 7 Nov 2017 15:13:22 +0000 (15:13 +0000)]
[CodeGen] split math and complex tests into separate files; NFCI

The files are already large, and we may need to add even more RUNs to
distinguish differences based on OS, environment, or other platform things.

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

6 years ago[clang-refactor] Use ClangTool more explicitly by making refaroing actions AST fronte...
Eric Liu [Tue, 7 Nov 2017 14:35:03 +0000 (14:35 +0000)]
[clang-refactor] Use ClangTool more explicitly by making refaroing actions AST frontend actions.

Summary: This is a refactoring change. NFC

Reviewers: arphaman, hokein

Reviewed By: arphaman, hokein

Subscribers: cfe-commits

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

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

6 years ago[analyzer] pr34779: CStringChecker: Accept non-standard headers.
Artem Dergachev [Tue, 7 Nov 2017 10:51:15 +0000 (10:51 +0000)]
[analyzer] pr34779: CStringChecker: Accept non-standard headers.

Do not crash when trying to define and call a non-standard
strcpy(unsigned char *, unsigned char *) during analysis.

At the same time, do not try to actually evaluate the call.

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

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

6 years ago[docs] Add section 'Half-Precision Floating Point'
Sjoerd Meijer [Tue, 7 Nov 2017 10:09:45 +0000 (10:09 +0000)]
[docs] Add section 'Half-Precision Floating Point'

This documents the differences/interactions between _Float16 and __fp16
and is a companion change for the _Float16 type implementation (r312794).

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

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

6 years ago[analyzer] [NFC] Remove unused typedef from SVals.h
George Karpenkov [Tue, 7 Nov 2017 02:02:10 +0000 (02:02 +0000)]
[analyzer] [NFC] Remove unused typedef from SVals.h

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

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

6 years agoClarify the error message for unsupported aliases on Darwin
Alex Lorenz [Tue, 7 Nov 2017 00:31:19 +0000 (00:31 +0000)]
Clarify the error message for unsupported aliases on Darwin

rdar://35109556

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

6 years ago[analyzer] Model correct dispatch_once() 'done' value in BodyFarm
Devin Coughlin [Mon, 6 Nov 2017 22:12:19 +0000 (22:12 +0000)]
[analyzer] Model correct dispatch_once() 'done' value in BodyFarm

The analyzer's BodyFarm models dispatch_once() by comparing the passed-in
predicate against a known 'done' value. If the predicate does not have that
value, the model updates the predicate to have that value and executes the
passed in block.

Unfortunately, the current model uses the wrong 'done' value: 1 instead of ~0.
This interferes with libdispatch's static inline function _dispatch_once(),
which enables a fast path if the block has already been executed. That function
uses __builtin_assume() to tell the compiler that the done flag is set to ~0 on
exit. When r302880 added modeling of __builtin_assume(), this caused the
analyzer to assume 1 == ~0. This in turn caused the analyzer to never explore any code after a call to dispatch_once().

This patch regains the missing coverage by updating BodyFarm to use the correct
'done' value.

rdar://problem/34413048

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

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

6 years agoVary Windows toolchain selection by -fuse-ld
Dave Lee [Mon, 6 Nov 2017 21:18:05 +0000 (21:18 +0000)]
Vary Windows toolchain selection by -fuse-ld

Summary:
This change allows binutils to be used for linking with MSVC. Currently, when
using an MSVC target and `-fuse-ld=bfd`, the driver produces an invalid linker
invocation.

Reviewers: rnk, compnerd

Reviewed By: compnerd

Subscribers: smeenai, cfe-commits

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

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

6 years ago[X86] Replace the mask cmpeq/cmple/cmplt/cmpgt/cmpge/cmpneq intrinsics with macros...
Craig Topper [Mon, 6 Nov 2017 21:00:49 +0000 (21:00 +0000)]
[X86] Replace the mask cmpeq/cmple/cmplt/cmpgt/cmpge/cmpneq intrinsics with macros that just pass the right comparison predicate value to the regular cmp intrinsic. Remove mask cmpeq/cmpgt builtins that are now unused.

This shortens the intrinsic headers a little and allows us to get rid of the cmpeq and cmpgt handling from CGBuiltin.cpp.

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

6 years ago[X86] Add 3dnow and 3dnowa to the list of valid target features
Martin Storsjo [Mon, 6 Nov 2017 20:33:13 +0000 (20:33 +0000)]
[X86] Add 3dnow and 3dnowa to the list of valid target features

These were missed in SVN r316783, which broke compiling mingw-w64 CRT.

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

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

6 years ago[Parser] Fix TryParseLambdaIntroducer() error handling
Jan Korous [Mon, 6 Nov 2017 17:42:17 +0000 (17:42 +0000)]
[Parser] Fix TryParseLambdaIntroducer() error handling

rdar://35066196

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

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

6 years ago[CodeGen] match new fast-math-flag method: isFast()
Sanjay Patel [Mon, 6 Nov 2017 16:27:36 +0000 (16:27 +0000)]
[CodeGen] match new fast-math-flag method: isFast()

This corresponds to LLVM commiti r317488:

If that commit is reverted, this commit will also need to be reverted.

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

6 years ago[clang-format] Handle unary operator overload with arguments and specifiers
Daniel Jasper [Mon, 6 Nov 2017 12:11:51 +0000 (12:11 +0000)]
[clang-format] Handle unary operator overload with arguments and specifiers

Before:
  int operator++(int)noexcept;

After:
  int operator++(int) noexcept;

Patch by Igor Sugak. Thank you!

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

6 years ago[Tooling] Test internal::createExecutorFromCommandLineArgsImpl instead of the wrapper.
Eric Liu [Mon, 6 Nov 2017 09:29:09 +0000 (09:29 +0000)]
[Tooling] Test internal::createExecutorFromCommandLineArgsImpl instead of the wrapper.

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

6 years agolowering broadcastm
Jina Nahias [Mon, 6 Nov 2017 07:04:12 +0000 (07:04 +0000)]
lowering broadcastm

Change-Id: I0661abea3e3742860e0a03ff9e4fcdc367eff7db

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

6 years agoRemove \brief from doxygen comments in PrettyPrinter.h
Adrian Prantl [Sun, 5 Nov 2017 21:52:36 +0000 (21:52 +0000)]
Remove \brief from doxygen comments in PrettyPrinter.h

Patch by @xsga!

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

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

6 years ago[clang-diff] NFC: format
Johannes Altmanninger [Sun, 5 Nov 2017 11:53:18 +0000 (11:53 +0000)]
[clang-diff] NFC: format

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

6 years ago[Sema] Document+test the -Wsign-conversion change for enums in C code [NFC]
Roman Lebedev [Sat, 4 Nov 2017 20:27:47 +0000 (20:27 +0000)]
[Sema] Document+test the -Wsign-conversion change for enums in C code [NFC]

Basically a regression after r316268.
However the diagnostic is correct, but the test coverage is bad.

So just like rL316500, introduce yet more tests,
and adjust the release notes.

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

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

6 years agoMove the clang-tblgen-targets project into the Misc folder on IDEs like Visual Studio...
Aaron Ballman [Sat, 4 Nov 2017 20:06:49 +0000 (20:06 +0000)]
Move the clang-tblgen-targets project into the Misc folder on IDEs like Visual Studio rather than leave it in the root directory. NFC.

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

6 years agoMove the clang-tblgen project into the Clang tablegenning folder on IDEs like Visual...
Aaron Ballman [Sat, 4 Nov 2017 20:06:22 +0000 (20:06 +0000)]
Move the clang-tblgen project into the Clang tablegenning folder on IDEs like Visual Studio rather than leave it in the root directory. NFC.

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

6 years agoMove the libclang-headers project into the Misc folder on IDEs like Visual Studio...
Aaron Ballman [Sat, 4 Nov 2017 20:00:21 +0000 (20:00 +0000)]
Move the libclang-headers project into the Misc folder on IDEs like Visual Studio rather than leave it in the root directory. NFC.

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

6 years ago[CodeGen] add remquo to list of recognized library calls
Sanjay Patel [Sat, 4 Nov 2017 15:03:11 +0000 (15:03 +0000)]
[CodeGen] add remquo to list of recognized library calls

This is just an oversight because we already do recognize __builtin_remquo()
with the same signature.

http://en.cppreference.com/w/c/numeric/math/remquo
http://pubs.opengroup.org/onlinepubs/9699919799/functions/remquo.html

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

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

6 years agoCodeGenCXX: no default dllimport storage for mingw
Martell Malone [Sat, 4 Nov 2017 02:15:49 +0000 (02:15 +0000)]
CodeGenCXX: no default dllimport storage for mingw

GNU frontends don't have options like /MT, /MD
This fixes a few link error regressions with libc++ and libc++abi

Reviewers: rnk, mstorsjo, compnerd

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

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

6 years ago[Driver] MinGW: Remove custom linker detection
Martell Malone [Sat, 4 Nov 2017 02:07:59 +0000 (02:07 +0000)]
[Driver] MinGW: Remove custom linker detection

This is a re-apply of rL313082 which was reverted in rL313088

In rL289668 the ability to specify the default linker at compile time
was added but because the MinGW driver used custom detection we could
not take advantage of this new CMAKE flag CLANG_DEFAULT_LINKER.

rL289668 added no test cases and the mingw driver was either overlooked
or purposefully skipped because it has some custom linker tests
Removing them here because they are covered by the generic case.

Reviewers: rnk

Differntial Revision: https://reviews.llvm.org/D37727

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

6 years agoUpdate ODR hashing tests
Richard Trieu [Sat, 4 Nov 2017 01:20:50 +0000 (01:20 +0000)]
Update ODR hashing tests

Add a mix of postive and negative tests to check that wrong Decls won't be
flagged in the diagnostic.  Split the check everything test and moved the
pieces closer to where the related tests are.

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

6 years ago[Basic] Fix some Clang-tidy modernize and Include What You Use warnings; other minor...
Eugene Zelenko [Fri, 3 Nov 2017 22:35:27 +0000 (22:35 +0000)]
[Basic] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

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

6 years agoAdd -fcxx-exceptions for ExtractionSemicolonPolicy.cpp to appease PS4 bots
Alex Lorenz [Fri, 3 Nov 2017 21:31:10 +0000 (21:31 +0000)]
Add -fcxx-exceptions for ExtractionSemicolonPolicy.cpp to appease PS4 bots

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

6 years agoReplace a use of std::for_each() with llvm::for_each(); NFC.
Aaron Ballman [Fri, 3 Nov 2017 20:09:17 +0000 (20:09 +0000)]
Replace a use of std::for_each() with llvm::for_each(); NFC.

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

6 years agoMove Extract.cpp that wasn't moved in r317343
Alex Lorenz [Fri, 3 Nov 2017 18:21:06 +0000 (18:21 +0000)]
Move Extract.cpp that wasn't moved in r317343

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

6 years ago[refactor][extract] insert semicolons into extracted/inserted code
Alex Lorenz [Fri, 3 Nov 2017 18:11:22 +0000 (18:11 +0000)]
[refactor][extract] insert semicolons into extracted/inserted code
when needed

This commit implements the semicolon insertion logic into the extract
refactoring. The following rules are used:

- extracting expression: add terminating ';' to the extracted function.
- extracting statements that don't require terminating ';' (e.g. switch): add
  terminating ';' to the callee.
- extracting statements with ';':  move (if possible) the original ';' from the
  callee and add terminating ';'.
- otherwise, add ';' to both places.

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

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

6 years ago[Driver] Add Scudo as a possible -fsanitize= option
Kostya Kortchinsky [Fri, 3 Nov 2017 17:04:13 +0000 (17:04 +0000)]
[Driver] Add Scudo as a possible -fsanitize= option

Summary:
This change adds Scudo as a possible Sanitizer option via -fsanitize=.
This allows for easier static & shared linking of the Scudo library, it allows
us to enforce PIE (otherwise the security of the allocator is moot), and check
for incompatible Sanitizers combo.

In its current form, Scudo is not compatible with any other Sanitizer, but the
plan is to make it work in conjunction with UBsan (-fsanitize=scudo,undefined),
which will require additional work outside of the scope of this change.

Reviewers: eugenis, kcc, alekseyshl

Reviewed By: eugenis, alekseyshl

Subscribers: llvm-commits, srhines

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

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

6 years ago[CodeGen] add libcall attr tests to show errno-related diffs; NFC
Sanjay Patel [Fri, 3 Nov 2017 16:27:27 +0000 (16:27 +0000)]
[CodeGen] add libcall attr tests to show errno-related diffs; NFC

See rL317220 for the builtin siblings.

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

6 years ago[Tooling] Fix linking of StandaloneToolExecutorPlugin.
Eric Liu [Fri, 3 Nov 2017 15:57:27 +0000 (15:57 +0000)]
[Tooling] Fix linking of StandaloneToolExecutorPlugin.

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

6 years ago[Tooling] Put createExecutorFromCommandLineArgs implementation in a wrapper. NFC
Eric Liu [Fri, 3 Nov 2017 15:20:57 +0000 (15:20 +0000)]
[Tooling] Put createExecutorFromCommandLineArgs implementation in a wrapper. NFC

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

6 years ago[clang-format] Sort using-declarations case sensitively with a special case for '_'
Krasimir Georgiev [Fri, 3 Nov 2017 14:38:07 +0000 (14:38 +0000)]
[clang-format] Sort using-declarations case sensitively with a special case for '_'

Summary:
This makes clang-format sort using declarations case-sensitive with the
exception that '_' comes just before 'A'. This is better than the current case
insensitive version, because it groups uppercase names in the same namespace
together.

Reviewers: bkramer

Reviewed By: bkramer

Subscribers: cfe-commits, klimek

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

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

6 years ago[preamble] Also record the "skipping" state of the preprocessor
Erik Verbruggen [Fri, 3 Nov 2017 09:40:07 +0000 (09:40 +0000)]
[preamble] Also record the "skipping" state of the preprocessor

When a preamble ends in a conditional preprocessor block that is being
skipped, the preprocessor needs to continue skipping that block when
the preamble is used.

This fixes PR34570.

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

6 years ago[CUDA] Mark CUDA as a no-errno platform.
Justin Lebar [Fri, 3 Nov 2017 02:30:00 +0000 (02:30 +0000)]
[CUDA] Mark CUDA as a no-errno platform.

Summary:
CUDA doesn't support errno at all, so this is the right thing -- or at
least, in the right direction.

But also, this unbreaks the CUDA test-suite math tests [0] after D39481.
__cuda_cmath.h forwards nexttoward() to __builtin_nexttoward, which,
after that patch, was lowering to a libcall that doesn't exist in NVPTX.

[0] http://lab.llvm.org:8011/builders/clang-cuda-build/builds/14999

Reviewers: tra

Subscribers: sanjoy, cfe-commits

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

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

6 years ago[c++17] Visit class template explicit specializations just like all other class defin...
Richard Smith [Fri, 3 Nov 2017 01:26:01 +0000 (01:26 +0000)]
[c++17] Visit class template explicit specializations just like all other class definitions in codegen.

If an explicit specialization has a static data member, it may be a definition and we may need to register it for emission.

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

6 years ago[analyzer] [NFC] very minor ExprEngineC refactoring
George Karpenkov [Fri, 3 Nov 2017 00:41:29 +0000 (00:41 +0000)]
[analyzer] [NFC] very minor ExprEngineC refactoring

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

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

6 years ago[analyzer] do not crash on libcxx03 call_once implementation
George Karpenkov [Fri, 3 Nov 2017 00:36:03 +0000 (00:36 +0000)]
[analyzer] do not crash on libcxx03 call_once implementation

Addresses https://bugs.llvm.org/show_bug.cgi?id=35075, rdar://35230961

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

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

6 years agoModular Codegen: Don't home always_inline functions
David Blaikie [Thu, 2 Nov 2017 22:28:50 +0000 (22:28 +0000)]
Modular Codegen: Don't home always_inline functions

Since they'll likely (not always - if the address is taken, etc) be
inlined away, even at -O0, separately provided weak definitions are
likely to be unused so skip all of that.

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

6 years agoModular Codegen: Don't home/modularize static functions in headers
David Blaikie [Thu, 2 Nov 2017 21:55:40 +0000 (21:55 +0000)]
Modular Codegen: Don't home/modularize static functions in headers

Consistent with various workarounds in the backwards compatible modules
that allow static functions in headers to exist, be deduplicated to some
degree, and not generally fail right out of the gate... do the same with
modular codegen as there are enough cases (including in libstdc++ and in
LLVM itself - though I cleaned up the easy ones) that it's worth
supporting as a migration/backcompat step.

Simply create a separate, internal linkage function in each object that
needs it. If an available_externally/modularized function references a
static function, but the modularized function is eventually dropped and
not inlined, the static function will be dropped as unreferenced.

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