]> granicus.if.org Git - clang/log
clang
7 years agoUpdate for llvm change.
Rafael Espindola [Fri, 8 Sep 2017 00:01:26 +0000 (00:01 +0000)]
Update for llvm change.

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

7 years ago[Sema] -Wtautological-compare: handle comparison of unsigned with 0S.
Roman Lebedev [Thu, 7 Sep 2017 22:14:25 +0000 (22:14 +0000)]
[Sema] -Wtautological-compare: handle comparison of unsigned with 0S.

Summary:
This is a first half(?) of a fix for the following bug:
https://bugs.llvm.org/show_bug.cgi?id=34147 (gcc -Wtype-limits)

GCC's -Wtype-limits does warn on comparison of unsigned value
with signed zero (as in, with 0), but clang only warns if the
zero is unsigned (i.e. 0U).

Also, be careful not to double-warn, or falsely warn on
comparison of signed/fp variable and signed 0.

Yes, all these testcases are needed.

Testing: $ ninja check-clang-sema check-clang-semacxx
Also, no new warnings for clang stage-2 build.

Reviewers: rjmccall, rsmith, aaron.ballman

Reviewed By: rjmccall

Subscribers: cfe-commits

Tags: #clang

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

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

7 years agoAdd target triple to improve the happiness of MSVC buildbots.
Richard Smith [Thu, 7 Sep 2017 22:07:52 +0000 (22:07 +0000)]
Add target triple to improve the happiness of MSVC buildbots.

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

7 years agoFix validation of the -mthread-model flag in the Clang driver
Jonathan Roelofs [Thu, 7 Sep 2017 22:01:25 +0000 (22:01 +0000)]
Fix validation of the -mthread-model flag in the Clang driver

The ToolChain class validates the -mthread-model flag in the constructor which
doesn't work correctly since the thread model methods are virtual methods. The
check is moved into Clang::ConstructJob() when constructing the internal
command line.

https://reviews.llvm.org/D37496

Patch by: Ian Tessier!

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

7 years agoAdd IDNS_Tag to C++ declarations that conflict with tag declarations.
Richard Smith [Thu, 7 Sep 2017 20:22:00 +0000 (20:22 +0000)]
Add IDNS_Tag to C++ declarations that conflict with tag declarations.

Fixes some accepts-invalids with tags and other declarations declared in the
same scope.

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

7 years ago[OpenCL] Add half load and store builtins
Jan Vesely [Thu, 7 Sep 2017 19:39:10 +0000 (19:39 +0000)]
[OpenCL] Add half load and store builtins

This enables load/stores of half type, without half being a legal type.

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

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

7 years ago[CUDA] When compilation fails, print the compilation mode.
Justin Lebar [Thu, 7 Sep 2017 18:37:16 +0000 (18:37 +0000)]
[CUDA] When compilation fails, print the compilation mode.

Summary:
That is, instead of "1 error generated", we now say "1 error generated
when compiling for sm_35".

This (partially) solves a usability foogtun wherein e.g. users call a
function that's only defined on sm_60 when compiling for sm_35, and they
get an unhelpful error message.

Reviewers: tra

Subscribers: sanjoy, cfe-commits

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

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

7 years ago[CUDA] Added rudimentary support for CUDA-9 and sm_70.
Artem Belevich [Thu, 7 Sep 2017 18:14:32 +0000 (18:14 +0000)]
[CUDA] Added rudimentary support for CUDA-9 and sm_70.

For now CUDA-9 is not included in the list of CUDA versions clang
searches for, so the path to CUDA-9 must be explicitly passed
via --cuda-path=.

On LLVM side NVPTX added sm_70 GPU type which bumps required
PTX version to 6.0, but otherwise is equivalent to sm_62 at the moment.

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

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

7 years ago[OpenCL] Handle taking an address of block captures.
Anastasia Stulova [Thu, 7 Sep 2017 17:00:33 +0000 (17:00 +0000)]
[OpenCL] Handle taking an address of block captures.

Block captures can have different physical locations
in memory segments depending on the use case (as a function
call or as a kernel enqueue) and in different vendor
implementations.

Therefore it's unclear how to add address space to capture
addresses uniformly. Currently it has been decided to disallow
taking addresses of captured variables until further
clarifications in the spec.

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

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

7 years ago[clang-format] Add support for C++17 structured bindings.
Marek Kurdej [Thu, 7 Sep 2017 14:28:32 +0000 (14:28 +0000)]
[clang-format] Add support for C++17 structured bindings.

Summary:
Before:
```
    auto[a, b] = f();
```

After:
```
    auto [a, b] = f();
```
or, if SpacesInSquareBrackets is true:
```
    auto [ a, b ] = f();
```

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits, klimek

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

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

7 years ago[clang-format] Fix documentation for AllowAllParametersOfDeclarationOnNextLine
Daniel Jasper [Thu, 7 Sep 2017 13:45:41 +0000 (13:45 +0000)]
[clang-format] Fix documentation for AllowAllParametersOfDeclarationOnNextLine

The current description of AllowAllParametersOfDeclarationOnNextLine in
the Clang-Format Style Options guide suggests that it is possible to
format function declaration, which fits in a single line (what is not
supported in current clang-format version). Also the example was not
reproducible and mades no sense.

Patch by Lucja Mazur, thank you!

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

7 years agoAdd an usage example of BreakBeforeBraces
Sylvestre Ledru [Thu, 7 Sep 2017 12:09:14 +0000 (12:09 +0000)]
Add an usage example of BreakBeforeBraces

Reviewers: djasper

Reviewed By: djasper

Subscribers: klimek, cfe-commits

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

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

7 years agoRefresh the clang format options doc with the recent changes
Sylvestre Ledru [Thu, 7 Sep 2017 12:08:49 +0000 (12:08 +0000)]
Refresh the clang format options doc with the recent changes

Summary:
Looks like we are out of sync between the doc and the code.

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits

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

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

7 years agoFixing incorrectly capitalised regexps.
Benjamin Kramer [Thu, 7 Sep 2017 09:54:03 +0000 (09:54 +0000)]
Fixing incorrectly capitalised regexps.

Patch by Sam Allen!

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

7 years agoP0702R1: in class template argument deduction from a list of one element, if
Richard Smith [Thu, 7 Sep 2017 07:22:36 +0000 (07:22 +0000)]
P0702R1: in class template argument deduction from a list of one element, if
that element's type is (or is derived from) a specialization of the deduced
template, skip the std::initializer_list special case.

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

7 years ago[mips] Replace Triple::Environment check by the isGNUEnvironment() call. NFC
Simon Atanasyan [Thu, 7 Sep 2017 06:05:06 +0000 (06:05 +0000)]
[mips] Replace Triple::Environment check by the isGNUEnvironment() call. NFC

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

7 years agoFix off-by-one error in block mangling.
Richard Smith [Thu, 7 Sep 2017 05:41:24 +0000 (05:41 +0000)]
Fix off-by-one error in block mangling.

This restores the ABI prior to r214699.

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

7 years ago[modules ts] Add test for [basic.link]p3.
Richard Smith [Thu, 7 Sep 2017 05:29:39 +0000 (05:29 +0000)]
[modules ts] Add test for [basic.link]p3.

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

7 years ago[modules ts] Ensure that module linkage variables are always emitted and always have...
Richard Smith [Thu, 7 Sep 2017 00:55:55 +0000 (00:55 +0000)]
[modules ts] Ensure that module linkage variables are always emitted and always have their name mangled.

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

7 years ago[CUDA] Add device overloads for non-placement new/delete.
Justin Lebar [Thu, 7 Sep 2017 00:37:20 +0000 (00:37 +0000)]
[CUDA] Add device overloads for non-placement new/delete.

Summary:
Tests have to live in the test-suite, and so will come in a separate
patch.

Fixes PR34360.

Reviewers: tra

Subscribers: llvm-commits, sanjoy

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

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

7 years ago[StaticAnalyzer] Fix failures due to the iteration order of ExplodedNode
Mandeep Singh Grang [Wed, 6 Sep 2017 22:54:59 +0000 (22:54 +0000)]
[StaticAnalyzer] Fix failures due to the iteration order of ExplodedNode

Summary:
This fixes failures seen in the reverse iteration builder:
http://lab.llvm.org:8011/builders/reverse-iteration/builds/26

Failing Tests (4):
    Clang :: Analysis/MisusedMovedObject.cpp
    Clang :: Analysis/keychainAPI.m
    Clang :: Analysis/loop-unrolling.cpp
    Clang :: Analysis/malloc.c

Reviewers: zaks.anna, bkramer, chandlerc, krememek, nikhgupt

Reviewed By: zaks.anna

Subscribers: dcoughlin, NoQ, cfe-commits

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

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

7 years ago[CSA] [NFC] Move AnalysisContext.h to AnalysisDeclContext.h
George Karpenkov [Wed, 6 Sep 2017 21:45:03 +0000 (21:45 +0000)]
[CSA] [NFC] Move AnalysisContext.h to AnalysisDeclContext.h

The implementation is in AnalysisDeclContext.cpp and the class is called
AnalysisDeclContext.

Making those match up has numerous benefits, including:

 - Easier jump from header to/from implementation.
 - Easily identify filename from class.

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

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

7 years ago[NFC] [CSA] Move AnyFunctionCall::getRuntimeDefinition implementation to cpp.
George Karpenkov [Wed, 6 Sep 2017 21:45:01 +0000 (21:45 +0000)]
[NFC] [CSA] Move AnyFunctionCall::getRuntimeDefinition implementation to cpp.

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

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

7 years ago[modules ts] Emit global variables in a module interface unit as part of that unit...
Richard Smith [Wed, 6 Sep 2017 20:01:14 +0000 (20:01 +0000)]
[modules ts] Emit global variables in a module interface unit as part of that unit, not in importers.

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

7 years agoFix ARM bare metal driver to support atomics
Jonathan Roelofs [Wed, 6 Sep 2017 17:09:25 +0000 (17:09 +0000)]
Fix ARM bare metal driver to support atomics

The new bare metal support only supports the single thread model. This causes
the builtin atomic functions (e.g.: __atomic_fetch_add) to not generate
thread-safe assembly for these operations, which breaks our firmware. We target
bare metal, and need to atomically modify variables in our interrupt routines,
and task threads.

Internally, the -mthread-model flag determines whether to lower or expand
atomic operations (see D4984).

This change removes the overridden thread model methods, and instead relies on
the base ToolChain class to validate the thread model (which already includes
logic to validate single thread model support). If the single thread model is
required, the -mthread-model flag will have to be provided.

As a workaround "-mthread-model posix" could be provided, but it only works due
to a bug in the validation of the -mthread-model flag (separate patch coming to
fix this).

https://reviews.llvm.org/D37493

Patch by: Ian Tessier!

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

7 years ago[OPENMP] Fix for PR33922: New ident_t flags for
Alexey Bataev [Wed, 6 Sep 2017 16:17:35 +0000 (16:17 +0000)]
[OPENMP] Fix for PR33922: New ident_t flags for
__kmpc_for_static_fini().

Added special flags for calls of __kmpc_for_static_fini(), like previous
ly for __kmpc_for_static_init(). Added flag OMP_IDENT_WORK_DISTRIBUTE
for distribute cnstruct, OMP_IDENT_WORK_SECTIONS for sections-based
  constructs and OMP_IDENT_WORK_LOOP for loop-based constructs in
  location flags.

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

7 years agoReplacing "or" with "||" to appease MSVC.
Aaron Ballman [Wed, 6 Sep 2017 15:12:05 +0000 (15:12 +0000)]
Replacing "or" with "||" to appease MSVC.

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

7 years ago[OPENMP] Fix for PR34445: Reduction initializer segfaults at runtime in
Alexey Bataev [Wed, 6 Sep 2017 14:49:58 +0000 (14:49 +0000)]
[OPENMP] Fix for PR34445: Reduction initializer segfaults at runtime in
move constructor.

Previously user-defined reduction initializer was considered as an
assignment expression, not as initializer. Fixed this by treating the
initializer expression as an initializer.

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

7 years ago[AST] Add TableGen for StmtDataCollectors
Johannes Altmanninger [Wed, 6 Sep 2017 13:20:51 +0000 (13:20 +0000)]
[AST] Add TableGen for StmtDataCollectors

Summary:
This adds an option "-gen-clang-data-collectors" to the Clang TableGen
that is used to generate StmtDataCollectors.inc.

Reviewers: arphaman, teemperor!

Subscribers: mgorny, cfe-commits

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

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

7 years ago[AST] Traverse CXXOperatorCallExpr in LexicallyOrderedRecursiveASTVisitor
Johannes Altmanninger [Wed, 6 Sep 2017 13:12:11 +0000 (13:12 +0000)]
[AST] Traverse CXXOperatorCallExpr in LexicallyOrderedRecursiveASTVisitor

Summary:
This affects overloaded operators, which are represented by a
CXXOperatorCallExpr whose first child is always a DeclRefExpr referring to the
operator. For infix, postfix and call operators we want the first argument
to be traversed before the operator.

Reviewers: arphaman

Subscribers: klimek, cfe-commits

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

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

7 years ago[AST] Traverse templates in LexicallyOrderedRecursiveASTVisitor
Johannes Altmanninger [Wed, 6 Sep 2017 13:11:13 +0000 (13:11 +0000)]
[AST] Traverse templates in LexicallyOrderedRecursiveASTVisitor

Summary:
We need to specialize this because RecursiveASTVisitor visits template
template parameters after the templated declaration, unlike the order in
which they appear in the source code.

Reviewers: arphaman

Reviewed By: arphaman

Subscribers: klimek, cfe-commits

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

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

7 years agoCorrected testcase to work with release build
Karl-Johan Karlsson [Wed, 6 Sep 2017 10:12:32 +0000 (10:12 +0000)]
Corrected testcase to work with release build

The fault was introduced in r312623

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

7 years agoDebug info: Fixed faulty debug locations for attributed statements
Karl-Johan Karlsson [Wed, 6 Sep 2017 08:47:18 +0000 (08:47 +0000)]
Debug info: Fixed faulty debug locations for attributed statements

Summary:
As the attributed statements are considered simple statements no
stoppoint was generated before emitting attributed do/while/for/range-
statement. This lead to faulty debug locations.

Reviewers: echristo, aaron.ballman, dblaikie

Reviewed By: dblaikie

Subscribers: bjope, aprantl, cfe-commits

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

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

7 years agoFix __repr__ for Diagnostic in clang.cindex
Jonathan Coe [Wed, 6 Sep 2017 07:33:32 +0000 (07:33 +0000)]
Fix __repr__ for Diagnostic in clang.cindex

Summary: Also move misplaced tests for exception specification to fix failing Python tests.

Reviewers: hans, compnerd

Reviewed By: compnerd

Subscribers: cfe-commits

Tags: #clang-c

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

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

7 years agoDriver: delete some dead code (NFC)
Saleem Abdulrasool [Wed, 6 Sep 2017 05:11:19 +0000 (05:11 +0000)]
Driver: delete some dead code (NFC)

This code has been `#if 0`'ed out for a very long time.  After speaking
with Duncan, opt to remove it even if it is something which should be
fixed.  If the underlying issue is still valid, this can be restored
with proper explanation and tests.

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

7 years agoDriver: remove unused variable (NFC)
Saleem Abdulrasool [Wed, 6 Sep 2017 04:56:23 +0000 (04:56 +0000)]
Driver: remove unused variable (NFC)

Remove `IsHosted` which is no longer needed in `RenderSSPOptions` after
SVN r312595.  The single use can now be inlined.  NFC

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

7 years agoFix indentation mistake from r312595
Bruno Cardoso Lopes [Wed, 6 Sep 2017 00:44:10 +0000 (00:44 +0000)]
Fix indentation mistake from r312595

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

7 years ago[Darwin] Enable -fstack-protector (back) by default with -ffreestanding
Bruno Cardoso Lopes [Tue, 5 Sep 2017 23:50:58 +0000 (23:50 +0000)]
[Darwin] Enable -fstack-protector (back) by default with -ffreestanding

Go back to behavior prior to r289005.

rdar://problem/32987198

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

7 years agoFix memory leak after r312467. The ModuleMap is the owner of the global module object...
Richard Smith [Tue, 5 Sep 2017 21:46:22 +0000 (21:46 +0000)]
Fix memory leak after r312467. The ModuleMap is the owner of the global module object until it's reparented under a real module.

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

7 years agoCommit changes missing from r312572
Reid Kleckner [Tue, 5 Sep 2017 20:38:29 +0000 (20:38 +0000)]
Commit changes missing from r312572

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

7 years ago[ms] Implement the __annotation intrinsic
Reid Kleckner [Tue, 5 Sep 2017 20:27:35 +0000 (20:27 +0000)]
[ms] Implement the __annotation intrinsic

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

7 years ago[coroutines] Make sure auto return type of await_resume is properly handled
Gor Nishanov [Tue, 5 Sep 2017 19:31:52 +0000 (19:31 +0000)]
[coroutines] Make sure auto return type of await_resume is properly handled

Reviewers: rsmith, EricWF

Reviewed By: rsmith

Subscribers: javed.absar, cfe-commits

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

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

7 years ago[diagtool] Change default tree behavior to print only flags
Jonas Devlieghere [Tue, 5 Sep 2017 18:04:40 +0000 (18:04 +0000)]
[diagtool] Change default tree behavior to print only flags

This patch changes the default behavior of `diagtool tree` to only
display warning flags and not the internal warnings flags. The latter is
an implementation detail of the compiler and usually not what the users
wants.

Furthermore, flags that are enabled by default are now also printed in
green. Originally, this was only the case for the diagnostic names.

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

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

7 years ago[NFC] Loop modernization in diagtool
Jonas Devlieghere [Tue, 5 Sep 2017 18:04:34 +0000 (18:04 +0000)]
[NFC] Loop modernization in diagtool

Precommit for https://reviews.llvm.org/D37390

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

7 years ago[Preprocessor] Correct internal token parsing of newline characters in CRLF
Erich Keane [Tue, 5 Sep 2017 17:32:36 +0000 (17:32 +0000)]
[Preprocessor] Correct internal token parsing of newline characters in CRLF

Correct implementation:  Apparently I managed in r311683 to submit the wrong
version of the patch for this, so I'm correcting it now.

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

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

7 years ago[clang-format] Fix lines=all case in clang-format.py
Krasimir Georgiev [Tue, 5 Sep 2017 13:58:53 +0000 (13:58 +0000)]
[clang-format] Fix lines=all case in clang-format.py

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

7 years agoadd the option IndentPPDirectives to the release notes. Landed in r312125
Sylvestre Ledru [Tue, 5 Sep 2017 13:56:40 +0000 (13:56 +0000)]
add the option IndentPPDirectives to the release notes. Landed in r312125

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

7 years ago[Bash-autocomplete] Fix crash when invoking --autocomplete without value.
Raphael Isemann [Tue, 5 Sep 2017 12:41:00 +0000 (12:41 +0000)]
[Bash-autocomplete] Fix crash when invoking --autocomplete without value.

Summary:
Currently clang segfaults when invoked with `clang --autocomplete=`.
This patch adds the necessary boundary checks and some tests for corner cases like this.

Reviewers: yamaguchi

Reviewed By: yamaguchi

Subscribers: cfe-commits

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

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

7 years agoRemoved dead code (PR34467). NFCI.
Simon Pilgrim [Tue, 5 Sep 2017 10:37:13 +0000 (10:37 +0000)]
Removed dead code (PR34467). NFCI.

The for loop already checks that Idx < NumOfArgs.

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

7 years ago[AMDGPU] Implement infrastructure to set options in AMDGPUToolChain
Andrey Kasaurov [Tue, 5 Sep 2017 10:24:38 +0000 (10:24 +0000)]
[AMDGPU] Implement infrastructure to set options in AMDGPUToolChain

In current OpenCL implementation some options are set in OpenCL RT/Driver, which causes discrepancy between online and offline paths.
Implement infrastructure to move options from OpenCL RT/Driver to AMDGPUToolChain using overloaded TranslateArgs() method.
Create map for default options values, as Options.td doesn't support default values (in contrast with OPTIONS.def).
Add two driver options: -On and -mNN (like -O3, -m64).
Some minor formatting changes to follow the clang-format style.

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

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

7 years ago[X86][AVX512] _mm512_stream_load_si512 should take a void const* argument (PR33977)
Simon Pilgrim [Tue, 5 Sep 2017 10:06:41 +0000 (10:06 +0000)]
[X86][AVX512] _mm512_stream_load_si512 should take a void const* argument (PR33977)

Based off the Intel Intrinsics guide, we should expect a void const* argument.

Prevents 'passing 'const void *' to parameter of type 'void *' discards qualifiers' warnings.

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

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

7 years agoEmit static constexpr member as available_externally definition
Mehdi Amini [Tue, 5 Sep 2017 03:58:35 +0000 (03:58 +0000)]
Emit static constexpr member as available_externally definition

By exposing the constant initializer, the optimizer can fold many
of these constructs.

This is a recommit of r311857 that was reverted in r311898 because
an assert was hit when building Chromium.
We have to take into account that the GlobalVariable may be first
created with a different type than the initializer. This can
happen for example when the variable is a struct with tail padding
while the initializer does not have padding. In such case, the
variable needs to be destroyed an replaced with a new one with the
type of the initializer.

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

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

7 years agoAlways allocate room for a ModuleDecl on the TranslationUnitDecl.
Richard Smith [Tue, 5 Sep 2017 00:50:19 +0000 (00:50 +0000)]
Always allocate room for a ModuleDecl on the TranslationUnitDecl.

Sometimes we create the ASTContext and thus the TranslationUnitDecl before we know the LangOptions. This should fix the asan buildbot failures after r312467.

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

7 years agoclang-format: Fix indentation of macros in include guards (after r312125).
Daniel Jasper [Mon, 4 Sep 2017 13:33:52 +0000 (13:33 +0000)]
clang-format: Fix indentation of macros in include guards (after r312125).

Before:
  #ifndef A_H
  #define A_H

  #define A() \
  int i;    \
  int j;

  #endif // A_H

After:
  #ifndef A_H
  #define A_H

  #define A() \
    int i;    \
    int j;

  #endif // A_H

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

7 years agoFix MSVC narrowing conversion warning.
Simon Pilgrim [Mon, 4 Sep 2017 10:54:39 +0000 (10:54 +0000)]
Fix MSVC narrowing conversion warning.

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

7 years ago[analyzer] Increase minimum complexity filter of the CloneChecker.
Raphael Isemann [Mon, 4 Sep 2017 05:56:36 +0000 (05:56 +0000)]
[analyzer] Increase minimum complexity filter of the CloneChecker.

Summary:
So far we used a value of 10 which was useful for testing but produces many false-positives in real programs. The usual suspicious clones we find seem to be at around a complexity value of 70 and for normal clone-reporting everything above 50 seems to be a valid normal clone for users, so let's just go with 50 for now and set this as the new default value.

This patch also explicitly sets the complexity value for the regression tests as they serve more of a regression testing/debugging purpose and shouldn't really be reported by default in real programs. I'll add more tests that reflect actual found bugs that then need to pass with the default setting in the future.

Reviewers: NoQ

Subscribers: cfe-commits, javed.absar, xazax.hun, v.g.vassilev

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

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

7 years agoImplement Itanium name mangling support for C++ Modules TS.
Richard Smith [Mon, 4 Sep 2017 05:37:53 +0000 (05:37 +0000)]
Implement Itanium name mangling support for C++ Modules TS.

This follows the scheme agreed with Nathan Sidwell, which can be found here:

  https://gcc.gnu.org/wiki/cxx-modules?action=AttachFile

This will be proposed to the itanium-cxx-abi list once we have some experience
with how well it works; the ABI for this TS should be considered unstable until
it is part of the Itanium C++ ABI.

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

7 years ago[CodeGen] Treat all vector fields as mayalias
Hal Finkel [Sun, 3 Sep 2017 17:18:25 +0000 (17:18 +0000)]
[CodeGen] Treat all vector fields as mayalias

Because it is common to treat vector types as an array of their elements, or
even some other type that's not the element type, and thus index into them, we
can't use struct-path TBAA for these accesses. Even though we already treat all
vector types as equivalent to 'char', we were using field-offset information
for them with TBAA, and this renders undefined the intra-value indexing we
intend to allow. Note that, although 'char' is universally aliasing, with path
TBAA, we can still differentiate between access to s.a and s.b in
  struct { char a, b; } s;. We can't use this capability as-is for vector types.

Fixes PR33967.

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

7 years agoTest commit access in clang.
Jatin Bhateja [Sun, 3 Sep 2017 15:29:38 +0000 (15:29 +0000)]
Test commit access in clang.

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

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

7 years ago[OpenCL] Do not use vararg in emitted functions for enqueue_kernel
Yaxun Liu [Sun, 3 Sep 2017 13:52:24 +0000 (13:52 +0000)]
[OpenCL] Do not use vararg in emitted functions for enqueue_kernel

Not all targets support vararg (e.g. amdgpu). Instead of using vararg in the emitted functions for enqueue_kernel,
this patch creates a temporary array of size_t, stores the size arguments in the temporary array
and passes it to the emitted functions for enqueue_kernel.

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

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

7 years ago[analyzer] MinComplexityConstraint now early exits and only does one macro stack...
Raphael Isemann [Sun, 3 Sep 2017 13:45:33 +0000 (13:45 +0000)]
[analyzer] MinComplexityConstraint now early exits and only does one macro stack lookup

Summary:
This patch contains performance improvements for the `MinComplexityConstraint`. It reduces the constraint time when running on the SQLite codebase by around 43% (from 0.085s down to 0.049s).

The patch is essentially doing two things:

* It introduces a possibility for the complexity value to early exit when reaching the limit we were checking for. This means that once we noticed that the current clone is larger than the limit the user has set, we instantly exit and no longer traverse the tree or do further expensive lookups in the macro stack.

* It also removes half of the macro stack lookups we do so far. Previously we always checked the start and the end location of a Stmt for macros, which was only a middle way between checking all locations of the Stmt and just checking one location. In practice I rarely found cases where it really matters if we check start/end or just the start of a statement as code with lots of macros that somehow just produce half a statement are very rare.

Reviewers: NoQ

Subscribers: cfe-commits, xazax.hun, v.g.vassilev

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

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

7 years agoclang-format: Fix formatting of for loops with multiple increments.
Daniel Jasper [Sun, 3 Sep 2017 08:56:24 +0000 (08:56 +0000)]
clang-format: Fix formatting of for loops with multiple increments.

This fixes llvm.org/PR34366.

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

7 years agoDriver; extract target specific option application (NFC)
Saleem Abdulrasool [Sun, 3 Sep 2017 04:47:00 +0000 (04:47 +0000)]
Driver; extract target specific option application (NFC)

Extract the target specific option application.  This is a huge switch
which was inlined into the `ConstructJob` option which adds a large
amount of code to the already large function.  Extract it to simply
reduce the line count.  NFC

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

7 years agoDriver: extract debugging related options (NFC)
Saleem Abdulrasool [Sun, 3 Sep 2017 04:46:59 +0000 (04:46 +0000)]
Driver: extract debugging related options (NFC)

Out-of-line the logic for selecting the debug information handling.
This is still split across the new function and partially inline in the
job construction.  This is needed since the split portion attempts to
record the "-cc1" arguments.  This needs to be the very last item to
ensure that all the flags are recorded.  NFC.

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

7 years agoDriver: move `-mfpmath` into FP Options (NFC)
Saleem Abdulrasool [Sun, 3 Sep 2017 04:46:57 +0000 (04:46 +0000)]
Driver: move `-mfpmath` into FP Options (NFC)

Move the `-mfpmath` handling with the rest of the floating point
optimization flags.

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

7 years agoDon't search libxml2 if using msan. LLVM already has similar check.
Vitaly Buka [Sat, 2 Sep 2017 03:53:42 +0000 (03:53 +0000)]
Don't search libxml2 if using msan. LLVM already has similar check.

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

7 years agoDriver: extract `-fbuiltin` option handling (NFC)
Saleem Abdulrasool [Fri, 1 Sep 2017 23:44:01 +0000 (23:44 +0000)]
Driver: extract `-fbuiltin` option handling (NFC)

Extract the handling of the `-fbuiltin` family of flags to the driver.
This centralises the handling of those options, keeping the long
standing `#if 0`'ed block of code.  This requires some additional code
archaeology to determine if we need to enable this functionality.

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

7 years agoDriver: extract floating point optimization handling (NFC)
Saleem Abdulrasool [Fri, 1 Sep 2017 22:04:24 +0000 (22:04 +0000)]
Driver: extract floating point optimization handling (NFC)

Extract the logic for the floating point handling into its own function.
None of this information is needed for calculating the remainder of the
arguments to the frontend.  NFC

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

7 years agoEnable check-ubsan-minimal in standalone compiler-rt build.
Evgeniy Stepanov [Fri, 1 Sep 2017 20:37:20 +0000 (20:37 +0000)]
Enable check-ubsan-minimal in standalone compiler-rt build.

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

7 years ago[CodeGen]Refactor CpuSupports/CPUIs Builtin Code Gen to better work with
Erich Keane [Fri, 1 Sep 2017 19:42:45 +0000 (19:42 +0000)]
[CodeGen]Refactor CpuSupports/CPUIs Builtin Code Gen to better work with
"target" implementation

A small set of refactors that'll make it easier for me to implement 'target'
support.

First, extract the CPUSupports functionality into its own function.
THis has the advantage of not wasting time in this builtin to deal with
arguments.
Second, pulls both CPUSupports and CPUIs implementation into a member-function,
so that it can be called from the resolver generation that I'm working on.
Third, creates an overload that takes simply the feature/cpu name (rather than
extracting it from a callexpr), since that info isn't available later.

Note that despite how the 'diff' looks, the EmitX86CPUSupports function simply
takes the implementation out of the 'switch'.

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

7 years agoDriver: extract diagnostics flag handling (NFC)
Saleem Abdulrasool [Fri, 1 Sep 2017 18:57:34 +0000 (18:57 +0000)]
Driver: extract diagnostics flag handling (NFC)

Extract a function to render the diagnostics options to the clang
frontend.  This continues the simplification of the clang cc1 command
line invocation generation.  NFC

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

7 years ago[libFuzzer] switch -fsanitize=fuzzer from trace-pc-guard to inline-8bit-counters
Kostya Serebryany [Fri, 1 Sep 2017 18:34:36 +0000 (18:34 +0000)]
[libFuzzer] switch -fsanitize=fuzzer from trace-pc-guard to inline-8bit-counters

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

7 years agoDriver: extract ObjC option rendering (NFC)
Saleem Abdulrasool [Fri, 1 Sep 2017 17:43:59 +0000 (17:43 +0000)]
Driver: extract ObjC option rendering (NFC)

Extract the ObjC option rendering for the frontend.  This localises the
option translation.  It augments the existing `AddRuntimeObjCOptions`
which handles the runtime/ABI versioning flags only.  This new function
handles the non-runtime selecting flags.  This logic was previously
inlined into the `ConstructJob` function.

Minor change to the flag ordering to group the blocks related flags
together.

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

7 years agostd::function -> llvm::function_ref. NFC.
Benjamin Kramer [Fri, 1 Sep 2017 16:51:51 +0000 (16:51 +0000)]
std::function -> llvm::function_ref. NFC.

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

7 years agoDriver: extract modules flag handling (NFC)
Saleem Abdulrasool [Fri, 1 Sep 2017 15:25:17 +0000 (15:25 +0000)]
Driver: extract modules flag handling (NFC)

Extract a function to render the options related to modules.  This
reduces the cyclomatic complexity of the `ConstructJob` function.  NFC.

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

7 years ago[refactor] Use a RefactoringResultConsumer instead of tagged refactoring
Alex Lorenz [Fri, 1 Sep 2017 09:16:02 +0000 (09:16 +0000)]
[refactor] Use a RefactoringResultConsumer instead of tagged refactoring
rule classes

This commit changes the way that the refactoring results are produced. Instead
of using different `RefactoringActionRule` subclasses for each result type,
Clang  now use a single `RefactoringResultConsumer`. This was suggested by
Manuel in https://reviews.llvm.org/D36075.

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

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

7 years agoReland r312224 - [ItaniumCXXABI] Always use linkonce_odr linkage for RTTI data on...
Martin Storsjo [Fri, 1 Sep 2017 06:41:55 +0000 (06:41 +0000)]
Reland r312224 - [ItaniumCXXABI] Always use linkonce_odr linkage for RTTI data on MinGW

This fixes cases where dynamic classes produced RTTI data with
external linkage, producing linker errors about duplicate symbols.

This touches code close to what was changed in SVN r244266, but
this change doesn't break the tests added in that revision.

The previous version had missed to update CodeGenCXX/virt-dtor-key.cpp,
which had a behaviour change only when running the testsuite on windows.

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

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

7 years ago[OPENMP] Fix the test, NFC.
Alexey Bataev [Thu, 31 Aug 2017 23:34:33 +0000 (23:34 +0000)]
[OPENMP] Fix the test, NFC.

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

7 years ago[OPENMP] Fix for PR34398: assert with random access iterator if the
Alexey Bataev [Thu, 31 Aug 2017 23:06:52 +0000 (23:06 +0000)]
[OPENMP] Fix for PR34398: assert with random access iterator if the
step>1.

If the loop is a loot with random access iterators and the iteration
construct is represented it += n, then the compiler crashed because of
reusing of the same MaterializedTemporaryExpr around N. Patch fixes it
by using the expression as written, without any special kind of
wrappings.

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

7 years agoRegister linkageSpecDecl matcher
Dave Lee [Thu, 31 Aug 2017 21:18:27 +0000 (21:18 +0000)]
Register linkageSpecDecl matcher

Summary:
This allows `linkageSpecDecl` to be used from `clang-query`.

See also D31869 which similary adds `isStaticStorageClass`.

Reviewers: aaron.ballman

Reviewed By: aaron.ballman

Subscribers: cfe-commits, klimek

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

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

7 years agoAdd documentation for force_align_arg_pointer function attribute
Erich Keane [Thu, 31 Aug 2017 21:08:24 +0000 (21:08 +0000)]
Add documentation for force_align_arg_pointer function attribute

Patch By: anatol.pomozov (anatol.pomozov@gmail.com)

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

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

7 years ago[clang-cl] Explicitly set object format to COFF in CL mode
Oleg Ranevskyy [Thu, 31 Aug 2017 20:31:30 +0000 (20:31 +0000)]
[clang-cl] Explicitly set object format to COFF in CL mode

Summary:
Currently object format is taken from the default target triple. For toolchains with a non-COFF default target this may result in an object format inappropriate for pc-windows and lead to compilation issues.

For example, the default triple `aarch64-linux-elf` may produce something like `aarch64-pc-windows-msvc19.0.24215-elf` in CL mode. Clang creates `MicrosoftARM64TargetInfo` for such triple with data layout `e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128`. On the other hand, the AArch64 backend in `computeDataLayout` detects a non-COFF target and selects `e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128` as data layout for little endian. Different layouts used by clang and the backend cause an error:
```
error: backend data layout 'e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128'
 does not match expected target description 'e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128'
```
This can be observed on the clang's Driver/cl-pch.c test with AArch64 as a default target.

This patch enforces COFF in CL mode.

Reviewers: hans

Reviewed By: hans

Subscribers: cfe-commits, aemerson, asl, kristof.beyls

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

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

7 years agoDisable clang-format's MemoizationTest as it becomes prohibitive with EXPENSIVE_CHECKS
David Blaikie [Thu, 31 Aug 2017 18:49:34 +0000 (18:49 +0000)]
Disable clang-format's MemoizationTest as it becomes prohibitive with EXPENSIVE_CHECKS

EXPENSIVE_CHECKS enables libstdc++'s library consistency checks, which
includes checking the container passed to std::priority_queue for its
well-formedness. This makes the clang-format memoization too expensive,
so disable it.

(it's a necessary feature of libstdc++'s consistency checks that it
ruins the required scalability of C++ standard library features - so
these workarounds are to be expected if a test ever tries to test
scalability in some way, like this test does)

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

7 years agoDriver: extract ARCMT flag construction (NFC)
Saleem Abdulrasool [Thu, 31 Aug 2017 15:35:01 +0000 (15:35 +0000)]
Driver: extract ARCMT flag construction (NFC)

Extract the ARC migration tool flag handling into its own function.
This simplifies the flow of the clang frontend command line construction
function.  NFC.

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

7 years agodocs: don't say that data flow tracing interface is unstable
Dmitry Vyukov [Thu, 31 Aug 2017 11:02:44 +0000 (11:02 +0000)]
docs: don't say that data flow tracing interface is unstable

We are starting to use data flow tracing in kernel.
The interface is not subject to change anymore.

Reviewed in https://reviews.llvm.org/D37303

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

7 years agoRevert r312224: "[ItaniumCXXABI] Always use linkonce_odr linkage for RTTI data on...
Martin Storsjo [Thu, 31 Aug 2017 09:46:27 +0000 (09:46 +0000)]
Revert r312224: "[ItaniumCXXABI] Always use linkonce_odr linkage for RTTI data on MinGW"

Breaks on buildbot:
http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/4548/steps/test-check-all/logs/stdio

The test in CodeGenCXX/virt-dtor-key.cpp tests using %itanium_abi_triple;
on non-windows platforms, this resolves to the current platform triple
(where there was no behaviour change), while on windows, it resolves to
a mingw triple (where the behaviour was intentionally changed).

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

7 years ago[ItaniumCXXABI] Always use linkonce_odr linkage for RTTI data on MinGW
Martin Storsjo [Thu, 31 Aug 2017 08:29:59 +0000 (08:29 +0000)]
[ItaniumCXXABI] Always use linkonce_odr linkage for RTTI data on MinGW

This fixes cases where dynamic classes produced RTTI data with
external linkage, producing linker errors about duplicate symbols.

This touches code close to what was changed in SVN r244266, but
this change doesn't break the tests added in that revision.

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

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

7 years ago[analyzer] Performance optimizations for the CloneChecker
Raphael Isemann [Thu, 31 Aug 2017 07:10:46 +0000 (07:10 +0000)]
[analyzer] Performance optimizations for the CloneChecker

Summary:
This patch  aims at optimizing the CloneChecker for larger programs. Before this
patch we took around 102 seconds to analyze sqlite3 with a complexity value of
50. After this patch we now take 2.1 seconds to analyze sqlite3.

The biggest performance optimization is that we now put the constraint for group
size before the constraint for the complexity. The group size constraint is much
faster in comparison to the complexity constraint as it only does a simple
integer comparison. The complexity constraint on the other hand actually
traverses each Stmt and even checks the macro stack, so it is obviously not able
to handle larger amounts of incoming clones. The new order filters out all the
single-clone groups that the type II constraint generates in a faster way before
passing the fewer remaining clones to the complexity constraint. This reduced
runtime by around 95%.

The other change is that we also delay the verification part of the type II
clones back in the chain of constraints. This required to split up the
constraint into two parts - a verification and a hash constraint (which is also
making it more similar to the original design of the clone detection algorithm).
The reasoning for this is the same as before: The verification constraint has to
traverse many statements and shouldn't be at the start of the constraint chain.
However, as the type II hashing has to be the first step in our algorithm, we
have no other choice but split this constrain into two different ones. Now our
group size and complexity constrains filter out a chunk of the clones before
they reach the slow verification step, which reduces the runtime by around 8%.

I also kept the full type II constraint around - that now just calls it's two
sub-constraints - in case someone doesn't care about the performance benefits
of doing this.

Reviewers: NoQ

Reviewed By: NoQ

Subscribers: klimek, v.g.vassilev, xazax.hun, cfe-commits

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

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

7 years ago[modules] Add ability to specify module name to module file mapping (reapply)
Boris Kolpackov [Thu, 31 Aug 2017 06:26:43 +0000 (06:26 +0000)]
[modules] Add ability to specify module name to module file mapping (reapply)

Extend the -fmodule-file option to support the [<name>=]<file> value format.
If the name is omitted, then the old semantics is preserved (the module file
is loaded whether needed or not). If the name is specified, then the mapping
is treated as just another prebuilt module search mechanism, similar to
-fprebuilt-module-path, and the module file is only loaded if actually used
(e.g., via import). With one exception: this mapping also overrides module
file references embedded in other modules (which can be useful if module files
are moved/renamed as often happens during remote compilation).

This override semantics requires some extra work: we now store the module name
in addition to the file name in the serialized AST representation.

Reviewed By: rsmith

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

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

7 years agoRemove accidental newline.
Nico Weber [Thu, 31 Aug 2017 06:18:26 +0000 (06:18 +0000)]
Remove accidental newline.

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

7 years agoFix path regex in test to match on Windows
Boris Kolpackov [Thu, 31 Aug 2017 06:18:08 +0000 (06:18 +0000)]
Fix path regex in test to match on Windows

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

7 years agoSuppress -Wdelete-non-virtual-dtor warnings about classes defined in system headers.
Nico Weber [Thu, 31 Aug 2017 06:17:08 +0000 (06:17 +0000)]
Suppress -Wdelete-non-virtual-dtor warnings about classes defined in system headers.

r312167 made it so that we emit Wdelete-non-virtual-dtor from delete statements
that are in system headers (e.g. std::unique_ptr). That works great on Linux
and macOS, but on Windows there are non-final classes that are defined in
system headers that have virtual methods but non-virtual destructors and yet
get deleted through a base class pointer (e.g. ATL::CAccessToken::CRevert). So
paddle back a bit and don't emit the warning if it's about a class defined in a
system header.

https://reviews.llvm.org/D37324

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

7 years agoFix the test fix from r312181
Hans Wennborg [Wed, 30 Aug 2017 23:26:38 +0000 (23:26 +0000)]
Fix the test fix from r312181

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

7 years ago[cxx_status] Update to describe current status a bit better.
Richard Smith [Wed, 30 Aug 2017 23:10:31 +0000 (23:10 +0000)]
[cxx_status] Update to describe current status a bit better.

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

7 years ago[Sema] Make SpecialMemberDecl a PointerIntPair so we can stash it in a SmallPtrSet.
Benjamin Kramer [Wed, 30 Aug 2017 22:51:50 +0000 (22:51 +0000)]
[Sema] Make SpecialMemberDecl a PointerIntPair so we can stash it in a SmallPtrSet.

We have enough spare bits in the alignment of CXXRecordDecl. No
functionality change intended.

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

7 years ago[SanitizeCoverage] Enable stack-depth coverage for -fsanitize=fuzzer
Matt Morehouse [Wed, 30 Aug 2017 22:49:31 +0000 (22:49 +0000)]
[SanitizeCoverage] Enable stack-depth coverage for -fsanitize=fuzzer

Summary:
- Don't sanitize __sancov_lowest_stack.
- Don't instrument leaf functions.
- Add CoverageStackDepth to Fuzzer and FuzzerNoLink.
- Only enable on Linux.

Reviewers: vitalybuka, kcc, george.karpenkov

Reviewed By: kcc

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

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

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

7 years agoFix tests for ARM targets
Douglas Yung [Wed, 30 Aug 2017 22:30:08 +0000 (22:30 +0000)]
Fix tests for ARM targets

Tests fail on ARM targets due to ABI name between define and void. Added reg ex to skip.

Patch by Glenn Howe (and expanded on by Douglas Yung)!

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

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

7 years agoTest-case golfing.
Adrian Prantl [Wed, 30 Aug 2017 21:31:16 +0000 (21:31 +0000)]
Test-case golfing.

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

7 years ago[CodeGen][x86_64] Enable 'force_align_arg_pointer' attribute at x86_64
Erich Keane [Wed, 30 Aug 2017 21:17:40 +0000 (21:17 +0000)]
[CodeGen][x86_64] Enable 'force_align_arg_pointer' attribute at x86_64

This attribute is useful in OS development when we jump from 32 to 64 bit
code and expect that 64bit function forces correct stack alignment.

Related discussion: http://lists.llvm.org/pipermail/cfe-dev/2017-June/054358.html

Patch By: anatol.pomozov (anatol.pomozov@gmail.com)

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

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

7 years agoLet -Wdelete-non-virtual-dtor fire in system headers too.
Nico Weber [Wed, 30 Aug 2017 20:25:22 +0000 (20:25 +0000)]
Let -Wdelete-non-virtual-dtor fire in system headers too.

Makes the warning useful again in a std::unique_ptr world, PR28460.

Also make the warning not fire in unevaluated contexts, since system libraries
(e.g. libc++) do do that. This would've been a good change before we started
emitting this warning in system headers too, but "normal" code seems to be less
template-heavy, so we didn't notice until now.

https://reviews.llvm.org/D37235

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