platform/upstream/llvm.git
5 years agoFix typos: (re)?sor?uce -> (re)?source
Fangrui Song [Fri, 26 Apr 2019 05:56:23 +0000 (05:56 +0000)]
Fix typos: (re)?sor?uce -> (re)?source

Closes: https://github.com/llvm/llvm-project/pull/10

In-collaboration-with: Olivier Cochard-Labbé <olivier@FreeBSD.org>
Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
Differential Revision: https://reviews.llvm.org/D61021

llvm-svn: 359277

5 years agoRevert "[lsan] Use SANITIZER_WORDSIZE when selecting ByteMap"
Vitaly Buka [Fri, 26 Apr 2019 05:19:32 +0000 (05:19 +0000)]
Revert "[lsan] Use SANITIZER_WORDSIZE when selecting ByteMap"

New static_assert fails on a bot.

This reverts commit r359269.

llvm-svn: 359276

5 years agoFix r359229 which tried to fix r359159...
Chandler Carruth [Fri, 26 Apr 2019 05:04:33 +0000 (05:04 +0000)]
Fix r359229 which tried to fix r359159...

When r359229 added noexcept to the declaration of `~mutex`, it didn't
add it to the definition which caused -Wimplicit-exception-spec-mismatch
to fire. This just adapts the definition to agree with the declaration.

llvm-svn: 359275

5 years agoNFC: Clang-format msan_allocator.cc
Vitaly Buka [Fri, 26 Apr 2019 04:22:28 +0000 (04:22 +0000)]
NFC: Clang-format msan_allocator.cc

llvm-svn: 359270

5 years ago[lsan] Use SANITIZER_WORDSIZE when selecting ByteMap
Vitaly Buka [Fri, 26 Apr 2019 04:20:27 +0000 (04:20 +0000)]
[lsan] Use SANITIZER_WORDSIZE when selecting ByteMap

Originally this code as added for 64-bit platform and was never changed.
Add static_assert to make sure that we have correct map on all platforms.

llvm-svn: 359269

5 years ago[ELF] Change std::max<uint64_t> to uint32_t for section alignment
Fangrui Song [Fri, 26 Apr 2019 04:07:58 +0000 (04:07 +0000)]
[ELF] Change std::max<uint64_t> to uint32_t for section alignment

Summary:
We use `uint32_t SectionBase::Alignment` and `uint32_t
PhdrEntry::p_align` despite alignments being 64 bits in ELF64.
Fix the std::max template arguments accordingly.

The currently 160-byte InputSection will become 168 bytes if we make SectionBase::Alignment uint64_t.

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

llvm-svn: 359268

5 years ago[NFC] Add baseline tests for int isKnownNonZero
Dan Robertson [Fri, 26 Apr 2019 02:55:54 +0000 (02:55 +0000)]
[NFC] Add baseline tests for int isKnownNonZero

Add baseline tests for improvements of isKnownNonZero for integer types.

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

llvm-svn: 359267

5 years agoPR41607: Don't forget to substitute outer template arguments into a
Richard Smith [Fri, 26 Apr 2019 02:11:23 +0000 (02:11 +0000)]
PR41607: Don't forget to substitute outer template arguments into a
class-scope explicit specialization of a class template.

llvm-svn: 359266

5 years ago[llvm-objcopy] Accept --long-option but not -long-option
Fangrui Song [Fri, 26 Apr 2019 02:10:10 +0000 (02:10 +0000)]
[llvm-objcopy] Accept --long-option but not -long-option

Summary:

llvm-{objcopy,strip} (and many other LLVM binary utilities) accept
cl::opt style -long-option as well as many short options (e.g. -p -S
-x). People who use them as replacement of GNU binutils often use the
grouped option syntax (POSIX Utility Conventions), e.g. -Sx => -S -x,
-Wd => -W -d, -sj.text => -s -j.text

There is ambiguity if a long option starts with the character used by a
short option. Drop the support for -long-option to resolve the ambiguity.

This divergence from other utilities is accepted (other utilities
continue supporting -long-option).
https://lists.llvm.org/pipermail/llvm-dev/2019-April/131786.html

Reviewers: alexshap, jakehehrlich, jhenderson, rupprecht, espindola

Reviewed By: jakehehrlich, jhenderson, rupprecht

Subscribers: grimar, emaste, arichardson, llvm-commits

Tags: #llvm

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

llvm-svn: 359265

5 years ago[analyzer] RetainCount: Add a suppression for "the Matching rule".
Artem Dergachev [Fri, 26 Apr 2019 02:05:18 +0000 (02:05 +0000)]
[analyzer] RetainCount: Add a suppression for "the Matching rule".

In the OSObject universe there appears to be another slightly popular contract,
apart from "create" and "get", which is "matching". It optionally consumes
a "table" parameter and if a table is passed, it fills in the table and
returns it at +0; otherwise, it creates a new table, fills it in and
returns it at +1.

For now suppress false positives by doing a conservative escape on all functions
that end with "Matching", which is the naming convention that seems to be
followed by all such methods.

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

llvm-svn: 359264

5 years ago[analyzer] RetainCount: Allow offsets in return values.
Artem Dergachev [Fri, 26 Apr 2019 02:05:15 +0000 (02:05 +0000)]
[analyzer] RetainCount: Allow offsets in return values.

Because RetainCountChecker has custom "local" reasoning about escapes,
it has a separate facility to deal with tracked symbols at end of analysis
and check them for leaks regardless of whether they're dead or not.
This facility iterates over the list of tracked symbols and reports
them as leaks, but it needs to treat the return value specially.

Some custom allocators tend to return the value with an offset, storing
extra metadata at the beginning of the buffer. In this case the return value
would be a non-base region. In order to avoid false positives, we still need to
find the original symbol within the return value, otherwise it'll be unable
to match it to the item in the list of tracked symbols.

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

llvm-svn: 359263

5 years ago[analyzer] Fix crash when returning C++ objects from ObjC messages-to-nil.
Artem Dergachev [Fri, 26 Apr 2019 02:05:12 +0000 (02:05 +0000)]
[analyzer] Fix crash when returning C++ objects from ObjC messages-to-nil.

the assertion is in fact incorrect: there is a cornercase in Objective-C++
in which a C++ object is not constructed with a constructor, but merely
zero-initialized. Namely, this happens when an Objective-C message is sent
to a nil and it is supposed to return a C++ object.

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

llvm-svn: 359262

5 years ago[www] Rebuild cxx_dr_status.
Richard Smith [Fri, 26 Apr 2019 01:51:08 +0000 (01:51 +0000)]
[www] Rebuild cxx_dr_status.

llvm-svn: 359261

5 years agoC++ DR2387: a variable template declared wtih (or instantiated with) a
Richard Smith [Fri, 26 Apr 2019 01:51:08 +0000 (01:51 +0000)]
C++ DR2387: a variable template declared wtih (or instantiated with) a
const-qualified type is not implicitly given internal linkage. But a
variable template declared 'static' is.

This reinstates part of r359048, reverted in r359076.

llvm-svn: 359260

5 years agoAdd missing diagnostic for explicit instantiation declarations naming
Richard Smith [Fri, 26 Apr 2019 01:51:07 +0000 (01:51 +0000)]
Add missing diagnostic for explicit instantiation declarations naming
internal linkage entities.

Such constructs are ill-formed by [temp.explicit]p13. We make a special
exception to permit an invalid construct used by libc++ in some build
modes: its <valarray> header declares some functions with the
internal_linkage attribute and then (meaninglessly) provides explicit
instantiation declarations for them. Luckily, Clang happens to
effectively ignore the explicit instantiation declaration when
generating code in this case, and this change codifies that behavior.

This reinstates part of r359048, reverted in r359076. (The libc++ issue
triggering the rollback has been addressed.)

llvm-svn: 359259

5 years agoRevert lib/Header: Fix Visual Studio builds
Tom Stellard [Fri, 26 Apr 2019 01:43:59 +0000 (01:43 +0000)]
Revert lib/Header: Fix Visual Studio builds

This reverts r359257 (git commit 00d9789509a4c573a48f60893b95314a119edd42)

This broke check-clang.

llvm-svn: 359258

5 years agolib/Header: Fix Visual Studio builds
Tom Stellard [Fri, 26 Apr 2019 01:18:59 +0000 (01:18 +0000)]
lib/Header: Fix Visual Studio builds

Summary:
This is a follow up to r355253, which inadvertently broke Visual
Studio builds by trying to copy files from CMAKE_CFG_INTDIR.

See https://reviews.llvm.org/D58537#inline-532492

Reviewers: smeenai, vzakhari, phosek

Reviewed By: smeenai

Subscribers: mgorny, cfe-commits

Tags: #clang

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

llvm-svn: 359257

5 years agoadd tuple_cat test for const T
Eric Fiselier [Fri, 26 Apr 2019 01:06:32 +0000 (01:06 +0000)]
add tuple_cat test for const T

llvm-svn: 359256

5 years agoFix return type of std::tuple_cat.
Eric Fiselier [Fri, 26 Apr 2019 01:02:18 +0000 (01:02 +0000)]
Fix return type of std::tuple_cat.

When the arguments to tuple cat were const, the const was incorrectly
propagated into the type of the resulting tuple. For example:

const std::tuple<int> t(42);
auto r = std::tuple_cat(t, t);
// Incorrect! should be std::tuple<int, int>.
static_assert(is_same_v<decltype(r), std::tuple<const int, const int>>);

llvm-svn: 359255

5 years ago[libFuzzer] Disable MSan interceptors in SIGINT handler.
Matt Morehouse [Fri, 26 Apr 2019 00:17:41 +0000 (00:17 +0000)]
[libFuzzer] Disable MSan interceptors in SIGINT handler.

Summary:
Avoids an MSan false positive if the SIGINT comes while the user
callback is running.  The false positive happens when the interrupt
handler calls opendir() to remove some temporary files, which is
intercepted by MSan.

Fixes https://github.com/google/oss-fuzz/issues/2332.

Reviewers: kcc

Reviewed By: kcc

Subscribers: llvm-commits, Dor1s, metzman

Tags: #llvm

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

llvm-svn: 359254

5 years ago[GlobalOpt] Swap the expensive check for cold calls with the cheap TTI check
Justin Bogner [Fri, 26 Apr 2019 00:12:50 +0000 (00:12 +0000)]
[GlobalOpt] Swap the expensive check for cold calls with the cheap TTI check

isValidCandidateForColdCC is much more expensive than
TTI.useColdCCForColdCall, which by default just returns false. Avoid
doing this work if we're not going to look at the answer anyway.

This change is NFC, but I see significant compile time improvements on
some code with pathologically many functions.

llvm-svn: 359253

5 years ago[ORC] Remove symbols from dependency lists when failing materialization.
Lang Hames [Thu, 25 Apr 2019 23:31:33 +0000 (23:31 +0000)]
[ORC] Remove symbols from dependency lists when failing materialization.

When failing materialization of a symbol X, remove X from the dependants list
of any of X's dependencies. This ensures that when X's dependencies are
emitted (or fail themselves) they do not try to access the no-longer-existing
MaterializationInfo for X.

llvm-svn: 359252

5 years agoRevert [COFF] Statically link certain runtime library functions
Reid Kleckner [Thu, 25 Apr 2019 23:30:41 +0000 (23:30 +0000)]
Revert [COFF] Statically link certain runtime library functions

This reverts r359250 (git commit 4730604bd3a361c68b92b18bf73a5daa15afe9f4)

The newly added test should use -cc1 and -emit-llvm and there are other
test failures that need fixing.

llvm-svn: 359251

5 years ago[COFF] Statically link certain runtime library functions
Reid Kleckner [Thu, 25 Apr 2019 23:04:20 +0000 (23:04 +0000)]
[COFF] Statically link certain runtime library functions

Statically link certain runtime library functions for MSVC/GNU Windows
environments. This is consistent with MSVC behavior.

Fixes LNK4286 and LNK4217 warnings from link.exe when linking the static
CRT:
  LINK : warning LNK4286: symbol '__std_terminate' defined in 'libvcruntime.lib(ehhelpers.obj)' is imported by 'ASAN_NOINST_TEST_OBJECTS.asan_noinst_test.cc.x86_64-calls.o'
  LINK : warning LNK4286: symbol '__std_terminate' defined in 'libvcruntime.lib(ehhelpers.obj)' is imported by 'ASAN_NOINST_TEST_OBJECTS.asan_test_main.cc.x86_64-calls.o'
  LINK : warning LNK4217: symbol '_CxxThrowException' defined in 'libvcruntime.lib(throw.obj)' is imported by 'ASAN_NOINST_TEST_OBJECTS.gtest-all.cc.x86_64-calls.o' in function '"int `public: static class UnitTest::GetInstance * __cdecl testing::UnitTest::GetInstance(void)'::`1'::dtor$5" (?dtor$5@?0??GetInstance@UnitTest@testing@@SAPEAV12@XZ@4HA)'

Reviewers: mstorsjo, efriedma, TomTan, compnerd, smeenai, mgrang

Subscribers: abdulras, theraven, smeenai, pcc, mehdi_amini, javed.absar, inglorion, kristof.beyls, dexonsmith, cfe-commits

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

llvm-svn: 359250

5 years ago[TestTemplateFunction] Add a missing debug info variant.
Davide Italiano [Thu, 25 Apr 2019 22:53:10 +0000 (22:53 +0000)]
[TestTemplateFunction] Add a missing debug info variant.

llvm-svn: 359249

5 years ago[CUDA] Implemented _[bi]mma* builtins.
Artem Belevich [Thu, 25 Apr 2019 22:28:09 +0000 (22:28 +0000)]
[CUDA] Implemented _[bi]mma* builtins.

These builtins provide access to the new integer and
sub-integer variants of MMA (matrix multiply-accumulate) instructions
provided by CUDA-10.x on sm_75 (AKA Turing) GPUs.

Also added a feature for PTX 6.4. While Clang/LLVM does not generate
any PTX instructions that need it, we still need to pass it through to
ptxas in order to be able to compile code that uses the new 'mma'
instruction as inline assembly (e.g used by NVIDIA's CUTLASS library
https://github.com/NVIDIA/cutlass/blob/master/cutlass/arch/mma.h#L101)

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

llvm-svn: 359248

5 years agoPTX 6.3 extends `wmma` instruction to support s8/u8/s4/u4/b1 -> s32.
Artem Belevich [Thu, 25 Apr 2019 22:27:57 +0000 (22:27 +0000)]
PTX 6.3 extends `wmma` instruction to support s8/u8/s4/u4/b1 -> s32.

All of the new instructions are still handled mostly by tablegen. I've slightly
refactored the code to drive intrinsic/instruction generation from a master
list of supported variants, so all irregularities have to be implemented in one place only.

The test generation script wmma.py has been refactored in a similar way.

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

llvm-svn: 359247

5 years ago[NVPTX] generate correct MMA instruction mnemonics with PTX63+.
Artem Belevich [Thu, 25 Apr 2019 22:27:46 +0000 (22:27 +0000)]
[NVPTX] generate correct MMA instruction mnemonics with PTX63+.

PTX 6.3 requires using ".aligned" in the MMA instruction names.
In order to generate correct name, now we pass current
PTX version to each instruction as an extra constant operand
and InstPrinter adjusts its output accordingly.

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

llvm-svn: 359246

5 years ago[NVPTX] Refactor generation of MMA intrinsics and instructions. NFC.
Artem Belevich [Thu, 25 Apr 2019 22:27:35 +0000 (22:27 +0000)]
[NVPTX] Refactor generation of MMA intrinsics and instructions. NFC.

Generalized constructions of 'fragments' of MMA operations to provide
common primitives for construction of the ops. This will make it easier
to add new variants of the instructions that operate on integer types.

Use nested foreach loops which makes it possible to better control
naming of the intrinsics.

This patch does not affect LLVM's output, so there are no test changes.

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

llvm-svn: 359245

5 years ago[Object][XCOFF] Add intial support for section header table.
Sean Fertile [Thu, 25 Apr 2019 21:36:04 +0000 (21:36 +0000)]
[Object][XCOFF] Add intial support for section header table.

Adds a representation of the section header table to XCOFFObjectFile,
and implements enough to dump the section headers with llvm-obdump.

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

llvm-svn: 359244

5 years agoRemove incorrect explicit instantiation declarations for valarray
Richard Smith [Thu, 25 Apr 2019 21:31:58 +0000 (21:31 +0000)]
Remove incorrect explicit instantiation declarations for valarray

libc++ ABI v1 provides three valarray symbols as part of the shared library:

valarray<size_t>::valarray(size_t)
valarray<size_t>::~valarray()
valarray<size_t>::resize(size_t, size_t)

The first two of these are intended to be removed in V2 of the ABI: they're
attributed _LIBCPP_HIDE_FROM_ABI_AFTER_V1, and  it appears that the intention
is that these symbols from the library are not used even when building using
the V1 ABI. However, there are explicit instantiation declarations for all
three symbols in the header, which are not correct as we do not intend to find
an instantiation of these functions that is provided elsewhere.

(A recent change to clang to properly diagnose explicit instantiation
declarations of internal linkage functions -- required by [temp.explicit]p13 --
had to be rolled back because it diagnosed these explicit instantiations.)

Remove the explicit instantiation declarations, and remove the explicit
instantiation definitions for V2 of the libc++ ABI onwards.

llvm-svn: 359243

5 years ago[CMake][PowerPC] Recognize LLVM_NATIVE_TARGET="ppc64le" as PowerPC
Keno Fischer [Thu, 25 Apr 2019 21:28:03 +0000 (21:28 +0000)]
[CMake][PowerPC] Recognize LLVM_NATIVE_TARGET="ppc64le" as PowerPC

Summary:
This value is derived from the host triple, which on the machine
I'm currently using is `ppc64le-linux-redhat`. This change makes
LLVM compile.

Reviewers: nemanjai
Differential Revision: https://reviews.llvm.org/D57118

llvm-svn: 359242

5 years ago[PGO] Fix buildbot failure in 359215
Rong Xu [Thu, 25 Apr 2019 21:16:41 +0000 (21:16 +0000)]
[PGO] Fix buildbot failure in 359215

Revert the part of changes in r359215 that failing in some platforms.
I will re-enable them later.

llvm-svn: 359241

5 years agoAnother use of the interactive lldb.debugger.
Jason Molenda [Thu, 25 Apr 2019 20:45:10 +0000 (20:45 +0000)]
Another use of the interactive lldb.debugger.

llvm-svn: 359240

5 years ago[AMDGPU] gfx1010 - fix ubsan failure
Stanislav Mekhanoshin [Thu, 25 Apr 2019 20:39:06 +0000 (20:39 +0000)]
[AMDGPU] gfx1010 - fix ubsan failure

Revert DecoderNamespace in one place for now. It will need more
changes to properly work.

llvm-svn: 359239

5 years ago[x86] add tests for vector fdiv reciprocal estimate; NFC
Sanjay Patel [Thu, 25 Apr 2019 20:35:47 +0000 (20:35 +0000)]
[x86] add tests for vector fdiv reciprocal estimate; NFC

llvm-svn: 359238

5 years ago[analyzer] Add FIXMEs for alpha.unix.cstring.OutOfBounds false positives.
Artem Dergachev [Thu, 25 Apr 2019 20:30:14 +0000 (20:30 +0000)]
[analyzer] Add FIXMEs for alpha.unix.cstring.OutOfBounds false positives.

Caused by incorrect strlcat() modeling in r332303,
cf. https://bugs.llvm.org/show_bug.cgi?id=37687#c8

llvm-svn: 359237

5 years agoAssigning to a local object in a return statement prevents copy elision. NFC.
David Blaikie [Thu, 25 Apr 2019 20:09:00 +0000 (20:09 +0000)]
Assigning to a local object in a return statement prevents copy elision. NFC.

I added a diagnostic along the lines of `-Wpessimizing-move` to detect `return x = y` suppressing copy elision, but I don't know if the diagnostic is really worth it. Anyway, here are the places where my diagnostic reported that copy elision would have been possible if not for the assignment.

P1155R1 in the post-San-Diego WG21 (C++ committee) mailing discusses whether WG21 should fix this pitfall by just changing the core language to permit copy elision in cases like these.

(Kona update: The bulk of P1155 is proceeding to CWG review, but specifically *not* the parts that explored the notion of permitting copy-elision in these specific cases.)

Reviewed By: dblaikie

Author: Arthur O'Dwyer

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

llvm-svn: 359236

5 years agoSkip type units/type uniquing when we know we're only emitting the type once (vtable...
David Blaikie [Thu, 25 Apr 2019 20:05:47 +0000 (20:05 +0000)]
Skip type units/type uniquing when we know we're only emitting the type once (vtable-based emission when triggered by a strong vtable, with -fno-standalone-debug)

(this would regress size without a corresponding LLVM change that avoids
putting other user defined types inside type units when they aren't in
their own type units - instead emitting declarations inside the type
unit and a definition in the primary CU)

Reviewers: aprantl

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

llvm-svn: 359235

5 years agoTwo tests were using the interactive convenience variable
Jason Molenda [Thu, 25 Apr 2019 20:03:39 +0000 (20:03 +0000)]
Two tests were using the interactive convenience variable
lldb.debugger.  They should not be.
<rdar://problem/50210340>

llvm-svn: 359234

5 years ago[Windows] Separate elements in -print-search-dirs with semicolons
Martin Storsjo [Thu, 25 Apr 2019 20:03:20 +0000 (20:03 +0000)]
[Windows] Separate elements in -print-search-dirs with semicolons

Path lists on windows should always be separated by semicolons, not
colons. Reuse llvm::sys::EnvPathSeparator for this purpose (as that's
also a path list that is separated in the same way).

Alternatively, this could just be a local ifdef _WIN32 in this function,
or generalizing the existing EnvPathSeparator to e.g. a
llvm::sys::path::PathListSeparator?

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

llvm-svn: 359233

5 years agoRemove libc++ checks and workarounds for unsupported old versions of GCC (<4.9).
Richard Smith [Thu, 25 Apr 2019 20:02:10 +0000 (20:02 +0000)]
Remove libc++ checks and workarounds for unsupported old versions of GCC (<4.9).

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

llvm-svn: 359232

5 years ago[GlobalISel][AArch64] Make G_EXTRACT_VECTOR_ELT legal for v8s16s
Jessica Paquette [Thu, 25 Apr 2019 20:00:57 +0000 (20:00 +0000)]
[GlobalISel][AArch64] Make G_EXTRACT_VECTOR_ELT legal for v8s16s

This case was missing before, so we couldn't legalize it.

Add it to AArch64LegalizerInfo.cpp and update select-extract-vector-elt.mir.

llvm-svn: 359231

5 years ago[analyzer][UninitializedObjectChecker] PR41590: Regard _Atomic types as primitive
Kristof Umann [Thu, 25 Apr 2019 20:00:51 +0000 (20:00 +0000)]
[analyzer][UninitializedObjectChecker] PR41590: Regard _Atomic types as primitive

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

For the following code snippet, UninitializedObjectChecker crashed:

struct MyAtomicInt {
  _Atomic(int) x;
  MyAtomicInt() {}
};

void entry() {
  MyAtomicInt b;
}

The problem was that _Atomic types were not regular records, unions,
dereferencable or primitive, making the checker hit the llvm_unreachable at
lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp:347.
The solution is to regard these types as primitive as well. The test case shows
that with this addition, not only are we able to get rid of the crash, but we
can identify x as uninitialized.

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

llvm-svn: 359230

5 years agoFix buildbot failures after r359159.
Richard Smith [Thu, 25 Apr 2019 20:00:06 +0000 (20:00 +0000)]
Fix buildbot failures after r359159.

std::mutex was not actually is_nothrow_default_constructible in C++98/C++03,
because the variable declaration

  std::mutex M;

... could throw an exception from the mutex destructor. Fix it by marking the
destructor as non-throwing. This has no effect in C++11 onwards, because
destructors are non-throwing by default in those language modes.

llvm-svn: 359229

5 years ago[lldb] [lit] Use constexpr and better constraints in Register tests
Michal Gorny [Thu, 25 Apr 2019 19:56:54 +0000 (19:56 +0000)]
[lldb] [lit] Use constexpr and better constraints in Register tests

Use constexpr to explicitly indicate that we're dealing with integer
constants, and provoke clang to assign them straight to registers
whenever possible.  Adjust input constraints in %mmN tests to "rm"
as using integer constants is apparently disallowed there.  Also
use "i" for %rN tests, as we don't want clang to accidentally clobber
those general purpose registers while assigning to them (however
unlikely that is).

llvm-svn: 359228

5 years agoSet _LIBCPP_DLL_VIS on _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS in MinGW mode
Martin Storsjo [Thu, 25 Apr 2019 19:46:28 +0000 (19:46 +0000)]
Set _LIBCPP_DLL_VIS on _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS in MinGW mode

Contrary to MSVC, MinGW compilers wants the dllexport attribute on
the declaration of an explicit template instantiation, not on the
definition.

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

llvm-svn: 359227

5 years ago[ObjC][ARC] Let ARC optimizer bail out if the number of pointer states
Akira Hatanaka [Thu, 25 Apr 2019 19:42:55 +0000 (19:42 +0000)]
[ObjC][ARC] Let ARC optimizer bail out if the number of pointer states
it keeps track of becomes too large

ARC optimizer does a top-down and a bottom-up traversal of the whole
function to pair up retain and release instructions and remove them.
This can be expensive if the number of instructions in the function and
pointer states it tracks are large since it has to look at each pointer
state and determine whether the instruction being visited can
potentially use the pointer.

This patch adds a command line option that sets a limit to the number of
pointers it tracks.

rdar://problem/49477063

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

llvm-svn: 359226

5 years ago[AMDGPU] gfx1010 VOP1 instructions
Stanislav Mekhanoshin [Thu, 25 Apr 2019 19:01:51 +0000 (19:01 +0000)]
[AMDGPU] gfx1010 VOP1 instructions

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

llvm-svn: 359225

5 years ago[AMDGPU] gfx1010 utility functions
Stanislav Mekhanoshin [Thu, 25 Apr 2019 18:53:41 +0000 (18:53 +0000)]
[AMDGPU] gfx1010 utility functions

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

llvm-svn: 359224

5 years ago[libFuzzer] Require linux for libcxx.test
Matt Morehouse [Thu, 25 Apr 2019 18:42:30 +0000 (18:42 +0000)]
[libFuzzer] Require linux for libcxx.test

llvm-svn: 359223

5 years ago[GlobalISel][AArch64] Add generic legalization rule for extends
Jessica Paquette [Thu, 25 Apr 2019 18:42:00 +0000 (18:42 +0000)]
[GlobalISel][AArch64] Add generic legalization rule for extends

This adds a legalization rule for G_ZEXT, G_ANYEXT, and G_SEXT which allows
extends whenever the types will fit in registers (or the source is an s1).

Update tests. Add GISel checks throughout all of arm64-vabs.ll,
where we now select a good portion of the code. Add GISel checks to
arm64-subvector-extend.ll, which has a good number of vector extends in it.

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

llvm-svn: 359222

5 years ago[lldb] [lit] Un-XFAIL Register/x86-64-read.test for Darwin
Michal Gorny [Thu, 25 Apr 2019 18:38:58 +0000 (18:38 +0000)]
[lldb] [lit] Un-XFAIL Register/x86-64-read.test for Darwin

llvm-svn: 359221

5 years ago[libc++][test] Fix noexcept assertions in variant's get tests
Casey Carter [Thu, 25 Apr 2019 18:36:29 +0000 (18:36 +0000)]
[libc++][test] Fix noexcept assertions in variant's get tests

All constant expressions are non-potentially-throwing in C++14, but that is *not* the case in C++17. Change these tests of the `variant`-flavored overloads of `std::get` to expect the correct behavior when the compiler is not GCC or is GCC 9+.

Credit to Jonathan Wakely for providing an improved version of my initial change that validates the incorrect behavior on GCC < 9 as well as validating the correct behavior on other compilers.

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

llvm-svn: 359220

5 years ago[SelectionDAG][X86] Use stack load/store in PromoteIntRes_BITCAST when the input...
Craig Topper [Thu, 25 Apr 2019 18:19:59 +0000 (18:19 +0000)]
[SelectionDAG][X86] Use stack load/store in PromoteIntRes_BITCAST when the input needs to be be split and the output type is a vector.

We had special case handling here, but it uses a scalar any_extend for the
promotion then bitcasts to the final type. This won't split up the input data
into multiple promoted elements like we need.

This patch falls back to doing the conversion through memory.

Fixes PR41594 which I believe was reflected in the bitcast-vector-bool.ll
changes. The changes to vector-half-conversions.ll are fixing a previously
unknown miscompile from this issue.

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

llvm-svn: 359219

5 years ago[compiler-rt] Build custom libc++abi without exceptions.
Matt Morehouse [Thu, 25 Apr 2019 18:14:24 +0000 (18:14 +0000)]
[compiler-rt] Build custom libc++abi without exceptions.

Summary:
Since neither compiler-rt nor the libc++ we build use exceptions, we
don't need libc++abi to have them either.

This resolves an issue where libFuzzer's private libc++ contains
implementations for __cxa_throw and friends, causing fuzz targets built
with their own C++ library to segfault during exception unwinding.

See https://github.com/google/oss-fuzz/issues/2328.

Reviewers: phosek, EricWF, kcc

Reviewed By: phosek

Subscribers: kcc, dberris, mgorny, christof, llvm-commits, metzman

Tags: #llvm

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

llvm-svn: 359218

5 years agoDebugInfo: Fix bitrotted test case
David Blaikie [Thu, 25 Apr 2019 18:11:48 +0000 (18:11 +0000)]
DebugInfo: Fix bitrotted test case

This test was updated with some CHECK suffix variants, but dropped
checking for the unsuffixed 'CHECK'

llvm-svn: 359217

5 years agocreduce-clang-crash: add -F flag to grep to avoid interpreting string as regex
Amy Huang [Thu, 25 Apr 2019 18:00:25 +0000 (18:00 +0000)]
creduce-clang-crash: add -F flag to grep to avoid interpreting string as regex

llvm-svn: 359216

5 years ago[PGO] Enable InstrProf lowering for Clang PGO instrumentation in the new pass manager
Rong Xu [Thu, 25 Apr 2019 17:52:43 +0000 (17:52 +0000)]
[PGO] Enable InstrProf lowering for Clang PGO instrumentation in the new pass manager
Currently InstrProf lowering is not enabled for Clang PGO instrumentation in
the new pass manager. The following command
"-fprofile-instr-generate -fexperimental-new-pass-manager ..." is broken.

This CL enables InstrProf lowering pass for Clang PGO instrumentation in the
new pass manager.

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

llvm-svn: 359215

5 years ago[clangd] Optimize "don't include me" check.
Sam McCall [Thu, 25 Apr 2019 17:47:07 +0000 (17:47 +0000)]
[clangd] Optimize "don't include me" check.

Summary:
llvm::Regex is really slow, and regex evaluation during preamble indexing was
showing up as 25% on a profile of clangd in a codebase with large preambles.

Reviewers: ilya-biryukov

Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 359214

5 years ago[NFC][Sanitizer] Extract GetFuncAddr from GetRealFunctionAddress
Julian Lettner [Thu, 25 Apr 2019 17:46:29 +0000 (17:46 +0000)]
[NFC][Sanitizer] Extract GetFuncAddr from GetRealFunctionAddress

Summary:
Hopefully, this will enable cleanup/removal of GetRealFunctionAddress in
follow-up commits.

Subscribers: #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

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

llvm-svn: 359213

5 years agoFix bug 37903:MS ABI: handle inline static data member and inline variable as templat...
Jennifer Yu [Thu, 25 Apr 2019 17:45:45 +0000 (17:45 +0000)]
Fix bug 37903:MS ABI: handle inline static data member and inline variable as template static data member

llvm-svn: 359212

5 years agoImplement 'lerp'; which is the last bit of P0811. Mark that paper as complete.
Marshall Clow [Thu, 25 Apr 2019 17:44:18 +0000 (17:44 +0000)]
Implement 'lerp'; which is the last bit of P0811. Mark that paper as complete.

llvm-svn: 359211

5 years ago[lldb] [lit] Add tests for reading new x86_64 registers
Michal Gorny [Thu, 25 Apr 2019 17:42:49 +0000 (17:42 +0000)]
[lldb] [lit] Add tests for reading new x86_64 registers

Add tests covering read operations for the general-purpose and XMM
registers added in x86_64 (r8-r15 and xmm8-xmm15).

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

llvm-svn: 359210

5 years ago[lldb] [lit] Remove unnecessary array use in XMM reading test
Michal Gorny [Thu, 25 Apr 2019 17:42:40 +0000 (17:42 +0000)]
[lldb] [lit] Remove unnecessary array use in XMM reading test

Remove the use of 2-element array for XMM data.  It is an accidental
leftover from previous implementation attempt, and it is unnecessary
with xmm_t.

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

llvm-svn: 359208

5 years ago[WebAssembly] Always take into account added when applying runtime relocations
Sam Clegg [Thu, 25 Apr 2019 17:11:54 +0000 (17:11 +0000)]
[WebAssembly] Always take into account added when applying runtime relocations

The code we generate for applying data relocations at runtime omitted
the symbols with GOT entries.

Also refactor the code to reduce duplication.

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

llvm-svn: 359207

5 years agoFixed typo in CompileUnit::GetImportedModules documentation [NFC]
Raphael Isemann [Thu, 25 Apr 2019 17:08:54 +0000 (17:08 +0000)]
Fixed typo in CompileUnit::GetImportedModules documentation [NFC]

llvm-svn: 359206

5 years ago[Evaluator] Walk initial elements when handling load through bitcast
Robert Lougher [Thu, 25 Apr 2019 17:00:01 +0000 (17:00 +0000)]
[Evaluator] Walk initial elements when handling load through bitcast

When evaluating a store through a bitcast, the evaluator tries to move the
bitcast from the pointer onto the stored value. If the cast is invalid, it
tries to "introspect" the type to get a valid cast by obtaining a pointer to
the initial element (if the type is nested, this may require walking several
initial elements).

In some situations it is possible to get a bitcast on a load (e.g. with
unions, where the bitcast may not be the same type as the store). However,
equivalent logic to the store to introspect the type is missing. This patch
add this logic.

Note, when developing the patch I was unhappy with adding similar logic
directly to the load case as it could get out of step. Instead, I have
abstracted the "introspection" into a helper function, with the specifics
being handled by a passed-in lambda function.

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

llvm-svn: 359205

5 years ago[GlobalISel][AArch64] Legalize G_FNEARBYINT
Jessica Paquette [Thu, 25 Apr 2019 16:44:40 +0000 (16:44 +0000)]
[GlobalISel][AArch64] Legalize G_FNEARBYINT

Add legalizer support for G_FNEARBYINT. It's the same as G_FCEIL etc.

Since the importer allows us to automatically select this after legalization,
also add tests for selection etc. Also update arm64-vfloatintrinsics.ll.

llvm-svn: 359204

5 years ago[GlobalISel] Add IRTranslator support for G_FNEARBYINT
Jessica Paquette [Thu, 25 Apr 2019 16:39:28 +0000 (16:39 +0000)]
[GlobalISel] Add IRTranslator support for G_FNEARBYINT

Translate llvm.nearbyint into G_FNEARBYINT as a simple intrinsic. Update
arm64-irtranslator.ll.

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

llvm-svn: 359203

5 years ago[clangd] Use JSON streaming API for Trace rather than pasting strings. NFC
Sam McCall [Thu, 25 Apr 2019 16:37:07 +0000 (16:37 +0000)]
[clangd] Use JSON streaming API for Trace rather than pasting strings. NFC

llvm-svn: 359202

5 years ago[GlobalISel] Add a G_FNEARBYINT opcode
Jessica Paquette [Thu, 25 Apr 2019 16:36:03 +0000 (16:36 +0000)]
[GlobalISel] Add a G_FNEARBYINT opcode

For eventually selecting llvm.nearbyint. Equivalent to the SelectionDAG
nearbyint node.

Update legalizer-info-validation.mir.

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

llvm-svn: 359201

5 years ago[OPENMP] Improved check for the linear dependency in the non-rectangular
Alexey Bataev [Thu, 25 Apr 2019 16:21:13 +0000 (16:21 +0000)]
[OPENMP] Improved check for the linear dependency in the non-rectangular
loop nests.

Added a checks that the initializer/condition expressions depend only
only of the single previous loop iteration variable.

llvm-svn: 359200

5 years ago[scudo][standalone] Introduce the SizeClassMap
Kostya Kortchinsky [Thu, 25 Apr 2019 15:49:34 +0000 (15:49 +0000)]
[scudo][standalone] Introduce the SizeClassMap

Summary:
As with the sanitizer_common allocator, the SCM allows for efficient
mapping between sizes and size-classes, table-free.

It doesn't depart significantly from the original, except that we
allow the use of size-class 0 for other purposes (as opposed to
chunks of size 0). The Primary will use it to hold TransferBatches.

Reviewers: vitalybuka, eugenis, hctim, morehouse

Reviewed By: vitalybuka

Subscribers: srhines, mgorny, delcypher, #sanitizers, llvm-commits

Tags: #llvm, #sanitizers

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

llvm-svn: 359199

5 years agoRevert "[JITLink] Make the JITLink MachO/x86-64 eh-frame test work on Windows."
Lang Hames [Thu, 25 Apr 2019 15:18:31 +0000 (15:18 +0000)]
Revert "[JITLink] Make the JITLink MachO/x86-64 eh-frame test work on Windows."

This reverts r359169, as it broke one of the windows bots.

llvm-svn: 359198

5 years ago[LLD][ELF] - Convert symbol-index.s testcase to a YAML test case. NFCI.
George Rimar [Thu, 25 Apr 2019 15:08:52 +0000 (15:08 +0000)]
[LLD][ELF] - Convert symbol-index.s testcase to a YAML test case. NFCI.

This removes one more binary object from the inputs and fixes the
test case description.

Previously it said that:
"symbol-index.elf has incorrect type of .symtab section.
There is no symbol bodies because of that and any symbol index becomes incorrect."

But the real reason of the failture was not the incorrect type of a symbol table,
but invalid index of the symbol used in a relocation, what happened because
previous test tried to read .symtab as a SHT_RELA section.

llvm-svn: 359197

5 years agogn build: Document llvm_enable_dia_sdk variable better
Nico Weber [Thu, 25 Apr 2019 14:56:56 +0000 (14:56 +0000)]
gn build: Document llvm_enable_dia_sdk variable better

llvm-svn: 359196

5 years agogn build: Make setting llvm_enable_dia_sdk=true work
Nico Weber [Thu, 25 Apr 2019 14:53:53 +0000 (14:53 +0000)]
gn build: Make setting llvm_enable_dia_sdk=true work

If this is set, %INCLUDE% must contain ".../DIA SDK/include"
and %LIB% must contain ".../DIA SKD/lib/amd64" (assuming you're doing a
64-bit build).

llvm-svn: 359195

5 years ago[LLD][ELF] - Move the test to a correct folder, remove excessive input. NFCI.
George Rimar [Thu, 25 Apr 2019 14:53:23 +0000 (14:53 +0000)]
[LLD][ELF] - Move the test to a correct folder, remove excessive input. NFCI.

This test should live in `invalid` folder.

Also it was possible to avoid adding input
with use of `-docnum=x` yaml2obj argument.

llvm-svn: 359194

5 years ago[OPENMP][AARCH64]Fix the test for declare simd, NFC.
Alexey Bataev [Thu, 25 Apr 2019 14:04:37 +0000 (14:04 +0000)]
[OPENMP][AARCH64]Fix the test for declare simd, NFC.

Renamed function a01 in the test to fix possible problems with the git
hash match during testing.

llvm-svn: 359193

5 years agolld-link: Implement /swaprun: flag
Nico Weber [Thu, 25 Apr 2019 14:02:26 +0000 (14:02 +0000)]
lld-link: Implement /swaprun: flag

r191276 added this to old LLD, but it never made it to new LLD -- except
that the flag was in Options.td, so it was silently ignored. I figured
it should be easy to implement, so I did that instead of removing the
flags from Options.td.

I then discovered that link.exe also supports comma-separated lists of
'cd' and 'net', which made the parsing code a bit annoying.

The Alias technique in Options.td is to get nice help output.

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

llvm-svn: 359192

5 years ago[InstCombine][X86] Tweak generic expansion of PACKSS/PACKUS to shuffle then truncate...
Simon Pilgrim [Thu, 25 Apr 2019 13:51:57 +0000 (13:51 +0000)]
[InstCombine][X86] Tweak generic expansion of PACKSS/PACKUS to shuffle then truncate. NFCI.

This has no effect on constant folding but will be useful when we expand non-saturating PACKSS/PACKUS intrinsics.

llvm-svn: 359191

5 years ago[Support] json::OStream::flush(), which passes through to the underlying stream
Sam McCall [Thu, 25 Apr 2019 13:33:18 +0000 (13:33 +0000)]
[Support] json::OStream::flush(), which passes through to the underlying stream

llvm-svn: 359190

5 years agogn build: Merge r359179
Nico Weber [Thu, 25 Apr 2019 13:29:34 +0000 (13:29 +0000)]
gn build: Merge r359179

llvm-svn: 359189

5 years agogn build: Merge r359174
Nico Weber [Thu, 25 Apr 2019 13:26:54 +0000 (13:26 +0000)]
gn build: Merge r359174

llvm-svn: 359188

5 years agogn build: Merge r359142
Nico Weber [Thu, 25 Apr 2019 13:25:00 +0000 (13:25 +0000)]
gn build: Merge r359142

llvm-svn: 359187

5 years ago[Support] Add JSON streaming output API, faster where the heavy value types aren...
Sam McCall [Thu, 25 Apr 2019 12:51:42 +0000 (12:51 +0000)]
[Support] Add JSON streaming output API, faster where the heavy value types aren't needed.

Summary:
There's still a little bit of constant factor that could be trimmed (e.g.
more overloads to avoid round-tripping primitives through json::Value).
But this solves the memory scaling problem, and greatly improves the performance
constant factor, and the API should leave room for optimization if needed.

Adapt TimeProfiler to use it, eliminating almost all the performance regression
from r358476.

Performance test on my machine:
perf stat -r 5 ~/llvmbuild-opt/bin/clang++ -w -S -ftime-trace -mllvm -time-trace-granularity=0 spirit.cpp

Handcrafted JSON (HEAD=r358532 with r358476 reverted): 2480ms
json::Value (HEAD): 2757ms (+11%)
After this patch: 2520 ms (+1.6%)

Reviewers: anton-afanasyev, lebedev.ri

Subscribers: kristina, llvm-commits

Tags: #llvm

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

llvm-svn: 359186

5 years ago[InstCombine][X86] Add PACKSS/PACKUS tests for truncation where saturation won't...
Simon Pilgrim [Thu, 25 Apr 2019 12:45:11 +0000 (12:45 +0000)]
[InstCombine][X86] Add PACKSS/PACKUS tests for truncation where saturation won't occur

llvm-svn: 359185

5 years agoImplement midpoint for floating point types. Reviewed as https://reviews.llvm.org...
Marshall Clow [Thu, 25 Apr 2019 12:11:43 +0000 (12:11 +0000)]
Implement midpoint for floating point types. Reviewed as https://reviews.llvm.org/D61014.

llvm-svn: 359184

5 years ago[Support] Try to unbreak windows buildbot
Ilya Biryukov [Thu, 25 Apr 2019 11:57:40 +0000 (11:57 +0000)]
[Support] Try to unbreak windows buildbot

After r359179.

llvm-svn: 359183

5 years agoParallel: only allow the first TaskGroup to run tasks parallelly
Fangrui Song [Thu, 25 Apr 2019 11:33:30 +0000 (11:33 +0000)]
Parallel: only allow the first TaskGroup to run tasks parallelly

Summary:
Concurrent (e.g. nested) llvm::parallel::for_each() may lead to dead
locks. See PR35788 (fixed by rLLD322041) and PR41508 (fixed by D60757).

When parallel_for_each() is about to return, in ~Latch() called by
~TaskGroup(), a thread (in the default executor) may block in
Latch::sync() waiting for Count to become zero. If all threads in the
default executor are blocked, it is a dead lock.

To fix this, force serial execution if the current TaskGroup is not the
first one. For a nested llvm::parallel::for_each(), this parallelizes
the outermost loop and serializes inner loops.

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

llvm-svn: 359182

5 years ago[llvm-objdump] Prep for adding newlines before and after "Disassembly of section...
Fangrui Song [Thu, 25 Apr 2019 10:25:52 +0000 (10:25 +0000)]
[llvm-objdump] Prep for adding newlines before and after "Disassembly of section ...:"

llvm-svn: 359181

5 years ago[ConstantRange] [a, b) udiv a full range is [0, umax(b)).
Florian Hahn [Thu, 25 Apr 2019 10:12:43 +0000 (10:12 +0000)]
[ConstantRange] [a, b) udiv a full range is [0, umax(b)).

Reviewers: nikic, spatel, efriedma

Reviewed By: nikic

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

llvm-svn: 359180

5 years ago[Testing] Move clangd::Annotations to llvm testing support
Ilya Biryukov [Thu, 25 Apr 2019 10:08:31 +0000 (10:08 +0000)]
[Testing] Move clangd::Annotations to llvm testing support

Summary:
Annotations allow writing nice-looking unit test code when one needs
access to locations from the source code, e.g. running code completion
at particular offsets in a file. See comments in Annotations.cpp for
more details on the API.

Also got rid of a duplicate annotations parsing code in clang's code
complete tests.

Reviewers: gribozavr, sammccall

Reviewed By: gribozavr

Subscribers: mgorny, hiraditya, ioeric, MaskRay, jkorous, arphaman, kadircet, jdoerfert, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

llvm-svn: 359179

5 years ago[yaml2obj] - Don't crash on invalid inputs.
George Rimar [Thu, 25 Apr 2019 09:59:55 +0000 (09:59 +0000)]
[yaml2obj] - Don't crash on invalid inputs.

yaml2obj might crash on invalid input when unable to parse the YAML.

Recently a crash with a very similar nature was fixed for an empty files.
This patch revisits the fix and does it in yaml::Input instead.
It seems to be more correct way to handle such situation.

With that crash for invalid inputs is also fixed now.

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

llvm-svn: 359178

5 years agoFix include order. NFCI.
Simon Pilgrim [Thu, 25 Apr 2019 09:49:37 +0000 (09:49 +0000)]
Fix include order. NFCI.

llvm-svn: 359177

5 years ago[X86][SSE] combineBitcastvxi1 - add support for bitcasting to non-scalar integers
Simon Pilgrim [Thu, 25 Apr 2019 09:34:36 +0000 (09:34 +0000)]
[X86][SSE] combineBitcastvxi1 - add support for bitcasting to non-scalar integers

Truncate the movmsk scalar integer result to the equivalent scalar integer width as before but then bitcast to the requested type.

We still have the issue identified in PR41594 but D61114 should handle this.

llvm-svn: 359176

5 years agoFix compilation error with -DLIBCXXABI_ENABLE_THREADS=OFF
Michael Platings [Thu, 25 Apr 2019 09:27:50 +0000 (09:27 +0000)]
Fix compilation error with -DLIBCXXABI_ENABLE_THREADS=OFF

The error is:

libcxxabi/src/cxa_guard_impl.h: In instantiation of ‘__cxxabiv1::{anonymous}::LibcppMutex __cxxabiv1::{anonymous}::GlobalStatic<__cxxabiv1::{anonymous}::LibcppMutex>::instance’:
libcxxabi/src/cxa_guard_impl.h:529:62:   required from here
libcxxabi/src/cxa_guard_impl.h:510:23: error: ‘__cxxabiv1::{anonymous}::LibcppMutex __cxxabiv1::{anonymous}::GlobalStatic<__cxxabiv1::{anonymous}::LibcppMutex>::instance’ has incomplete type
 _LIBCPP_SAFE_STATIC T GlobalStatic<T>::instance = {};
                       ^

llvm-svn: 359175

5 years ago[Support] Add a GTest matcher for Optional<T>
Ilya Biryukov [Thu, 25 Apr 2019 09:03:32 +0000 (09:03 +0000)]
[Support] Add a GTest matcher for Optional<T>

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: mgorny, llvm-commits

Tags: #llvm

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

llvm-svn: 359174

5 years ago[NFC][LoopIdiomRecognize] Some basic baseline tests for bcmp loop idiom
Roman Lebedev [Thu, 25 Apr 2019 08:33:47 +0000 (08:33 +0000)]
[NFC][LoopIdiomRecognize] Some basic baseline tests for bcmp loop idiom

Doubt this is the final test coverage, but this appears to have good
coverage already, so i figure i might as well precommit it.

llvm-svn: 359173