platform/upstream/llvm.git
5 years ago[JITLink] Add llvm-jitlink subdirectory to tools/LLVMBuild.txt
Lang Hames [Sat, 20 Apr 2019 17:58:29 +0000 (17:58 +0000)]
[JITLink] Add llvm-jitlink subdirectory to tools/LLVMBuild.txt

llvm-svn: 358823

5 years ago[JITLink] Use memset instead of bzero.
Lang Hames [Sat, 20 Apr 2019 17:49:58 +0000 (17:49 +0000)]
[JITLink] Use memset instead of bzero.

llvm-svn: 358822

5 years ago[JITLink] Silence a narrowing conversion warning.
Lang Hames [Sat, 20 Apr 2019 17:37:09 +0000 (17:37 +0000)]
[JITLink] Silence a narrowing conversion warning.

llvm-svn: 358821

5 years ago[JITLink] Update BuildingAJIT tutorials to account for API changes in r358818.
Lang Hames [Sat, 20 Apr 2019 17:35:28 +0000 (17:35 +0000)]
[JITLink] Update BuildingAJIT tutorials to account for API changes in r358818.

DynamicLibrarySearchGenerator::GetForCurrentProcess now takes a char (the global
prefix) rather than a DataLayout reference.

llvm-svn: 358820

5 years ago[JITLink] Fix a missing header and bad prototype.
Lang Hames [Sat, 20 Apr 2019 17:29:57 +0000 (17:29 +0000)]
[JITLink] Fix a missing header and bad prototype.

llvm-svn: 358819

5 years agoInitial implementation of JITLink - A replacement for RuntimeDyld.
Lang Hames [Sat, 20 Apr 2019 17:10:34 +0000 (17:10 +0000)]
Initial implementation of JITLink - A replacement for RuntimeDyld.

Summary:

JITLink is a jit-linker that performs the same high-level task as RuntimeDyld:
it parses relocatable object files and makes their contents runnable in a target
process.

JITLink aims to improve on RuntimeDyld in several ways:

(1) A clear design intended to maximize code-sharing while minimizing coupling.

RuntimeDyld has been developed in an ad-hoc fashion for a number of years and
this had led to intermingling of code for multiple architectures (e.g. in
RuntimeDyldELF::processRelocationRef) in a way that makes the code more
difficult to read, reason about, extend. JITLink is designed to isolate
format and architecture specific code, while still sharing generic code.

(2) Support for native code models.

RuntimeDyld required the use of large code models (where calls to external
functions are made indirectly via registers) for many of platforms due to its
restrictive model for stub generation (one "stub" per symbol). JITLink allows
arbitrary mutation of the atom graph, allowing both GOT and PLT atoms to be
added naturally.

(3) Native support for asynchronous linking.

JITLink uses asynchronous calls for symbol resolution and finalization: these
callbacks are passed a continuation function that they must call to complete the
linker's work. This allows for cleaner interoperation with the new concurrent
ORC JIT APIs, while still being easily implementable in synchronous style if
asynchrony is not needed.

To maximise sharing, the design has a hierarchy of common code:

(1) Generic atom-graph data structure and algorithms (e.g. dead stripping and
 |  memory allocation) that are intended to be shared by all architectures.
 |
 + -- (2) Shared per-format code that utilizes (1), e.g. Generic MachO to
       |  atom-graph parsing.
       |
       + -- (3) Architecture specific code that uses (1) and (2). E.g.
                JITLinkerMachO_x86_64, which adds x86-64 specific relocation
                support to (2) to build and patch up the atom graph.

To support asynchronous symbol resolution and finalization, the callbacks for
these operations take continuations as arguments:

  using JITLinkAsyncLookupContinuation =
      std::function<void(Expected<AsyncLookupResult> LR)>;

  using JITLinkAsyncLookupFunction =
      std::function<void(const DenseSet<StringRef> &Symbols,
                         JITLinkAsyncLookupContinuation LookupContinuation)>;

  using FinalizeContinuation = std::function<void(Error)>;

  virtual void finalizeAsync(FinalizeContinuation OnFinalize);

In addition to its headline features, JITLink also makes other improvements:

  - Dead stripping support: symbols that are not used (e.g. redundant ODR
    definitions) are discarded, and take up no memory in the target process
    (In contrast, RuntimeDyld supported pointer equality for weak definitions,
    but the redundant definitions stayed resident in memory).

  - Improved exception handling support. JITLink provides a much more extensive
    eh-frame parser than RuntimeDyld, and is able to correctly fix up many
    eh-frame sections that RuntimeDyld currently (silently) fails on.

  - More extensive validation and error handling throughout.

This initial patch supports linking MachO/x86-64 only. Work on support for
other architectures and formats will happen in-tree.

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

llvm-svn: 358818

5 years ago[X86] Disable argument copy elision for arguments passed via pointers
Craig Topper [Sat, 20 Apr 2019 15:26:44 +0000 (15:26 +0000)]
[X86] Disable argument copy elision for arguments passed via pointers

Summary:
If you pass two 1024 bit vectors in IR with AVX2 on Windows 64. Both vectors will be split in four 256 bit pieces. The four pieces of the first argument will be passed indirectly using 4 gprs. The second argument will get passed via pointers in memory.

The PartOffsets stored for the second argument are all in terms of its original 1024 bit size. So the PartOffsets for each piece are 32 bytes apart. So if we consider it for copy elision we'll only load an 8 byte pointer, but we'll move the address 32 bytes. The stack object size we create for the first part is probably wrong too.

This issue was encountered by ISPC. I'm working on getting a reduce test case, but wanted to go ahead and get feedback on the fix.

Reviewers: rnk

Reviewed By: rnk

Subscribers: dbabokin, llvm-commits, hiraditya

Tags: #llvm

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

llvm-svn: 358817

5 years ago[CorrelatedValuePropagation] Mark subs that we know not to wrap with nuw/nsw.
Luqman Aden [Sat, 20 Apr 2019 13:14:18 +0000 (13:14 +0000)]
[CorrelatedValuePropagation] Mark subs that we know not to wrap with nuw/nsw.

Summary:
Teach CorrelatedValuePropagation to also handle sub instructions in addition to add. Relatively simple since makeGuaranteedNoWrapRegion already understood sub instructions. Only subtle change is which range is passed as "Other" to that function, since sub isn't commutative.

Note that CorrelatedValuePropagation::processAddSub is still hidden behind a default-off flag as IndVarSimplify hasn't yet been fixed to strip the added nsw/nuw flags and causes a miscompile. (PR31181)

Reviewers: sanjoy, apilipenko, nikic

Reviewed By: nikic

Subscribers: hiraditya, jfb, jdoerfert, llvm-commits

Tags: #llvm

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

llvm-svn: 358816

5 years ago[ExecutionDomainFix] Optimize a binary search insertion
Fangrui Song [Sat, 20 Apr 2019 13:00:50 +0000 (13:00 +0000)]
[ExecutionDomainFix] Optimize a binary search insertion

llvm-svn: 358815

5 years ago[llvm-symbolizer] Fix section index at the end of a section
Fangrui Song [Sat, 20 Apr 2019 13:00:09 +0000 (13:00 +0000)]
[llvm-symbolizer] Fix section index at the end of a section

This is very minor issue. The returned section index is only used by
DWARFDebugLine as an llvm::upper_bound input and the use case shouldn't
cause any behavioral change.

llvm-svn: 358814

5 years ago[IndVarSimplify] Generate full checks for some LFTR tests; NFC
Nikita Popov [Sat, 20 Apr 2019 12:05:53 +0000 (12:05 +0000)]
[IndVarSimplify] Generate full checks for some LFTR tests; NFC

llvm-svn: 358813

5 years ago[IndVarSimplify] Add tests for PR31181; NFC
Nikita Popov [Sat, 20 Apr 2019 12:05:43 +0000 (12:05 +0000)]
[IndVarSimplify] Add tests for PR31181; NFC

llvm-svn: 358812

5 years ago[ADT] Avoid warning in bsearch testcase
Sam McCall [Sat, 20 Apr 2019 11:48:11 +0000 (11:48 +0000)]
[ADT] Avoid warning in bsearch testcase

llvm-svn: 358811

5 years ago[LLD][ELF] - Fix mistype. NFC.
George Rimar [Sat, 20 Apr 2019 10:50:27 +0000 (10:50 +0000)]
[LLD][ELF] - Fix mistype. NFC.

Change the tripple name from
aarch64-linux-gnux to -triple=aarch64-linux-gnu

llvm-svn: 358810

5 years ago[llvm-objdump] Fix End in disassemblyObject after rL358806
Fangrui Song [Sat, 20 Apr 2019 07:48:41 +0000 (07:48 +0000)]
[llvm-objdump] Fix End in disassemblyObject after rL358806

llvm-svn: 358809

5 years ago[CVP] Add tests for sub nowrap inference; NFC
Nikita Popov [Sat, 20 Apr 2019 07:43:15 +0000 (07:43 +0000)]
[CVP] Add tests for sub nowrap inference; NFC

These are baseline tests for D60036.

Patch by Luqman Aden.

llvm-svn: 358808

5 years ago[X86] Fix stack probing on x32 (PR41477)
Nikita Popov [Sat, 20 Apr 2019 07:25:46 +0000 (07:25 +0000)]
[X86] Fix stack probing on x32 (PR41477)

Fix for https://bugs.llvm.org/show_bug.cgi?id=41477. On the x32 ABI
with stack probing a dynamic alloca will result in a WIN_ALLOCA_32
with a 32-bit size. The current implementation tries to copy it into
RAX, resulting in a physreg copy error. Fix this by copying to EAX
instead. Also fix incorrect opcodes or registers used in subs.

llvm-svn: 358807

5 years ago[llvm-objdump] Don't disassemble symbols before SectionAddr
Fangrui Song [Sat, 20 Apr 2019 07:19:24 +0000 (07:19 +0000)]
[llvm-objdump] Don't disassemble symbols before SectionAddr

This was caught by UBSAN

tools/llvm-objdump/X86/macho-disassembly-g-dsym.test
tools/llvm-objdump/X86/hex-displacement.test

llvm-svn: 358806

5 years ago[X86] Don't turn (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) if the origi...
Craig Topper [Sat, 20 Apr 2019 04:38:53 +0000 (04:38 +0000)]
[X86] Don't turn (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) if the original AND can represented by MOVZX.

The MOVZX doesn't require an immediate to be encoded at all. Though it does use
a 2 byte opcode so its the same size as a 1 byte immediate. But it has a
separate source and dest register so can help avoid copies.

llvm-svn: 358805

5 years ago[X86] Turn (and (anyextend (shl X, C1), C2)) into (shl (and (anyextend X), (C1 >...
Craig Topper [Sat, 20 Apr 2019 04:38:49 +0000 (04:38 +0000)]
[X86] Turn (and (anyextend (shl X, C1), C2)) into (shl (and (anyextend X), (C1 >> C2), C2) if the AND could match a movzx.

There's one slight regression in here because we don't check that the immediate
already allowed movzx before the shift. I'll fix that next.

llvm-svn: 358804

5 years ago[llvm-objdump] Simplify --{start,stop}-address
Fangrui Song [Sat, 20 Apr 2019 02:10:48 +0000 (02:10 +0000)]
[llvm-objdump] Simplify --{start,stop}-address

llvm-svn: 358803

5 years ago[TSan] Support fiber API on macOS
Julian Lettner [Sat, 20 Apr 2019 00:18:44 +0000 (00:18 +0000)]
[TSan] Support fiber API on macOS

Committing on behalf of Yuri Per (yuri).

Reviewers: dvyukov, kubamracek, yln

Reviewed By: kubamracek

Authored By: yuri

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

llvm-svn: 358802

5 years ago[WebAssembly] Object: Improve error messages on invalid section
Sam Clegg [Sat, 20 Apr 2019 00:11:46 +0000 (00:11 +0000)]
[WebAssembly] Object: Improve error messages on invalid section

Also add a test.

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

llvm-svn: 358801

5 years agoRevert "Revert "[GlobalISel] Add legalization support for non-power-2 loads and stores""
Amara Emerson [Fri, 19 Apr 2019 23:54:44 +0000 (23:54 +0000)]
Revert "Revert "[GlobalISel] Add legalization support for non-power-2 loads and stores""

We were shifting the wrong component of a split load when trying to combine them
back into a single value.

llvm-svn: 358800

5 years ago[GlobalISel][AArch64] Legalize + select G_FRINT
Jessica Paquette [Fri, 19 Apr 2019 23:41:52 +0000 (23:41 +0000)]
[GlobalISel][AArch64] Legalize + select G_FRINT

Exactly the same as G_FCEIL, G_FABS, etc.

Add tests for the fp16/nofp16 behaviour, update arm64-vfloatintrinsics, etc.

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

llvm-svn: 358799

5 years ago[WebAssembly] Emit the DataCount section when bulk memory is enabled
Thomas Lively [Fri, 19 Apr 2019 23:40:36 +0000 (23:40 +0000)]
[WebAssembly] Emit the DataCount section when bulk memory is enabled

Summary:
The DataCount section is necessary for the bulk memory operations
memory.init and data.drop to validate, but it is not recognized by
engines that do not support bulk memory, so emit the section only if
bulk-memory is enabled.

Reviewers: aheejin, dschuff, sbc100

Subscribers: jgravelle-google, sunfish, llvm-commits

Tags: #llvm

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

llvm-svn: 358798

5 years ago[analyzer] Move UninitializedObjectChecker out of alpha
Kristof Umann [Fri, 19 Apr 2019 23:33:50 +0000 (23:33 +0000)]
[analyzer] Move UninitializedObjectChecker out of alpha

Moved UninitializedObjectChecker from the 'alpha.cplusplus' to the
'optin.cplusplus' package.

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

llvm-svn: 358797

5 years agoModules: Adopt template parameters for variable templates to set their decl context...
David Blaikie [Fri, 19 Apr 2019 23:04:05 +0000 (23:04 +0000)]
Modules: Adopt template parameters for variable templates to set their decl context correctly

Exposed by a related bug about visibility of default arguments of nested
templates - without the correct decl context, default template
parameters of variable templates nested in classes would have incorrect
visibility computed.

llvm-svn: 358796

5 years agoModules: Search for a visible definition of the decl context when computing visibilit...
David Blaikie [Fri, 19 Apr 2019 23:02:30 +0000 (23:02 +0000)]
Modules: Search for a visible definition of the decl context when computing visibility of a default template parameter

The code is/was already correct for the case where a parameter is a
parameter of its enclosing lexical DeclContext (functions and classes).
But for other templates (alias and variable templates) they don't create
their own scope to be members of - in those cases, they parameter should
be considered visible if any definition of the lexical decl context is
visible.

[this should cleanup the failure on the libstdc++ modules buildbot]
[this doesn't actually fix the variable template case for a
secondary/compounding reason (its lexical decl context is incorrectly
considered to be the translation unit)]

Test covers all 4 kinds of templates with default args, including a
regression test for the still broken variable template case.

Reviewers: rsmith

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

llvm-svn: 358795

5 years ago[COFF] Pack Name in Symbol as is done in ELF
Reid Kleckner [Fri, 19 Apr 2019 22:51:49 +0000 (22:51 +0000)]
[COFF] Pack Name in Symbol as is done in ELF

Summary:
This assumes all symbols are <4GB long, so we can store them as a 32-bit
integer. This reorders the fields so the length appears first, packing
with the other bitfield data in the base Symbol object.

This saved 70MB / 3.60% of heap allocations when linking
browser_tests.exe with no PDB. It's not much as a percentage, but worth
doing. I didn't do performance measurements, I don't think it will be
measurable in time.

Reviewers: ruiu, inglorion, amccarth, aganea

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 358794

5 years ago[WebAssembly] FastISel: Don't fallback to SelectionDAG after BuildMI in selectCall
Sam Clegg [Fri, 19 Apr 2019 22:43:32 +0000 (22:43 +0000)]
[WebAssembly] FastISel: Don't fallback to SelectionDAG after BuildMI in selectCall

My understanding is that once BuildMI has been called we can't fallback
to SelectionDAG.

This change moves the fallback for when getRegForValue() fails for
that target of an indirect call.  This was failing in -fPIC mode when
the callee is GlobalValue.

Add a test case that tickles this.

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

llvm-svn: 358793

5 years ago[Tests] Split float test into float and doubles
Jonas Devlieghere [Fri, 19 Apr 2019 22:37:55 +0000 (22:37 +0000)]
[Tests] Split float test into float and doubles

As I was waiting for the test suite to complete at 99% I noticed this
test taking quite a bit of time. Since it's easy to split I just went
ahead and did so.

llvm-svn: 358792

5 years ago[GVN+LICM] Use line 0 locations for better crash attribution
Vedant Kumar [Fri, 19 Apr 2019 22:36:40 +0000 (22:36 +0000)]
[GVN+LICM] Use line 0 locations for better crash attribution

This is a follow-up to r291037+r291258, which used null debug locations
to prevent jumpy line tables.

Using line 0 locations achieves the same effect, but works better for
crash attribution because it preserves the right inline scope.

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

llvm-svn: 358791

5 years agoUpdate GN files to build with r358103
Vitaly Buka [Fri, 19 Apr 2019 22:27:50 +0000 (22:27 +0000)]
Update GN files to build with r358103

llvm-svn: 358790

5 years agoRemove the EnableEarlyCSEMemSSA set of options from the legacy
Eric Christopher [Fri, 19 Apr 2019 22:18:53 +0000 (22:18 +0000)]
Remove the EnableEarlyCSEMemSSA set of options from the legacy
and new pass managers. They were default to true and not being
used.

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

llvm-svn: 358789

5 years ago[AArch64] Fix checks for AArch64MCExpr::VK_SABS flag.
Eli Friedman [Fri, 19 Apr 2019 21:58:10 +0000 (21:58 +0000)]
[AArch64] Fix checks for AArch64MCExpr::VK_SABS flag.

VK_SABS is part of the SymLoc bitfield in the variant kind which should
be compared for equality, not by checking the VK_SABS bit.

As far as I know, the existing code happened to produce the correct
results in all cases, so this is just a cleanup.

Patch by Stephen Crane.

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

llvm-svn: 358788

5 years ago[GlobalISel] Add IRTranslator support for G_FRINT
Jessica Paquette [Fri, 19 Apr 2019 21:46:12 +0000 (21:46 +0000)]
[GlobalISel] Add IRTranslator support for G_FRINT

Add it as a simple intrinsic, update arm64-irtranslator.ll.

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

llvm-svn: 358787

5 years agoAttempt to fix buildbot failure in commit 1bb57bac959ac163fd7d8a76d734ca3e0ecee6ab.
Amy Huang [Fri, 19 Apr 2019 21:44:30 +0000 (21:44 +0000)]
Attempt to fix buildbot failure in commit 1bb57bac959ac163fd7d8a76d734ca3e0ecee6ab.

llvm-svn: 358786

5 years ago[GlobalISel] Add a G_FRINT opcode
Jessica Paquette [Fri, 19 Apr 2019 21:44:16 +0000 (21:44 +0000)]
[GlobalISel] Add a G_FRINT opcode

Equivalent to SelectionDAG's frint node.

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

llvm-svn: 358785

5 years ago[X86] Add test case for D60801. NFC
Craig Topper [Fri, 19 Apr 2019 21:39:16 +0000 (21:39 +0000)]
[X86] Add test case for D60801. NFC

llvm-svn: 358784

5 years ago[MS] Emit S_HEAPALLOCSITE debug info
Amy Huang [Fri, 19 Apr 2019 21:09:11 +0000 (21:09 +0000)]
[MS] Emit S_HEAPALLOCSITE debug info

Summary:
This emits labels around heapallocsite calls and S_HEAPALLOCSITE debug
info in codeview. Currently only changes FastISel, so emitting labels still
needs to be implemented in SelectionDAG.

Reviewers: hans, rnk

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

Tags: #clang, #llvm

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

llvm-svn: 358783

5 years ago[libc++] [test] Silence C++20 deprecation warnings in the MSVC STL
Casey Carter [Fri, 19 Apr 2019 20:39:41 +0000 (20:39 +0000)]
[libc++] [test] Silence C++20 deprecation warnings in the MSVC STL

... when including msvc_stdlib_force_include.hpp.

llvm-svn: 358782

5 years agoReapply "[analyzer] Introduce a simplified API for adding custom path notes."
Artem Dergachev [Fri, 19 Apr 2019 20:23:29 +0000 (20:23 +0000)]
Reapply "[analyzer] Introduce a simplified API for adding custom path notes."

This reapplies commit r357323, fixing memory leak found by LSan.

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

llvm-svn: 358781

5 years ago[CMake] Add fuzzer as a component for runtime builds
Chris Bieneman [Fri, 19 Apr 2019 20:13:25 +0000 (20:13 +0000)]
[CMake] Add fuzzer as a component for runtime builds

Calling `add_compiler_rt_component` sets up the component connection between runtime builds and the parent CMake configuration. Adding this call allows specifying `fuzzer` as a `LLVM_RUNTIME_DISTRIBUTION_COMPONENT`.

llvm-svn: 358780

5 years ago[CMake] Pass monorepo build settings in cross compile
Chris Bieneman [Fri, 19 Apr 2019 20:08:55 +0000 (20:08 +0000)]
[CMake] Pass monorepo build settings in cross compile

This allows the cross compiled build targets to configure the LLVM tools and sub-projects that are part of the main build.

This is needed for generating native non llvm *-tablegen tools when cross compiling clang in the monorepo build environment.

llvm-svn: 358779

5 years ago[MSVC] If unable to find link.exe from a MSVC installation, look for link.exe next...
Martin Storsjo [Fri, 19 Apr 2019 19:04:22 +0000 (19:04 +0000)]
[MSVC] If unable to find link.exe from a MSVC installation, look for link.exe next to cl.exe

Previously, if the MSVC installation isn't detected properly, clang
will later just fail to execute link.exe.

This improves using clang in msvc mode on linux, where one intentionally
might not want to point clang to the MSVC installation itself (which
isn't executable as such), but where a link.exe named wine wrapper is
available in the path next to a cl.exe named wine wrapper.

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

llvm-svn: 358778

5 years ago[Docs] Add more info about building the docs
Jonas Devlieghere [Fri, 19 Apr 2019 19:03:58 +0000 (19:03 +0000)]
[Docs] Add more info about building the docs

Including the C++ and Python reference.

llvm-svn: 358777

5 years agoThis test doesn't need to be run for all debug formats.
Jim Ingham [Fri, 19 Apr 2019 18:46:56 +0000 (18:46 +0000)]
This test doesn't need to be run for all debug formats.

llvm-svn: 358776

5 years agoEnable frame pointer elimination for OpenBSD on powerpc.
Brad Smith [Fri, 19 Apr 2019 18:41:40 +0000 (18:41 +0000)]
Enable frame pointer elimination for OpenBSD on powerpc.

llvm-svn: 358775

5 years ago[gn] Support dots in CMake paths in the sync script
Petr Hosek [Fri, 19 Apr 2019 18:29:17 +0000 (18:29 +0000)]
[gn] Support dots in CMake paths in the sync script

Some file paths use dots to pick up sources from parent directories.

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

llvm-svn: 358774

5 years ago[Docs] Make Doxygen functional
Jonas Devlieghere [Fri, 19 Apr 2019 18:02:35 +0000 (18:02 +0000)]
[Docs] Make Doxygen functional

This fixes the doxygen configuration to be functional again. I removed
the customer header and footer, as well as the no-longer-existent style
sheet. I also widened the scope of the documentation, from just the
public API to include the private interfaces as well.

llvm-svn: 358773

5 years ago[LICM & MemorySSA] Make limit flags pass tuning options.
Alina Sbirlea [Fri, 19 Apr 2019 17:46:50 +0000 (17:46 +0000)]
[LICM & MemorySSA] Make limit flags pass tuning options.

Summary:
Make the flags in LICM + MemorySSA tuning options in the old and new
pass managers.

Subscribers: mehdi_amini, jlebar, Prazek, george.burgess.iv, llvm-commits

Tags: #llvm

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

llvm-svn: 358772

5 years agoRevert "[GlobalISel] Add legalization support for non-power-2 loads and stores"
Amara Emerson [Fri, 19 Apr 2019 17:42:13 +0000 (17:42 +0000)]
Revert "[GlobalISel] Add legalization support for non-power-2 loads and stores"

This introduces some runtime failures which I'll need to investigate further.

llvm-svn: 358771

5 years agoRemoved regiser dump checks from FP unit test.
Mitch Phillips [Fri, 19 Apr 2019 17:36:58 +0000 (17:36 +0000)]
Removed regiser dump checks from FP unit test.

llvm-svn: 358770

5 years ago[HWASan] Added no-FP unit test for register dump.
Mitch Phillips [Fri, 19 Apr 2019 17:36:56 +0000 (17:36 +0000)]
[HWASan] Added no-FP unit test for register dump.

Summary: Unit test for D60798.

Reviewers: eugenis

Subscribers: kubamracek, #sanitizers, llvm-commits, pcc

Tags: #sanitizers, #llvm

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

llvm-svn: 358769

5 years agoUpdated test case.
Mitch Phillips [Fri, 19 Apr 2019 17:36:55 +0000 (17:36 +0000)]
Updated test case.

llvm-svn: 358768

5 years agoAdded no-FP unit test for register dump.
Mitch Phillips [Fri, 19 Apr 2019 17:36:53 +0000 (17:36 +0000)]
Added no-FP unit test for register dump.

llvm-svn: 358767

5 years ago[OPENMP][NVPTX] target [teams distribute] simd maybe run without
Alexey Bataev [Fri, 19 Apr 2019 16:48:38 +0000 (16:48 +0000)]
[OPENMP][NVPTX] target [teams distribute] simd maybe run without
runtime.

target [teams distribute] simd costructs do not require full runtime for
the correct execution, we can run them without full runtime.

llvm-svn: 358766

5 years agoUpdate to use PipelineTuningOptions. Corresponds to llvm change: D59723.
Alina Sbirlea [Fri, 19 Apr 2019 16:32:08 +0000 (16:32 +0000)]
Update to use PipelineTuningOptions. Corresponds to llvm change: D59723.

llvm-svn: 358765

5 years ago[GlobalISel][AArch64] Legalize vector G_FPOW
Jessica Paquette [Fri, 19 Apr 2019 16:28:08 +0000 (16:28 +0000)]
[GlobalISel][AArch64] Legalize vector G_FPOW

This instruction is legalized in the same way as G_FSIN, G_FCOS, G_FLOG10, etc.

Update legalize-pow.mir and arm64-vfloatintrinsics.ll to reflect the change.

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

llvm-svn: 358764

5 years ago[NewPassManager] Adding pass tuning options: loop vectorize.
Alina Sbirlea [Fri, 19 Apr 2019 16:11:59 +0000 (16:11 +0000)]
[NewPassManager] Adding pass tuning options: loop vectorize.

Summary:
Trying to add the plumbing necessary to add tuning options to the new pass manager.
Testing with the flags for loop vectorize.

Reviewers: chandlerc

Subscribers: sanjoy, mehdi_amini, jlebar, steven_wu, dexonsmith, dang, llvm-commits

Tags: #llvm

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

llvm-svn: 358763

5 years ago[dsymutil] DwarfLinker: delete unused parameter
Fangrui Song [Fri, 19 Apr 2019 15:45:25 +0000 (15:45 +0000)]
[dsymutil] DwarfLinker: delete unused parameter

llvm-svn: 358762

5 years ago[SelectionDAG] soften splat mask assert/unreachable (PR41535)
Sanjay Patel [Fri, 19 Apr 2019 15:31:11 +0000 (15:31 +0000)]
[SelectionDAG] soften splat mask assert/unreachable (PR41535)

These are general queries, so they should not die when given
a degenerate input like an all undef mask. Callers should be
able to deal with an op that will eventually be simplified away.

llvm-svn: 358761

5 years agollvm-undname: Attempt to fix leak-on-invalid found by oss-fuzz
Nico Weber [Fri, 19 Apr 2019 14:13:11 +0000 (14:13 +0000)]
llvm-undname: Attempt to fix leak-on-invalid found by oss-fuzz

llvm-svn: 358760

5 years ago[MinGW] Add an --appcontainer flag, passed through to lld-link
Martin Storsjo [Fri, 19 Apr 2019 13:50:43 +0000 (13:50 +0000)]
[MinGW] Add an --appcontainer flag, passed through to lld-link

GNU ld doesn't have such a flag though, so this is a lld specific
option.

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

llvm-svn: 358759

5 years agoDebian: Add two missing version code in sid
Sylvestre Ledru [Fri, 19 Apr 2019 13:48:52 +0000 (13:48 +0000)]
Debian: Add two missing version code in sid

llvm-svn: 358758

5 years agoAdd support of the future Debian (Debian 11 - Bullseye)
Sylvestre Ledru [Fri, 19 Apr 2019 13:46:58 +0000 (13:46 +0000)]
Add support of the future Debian (Debian 11 - Bullseye)
https://wiki.debian.org/DebianBullseye

llvm-svn: 358757

5 years agoAdd support of the next Ubuntu (Ubuntu 19.10 - Eoan EANIMAL)
Sylvestre Ledru [Fri, 19 Apr 2019 13:43:28 +0000 (13:43 +0000)]
Add support of the next Ubuntu (Ubuntu 19.10 - Eoan EANIMAL)

llvm-svn: 358756

5 years agogn build: Merge r358722
Nico Weber [Fri, 19 Apr 2019 13:18:41 +0000 (13:18 +0000)]
gn build: Merge r358722

llvm-svn: 358755

5 years agogn build: Merge r358691
Nico Weber [Fri, 19 Apr 2019 13:16:26 +0000 (13:16 +0000)]
gn build: Merge r358691

llvm-svn: 358754

5 years ago[LTO] Add plumbing to save stats during LTO on Darwin.
Florian Hahn [Fri, 19 Apr 2019 12:36:41 +0000 (12:36 +0000)]
[LTO] Add plumbing to save stats during LTO on Darwin.

Gold and ld on Linux already support saving stats, but the
infrastructure is missing on Darwin. Unfortunately it seems like the
configuration from lib/LTO/LTO.cpp is not used.

This patch adds a new LTOStatsFile option and adds plumbing in Clang to
use it on Darwin, similar to the way remarks are handled.

Currnetly the handling of LTO flags seems quite spread out, with a bunch
of duplication. But I am not sure if there is an easy way to improve
that?

Reviewers: anemet, tejohnson, thegameg, steven_wu

Reviewed By: steven_wu

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

llvm-svn: 358753

5 years ago[analyzer][NFC] Reimplement checker options
Kristof Umann [Fri, 19 Apr 2019 12:32:10 +0000 (12:32 +0000)]
[analyzer][NFC] Reimplement checker options

TL;DR:

* Add checker and package options to the TableGen files
* Added a new class called CmdLineOption, and both Package and Checker recieved
   a list<CmdLineOption> field.
* Added every existing checker and package option to Checkers.td.
* The CheckerRegistry class
  * Received some comments to most of it's inline classes
  * Received the CmdLineOption and PackageInfo inline classes, a list of
     CmdLineOption was added to CheckerInfo and PackageInfo
  * Added addCheckerOption and addPackageOption
  * Added a new field called Packages, used in addPackageOptions, filled up in
     addPackage

Detailed description:

In the last couple months, a lot of effort was put into tightening the
analyzer's command line interface. The main issue is that it's spectacularly
easy to mess up a lenghty enough invocation of the analyzer, and the user was
given no warnings or errors at all in that case.

We can divide the effort of resolving this into several chapters:

* Non-checker analyzer configurations:
    Gather every analyzer configuration into a dedicated file. Emit errors for
    non-existent configurations or incorrect values. Be able to list these
    configurations. Tighten AnalyzerOptions interface to disallow making such
    a mistake in the future.

* Fix the "Checker Naming Bug" by reimplementing checker dependencies:
    When cplusplus.InnerPointer was enabled, it implicitly registered
    unix.Malloc, which implicitly registered some sort of a modeling checker
    from the CStringChecker family. This resulted in all of these checker
    objects recieving the name "cplusplus.InnerPointer", making AnalyzerOptions
    asking for the wrong checker options from the command line:
      cplusplus.InnerPointer:Optimisic
    istead of
      unix.Malloc:Optimistic.
    This was resolved by making CheckerRegistry responsible for checker
    dependency handling, instead of checkers themselves.

* Checker options: (this patch included!)
    Same as the first item, but for checkers.

(+ minor fixes here and there, and everything else that is yet to come)

There were several issues regarding checker options, that non-checker
configurations didn't suffer from: checker plugins are loaded runtime, and they
could add new checkers and new options, meaning that unlike for non-checker
configurations, we can't collect every checker option purely by generating code.
Also, as seen from the "Checker Naming Bug" issue raised above, they are very
rarely used in practice, and all sorts of skeletons fell out of the closet while
working on this project.

They were extremely problematic for users as well, purely because of how long
they were. Consider the following monster of a checker option:

  alpha.cplusplus.UninitializedObject:CheckPointeeInitialization=false

While we were able to verify whether the checker itself (the part before the
colon) existed, any errors past that point were unreported, easily resulting
in 7+ hours of analyses going to waste.

This patch, similarly to how dependencies were reimplemented, uses TableGen to
register checker options into Checkers.td, so that Checkers.inc now contains
entries for both checker and package options. Using the preprocessor,
Checkers.inc is converted into code in CheckerRegistry, adding every builtin
(checkers and packages that have an entry in the Checkers.td file) checker and
package option to the registry. The new addPackageOption and addCheckerOption
functions expose the same functionality to statically-linked non-builtin and
plugin checkers and packages as well.

Emitting errors for incorrect user input, being able to list these options, and
some other functionalies will land in later patches.

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

llvm-svn: 358752

5 years agoChange \r\n -> \n for llvm-symbolizer/help.test after rL358749
Fangrui Song [Fri, 19 Apr 2019 12:28:36 +0000 (12:28 +0000)]
Change \r\n -> \n for llvm-symbolizer/help.test after rL358749

llvm-svn: 358751

5 years ago[analyzer] Fix an assertion failure if plugins added dependencies
Kristof Umann [Fri, 19 Apr 2019 11:01:35 +0000 (11:01 +0000)]
[analyzer] Fix an assertion failure if plugins added dependencies

Ideally, there is no reason behind not being able to depend on checkers that
come from a different plugin (or on builtin checkers) -- however, this is only
possible if all checkers are added to the registry before resolving checker
dependencies. Since I used a binary search in my addDependency method, this also
resulted in an assertion failure (due to CheckerRegistry::Checkers not being
sorted), since the function used by plugins to register their checkers
(clang_registerCheckers) calls addDependency.

This patch resolves this issue by only noting which dependencies have to
established when addDependency is called, and resolves them at a later stage
when no more checkers are added to the registry, by which point
CheckerRegistry::Checkers is already sorted.

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

llvm-svn: 358750

5 years ago[llvm-symbolizer] Add llvm-addr2line
Igor Kudrin [Fri, 19 Apr 2019 10:17:52 +0000 (10:17 +0000)]
[llvm-symbolizer] Add llvm-addr2line

This adds an alias for llvm-symbolizer with different defaults so that
it can be used as a drop-in replacement for GNU's addr2line.

If a substring "addr2line" is found in the tool's name:
  * it defaults "-i", "-f" and "-C" to OFF;
  * it uses "--output-style=GNU" by default.

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

llvm-svn: 358749

5 years ago[llvm-symbolizer] Unhide and document the "-output-style" option
Igor Kudrin [Fri, 19 Apr 2019 10:14:18 +0000 (10:14 +0000)]
[llvm-symbolizer] Unhide and document the "-output-style" option

With the latest changes, the option gets useful for users of
llvm-symbolizer, not only for the upcoming llvm-addr2line.

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

llvm-svn: 358748

5 years ago[llvm-symbolizer] Make the output with -output-style=GNU closer to addr2line's
Igor Kudrin [Fri, 19 Apr 2019 10:12:56 +0000 (10:12 +0000)]
[llvm-symbolizer] Make the output with -output-style=GNU closer to addr2line's

This patch addresses two differences in the output of llvm-symbolizer
and GNU's addr2line:

* llvm-symbolizer prints an empty line after the report for an address.

* With "-f -i=0", llvm-symbolizer replaces the name of an inlined
  function with the name from the symbol table, i. e., the top caller
  function in the inlining chain. addr2line preserves the name of the
  inlined function.

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

llvm-svn: 358747

5 years ago[AMDGPU] Regenerate extractelt->truncate test.
Simon Pilgrim [Fri, 19 Apr 2019 09:49:04 +0000 (09:49 +0000)]
[AMDGPU] Regenerate extractelt->truncate test.

Prep work for D60462

llvm-svn: 358746

5 years ago[LibTooling] Fix -Wsign-compare after r358697
Bjorn Pettersson [Fri, 19 Apr 2019 09:10:42 +0000 (09:10 +0000)]
[LibTooling] Fix -Wsign-compare after r358697

llvm-svn: 358745

5 years ago[CodeGen] Add "const" to MachineInstr::mayAlias
Bjorn Pettersson [Fri, 19 Apr 2019 09:08:38 +0000 (09:08 +0000)]
[CodeGen] Add "const" to MachineInstr::mayAlias

Summary:
The basic idea here is to make it possible to use
MachineInstr::mayAlias also when the MachineInstr
is const (or the "Other" MachineInstr is const).

The addition of const in MachineInstr::mayAlias
then rippled down to the need for adding const
in several other places, such as
TargetTransformInfo::getMemOperandWithOffset.

Reviewers: hfinkel

Reviewed By: hfinkel

Subscribers: hfinkel, MatzeB, arsenm, jvesely, nhaehnle, hiraditya, javed.absar, llvm-commits

Tags: #llvm

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

llvm-svn: 358744

5 years ago[PATCH] [MachineScheduler] Check pending instructions when an instruction is scheduled
James Molloy [Fri, 19 Apr 2019 09:00:55 +0000 (09:00 +0000)]
[PATCH] [MachineScheduler] Check pending instructions when an instruction is scheduled

Pending instructions that may have been blocked from being available by the HazardRecognizer may no longer may not be blocked any more when an instruction is scheduled; pending instructions should be re-checked in this case.

This is primarily aimed at VLIW targets with large parallelism and esoteric constraints.

No testcase as no in-tree targets have this behavior.

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

llvm-svn: 358743

5 years ago[MergeFunc] Delete unused FunctionNode::release()
Fangrui Song [Fri, 19 Apr 2019 08:03:20 +0000 (08:03 +0000)]
[MergeFunc] Delete unused FunctionNode::release()

llvm-svn: 358742

5 years ago[MergeFunc] removeUsers: call remove() only on direct users
Fangrui Song [Fri, 19 Apr 2019 07:57:51 +0000 (07:57 +0000)]
[MergeFunc] removeUsers: call remove() only on direct users

removeUsers uses a work list to collect indirect users and call remove()
on those functions. However it has a bug (`if (!Visited.insert(UU).second)`).

Actually, we don't have to collect indirect users.
After the merge of F and G, G's callers will be considered (added to
Deferred). If G's callers can be merged, G's callers' callers will be
considered.

Update the test unnamed-addr-reprocessing.ll to make it clear we can
still merge indirect callers.

llvm-svn: 358741

5 years ago[AMDGPU] Ignore non-SUnits edges
Piotr Sobczak [Fri, 19 Apr 2019 06:19:14 +0000 (06:19 +0000)]
[AMDGPU] Ignore non-SUnits edges

Summary:
Ignore edges to non-SUnits (e.g. ExitSU) when checking
for low latency instructions.

When calling the function isLowLatencyInstruction(),
an ExitSU could be on the list of successors, not necessarily
a regular SU. In other places in the code there is a check
"Succ->NodeNum >= DAGSize" to prevent further processing of
ExitSU as "Succ->getInstr()" is NULL in such a case.
Also, 8 out of 9 cases of "SUnit *Succ = SuccDep.getSUnit())"
has the guard, so it is clearly an omission here.

Change-Id: Ica86f0327c7b2e6bcb56958e804ea6c71084663b

Reviewers: nhaehnle

Reviewed By: nhaehnle

Subscribers: MatzeB, arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, javed.absar, llvm-commits

Tags: #llvm

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

llvm-svn: 358740

5 years ago[CallSite removal] Move the legacy PM, call graph, and some inliner
Chandler Carruth [Fri, 19 Apr 2019 05:59:42 +0000 (05:59 +0000)]
[CallSite removal]  Move the legacy PM, call graph, and some inliner
code to `CallBase`.

This patch focuses on the legacy PM, call graph, and some of inliner and legacy
passes interacting with those APIs from `CallSite` to the new `CallBase` class.
No interesting changes.

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

llvm-svn: 358739

5 years ago[MergeFunc] Use less_first() as the comparator of Schwartzian transform
Fangrui Song [Fri, 19 Apr 2019 05:49:29 +0000 (05:49 +0000)]
[MergeFunc] Use less_first() as the comparator of Schwartzian transform

llvm-svn: 358738

5 years ago[X86] Turn (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) if the AND could...
Craig Topper [Fri, 19 Apr 2019 05:48:13 +0000 (05:48 +0000)]
[X86] Turn (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) if the AND could match a movzx.

Could get further improvements by recognizing (i64 and (anyext (i32 shl))).

llvm-svn: 358737

5 years ago[X86] Add test cases for turning (and (shl X, C1), C2) into (shl (and X, (C1 >> C2...
Craig Topper [Fri, 19 Apr 2019 05:48:09 +0000 (05:48 +0000)]
[X86] Add test cases for turning (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) when the AND could match to a movzx.

We already reorder when C1 >> C2 would allow a smaller immediate encoding.

llvm-svn: 358736

5 years ago[X86] Make sure we copy the HandleSDNode back to N before executing the default code...
Craig Topper [Fri, 19 Apr 2019 04:52:21 +0000 (04:52 +0000)]
[X86] Make sure we copy the HandleSDNode back to N before executing the default code after the switch in matchAddressRecursively

Summary:
There are two places where we create a HandleSDNode in address matching in order to handle the case where N is changed by CSE. But if we end up not matching, we fall back to code at the bottom of the switch that really would like N to point to something that wasn't CSEd away. So we should make sure we copy the handle back to N on any paths that can reach that code.

This appears to be the true reason we needed to check DELETED_NODE in the negation matching. In pr32329.ll we had two subtracts back to back. We recursed through the first subtract, and onto the second subtract. The second subtract called matchAddressRecursively on its LHS which caused that subtract to CSE. We ultimately failed the match and ended up in the default code. But N was pointing at the old node that had been deleted, but the default code didn't know that and took it as the base register. Then we unwound back to the first subtract and tried to access this bogus base reg requiring the check for deleted node. With this patch we now use the CSE result as the base reg instead.

matchAdd has been broken since sometime in 2015 when it was pulled out of the switch into a helper function. The assignment to N at the end was still there, but N was passed by value and not by reference so the update didn't go anywhere.

Reviewers: niravd, spatel, RKSimon, bkramer

Reviewed By: niravd

Subscribers: llvm-commits, hiraditya

Tags: #llvm

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

llvm-svn: 358735

5 years ago[DWARF] Use hasFileAtIndex to properly verify DWARF 5 after rL358732
Fangrui Song [Fri, 19 Apr 2019 03:34:28 +0000 (03:34 +0000)]
[DWARF] Use hasFileAtIndex to properly verify DWARF 5 after rL358732

llvm-svn: 358734

5 years agoFix overly-long line after r358731.
Richard Smith [Fri, 19 Apr 2019 02:46:50 +0000 (02:46 +0000)]
Fix overly-long line after r358731.

llvm-svn: 358733

5 years ago[llvm] Prevent duplicate files in debug line header in dwarf 5: another attempt
Ali Tamur [Fri, 19 Apr 2019 02:26:56 +0000 (02:26 +0000)]
[llvm] Prevent duplicate files in debug line header in dwarf 5: another attempt

Another attempt to land the changes in debug line header to prevent duplicate
files in Dwarf 5. I rolled back my previous commit because of a mistake in
generating the object file in a test. Meanwhile, I addressed some offline
comments and changed the implementation; the largest difference is that
MCDwarfLineTableHeader does not keep DwarfVersion but gets it as a parameter. I
also merged the patch to fix two lld tests that will strt to fail into this
patch.

Original Commit:

https://reviews.llvm.org/D59515

Original Message:
Motivation: In previous dwarf versions, file name indexes started from 1, and
the primary source file was not explicit. Dwarf 5 standard (6.2.4) prescribes
the primary source file to be explicitly given an entry with an index number 0.

The current implementation honors the specification by just duplicating the
main source file, once with index number 0, and later maybe with another
index number. While this is compliant with the letter of the standard, the
duplication causes problems for consumers of this information such as lldb.
(Some files are duplicated, where only some of them have a line table although
all refer to the same file)

With this change, dwarf 5 debug line section files always start from 0, and
the zeroth entry is not duplicated whenever possible. This requires different
handling of dwarf 4 and dwarf 5 during generation (e.g. when a function returns
an index zero for a file name, it signals an error in dwarf 4, but not in dwarf
5) However, I think the minor complication is worth it, because it enables all
consumers (lldb, gdb, dwarfdump, objdump, and so on) to treat all files in the
file name list homogenously.

llvm-svn: 358732

5 years agoFix typo in function name [NFC]
Ali Tamur [Fri, 19 Apr 2019 02:15:57 +0000 (02:15 +0000)]
Fix typo in function name [NFC]

llvm-svn: 358731

5 years ago[APInt] Optimize umul_ov
Fangrui Song [Fri, 19 Apr 2019 02:06:06 +0000 (02:06 +0000)]
[APInt] Optimize umul_ov

Change two costly udiv() calls to lshr(1)*RHS + left-shift + plus

On one 64-bit umul_ov benchmark, I measured an obvious improvement: 12.8129s -> 3.6257s

Note, there may be some value to special case 64-bit (the most common
case) with __builtin_umulll_overflow().

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

llvm-svn: 358730

5 years ago[analyzer] Fix -Wunused-local-typedef after rC358695
Fangrui Song [Fri, 19 Apr 2019 01:54:36 +0000 (01:54 +0000)]
[analyzer] Fix -Wunused-local-typedef after rC358695

llvm-svn: 358729

5 years agoMergeFunc: preserve COMDAT information when creating a thunk
Saleem Abdulrasool [Fri, 19 Apr 2019 01:48:36 +0000 (01:48 +0000)]
MergeFunc: preserve COMDAT information when creating a thunk

We would previously drop the COMDAT on the thunk we generated when replacing a
function body with the forwarding thunk. This would result in a function that
may have been multiply emitted and multiply merged to be emitted with the same
name without the COMDAT. This is a hard error with PE/COFF where the COMDAT is
used for the deduplication of Value Witness functions for Swift.

llvm-svn: 358728

5 years ago[libFuzzer] revert part of r358726 committed by mistake (oops)
Kostya Serebryany [Fri, 19 Apr 2019 01:40:16 +0000 (01:40 +0000)]
[libFuzzer] revert part of r358726 committed by mistake (oops)

llvm-svn: 358727

5 years ago[libFuzzer] in fork mode, make sure the child stats are always collected. This should...
Kostya Serebryany [Fri, 19 Apr 2019 01:39:14 +0000 (01:39 +0000)]
[libFuzzer] in fork mode, make sure the child stats are always collected. This should fix the flakiness in fork-ubsan.test

llvm-svn: 358726

5 years ago[libc++] Make __debug_less::operator() constexpr
Thomas Anderson [Fri, 19 Apr 2019 00:52:54 +0000 (00:52 +0000)]
[libc++] Make __debug_less::operator() constexpr

This is a followup to [1] which added a new `__debug_less::operator()` overload.
[2] added `_LIBCPP_CONSTEXPR_AFTER_CXX17` to the original
`__debug_less::operator()` between the time of writing [1] and landing it.  This
change adds `_LIBCPP_CONSTEXPR_AFTER_CXX17` to the new overload too.

[1] https://reviews.llvm.org/rL358423
[2] https://reviews.llvm.org/rL358252

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

llvm-svn: 358725

5 years agoAdd header guard to Reusables.h [NFC]
Ali Tamur [Fri, 19 Apr 2019 00:42:54 +0000 (00:42 +0000)]
Add header guard to Reusables.h [NFC]

llvm-svn: 358724