platform/upstream/llvm.git
3 years ago[AArch64] Add tests for 128-bit shift variations.
Eli Friedman [Mon, 12 Oct 2020 21:38:44 +0000 (14:38 -0700)]
[AArch64] Add tests for 128-bit shift variations.

It looks like there's still some room for optimization; the funnel shift
lowering is more efficient than the lowering of actual shifts.

3 years agoLex: Avoid MemoryBuffer* key in ExcludedPreprocessorDirectiveSkipMapping, NFC
Duncan P. N. Exon Smith [Thu, 8 Oct 2020 22:27:47 +0000 (18:27 -0400)]
Lex: Avoid MemoryBuffer* key in ExcludedPreprocessorDirectiveSkipMapping, NFC

This is a prep patch for changing SourceManager to return
`Optional<MemoryBufferRef>` instead of `MemoryBuffer`. With that change the
address of the MemoryBuffer will be gone, so instead use the start of the
buffer as the key for this map.

No functionality change intended, as it's expected that the pointer identity
matches between the buffers and the buffer data.

Radar-Id: rdar://70139990
Differential Revision: https://reviews.llvm.org/D89136

3 years agoEnsure TreeTransform considers ParmVarDecls as transformed Decls
Erich Keane [Mon, 12 Oct 2020 20:56:27 +0000 (13:56 -0700)]
Ensure TreeTransform considers ParmVarDecls as transformed Decls

See PR47804:

TreeTransform uses TransformedLocalDecls as a map of declarations that
have been transformed already. When doing a "TransformDecl", which
happens in the cases of updating a DeclRefExpr's target, the default
implementation simply returns the already transformed declaration.

However, this was not including ParmVarDecls. SO, any use of
TreeTransform that didn't re-implement TransformDecl would NOT properly
update the target of a DeclRefExpr, resulting in odd behavior.

In the case of Typo-recovery, the result was that a lambda that used its
own parameter would cause an error, since it thought that the
ParmVarDecl referenced was a different lambda. Additionally, this caused
a problem in the AST (a declrefexpr into another scope) such that a
future instantiation would cause an assertion.

This patch ensures that the ParmVarDecl transforming process records
into TransformedLocalDecls so that the DeclRefExpr is ALSO updated.

3 years ago[CostModel] get type-based cost for vector intrinsics directly
Sanjay Patel [Mon, 12 Oct 2020 21:05:09 +0000 (17:05 -0400)]
[CostModel] get type-based cost for vector intrinsics directly

This is NFC-intended (the reductions and other intrinsics have
tests that should provide coverage) - trying to untangle the
mess that has formed here.

We were stripping the arguments off of the given
"IntrinsicCostAttributes" and then semi-recursively
calling back into getIntrinsicInstrCost() only to
then call getTypeBasedIntrinsicInstrCost(), so make
that call directly instead.

3 years agoDependencyScanning: pull factory function into MinimizedVFS, NFC
Duncan P. N. Exon Smith [Mon, 12 Oct 2020 20:01:07 +0000 (16:01 -0400)]
DependencyScanning: pull factory function into MinimizedVFS, NFC

Avoid need for getBufferPtr API, simplifying another patch. No
functionality change.

3 years ago[TableGen] Add overload of RecordKeeper::getAllDerivedDefinitions()
Paul C. Anagnostopoulos [Sun, 4 Oct 2020 18:48:44 +0000 (14:48 -0400)]
[TableGen] Add overload of RecordKeeper::getAllDerivedDefinitions()
  and use in PseudoLowering backend.
Now the two getAllDerivedDefinitions() use StringRef and Arrayref.
Use all_of() in getAllDerivedDefinitions().

3 years ago[X86] Add more tests for D89178. NFC
Craig Topper [Mon, 12 Oct 2020 19:40:03 +0000 (12:40 -0700)]
[X86] Add more tests for D89178. NFC

3 years ago[MinGW][clang-shlib] Build only when LLVM_LINK_LLVM_DYLIB is enabled
Mateusz Mikuła [Mon, 12 Oct 2020 19:56:35 +0000 (22:56 +0300)]
[MinGW][clang-shlib] Build only when LLVM_LINK_LLVM_DYLIB is enabled

Otherwise it's easy to hit 2^16 DLL exports limit.

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

3 years ago[LLD] [COFF] Fix a ubsan error in pdb-type-server-missing.yaml
Martin Storsjö [Thu, 8 Oct 2020 06:49:16 +0000 (09:49 +0300)]
[LLD] [COFF] Fix a ubsan error in pdb-type-server-missing.yaml

This error has been present since 5519e4da83d1abc666203.

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

3 years ago[libunwind] [SEH] Don't interact with foreign exceptions
Martin Storsjö [Wed, 27 Nov 2019 13:55:53 +0000 (15:55 +0200)]
[libunwind] [SEH] Don't interact with foreign exceptions

This unfortunately means that we don't execute C++ destructors when
unwinding past such frames for a different SEH unwind purpose (e.g.
as part of setjmp/longjmp), but that case isn't handled properly at
the moment (the original unwind intent is lost and we end up with an
unhandled exception). This patch makes sure the foreign unwind terminates
as intended.

After executing a handler, _Unwind_Resume doesn't have access to
the target frame parameter of the original foreign unwind. We also
currently blindly set ExceptionCode to STATUS_GCC_THROW - we could
set that correctly by storing the original code in _GCC_specific_handler,
but we don't have access to the original target frame value.

This also matches what libgcc's SEH unwinding code does in this case.

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

3 years ago[libomptarget][amdgcn] Implement partial barrier
JonChesterfield [Mon, 12 Oct 2020 20:21:56 +0000 (21:21 +0100)]
[libomptarget][amdgcn] Implement partial barrier

[libomptarget][amdgcn] Implement partial barrier

named_sync is used to coordinate non-spmd kernels. This uses bar.sync on nvptx.
There is no corresponding ISA support on amdgcn, so this is implemented using
shared memory, one word initialized to zero.

Each wave increments the variable by one. Whichever wave is last is responsible
for resetting the variable to zero, at which point it and the others continue.

The race condition on a wave reaching the barrier before another wave has
noticed that it has been released is handled with a generation counter, packed
into the same word.

Uses a shared variable that is not needed on nvptx. Introduces a new hook,
kmpc_impl_target_init, to allow different targets to do extra initialization.

Reviewed By: jdoerfert

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

3 years ago[mlir][Linalg] Temporarily circumvent TensorConstant bufferize bug
Nicolas Vasilache [Mon, 12 Oct 2020 20:18:28 +0000 (20:18 +0000)]
[mlir][Linalg] Temporarily circumvent TensorConstant bufferize bug

The TensorConstantOp bufferize conversion pattern has a bug that
makes it incorrect in the case of vectors whose alignment is not
the natural alignment. Circumvent it temporarily by using a power of 2.

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

3 years ago[gn build] Add libclang_rt.ios.a, libclang_rt.iossim.a to the build
Nico Weber [Mon, 12 Oct 2020 19:20:58 +0000 (15:20 -0400)]
[gn build] Add libclang_rt.ios.a, libclang_rt.iossim.a to the build

It's built with just-built clang, like all other compiler-rt parts
in the GN build.

This requires adding some cross build support to the mac toolchain.

Also add explicit mmacosx-version-min and miphoneos-version-min
flags to the build.

ios.a is only built with the arm64 slice, iossim.a only with the
x86_64 slice for now. (The latter should maybe become host_cpu
when Arm Macs become a common iOS development platform.)

With this, it's possible to build chromium/iOS with a GN-built LLVM.

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

3 years ago[AMDGPU] Correct processor names for gfx1010 and gfx1011
Tony [Mon, 12 Oct 2020 19:21:53 +0000 (19:21 +0000)]
[AMDGPU] Correct processor names for gfx1010 and gfx1011

Change-Id: Ie409f86876b0437d0b0405aff42872963708d926

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

3 years agoReland "[SCEV] Model ptrtoint(SCEVUnknown) cast not as unknown, but as zext/trunc...
Roman Lebedev [Mon, 12 Oct 2020 19:19:17 +0000 (22:19 +0300)]
Reland "[SCEV] Model ptrtoint(SCEVUnknown) cast not as unknown, but as zext/trunc/self of SCEVUnknown"

This relands commit 1c021c64caef83cccb719c9bf0a2554faa6563af which was
reverted in commit 17cec6a11a12f815052d56a17ef738cf246a2d9a because
an assertion was being triggered, since `BuildConstantFromSCEV()`
wasn't updated to handle the case where the constant we want to truncate
is actually a pointer. I was unsuccessful in coming up with a test case
where we'd end there with constant zext/sext of a pointer,
so i didn't handle those cases there until there is a test case.

Original commit message:

While we indeed can't treat them as no-ops, i believe we can/should
do better than just modelling them as `unknown`. `inttoptr` story
is complicated, but for `ptrtoint`, it seems straight-forward
to model it just as a zext-or-trunc of unknown.

This may be important now that we track towards
making inttoptr/ptrtoint casts not no-op,
and towards preventing folding them into loads/etc
(see D88979/D88789/D88788)

Reviewed By: mkazantsev

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

3 years ago[NFC][ScalarEvolution] Add tests with ptrtoint in constant context in loop
Roman Lebedev [Mon, 12 Oct 2020 19:17:16 +0000 (22:17 +0300)]
[NFC][ScalarEvolution] Add tests with ptrtoint in constant context in loop

Reduced from the https://reviews.llvm.org/D88806#2325340

3 years agoRevert "Canonicalize declaration pointers when forming APValues."
Arthur Eubanks [Mon, 12 Oct 2020 19:18:00 +0000 (12:18 -0700)]
Revert "Canonicalize declaration pointers when forming APValues."

This reverts commit 9dcd96f728863d40d6f5922ed52732fdd728fb5f.

See https://crbug.com/1134762.

3 years ago[SVE] Fix VBITS_GE_256 typo in fixed-width tests.
Cameron McInally [Mon, 12 Oct 2020 19:31:34 +0000 (14:31 -0500)]
[SVE] Fix VBITS_GE_256 typo in fixed-width tests.

This seems to be a typo that propagated to a number of tests. Replace VBITS_GE_256 with CHECK. There is no VBITS_GE_256.

3 years ago[trace] Scaffold "thread trace dump instructions"
Walter Erquinigo [Fri, 2 Oct 2020 21:32:22 +0000 (14:32 -0700)]
[trace] Scaffold "thread trace dump instructions"

Depends on D88841

As per the discussion in the RFC, we'll implement both

  thread trace dump [instructions | functions]

This is the first step in implementing the "instructions" dumping command.

It includes:

- A minimal ProcessTrace plugin for representing processes from a trace file. I noticed that it was a required step to mimic how core-based processes are initialized, e.g. ProcessElfCore and ProcessMinidump. I haven't had the need to create ThreadTrace yet, though. So far HistoryThread seems good enough.
- The command handling itself in CommandObjectThread, which outputs a placeholder text instead of the actual instructions. I'll do that part in the next diff.
- Tests

{F13132325}

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

3 years ago[flang][openacc] Lower data construct
Valentin Clement [Mon, 12 Oct 2020 19:03:53 +0000 (15:03 -0400)]
[flang][openacc] Lower data construct

This patch upstream the lowering of Data construct that was initially done in
https://github.com/flang-compiler/f18-llvm-project/pull/460.

Reviewed By: jeanPerier

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

3 years ago[Coroutine][Sema] Only tighten the suspend call temp lifetime for final awaiter
Xun Li [Mon, 12 Oct 2020 19:00:20 +0000 (12:00 -0700)]
[Coroutine][Sema] Only tighten the suspend call temp lifetime for final awaiter

In https://reviews.llvm.org/D87470 I added the change to tighten the lifetime of the expression awaiter.await_suspend().address.
Howver it was incorrect. ExprWithCleanups will call the dtor and end the lifetime for all the temps created in the current full expr.
When this is called on a normal await call, we don't want to do that.
We only want to do this for the call on the final_awaiter, to avoid writing into the frame after the frame is destroyed.
This change fixes it, by checking IsImplicit.

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

3 years agoupdate .txt --> .md links
brett koonce [Sat, 10 Oct 2020 20:10:53 +0000 (20:10 +0000)]
update .txt --> .md links

3 years ago[mlir] fixing typo in parseAttribute that was ignoring caller-specified types
Ben Vanik [Mon, 12 Oct 2020 18:26:50 +0000 (11:26 -0700)]
[mlir] fixing typo in parseAttribute that was ignoring caller-specified types

Reviewed By: rriddle

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

3 years ago[LLDB] Fix 37 tests on Windows
Adrian McCarthy [Mon, 12 Oct 2020 17:56:10 +0000 (10:56 -0700)]
[LLDB] Fix 37 tests on Windows

A Windows-style LLDB_PYTHON_HOME path in a Cmake template didn't have the
backslashes escaped, which led to a garbled paths derived from it.  Fixed
by expanding the environment variable as a raw string literal.

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

3 years ago[Inliner][NPM] Fix various tests under NPM
Arthur Eubanks [Thu, 8 Oct 2020 20:14:43 +0000 (13:14 -0700)]
[Inliner][NPM] Fix various tests under NPM

alloca-dbgdeclare-merge.ll:
alloca-merge-align.ll:
array_merge.ll:
 NPM inliner does not merge allocas

delete-call.ll:
 NPM inliner does not delete readonly calls

externally_available.ll:
 NPM inliner does not delete available_externally functions

inline-cold-callee.ll:
inline-hot-callee.ll:
 inline-hot-callee.ll has a comment saying it only applies to legacy PM,
 I assume same for inline-cold-callee.ll

devirtualize-2.ll:
inline-hot-callsite:
monster_scc.ll:
pr22285.ll:
 already has legacy and new PM RUN lines

inline-cold.ll:
 profile-summary required to see callee as cold

prof-update-sample.ll:
 profile-summary required to update branch_weights

Reviewed By: davidxl

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

3 years ago[InstCombine] FoldShiftByConstant - create Scalar/Vector constant with ConstantInt...
Simon Pilgrim [Mon, 12 Oct 2020 17:39:30 +0000 (18:39 +0100)]
[InstCombine] FoldShiftByConstant - create Scalar/Vector constant with ConstantInt::get(). NFCI.

There's no need to create constant vector splats manually - missed this one in rG24dd0cd1edd5

3 years ago[clangd] Heuristic resolution for dependent type and template names
Nathan Ridge [Tue, 29 Sep 2020 07:19:59 +0000 (03:19 -0400)]
[clangd] Heuristic resolution for dependent type and template names

Fixes https://github.com/clangd/clangd/issues/543

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

3 years ago[sanitizer] Disable fast_unwind_on_malloc as default for arm-linux-gnu
Adhemerval Zanella [Mon, 12 Oct 2020 17:23:26 +0000 (14:23 -0300)]
[sanitizer] Disable fast_unwind_on_malloc as default for arm-linux-gnu

ARM thumb/thumb2 frame pointer is inconsistent on GCC and Clang [1]
and fast-unwider is also unreliable when mixing arm and thumb code [2].

The fast unwinder on ARM tries to probe and compare the frame-pointer
at different stack layout positions and it works reliable only on
systems where all the libraries were built in arm mode (either with
gcc or clang) or with clang in thmb mode (which uses the same stack
frame pointer layout in arm and thumb).

However when mixing objects built with different abi modes the
fast unwinder is still problematic as shown by the failures on the
AddressSanitizer.ThreadStackReuseTest. For these failures, the
malloc is called by the loader itself and since it has been built
with a thum enabled gcc, the stack frame is not correctly obtained
and the suppression rule is not applied (resulting in a leak warning).

The check for fast-unwinder-works is also changed: instead of checking
f it is explicit enabled in the compiler flags, it now checks if
compiler defined thumb pre-processor.

This should fix BZ#44158.

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92172
[2] https://bugs.llvm.org/show_bug.cgi?id=44158

Reviewed By: eugenis

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

3 years ago[X86] Support -march=x86-64-v[234]
Fangrui Song [Mon, 12 Oct 2020 16:35:22 +0000 (09:35 -0700)]
[X86] Support -march=x86-64-v[234]

PR47686. These micro-architecture levels are defined in the x86-64 psABI:

https://gitlab.com/x86-psABIs/x86-64-ABI/-/commit/77566eb03bc6a326811cb7e9

GCC 11 will support these levels.

Note, -mtune=x86-64-v[234] are invalid and __builtin_cpu_is cannot be
used on them.

Reviewed By: craig.topper, RKSimon

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

3 years ago[flang][openacc] Lower parallel construct
Valentin Clement [Mon, 12 Oct 2020 17:20:52 +0000 (13:20 -0400)]
[flang][openacc] Lower parallel construct

This patch upstream the lowering of Parallel construct that was initially done in
https://github.com/flang-compiler/f18-llvm-project/pull/460.

Reviewed By: jeanPerier

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

3 years ago[flang][openacc] Update Loop Construct lowering to use fir::getBase
Valentin Clement [Mon, 12 Oct 2020 17:19:40 +0000 (13:19 -0400)]
[flang][openacc] Update Loop Construct lowering to use fir::getBase

This patch update the loop construct lowring to match fir-dev changes.

Reviewed By: jeanPerier

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

3 years ago[InstCombine] FoldShiftByConstant - create Scalar/Vector constant with ConstantInt...
Simon Pilgrim [Mon, 12 Oct 2020 17:17:08 +0000 (18:17 +0100)]
[InstCombine] FoldShiftByConstant - create Scalar/Vector constant with ConstantInt::get(). NFCI.

There's no need to create constant vector splats manually.

3 years ago[InstCombine] FoldShiftByConstant - merge equivalent types. NFCI.
Simon Pilgrim [Mon, 12 Oct 2020 16:47:36 +0000 (17:47 +0100)]
[InstCombine] FoldShiftByConstant - merge equivalent types. NFCI.

Consistently use the original shift instruction's Type/BitWidth instead of the operands, casted values etc.

3 years agoRestore "[ThinLTO] Avoid temporaries when loading global decl attachment metadata"
Teresa Johnson [Fri, 25 Sep 2020 04:52:15 +0000 (21:52 -0700)]
Restore "[ThinLTO] Avoid temporaries when loading global decl attachment metadata"

This restores commit ab1b4810b55279bcf6fdd87be74a403440be3991 which was
reverted in 01b9deba76a950f04574b656c7c31ae389104f2d, with a fix for the
issue it caused. We should use a temporary BitstreamCursor when
loading the global decl attachment records so that the abbrev ids held
in the lazy loading IndexCursor are not clobbered. Enhanced the test so
that the issue is exposed there.

Original description:

When performing ThinLTO importing, the metadata loader attempts to lazy
load, by building an index. However, module level global decl attachment
metadata was being parsed early while building the index, since the
associated (module level) global values aren't materialized on demand.
This results in the creation of forward reference temporary metadatas,
which are expensive.

Normally, these module level global values don't have much attached
metadata. However, in the case of -fwhole-program-vtables (e.g. for
whole program devirtualization), the vtables may have many attached type
metadatas. This was resulting in very slow performance when performing
ThinLTO importing with the default lazy loading.

This patch restructures the handling of these global decl attachment
records, delaying their parsing until after the lazy loading index has
been built. Then the parser can use the interface that loads from the
index, which resolves forward references immediately instead of creating
expensive temporaries.

For one ThinLTO backend that imports from modules containing huge
numbers of vtables and associated types, I measured the following
compile times for the metadata materialization during function
importing, rounded to nearest second:

No -fwhole-program-vtables:
  Lazy loading on (head):  1s
  Lazy loading off (head): 3s
  Lazy loading on (patch): 1s

With -fwhole-program-vtables:
  Lazy loading on (head):  440s
  Lazy loading off (head): 4s
  Lazy loading on (patch): 2s

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

3 years ago[VPlan] Use VPValue def for VPMemoryInstructionRecipe.
Florian Hahn [Mon, 12 Oct 2020 16:04:38 +0000 (17:04 +0100)]
[VPlan] Use VPValue def for VPMemoryInstructionRecipe.

This patch turns VPMemoryInstructionRecipe into a VPValue and uses it
during VPlan construction and codegeneration instead of the plain IR
reference where possible.

Reviewed By: dmgreen

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

3 years agoMake likelihood lit test less brittle
Mark de Wever [Sun, 11 Oct 2020 13:07:12 +0000 (15:07 +0200)]
Make likelihood lit test less brittle

Jeremy Morse discovered an issue with the lit test introduced in D88363. The
test gives different results for Sony's `-O1`.

The test needs to run at `-O1` otherwise the likelihood attribute will be
ignored. Instead of running all `-O1` passes it only runs the lower-expect pass
which is needed to lower `__builtin_expect`.

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

3 years ago[compiler-rt] Suppress -Wunused-result due to ::write when _FORTIFY_SOURCE>0 in glibc
Fangrui Song [Mon, 12 Oct 2020 16:57:12 +0000 (09:57 -0700)]
[compiler-rt] Suppress -Wunused-result due to ::write when _FORTIFY_SOURCE>0 in glibc

Noticed by Peter Foley.
In glibc, ::write is declared as __attribute__((__warn_unused_result__)) when __USE_FORTIFY_LEVEL is larger than 0.

3 years agoRevert 1c021c64c "[SCEV] Model ptrtoint(SCEVUnknown) cast not as unknown, but as...
Hans Wennborg [Mon, 12 Oct 2020 16:32:25 +0000 (18:32 +0200)]
Revert 1c021c64c "[SCEV] Model ptrtoint(SCEVUnknown) cast not as unknown, but as zext/trunc/self of SCEVUnknown"

> While we indeed can't treat them as no-ops, i believe we can/should
> do better than just modelling them as `unknown`. `inttoptr` story
> is complicated, but for `ptrtoint`, it seems straight-forward
> to model it just as a zext-or-trunc of unknown.
>
> This may be important now that we track towards
> making inttoptr/ptrtoint casts not no-op,
> and towards preventing folding them into loads/etc
> (see D88979/D88789/D88788)
>
> Reviewed By: mkazantsev
>
> Differential Revision: https://reviews.llvm.org/D88806

It caused the following assert during Chromium builds:

  llvm/lib/IR/Constants.cpp:1868:
  static llvm::Constant *llvm::ConstantExpr::getTrunc(llvm::Constant *, llvm::Type *, bool):
  Assertion `C->getType()->isIntOrIntVectorTy() && "Trunc operand must be integer"' failed.

See code review for a link to a reproducer.

This reverts commit 1c021c64caef83cccb719c9bf0a2554faa6563af.

3 years ago[GlobalISel][KnownBits] Early return on out of bound shift amounts
Konstantin Schwarz [Mon, 12 Oct 2020 09:45:33 +0000 (11:45 +0200)]
[GlobalISel][KnownBits] Early return on out of bound shift amounts

If the known shift amount is bigger than or equal to the bitwidth of the type of the value to be shifted,
the result is target dependent, so don't try to infer any bits.

This fixes a crash we've seen in one of our internal test suites.

Reviewed By: arsenm

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

3 years ago[Tests] Regenerate test checks; NFC
Dávid Bolvanský [Mon, 12 Oct 2020 15:54:16 +0000 (17:54 +0200)]
[Tests] Regenerate test checks; NFC

3 years ago[NFC][MC] Use MCRegister in LiveRangeMatrix
Mircea Trofin [Fri, 9 Oct 2020 17:04:29 +0000 (10:04 -0700)]
[NFC][MC] Use MCRegister in LiveRangeMatrix

The change starts from LiveRangeMatrix and also checks the users of the
APIs are typed accordingly.

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

3 years ago[VPlan] Use operands for printing of VPWidenMemoryInstructionRecipe.
Florian Hahn [Fri, 2 Oct 2020 18:02:22 +0000 (19:02 +0100)]
[VPlan] Use operands for printing of VPWidenMemoryInstructionRecipe.

Now that operands of the recipe are managed through VPUser, we can
simplify the printing by just using the operands.

3 years ago[NFC][Regalloc] Pass VirtRegMap by reference.
Mircea Trofin [Fri, 9 Oct 2020 23:38:42 +0000 (16:38 -0700)]
[NFC][Regalloc] Pass VirtRegMap by reference.

It's never null - the reason it's modeled as a pointer is because the
pass can't init it in its ctor. Passing by ref simplifies the code, too,
as the null checks were unnecessary complexity.

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

3 years ago[AMDGPU] Print metadata on error
Sebastian Neubauer [Mon, 12 Oct 2020 14:38:14 +0000 (16:38 +0200)]
[AMDGPU] Print metadata on error

If the metadata is valid yaml, we can print it, even if it failed
validation. That makes it easier to debug any wrong metadata.

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

3 years ago[LoopDeletion] Remove over-eager SCEV verification.
Florian Hahn [Mon, 12 Oct 2020 15:13:26 +0000 (16:13 +0100)]
[LoopDeletion] Remove over-eager SCEV verification.

60b852092c98dbdc6248d60109d90ae6f8ad841c introduced SCEV verification to
deleteDeadLoop, but it appears this check is currently a bit over-eager
and some users of deleteDeadLoop appear to only patch up SE after
calling it (e.g. PR47753).

Remove the extra check for now. We can consider adding it back after we
tracked down the source of the inconsistency for PR47753.

3 years ago[AMDGPU] Insert waterfall loops for divergent calls
Sebastian Neubauer [Fri, 25 Sep 2020 09:59:31 +0000 (11:59 +0200)]
[AMDGPU] Insert waterfall loops for divergent calls

Extend loadSRsrcFromVGPR to allow moving a range of instructions into
the loop. The call instruction is surrounded by copies into physical
registers which should be part of the waterfall loop.

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

3 years ago[SVE] Lower fixed length VECREDUCE_XOR operation
Cameron McInally [Thu, 8 Oct 2020 14:33:20 +0000 (09:33 -0500)]
[SVE] Lower fixed length VECREDUCE_XOR operation

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

3 years ago[AMDGPU] Use @LINE for error checking in gfx10 assembler tests
Jay Foad [Mon, 12 Oct 2020 15:10:12 +0000 (16:10 +0100)]
[AMDGPU] Use @LINE for error checking in gfx10 assembler tests

3 years ago[InstCombine] matchFunnelShift - fold or(shl(a,x),lshr(b,sub(bw,x))) -> fshl(a,b...
Simon Pilgrim [Mon, 12 Oct 2020 15:06:41 +0000 (16:06 +0100)]
[InstCombine] matchFunnelShift - fold or(shl(a,x),lshr(b,sub(bw,x))) -> fshl(a,b,x) iff x < bw (REAPPLIED)

If value tracking can confirm that a shift value is less than the type bitwidth then we can more confidently fold general or(shl(a,x),lshr(b,sub(bw,x))) patterns to a funnel/rotate intrinsic pattern without causing bad codegen regressions in the backend (see D89139).

Reapplied after the shift canonicalization in rG02295e6d1a15 which removed the need to flip the shift values.

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

3 years ago[InstCombine] matchFunnelShift - remove shift value commutation. NFCI.
Simon Pilgrim [Mon, 12 Oct 2020 14:55:18 +0000 (15:55 +0100)]
[InstCombine] matchFunnelShift - remove shift value commutation. NFCI.

After rG02295e6d1a15 we no longer need to invert the shift values for fshr - this is just hidden at the moment as funnel shifts only ever match for constant values so never use the fshr "Sub on SHL" path.

3 years ago[InstCombine] matchFunnelShift - canonicalize to OR(SHL,LSHR). NFCI.
Simon Pilgrim [Mon, 12 Oct 2020 14:10:16 +0000 (15:10 +0100)]
[InstCombine] matchFunnelShift - canonicalize to OR(SHL,LSHR). NFCI.

Simplify the shift amount matching code by canonicalizing the shift ops first.

3 years ago[lldb] Note difference in vFile:pread/pwrite format for lldb
David Spickett [Mon, 12 Oct 2020 10:14:14 +0000 (11:14 +0100)]
[lldb] Note difference in vFile:pread/pwrite format for lldb

https://sourceware.org/gdb/current/onlinedocs/gdb/Host-I_002fO-Packets.html

States that all numbers should be hexidecimal but lldb
uses decimals in vFile:pread and vFile:pwrite.

lldb-server can accept either since it ends up using
strtoull which will detect the base being used.

Reviewed By: labath

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

3 years ago[clangd] Disable a failure TopLevelDecls test.
Haojian Wu [Mon, 12 Oct 2020 14:02:52 +0000 (16:02 +0200)]
[clangd] Disable a failure TopLevelDecls test.

The test fails on clang-ppc64le-rhel buildbot, needs further
investigation.

3 years agoDump decl when the test matcher fails.
Haojian Wu [Mon, 12 Oct 2020 13:41:04 +0000 (15:41 +0200)]
Dump decl when the test matcher fails.

3 years ago[NFC] Remove redundant isFullSet checks
Max Kazantsev [Mon, 12 Oct 2020 13:31:13 +0000 (20:31 +0700)]
[NFC] Remove redundant isFullSet checks

Full set case is handled inside intersection, no need to
litter the code with duplicating them outside.

3 years ago[gn build] Port f9317f7bf6b
LLVM GN Syncbot [Mon, 12 Oct 2020 13:27:45 +0000 (13:27 +0000)]
[gn build] Port f9317f7bf6b

3 years ago[clangd] Record memory usages after each notification
Kadir Cetinkaya [Mon, 28 Sep 2020 13:09:55 +0000 (15:09 +0200)]
[clangd] Record memory usages after each notification

Depends on D88415

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

3 years ago[clangd] Add a helper for exposing tracer status
Kadir Cetinkaya [Fri, 9 Oct 2020 08:35:40 +0000 (10:35 +0200)]
[clangd] Add a helper for exposing tracer status

3 years ago[clangd] Introduce memory usage dumping to TUScheduler, for Preambles and ASTCache
Kadir Cetinkaya [Mon, 28 Sep 2020 13:38:26 +0000 (15:38 +0200)]
[clangd] Introduce memory usage dumping to TUScheduler, for Preambles and ASTCache

File-granular information is considered details.

Depends on D88411

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

3 years ago[clangd] Introduce memory dumping to FileIndex, FileSymbols and BackgroundIndex
Kadir Cetinkaya [Mon, 28 Sep 2020 13:15:13 +0000 (15:15 +0200)]
[clangd] Introduce memory dumping to FileIndex, FileSymbols and BackgroundIndex

File-granular information is considered details.

Depends on D88411

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

3 years ago[clangd] Add a metric for tracking memory usage
Kadir Cetinkaya [Mon, 28 Sep 2020 13:03:45 +0000 (15:03 +0200)]
[clangd] Add a metric for tracking memory usage

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

3 years ago[clangd] Introduce MemoryTrees
Kadir Cetinkaya [Mon, 28 Sep 2020 12:17:02 +0000 (14:17 +0200)]
[clangd] Introduce MemoryTrees

A structure that can be used to represent memory usage of a nested
set of systems.

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

3 years ago[DAG][ARM][MIPS][RISCV] Improve funnel shift promotion to use 'double shift' patterns
Simon Pilgrim [Mon, 12 Oct 2020 13:10:18 +0000 (14:10 +0100)]
[DAG][ARM][MIPS][RISCV] Improve funnel shift promotion to use 'double shift' patterns

Based on a discussion on D88783, if we're promoting a funnel shift to a width at least twice the size as the original type, then we can use the 'double shift' patterns (shifting the concatenated sources).

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

3 years ago[clang-tidy] Fix IncludeInserter usage example in a comment.
Alexander Kornienko [Mon, 12 Oct 2020 13:05:42 +0000 (15:05 +0200)]
[clang-tidy] Fix IncludeInserter usage example in a comment.

3 years ago[clangd][NFC] Fix formatting in ClangdLSPServer
Kadir Cetinkaya [Mon, 12 Oct 2020 12:24:05 +0000 (14:24 +0200)]
[clangd][NFC] Fix formatting in ClangdLSPServer

3 years ago[mlir][gpu] Adding gpu runtime wrapper functions for async execution.
Christian Sigg [Thu, 8 Oct 2020 14:37:44 +0000 (16:37 +0200)]
[mlir][gpu] Adding gpu runtime wrapper functions for async execution.

Reviewed By: herhut

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

3 years ago[VE] Support copysign math function
Kazushi (Jam) Marukawa [Sun, 11 Oct 2020 08:33:47 +0000 (17:33 +0900)]
[VE] Support copysign math function

VE doesn't have instruction for copysign, so expand it.  Add a
regression test also.

Reviewed By: simoll

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

3 years ago[lldb/Utility] Introduce UnimplementedError
Pavel Labath [Fri, 9 Oct 2020 09:23:17 +0000 (11:23 +0200)]
[lldb/Utility] Introduce UnimplementedError

This is essentially a replacement for the PacketUnimplementedError
previously present in the gdb-remote server code.

The reason I am introducing a generic error is because I wanted the
native process classes to be able to signal that they do not support
some functionality. They could not use PacketUnimplementedError as they
are independent of a specific transport protocol. Putting the error
class in the the native process code was also not ideal because the
gdb-remote code is also used for lldb-server's platform mode, which does
not (should not) know how to debug individual processes.

I'm putting it under Utility, as I think it can be generally useful for
notifying about unsupported/unimplemented functionality (and in
particular, for programatically testing whether something is
unsupported).

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

3 years ago[clangd] Stop capturing trace args if the tracer doesn't need them.
Sam McCall [Fri, 9 Oct 2020 15:22:24 +0000 (17:22 +0200)]
[clangd] Stop capturing trace args if the tracer doesn't need them.

The tracer is now expected to allocate+free the args itself.

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

3 years ago[nfc] [lldb] Simplify calling SymbolFileDWARF::GetDWARFCompileUnit
Jan Kratochvil [Mon, 12 Oct 2020 09:25:47 +0000 (11:25 +0200)]
[nfc] [lldb] Simplify calling SymbolFileDWARF::GetDWARFCompileUnit

Only SymbolFileDWARF::ParseCompileUnit creates a CompileUnit and it uses
DWARFCompileUnit for that.

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

3 years ago[mlir][Linalg] NFC - Automate the printing of canonicalizers and folders for nameds...
Nicolas Vasilache [Mon, 12 Oct 2020 11:21:43 +0000 (11:21 +0000)]
[mlir][Linalg] NFC - Automate the printing of canonicalizers and folders for nameds Linalg ops.

This revision reduces the number of places that specific information needs to be modified when adding new named Linalg ops.

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

3 years ago[mlir][Linalg] Add named Linalg ops on tensor to buffer support.
Nicolas Vasilache [Mon, 12 Oct 2020 10:09:50 +0000 (10:09 +0000)]
[mlir][Linalg] Add named Linalg ops on tensor to buffer support.

This revision introduces support for buffer allocation for any named linalg op.
To avoid template instantiating many ops, a new ConversionPattern is created to capture the LinalgOp interface.

Some APIs are updated to remain consistent with MLIR style:
`OwningRewritePatternList * -> OwningRewritePatternList &`
`BufferAssignmentTypeConverter * -> BufferAssignmentTypeConverter &`

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

3 years ago[clangd] Validate optional fields more strictly.
Sam McCall [Fri, 9 Oct 2020 14:06:46 +0000 (16:06 +0200)]
[clangd] Validate optional fields more strictly.

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

3 years ago[JSON] Add ObjectMapper::mapOptional to validate optional data.
Sam McCall [Fri, 9 Oct 2020 13:33:56 +0000 (15:33 +0200)]
[JSON] Add ObjectMapper::mapOptional to validate optional data.

Currently the idiom for mapping optional fields is:
  ObjectMapper O(Val, P);
  if (!O.map("required1", Out.R1) || !O.map("required2", Out.R2))
    return false;
  O.map("optional1", Out.O1); // ignore result
  return true;

If `optional1` is present but malformed, then we won't detect/report
that error. We may even leave `Out` in an incomplete state while returning true.
Instead, we'd often prefer to ignore `optional1` if it is absent, but otherwise
behave just like map().

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

3 years agoRevert rGb97093e520036f8 - "[InstCombine] matchFunnelShift - fold or(shl(a,x),lshr...
Simon Pilgrim [Mon, 12 Oct 2020 10:38:52 +0000 (11:38 +0100)]
Revert rGb97093e520036f8 - "[InstCombine] matchFunnelShift - fold or(shl(a,x),lshr(b,sub(bw,x))) -> fshl(a,b,x) iff x < bw"

This reverts commit b97093e520036f88c5b39e572966f1c8c387661e.

Funnel shift argument commutation isn't working correctly

3 years ago[VE] Support fneg and frem
Kazushi (Jam) Marukawa [Sun, 11 Oct 2020 08:33:47 +0000 (17:33 +0900)]
[VE] Support fneg and frem

VE doesn't have fneg or frem instruction, so change them to expand.  Add
regression tests also.

Reviewed By: simoll

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

3 years ago[VE] Change to expand BRCOND
Kazushi (Jam) Marukawa [Tue, 6 Oct 2020 14:15:42 +0000 (23:15 +0900)]
[VE] Change to expand BRCOND

VE doesn't have BRCOND instruction, so need to expand it.  Also add
a regression test.

Reviewed By: simoll

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

3 years agoFix buildbot failure for 702529d899c87e9268bb33d836dbc91b6bce0b16.
Haojian Wu [Mon, 12 Oct 2020 10:04:44 +0000 (12:04 +0200)]
Fix buildbot failure for 702529d899c87e9268bb33d836dbc91b6bce0b16.

3 years agoAdd test for cortex-a57/ARM sched model. NFC
Evgeny Leviant [Mon, 12 Oct 2020 09:49:56 +0000 (12:49 +0300)]
Add test for cortex-a57/ARM sched model. NFC

3 years ago[IR][FIX] Intrinsics - don't apply default willreturn if IntrNoReturn is specified
sstefan1 [Mon, 12 Oct 2020 09:25:52 +0000 (11:25 +0200)]
[IR][FIX] Intrinsics - don't apply default willreturn if IntrNoReturn is specified

Summary: Since willreturn will soon be added as default attribute, we can end up with both noreturn and willreturn on the same intrinsic. This was exposed by llvm.wasm.throw which has IntrNoReturn.

Reviewers: jdoerfert, arsenm

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

3 years ago[AST][RecoveryExpr] Don't perform early typo correction in C.
Haojian Wu [Mon, 12 Oct 2020 09:24:45 +0000 (11:24 +0200)]
[AST][RecoveryExpr] Don't perform early typo correction in C.

The dependent mechanism for C error-recovery is mostly finished,
this is the only place we have missed.

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

3 years ago[AST][RecoveryExpr] Build dependent callexpr in C for error-recovery.
Haojian Wu [Mon, 12 Oct 2020 09:12:58 +0000 (11:12 +0200)]
[AST][RecoveryExpr] Build dependent callexpr in C for error-recovery.

See whole context: https://reviews.llvm.org/D85025

Reviewed By: sammccall

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

3 years ago[llvm-readobj/elf] - Ignore the hash table when on EM_S390/EM_ALPHA platforms.
Georgii Rymar [Mon, 5 Oct 2020 10:25:59 +0000 (13:25 +0300)]
[llvm-readobj/elf] - Ignore the hash table when on EM_S390/EM_ALPHA platforms.

Specification for `SHT_HASH` table says (https://refspecs.linuxbase.org/elf/gabi4+/ch5.dynamic.html#hash)
that it contains `Elf32_Word` entries for both `32/64` bit objects.

But there is a problem with `EM_S390` and `ELF::EM_ALPHA` platforms: they use 8-bytes entries.
(see the issue reported: https://bugs.llvm.org/show_bug.cgi?id=47681).

Currently we might infer the size of the dynamic symbols table from hash table,
but because of the issue mentioned, the calculation is wrong. And also we don't dump the hash table
properly.

I am not sure if we want to support 8-bytes entries as they violates specification and also the
`.hash` table is kind of deprecated by itself (the `.gnu.hash` table is used nowadays).
So, the solution this patch suggests is to ban using of the hash table on `EM_S390/EM_ALPHA` platforms.

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

3 years ago[clang] Fix returning the underlying VarDecl as top-level decl for VarTemplateDecl.
Haojian Wu [Mon, 12 Oct 2020 08:45:37 +0000 (10:45 +0200)]
[clang] Fix returning the underlying VarDecl as top-level decl for VarTemplateDecl.

Given the following VarTemplateDecl AST,

```
VarTemplateDecl col:26 X
|-TemplateTypeParmDecl typename depth 0 index 0
`-VarDecl X 'bool' cinit
  `-CXXBoolLiteralExpr 'bool' true
```

previously, we returned the VarDecl as the top-level decl, which was not
correct, the top-level decl should be VarTemplateDecl.

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

3 years agoRevert "Revert "Give attributes C++ namespaces.""
Nicolas Vasilache [Mon, 12 Oct 2020 08:23:54 +0000 (08:23 +0000)]
Revert "Revert "Give attributes C++ namespaces.""

This reverts commit df295fac6cd14977672b2874700572e0f77b77da.

Reactivates a spuriously rolled back change.

3 years ago[mlir] Move Linalg tensors-to-buffers tests to Linalg tests.
Alexander Belyaev [Sun, 11 Oct 2020 18:09:27 +0000 (20:09 +0200)]
[mlir] Move Linalg tensors-to-buffers tests to Linalg tests.

The buffer placement preparation tests in
test/Transforms/buffer-placement-preparation* are using Linalg as a test
dialect which leads to confusion and "copy-pasta", i.e. Linalg is being
extended now and when TensorsToBuffers.cpp is changed, TestBufferPlacement is
sometimes kept in-sync, which should not be the case.

This has led to the unnoticed bug, because the tests were in a different directory and the patterns were slightly off.

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

3 years agoFix build failure caused by c5ba0d33cc060cc06a28a5d9101060afd1c0ee9a
David Sherwood [Mon, 12 Oct 2020 08:04:42 +0000 (09:04 +0100)]
Fix build failure caused by c5ba0d33cc060cc06a28a5d9101060afd1c0ee9a

3 years ago[SCEV] Model ptrtoint(SCEVUnknown) cast not as unknown, but as zext/trunc/self of...
Roman Lebedev [Mon, 12 Oct 2020 08:00:52 +0000 (11:00 +0300)]
[SCEV] Model ptrtoint(SCEVUnknown) cast not as unknown, but as zext/trunc/self of SCEVUnknown

While we indeed can't treat them as no-ops, i believe we can/should
do better than just modelling them as `unknown`. `inttoptr` story
is complicated, but for `ptrtoint`, it seems straight-forward
to model it just as a zext-or-trunc of unknown.

This may be important now that we track towards
making inttoptr/ptrtoint casts not no-op,
and towards preventing folding them into loads/etc
(see D88979/D88789/D88788)

Reviewed By: mkazantsev

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

3 years ago[SVE] Make ElementCount and TypeSize use a new PolySize class
David Sherwood [Wed, 23 Sep 2020 13:05:15 +0000 (14:05 +0100)]
[SVE] Make ElementCount and TypeSize use a new PolySize class

I have introduced a new template PolySize class, where the template
parameter determines the type of quantity, i.e. for an element
count this is just an unsigned value. The ElementCount class is
now just a simple derivation of PolySize<unsigned>, whereas TypeSize
is more complicated because it still needs to contain the uint64_t
cast operator, since there are still many places in the code that
rely upon this implicit cast. As such the class also still needs
some of it's own operators.

I've tried to minimise the amount of code in the base PolySize
class, which led to a couple of changes:

1. In some places we were relying on '==' operator comparisons
between ElementCounts and the scalar value 1. I didn't put this
operator in the new PolySize class, and thought it was actually
clearer to use the isScalar() function instead.
2. I removed the isByteSized function and replaced it with calls
to isKnownMultipleOf(8).

I've also renamed NextPowerOf2 to be coefficientNextPowerOf2 so
that it's more consistent with coefficientDivideBy.

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

3 years ago[Tablegen][SubtargetEmitter] Print TuneCPU in Subtarget::ParseSubtargetFeatures
Kito Cheng [Wed, 7 Oct 2020 09:01:18 +0000 (17:01 +0800)]
[Tablegen][SubtargetEmitter] Print TuneCPU in Subtarget::ParseSubtargetFeatures

Let user able to know which -tune-cpu are used now.

Reviewed By: craig.topper

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

3 years ago[NFC][Asan] Remove unused macro
Vitaly Buka [Sat, 3 Oct 2020 04:08:13 +0000 (21:08 -0700)]
[NFC][Asan] Remove unused macro

3 years agoRevert "[SYCL] Implement __builtin_unique_stable_name."
John McCall [Mon, 12 Oct 2020 05:09:25 +0000 (01:09 -0400)]
Revert "[SYCL] Implement __builtin_unique_stable_name."

This reverts commit b5a034e771d0e4d7d8e71fc545b230d98e5a1f42.

This feature was added without following the proper process.

3 years ago[SchedDAGInstrs] Delete redundant contains(). NFC
Fangrui Song [Sun, 11 Oct 2020 22:51:55 +0000 (15:51 -0700)]
[SchedDAGInstrs] Delete redundant contains(). NFC

3 years agoRevert "PR47792: Include the type of a pointer or reference non-type template"
Jonas Devlieghere [Mon, 12 Oct 2020 03:14:00 +0000 (20:14 -0700)]
Revert "PR47792: Include the type of a pointer or reference non-type template"

This reverts commit 849c60541b630ddf8cabf9179fa771b3f4207ec8 because it
results in a stage 2 build failure:

llvm-project/clang/include/clang/AST/ExternalASTSource.h:409:20: error:
definition with same mangled name
'_ZN5clang25LazyGenerationalUpdatePtrIPKNS_4DeclEPS1_XadL_ZNS_17ExternalASTSource19CompleteRedeclChainES3_EEE9makeValueERKNS_10ASTContextES4_'
as another definition

  static ValueType makeValue(const ASTContext &Ctx, T Value);

3 years ago[NFC] Move PPC strict-fp MIR test to dedicated file
Qiu Chaofan [Mon, 12 Oct 2020 02:40:19 +0000 (10:40 +0800)]
[NFC] Move PPC strict-fp MIR test to dedicated file

fp-strict-conv-f128.ll is generated by script, but some manual MIR tests
exist in it. Move them to another file to satisfy script when updating.

3 years ago[mlir][openacc] Introduce acc.enter_data operation
Valentin Clement [Mon, 12 Oct 2020 01:26:54 +0000 (21:26 -0400)]
[mlir][openacc] Introduce acc.enter_data operation

This patch introduces the acc.enter_data operation that represents an OpenACC Enter Data directive.
Operands and attributes are dervied from clauses in the spec 2.6.6.

Reviewed By: kiranchandramohan

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

3 years agoPR47792: Include the type of a pointer or reference non-type template
Richard Smith [Sun, 11 Oct 2020 22:57:52 +0000 (15:57 -0700)]
PR47792: Include the type of a pointer or reference non-type template
parameter in its notion of template argument identity.

We already did this for all the other kinds of non-type template
argument. We're still missing the type from the mangling, so we continue
to be able to see collisions at link time; that's an open ABI issue.

3 years ago[ValueTracking] Use KnownBits::countMaxLeadingZeros/countMaxTrailingZeros to make...
Craig Topper [Sun, 11 Oct 2020 20:31:15 +0000 (13:31 -0700)]
[ValueTracking] Use KnownBits::countMaxLeadingZeros/countMaxTrailingZeros to make code more readable. NFC

3 years agoFix arc lint's clang-format rule: only format the file we were asked to format.
Richard Smith [Sun, 11 Oct 2020 21:20:01 +0000 (14:20 -0700)]
Fix arc lint's clang-format rule: only format the file we were asked to format.

This avoids diffs being applied in the work tree to files that are
supposed to be excluded (clang tests), allows arc to properly provide
interactive feedback for the formatting fixes, and reduces the number of
files that we format, in a change affecting N files, from N^2 to N.

3 years ago[ELF] Fix broken bitstream linking with lld when e_machine > 255
Christian Iversen [Sun, 11 Oct 2020 21:19:25 +0000 (14:19 -0700)]
[ELF] Fix broken bitstream linking with lld when e_machine > 255

In ELF/InputFiles.cpp, getBitcodeMachineKind() is limited to uint8_t return
type. This works as long as EM_xxx is < 256, which is true for common
architectures, but not for some newly assigned or unofficial EM_* values.

The corresponding ELF field (e_machine) can hold uint16_t.

Reviewed By: MaskRay

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