platform/upstream/llvm.git
3 years ago[AMDGPU] Only unbundle memory accesses in SIMemoryLegalizer
Carl Ritson [Tue, 23 Mar 2021 01:56:56 +0000 (10:56 +0900)]
[AMDGPU] Only unbundle memory accesses in SIMemoryLegalizer

This restores previous behaviour and is a step toward removing
unbundling entirely.

Reviewed By: foad, rampitec

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

3 years ago[RISCV] Rename Zb* extension tests to use lower case 'Z' in file names.
Craig Topper [Tue, 23 Mar 2021 02:16:08 +0000 (19:16 -0700)]
[RISCV] Rename Zb* extension tests to use lower case 'Z' in file names.

As discussed in D99009

3 years ago[test] precommit another test for point-in-time deref semantics
Philip Reames [Tue, 23 Mar 2021 02:09:07 +0000 (19:09 -0700)]
[test] precommit another test for point-in-time deref semantics

3 years agoImprove module dumping for debugging.
Richard Smith [Tue, 23 Mar 2021 00:45:39 +0000 (17:45 -0700)]
Improve module dumping for debugging.

  * List inferred lists of imports in `#pragma clang __debug module_map`.

  * Add `#pragma clang __debug modules {all,visible,building}` to dump
    lists of known / visible module names or the building modules stack.

3 years ago[tests] Expand tests for point-in-time dereferenceability
Philip Reames [Tue, 23 Mar 2021 01:56:50 +0000 (18:56 -0700)]
[tests] Expand tests for point-in-time dereferenceability

3 years agoRevert "[sanitizer] Support dynamic premapped R/W range in primary allocator."
Vitaly Buka [Tue, 23 Mar 2021 01:48:14 +0000 (18:48 -0700)]
Revert "[sanitizer] Support dynamic premapped R/W range in primary allocator."

Fails on Windows https://lab.llvm.org/buildbot/#/builders/127/builds/7999
and Android https://lab.llvm.org/buildbot/#/builders/77/builds/4839

This reverts commit bca0cf768b6021124f5e5315be333c2f45f14fca.

3 years agoRevert "[RISCV][NFC] Fix RVV intrinsic tests."
Zakk Chen [Tue, 23 Mar 2021 01:51:48 +0000 (18:51 -0700)]
Revert "[RISCV][NFC] Fix RVV intrinsic tests."

This reverts commit ab082b582dd01becc0e0dbb0ff28371e0ce392a9.

3 years agoMinor format tweak to deref analysis printer
Philip Reames [Tue, 23 Mar 2021 01:44:06 +0000 (18:44 -0700)]
Minor format tweak to deref analysis printer

3 years ago[dsymutil] Fix spurious warnings for missing symbols with thinLTO
Jonas Devlieghere [Mon, 22 Mar 2021 23:33:01 +0000 (16:33 -0700)]
[dsymutil] Fix spurious warnings for missing symbols with thinLTO

Fix spurious warnings for missing symbols with thinLTO. The latter
appends a unique suffix to avoid collisions for exported private
symbols, resulting in dsymutil complaining it couldn't find the symbol
in the object file.

rdar://75434058

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

3 years ago[deref] Split a test to show both global and pointwise semantics
Philip Reames [Mon, 22 Mar 2021 21:58:33 +0000 (14:58 -0700)]
[deref] Split a test to show both global and pointwise semantics

While doing so, also split one monster test into individually named test functions.

3 years ago[RISCV][NFC] Fix RVV intrinsic tests.
Zakk Chen [Mon, 22 Mar 2021 15:20:48 +0000 (08:20 -0700)]
[RISCV][NFC] Fix RVV intrinsic tests.

1. Skip the temporary file
2. Test cc1 with -S to verify codegen work well. Add '-target-feature
   +m' because the backend requires it to calculate the vscaled size/offset.

Reviewed By: craig.topper

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

3 years ago[PowerPC] Add more missing overloads to altivec.h
Nemanja Ivanovic [Tue, 23 Mar 2021 01:22:21 +0000 (20:22 -0500)]
[PowerPC] Add more missing overloads to altivec.h

Add vec_ctd which is similar to vec_ctf except the return type is
vector double rather than vector float.

3 years ago[mlir][OpAsmFormat] Add support for an "else" group on optional elements
River Riddle [Tue, 23 Mar 2021 01:07:09 +0000 (18:07 -0700)]
[mlir][OpAsmFormat] Add support for an "else" group on optional elements

The "else" group of an optional element is a collection of elements that get parsed/printed when the anchor of the main element group is *not* present. This is useful when there is a special syntax when an element is not present. The new syntax for an optional element is shown below:

```
optional-group: `(` elements `)` (`:` `(` else-elements `)`)? `?`
```

An example of how this might be used is shown below:

```tablegen
def FooOp : ... {
  let arguments = (ins UnitAttr:$foo);

  let assemblyFormat = "attr-dict (`foo_is_present` $foo^):(`foo_is_absent`)?";
}
```

would be formatted as such:

```mlir
// When the `foo` attribute is present:
foo.op foo_is_present

// When the `foo` attribute is not present:
foo.op foo_is_absent
```

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

3 years ago[mlir] Tune error message for assertion.
Sean Silva [Tue, 16 Mar 2021 20:40:35 +0000 (13:40 -0700)]
[mlir] Tune error message for assertion.

This assertion can fire in the case of different contexts as well, which
is not difficult to do from Python bindings, for example.

3 years agoRevert "[Passes] Add relative lookup table converter pass"
Gulfem Savrun Yeniceri [Tue, 23 Mar 2021 00:36:21 +0000 (00:36 +0000)]
Revert "[Passes] Add relative lookup table converter pass"

This reverts commit 78a65cd945d006ff02f9d24d9cc20a302ed93b08 which
caused buildbot failures.

3 years agoRename FrozenRewritePatternList -> FrozenRewritePatternSet; NFC.
Chris Lattner [Tue, 23 Mar 2021 00:36:27 +0000 (17:36 -0700)]
Rename FrozenRewritePatternList -> FrozenRewritePatternSet; NFC.

This nicely aligns the naming with RewritePatternSet.  This type isn't
as widely used, but we keep a using declaration in to help with
downstream consumption of this change.

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

3 years agoAdd a mechanism for Dialects to customize printing/parsing operations when they are...
Mehdi Amini [Tue, 23 Mar 2021 00:33:03 +0000 (00:33 +0000)]
Add a mechanism for Dialects to customize printing/parsing operations when they are unregistered

Reviewed By: rriddle

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

3 years ago[darwin][driver] Pass through -global-isel LLVM flags to ld.
Amara Emerson [Mon, 22 Mar 2021 23:52:11 +0000 (16:52 -0700)]
[darwin][driver] Pass through -global-isel LLVM flags to ld.

GlobalISel is currently not enabled when using -flto since the front-end
-mvllm flags don't get passed through. This change fixes this for Darwin
platforms. We have to do this in the driver because the code generator choice
isn't embedded into the bitcode file.

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

3 years agoTidy up some docs.
Chris Lattner [Tue, 23 Mar 2021 00:19:46 +0000 (17:19 -0700)]
Tidy up some docs.

Depends on D99127.

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

3 years ago[PatternMatch] Big mechanical rename OwningRewritePatternList -> RewritePatternSet...
Chris Lattner [Mon, 22 Mar 2021 23:58:34 +0000 (16:58 -0700)]
[PatternMatch] Big mechanical rename OwningRewritePatternList -> RewritePatternSet and insert -> add.  NFC

This doesn't change APIs, this just cleans up the many in-tree uses of these
names to use the new preferred names.  We'll keep the old names around for a
couple weeks to help transitions.

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

3 years agoReland "[SimplifyCFG] Update FoldBranchToCommonDest to be poison-safe"
Juneyoung Lee [Mon, 22 Mar 2021 21:26:53 +0000 (06:26 +0900)]
Reland "[SimplifyCFG] Update FoldBranchToCommonDest to be poison-safe"

This relands commit 99108c791de0285ee726a10e8274772b18cee73c (D95026) which was
reverted by 8d5a981a135a0f0ae0a10c59b7c8093aae1c28de because the underlying
problem (https://llvm.org/pr49495) is fixed.

3 years agoRevert "Revert "Revert "Revert "Revert "[lld-macho] Implement -dependency_info (parti...
Mehdi Amini [Tue, 23 Mar 2021 00:18:20 +0000 (00:18 +0000)]
Revert "Revert "Revert "Revert "Revert "[lld-macho] Implement -dependency_info (partially - more opcodes needed)"""""

This reverts commit 3c21166a94ea02b946e9eea75c5e9bdfa8c43ae6.
The build is broken (clang-8 host compiler):

lld/MachO/DriverUtils.cpp:271:8: error: use of overloaded operator '<<' is ambiguous (with operand types 'llvm::raw_fd_ostream' and 'lld::macho::DependencyTracker::DepOpCode')
    os << opcode;
    ~~ ^  ~~~~~~

3 years agoRevert "Revert "Revert "Revert "[lld-macho] Implement -dependency_info (partially...
Vy Nguyen [Mon, 22 Mar 2021 20:11:09 +0000 (16:11 -0400)]
Revert "Revert "Revert "Revert "[lld-macho] Implement -dependency_info (partially - more opcodes needed)""""

This reverts commit 9670d2e4af4c996098089e31b03ca138bc8d27e9.

Second attemp to reland D98559. New changes:
 - inline functions removed from cpp file.
 - updated tests to use CHECK-DAG instead of CHECK-NEXT
 - fixed ambiguous "<<" operator by switching `char` to uint8_t

3 years ago[PatternRewriter] Rename OwningRewritePatternList -> RewritePatternSet and insert...
Chris Lattner [Mon, 22 Mar 2021 22:02:04 +0000 (15:02 -0700)]
[PatternRewriter] Rename OwningRewritePatternList -> RewritePatternSet and insert -> add

This maintains the old name to have minimal source impact on downstream codes, and
does not do the huge mechanical patch.  I expect the huge mechanical patch to land
sometime this week, but we can keep around the old names for a couple weeks to reduce
impact on downstream projects.

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

3 years ago[doc] Fix typo in rel lookup table converter pass
Gulfem Savrun Yeniceri [Mon, 22 Mar 2021 23:08:55 +0000 (23:08 +0000)]
[doc] Fix typo in rel lookup table converter pass

Add additonal hypens to match the title size that was introduced in 78a65cd.

3 years ago[AST] Add introspection support for Decls
Stephen Kelly [Wed, 17 Mar 2021 22:56:39 +0000 (22:56 +0000)]
[AST] Add introspection support for Decls

The test code has lots of interesting locations which are not yet
introspected, but those will come later:

 http://ce.steveire.com/z/3T90hR

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

3 years ago[libc++] Include <__config> first in all standard headers.
Arthur O'Dwyer [Mon, 22 Mar 2021 17:12:31 +0000 (13:12 -0400)]
[libc++] Include <__config> first in all standard headers.

Mostly, *don't* include <experimental/__config> from C++17 <any>,
because that doesn't make any sense. I think it was just a cut-and-paste
typo when this header moved from experimental/.

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

3 years ago[gn build] fix typo in 78a65cd945d
Nico Weber [Mon, 22 Mar 2021 22:38:17 +0000 (18:38 -0400)]
[gn build] fix typo in 78a65cd945d

3 years ago[COFF] Only consider associated EH sections during ICF
Reid Kleckner [Mon, 22 Mar 2021 21:56:44 +0000 (14:56 -0700)]
[COFF] Only consider associated EH sections during ICF

The only known reason why ICF should not merge otherwise identical
sections with differing associated sections has to do with exception
handling tables. It's not clear what ICF should do when there are other
kinds of associated sections. In every other case when this has come up,
debug info and CF guard metadata, we have opted to make ICF ignore the
associated sections.

For comparison, ELF doesn't do anything for comdat groups. Instead,
.eh_frame is parsed to figure out if a section has an LSDA, and if so,
ICF is disabled.

Another issue is that the order of associated sections is not defined.
We have had issues in the past (crbug.com/1144476) where changing the
order of the .xdata/.pdata sections in the object file lead to large ICF
slowdowns.

To address these issues, I decided it would be best to explicitly
consider only .pdata and .xdata sections during ICF. This makes it easy
to ignore the object file order, and I think it makes the intention of
the code clearer.

I've also made the children() accessor return an empty list for
associated sections. This mostly only affects ICF and GC. This was the
behavior before I made this a linked list, so the behavior change should
be good. This had positive effects on chrome.dll: more .xdata sections
were merged that previously could not be merged because they were
associated with distinct .pdata sections.

Reviewed By: mstorsjo

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

3 years ago[libcxx] [test] Fix fs.op.proximate for windows
Martin Storsjö [Wed, 14 Oct 2020 12:13:54 +0000 (15:13 +0300)]
[libcxx] [test] Fix fs.op.proximate for windows

Simmilar to many other similar path handling tests, convert the
test reference to preferred separators, and ifdef a few test references
that use network root names.

Additionally, generalize code for trimming off the root path for
generating relative_cwd, and for skipping the root name element
in count_path_elems.

Rename one fictive path for consistency with the other test cases,
and add a bunch of more test cases for completeness.

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

3 years ago[Passes] Add relative lookup table converter pass
Gulfem Savrun Yeniceri [Tue, 29 Dec 2020 21:32:13 +0000 (21:32 +0000)]
[Passes] Add relative lookup table converter pass

Lookup tables generate non PIC-friendly code, which requires dynamic relocation as described in:
https://bugs.llvm.org/show_bug.cgi?id=45244

This patch adds a new pass that converts lookup tables to relative lookup tables to make them PIC-friendly.

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

3 years ago[docs] Clarify which part of the "refers to" rule for lifetimebound is
Richard Smith [Mon, 22 Mar 2021 22:06:20 +0000 (15:06 -0700)]
[docs] Clarify which part of the "refers to" rule for lifetimebound is
recursive.

3 years agoAttempt to further improve the documentation for the [[clang::lifetimebound]] attribute.
Richard Smith [Mon, 22 Mar 2021 21:48:25 +0000 (14:48 -0700)]
Attempt to further improve the documentation for the [[clang::lifetimebound]] attribute.

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

3 years ago[PDB] Add missing test for b552adf8b388a4
Reid Kleckner [Mon, 22 Mar 2021 21:55:38 +0000 (14:55 -0700)]
[PDB] Add missing test for b552adf8b388a4

3 years ago[flang] Disallow erroneous procedure declarations
Peter Steinfeld [Mon, 22 Mar 2021 21:33:55 +0000 (14:33 -0700)]
[flang] Disallow erroneous procedure declarations

When writing tests for a previous problem, I ran across situations where we
were not producing error messages for declarations of specific procedures of
generic interfaces where every other compiler I tested (except nvfotran) did.
I added a check to CheckExtantExternal() and renamed it since it now checks for
erroneous extant symbols generally.

I also removed a call to this function from processing for ENTRY statements,
since it seemed unnecessary and its presence caused bogus error messages.

I also added some tests for erroneous declarations where we were not producing
error messages.

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

3 years ago[NFC][SROA] Add some more tests for speculation around PHI's
Roman Lebedev [Mon, 22 Mar 2021 20:16:19 +0000 (23:16 +0300)]
[NFC][SROA] Add some more tests for speculation around PHI's

3 years ago[NFC][InstCombine] Autogenerate some checklines being affected by upcoming change
Roman Lebedev [Mon, 22 Mar 2021 17:25:14 +0000 (20:25 +0300)]
[NFC][InstCombine] Autogenerate some checklines being affected by upcoming change

3 years ago[NFC][IR] Type: add getWithNewType() method
Roman Lebedev [Mon, 22 Mar 2021 16:51:57 +0000 (19:51 +0300)]
[NFC][IR] Type: add getWithNewType() method

Sometimes you want to get a type with same vector element count
as the current type, but different element type,
but there's no QOL wrapper to do that. Add one.

3 years agoRevert "[SimplifyCFG] use profile metadata to refine merging branch conditions"
Sanjay Patel [Mon, 22 Mar 2021 21:45:32 +0000 (17:45 -0400)]
Revert "[SimplifyCFG] use profile metadata to refine merging branch conditions"

This reverts commit 27ae17a6b0145a559c501c35ded0ab4e9dd69e8e.
There are bot failures that end with:
 #4 0x00007fff7ae3c9b8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #5 0x00007fff84e504d8 (linux-vdso64.so.1+0x4d8)
 #6 0x00007fff7c419a5c llvm::TargetTransformInfo::getPredictableBranchThreshold() const (/home/buildbots/ppc64le-clang-multistage-test/clang-ppc64le-multistage/stage1.install/bin/../lib/libLLVMAnalysis.so.13git+0x479a5c)

...but not sure how to trigger that yet.

3 years ago[sanitizer] Support dynamic premapped R/W range in primary allocator.
Matt Morehouse [Fri, 5 Mar 2021 20:53:58 +0000 (12:53 -0800)]
[sanitizer] Support dynamic premapped R/W range in primary allocator.

The main use case for this change is HWASan aliasing mode, which premaps
the alias space adjacent to the dynamic shadow.  With this change, the
primary allocator can allocate from the alias space instead of a
separate region.

Reviewed By: vitalybuka, eugenis

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

3 years ago[libcxx] [test] Add XFAIL LIBCXX-WINDOWS-FIXME in 124 tests that fail in the future...
Martin Storsjö [Sat, 20 Mar 2021 21:58:26 +0000 (23:58 +0200)]
[libcxx] [test] Add XFAIL LIBCXX-WINDOWS-FIXME in 124 tests that fail in the future CI configuration

This makes no attempt yet to look into the why/what for each of them,
but makes the CI configuration useful for tracking further regressions.
After looking into each case, they can either be fixed, or converted
into UNSUPPORTED: windows or XFAIL: windows, once the cause is known
and explained.

A number of the filesystem cases can be fixed by patches that are
currently in review.

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

3 years ago[libcxx] [test] Remove a couple outdated XFAIL LIBCXX-WINDOWS-FIXME
Martin Storsjö [Sat, 20 Mar 2021 21:27:27 +0000 (23:27 +0200)]
[libcxx] [test] Remove a couple outdated XFAIL LIBCXX-WINDOWS-FIXME

With current versions of MSVC, these tests do succeed.

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

3 years ago[libcxx] [test] Don't leave test dirs behind in fs.op.current_path on Windows
Martin Storsjö [Fri, 19 Mar 2021 14:54:37 +0000 (16:54 +0200)]
[libcxx] [test] Don't leave test dirs behind in fs.op.current_path on Windows

Fix nesting of static_env and CWDGuard, restore the cwd (with
CWDGuard) before cleaning up the static_env.

Previously, every test run left 2 directories behind in the temp dir.

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

3 years agoRe-land "[lldb] Make the API, Shell and Unit tests independent lit test suites"
Jonas Devlieghere [Mon, 22 Mar 2021 21:12:44 +0000 (14:12 -0700)]
Re-land "[lldb] Make the API, Shell and Unit tests independent lit test suites"

The commit got reverted because the tests were being run twice because
of the overlapping test_exec_root. Pavel has since fixed that in
8248dd91d7f042893d4a605e98d19cb1b89a44d4.

3 years ago[lldb] config.test_exec_root is set by lit.cfg.py
Jonas Devlieghere [Mon, 22 Mar 2021 19:49:15 +0000 (12:49 -0700)]
[lldb] config.test_exec_root is set by lit.cfg.py

Don't configure `test_exec_root` in lit.site.cfg.py. It always gets
overwritten by lit.cfg.py based on `lldb_obj_root`.

3 years ago[libc++] Revert "[SystemZ][z/OS] Missing wchar functions libc++"
Louis Dionne [Mon, 22 Mar 2021 21:17:58 +0000 (17:17 -0400)]
[libc++] Revert "[SystemZ][z/OS] Missing wchar functions libc++"

This reverts commit febbf68b423b14d55a14980d2ba3ec37ef1e31dc because it
added files that were not under the LLVM license.

See https://reviews.llvm.org/D98207 for details.

3 years ago[ValueTracking] Regenerate test checks (NFC)
Nikita Popov [Mon, 22 Mar 2021 21:25:17 +0000 (22:25 +0100)]
[ValueTracking] Regenerate test checks (NFC)

3 years ago[clang] Replaced some manual pointer tagging with llvm::PointerIntPair.
Joshua Haberman [Mon, 22 Mar 2021 20:56:26 +0000 (13:56 -0700)]
[clang] Replaced some manual pointer tagging with llvm::PointerIntPair.

There is no functional change here (hence no new tests). The only change
is to replace a couple uintptr_t members with llvm::PointerIntPair<> to
clean up the code, making it more readable and less error prone.

This cleanup highlighted that the old code was effectively casting away
const. This is fixed by changing some function signatures.

Reviewed By: rsmith

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

3 years ago[InstCombine] Whitelist non-refining folds in SimplifyWithOpReplaced
Nikita Popov [Sat, 20 Mar 2021 20:01:49 +0000 (21:01 +0100)]
[InstCombine] Whitelist non-refining folds in SimplifyWithOpReplaced

This is an alternative to D98391/D98585, playing things more
conservatively. If AllowRefinement == false, then we don't use
InstSimplify methods at all, and instead explicitly implement a
small number of non-refining folds. Most cases are handled by
constant folding, and I only had to add three folds to cover
our unit tests / test-suite. While this may lose some optimization
power, I think it is safer to approach from this direction, given
how many issues this code has already caused.

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

3 years ago[libc] Introduces gmtime_r to LLVM libc, based on C99/C2X/Single Unix Sp.
Raman Tenneti [Mon, 22 Mar 2021 00:42:03 +0000 (17:42 -0700)]
[libc] Introduces gmtime_r to LLVM libc, based on C99/C2X/Single Unix Sp.

gmtime and gmtime_r share the same common code. They call gmtime_internal
a static inline function. Thus added only validation tests for gmtime_r.

Reviewed By: sivachandra

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

3 years ago[IR] Mark assume/annotation as InaccessibleMemOnly
Nikita Popov [Sat, 20 Mar 2021 17:11:17 +0000 (18:11 +0100)]
[IR] Mark assume/annotation as InaccessibleMemOnly

These intrinsics don't need to be marked as arbitrary writing,
it's sufficient to write inaccessible memory (aka "side effect")
to preserve control dependencies. This means less special-casing
in BasicAA. This is intended as an alternative to D98925.

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

3 years ago[SCEV] Use logical and/or matcher
Juneyoung Lee [Mon, 22 Mar 2021 20:55:08 +0000 (05:55 +0900)]
[SCEV] Use logical and/or matcher

This is a minor patch that updates ScalarEvolution::isImpliedCond to use logical and/or matcher.

3 years ago[SimplifyCFG] use profile metadata to refine merging branch conditions
Sanjay Patel [Mon, 22 Mar 2021 20:45:54 +0000 (16:45 -0400)]
[SimplifyCFG] use profile metadata to refine merging branch conditions

This is one step towards solving:
https://llvm.org/PR49336

In that example, we disregard the recommended usage of builtin_expect,
so an expensive (unpredictable) branch is folded into another branch
that is guarding it.
Here, we read the profile metadata to see if the 1st (predecessor)
condition is likely to cause execution to bypass the 2nd (successor)
condition before merging conditions by using logic ops.

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

3 years ago[Driver] Bring back "Clean up Debian multiarch /usr/include/<triplet> madness" and...
Fangrui Song [Mon, 22 Mar 2021 20:25:35 +0000 (13:25 -0700)]
[Driver] Bring back "Clean up Debian multiarch /usr/include/<triplet> madness" and restore i586-linux-gnu

This reverts commit 933d146f38c6d77a9b4fdde2b6b394f6ad9f8bf5 and 21b211a8f24f8ecfab8b380ff761a90d9cf73924
(which mis-identified the issue) but restores i586-linux-gnu which was
removed by `Gnu.cpp: remove obsoleted i386 triple detection from end-of-life distribution versions`.

Looks like i586-linux-gnu was not dead enough (used in a sysroot by Fuchsia build bot based on Debian jessie:)
but i486-linux-gnu should be very dead by now.

3 years ago[HIP] Fix ROCm detection
Yaxun (Sam) Liu [Thu, 18 Mar 2021 12:03:28 +0000 (08:03 -0400)]
[HIP] Fix ROCm detection

ROCm has changed installation path to /opt/rocm-{release}. Add detection
for that. Also support ROCM_PATH environment variable.

Reviewed by: Artem Belevich

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

3 years ago[SimplifyCFG] adjust test branchweights; NFC
Sanjay Patel [Mon, 22 Mar 2021 18:37:07 +0000 (14:37 -0400)]
[SimplifyCFG] adjust test branchweights; NFC

This will check the boundary conditions of the
revised change proposed in D98898.

3 years ago[TargetTransformInfo] move branch probability query from TargetLoweringInfo
Sanjay Patel [Mon, 22 Mar 2021 17:46:18 +0000 (13:46 -0400)]
[TargetTransformInfo] move branch probability query from TargetLoweringInfo

This is no-functional-change intended (NFC), but needed to allow
optimizer passes to use the API. See D98898 for a proposed usage
by SimplifyCFG.

I'm simplifying the code by removing the cl::opt. That was added
back with the original commit in D19488, but I don't see any
evidence in regression tests that it was used. Target-specific
overrides can use the usual patterns to adjust as necessary.
We could also restore that cl::opt, but it was not clear to me
exactly how to do it in the convoluted TTI class structure.

3 years ago[HWASan][NFC] Introduce constants for tag bits and masks.
Matt Morehouse [Mon, 22 Mar 2021 19:29:08 +0000 (12:29 -0700)]
[HWASan][NFC] Introduce constants for tag bits and masks.

x86_64 aliasing mode will use fewer than 8 bits for tags, so refactor
existing code to remove hard-coded 0xff and 8 values.

Reviewed By: vitalybuka, eugenis

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

3 years ago[test] Bring back the improved arm and $sysroot/usr/include/i386-linux-gnu tests
Fangrui Song [Mon, 22 Mar 2021 19:08:46 +0000 (12:08 -0700)]
[test] Bring back the improved arm and $sysroot/usr/include/i386-linux-gnu tests

21b211a8f24f8ecfab8b380ff761a90d9cf73924 was reverted temporarily to
give Fuchsia some time for migrating to a better sysroot, but the tests
can be restored separately.

3 years agoRevert "[Driver] Clean up Debian multiarch /usr/include/<triplet> madness"
Petr Hosek [Mon, 22 Mar 2021 18:55:26 +0000 (11:55 -0700)]
Revert "[Driver] Clean up Debian multiarch /usr/include/<triplet> madness"

This reverts commit 874bdc8e61662b5f39a9626b9132e0979fae556f which
broke the use of older Debian sysroots.

3 years agoRevert "[Driver] -m32: Add /usr/include/i386-linux-gnu for Debian"
Petr Hosek [Mon, 22 Mar 2021 18:55:09 +0000 (11:55 -0700)]
Revert "[Driver] -m32: Add /usr/include/i386-linux-gnu for Debian"

This reverts commit 82f6e0dde29e6c6da27f64db5992eb539a57d21b which
hasn't addressed the 874bdc8e61662b5f39a9626b9132e0979fae556f issue.

3 years agoRevert "Revert "Revert "[lld-macho] Implement -dependency_info (partially - more...
Vy Nguyen [Mon, 22 Mar 2021 18:54:01 +0000 (14:54 -0400)]
Revert "Revert "Revert "[lld-macho] Implement -dependency_info (partially - more opcodes needed)"""

This reverts commit 5ad2c225f353adc92473af391775c029db23a7d9.

bots still  unhappy - revertting again

3 years agoRevert "Revert "[lld-macho] Implement -dependency_info (partially - more opcodes...
Vy Nguyen [Mon, 22 Mar 2021 17:10:23 +0000 (13:10 -0400)]
Revert "Revert "[lld-macho] Implement -dependency_info (partially - more opcodes needed)""

This reverts commit 2554b95db57cfcc13864d9bbb9f4e75892067c14.

Relanding [lld-macho] Implement -dependency_info (D98559) with changes:
 - inline functions removed from cpp file.
 - updated tests to not check libSystem.tbd with other input files (because of possible indeterministic ordering)

3 years agoGlobalISel: Add utility function to constant fold FP ops
Matt Arsenault [Sat, 20 Mar 2021 23:48:06 +0000 (19:48 -0400)]
GlobalISel: Add utility function to constant fold FP ops

3 years agoTweak a test so it actually gets autogened
Philip Reames [Mon, 22 Mar 2021 18:30:02 +0000 (11:30 -0700)]
Tweak a test so it actually gets autogened

3 years ago[VPlan] Add CHECK-LABEL to test/Transforms/LoopVectorize/vplan-printing.ll.
Florian Hahn [Mon, 22 Mar 2021 17:05:45 +0000 (17:05 +0000)]
[VPlan] Add CHECK-LABEL to test/Transforms/LoopVectorize/vplan-printing.ll.

This patch adds CHECK-LABEL lines to
llvm/test/Transforms/LoopVectorize/vplan-printing.ll in order to make
failures slightly easier to diagnose.

3 years agoGlobalISel: Handle G_BUILD_VECTOR in isKnownToBeAPowerOfTwo
Matt Arsenault [Thu, 7 Jan 2021 00:17:19 +0000 (19:17 -0500)]
GlobalISel: Handle G_BUILD_VECTOR in isKnownToBeAPowerOfTwo

3 years ago[NFC] Restore original SmallString size for X86TargetMachine::getSubtargetImpl lookup
serge-sans-paille [Mon, 22 Mar 2021 18:18:11 +0000 (19:18 +0100)]
[NFC] Restore original SmallString size for X86TargetMachine::getSubtargetImpl lookup

Better safe than sorry here, quoting Craig Topper:

> Clang passes a pretty lengthy feature string.

3 years ago[PatternMatching] Add convenience insert method to OwningRewritePatternList. NFC.
Chris Lattner [Sun, 21 Mar 2021 17:24:20 +0000 (10:24 -0700)]
[PatternMatching] Add convenience insert method to OwningRewritePatternList. NFC.

This allows adding a C function pointer as a matchAndRewrite style pattern, which
is a very common case.  This adopts it in ExpandTanh to show how it reduces a level
of nesting.

We could allow C++ lambdas here, but that doesn't work as well with type inference
in the common case.  Instead of:

  patterns.insert(convertTanhOp);

you need to specify:

  patterns.insert<math::TanhOp>(convertTanhOp);

which is boilerplate'y.  Capturing state like this is very uncommon, so we choose
to require clients to define their own structs and use the non-convenience method
when they need to do so.

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

3 years ago[LLD][PowerPC] Fix bug in PC-Relative initial exec
Stefan Pintilie [Mon, 22 Mar 2021 14:53:43 +0000 (09:53 -0500)]
[LLD][PowerPC] Fix bug in PC-Relative initial exec

There is a bug when initial exec is relaxed to local exec.
In the following situation:

InitExec.c
```
extern __thread unsigned TGlobal;
unsigned getConst(unsigned*);
unsigned addVal(unsigned, unsigned*);

unsigned GetAddrT() {
  return addVal(getConst(&TGlobal), &TGlobal);
}
```

Def.c
```
__thread unsigned TGlobal;

unsigned getConst(unsigned* A) {
  return *A + 3;
}

unsigned addVal(unsigned A, unsigned* B) {
  return A + *B;
}
```

The problem is in InitExec.c but Def.c is required if you want to link the example and see the problem.
To compile everything:
```
clang -O3 -mcpu=pwr10 -c InitExec.c
clang -O3 -mcpu=pwr10 -c Def.c
ld.lld InitExec.o Def.o -o IeToLe
```

If you objdump the problem object file:
```
$ llvm-objdump -dr --mcpu=pwr10 InitExec.o
```
you will get the following assembly:
```
0000000000000000 <GetAddrT>:
       0: a6 02 08 7c   mflr 0
       4: f0 ff c1 fb   std 30, -16(1)
       8: 10 00 01 f8   std 0, 16(1)
       c: d1 ff 21 f8   stdu 1, -48(1)
      10: 00 00 10 04 00 00 60 e4       pld 3, 0(0), 1
0000000000000010:  R_PPC64_GOT_TPREL_PCREL34 TGlobal
      18: 14 6a c3 7f   add 30, 3, 13
0000000000000019:  R_PPC64_TLS TGlobal
      1c: 78 f3 c3 7f   mr 3, 30
      20: 01 00 00 48   bl 0x20
0000000000000020:  R_PPC64_REL24_NOTOC getConst
      24: 78 f3 c4 7f   mr 4, 30
      28: 30 00 21 38   addi 1, 1, 48
      2c: 10 00 01 e8   ld 0, 16(1)
      30: f0 ff c1 eb   ld 30, -16(1)
      34: a6 03 08 7c   mtlr 0
      38: 00 00 00 48   b 0x38
0000000000000038:  R_PPC64_REL24_NOTOC addVal
```
The lines of interest are:
```
      10: 00 00 10 04 00 00 60 e4       pld 3, 0(0), 1
0000000000000010:  R_PPC64_GOT_TPREL_PCREL34 TGlobal
      18: 14 6a c3 7f   add 30, 3, 13
0000000000000019:  R_PPC64_TLS TGlobal
      1c: 78 f3 c3 7f   mr 3, 30
```
Which once linked gets turned into:
```
10010210: ff ff 03 06 00 90 6d 38       paddi 3, 13, -28672, 0
10010218: 00 00 00 60   nop
1001021c: 78 f3 c3 7f   mr 3, 30
```
The problem is that register 30 is never set after the optimization.

Therefore it is not correct to relax the above instructions by replacing
the add instruction with a nop.
Instead the add instruction should be replaced with a copy (mr) instruction.
If the add uses the same resgiter as input and as ouput then it is safe to
continue to replace the add with a nop.

Reviewed By: MaskRay

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

3 years agoFix the order of directives and the target string
Chia-hung Duan [Mon, 22 Mar 2021 17:44:50 +0000 (10:44 -0700)]
Fix the order of directives and the target string

In the original structure, it will try to match CHECK-LABEL first then see if
the subsequent doesn't have the target strings. This is not what we are
expected. We are expecting the two functions which will be deleted should be
matched before CHECK-LABEL. Also fixed the function names.

Reviewed By: jpienaar

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

3 years ago[HWASan] Fix brittle stack-oob.c test.
Matt Morehouse [Mon, 22 Mar 2021 18:07:58 +0000 (11:07 -0700)]
[HWASan] Fix brittle stack-oob.c test.

3 years agoFix obvious breakage of update_analysis_test_checks.py from 1ce846b
Philip Reames [Mon, 22 Mar 2021 18:03:55 +0000 (11:03 -0700)]
Fix obvious breakage of update_analysis_test_checks.py from 1ce846b

3 years agoAutogen some tests for ease of update
Philip Reames [Mon, 22 Mar 2021 17:53:55 +0000 (10:53 -0700)]
Autogen some tests for ease of update

3 years ago[mlir][tosa] Fix tosa.mul to use tosa.apply_scale
Rob Suderman [Sat, 20 Mar 2021 06:04:39 +0000 (23:04 -0700)]
[mlir][tosa] Fix tosa.mul to use tosa.apply_scale

Multiply-shift requires wider compute types or CPU specific code to avoid
premature truncation, apply_shift fixes this issue

Also, Tosa's mul op supports different input / output types. Added path that
sign-extends input values to int-32 values before multiplying.

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

3 years ago[flang] Specific procedures named the same as the generic and a derived type
Peter Steinfeld [Mon, 22 Mar 2021 16:04:45 +0000 (09:04 -0700)]
[flang] Specific procedures named the same as the generic and a derived type

If you specify a specific procedure of a generic interface that has the same
name as both the generic interface and a preceding derived type, the compiler
would fail an internal call to CHECK().  I fixed this by testing for this
situation when processing specific procedures.  I also added a test that will
cause the call to CHECK() to fail without this new code.

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

3 years ago[tests] Refresh a bunch of autogen test to adjust for format changes
Philip Reames [Mon, 22 Mar 2021 17:39:02 +0000 (10:39 -0700)]
[tests] Refresh a bunch of autogen test to adjust for format changes

3 years ago[JITLink][ELF/x86-64] Add support for GOTOFF64 relocation.
Lang Hames [Mon, 22 Mar 2021 16:51:36 +0000 (09:51 -0700)]
[JITLink][ELF/x86-64] Add support for GOTOFF64 relocation.

3 years ago2nd attempt at a speculative fix for windows builders after d4648eea
Philip Reames [Mon, 22 Mar 2021 17:32:46 +0000 (10:32 -0700)]
2nd attempt at a speculative fix for windows builders after d4648eea

3 years ago[LegalizeDAG] Add asserts to verify the types of custom legalized operation matches...
Craig Topper [Mon, 22 Mar 2021 17:18:27 +0000 (10:18 -0700)]
[LegalizeDAG] Add asserts to verify the types of custom legalized operation matches the original node.

We've messed this up a few times recently on RISCV. Experiments
with these asserts found a couple issues on other targets as well.
They've all been cleaned up now so we can put in these asserts to
catch future issues

I had to waive Glue because ADDC/ADDE/etc legalization replaces
Glue with i32 on at least AArch64. X86 used to do the same before
we switched to ADDCARRY. So I guess that's just how that works.

Reviewed By: RKSimon

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

3 years agoSpeculative fix for windows builders after d4648eea
Philip Reames [Mon, 22 Mar 2021 17:21:29 +0000 (10:21 -0700)]
Speculative fix for windows builders after d4648eea

3 years ago[RISCV] Add support for fixed vector masked gather/scatter.
Craig Topper [Mon, 22 Mar 2021 16:54:17 +0000 (09:54 -0700)]
[RISCV] Add support for fixed vector masked gather/scatter.

I've split the gather/scatter custom handler to avoid complicating
it with even more differences between gather/scatter.

Tests are the scalable vector tests with the vscale removed and
dropped the tests that used vector.insert. We're probably not
as thorough on the splitting cases since we use 128 for VLEN here
but scalable vector use a known min size of 64.

Reviewed By: frasercrmck

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

3 years agoRevert "[Driver] Gnu.cpp: drop an unneeded special rule related to sysroot"
Arthur Eubanks [Mon, 22 Mar 2021 17:14:03 +0000 (10:14 -0700)]
Revert "[Driver] Gnu.cpp: drop an unneeded special rule related to sysroot"

This reverts commits 56700e937903969a4a95f68c59e38e35daaaa1ea and c2f9086b6184a132ec8cac7edeb620813796e1e8.

Breaks multiple Android bots, e.g. https://lab.llvm.org/buildbot/#/builders/77/builds/4777.

3 years ago[gn build] Port 5a87f81fe9ae
LLVM GN Syncbot [Mon, 22 Mar 2021 17:10:11 +0000 (17:10 +0000)]
[gn build] Port 5a87f81fe9ae

3 years agonew altera unroll loops check
Frank Derry Wanye [Mon, 22 Mar 2021 17:08:14 +0000 (13:08 -0400)]
new altera unroll loops check

This lint check is a part of the FLOCL (FPGA Linters for OpenCL)
project out of the Synergy Lab at Virginia Tech.

FLOCL is a set of lint checks aimed at FPGA developers who write code
in OpenCL.

The altera unroll loops check finds inner loops that have not been
unrolled, as well as fully-unrolled loops that should be partially
unrolled due to unknown loop bounds or a large number of loop
iterations.

Based on the Altera SDK for OpenCL: Best Practices Guide.

3 years ago[ASTImporter] Fix import of ObjCPropertyDecl that share the same name
Raphael Isemann [Mon, 22 Mar 2021 16:52:43 +0000 (17:52 +0100)]
[ASTImporter] Fix import of ObjCPropertyDecl that share the same name

Objective-C apparently allows name conflicts between instance and class
properties, so this is valid code:

```
@protocol DupProp
@property (class, readonly) int prop;
@property (readonly) int prop;
@end
```

The ASTImporter however isn't aware of this and will consider the two properties
as if they are the same property because it just compares their name and types.
This causes that when importing both properties we only end up with one property
(whatever is imported first from what I can see).

Beside generating a different AST this also leads to a bunch of asserts and
crashes as we still correctly import the two different getters for both
properties (the import code for methods does the correct check where it
differentiated between instance and class methods). As one of the setters will
not have its associated ObjCPropertyDecl imported, any call to
`ObjCMethodDecl::findPropertyDecl` will just lead to an assert or crash.

Fixes rdar://74322659

Reviewed By: shafik, kastiglione

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

3 years ago[libc][NFC] Add an alias named "check-llvmlibc" for "check-libc".
Siva Chandra [Mon, 22 Mar 2021 16:43:31 +0000 (16:43 +0000)]
[libc][NFC] Add an alias named "check-llvmlibc" for "check-libc".

3 years ago[Orc] Fix copy elision warning in RPCUtils
Stefan Gränitz [Fri, 19 Mar 2021 13:46:05 +0000 (14:46 +0100)]
[Orc] Fix copy elision warning in RPCUtils

The `callB()` template function always moved errors on return, because in the majority of cases its return type is an `Expected<T>` and the error must be moved into the implicit ctor.
For the special case of a `void` result, however, the `ResultTraits` class is specialized and the return type is a raw `Error`. Some build bots complain, that in favor of NRVO errors should not be moved in this case.

```
llvm/include/llvm/ExecutionEngine/Orc/Shared/RPCUtils.h:1513:27:
llvm/include/llvm/ExecutionEngine/Orc/Shared/RPCUtils.h:1519:27:
llvm/include/llvm/ExecutionEngine/Orc/Shared/RPCUtils.h:1526:29:
  warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
```

The warning is reasonable from a type-system point of view. For performance it's entirely insignificant.

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

3 years ago[Orc] Make usage of ResourceKeys thread-safe in DebugObjectManagerPlugin
Stefan Gränitz [Thu, 18 Mar 2021 13:08:21 +0000 (14:08 +0100)]
[Orc] Make usage of ResourceKeys thread-safe in DebugObjectManagerPlugin

Don't leak ResourceKeys from MaterializationResponsibility::withResourceKeyDo() in notifyEmitted().
Also make some improvements in the overall implementation.

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

3 years ago[Orc] Fix tracking of pending debug objects in DebugObjectManagerPlugin
Stefan Gränitz [Thu, 18 Mar 2021 12:13:10 +0000 (13:13 +0100)]
[Orc] Fix tracking of pending debug objects in DebugObjectManagerPlugin

There can be multiple MaterializationResponsibilitys in-flight for a single ResourceKey. Hence, pending debug objects must be tracked by MaterializationResponsibility and not by ResourceKey.

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

3 years ago[SCEV] Use trip count information to improve shift recurrence ranges
Philip Reames [Mon, 22 Mar 2021 16:37:39 +0000 (09:37 -0700)]
[SCEV] Use trip count information to improve shift recurrence ranges

This patch exploits the knowledge that we may be running many fewer than bitwidth iterations of the loop, and may be able to disallow the overflow case. This patch specifically implements only the shl case, but this can be generalized to ashr and lshr without difficulty.

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

3 years ago[SLP] Honor min/max regsize and min/max VF in vectorizeStores
Bjorn Pettersson [Mon, 1 Mar 2021 13:44:12 +0000 (14:44 +0100)]
[SLP] Honor min/max regsize and min/max VF in vectorizeStores

Make sure we use PowerOf2Floor instead of PowerOf2Ceil when
calculating max number of elements that fits inside a vector
register (otherwise we could end up creating vectors larger
than the maximum vector register size).

Also make sure we honor the min/max VF (as given by TTI or
cmd line parameters) when doing vectorizeStores.

Reviewed By: anton-afanasyev

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

3 years ago[SLP] Add test case showing shortcoming in honoring max reg size
Bjorn Pettersson [Mon, 1 Mar 2021 12:36:19 +0000 (13:36 +0100)]
[SLP] Add test case showing shortcoming in honoring max reg size

3 years agoClarify comments on recurrence matcher [NFC]
Philip Reames [Mon, 22 Mar 2021 16:21:43 +0000 (09:21 -0700)]
Clarify comments on recurrence matcher [NFC]

Triggered by discussion on D98222.  The case where we have a loop variant step is suprising, and doesn't match the behavior of SCEV's recurrences.  As such, make sure we call that out explicitly.

3 years ago[CSSPGO][llvm-profgen] Use profile summary based threshold for context trimming and...
Wenlei He [Thu, 18 Mar 2021 16:45:07 +0000 (09:45 -0700)]
[CSSPGO][llvm-profgen] Use profile summary based threshold for context trimming and merging

Switch to use cold threshold from profile summary for cold context merging and trimming, instead of relying on hard coded values. Minor refactoring included for switch names, etc.

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

3 years ago[lldb] Re-disable dwarf5-debug_line-file-index.s
Pavel Labath [Mon, 22 Mar 2021 15:28:12 +0000 (16:28 +0100)]
[lldb] Re-disable dwarf5-debug_line-file-index.s

The fix in 10d54e2f did not work.

3 years ago[libc++] Move __libcpp_erase_if_container into <iterator>, and ADL-proof it.
Arthur O'Dwyer [Sun, 21 Mar 2021 20:53:09 +0000 (16:53 -0400)]
[libc++] Move __libcpp_erase_if_container into <iterator>, and ADL-proof it.

The container headers don't need to include <functional> for any other reason
(or at least, they wouldn't if we moved `less` and `equal_to` out of <functional>),
so let's put `__libcpp_erase_if_container` somewhere that's common to the
containers but outside of <functional>.

Also, calling `std::erase_if(c, pred)` should not trigger ADL.

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

3 years ago[HWASan] Disable stack, globals and force callbacks for x86_64.
Matt Morehouse [Mon, 22 Mar 2021 15:01:48 +0000 (08:01 -0700)]
[HWASan] Disable stack, globals and force callbacks for x86_64.

Subsequent patches will implement page-aliasing mode for x86_64, which
will initially only work for the primary heap allocator.  We force
callback instrumentation to simplify the initial aliasing
implementation.

Reviewed By: vitalybuka, eugenis

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

3 years agoAMDGPU: Allow tail calls for amdgpu_gfx functions
Matt Arsenault [Sun, 14 Mar 2021 20:14:03 +0000 (16:14 -0400)]
AMDGPU: Allow tail calls for amdgpu_gfx functions

3 years ago[lldb] Attempt to fix dwarf5-debug_line-file-index.s
Pavel Labath [Mon, 22 Mar 2021 14:27:25 +0000 (15:27 +0100)]
[lldb] Attempt to fix dwarf5-debug_line-file-index.s

The file contained bogus input - the DIE list was not properly
terminated. This should not cause a crash, but it seems it was crashing
at least on linux arm and x86 windows.