platform/upstream/llvm.git
4 years agore-land [DebugInfo] Add debug location to stubs generated by CGDeclCXX and mark them...
Alexandre Ganea [Fri, 15 Nov 2019 21:01:25 +0000 (16:01 -0500)]
re-land [DebugInfo] Add debug location to stubs generated by CGDeclCXX and mark them as artificial

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

4 years agogn build: Merge d6de5f12d48
LLVM GN Syncbot [Fri, 15 Nov 2019 20:50:43 +0000 (20:50 +0000)]
gn build: Merge d6de5f12d48

4 years agoRevert "[LoadStoreVectorize] Use '||' instead of '|' between sides with function...
Richard Smith [Fri, 15 Nov 2019 20:49:35 +0000 (12:49 -0800)]
Revert "[LoadStoreVectorize] Use '||' instead of '|' between sides with function calls. NFCI."

This broke two tests. Presumably the non-short-circuting '|' was
intentional here.

This reverts commit f7efea0ded8e16c7751b378523407a491016edd6.

4 years ago[mips] Enable `la` pseudo instruction on 64-bit arch.
Simon Atanasyan [Mon, 11 Nov 2019 21:10:31 +0000 (00:10 +0300)]
[mips] Enable `la` pseudo instruction on 64-bit arch.

This patch makes LLVM compatible with GAS. It accepts `la` pseudo
instruction on arch with 64-bit pointers and just shows a warning.

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

4 years ago[mips] Do not emit R_MIPS_JALR for sym+offset in case of O32 ABI
Simon Atanasyan [Sat, 9 Nov 2019 06:29:42 +0000 (09:29 +0300)]
[mips] Do not emit R_MIPS_JALR for sym+offset in case of O32 ABI

O32 ABI uses relocations in REL format. Relocation's addend is written
in place. R_MIPS_JALR relocation points to the `jalr` instruction which
does not have a place to store the relocation addend. So it's impossible
to save non-zero "offset". This patch blocks emission of `R_MIPS_JALR`
relocations in such cases.

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

4 years agoAdd a missing triple in ast-dump-decl-json.m
Alex Richardson [Fri, 15 Nov 2019 20:14:06 +0000 (20:14 +0000)]
Add a missing triple in ast-dump-decl-json.m

Since there was no triple argument this test started failing on macOS bots,
where the mangled names are prefixed with an underscore.

4 years ago[LoopCacheAnalysis]: Fix assertion failure during cost computation
Rachel Craik [Fri, 15 Nov 2019 19:56:26 +0000 (14:56 -0500)]
[LoopCacheAnalysis]: Fix assertion failure during cost computation

Ensure the stride and trip count have the same type before multiplying them during reference cost calculation

Reviewed By: jdoefert

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

4 years ago[-gmodules] Let LLDB log a warning if the Clang module hash mismatches.
Adrian Prantl [Thu, 14 Nov 2019 21:57:49 +0000 (13:57 -0800)]
[-gmodules] Let LLDB log a warning if the Clang module hash mismatches.

This feature is mostly there to aid debugging of Clang module issues,
since the only useful actual the end-user can to is to recompile their
program.

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

4 years agoAdd RTTI support to the SymbolFile class hierarchy
Adrian Prantl [Fri, 15 Nov 2019 18:13:16 +0000 (10:13 -0800)]
Add RTTI support to the SymbolFile class hierarchy

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

4 years agoRename posix/FileSystem.cpp to FileSystemPosix.cpp
Adrian Prantl [Fri, 15 Nov 2019 19:47:55 +0000 (11:47 -0800)]
Rename posix/FileSystem.cpp to FileSystemPosix.cpp

to avoid a linker warning on Darwin about two files having the same name.

4 years ago[GCOV] Skip artificial functions from being emitted
Alexandre Ganea [Fri, 15 Nov 2019 19:23:05 +0000 (14:23 -0500)]
[GCOV] Skip artificial functions from being emitted

This is a patch to support  D66328, which was reverted until this lands.

Enable a compiler-rt test that used to fail previously with D66328.

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

4 years ago[OpenMP 5.0] - Extend defaultmap, by Chi Chun Chen.
cchen [Fri, 15 Nov 2019 18:02:06 +0000 (13:02 -0500)]
[OpenMP 5.0] - Extend defaultmap, by Chi Chun Chen.

Summary:
For the extended defaultmap, most of the work is inside sema.
The only difference for codegen is to set different initial
maptype for different implicit-behavior.

Reviewers: jdoerfert, ABataev

Reviewed By: ABataev

Subscribers: dreachem, sandoval, cfe-commits

Tags: #clang, #openmp

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

4 years ago[SVFS] Inject TLI Mappings in VFABI attribute.
Francesco Petrogalli [Mon, 11 Nov 2019 19:42:18 +0000 (19:42 +0000)]
[SVFS] Inject TLI Mappings in VFABI attribute.

This patch introduces a function pass to inject the scalar-to-vector
mappings stored in the TargetLIbraryInfo (TLI) into the Vector
Function ABI (VFABI) variants attribute.

The test is testing the injection for three vector libraries supported
by the TLI (Accelerate, SVML, MASSV).

The pass does not change any of the analysis associated to the
function.

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

4 years ago[clangd] Don't repeat class template args when printing constructor definitions
Sam McCall [Fri, 15 Nov 2019 18:23:04 +0000 (19:23 +0100)]
[clangd] Don't repeat class template args when printing constructor definitions

This fixes part of https://github.com/clangd/clangd/issues/76

4 years ago[AST] Let DeclarationNameInfo printing use PrintingPolicy, and fix const-correctness
Sam McCall [Fri, 15 Nov 2019 18:19:17 +0000 (19:19 +0100)]
[AST] Let DeclarationNameInfo printing use PrintingPolicy, and fix const-correctness

4 years ago[llvm-objcopy][MachO] Implement --redefine-sym and --redefine-syms
Fangrui Song [Wed, 13 Nov 2019 21:10:15 +0000 (13:10 -0800)]
[llvm-objcopy][MachO] Implement --redefine-sym and --redefine-syms

Similar to D46029 (ELF) and D70036 (COFF), but for MachO.
Note, when --strip-symbol (not implemented for MachO) is also specified,
--redefine-sym executes before --strip-symbol.

Reviewed By: jhenderson, seiya

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

4 years ago[ThinLTO] Fix -Wunused-function in NDEBUG builds after llvmorg-10-init-9933-g3d708bf5c26
Fangrui Song [Fri, 15 Nov 2019 18:00:23 +0000 (10:00 -0800)]
[ThinLTO] Fix -Wunused-function in NDEBUG builds after llvmorg-10-init-9933-g3d708bf5c26

4 years ago[DebugInfo] Allow spill slots in call site parameter descriptions
Vedant Kumar [Thu, 14 Nov 2019 17:20:58 +0000 (09:20 -0800)]
[DebugInfo] Allow spill slots in call site parameter descriptions

Allow call site paramter descriptions to reference spill slots. Spill
slots are not visible to high-level LLVM IR, so they can safely be
referenced during entry value evaluation (as they cannot be clobbered by
some other function).

This gives a 5% increase in the number of call site parameter DIEs in an
LTO x86_64 build of the xnu kernel.

This reverts commit eb4c98ca3d2590bad9f6542afbf3a7824d2b53fa (
[DebugInfo] Exclude memory location values as parameter entry values),
effectively reintroducing the portion of D60716 which dealt with memory
locations (authored by Djordje, Nikola, Ananth, and Ivan).

This partially addresses llvm.org/PR43343. However, not all memory
operands forwarded to callees live in spill slots. In the xnu build, it
may be possible to use an escape analysis to increase the number of call
site parameter by another 15% (more details in PR43343).

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

4 years ago[LoadStoreVectorize] Use '||' instead of '|' between sides with function calls. NFCI.
Dávid Bolvanský [Fri, 15 Nov 2019 17:50:36 +0000 (18:50 +0100)]
[LoadStoreVectorize] Use '||' instead of '|' between sides with function calls. NFCI.

Fixes warning from PVS Studio

4 years ago[CMake] Configure the Info.plist so it contains a real version number.
Jonas Devlieghere [Fri, 15 Nov 2019 17:46:27 +0000 (09:46 -0800)]
[CMake] Configure the Info.plist so it contains a real version number.

Use CMake to configure the Info.plist file so that we have a real
version number in things like crash reporter.

4 years ago[libc++] [chrono] Fix year_month_weekday::ok() implementation.
Marek Kurdej [Fri, 15 Nov 2019 12:04:47 +0000 (13:04 +0100)]
[libc++] [chrono] Fix year_month_weekday::ok() implementation.

Reviewers: ldionne, EricWF, mclow.lists

Reviewed By: mclow.lists

Subscribers: christof, dexonsmith, libcxx-commits

Tags: #libc

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

4 years ago[libcxx] use __builtin_isnan in std::isnan.
Ilya Tokar [Fri, 15 Nov 2019 17:29:02 +0000 (12:29 -0500)]
[libcxx] use __builtin_isnan in std::isnan.

Summary: This allows std::isnan to be fully inlined, instead of generating calls.

Reviewers: EricWF

Reviewed By: EricWF

Subscribers: christof, ldionne

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

4 years agoComment the fact that DWARFDebugInfoEntry isn't copyable.
Adrian Prantl [Fri, 15 Nov 2019 17:14:30 +0000 (09:14 -0800)]
Comment the fact that DWARFDebugInfoEntry isn't copyable.

4 years ago[clang-format] Flexible line endings
Cameron Desrochers [Fri, 15 Nov 2019 16:48:06 +0000 (11:48 -0500)]
[clang-format] Flexible line endings

Line ending detection is now set with the `DeriveLineEnding` option.
CRLF can now be used as the default line ending by setting `UseCRLF`.
When line ending detection is disabled, all line endings are converted
according to the `UseCRLF` option.

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

4 years ago[MirNamer][Canonicalizer]: Perform instruction semantic based renaming
Aditya Nandakumar [Fri, 15 Nov 2019 16:23:32 +0000 (08:23 -0800)]
[MirNamer][Canonicalizer]: Perform instruction semantic based renaming

https://reviews.llvm.org/D70210

Previously:

Due to sensitivity of the algorithm with gaps, and extra instructions,
when diffing, often we see naming being off by a few. Makes the diff
unreadable even for tests with 7 and 8 instructions respectively.
Naming can change depending on candidates (and order of picking
candidates). Suddenly if there's one extra instruction somewhere, the
entire subtree would be named completely differently.
No consistent naming of similar instructions which occur in different
functions. If we try to do something like count the frequency
distribution of various differences across suite, then the above
sensitivity issues are going to result in poor results.
Instead:

Name instruction based on semantics of the instruction (hash of the
opcode and operands). Essentially for a given instruction that occurs in
any module/function it'll be named similarly (ie semantic). This has
some nice properties
Can easily look at many instructions and just check the hash and if
they're named similarly, then it's the same instruction. Makes it very
easy to spot the same instruction both multiple times, as well as across
many functions (useful for frequency distribution).
Independent of traversal/candidates/depth of graph. No need to keep
track of last index/gaps/skip count etc.
No off by few issues with diffs. I've tried the old vs new
implementation in files ranging from 30 to 700 instructions. In both
cases with the old algorithm, diffs are a sea of red, where as for the
semantic version, in both cases, the diffs line up beautifully.
Simplified implementation of the main loop (simple iteration) , no keep
track of what's visited and not.
Handle collision just by incrementing a counter. Roughly
bb[N]_hash_[CollisionCount].
Additionally with the new implementation, we can probably avoid doing
the hoisting of instructions to various places, as they'll likely be
named the same resulting in differences only based on collision (ie
regardless of whether the instruction is hoisted or not/close to use or
not, it'll be named the same hash which should result in use of the
instruction be identical with the only change being the collision count)
which is very easy to spot visually.

4 years ago[clangd] Fix typo in symbol kind conversion
Sam McCall [Fri, 15 Nov 2019 14:46:17 +0000 (15:46 +0100)]
[clangd] Fix typo in symbol kind conversion

Reviewers: hokein

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[scudo][standalone] Enabled SCUDO_DEBUG for tests + fixes
Kostya Kortchinsky [Thu, 14 Nov 2019 22:33:23 +0000 (14:33 -0800)]
[scudo][standalone] Enabled SCUDO_DEBUG for tests + fixes

Summary:
`SCUDO_DEBUG` was not enabled for unit tests, meaning the `DCHECK`s
were never tripped. While turning this on, I discovered that a few
of those not-exercised checks were actually wrong. This CL addresses
those incorrect checks.

Not that to work in tests `CHECK_IMPL` has to explicitely use the
`scudo` namespace. Also changes a C cast to a C++ cast.

Reviewers: hctim, pcc, cferris, eugenis, vitalybuka

Subscribers: mgorny, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

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

4 years ago[clangd] Don't consider class template params part of constructor name.
Sam McCall [Fri, 15 Nov 2019 14:08:16 +0000 (15:08 +0100)]
[clangd] Don't consider class template params part of constructor name.

Summary:
This is shorter and usually the extra info is noise.
There are cases where the params become type-parameter-0-0 that are hard to fix.

This affects a few features:
 - 'name' field in structured hover API (not exposed yet)
 - 'name' field in locateSymbolAt (not exposed in LSP)
 - 'document/symbol' - the symbol is hierarchically nested in the class
   template, or written as foo<t>::foo when defined out-of-line.

Added a test case for hover from https://github.com/clangd/clangd/issues/76.
This patch fixes one field, but no fewer than four others are wrong!
I'll fix them...

Reviewers: hokein

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[clangd] Fix SelectionTree behavior on constructor init-lists.
Sam McCall [Fri, 15 Nov 2019 15:07:34 +0000 (16:07 +0100)]
[clangd] Fix SelectionTree behavior on constructor init-lists.

Summary:
For the constructor Foo() : classmember(arg) {}

The AST looks like:
 - CXXCtorInitializer  classmember(arg)
   - CXXConstructExpr  classmember(arg)
     - DeclRefExpr:                arg

We want the 'classmember' to be associated with the CXXCtorInitializer, not the
CXXConstructExpr. (CXXConstructExpr is known to have bad ranges).
So just early-claim it.

Thanks @hokein for tracking down/reducing the bug.

Reviewers: hokein

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits, hokein

Tags: #clang

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

4 years agoAdd read-only data assembly writing for aix
diggerlin [Fri, 15 Nov 2019 16:30:19 +0000 (11:30 -0500)]
Add read-only data assembly writing for aix

SUMMARY:
The patch will emit read-only variable assembly code for aix.

Reviewers: daltenty,Xiangling_Liao
Subscribers: rupprecht, seiyai,hiraditya

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

4 years ago[llvm-objcopy][NFC] Use generated object file in COFF/add-section.test
Sergey Dmitriev [Wed, 13 Nov 2019 04:19:17 +0000 (20:19 -0800)]
[llvm-objcopy][NFC] Use generated object file in COFF/add-section.test

Updated LIT test from D70205 to use generated object file with extended relocation table.

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

4 years ago[X86][SSE] Add test for extractelement from volatile vector load
Simon Pilgrim [Fri, 15 Nov 2019 15:59:33 +0000 (15:59 +0000)]
[X86][SSE] Add test for extractelement from volatile vector load

Mentioned in D70267

4 years agoImplement target(branch-protection) attribute for AArch64
Momchil Velikov [Fri, 15 Nov 2019 11:34:47 +0000 (11:34 +0000)]
Implement target(branch-protection) attribute for AArch64

This patch implements `__attribute__((target("branch-protection=...")))`
in a manner, compatible with the analogous GCC feature:

https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/AArch64-Function-Attributes.html#AArch64-Function-Attributes

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

4 years agoclang: enable unwind tables on FreeBSD !amd64
Ed Maste [Fri, 15 Nov 2019 14:30:24 +0000 (09:30 -0500)]
clang: enable unwind tables on FreeBSD !amd64

There doesn't seem to be much sense in defaulting "on" unwind tables on
amd64 and not on other arches. It causes surprising differences between
platforms, such as the PR below[1].

Prior to this change, FreeBSD inherited the default implementation of the
method from the Gnu.h Generic_Elf => Generic_GCC parent class, which
returned true only for amd64 targets.  Override that and opt on always,
similar to, e.g., NetBSD's driver.

[1] https://bugs.freebsd.org/241562

Patch by cem (Conrad Meyer).

Reviewed By: dim

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

4 years ago[clangd] Replace getLangOpts().isHeaderFile usage with isHeaderFile helper.
Haojian Wu [Fri, 15 Nov 2019 15:24:19 +0000 (16:24 +0100)]
[clangd] Replace getLangOpts().isHeaderFile usage with isHeaderFile helper.

Summary:
The helper is more correct to detect header file, this would fix our
issues caused by false positive before.

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: merge_guards_bot, ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[clangd] Add isHeaderFile helper.
Haojian Wu [Wed, 13 Nov 2019 15:30:07 +0000 (16:30 +0100)]
[clangd] Add isHeaderFile helper.

Summary:
we have a few places using `ASTCtx.getLangOpts().IsHeaderFile` to
determine a header file, but it relies on "-x c-header" compiler flag,
if the compilation command doesn't have this flag, we will get a false
positive. We are encountering this issue in bazel build system.

To solve this problem, we infer the file from file name, actual changes will
come in follow-ups.

Reviewers: sammccall

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[RISCV] Match GCC `-march`/`-mabi` driver defaults
Sam Elliott [Fri, 15 Nov 2019 15:10:02 +0000 (15:10 +0000)]
[RISCV] Match GCC `-march`/`-mabi` driver defaults

Summary:
Clang/LLVM is a cross-compiler, and so we don't have to make a choice
about `-march`/`-mabi` at build-time, but we may have to compute a
default `-march`/`-mabi` when compiling a program. Until now, each
place that has needed a default `-march` has calculated one itself.

This patch adds a single place where a default `-march` is calculated,
in order to avoid calculating different defaults in different places.

This patch adds a new function `riscv::getRISCVArch` which encapsulates
this logic based on GCC's for computing a default `-march` value
when none is provided. This patch also updates the logic in
`riscv::getRISCVABI` to match the logic in GCC's build system for
computing a default `-mabi`.

This patch also updates anywhere that `-march` is used to now use the
new function which can compute a default. In particular, we now
explicitly pass a `-march` value down to the gnu assembler.

GCC has convoluted logic in its build system to choose a default
`-march`/`-mabi` based on build options, which would be good to match.
This patch is based on the logic in GCC 9.2.0. This commit's logic is
different to GCC's only for baremetal targets, where we default
to rv32imac/ilp32 or rv64imac/lp64 depending on the target triple.

Tests have been updated to match the new logic.

Reviewers: asb, luismarques, rogfer01, kito-cheng, khchen

Reviewed By: asb, luismarques

Subscribers: sameer.abuasal, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, pzheng, cfe-commits

Tags: #clang

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

4 years ago[CodeComplete] Constructor overload candidates report as vector(int) instead of vecto...
Sam McCall [Fri, 15 Nov 2019 13:52:04 +0000 (14:52 +0100)]
[CodeComplete] Constructor overload candidates report as vector(int) instead of vector<string>(int)

Summary:
This is shorter, shouldn't be confusing (is consistent with how they're declared),
and avoids messy cases that are printed as myclass<type-param-0-0>(int) in the
case of partial specialization.

Fixes part of https://github.com/clangd/clangd/issues/76

Reviewers: hokein, lh123

Subscribers: ilya-biryukov, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[ARM,MVE] Add reversed isel patterns for MVE `vcmp qN,rN`
Simon Tatham [Fri, 15 Nov 2019 14:05:02 +0000 (14:05 +0000)]
[ARM,MVE] Add reversed isel patterns for MVE `vcmp qN,rN`

Summary:
As well as vector/vector compare instructions, MVE also has a family
of comparisons taking a vector and a scalar, which compare every lane
of the vector against the same value. We generate those at isel time
using isel patterns that match `(ARMvcmp vector, (ARMvdup scalar))`.

This commit adds corresponding patterns for the operand-reversed form
`(ARMvcmp (ARMvdup scalar), vector)`, with condition codes swapped as
necessary. That way, we can still generate the vector/scalar compare
instruction if the IR happens to have been rearranged to put the
operands the other way round, which can happen in some optimization
phases. Previously, a vcmp the other way round was handled by emitting
a `vdup` instruction to //explicitly// replicate the scalar input into
a vector, and then doing a vector/vector comparison.

I haven't added a new test, because it turned out that several
existing tests were already exhibiting that failure mode. So just
updating the expected output in the existing MVE codegen tests
demonstrates what's been improved.

Reviewers: ostannard, MarkMurrayARM, dmgreen

Reviewed By: dmgreen

Subscribers: kristof.beyls, hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[Clang][ASTImporter] Added visibility check for ClassTemplateDecl.
Balázs Kéri [Fri, 15 Nov 2019 14:05:20 +0000 (15:05 +0100)]
[Clang][ASTImporter] Added visibility check for ClassTemplateDecl.

Summary:
ASTImporter makes now difference between class templates with same
name in different translation units if these are not visible outside.

Reviewers: martong, a.sidorin, shafik

Reviewed By: martong

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, teemperor, cfe-commits

Tags: #clang

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

4 years ago[AMDGPU] Lower llvm.amdgcn.s.buffer.load.v3[i|f]32
Piotr Sobczak [Tue, 12 Nov 2019 10:46:54 +0000 (11:46 +0100)]
[AMDGPU] Lower llvm.amdgcn.s.buffer.load.v3[i|f]32

Summary: Add lowering support for 32-bit vec3 variant of s.buffer.load intrinsic.

Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits

Tags: #llvm

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

4 years agoRecommit "[ThinLTO] Add correctness check for RO/WO variable import"
evgeny [Fri, 15 Nov 2019 13:13:19 +0000 (16:13 +0300)]
Recommit "[ThinLTO] Add correctness check for RO/WO variable import"

ValueInfo has user-defined 'operator bool' which allows incorrect implicit conversion
to GlobalValue::GUID (which is unsigned long). This causes bugs which are hard to
track and should be removed in future.

4 years agoFix TestFormatters.py stepping too far
Diana Picus [Thu, 14 Nov 2019 10:27:41 +0000 (11:27 +0100)]
Fix TestFormatters.py stepping too far

TestFormatters.py has a sequence of three 'next' commands to get past
all the initializations in the test function. On AArch64 (and
potentially other platforms), this was one 'next' too many and we ended
up outside our frame.

This patch replaces the sequence with a 'thread until ' the line of the
return from the function, so we should stop after all the
initializations but before actually returning.

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

4 years agogn build: Merge e6584b2b7b2
LLVM GN Syncbot [Fri, 15 Nov 2019 12:57:26 +0000 (12:57 +0000)]
gn build: Merge e6584b2b7b2

4 years agoMove floating point related entities to namespace level
Serge Pavlov [Thu, 29 Aug 2019 12:29:11 +0000 (19:29 +0700)]
Move floating point related entities to namespace level

Enumerations that describe rounding mode and exception behavior were
defined inside ConstrainedFPIntrinsic. It makes sense to use the same
definitions to represent the same properties in other cases, not only
in constrained intrinsics. It was however inconvenient as required to
include constrained intrinsics definitions even if they were not needed.
Also using long scope prefix reduced readability.

This change moves these definitioins to the namespace llvm::fp.
No functional changes.

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

4 years ago[update_cc_test_checks.py] Use -ast-dump=json to get mangled name
Alex Richardson [Fri, 15 Nov 2019 12:50:10 +0000 (12:50 +0000)]
[update_cc_test_checks.py] Use -ast-dump=json to get mangled name

Summary:
Using c-index-test is fragile since it does not parse all the clang
arguments that are used in the RUN: line. This can result in incorrect
mangled names that do not match any of the generated IR.
For example macOS triples include a leading underscore (which was handled
with a hack in the current script). For the CHERI target we have added
new qualifiers which affect C++ name mangling, but will be included added
by update_cc_test_checks since it parses the source file with the host
triple because it ignores the -triple= argument passed to clang -cc1.

Using the new feature of including the mangled name in the JSON AST dump
(see D69564), we can parse the output of the RUN: command with
"-fsyntax-only -ast-dump=json" appended.
This should make the script less fragile and also forks one process less.

Reviewers: MaskRay, xbolva00

Reviewed By: MaskRay

Subscribers: llvm-commits

Tags: #llvm

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

4 years agoInclude the mangled name in -ast-dump=json
Alex Richardson [Fri, 15 Nov 2019 12:33:16 +0000 (12:33 +0000)]
Include the mangled name in -ast-dump=json

I am planning to use this feature to make update_cc_test_checks.py less fragile
by obtaining the mangled names directly from -ast-dump=json. Currently,
it uses c-index-test which ignores the -triple=, etc. arguments that are
in the RUN: line and therefore does not generate checks for some targets.

The AST dump tests were updated using the following command:
`python $LLVM_BINDIR/gen_ast_dump_json_test.py --update --source $LLVM_SRC/clang/test/AST/*-json.*`

Reviewers: aaron.ballman

Reviewed By: aaron.ballman

Subscribers: rsmith, MaskRay, cfe-commits

Tags: #clang

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

4 years ago[NFC] Regenerate ast-dump-json tests
Alex Richardson [Tue, 12 Nov 2019 12:02:07 +0000 (12:02 +0000)]
[NFC] Regenerate ast-dump-json tests

This was done by running `python $LLVM_BINDIR/gen_ast_dump_json_test.py --update --source $LLVM_SRC/clang/test/AST/*-json.*`
Only changes are whitespace and line endings.

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

4 years ago[gen_ast_dump_json_test.py] Allow updating multiple files in one go
Alex Richardson [Tue, 12 Nov 2019 12:00:51 +0000 (12:00 +0000)]
[gen_ast_dump_json_test.py] Allow updating multiple files in one go

With this change it is possible to update all JSON dump tests using the
following command:
python $LLVM_BINDIR/gen_ast_dump_json_test.py --update --source $LLVM_SRC/clang/test/AST/*-json.*

See https://reviews.llvm.org/D70119

4 years ago[gen_ast_dump_json_test.py] Copy to binary directory to omit --clang argument
Alex Richardson [Tue, 12 Nov 2019 11:47:54 +0000 (11:47 +0000)]
[gen_ast_dump_json_test.py] Copy to binary directory to omit --clang argument

The script will now check if a clang binary exists in the same directory
and default to that instead of requiring a --clang argument. The script
is copied to the clang build directory using CMake configure_file() with
COPYONLY. This ensures that the version in the build directory is updated
any time the source version changes.

See https://reviews.llvm.org/D70119

4 years ago[gen_ast_dump_json_test.py] Skip manual tests when using --update
Alex Richardson [Tue, 29 Oct 2019 12:58:10 +0000 (12:58 +0000)]
[gen_ast_dump_json_test.py] Skip manual tests when using --update

See https://reviews.llvm.org/D70119

4 years ago[gen_ast_dump_json_test.py] Infer --filters flags when using --update
Alex Richardson [Tue, 29 Oct 2019 12:32:16 +0000 (12:32 +0000)]
[gen_ast_dump_json_test.py] Infer --filters flags when using --update

See https://reviews.llvm.org/D70119

4 years ago[gen_ast_dump_json_test.py] Parse RUN: lines with --update
Alex Richardson [Tue, 29 Oct 2019 12:06:46 +0000 (12:06 +0000)]
[gen_ast_dump_json_test.py] Parse RUN: lines with --update

See https://reviews.llvm.org/D70119

4 years ago[gen_ast_dump_json_test.py] Add a --update flag
Alex Richardson [Tue, 29 Oct 2019 11:50:08 +0000 (11:50 +0000)]
[gen_ast_dump_json_test.py] Add a --update flag

This will allow updating the JSON tests for new format changes. Instead of
simply appending the JSON to the input file, the script will now make a
copy of the input file up to the "CHECK lines have been autogenerated"
disclaimer and then append the new JSON.

See https://reviews.llvm.org/D70119

4 years agoDWARFDebugLoc(v4): Add an incremental parsing function
Pavel Labath [Tue, 5 Nov 2019 13:46:54 +0000 (14:46 +0100)]
DWARFDebugLoc(v4): Add an incremental parsing function

Summary:
This adds a visitLocationList function to the DWARF v4 location lists,
similar to what already exists for DWARF v5. It follows the approach
outlined in previous patches (D69672), where the parsed form is always
stored in the DWARF v5 format, which makes it easier for generic code to
be built on top of that. v4 location lists are "upgraded" during
parsing, and then this upgrade is undone while dumping.

Both "inline" and section-based dumping is rewritten to reuse the
existing "generic" location list dumper. This means that the output
format is consistent for all location lists (the only thing one needs to
implement is the function which prints the "raw" form of a location
list), and that debug_loc dumping correctly processes base address
selection entries, etc.

The previous existing debug_loc functionality (e.g.,
parseOneLocationList) is rewritten on top of the new API, but it is not
removed as there is still code which uses them. This will be done in
follow-up patches, after I build the API to access the "interpreted"
location lists in a generic way (as that is what those users really
want).

Reviewers: dblaikie, probinson, JDevlieghere, aprantl, SouraVX

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[CodeGen] Increase the size of a SmallVector
Jay Foad [Fri, 15 Nov 2019 11:05:39 +0000 (11:05 +0000)]
[CodeGen] Increase the size of a SmallVector

The SmallVector reserve() call in
MachineInstrExpressionTrait::getHashValue accounted for over 3% of all
calls to malloc() when I compiled a bunch of graphics shaders for the
AMDGPU target. Its initial size was only enough for machine instructions
with up to 7 operands, but for AMDGPU 8 and 10 operands are very common.
Here's a histogram of number of operands for each call to getHashValue,
gathered from the same collection of shaders:

1  13503
2  254273
3  135781
4  422508
5  614997
6  194953
7  287248
8  1517255
9  31218
10 1191269
11 70731
12 24
13 77
15 84
17 4692
27 16
33 705
49 6

Typical instructions with 8 and 10 operands are floating point
arithmetic and multiply-accumulate instructions like:

%83:vgpr_32 = V_MUL_F32_e64 0, killed %82:vgpr_32, 0, killed %81:vgpr_32, 0, 0, implicit $exec
%330:vgpr_32 = V_MAC_F32_e64 0, killed %327:vgpr_32, 0, killed %329:sgpr_32, 0, %328:vgpr_32(tied-def 0), 0, 0, implicit $exec

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

4 years agoRevert "[clang] Remove the DIFlagArgumentNotModified debug info flag"
Djordje Todorovic [Fri, 15 Nov 2019 10:59:47 +0000 (11:59 +0100)]
Revert "[clang] Remove the DIFlagArgumentNotModified debug info flag"

This reverts commit rG1643734741d2 due to LLDB test failure.

4 years ago[ARM][MVE] tail-predication
Sjoerd Meijer [Fri, 15 Nov 2019 11:01:13 +0000 (11:01 +0000)]
[ARM][MVE] tail-predication

This is a follow up of d90804d, to also flag fmcp instructions as instructions
that we do not support in tail-predicated vector loops.

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

4 years ago[MIPS GlobalISel] Select andi, ori and xori
Petar Avramovic [Fri, 15 Nov 2019 10:41:25 +0000 (11:41 +0100)]
[MIPS GlobalISel] Select andi, ori and xori

Introduce IntImmLeaf version of PatLeaf immZExt16 for 32-bit immediates.
Change immZExt16 with imm32ZExt16 for andi, ori and xori.
This keeps same behavior for SDAG and allows for GlobalISel selectImpl
to select 'G_CONSTANT imm' + G_AND, G_OR, G_XOR into ANDi, ORi, XORi,
respectively, when 32-bit imm satisfies imm32ZExt16 predicate: zero
extending 16 low bits of imm is equal to imm.
Large number of test changes comes from zero extending of small types
which is transformed into 'and' with bitmask in legalizer.

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

4 years ago[MIPS GlobalISel] Select addiu
Petar Avramovic [Fri, 15 Nov 2019 10:36:13 +0000 (11:36 +0100)]
[MIPS GlobalISel] Select addiu

Introduce IntImmLeaf version of PatLeaf immSExt16 for 32-bit immediates.
Change immSExt16 with imm32SExt16 for addiu.
This keeps same behavior for SDAG and allows for GlobalISel selectImpl
to select 'G_CONSTANT imm' + G_ADD into ADDIu when 32-bit imm satisfies
imm32SExt16 predicate: sign extending 16 low bits of imm is equal to imm.

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

4 years ago[Scalarizer] Treat values from unreachable blocks as undef
Mikael Holmen [Fri, 15 Nov 2019 09:29:47 +0000 (10:29 +0100)]
[Scalarizer] Treat values from unreachable blocks as undef

Summary:
When scalarizing PHI nodes we might try to examine/rewrite
InsertElement nodes in predecessors. If those predecessors
are unreachable from entry, then the IR in those blocks could
have unexpected properties resulting in infinite loops in
Scatterer::operator[].
By simply treating values originating from instructions in
unreachable blocks as undef we do not need to analyse them
further.

This fixes PR41723.

Reviewers: bjope

Reviewed By: bjope

Subscribers: bjope, hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[clang] Remove the DIFlagArgumentNotModified debug info flag
Djordje Todorovic [Fri, 15 Nov 2019 09:47:35 +0000 (10:47 +0100)]
[clang] Remove the DIFlagArgumentNotModified debug info flag

It turns out that the ExprMutationAnalyzer can be very slow when AST
gets huge in some cases. The idea is to move this analysis to the LLVM
back-end level (more precisely, in the LiveDebugValues pass). The new
approach will remove the performance regression, simplify the
implementation and give us front-end independent implementation.

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

4 years ago[ARM,MVE] Add intrinsics for vector get/set lane.
Simon Tatham [Fri, 15 Nov 2019 09:53:15 +0000 (09:53 +0000)]
[ARM,MVE] Add intrinsics for vector get/set lane.

This adds the `vgetq_lane` and `vsetq_lane` families, to copy between
a scalar and a specified lane of a vector.

One of the new `vgetq_lane` intrinsics returns a `float16_t`, which
causes a compile error if `%clang_cc1` doesn't get the option
`-fallow-half-arguments-and-returns`. The driver passes that option to
cc1 already, but I've had to edit all the explicit cc1 command lines
in the existing MVE intrinsics tests.

A couple of fixes are included for the code I wrote up front in
MveEmitter to support lane-index immediates (and which nothing has
tested until now): the type was wrong (`uint32_t` instead of `int`)
and the range was off by one.

I've also added a method of bypassing the default promotion to `i32`
that is done by the MveEmitter code generation: it's sensible to
promote short scalars like `i16` to `i32` if they're going to be
passed to custom IR intrinsics representing a machine instruction
operating on GPRs, but not if they're going to be passed to standard
IR operations like `insertelement` which expect the exact type.

Reviewers: ostannard, MarkMurrayARM, dmgreen

Reviewed By: dmgreen

Subscribers: kristof.beyls, cfe-commits

Tags: #clang

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

4 years ago[ARM,MVE] Add intrinsics for 'administrative' vector operations.
Simon Tatham [Wed, 13 Nov 2019 15:23:38 +0000 (15:23 +0000)]
[ARM,MVE] Add intrinsics for 'administrative' vector operations.

This batch of intrinsics includes lots of things that move vector data
around or change its type without really affecting its value very
much. It includes the `vreinterpretq` family (cast one vector type to
another); `vuninitializedq` (create a vector of a given type with
don't-care contents); and `vcreateq` (make a 128-bit vector out of two
`uint64_t` halves).

These are all implemented using completely standard IR that's already
tested in existing LLVM unit tests, so I've just written a clang test
to check the IR is correct, and left it at that.

I've also added some richer infrastructure to the MveEmitter Tablegen
backend, to make it specify the exact integer type of integer
arguments passed to IR construction functions, and wrap those
arguments in a `static_cast` in the autogenerated C++. That was
necessary to prevent an overloading ambiguity when passing the integer
literal `0` to `IRBuilder::CreateInsertElement`, because otherwise, it
could mean either a null pointer `llvm::Value *` or a zero `uint64_t`.

Reviewers: ostannard, MarkMurrayARM, dmgreen

Subscribers: kristof.beyls, cfe-commits

Tags: #clang

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

4 years ago[AST] Use written names instead of `type-param-0-0` in more cases when printing types...
Sam McCall [Thu, 14 Nov 2019 13:16:14 +0000 (14:16 +0100)]
[AST] Use written names instead of `type-param-0-0` in more cases when printing types and decls.

Summary:
This doesn't cover decls in diagnostics, which use NamedDecl::getNameForDiagnostic().
(That should also be fixed later I think).

This covers some cases of https://github.com/clangd/clangd/issues/76
(hover, but not outline or sighelp)

Reviewers: hokein

Subscribers: ilya-biryukov, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years agoFix GCC -Wcast-qual warnings
Hans Wennborg [Fri, 15 Nov 2019 08:48:50 +0000 (09:48 +0100)]
Fix GCC -Wcast-qual warnings

4 years agoGCC 5.3 build fix
Hans Wennborg [Fri, 15 Nov 2019 08:46:44 +0000 (09:46 +0100)]
GCC 5.3 build fix

It was failing with

  llvm/lib/ExecutionEngine/Orc/DebugUtils.cpp:56:10:
  error: could not convert ‘Obj’ from ‘std::unique_ptr<llvm::MemoryBuffer>’
  to ‘llvm::Expected<std::unique_ptr<llvm::MemoryBuffer> >’
     return Obj;
            ^

4 years agoAMDGPU: Change boolean content type to 0 or 1
Matt Arsenault [Mon, 11 Nov 2019 09:16:38 +0000 (14:46 +0530)]
AMDGPU: Change boolean content type to 0 or 1

The usage of target boolean checks is overly inflexible, since sext
and zext of a compare are equally cheap. The choice is arbitrary, but
using 0/1 to some degree is the choice of lower resistance since
that's what most targets use. This enables a few combines that don't
bother to support ZeroOrNegativeOneBooleanContent.

4 years agoAMDGPU: Try to commute sub of boolean ext
Matt Arsenault [Thu, 14 Nov 2019 08:03:33 +0000 (13:33 +0530)]
AMDGPU: Try to commute sub of boolean ext

Avoids another regression in a future patch.

4 years agoGlobalISel: Lower s1 source G_SITOFP/G_UITOFP
Matt Arsenault [Fri, 15 Nov 2019 06:29:12 +0000 (11:59 +0530)]
GlobalISel: Lower s1 source G_SITOFP/G_UITOFP

4 years agoUnbreak the clang test suite when hexagon-link is not available
David Zarzycki [Fri, 15 Nov 2019 06:45:20 +0000 (08:45 +0200)]
Unbreak the clang test suite when hexagon-link is not available

All of the other tests are of the form {{hexagon-link|ld}} so this
probably should be too.

4 years agogn build: Merge 16f38dda292
LLVM GN Syncbot [Fri, 15 Nov 2019 05:27:58 +0000 (05:27 +0000)]
gn build: Merge 16f38dda292

4 years ago[ORC] Add a utility to support dumping JIT'd objects to disk for debugging.
Lang Hames [Thu, 14 Nov 2019 23:58:21 +0000 (15:58 -0800)]
[ORC] Add a utility to support dumping JIT'd objects to disk for debugging.

Adds a DumpObjects utility that can be used to dump JIT'd objects to disk.
Instances of DebugObjects may be used by ObjectTransformLayer as no-op
transforms.

This patch also adds an ObjectTransformLayer to LLJIT and an example of how
to use this utility to dump JIT'd objects in LLJIT.

4 years ago[llvm-objcopy][MachO] Implement --remove-section
Seiya Nuta [Fri, 15 Nov 2019 03:37:55 +0000 (12:37 +0900)]
[llvm-objcopy][MachO] Implement --remove-section

Reviewers: alexshap, rupprecht, jhenderson

Reviewed By: rupprecht, jhenderson

Subscribers: jakehehrlich, abrachet, llvm-commits

Tags: #llvm

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

4 years agoAdd a test to cover structural match for recursive data types
Bruno Cardoso Lopes [Thu, 14 Nov 2019 21:44:18 +0000 (13:44 -0800)]
Add a test to cover structural match for recursive data types

This didn't use to work prior to r370639, now that this is supported
add a testcase to prevent regressions.

rdar://problem/53602368

4 years ago[InstCombine] Don't use getFirstNonPHI in FoldIntegerTypedPHI
Francis Visoiu Mistrih [Fri, 15 Nov 2019 01:45:27 +0000 (17:45 -0800)]
[InstCombine] Don't use getFirstNonPHI in FoldIntegerTypedPHI

getFirstNonPHI iterates over all the instructions in a block until it
finds a non-PHI.

Then, the loop starts from the beginning of the block and goes through
all the instructions until it reaches the instruction found by
getFirstNonPHI.

Instead of doing that, just stop when a non-PHI is found.

This reduces the compile-time of a test case discussed in
https://reviews.llvm.org/D47023 by 13x.

Not entirely sure how to come up with a test case for this since it's a
compile time issue that would significantly slow down running the tests.

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

4 years ago[WinEH] Fix the wrong alignment orientation during calculating EH frame.
Wang, Pengfei [Thu, 14 Nov 2019 07:12:07 +0000 (15:12 +0800)]
[WinEH] Fix the wrong alignment orientation during calculating EH frame.

Summary: This is a bug fix for further issues in PR43585.

Reviewers: rnk, RKSimon, craig.topper, andrew.w.kaylor

Subscribers: hiraditya, llvm-commits, annita.zhang

Tags: #llvm

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

4 years ago[Utility] Remove a dead header [PPC64LE_ehframe_Registers.h]
Davide Italiano [Thu, 14 Nov 2019 23:29:28 +0000 (15:29 -0800)]
[Utility] Remove a dead header [PPC64LE_ehframe_Registers.h]

4 years agoAdd missing includes needed to prune LLVMContext.h include, NFC
Reid Kleckner [Thu, 14 Nov 2019 23:15:48 +0000 (15:15 -0800)]
Add missing includes needed to prune LLVMContext.h include, NFC

These are a pre-requisite to removing #include "llvm/Support/Options.h"
from LLVMContext.h: https://reviews.llvm.org/D70280

4 years ago[libc++] [P0920] [P1661] Update status page.
Marek Kurdej [Thu, 14 Nov 2019 23:12:34 +0000 (00:12 +0100)]
[libc++] [P0920] [P1661] Update status page.

4 years ago[LLDB] Fix more -Wdocumentation issues (NFC)
Jonas Devlieghere [Thu, 14 Nov 2019 22:30:11 +0000 (14:30 -0800)]
[LLDB] Fix more -Wdocumentation issues (NFC)

4 years ago[COFF] Avoid CodeView include in header
Reid Kleckner [Thu, 14 Nov 2019 22:27:48 +0000 (14:27 -0800)]
[COFF] Avoid CodeView include in header

Most LLD/COFF files don't care about CodeView. Avoid using CodeView
types in InputFiles.h.

4 years agoForward declare the DWARFCache to avoid including LLVM DWARF details
Reid Kleckner [Thu, 14 Nov 2019 22:16:21 +0000 (14:16 -0800)]
Forward declare the DWARFCache to avoid including LLVM DWARF details

LLD's DWARF.h header leaks a lot of LLVM DWARF includes that LLD doesn't
need. For Chunks.cpp, I see a compile time decrease of 3.1s to 2.7s.

4 years ago[Reproducer] Enable crash reports for reproducer tests
Jonas Devlieghere [Thu, 14 Nov 2019 19:11:37 +0000 (11:11 -0800)]
[Reproducer] Enable crash reports for reproducer tests

For some reason the reproducer tests seem really proficient at
uncovering structural issues in LLDB related to how we tear down things,
but of course only on the bots.

The pretty stack trace helps a bit, but what I really want is the crash
reports which contain much more information, such as what other threads
we doing.

Crash reports are automatically suppressed by lit. This patch
(temporarily) disables that for the reproducer tests.

4 years ago[BPF] Restrict preserve_access_index attribute to C only
Yonghong Song [Thu, 14 Nov 2019 18:34:35 +0000 (10:34 -0800)]
[BPF] Restrict preserve_access_index attribute to C only

This patch is a follow-up for commit 4e2ce228ae79
  [BPF] Add preserve_access_index attribute for record definition
to restrict attribute for C only. A new test case is added
to check for this restriction.

Additional code polishing is done based on
Aaron Ballman's suggestion in https://reviews.llvm.org/D69759/new/.

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

4 years ago[SanitizerCommon] Print the current value of options when printing out help.
Dan Liew [Tue, 29 Oct 2019 00:53:38 +0000 (17:53 -0700)]
[SanitizerCommon] Print the current value of options when printing out help.

Summary:
Previously it wasn't obvious what the default value of various sanitizer
options were. A very close approximation of the "default values" for the
options are the current value of the options at the time of printing the
help output.

In the case that no other options are provided then the current values
are the default values (apart from `help`).

```
ASAN_OPTIONS=help=1 ./program
```

This patch causes the current option values to be printed when the
`help` output is enabled. The original intention for this patch was to append
`(Default: <value>)` to an option's help text. However because this
is technically wrong (and misleading) I've opted to append
`(Current Value: <value>)` instead.

When trying to implement a way of displaying the default value of the
options I tried another solution where the default value used in `*.inc` files
were used to create compile time strings that where used when printing
the help output. This solution was not satisfactory for several reasons:

* Stringifying the default values with the preprocessor did not work very
well in several cases.  Some options contain boolean operators which no
amount of macro expansion can get rid of.
* It was much more invasive than this patch. Every sanitizer had to be changed.
* The settings of `__<sanitizer>_default_options()` are ignored.

For those reasons I opted for the solution in this patch.

rdar://problem/42567204

Reviewers: kubamracek, yln, kcc, dvyukov, vitalybuka, cryptoad, eugenis, samsonov

Subscribers: #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

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

4 years ago[COFF] Don't include llvm/LTO/LTO.h in a header
Reid Kleckner [Thu, 14 Nov 2019 21:46:00 +0000 (13:46 -0800)]
[COFF] Don't include llvm/LTO/LTO.h in a header

LLVM's LTO header includes all of llvm/IR, which most of the COFF linker
doesn't need.

4 years agoRevert "Temporarily Revert:"
Alexey Bataev [Thu, 14 Nov 2019 19:35:28 +0000 (14:35 -0500)]
Revert "Temporarily Revert:"

This reverts commit e511c4b0dff1692c267addf17dce3cebe8f97faa:

    Temporarily Revert:

     "[SLP] Generalization of stores vectorization."
     "[SLP] Fix -Wunused-variable. NFC"
     "[SLP] Vectorize jumbled stores."

after fixing the problem with compile time.

4 years ago[llvm-dis] Fix the disable-output flag
Matthew Voss [Thu, 14 Nov 2019 20:33:52 +0000 (12:33 -0800)]
[llvm-dis] Fix the disable-output flag

My change in llvmorg-10-init-9872-g141bb5f308f broke this flag.

Thanks to @rsmith for the bug.

4 years ago[GPGPU] Fix depricated warning.
Michael Kruse [Thu, 14 Nov 2019 21:17:16 +0000 (15:17 -0600)]
[GPGPU] Fix depricated warning.

setAlignment(unsigned) was deprecated in commit:

0e62011df891d0e7ad904524edf705d07d12d5d4
[Alignment][NFC] Remove dependency on GlobalObject::setAlignment(unsigned)

4 years ago[X86] Fix the implementation of __readcr3/__writecr3 to work in 64-bit mode
Craig Topper [Thu, 14 Nov 2019 21:21:35 +0000 (13:21 -0800)]
[X86] Fix the implementation of __readcr3/__writecr3 to work in 64-bit mode

We need to use a 64-bit type in 64-bit mode so a 64-bit register
will get used in the generated assembly. I've also changed the
constraints to just use "r" intead of "q". "q" forces to a only
an a/b/c/d register in 32-bit mode, but I see no reason that
would matter here.

Fixes Nico's note in PR19301 over 4 years ago.

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

4 years ago[DebugInfo] Allow spill slots in call site parameter descriptions
Vedant Kumar [Thu, 14 Nov 2019 17:20:58 +0000 (09:20 -0800)]
[DebugInfo] Allow spill slots in call site parameter descriptions

Allow call site paramter descriptions to reference spill slots. Spill
slots are not visible to high-level LLVM IR, so they can safely be
referenced during entry value evaluation (as they cannot be clobbered by
some other function).

This gives a 5% increase in the number of call site parameter DIEs in an
LTO x86_64 build of the xnu kernel.

This reverts commit eb4c98ca3d2590bad9f6542afbf3a7824d2b53fa (
[DebugInfo] Exclude memory location values as parameter entry values),
effectively reintroducing the portion of D60716 which dealt with memory
locations (authored by Djordje, Nikola, Ananth, and Ivan).

This partially addresses llvm.org/PR43343. However, not all memory
operands forwarded to callees live in spill slots. In the xnu build, it
may be possible to use an escape analysis to increase the number of call
site parameter by another 15% (more details in PR43343).

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

4 years ago[yaml2obj][COFF] Add support for extended relocation tables
Sergey Dmitriev [Thu, 14 Nov 2019 20:31:13 +0000 (12:31 -0800)]
[yaml2obj][COFF] Add support for extended relocation tables

Summary:
The tool does not correctly handle COFF sections with extended relocation tables (with IMAGE_SCN_LNK_NRELOC_OVFL bit set), this patch fixes this problem.

But I have cheated a bit in the test (to make it smaller) because extended relocation table is supposed to be used when the number of relocations exceeds 65534. Otherwise the test size would be pretty big.

Reviewers: jhenderson, MaskRay, mstorsjo

Reviewed By: mstorsjo

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[GPGPU] Fix #includes.
Michael Kruse [Thu, 14 Nov 2019 20:34:39 +0000 (14:34 -0600)]
[GPGPU] Fix #includes.

Adapt for 05da2fe52162 "Sink all InitializePasses.h includes" which
forgot the GPGPU files (presumably because POLLY_ENABLE_GPGPU_CODEGEN
is OFF by default).

4 years ago[globalisel][irtanslator] The IRTranslator should preserve TBAA information
Daniel Sanders [Thu, 14 Nov 2019 20:11:00 +0000 (12:11 -0800)]
[globalisel][irtanslator] The IRTranslator should preserve TBAA information

4 years ago[lldb][Editline] Support ctrl+left/right arrow word navigation.
Jordan Rupprecht [Tue, 12 Nov 2019 19:37:23 +0000 (11:37 -0800)]
[lldb][Editline] Support ctrl+left/right arrow word navigation.

Summary:
This adds several 5C/5D escape codes that allow moving forward/backward words similar to bash command line navigation.

On my terminal, `ctrl+v ctrl+<left arrow>` prints `^[[1;5D`. However, it seems inputrc also maps other escape variants of this to forward/backward word, so I've included those too. Similar for 5C = ctrl+right arrow.

Reviewers: JDevlieghere, labath

Reviewed By: JDevlieghere, labath

Subscribers: merge_guards_bot, lldb-commits

Tags: #lldb

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

4 years agoFix up lit's tests to run in a multi-config build environment.
Paul Robinson [Thu, 14 Nov 2019 16:56:32 +0000 (08:56 -0800)]
Fix up lit's tests to run in a multi-config build environment.

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

4 years ago[Pipeliner] Fix an assertion caused by iterator invalidation.
Sumanth Gundapaneni [Thu, 14 Nov 2019 19:08:06 +0000 (13:08 -0600)]
[Pipeliner] Fix an assertion caused by iterator invalidation.

4 years ago[Hexagon] Validate the iterators before converting them to mux.
Sumanth Gundapaneni [Thu, 14 Nov 2019 19:01:16 +0000 (13:01 -0600)]
[Hexagon] Validate the iterators before converting them to mux.

The conditional instructions that are translated to mux instructions
are deleted and the iterators to these deleted instructions are being
used later. This patch fixed this issue.

4 years ago[Hexagon] Fix clang driver to parse -mcpu/-mvXX and -march properly.
Sumanth Gundapaneni [Thu, 14 Nov 2019 18:59:15 +0000 (12:59 -0600)]
[Hexagon] Fix clang driver to parse -mcpu/-mvXX and -march properly.

Before this patch if we pass "-mcpu=hexagonv65 -march=hexagon" in this order,
the driver fails to figure out the correct cpu version. This patch fixed this
issue.