]> granicus.if.org Git - clang/log
clang
7 years ago[sanitizer-coverage] document -fsanitize-coverage=pc-table and -fsanitize-coverage...
Kostya Serebryany [Thu, 24 Aug 2017 22:40:03 +0000 (22:40 +0000)]
[sanitizer-coverage] document -fsanitize-coverage=pc-table and -fsanitize-coverage=inline-8bit-counters

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

7 years agoExpose -mllvm -accurate-sample-profile to clang.
Dehao Chen [Thu, 24 Aug 2017 21:37:33 +0000 (21:37 +0000)]
Expose -mllvm -accurate-sample-profile to clang.

Summary: With accurate sample profile, we can do more aggressive size optimization. For some size-critical application, this can reduce the text size by 20%

Reviewers: davidxl, rsmith

Reviewed By: davidxl, rsmith

Subscribers: mehdi_amini, eraman, sanjoy, cfe-commits

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

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

7 years ago[ubsan] PR34266: When sanitizing the 'this' value for a member function that happens...
Richard Smith [Thu, 24 Aug 2017 20:10:33 +0000 (20:10 +0000)]
[ubsan] PR34266: When sanitizing the 'this' value for a member function that happens to be a lambda call operator, use the lambda's 'this' pointer, not the captured enclosing 'this' pointer (if any).

Do not sanitize the 'this' pointer of a member call operator for a lambda with
no capture-default, since that call operator can legitimately be called with a
null this pointer from the static invoker function. Any actual call with a null
this pointer should still be caught in the caller (if it is being sanitized).

This reinstates r311589 (reverted in r311680) with the above fix.

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

7 years ago[Preprocessor] Correct internal token parsing of newline characters in CRLF
Erich Keane [Thu, 24 Aug 2017 18:36:07 +0000 (18:36 +0000)]
[Preprocessor] Correct internal token parsing of newline characters in CRLF

Discovered due to a goofy git setup, the test system-headerline-directive.c
(and a few others) failed because the token-consumption will consume only the
'\r' in CRLF, making the preprocessor's printed value give the wrong line number
when returning from an include. For example:

(line 1):#include <noline.h>\r\n

The "file exit" code causes the printer to try to print the 'returned to the
main file' line. It looks up what the current line number is. However, since the
current 'token' is the '\n' (since only the \r was consumed), it will give the
line number as '1", not '2'. This results in a few failed tests, but more
importantly, results in error messages being incorrect when compiling a
previously preprocessed file.

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

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

7 years agoRevert "[ubsan] PR34266: When sanitizing the 'this' value for a member function that...
Adrian Prantl [Thu, 24 Aug 2017 18:18:24 +0000 (18:18 +0000)]
Revert "[ubsan] PR34266: When sanitizing the 'this' value for a member function that happens to be a lambda call operator, use the lambda's 'this' pointer, not the captured enclosing 'this' pointer (if any)."

This reverts commit r311589 because of bot breakage.
http://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan_check/4115/consoleFull#15752874848254eaf0-7326-4999-85b0-388101f2d404.

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

7 years ago[clang-format] Emit absolute splits before lines for comments, try 2
Krasimir Georgiev [Thu, 24 Aug 2017 16:41:10 +0000 (16:41 +0000)]
[clang-format] Emit absolute splits before lines for comments, try 2

Summary:
This recommits https://reviews.llvm.org/D36956 with an update to the added test
case to not use raw string literals, since this makes gcc unhappy.

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits, klimek

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

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

7 years ago[mips] Introducing option -mabs=[legacy/2008]
Petar Jovanovic [Thu, 24 Aug 2017 16:06:30 +0000 (16:06 +0000)]
[mips] Introducing option -mabs=[legacy/2008]

In patch r205628 using abs.[ds] instruction is forced, as they should behave
in accordance with flags Has2008 and ABS2008. Unfortunately for revisions
prior mips32r6 and mips64r6, abs.[ds] is not generating correct result when
working with NaNs. To generate a sequence which always produce a correct
result but also to allow user more control on how his code is compiled,
option -mabs is added where user can choose legacy or 2008.
By default legacy mode is used on revisions prior R6. Mips32r6 and mips64r6
use abs2008 mode by default.

Patch by Aleksandar Beserminji

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

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

7 years agoFix use-after-free in Clang's ASTSelection unittest
Alex Lorenz [Thu, 24 Aug 2017 14:53:48 +0000 (14:53 +0000)]
Fix use-after-free in Clang's ASTSelection unittest

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

7 years ago[Driver][AArch64] Add tests for RDM feature.
Chad Rosier [Thu, 24 Aug 2017 14:32:55 +0000 (14:32 +0000)]
[Driver][AArch64] Add tests for RDM feature.

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

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

7 years agoAdd missing std::move call
Alex Lorenz [Thu, 24 Aug 2017 14:08:18 +0000 (14:08 +0000)]
Add missing std::move call

This should fix
http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental_build/41578/

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

7 years ago[refactor] Add the AST source selection component
Alex Lorenz [Thu, 24 Aug 2017 13:51:09 +0000 (13:51 +0000)]
[refactor] Add the AST source selection component

This commit adds the base AST source selection component to the refactoring
library. AST selection is represented using a tree of SelectedASTNode values.
Each selected node gets its own selection kind, which can actually be None even
in the middle of tree (e.g. statement in a macro whose child is in a macro
argument). The initial version constructs a "raw" selection tree, without
applying filters and canonicalisation operations to the nodes.

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

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

7 years ago[Clang][x86][Inline Asm] support for GCC style inline asm - Y<x> constraints
Coby Tayree [Thu, 24 Aug 2017 09:07:34 +0000 (09:07 +0000)]
[Clang][x86][Inline Asm] support for GCC style inline asm - Y<x> constraints

This patch is intended to enable the use of basic double letter constraints used in GCC extended inline asm {Yi Y2 Yz Y0 Ym Yt}.
Supersedes D35205
llvm counterpart: D36369

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

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

7 years agoRevert "[clang-format] Break non-trailing block comments"
Krasimir Georgiev [Thu, 24 Aug 2017 08:55:07 +0000 (08:55 +0000)]
Revert "[clang-format] Break non-trailing block comments"

This reverts commit r311457. It reveals some dormant bugs in comment
reflowing, like breaking a single line jsdoc type annotation before a
parameter into multiple lines.

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

7 years agoFixups to FE tests affected by D36793
Coby Tayree [Thu, 24 Aug 2017 08:47:26 +0000 (08:47 +0000)]
Fixups to FE tests affected by D36793

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

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

7 years ago[Driver] Register effective triple before get arm float abi.
Leo Li [Thu, 24 Aug 2017 01:51:51 +0000 (01:51 +0000)]
[Driver] Register effective triple before get arm float abi.

Summary:
We need to register effective triple before calling `getARMFloatABI`.
Add missing code when `--print-libgcc-file-name` is passed.

Reviewers: atanasyan, rsmith, mgorny, peter.smith, kristof.beyls, compnerd, jroelofs

Reviewed By: compnerd

Subscribers: llvm-commits, aemerson, javed.absar, srhines, kristof.beyls, pirama

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

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

7 years agoFix ClangFormatFuzzer.
George Karpenkov [Thu, 24 Aug 2017 00:30:28 +0000 (00:30 +0000)]
Fix ClangFormatFuzzer.

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

7 years agoObjC++: decorate ObjC interfaces in MSABI properly
Saleem Abdulrasool [Wed, 23 Aug 2017 22:38:58 +0000 (22:38 +0000)]
ObjC++: decorate ObjC interfaces in MSABI properly

`id` needs to be handled specially since it is a `TypedefType` which is
sugar for an `ObjCObjectPointerType` whose pointee is an
`ObjCObjectType` with base `BuiltinType::ObjCIdType` and no protocols
and the first level of pointer gets it own type implementation.  `Class`
is similar with the `ObjCClassType` as the base instead.

The qualifiers on the base type of the `ObjCObjectType` need to be
dropped because the innermost `mangleType` will handle the qualifiers
itself.

`id` is desugared to `struct objc_object *` which should be encoded as
`PAUobjc_object@@`.  `Class` is desugared to `struct objc_class *` which
should be encoded as `PAUobjc_class@@`.

We were previously applying an extra modifier `A` which will be handled
during the recursive call.

This now properly decorates interface types as well as `Class` and `id`.
This corrects the interactions between C++ and ObjC++ for the type
specifier decoration.

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

7 years agoFix mangling for dependent "type { expr-list }" expressions, and add mangling for...
Richard Smith [Wed, 23 Aug 2017 22:12:08 +0000 (22:12 +0000)]
Fix mangling for dependent "type { expr-list }" expressions, and add mangling for designated initializers matching recent cxx-abi-dev discussion.

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

7 years agoFix a bug in CGDebugInfo::EmitInlineFunctionStart causing DILocations to be
Adrian Prantl [Wed, 23 Aug 2017 21:24:12 +0000 (21:24 +0000)]
Fix a bug in CGDebugInfo::EmitInlineFunctionStart causing DILocations to be
parented in function declarations.

Fixes PR33997.
https://bugs.llvm.org/show_bug.cgi?id=33997

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

7 years agoParse and print DIExpressions inline to ease IR and MIR testing
Reid Kleckner [Wed, 23 Aug 2017 20:31:27 +0000 (20:31 +0000)]
Parse and print DIExpressions inline to ease IR and MIR testing

Summary:
Most DIExpressions are empty or very simple. When they are complex, they
tend to be unique, so checking them inline is reasonable.

This also avoids the need for CodeGen passes to append to the
llvm.dbg.mir named md node.

See also PR22780, for making DIExpression not be an MDNode.

Reviewers: aprantl, dexonsmith, dblaikie

Subscribers: qcolombet, javed.absar, eraman, hiraditya, llvm-commits

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

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

7 years ago[clang-proto-fuzzer] Fix clang-proto-to-cxx build.
Matt Morehouse [Wed, 23 Aug 2017 19:58:07 +0000 (19:58 +0000)]
[clang-proto-fuzzer] Fix clang-proto-to-cxx build.

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

7 years ago[ubsan] PR34266: When sanitizing the 'this' value for a member function that happens...
Richard Smith [Wed, 23 Aug 2017 19:39:04 +0000 (19:39 +0000)]
[ubsan] PR34266: When sanitizing the 'this' value for a member function that happens to be a lambda call operator, use the lambda's 'this' pointer, not the captured enclosing 'this' pointer (if any).

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

7 years agoHeaders: explicitly specify double-word alignment
Saleem Abdulrasool [Wed, 23 Aug 2017 16:57:55 +0000 (16:57 +0000)]
Headers: explicitly specify double-word alignment

GCC will interpret `__attribute__((__aligned__))` as 8-byte alignment on
ARM, but clang will not.  Explicitly specify the alignment.  This
mirrors the declaration in libunwind.

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

7 years ago[clang-diff] Properly clear the selection in HTML diff
Johannes Altmanninger [Wed, 23 Aug 2017 16:52:15 +0000 (16:52 +0000)]
[clang-diff] Properly clear the selection in HTML diff

Reviewers: arphaman

Subscribers: cfe-commits

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

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

7 years ago[clang-diff] Reformat test, NFC
Johannes Altmanninger [Wed, 23 Aug 2017 16:32:35 +0000 (16:32 +0000)]
[clang-diff] Reformat test, NFC

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

7 years ago[clang-diff] HTML diff navigation
Johannes Altmanninger [Wed, 23 Aug 2017 16:32:13 +0000 (16:32 +0000)]
[clang-diff] HTML diff navigation

Summary:
This adds shortcuts j and k to jump between changes.
It is especially useful in diffs with few changes.

Reviewers: arphaman

Subscribers: cfe-commits

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

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

7 years ago[analyzer] Make StmtDataCollector customizable
Johannes Altmanninger [Wed, 23 Aug 2017 16:28:26 +0000 (16:28 +0000)]
[analyzer] Make StmtDataCollector customizable

Summary:
This moves the data collection macro calls for Stmt nodes
to lib/AST/StmtDataCollectors.inc

Users can subclass ConstStmtVisitor and include StmtDataCollectors.inc
to define visitor methods for each Stmt subclass. This makes it also
possible to customize the visit methods as exemplified in
lib/Analysis/CloneDetection.cpp.

Move helper methods for data collection to a new module,
AST/DataCollection.

Add data collection for DeclRefExpr, MemberExpr and some literals.

Reviewers: arphaman, teemperor!

Subscribers: mgorny, xazax.hun, cfe-commits

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

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

7 years agoRevert "[clang-format] Emit absolute splits before lines for comments"
Krasimir Georgiev [Wed, 23 Aug 2017 15:58:10 +0000 (15:58 +0000)]
Revert "[clang-format] Emit absolute splits before lines for comments"

This reverts commit r311559, which added a test containing raw string
literals in macros, which chokes gcc:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55971

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

7 years agoHeaders: give _Unwind_Control_Block double-word alignment
Saleem Abdulrasool [Wed, 23 Aug 2017 15:35:33 +0000 (15:35 +0000)]
Headers: give _Unwind_Control_Block double-word alignment

The C++ ABI requires that the exception object (which under AEABI is the
`_Unwind_Control_Block`) is double-word aligned.  The attribute was
applied to the `_Unwind_Exception` type, but not the
`_Unwind_Control_Block`.  This should fix the libunwind test for the
alignment of the exception type.

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

7 years agoImplement CFG construction for __try / __except / __leave.
Nico Weber [Wed, 23 Aug 2017 15:33:16 +0000 (15:33 +0000)]
Implement CFG construction for __try / __except / __leave.

This makes -Wunreachable-code work for programs containing SEH (except for
__finally, which is still missing for now).

__try is modeled like try (but simpler since it can only have a single __except
or __finally), __except is fairly similar to catch (but simpler, since it can't
contain declarations). __leave is implemented similarly to break / continue.

Use the existing addTryDispatchBlock infrastructure (which
FindUnreachableCode() in ReachableCode.cpp uses via cfg->try_blocks_begin()) to
mark things in the __except blocks as reachable.

Re-use TryTerminatedBlock. This means we add EH edges from calls to the __try
block, but not from all other statements. While this is incomplete, it matches
LLVM's SEH codegen support. Also, in practice, BuildOpts.AddEHEdges is always
false in practice from what I can tell, so we never even insert the call EH
edges either.

https://reviews.llvm.org/D36914

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

7 years ago[clang-format] Emit absolute splits before lines for comments
Krasimir Georgiev [Wed, 23 Aug 2017 15:16:47 +0000 (15:16 +0000)]
[clang-format] Emit absolute splits before lines for comments

Summary:
This patch makes the splits emitted for the beginning of comment lines during
reformatting absolute. Previously, they were relative to the start of the
non-whitespace content of the line, which messes up further TailOffset
calculations in breakProtrudingToken. This fixes an assertion failure reported
in bug 34236: https://bugs.llvm.org/show_bug.cgi?id=34236.

Reviewers: djasper

Reviewed By: djasper

Subscribers: klimek, cfe-commits

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

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

7 years agoRevert r311552: [Bash-autocompletion] Add support for static analyzer flags
Rui Ueyama [Wed, 23 Aug 2017 14:48:58 +0000 (14:48 +0000)]
Revert r311552: [Bash-autocompletion] Add support for static analyzer flags

This reverts commit r311552 because it broke ubsan and asan bots.

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

7 years ago[Bash-autocompletion] Add support for static analyzer flags
Yuka Takahashi [Wed, 23 Aug 2017 13:39:47 +0000 (13:39 +0000)]
[Bash-autocompletion] Add support for static analyzer flags

Summary:
This is a patch for clang autocomplete feature.

It will collect values which -analyzer-checker takes, which is defined in
clang/StaticAnalyzer/Checkers/Checkers.inc, dynamically.
First, from ValuesCode class in Options.td, TableGen will generate C++
code in Options.inc. Options.inc will be included in DriverOptions.cpp, and
calls OptTable's addValues function. addValues function will add second
argument to Option's Values class. Values contains string like "foo,bar,.."
which is handed to Values class
in OptTable.

Reviewers: v.g.vassilev, teemperor, ruiu

Subscribers: hiraditya, cfe-commits

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

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

7 years agoFix typos, remove unused private members of CommonOptionsParser, NFC
Johannes Altmanninger [Wed, 23 Aug 2017 10:43:26 +0000 (10:43 +0000)]
Fix typos, remove unused private members of CommonOptionsParser, NFC

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

7 years ago[clang-format] Align trailing comments if ColumnLimit is 0
Krasimir Georgiev [Wed, 23 Aug 2017 07:18:36 +0000 (07:18 +0000)]
[clang-format] Align trailing comments if ColumnLimit is 0

Summary:
ColumnLimit = 0 means no limit, so comment should always be aligned if requested. This was broken with

  https://llvm.org/svn/llvm-project/cfe/trunk@304687

introduced via

  https://reviews.llvm.org/D33830

and is included in 5.0.0-rc2. This commit fixes it and adds a unittest for this property.

Should go into clang-5.0 IMHO.

Contributed by @pboettch!

Reviewers: djasper, krasimir

Reviewed By: djasper, krasimir

Subscribers: hans, klimek

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

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

7 years agobpf: add -mcpu=# support for bpf
Yonghong Song [Wed, 23 Aug 2017 04:26:17 +0000 (04:26 +0000)]
bpf: add -mcpu=# support for bpf

-mcpu=# will support:
  . generic: the default insn set
  . v1: insn set version 1, the same as generic
  . v2: insn set version 2, version 1 + additional jmp insns
  . probe: the compiler will probe the underlying kernel to
           decide proper version of insn set.

Examples:
$ clang -target bpf -mcpu=v1 -c t.c
$ clang -target bpf -mcpu=v2 -c t.c
$ clang -target bpf -mcpu=generic -c t.c
$ clang -target bpf -mcpu=probe -c t.c
$ clang -target bpf -mcpu=v3 -c t.c
error: unknown target CPU 'v3'

Signed-off-by: Yonghong Song <yhs@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@311523 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ODRHash] Diagnose differing template parameters.
Richard Trieu [Wed, 23 Aug 2017 02:43:59 +0000 (02:43 +0000)]
[ODRHash] Diagnose differing template parameters.

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

7 years agoUpdate Clang fuzzers to use libFuzzer bundled with the toolchain.
George Karpenkov [Wed, 23 Aug 2017 00:42:22 +0000 (00:42 +0000)]
Update Clang fuzzers to use libFuzzer bundled with the toolchain.

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

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

7 years agoRemove LLVMFuzzer from list of bundled libraries for Fuchsia
George Karpenkov [Wed, 23 Aug 2017 00:09:33 +0000 (00:09 +0000)]
Remove LLVMFuzzer from list of bundled libraries for Fuchsia

As of now, libFuzzer is located in compiler-rt and is bundled with
Clang's toolchain by default.

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

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

7 years agoDegeneralize more tests.
Dan Albert [Tue, 22 Aug 2017 21:16:22 +0000 (21:16 +0000)]
Degeneralize more tests.

As before, not every platform supports LTO. Make sure the platform
we're targeting is one that supports it (regardless of the *host*
platform).

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

7 years agoRevert "Revert "Revert "Revert "Fix LLVMgold plugin name/path for non-Linux.""""
Dan Albert [Tue, 22 Aug 2017 21:05:01 +0000 (21:05 +0000)]
Revert "Revert "Revert "Revert "Fix LLVMgold plugin name/path for non-Linux.""""

With tests fixed for Windows style paths now that they are going
through path canonicalization.

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

7 years ago[Parser] Correct initalizer typos before lambda capture type is deduced.
Volodymyr Sapsai [Tue, 22 Aug 2017 17:55:19 +0000 (17:55 +0000)]
[Parser] Correct initalizer typos before lambda capture type is deduced.

This is the same assertion as in https://reviews.llvm.org/D25206 that is
triggered when RecordLayoutBuilder tries to compute the size of a field
(for capture "typo_boo" in the test case) whose type hasn't been
deduced.

The fix is to add CorrectDelayedTyposInExpr call to the cases when we
aren't disambiguating between an Obj-C message send and a lambda
expression.

rdar://problem/31760839

Reviewers: rsmith, ahatanak

Reviewed By: arphaman

Subscribers: cfe-commits

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

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

7 years ago[OPENMP] Fix for PR34014: OpenMP 4.5: Target construct in static method
Alexey Bataev [Tue, 22 Aug 2017 17:54:52 +0000 (17:54 +0000)]
[OPENMP] Fix for PR34014: OpenMP 4.5: Target construct in static method
of class fails to map class static variable.

If the global variable is captured and it has several redeclarations,
sometimes it may lead to a compiler crash. Patch fixes this by working
only with canonical declarations.

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

7 years ago[clang-diff] Refactor stop-after command-line flag
Jacob Gravelle [Tue, 22 Aug 2017 17:42:44 +0000 (17:42 +0000)]
[clang-diff] Refactor stop-after command-line flag

Summary:
Rename stop-after to stop-diff-after. When building LLVM with
-DLLVM_BUILD_LLVM_DYLIB=ON, stop-after collides with the stop-after
already present in LLVM.

Reviewers: johannes, arphaman

Subscribers: klimek, aheejin, cfe-commits

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

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

7 years agoTest commit access.
Volodymyr Sapsai [Tue, 22 Aug 2017 17:39:25 +0000 (17:39 +0000)]
Test commit access.

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

7 years ago[clang-format] Break non-trailing block comments
Krasimir Georgiev [Tue, 22 Aug 2017 14:40:05 +0000 (14:40 +0000)]
[clang-format] Break non-trailing block comments

Summary:
This patch is an alternative to https://reviews.llvm.org/D36614, by resolving a
non-idempotency issue by breaking non-trailing comments:

Consider formatting the following code with column limit at `V`:
```
                    V
const /* comment comment */ A = B;
```
The comment is not a trailing comment, breaking before it doesn't bring it under
the column limit. The formatter breaks after it, resulting in:

```
                    V
const /* comment comment */
    A = B;
```
For a next reformat, the formatter considers the comment as a trailing comment,
so it is free to break it further, resulting in:

```
                    V
const /* comment
         comment */
    A = B;
```
This patch improves the situation by directly producing the third case.

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits, klimek

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

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

7 years ago[clang-format] Fix lines regression in clang-format.py
Krasimir Georgiev [Tue, 22 Aug 2017 14:28:01 +0000 (14:28 +0000)]
[clang-format] Fix lines regression in clang-format.py

Summary:
This patch fixes a regression after https://reviews.llvm.org/rL305665,
which updates the structure of the `lines` variable.

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits

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

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

7 years ago[mips] Rename getSupportedNanEncoding() to getIEEE754Standard()
Petar Jovanovic [Tue, 22 Aug 2017 13:35:27 +0000 (13:35 +0000)]
[mips] Rename getSupportedNanEncoding() to getIEEE754Standard()

Rename the function getSupportedNanEncoding() to getIEEE754Standard(), since
this function will be used for non-nan related features.

Patch by Aleksandar Beserminji.

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

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

7 years agoRevert r311442 (Fix templated type alias completion when using global completion...
Erik Verbruggen [Tue, 22 Aug 2017 10:54:40 +0000 (10:54 +0000)]
Revert r311442 (Fix templated type alias completion when using global completion cache)

Failing Tests (2):
    Clang :: CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp
    Clang :: SemaCXX/alias-template.cpp

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

7 years ago[ObjC] Check written attributes only when synthesizing ambiguous property
Alex Lorenz [Tue, 22 Aug 2017 10:38:07 +0000 (10:38 +0000)]
[ObjC] Check written attributes only when synthesizing ambiguous property

This commit fixes a bug introduced in r307903. The attribute ambiguity checker
that was introduced in r307903 checked all property attributes, which caused
errors for source-compatible properties, like:

@property (nonatomic, readonly) NSObject *prop;
@property (nonatomic, readwrite) NSObject *prop;

because the readwrite property would get implicit 'strong' attribute. The
ambiguity checker should be concerned about explicitly specified attributes
only.

rdar://33748089

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

7 years agoFix templated type alias completion when using global completion cache
Erik Verbruggen [Tue, 22 Aug 2017 10:25:48 +0000 (10:25 +0000)]
Fix templated type alias completion when using global completion cache

When we have enabled cache for global completions we did not have
diagnostics for Bar and could not complete Ba as in provided code
example.

template <typename T>
struct Foo { T member; };

template<typename T> using Bar = Foo<T>;

int main() {
    Ba
}

Patch by Ivan Donchevskii!

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

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

7 years ago[clang-diff] Fix getRelativeName
Johannes Altmanninger [Tue, 22 Aug 2017 08:59:13 +0000 (08:59 +0000)]
[clang-diff] Fix getRelativeName

Handle the case when DeclContext is null.

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

7 years ago[clang-diff] Use the relative name for NamedDecl
Johannes Altmanninger [Tue, 22 Aug 2017 08:56:26 +0000 (08:56 +0000)]
[clang-diff] Use the relative name for NamedDecl

Summary:
If a node referring to a name is within a class or namespace, do not use
the full qualified name, but strip the namespace prefix.

Reviewers: arphaman, bkramer

Subscribers: klimek

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

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

7 years agoUpdate libprotobuf-mutator revision
Vitaly Buka [Tue, 22 Aug 2017 05:18:28 +0000 (05:18 +0000)]
Update libprotobuf-mutator revision

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

7 years agoTest fix: only add shared libraries to rpath.
George Karpenkov [Tue, 22 Aug 2017 02:10:53 +0000 (02:10 +0000)]
Test fix: only add shared libraries to rpath.

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

7 years agoFixed driver tests for -fsanitize=fuzzer.
George Karpenkov [Tue, 22 Aug 2017 00:04:05 +0000 (00:04 +0000)]
Fixed driver tests for -fsanitize=fuzzer.

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

7 years agoMoving libFuzzer to compiler-rt: required updates to the Clang driver.
George Karpenkov [Mon, 21 Aug 2017 23:25:19 +0000 (23:25 +0000)]
Moving libFuzzer to compiler-rt: required updates to the Clang driver.

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

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

7 years ago[Driver][Darwin] Do not pass -munwind-table if -fno-excpetions is
Akira Hatanaka [Mon, 21 Aug 2017 22:46:46 +0000 (22:46 +0000)]
[Driver][Darwin] Do not pass -munwind-table if -fno-excpetions is
supplied.

With this change, -fno-exceptions disables unwind tables unless
-funwind-tables is supplied too or the target is x86-64 (x86-64 requires
emitting unwind tables).

rdar://problem/33934446

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

7 years ago[Driver] Recognize DevDiv internal builds of MSVC, with a different directory structure.
Stephan T. Lavavej [Mon, 21 Aug 2017 22:19:33 +0000 (22:19 +0000)]
[Driver] Recognize DevDiv internal builds of MSVC, with a different directory structure.

This is a reasonably non-intrusive change, which I've verified
works for both x86 and x64 DevDiv-internal builds.

The idea is to change `bool IsVS2017OrNewer` into a 3-state
`ToolsetLayout VSLayout`. Either a build is DevDiv-internal,
released VS 2017 or newer, or released VS 2015 or older. When looking at
the directory structure, if instead of `"VC"` we see `"x86ret"`, `"x86chk"`,
`"amd64ret"`, or `"amd64chk"`, we recognize this as a DevDiv-internal build.

After we get past the directory structure validation, we use this knowledge
to regenerate paths appropriately. `llvmArchToDevDivInternalArch()` knows how
we use `"i386"` subdirectories, and `MSVCToolChain::getSubDirectoryPath()`
uses that. It also knows that DevDiv-internal builds have an `"inc"`
subdirectory instead of `"include"`.

This may still not be the "right" fix in any sense, but I believe that it's
non-intrusive in the sense that if the special directory names aren't found,
no codepaths are affected. (`ToolsetLayout::OlderVS` and
`ToolsetLayout::VS2017OrNewer` correspond to `IsVS2017OrNewer` being `false`
or `true`, respectively.) I searched for all references to `IsVS2017OrNewer`,
which are places where Clang cares about VS's directory structure, and the
only one that isn't being patched is some logic to deal with
cross-compilation. I'm fine with that not working for DevDiv-internal builds
for the moment (we typically test the native compilers), so I added a comment.

Fixes D36860.

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

7 years agoEnable libfuzzer on NetBSD/amd64
Kamil Rytarowski [Mon, 21 Aug 2017 19:12:14 +0000 (19:12 +0000)]
Enable libfuzzer on NetBSD/amd64

Summary:
Enable SanitizerKind::Fuzzer and SanitizerKind::FuzzerNoLink on x86_64.

Sponsored by <The NetBSD Foundation>

Reviewers: joerg, kcc, vitalybuka, george.karpenkov

Reviewed By: vitalybuka

Subscribers: cfe-commits, #sanitizers

Tags: #sanitizers

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

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

7 years ago[clang] Fix tests for Emitting Single Inline Remark
Sam Elliott [Mon, 21 Aug 2017 16:40:35 +0000 (16:40 +0000)]
[clang] Fix tests for Emitting Single Inline Remark

Summary: This change depends on https://reviews.llvm.org/D36054 and should be landed at the same time.

Reviewers: anemet

Reviewed By: anemet

Subscribers: cfe-commits

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

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

7 years ago[StaticAnalyzer] LoopUnrolling: Track a LoopStack in order to completely unroll speci...
Peter Szecsi [Mon, 21 Aug 2017 16:32:57 +0000 (16:32 +0000)]
[StaticAnalyzer] LoopUnrolling: Track a LoopStack in order to completely unroll specific loops

The LoopExit CFG information provides the opportunity to not mark the loops but
having a stack which tracks if a loop is unrolled or not. So in case of
simulating a loop we just add it and the information if it meets the
requirements to be unrolled to the top of the stack.

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

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

7 years ago[clang-proto-fuzzer] Update README.
Matt Morehouse [Mon, 21 Aug 2017 16:18:43 +0000 (16:18 +0000)]
[clang-proto-fuzzer] Update README.

Add instructions on how to modify the compiler invocation.

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

7 years ago[StaticAnalyzer] Handle LoopExit CFGElement in the analyzer
Peter Szecsi [Mon, 21 Aug 2017 16:10:19 +0000 (16:10 +0000)]
[StaticAnalyzer] Handle LoopExit CFGElement in the analyzer

This patch adds handling of the LoopExit CFGElements to the StaticAnalyzer.
This is reached by introducing a new ProgramPoint.
Tests will be added in a following commit.

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

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

7 years ago[mips] Remove checking of the redundant condition. NFC
Simon Atanasyan [Mon, 21 Aug 2017 14:08:29 +0000 (14:08 +0000)]
[mips] Remove checking of the redundant condition. NFC

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

7 years agoFixed a crash on replaying Preamble's PP conditional stack.
Ilya Biryukov [Mon, 21 Aug 2017 12:03:08 +0000 (12:03 +0000)]
Fixed a crash on replaying Preamble's PP conditional stack.

Summary:
The crash occurs when the first token after a preamble is a macro
expansion.
Fixed by moving replayPreambleConditionalStack from Parser into
Preprocessor. It is now called right after the predefines file is
processed.

Reviewers: erikjv, bkramer, klimek, yvvan

Reviewed By: bkramer

Subscribers: cfe-commits

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

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

7 years ago[ObjC] Use consistent comment style in inline asm
Oliver Stannard [Mon, 21 Aug 2017 09:54:46 +0000 (09:54 +0000)]
[ObjC] Use consistent comment style in inline asm

The comment markers accepted by the assembler vary between different targets,
but '//' is always accepted, so we should use that for consistency.

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

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

7 years ago[ARM][AArch64] Cortex-A75 and Cortex-A55 tests
Sam Parker [Mon, 21 Aug 2017 08:52:45 +0000 (08:52 +0000)]
[ARM][AArch64] Cortex-A75 and Cortex-A55 tests

Add frontend tests for Cortex-A75 and Cortex-A55, Arm's latest
big.LITTLE A-class cores. They implement the ARMv8.2-A architecture,
including the cryptography and RAS extensions, plus the optional dot
product extension. They also implement the RCpc AArch64 extension
from ARMv8.3-A.

Cortex-A75:
https://developer.arm.com/products/processors/cortex-a/cortex-a75

Cortex-A55:
https://developer.arm.com/products/processors/cortex-a/cortex-a55

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

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

7 years agoAllow thiscall attribute in test/Tooling/clang-diff-ast.cpp
Johannes Altmanninger [Sun, 20 Aug 2017 20:13:33 +0000 (20:13 +0000)]
Allow thiscall attribute in test/Tooling/clang-diff-ast.cpp

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

7 years ago[clang-diff] Improve and test getNodeValue
Johannes Altmanninger [Sun, 20 Aug 2017 16:18:43 +0000 (16:18 +0000)]
[clang-diff] Improve and test getNodeValue

Summary: Use qualified names if available.

Reviewers: arphaman

Subscribers: klimek

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

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

7 years ago[ODRHash] Move into anonymous namespace. NFC.
Benjamin Kramer [Sun, 20 Aug 2017 13:02:57 +0000 (13:02 +0000)]
[ODRHash] Move into anonymous namespace. NFC.

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

7 years ago[clang-diff] Fix similarity computation
Johannes Altmanninger [Sun, 20 Aug 2017 12:09:07 +0000 (12:09 +0000)]
[clang-diff] Fix similarity computation

Summary:
Add separate tests for the top-down and the bottom-up phase, as well as
one for the optimal matching.

Reviewers: arphaman

Subscribers: klimek

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

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

7 years ago[clang-diff] Filter AST nodes
Johannes Altmanninger [Sun, 20 Aug 2017 10:22:32 +0000 (10:22 +0000)]
[clang-diff] Filter AST nodes

Summary:
Ignore macros and implicit AST nodes, as well as anything outside of the
main source file.

Reviewers: arphaman

Subscribers: klimek

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

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

7 years agoclang/test/Tooling/clang-diff-ast.cpp: Satisfy thiscall.
NAKAMURA Takumi [Sun, 20 Aug 2017 00:02:20 +0000 (00:02 +0000)]
clang/test/Tooling/clang-diff-ast.cpp: Satisfy thiscall.

  clang/test/Tooling/clang-diff-ast.cpp:45:12: error: expected string not found in input
   // CHECK: CXXConstructorDecl: X(void (char, int))
             ^
  <stdin>:43:25: note: scanning from here
   AccessSpecDecl: public(42)
                          ^
  <stdin>:44:2: note: possible intended match here
   CXXConstructorDecl: X(void (char, int) __attribute__((thiscall)))(43)
   ^

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

7 years ago[clang-diff] Simplify mapping
Johannes Altmanninger [Sat, 19 Aug 2017 17:53:01 +0000 (17:53 +0000)]
[clang-diff] Simplify mapping

Summary:
Until we find a decent heuristic on how to choose between multiple
identical trees, there is no point in supporting multiple mappings.

This also enables matching of nodes with parents of different types,
because there are many instances where this is appropriate.  For
example for and foreach statements; functions in the global or
other namespaces.

Reviewers: arphaman

Subscribers: klimek

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

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

7 years agoAdd clang-diff to tool_patterns in test/lit.cfg
Johannes Altmanninger [Sat, 19 Aug 2017 17:52:29 +0000 (17:52 +0000)]
Add clang-diff to tool_patterns in test/lit.cfg

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

7 years ago[clang-diff] Fix compiler warning
Johannes Altmanninger [Sat, 19 Aug 2017 17:12:25 +0000 (17:12 +0000)]
[clang-diff] Fix compiler warning

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

7 years ago[clang-diff] Add HTML side-by-side diff output
Johannes Altmanninger [Sat, 19 Aug 2017 15:40:45 +0000 (15:40 +0000)]
[clang-diff] Add HTML side-by-side diff output

Reviewers: arphaman

Subscribers: mgorny

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

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

7 years ago[clang-diff] Fix warning about useless comparison
Johannes Altmanninger [Sat, 19 Aug 2017 13:29:44 +0000 (13:29 +0000)]
[clang-diff] Fix warning about useless comparison

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

7 years ago[clang-diff] Make printing of matches optional
Johannes Altmanninger [Sat, 19 Aug 2017 12:04:04 +0000 (12:04 +0000)]
[clang-diff] Make printing of matches optional

Reviewers: arphaman

Subscribers: klimek

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

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

7 years ago[CFG] Add LoopExit information to CFG
Peter Szecsi [Sat, 19 Aug 2017 11:19:16 +0000 (11:19 +0000)]
[CFG] Add LoopExit information to CFG

This patch introduces a new CFG element CFGLoopExit that indicate when a loop
ends. It does not deal with returnStmts yet (left it as a TODO).
It hidden behind a new analyzer-config flag called cfg-loopexit (false by
default).
Test cases added.

The main purpose of this patch right know is to make loop unrolling and loop
widening easier and more efficient. However, this information can be useful for
future improvements in the StaticAnalyzer core too.

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

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

7 years ago[StaticAnalyzer] LoopUnrolling: Exclude cases where the counter is escaped before...
Peter Szecsi [Sat, 19 Aug 2017 10:24:52 +0000 (10:24 +0000)]
[StaticAnalyzer] LoopUnrolling: Exclude cases where the counter is escaped before the loop

Adding escape check for the counter variable of the loop.
It is achieved by jumping back on the ExplodedGraph to its declStmt.

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

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

7 years ago[clang-diff] Fix test
Johannes Altmanninger [Sat, 19 Aug 2017 10:05:24 +0000 (10:05 +0000)]
[clang-diff] Fix test

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

7 years ago[clang-diff] Add option to dump the AST, one node per line
Johannes Altmanninger [Sat, 19 Aug 2017 09:36:14 +0000 (09:36 +0000)]
[clang-diff] Add option to dump the AST, one node per line

Summary:
This is done with -ast-dump; the JSON variant has been renamed to
-ast-dump-json.

Reviewers: arphaman

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

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

7 years ago[c++2a] Implement P0409R2 - Allow lambda capture [=,this] (by hamzasood)
Faisal Vali [Sat, 19 Aug 2017 03:43:07 +0000 (03:43 +0000)]
[c++2a] Implement P0409R2 - Allow lambda capture [=,this] (by hamzasood)

This patch, by hamzasood, implements P0409R2, and allows [=, this] pre-C++2a as an extension (with appropriate warnings) for consistency.

https://reviews.llvm.org/D36572

Thanks Hamza!

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

7 years agoRevert "Revert "[clang-diff] Move printing of matches and changes to clang-diff""
Johannes Altmanninger [Sat, 19 Aug 2017 02:56:35 +0000 (02:56 +0000)]
Revert "Revert "[clang-diff] Move printing of matches and changes to clang-diff""

Fix build by renaming ChangeKind -> Change

This reverts commit 0c78c5729f29315d7945988efd048c0cb86c07ce.

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

7 years ago[clang-diff] Fix test for python 3
Johannes Altmanninger [Sat, 19 Aug 2017 01:34:24 +0000 (01:34 +0000)]
[clang-diff] Fix test for python 3

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

7 years agoRevert "Revert "[clang-diff] Move the JSON export function to clang-diff""
Johannes Altmanninger [Sat, 19 Aug 2017 00:57:38 +0000 (00:57 +0000)]
Revert "Revert "[clang-diff] Move the JSON export function to clang-diff""

This reverts commit eac4c13ac9ea8f12bc049e040c7b9c8a517f54e7, the
original commit *should* not have caused the build failure.

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

7 years agoRevert "[clang-diff] Move the JSON export function to clang-diff"
Vlad Tsyrklevich [Fri, 18 Aug 2017 23:21:11 +0000 (23:21 +0000)]
Revert "[clang-diff] Move the JSON export function to clang-diff"

This reverts commit r311199, it was causing widespread build failures.

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

7 years agoRevert "[clang-diff] Move printing of matches and changes to clang-diff"
Vlad Tsyrklevich [Fri, 18 Aug 2017 23:21:10 +0000 (23:21 +0000)]
Revert "[clang-diff] Move printing of matches and changes to clang-diff"

This reverts commit r311200, it was causing widespread build failures.

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

7 years ago[clang-diff] Move printing of matches and changes to clang-diff
Johannes Altmanninger [Fri, 18 Aug 2017 21:26:34 +0000 (21:26 +0000)]
[clang-diff] Move printing of matches and changes to clang-diff

Summary:
This also changes the output order of the changes. Now the matches are
printed in pre-order, intertwined with insertions, updates, and moves.
Deletions are printed afterwards.

Reviewers: arphaman

Subscribers: klimek

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

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

7 years ago[clang-diff] Move the JSON export function to clang-diff
Johannes Altmanninger [Fri, 18 Aug 2017 21:26:13 +0000 (21:26 +0000)]
[clang-diff] Move the JSON export function to clang-diff

Reviewers: arphaman

Subscribers: klimek

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

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

7 years ago[Sema] Don't emit -Wunguarded-availability for switch cases
Erik Pilkington [Fri, 18 Aug 2017 20:20:56 +0000 (20:20 +0000)]
[Sema] Don't emit -Wunguarded-availability for switch cases

This made it awkward to switch over an enum where some entries
are partial and is unlikley to catch any bugs.

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

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

7 years ago[SanitizerCoverage] Add stack depth tracing instrumentation.
Matt Morehouse [Fri, 18 Aug 2017 18:43:30 +0000 (18:43 +0000)]
[SanitizerCoverage] Add stack depth tracing instrumentation.

Summary:
Augment SanitizerCoverage to insert maximum stack depth tracing for
use by libFuzzer.  The new instrumentation is enabled by the flag
-fsanitize-coverage=stack-depth and is compatible with the existing
trace-pc-guard coverage.  The user must also declare the following
global variable in their code:
  thread_local uintptr_t __sancov_lowest_stack

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

Reviewers: vitalybuka, kcc

Reviewed By: vitalybuka

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

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

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

7 years ago[clang-proto-fuzzer] Allow user-specified compiler arguments.
Matt Morehouse [Fri, 18 Aug 2017 18:34:39 +0000 (18:34 +0000)]
[clang-proto-fuzzer] Allow user-specified compiler arguments.

Summary:
Arguments can be specified after -ignore_remaining_args=1 to modify
the compiler invocation.  For example, the following command-line
will fuzz LLVM with a custom optimization level and target triple:
  clang-proto-fuzzer CORPUS/ -ignore_remaining_args -O3 \
      -triple arm64-apple-ios9

Reviewers: vitalybuka, kcc

Reviewed By: vitalybuka

Subscribers: aemerson, cfe-commits, kristof.beyls

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

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

7 years ago[analyzer] Fix modeling of constructors
Alexander Shaposhnikov [Fri, 18 Aug 2017 18:20:43 +0000 (18:20 +0000)]
[analyzer] Fix modeling of constructors

This diff fixes analyzer's crash (triggered assert) on the newly added test case.
The assert being discussed is assert(!B.lookup(R, BindingKey::Direct))
in lib/StaticAnalyzer/Core/RegionStore.cpp, however the root cause is different.
For classes with empty bases the offsets might be tricky.
For example, let's assume we have
 struct S: NonEmptyBase, EmptyBase {
     ...
 };
In this case Clang applies empty base class optimization and
the offset of EmptyBase will be 0, it can be verified via
clang -cc1 -x c++ -v -fdump-record-layouts main.cpp -emit-llvm -o /dev/null.
When the analyzer tries to perform zero initialization of EmptyBase
it will hit the assert because that region
has already been "written" by the constructor of NonEmptyBase.

Test plan:
make check-all

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

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

7 years agoAMDGPU: Rename r600-mcpu.cl->amdgpu-mcpu.cl
Konstantin Zhuravlyov [Fri, 18 Aug 2017 17:29:07 +0000 (17:29 +0000)]
AMDGPU: Rename r600-mcpu.cl->amdgpu-mcpu.cl

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

7 years ago[clang-diff] Add commandline arguments.
Johannes Altmanninger [Fri, 18 Aug 2017 16:34:22 +0000 (16:34 +0000)]
[clang-diff] Add commandline arguments.

Summary:
Support command line options for build path and extra arguments
This emulates the options accepted by clang tools that use CommonOptionsParser.

Add a flag for controlling the maximum size parameter for bottom up matching.

Reviewers: arphaman

Subscribers: klimek

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

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

7 years ago[clang-diff] Fix some errors and inconsistencies
Johannes Altmanninger [Fri, 18 Aug 2017 16:34:15 +0000 (16:34 +0000)]
[clang-diff] Fix some errors and inconsistencies

Fix to the computation of the rightmost descendant.

Prevents root nodes from being mapped if they are already mapped.  This
only makes a difference when we compare AST Nodes other than entire
translation units, a feature which still has to be tested.

Reviewers: arphaman

Subscribers: klimek

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

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

7 years ago[CommonOptionsParser] Expose ArgumentsAdjustingCompilationDatabase
Johannes Altmanninger [Fri, 18 Aug 2017 16:21:08 +0000 (16:21 +0000)]
[CommonOptionsParser] Expose ArgumentsAdjustingCompilationDatabase

This is useful for tools such as clang-diff which do not use
CommonOptionsParser due to the need for multiple compilation databases.

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