platform/upstream/llvm.git
5 years ago[analyzer] [NFC] Move methods for dumping the coverage in HTMLDiagnostics into the...
George Karpenkov [Fri, 7 Sep 2018 22:13:35 +0000 (22:13 +0000)]
[analyzer] [NFC] Move methods for dumping the coverage in HTMLDiagnostics into the class

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

llvm-svn: 341724

5 years ago[analyzer] [NFC] Use StringRef when returning a large string literal in HTMLDiagnostics
George Karpenkov [Fri, 7 Sep 2018 22:13:15 +0000 (22:13 +0000)]
[analyzer] [NFC] Use StringRef when returning a large string literal in HTMLDiagnostics

(NB: could be a clang-tidy / analyzer check)

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

llvm-svn: 341723

5 years ago[analyzer] Remove the "postponed" hack, deal with derived symbols using an extra map
George Karpenkov [Fri, 7 Sep 2018 22:07:57 +0000 (22:07 +0000)]
[analyzer] Remove the "postponed" hack, deal with derived symbols using an extra map

The "derived" symbols indicate children fields of a larger symbol.
As parents do not have pointers to their children, the garbage
collection algorithm the analyzer currently uses adds such symbols into
a "postponed" category, and then keeps running through the worklist
until the fixed point is reached.

The current patch rectifies that by instead using a helper map which
stores pointers from parents to children, so that no fixed point
calculation is necessary.

The current patch yields ~5% improvement in running time on sqlite.

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

llvm-svn: 341722

5 years ago[clang-tidy/ObjC] Update list of acronyms in PropertyDeclarationCheck
Ben Hamilton [Fri, 7 Sep 2018 22:03:48 +0000 (22:03 +0000)]
[clang-tidy/ObjC] Update list of acronyms in PropertyDeclarationCheck

Summary: This adds a few common acronyms we found were missing from PropertyDeclarationCheck.

Reviewers: Wizard, hokein

Reviewed By: hokein

Subscribers: cfe-commits

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

llvm-svn: 341721

5 years ago[clang-tidy/ObjC] Update list of acronyms in PropertyDeclarationCheck
Ben Hamilton [Fri, 7 Sep 2018 22:02:38 +0000 (22:02 +0000)]
[clang-tidy/ObjC] Update list of acronyms in PropertyDeclarationCheck

Summary: This adds a few common acronyms we found were missing from PropertyDeclarationCheck.

Reviewers: Wizard, hokein

Subscribers: cfe-commits

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

llvm-svn: 341720

5 years agoRevert "Revert "Revert "Revert "[analyzer] Add coverage information to plist output...
George Karpenkov [Fri, 7 Sep 2018 21:58:24 +0000 (21:58 +0000)]
Revert "Revert "Revert "Revert "[analyzer] Add coverage information to plist output, update tests""""

This reverts commit 2f5d71d9fa135be86bb299e7d773036e50bf1df6.

Hopefully fixing tests on Windows.

llvm-svn: 341719

5 years ago[WebAssembly] v8x16.shuffle
Thomas Lively [Fri, 7 Sep 2018 21:54:46 +0000 (21:54 +0000)]
[WebAssembly] v8x16.shuffle

Summary:
Since the shuffle mask is not exposed as an operand in the native ISel
DAG, create a new WebAssembly ISD node exposing the mask. The mask is
lowered as sixteen immediate byte indices no matter what type the
original vector shuffle was operating on.

This CL depends on D51656

Reviewers: aheejin, dschuff

Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits

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

llvm-svn: 341718

5 years ago[benchmark] Fix flags used to compile benchmark library with clang-cl
Reid Kleckner [Fri, 7 Sep 2018 21:47:25 +0000 (21:47 +0000)]
[benchmark] Fix flags used to compile benchmark library with clang-cl

`MSVC` is true for clang-cl, but `"${CMAKE_CXX_COMPILER_ID}" STREQUAL
"MSVC"` is false, so we would enable -Wall, which means -Weverything
with clang-cl, and we get tons of undesired warnings.

Use the simpler condition to fix things.

llvm-svn: 341717

5 years ago[benchmark] Re-enable benchmarks on all platforms including Windows
Reid Kleckner [Fri, 7 Sep 2018 21:47:00 +0000 (21:47 +0000)]
[benchmark] Re-enable benchmarks on all platforms including Windows

The assertion in MCCodeView.cpp was resolved in r340878.

This reverts both r340905 and r340836, making benchmarks build by
default everywhere.

llvm-svn: 341716

5 years ago[InstCombine][x86] add tests for possible blendv transform (PR38814); NFC
Sanjay Patel [Fri, 7 Sep 2018 21:40:41 +0000 (21:40 +0000)]
[InstCombine][x86] add tests for possible blendv transform (PR38814); NFC

llvm-svn: 341715

5 years ago[Disassembler] Run ARM-specific tests only if the ARM backend is built.
Davide Italiano [Fri, 7 Sep 2018 21:36:21 +0000 (21:36 +0000)]
[Disassembler] Run ARM-specific tests only if the ARM backend is built.

<rdar://problem/44239070>

llvm-svn: 341714

5 years ago[AST] Generalize argument specific aliasing
Philip Reames [Fri, 7 Sep 2018 21:36:11 +0000 (21:36 +0000)]
[AST] Generalize argument specific aliasing

AliasSetTracker has special case handling for memset, memcpy and memmove which pre-existed argmemonly on functions and readonly and writeonly on arguments. This patch generalizes it using the AA infrastructure to any call correctly annotated.

The motivation here is to cut down on confusion, not performance per se. For most instructions, there is a direct mapping to alias set. However, this is not guaranteed by the interface and was not in fact true for these three intrinsics *and only these three intrinsics*. I kept getting myself confused about this invariant, so I figured it would be good to clearly distinguish between a instructions and alias sets. Calls happened to be an easy target.

The nice side effect is that custom implementations of memset/memcpy/memmove - including wrappers discovered by IPO - can now be optimized the same as builts by LICM.

Note: The actual removal of the memset/memtransfer specific handling will happen in a follow on NFC patch.  It was originally part of this one, but separate for ease of review and rebase.

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

llvm-svn: 341713

5 years ago[codeview] Add .cv_string directive for testing purposes
Reid Kleckner [Fri, 7 Sep 2018 21:30:52 +0000 (21:30 +0000)]
[codeview] Add .cv_string directive for testing purposes

The main use case for this directive is to allow assembly writers to
write their own FPO data strings without going through the .cv_fpo*
directive family.

I'm experimenting with different RPN programs to fix PR38857, and I
figured I should go ahead and make this directive permanent.

llvm-svn: 341712

5 years ago[X86] Add codegen tests for narrow PADDUS/PSUBUS patterns for PR38691.
Craig Topper [Fri, 7 Sep 2018 21:28:46 +0000 (21:28 +0000)]
[X86] Add codegen tests for narrow PADDUS/PSUBUS patterns for PR38691.

llvm-svn: 341711

5 years agoMake -Watomic-alignment say whether the atomic operation was oversized
Richard Smith [Fri, 7 Sep 2018 21:24:27 +0000 (21:24 +0000)]
Make -Watomic-alignment say whether the atomic operation was oversized
or misaligned.

llvm-svn: 341710

5 years ago[MemorySSA] Update MemoryPhi wiring for block splitting to consider if identical...
Alina Sbirlea [Fri, 7 Sep 2018 21:14:48 +0000 (21:14 +0000)]
[MemorySSA] Update MemoryPhi wiring for block splitting to consider if identical edges were merged.

Summary:
Block splitting is done with either identical edges being merged, or not.
Only critical edges can be split without merging identical edges based on an option.
Teach the memoryssa updater to take this into account: for the same edge between two blocks only move one entry from the Phi in Old to the new Phi in New.

Reviewers: george.burgess.iv

Subscribers: sanjoy, jlebar, Prazek, llvm-commits

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

llvm-svn: 341709

5 years ago[InstCombine] narrow vector select with padded condition and extracted result (PR38691)
Sanjay Patel [Fri, 7 Sep 2018 21:03:34 +0000 (21:03 +0000)]
[InstCombine] narrow vector select with padded condition and extracted result (PR38691)

shuf (sel (shuf NarrowCond, undef, WideMask), X, Y), undef, NarrowMask) -->
sel NarrowCond, (shuf X, undef, NarrowMask), (shuf Y, undef, NarrowMask)

The motivating case from:
https://bugs.llvm.org/show_bug.cgi?id=38691
...is the last regression test. In that case, we're just left with the narrow select.

Note that if we do create new shuffles, they use the existing extraction identity mask,
so there's no danger that this transform creates arbitrary shuffles.

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

llvm-svn: 341708

5 years ago[WebAssembly] Change SIMD lane indices to vec_i8imm_op
Thomas Lively [Fri, 7 Sep 2018 20:59:50 +0000 (20:59 +0000)]
[WebAssembly] Change SIMD lane indices to vec_i8imm_op

Summary: To explicitly opt out of LEB encoding for these immediates.

Reviewers: aheejin, dschuff

Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits

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

llvm-svn: 341707

5 years ago[AArch64] Support reserving x1-7 registers.
Nick Desaulniers [Fri, 7 Sep 2018 20:58:57 +0000 (20:58 +0000)]
[AArch64] Support reserving x1-7 registers.

Summary:
Reserving registers x1-7 is used to support CONFIG_ARM64_LSE_ATOMICS in Linux kernel. This change adds support for reserving registers x1 through x7.

Reviewers: javed.absar, phosek, srhines, nickdesaulniers, efriedma

Reviewed By: nickdesaulniers, efriedma

Subscribers: niravd, jfb, manojgupta, nickdesaulniers, jyknight, efriedma, kristof.beyls, llvm-commits

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

llvm-svn: 341706

5 years ago[X86] Don't create ZERO_EXTEND_INREG/SIGN_EXTEND_INREG for v1iX vectors.
Craig Topper [Fri, 7 Sep 2018 20:56:03 +0000 (20:56 +0000)]
[X86] Don't create ZERO_EXTEND_INREG/SIGN_EXTEND_INREG for v1iX vectors.

The generic type legalizer will scalarize vXi1 instructions getting rid of the vector entirely. Creating wider vector instructions is just going to prevent that.

llvm-svn: 341705

5 years ago[X86] Don't create X86ISD::AVG nodes from v1iX vectors.
Craig Topper [Fri, 7 Sep 2018 20:56:01 +0000 (20:56 +0000)]
[X86] Don't create X86ISD::AVG nodes from v1iX vectors.

The type legalizer will try to scalarize this and fail.

It looks like there's some other v1iX oddities out there too since we still generated some vector instructions.

llvm-svn: 341704

5 years ago[OpenMP] Update copyright to 2018
Jonathan Peyton [Fri, 7 Sep 2018 20:33:35 +0000 (20:33 +0000)]
[OpenMP] Update copyright to 2018

Better late than never

llvm-svn: 341703

5 years ago[PGO] Fix some style issue of ControlHeightReduction
Fangrui Song [Fri, 7 Sep 2018 20:23:15 +0000 (20:23 +0000)]
[PGO] Fix some style issue of ControlHeightReduction

Reviewers: yamauchi

Reviewed By: yamauchi

Subscribers: llvm-commits

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

llvm-svn: 341702

5 years ago[CMake] Fix LLVM_ENABLE_LTO option on Windows
Alexandre Ganea [Fri, 7 Sep 2018 20:07:36 +0000 (20:07 +0000)]
[CMake] Fix LLVM_ENABLE_LTO option on Windows

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

llvm-svn: 341701

5 years agoPR38870: Add warning for zero-width unicode characters appearing in
Richard Smith [Fri, 7 Sep 2018 19:25:39 +0000 (19:25 +0000)]
PR38870: Add warning for zero-width unicode characters appearing in
identifiers.

llvm-svn: 341700

5 years ago[X86] Custom emit __builtin_rdtscp so we can emit an explicit store for the out parameter
Craig Topper [Fri, 7 Sep 2018 19:14:24 +0000 (19:14 +0000)]
[X86] Custom emit __builtin_rdtscp so we can emit an explicit store for the out parameter

This is the clang side of D51803. The llvm intrinsic now returns two results. So we need to emit an explicit store in IR for the out parameter. This is similar to addcarry/subborrow/rdrand/rdseed.

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

llvm-svn: 341699

5 years ago[X86] Modify the the rdtscp intrinsic to return values instead of taking a pointer...
Craig Topper [Fri, 7 Sep 2018 19:14:15 +0000 (19:14 +0000)]
[X86] Modify the the rdtscp intrinsic to return values instead of taking a pointer argument

Similar to what was recently done for addcarry/subborrow and has been done for rdrand/rdseed for a while. It's better to use two results and an explicit store in IR when the store isn't part of the semantics of the instruction. This allows store->load forwarding to happen in the middle end. Or the store to be removed if its never loaded.

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

llvm-svn: 341698

5 years agowarn_stdlibcxx_not_found: suggest '-stdlib=libc++' instead of '-std'
Alex Lorenz [Fri, 7 Sep 2018 18:59:45 +0000 (18:59 +0000)]
warn_stdlibcxx_not_found: suggest '-stdlib=libc++' instead of '-std'

Addresses first post-commit feedback for r335081 from Nico

llvm-svn: 341697

5 years agoAdd the Disassembler unit test dir.
Jason Molenda [Fri, 7 Sep 2018 18:51:10 +0000 (18:51 +0000)]
Add the Disassembler unit test dir.

llvm-svn: 341696

5 years ago[codeview] Improve readobj FPO dumper and pdbutil register names
Reid Kleckner [Fri, 7 Sep 2018 18:48:27 +0000 (18:48 +0000)]
[codeview] Improve readobj FPO dumper and pdbutil register names

The improved dumping helps me investigate PR38857.

llvm-svn: 341695

5 years ago[OpenMP] Change hint parameter type for critical to uint32_t
Jonathan Peyton [Fri, 7 Sep 2018 18:46:40 +0000 (18:46 +0000)]
[OpenMP] Change hint parameter type for critical to uint32_t

Add atomic hint flags to the enum.
The hint parameter type was changed to uint32_t in __kmpc_critical_with_hint()

Patch by Olga Malysheva

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

llvm-svn: 341694

5 years ago[OpenMP] Synchronization hint constants added to headers
Jonathan Peyton [Fri, 7 Sep 2018 18:45:13 +0000 (18:45 +0000)]
[OpenMP] Synchronization hint constants added to headers

ident flags reserved for atomic hints.
This patch adds omp_sync_hint_t to omp.h and omp_sync_hint_kind to omp_lib.h.
For better maintainability the list of macros for ident flags was replaced with
a enum. The new KMP_IDENT_ATOMIC_HINT_MASK was added to the enum to
support possible future atomic hints.

Also fix omp_lib.h.var to be under 72 chars again after 5.0 OpenMP Memory commit

Patch by Olga Malysheva

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

llvm-svn: 341693

5 years ago[PGO][CHR] Build/warning fix
Hiroshi Yamauchi [Fri, 7 Sep 2018 18:44:53 +0000 (18:44 +0000)]
[PGO][CHR] Build/warning fix

llvm-svn: 341692

5 years ago[RISCV] Fix crash in decoding instruction with unknown floating point rounding mode
Ana Pazos [Fri, 7 Sep 2018 18:43:43 +0000 (18:43 +0000)]
[RISCV] Fix crash in decoding instruction with unknown floating point rounding mode

Summary:
Instead of crashing in printFRMArg, decode and warn about invalid instruction.

This bug was uncovered by a LLVM MC Disassembler Protocol Buffer Fuzzer
for the RISC-V assembly language.

Reviewers: asb

Reviewed By: asb

Subscribers: rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, mgrang, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, asb

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

llvm-svn: 341691

5 years agoNFC: Move Searcher::Depth into lldb-enumerations as SearchDepth.
Jim Ingham [Fri, 7 Sep 2018 18:43:04 +0000 (18:43 +0000)]
NFC: Move Searcher::Depth into lldb-enumerations as SearchDepth.

In a subsequent commit, I will need to expose the search depth
to the SB API's, so I'm moving this define into lldb-enumerations
where it will get added to the lldb module.

llvm-svn: 341690

5 years ago[Error] Reintroduce type validation in createFileError()
Alexandre Ganea [Fri, 7 Sep 2018 18:32:59 +0000 (18:32 +0000)]
[Error] Reintroduce type validation in createFileError()

This prevents from using ErrorSuccess as an argument to createFileError().

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

llvm-svn: 341689

5 years ago[llvm-dwp] Clean up tests X86/*.test
Fangrui Song [Fri, 7 Sep 2018 18:29:20 +0000 (18:29 +0000)]
[llvm-dwp] Clean up tests X86/*.test

llvm-svn: 341688

5 years ago[OpenMP] Initial implementation of OMP 5.0 Memory Management routines
Jonathan Peyton [Fri, 7 Sep 2018 18:25:49 +0000 (18:25 +0000)]
[OpenMP] Initial implementation of OMP 5.0 Memory Management routines

Implemented omp_alloc, omp_free, omp_{set,get}_default_allocator entries,
and OMP_ALLOCATOR environment variable.

Added support for HBW memory on Linux if libmemkind.so library is accessible
(dynamic library only, no support for static libraries).
Only used stable API (hbwmalloc) of the memkind library
though we may consider using experimental API in future.

The ICV def-allocator-var is implemented per implicit task similar to
place-partition-var.  In the absence of a requested allocator, the uses the
default allocator.

Predefined allocators (the only ones currently available) are made similar
for C and Fortran, - pointers (long integers) with values 1 to 8.

Patch by Andrey Churbanov

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

llvm-svn: 341687

5 years ago[RISCV] Fix AddressSanitizer heap-buffer-overflow in disassembling
Ana Pazos [Fri, 7 Sep 2018 18:23:19 +0000 (18:23 +0000)]
[RISCV] Fix AddressSanitizer heap-buffer-overflow in disassembling

Summary:
RISCVDisassembler should check number of bytes available before reading them.
Crash noticed when enabling -DLLVM_USE_SANITIZER=Address.

This bug was uncovered by a LLVM MC Disassembler Protocol Buffer Fuzzer for the RISC-V assembly language.

Reviewers: asb

Reviewed By: asb

Subscribers: rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, mgrang, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, asb

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

llvm-svn: 341686

5 years ago[Scalar] Commit the correct patch, forgot `git add`.
Davide Italiano [Fri, 7 Sep 2018 18:22:27 +0000 (18:22 +0000)]
[Scalar] Commit the correct patch, forgot `git add`.

<rdar://problem/44229924>

llvm-svn: 341685

5 years agoNFC: remove magic bool in LoopIdiomRecognize
JF Bastien [Fri, 7 Sep 2018 18:17:59 +0000 (18:17 +0000)]
NFC: remove magic bool in LoopIdiomRecognize

Use an enum class instead.

llvm-svn: 341684

5 years agoAdd input files to the "prepare swig bindings" step.
Jim Ingham [Fri, 7 Sep 2018 18:10:26 +0000 (18:10 +0000)]
Add input files to the "prepare swig bindings" step.

This build phase had no inputs, so you always had to manually
delete LLDBWrapPython.cpp to get it to rebuild.  Add the correct
inputs.

llvm-svn: 341683

5 years ago[Scalar] Fix undefined behaviour when converting double to long.
Davide Italiano [Fri, 7 Sep 2018 18:03:43 +0000 (18:03 +0000)]
[Scalar] Fix undefined behaviour when converting double to long.

This showed up in an Ubsan build of lldb (inside the CFAbsoluteTime
data formatter). As we only care about the bit pattern, we just
round to the nearest double, and truncate to a size that fits
in ulonglong_t.

<rdar://problem/44229924>

llvm-svn: 341682

5 years ago[PGO][CHR] Small cleanup.
Hiroshi Yamauchi [Fri, 7 Sep 2018 18:00:58 +0000 (18:00 +0000)]
[PGO][CHR] Small cleanup.

Summary:
Do away with demangling. It wasn't really necessary.
Declared some local functions to be static.

Reviewers: davidxl

Reviewed By: davidxl

Subscribers: llvm-commits

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

llvm-svn: 341681

5 years ago[Bindings][Go] Fixed go.test failure due to C-API argument type mismatch.
Kristina Brooks [Fri, 7 Sep 2018 17:33:43 +0000 (17:33 +0000)]
[Bindings][Go] Fixed go.test failure due to C-API argument type mismatch.

go.test was failing previously with error,
Command Output (stderr):
dibuilder.go:301: cannot use C.uint(t.Encoding) (type C.uint) as type
C.LLVMDWARFTypeEncoding in argument to func literal
This patch fixes the argument type.

Patch by Chirag (Chirag Patel)

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

llvm-svn: 341680

5 years agoutils/abtest: Refactor and add bisection method
Matthias Braun [Fri, 7 Sep 2018 17:08:44 +0000 (17:08 +0000)]
utils/abtest: Refactor and add bisection method

- Refactor/rewrite most of the code. Also make sure it passes
  pycodestyle/pyflakes now
- Add a new mode that performs bisection on the search space. This
  should be faster in the common case where there is only a small number
  of files or functions actually leading to failure.
  The previous sequential behavior can still be accessed via `--seq`.

llvm-svn: 341679

5 years ago[X86] Modify addcarry/subborrow builtins to emit an 2 result and intrinsic and an...
Craig Topper [Fri, 7 Sep 2018 16:58:57 +0000 (16:58 +0000)]
[X86] Modify addcarry/subborrow builtins to emit an 2 result and intrinsic and an store instruction.

This is the clang side of D51769. The llvm intrinsics now return two results instead of using an out parameter.

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

llvm-svn: 341678

5 years ago[X86] Change the addcarry and subborrow intrinsics to return 2 results and remove...
Craig Topper [Fri, 7 Sep 2018 16:58:39 +0000 (16:58 +0000)]
[X86] Change the addcarry and subborrow intrinsics to return 2 results and remove the pointer argument.

We should represent the store directly in IR instead. This gives the middle end a chance to remove it if it can see a load from the same address.

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

llvm-svn: 341677

5 years ago[X86] Use regular expressions to make test immune to register allocation changes.
Craig Topper [Fri, 7 Sep 2018 16:58:36 +0000 (16:58 +0000)]
[X86] Use regular expressions to make test immune to register allocation changes.

llvm-svn: 341676

5 years ago[X86] Teach X86DAGToDAGISel::foldLoadStoreIntoMemOperand to handle loads in operand...
Craig Topper [Fri, 7 Sep 2018 16:27:55 +0000 (16:27 +0000)]
[X86] Teach X86DAGToDAGISel::foldLoadStoreIntoMemOperand to handle loads in operand 1 of commutable operations.

Previously we only handled loads in operand 0, but nothing guarantees the load will be operand 0 for commutable operations.

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

llvm-svn: 341675

5 years ago[InstCombine] Fold (min/max ~X, Y) -> ~(max/min X, ~Y) when Y is freely invertible
Craig Topper [Fri, 7 Sep 2018 16:19:50 +0000 (16:19 +0000)]
[InstCombine] Fold (min/max ~X, Y) -> ~(max/min X, ~Y) when Y is freely invertible

If the ~X wasn't able to simplify above the max/min, we might be able to simplify it by moving it below the max/min.

I had to modify the ~(min/max ~X, Y) transform to prevent getting stuck in a loop when we saw the new ~(max/min X, ~Y) before the ~Y had been folded away to remove the new not.

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

llvm-svn: 341674

5 years ago[LV] Fix code gen for conditionally executed loads and stores
Anna Thomas [Fri, 7 Sep 2018 15:53:48 +0000 (15:53 +0000)]
[LV] Fix code gen for conditionally executed loads and stores

Fix a latent bug in loop vectorizer which generates incorrect code for
memory accesses that are executed conditionally. As pointed in review,
this bug definitely affects uniform loads and may affect conditional
stores that should have turned into scatters as well).

The code gen for conditionally executed uniform loads on architectures
that support masked gather instructions is broken.

Without this patch, we were unconditionally executing the *conditional*
load in the vectorized version.

This patch does the following:
1. Uniform conditional loads on architectures with gather support will
   have correct code generated. In particular, the cost model
   (setCostBasedWideningDecision) is fixed.
2. For the recipes which are handled after the widening decision is set,
   we use the isScalarWithPredication(I, VF) form which is added in the
   patch.

3. Fix the vectorization cost model for scalarization
   (getMemInstScalarizationCost): implement and use isPredicatedInst to
   identify *all* predicated instructions, not just scalar+predicated. So,
   now the cost for scalarization will be increased for maskedloads/stores
   and gather/scatter operations. In short, we should be choosing the
   gather/scatter in place of scalarization on archs where it is
   profitable.
4. We needed to weaken the assert in useEmulatedMaskMemRefHack.

Reviewers: Ayal, hsaito, mkuper

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

llvm-svn: 341673

5 years agoMachO: Change getString16() back to inline function
Tom Stellard [Fri, 7 Sep 2018 15:51:52 +0000 (15:51 +0000)]
MachO: Change getString16() back to inline function

This was accidentally changed in r341670.

llvm-svn: 341672

5 years ago[asan] Update a vector's storage annotation during destruction. Reviewed as https...
Marshall Clow [Fri, 7 Sep 2018 15:47:59 +0000 (15:47 +0000)]
[asan] Update a vector's storage annotation during destruction. Reviewed as https://reviews.llvm.org/D50101. Thanks to bobsayshilol (Ben) for the patch.

llvm-svn: 341671

5 years agoMachO: Fix out-of-bounds memory access in getString16
Tom Stellard [Fri, 7 Sep 2018 15:42:01 +0000 (15:42 +0000)]
MachO: Fix out-of-bounds memory access in getString16

Summary:
This fixes the following tests when gcc is compiled with gcc8:

lld :: mach-o/do-not-emit-unwind-fde-arm64.yaml
lld :: mach-o/eh-frame-relocs-arm64.yaml

llvm.org/PR38096

Reviewers: lhames, kledzik, javed.absar

Subscribers: kristof.beyls, llvm-commits

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

llvm-svn: 341670

5 years agoHot cold splitting pass
Aditya Kumar [Fri, 7 Sep 2018 15:03:49 +0000 (15:03 +0000)]
Hot cold splitting pass

Find cold blocks based on profile information (or optionally with static analysis).
Forward propagate profile information to all cold-blocks.
Outline a cold region.
Set calling conv and prof hint for the callsite of the outlined function.

Worked in collaboration with: Sebastian Pop <s.pop@samsung.com>
Differential Revision: https://reviews.llvm.org/D50658

llvm-svn: 341669

5 years agoRevert "[OPENMP][NVPTX] Disable runtime-type info for CUDA devices."
Alexey Bataev [Fri, 7 Sep 2018 14:50:25 +0000 (14:50 +0000)]
Revert "[OPENMP][NVPTX] Disable runtime-type info for CUDA devices."

Still need the RTTI for NVPTX target to pass sema checks.

llvm-svn: 341668

5 years ago[ARC] Make char unsigned by default
Alexander Polyakov [Fri, 7 Sep 2018 14:45:32 +0000 (14:45 +0000)]
[ARC] Make char unsigned by default

Summary: This patch specifies 'char' default sign on ARC.

Reviewers: tatyana-krasnukha, clayborg

Reviewed By: tatyana-krasnukha, clayborg

Subscribers: clayborg, lldb-commits

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

llvm-svn: 341667

5 years ago[InstCombine] Do not fold scalar ops over select with vector condition.
Florian Hahn [Fri, 7 Sep 2018 14:40:06 +0000 (14:40 +0000)]
[InstCombine] Do not fold scalar ops over select with vector condition.

If OtherOpT or OtherOpF have scalar types and the condition is a vector,
we would create an invalid select.

Reviewers: spatel, john.brawn, mssimpso, craig.topper

Reviewed By: spatel

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

llvm-svn: 341666

5 years ago[CodeComplete] Clearly distinguish signature help and code completion.
Ilya Biryukov [Fri, 7 Sep 2018 14:04:39 +0000 (14:04 +0000)]
[CodeComplete] Clearly distinguish signature help and code completion.

Summary:
Code completion in clang is actually a mix of two features:
- Code completion is a familiar feature. Results are exposed via the
  CodeCompleteConsumer::ProcessCodeCompleteResults callback.
- Signature help figures out if the current expression is an argument of
  some function call and shows corresponding signatures if so.
  Results are exposed via CodeCompleteConsumer::ProcessOverloadCandidates.

This patch refactors the implementation to untangle those two from each
other and makes some naming tweaks to avoid confusion when reading the
code.

The refactoring is required for signature help fixes, see D51038.

The only intended behavior change is the order of callbacks.
ProcessOverloadCandidates is now called before ProcessCodeCompleteResults.

Reviewers: sammccall, kadircet

Reviewed By: sammccall

Subscribers: cfe-commits

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

llvm-svn: 341660

5 years ago[DebugInfo] Handle stack slot offsets for spilled sub-registers in LDV
David Stenberg [Fri, 7 Sep 2018 13:54:07 +0000 (13:54 +0000)]
[DebugInfo] Handle stack slot offsets for spilled sub-registers in LDV

Summary:
Extend LDV so that stack slot offsets for spilled sub-registers
are added to the emitted debug locations. This is accomplished
by querying InstrInfo::getStackSlotRange().

With this change, LDV will add a DW_OP_plus_uconst operation to
the expression if a sub-register is spilled. Later on, PEI will
add an offset operation for the stack slot, meaning that we will
get expressions of the forms:

 * {DW_OP_constu #fp-offset, DW_OP_minus,
    DW_OP_plus_uconst #subreg-offset}

 * {DW_OP_plus_const #fp-offset,
    DW_OP_minus, DW_OP_plus_uconst #subreg-offset}

The two offset operations should ideally be merged.

Reviewers: rnk, aprantl, stoklund

Reviewed By: aprantl

Subscribers: dblaikie, bjope, nemanjai, JDevlieghere, llvm-commits

Tags: #debug-info

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

llvm-svn: 341659

5 years agoAdd support for getRegisterByName.
Sid Manning [Fri, 7 Sep 2018 13:36:21 +0000 (13:36 +0000)]
Add support for getRegisterByName.

Support required to build the Hexagon Linux kernel.

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

llvm-svn: 341658

5 years ago[X86][SSE] Add additional fadd/fsub(x, bitcast_fneg(y)) tests with different integer...
Simon Pilgrim [Fri, 7 Sep 2018 13:27:07 +0000 (13:27 +0000)]
[X86][SSE] Add additional fadd/fsub(x, bitcast_fneg(y)) tests with different integer bitwidths

llvm-svn: 341657

5 years ago[libclang] Return the proper pointee type for 'auto' deduced to pointer
Ivan Donchevskii [Fri, 7 Sep 2018 13:23:51 +0000 (13:23 +0000)]
[libclang] Return the proper pointee type for 'auto' deduced to pointer

Currently the resulting type is always invalid in such case.

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

llvm-svn: 341656

5 years agoDifferential Revision: https://reviews.llvm.org/D50246
Kristina Brooks [Fri, 7 Sep 2018 13:03:31 +0000 (13:03 +0000)]
Differential Revision: https://reviews.llvm.org/D50246

[RISCV] Add support for computing sysroot for riscv32-unknown-elf

Extends r338385 to allow the driver to compute the sysroot when an explicit path is not provided. This allows the linker to find C runtime files and the correct include directory for header files.

Patch by lewis-revill (Lewis Revill)

llvm-svn: 341655

5 years agoReland r341390 clang-cl: Pass /Brepro to linker if it was passed to the compiler
Nico Weber [Fri, 7 Sep 2018 12:47:02 +0000 (12:47 +0000)]
Reland r341390 clang-cl: Pass /Brepro to linker if it was passed to the compiler

The test was missing  '--' on mac as pointed out by -Wslash-u-filename:
<stdin>:5:69: note: possible intended match here
clang: warning: '/Users/thakis/src/llvm-mono/clang/test/Driver/msvc-link.c' treated as the '/U' option [-Wslash-u-filename]

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

llvm-svn: 341654

5 years agoFix for https://bugs.llvm.org/show_bug.cgi?id=38839:
Andrey Churbanov [Fri, 7 Sep 2018 12:22:04 +0000 (12:22 +0000)]
Fix for https://bugs.llvm.org/show_bug.cgi?id=38839:

Changed style of declarations to be less than 72 char each.

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

llvm-svn: 341653

5 years ago[DAGCombiner] foldBitcastedFPLogic - Add basic vector support
Simon Pilgrim [Fri, 7 Sep 2018 12:13:45 +0000 (12:13 +0000)]
[DAGCombiner] foldBitcastedFPLogic - Add basic vector support

Add support for bitcasts from float type to an integer type of the same element bitwidth.

There maybe cases where we need to support different widths (e.g. as SSE __m128i is treated as v2i64) - but I haven't seen cases of this in the wild yet.

llvm-svn: 341652

5 years ago[NewGVN] Mark function as changed if we erase instructions.
Florian Hahn [Fri, 7 Sep 2018 11:41:34 +0000 (11:41 +0000)]
[NewGVN] Mark function as changed if we erase instructions.

Currently eliminateInstructions only returns true if any instruction got
replaced. In the test case for this patch, we eliminate the trivially
dead calls, for which eliminateInstructions not do a replacement and the
function is not marked as changed, which is why the inliner crashes
while traversing the call graph.

Alternatively we could also change eliminateInstructions to return true
in case we mark instructions for deletion, but that's slightly more code
and doing it at the place where the replacement happens seems safer.

Fixes PR37517.

Reviewers: davide, mcrosier, efriedma, bjope

Reviewed By: bjope

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

llvm-svn: 341651

5 years ago[X86][SSE] Add fadd/fsub(x, bitcast_fneg(y)) tests
Simon Pilgrim [Fri, 7 Sep 2018 11:24:43 +0000 (11:24 +0000)]
[X86][SSE] Add fadd/fsub(x, bitcast_fneg(y)) tests

Show missing vector support

llvm-svn: 341650

5 years ago[dsymutil] Prevent non-determinism due to threading.
Jonas Devlieghere [Fri, 7 Sep 2018 10:29:22 +0000 (10:29 +0000)]
[dsymutil] Prevent non-determinism due to threading.

Before this patch, analyzeContext called getCanonicalDIEOffset(), for
which the result depends on the timings of the setCanonicalDIEOffset()
calls in the cloneLambda. This can lead to slightly different output
between runs due to threading.

To prevent this from happening, we now record the output debug info size
after importing the modules (before any concurrent processing takes
place). This value, named the ModulesEndOffset is used to compare the
canonical DIE offset against. If the value is greater than this offset,
the canonical DIE offset has been updated during cloning, and should
therefore not be considered for pruning.

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

llvm-svn: 341649

5 years agoRevert "Revert "Revert "[analyzer] Add coverage information to plist output, update...
Simon Pilgrim [Fri, 7 Sep 2018 10:27:16 +0000 (10:27 +0000)]
Revert "Revert "Revert "[analyzer] Add coverage information to plist output, update tests"""

Reverts analyzer tests from rL341627 again as they still broke windows buildbots

llvm-svn: 341648

5 years ago[XRay] XRAY_NEVER_INSTRUMENT more functions, consolidate allocators
Dean Michael Berris [Fri, 7 Sep 2018 10:16:14 +0000 (10:16 +0000)]
[XRay] XRAY_NEVER_INSTRUMENT more functions, consolidate allocators

Summary:
In this change we apply `XRAY_NEVER_INSTRUMENT` to more functions in the
profiling implementation to ensure that these never get instrumented if
the compiler used to build the library is capable of doing XRay
instrumentation.

We also consolidate all the allocators into a single header
(xray_allocator.h) which sidestep the use of the internal allocator
implementation in sanitizer_common.

This addresses more cases mentioned in llvm.org/PR38577.

Reviewers: mboerger, eizan

Subscribers: llvm-commits

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

llvm-svn: 341647

5 years ago[MSan] don't access MsanCtorFunction when using KMSAN
Alexander Potapenko [Fri, 7 Sep 2018 09:56:36 +0000 (09:56 +0000)]
[MSan] don't access MsanCtorFunction when using KMSAN

MSan has found a use of uninitialized memory in MSan, fix it.

llvm-svn: 341646

5 years ago[clangd] Canonicalize include paths in clangd.
Eric Liu [Fri, 7 Sep 2018 09:40:36 +0000 (09:40 +0000)]
[clangd] Canonicalize include paths in clangd.

Get rid of "../"  and "../../".

llvm-svn: 341645

5 years agoReplaces __inline by __inline__ / C89 compatible
Diogo N. Sampaio [Fri, 7 Sep 2018 09:37:27 +0000 (09:37 +0000)]
Replaces __inline by __inline__ / C89 compatible

llvm-svn: 341644

5 years ago[clang-tidy] Abseil: Allow macros inside of absl to use internal absl things
Benjamin Kramer [Fri, 7 Sep 2018 09:25:23 +0000 (09:25 +0000)]
[clang-tidy] Abseil: Allow macros inside of absl to use internal absl things

llvm-svn: 341643

5 years agoARM: fix Thumb2 CodeGen for ldrex with folded frame-index.
Tim Northover [Fri, 7 Sep 2018 09:21:25 +0000 (09:21 +0000)]
ARM: fix Thumb2 CodeGen for ldrex with folded frame-index.

Because t2LDREX (& t2STREX) were marked as AddrModeNone, but did allow a
FrameIndex operand, rewriteT2FrameIndex asserted. This gives them a
proper addressing-mode and tells the rewriter about it so that encodable
offsets are exploited and others are rejected.

Should fix PR38828.

llvm-svn: 341642

5 years ago[MSan] add KMSAN support to Clang driver
Alexander Potapenko [Fri, 7 Sep 2018 09:21:09 +0000 (09:21 +0000)]
[MSan] add KMSAN support to Clang driver

Boilerplate code for using KMSAN instrumentation in Clang.

We add a new command line flag, -fsanitize=kernel-memory, with a
corresponding SanitizerKind::KernelMemory, which, along with
SanitizerKind::Memory, maps to the memory_sanitizer feature.

KMSAN is only supported on x86_64 Linux.

It's incompatible with other sanitizers, but supports code coverage
instrumentation.

llvm-svn: 341641

5 years ago[clangd] NFC: Document URIDistance
Kirill Bobyrev [Fri, 7 Sep 2018 09:18:58 +0000 (09:18 +0000)]
[clangd] NFC: Document URIDistance

`URIDistance` constructor should mention that `Sources` must contain
*absolute paths*, not URIs. This is not very clear when looking at the
interface, especially given that `distance(...)` accepts `URI`, not an
absolute path which can give the wrong impression.

Reviewed By: sammccall

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

llvm-svn: 341639

5 years ago[MSan] Define %clang_kmsan for KMSAN tests
Alexander Potapenko [Fri, 7 Sep 2018 09:17:12 +0000 (09:17 +0000)]
[MSan] Define %clang_kmsan for KMSAN tests

llvm-svn: 341638

5 years ago[MSan] Add KMSAN instrumentation to MSan pass
Alexander Potapenko [Fri, 7 Sep 2018 09:10:30 +0000 (09:10 +0000)]
[MSan] Add KMSAN instrumentation to MSan pass

Introduce the -msan-kernel flag, which enables the kernel instrumentation.

The main differences between KMSAN and MSan instrumentations are:

- KMSAN implies msan-track-origins=2, msan-keep-going=true;
- there're no explicit accesses to shadow and origin memory.
  Shadow and origin values for a particular X-byte memory location are
  read and written via pointers returned by
  __msan_metadata_ptr_for_load_X(u8 *addr) and
  __msan_store_shadow_origin_X(u8 *addr, uptr shadow, uptr origin);
- TLS variables are stored in a single struct in per-task storage. A call
  to a function returning that struct is inserted into every instrumented
  function before the entry block;
- __msan_warning() takes a 32-bit origin parameter;
- local variables are poisoned with __msan_poison_alloca() upon function
  entry and unpoisoned with __msan_unpoison_alloca() before leaving the
  function;
- the pass doesn't declare any global variables or add global constructors
  to the translation unit.

llvm-svn: 341637

5 years ago[AMDGPU] Preliminary patch for divergence driven instruction selection. Fold immediat...
Alexander Timofeev [Fri, 7 Sep 2018 09:05:34 +0000 (09:05 +0000)]
[AMDGPU] Preliminary patch for divergence driven instruction selection. Fold immediate SMRD offset.

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

Reviewer: rampitec
llvm-svn: 341636

5 years ago[llvm-objcopy] Dwarf .debug section compression support (zlib, zlib-gnu).
Puyan Lotfi [Fri, 7 Sep 2018 08:10:22 +0000 (08:10 +0000)]
[llvm-objcopy] Dwarf .debug section compression support (zlib, zlib-gnu).

  Third Attempt:
    - Alignment issues resolved.
    - zlib::isAvailable() detected.
    - ArrayRef misuse fixed.

  Usage:

  llvm-objcopy --compress-debug-sections=zlib foo.o
  llvm-objcopy --compress-debug-sections=zlib-gnu foo.o

  In both cases the debug section contents is compressed with zlib. In the GNU
  style case the header is the "ZLIB" magic string followed by the uint64 big-
  endian decompressed size. In the non-GNU mode the header is the
  Elf(32|64)_Chdr.

  Decompression support is coming soon.

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

llvm-svn: 341635

5 years ago[PowerPC] Combine ADD to ADDZE
QingShan Zhang [Fri, 7 Sep 2018 07:56:05 +0000 (07:56 +0000)]
[PowerPC] Combine ADD to ADDZE

On the ppc64le platform, if ir has the following form,

define i64 @addze1(i64 %x, i64 %z) local_unnamed_addr #0 {
entry:
  %cmp = icmp ne i64 %z, CONSTANT      (-32767 <= CONSTANT <= 32768)
  %conv1 = zext i1 %cmp to i64
  %add = add nsw i64 %conv1, %x
  ret i64 %add
}
we can optimize it to the form below.

                                when C == 0
                            --> addze X, (addic Z, -1))
                           /
add X, (zext(setne Z, C))--
                           \    when -32768 <= -C <= 32767 && C != 0
                            --> addze X, (addic (addi Z, -C), -1)

Patch By: HLJ2009 (Li Jia He)
Differential Revision: https://reviews.llvm.org/D51403
Reviewed By: Nemanjai

llvm-svn: 341634

5 years ago[IndVars] Set Changed when we delete dead instructions. PR38855
Max Kazantsev [Fri, 7 Sep 2018 07:23:39 +0000 (07:23 +0000)]
[IndVars] Set Changed when we delete dead instructions. PR38855

IndVars does not set `Changed` flag when it eliminates dead instructions. As result,
it may make IR modifications and report that it has done nothing. It leads to inconsistent
preserved analyzes results.

Differential Revision: https://reviews.llvm.org/D51770
Reviewed By: skatkov

llvm-svn: 341633

5 years ago[libfuzzer] Enable trace-malloc-unballanced.test on Windows.
Jonathan Metzman [Fri, 7 Sep 2018 04:28:54 +0000 (04:28 +0000)]
[libfuzzer] Enable trace-malloc-unballanced.test on Windows.

Summary:
Enables trace-malloc-unbalanced.test on Windows, fixing two problems it had with Windows before.
The first fix is specifying python instead of relying on a script's shebang since they can't be used on Windows.
The second fix is making the regex tolerate windows' implementation of the "%p" format string.

Reviewers: Dor1s

Reviewed By: Dor1s

Subscribers: morehouse

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

llvm-svn: 341632

5 years agoRevert "[XRay] Add a BlockVerifier visitor for FDR Records"
Dean Michael Berris [Fri, 7 Sep 2018 03:38:26 +0000 (03:38 +0000)]
Revert "[XRay] Add a BlockVerifier visitor for FDR Records"

This reverts commit r341628.

llvm-svn: 341631

5 years ago[X86] Add more test cases for missed opportunities for using RMW form of ADC.
Craig Topper [Fri, 7 Sep 2018 02:39:56 +0000 (02:39 +0000)]
[X86] Add more test cases for missed opportunities for using RMW form of ADC.

llvm-svn: 341630

5 years ago[Sema] Check that the destructor for each element of class type is
Akira Hatanaka [Fri, 7 Sep 2018 02:38:01 +0000 (02:38 +0000)]
[Sema] Check that the destructor for each element of class type is
accessible from the context where aggregate initialization occurs.

rdar://problem/38168772

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

llvm-svn: 341629

5 years ago[XRay] Add a BlockVerifier visitor for FDR Records
Dean Michael Berris [Fri, 7 Sep 2018 02:25:06 +0000 (02:25 +0000)]
[XRay] Add a BlockVerifier visitor for FDR Records

Summary:
This patch implements a `BlockVerifier` type which enforces the
invariants of the log structure of FDR mode logs on a per-block basis.
This ensures that the data we encounter from an FDR mode log
semantically correct (i.e. that records follow the documented "grammar"
for FDR mode log records).

This is another part of the refactoring of D50441.

Reviewers: mboerger, eizan

Subscribers: mgorny, hiraditya, llvm-commits

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

llvm-svn: 341628

5 years agoRevert "Revert "[analyzer] Add coverage information to plist output, update tests""
George Karpenkov [Fri, 7 Sep 2018 02:02:35 +0000 (02:02 +0000)]
Revert "Revert "[analyzer] Add coverage information to plist output, update tests""

This reverts commit a39bcab414dd7ace7e490363ecdf01ecce7743fc.

Reverting the revert, fixing tests.

llvm-svn: 341627

5 years agoRevert "[analyzer] Add coverage information to plist output, update tests"
George Karpenkov [Fri, 7 Sep 2018 01:39:23 +0000 (01:39 +0000)]
Revert "[analyzer] Add coverage information to plist output, update tests"

This reverts commit 03d183b6b94eda27ce66a4f9b87a00b0a148cf9e.

Temporary revert until the tests are fixed.

llvm-svn: 341626

5 years ago[hwasan] relax the rint-memory-usage.c test further
Kostya Serebryany [Fri, 7 Sep 2018 01:36:34 +0000 (01:36 +0000)]
[hwasan] relax the rint-memory-usage.c test further

llvm-svn: 341625

5 years ago[X86] Fix some incorrect comments. NFC
Craig Topper [Fri, 7 Sep 2018 01:29:42 +0000 (01:29 +0000)]
[X86] Fix some incorrect comments. NFC

llvm-svn: 341624

5 years agoEnable the fp-armv8 disassembler feature when disassembling Cortex-M
Jason Molenda [Fri, 7 Sep 2018 01:28:48 +0000 (01:28 +0000)]
Enable the fp-armv8 disassembler feature when disassembling Cortex-M
code.  This will enable disassembly of the optional subset of
neon that some Cortex cores support.  Add a unit test to check
that a few of these instructions disassemble as expected.

<rdar://problem/26674303>

llvm-svn: 341623

5 years ago[libfuzzer] Use cl driver mode for tests and enable another test on Windows
Jonathan Metzman [Fri, 7 Sep 2018 01:11:31 +0000 (01:11 +0000)]
[libfuzzer] Use cl driver mode for tests and enable another test on Windows

Summary:
When targeting MSVC: compile using clang's cl driver mode (this is needed for
libfuzzer's exit_on_src_pos feature). Don't use -lstdc++ when linking,
it isn't needed and causes a warning.
On Windows: Fix exit_on_src_pos.test by making sure debug info isn't
overwritten during compilation of second binary by using .exe extension.

Reviewers: morehouse

Reviewed By: morehouse

Subscribers: aprantl, JDevlieghere

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

llvm-svn: 341622

5 years ago[analyzer] Add coverage information to plist output, update tests
George Karpenkov [Fri, 7 Sep 2018 00:44:17 +0000 (00:44 +0000)]
[analyzer] Add coverage information to plist output, update tests

Split tests which were still using FileCheck to compare plists.

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

llvm-svn: 341621

5 years ago[analyzer] [NFC] Prefer passing around reference to std::unique_ptr&
George Karpenkov [Fri, 7 Sep 2018 00:43:55 +0000 (00:43 +0000)]
[analyzer] [NFC] Prefer passing around reference to std::unique_ptr&

When object is owned elsewhere

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

llvm-svn: 341620

5 years ago[analyzer] Executed lines: store file IDs, not hashes.
George Karpenkov [Fri, 7 Sep 2018 00:43:37 +0000 (00:43 +0000)]
[analyzer] Executed lines: store file IDs, not hashes.

Raw FileIDs are needed for the PlistDiagnostics to produce stable filenames.

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

llvm-svn: 341619