ergawy [Sun, 13 Dec 2020 14:56:37 +0000 (09:56 -0500)]
[MLIR][SPIRV] Add support for GLSL F/U/SClamp.
Adds support for 3 ternary ops from SPIR-V extended instructions for
GLSL. Namely, adds support for FClamp, UClamp, and SClamp.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D92859
Simon Pilgrim [Wed, 9 Dec 2020 18:18:50 +0000 (18:18 +0000)]
[X86] Regenerate vector-reduce-mul.ll with common check prefixes. NFC.
Try to merge AVX1/AVX2/AVX512 codegen checks where possible
Björn Schäpers [Sat, 28 Nov 2020 04:58:58 +0000 (05:58 +0100)]
[clang-format] Remove double trim
Lines[i] is already trimmed 3 lines before
Differential Revision: https://reviews.llvm.org/D91996
Nikita Popov [Thu, 10 Dec 2020 21:29:33 +0000 (22:29 +0100)]
[BasicAA] Handle known non-zero variable index
BasicAA currently handles cases like Scale*V0 + (-Scale)*V1 where
V0 != V1, but does not handle the simpler case of Scale*V with
V != 0. Add it based on an isKnownNonZero() call.
I'm not passing a context instruction for now, because the existing
approach of always using GEP1 for context could result in symmetry
issues.
Differential Revision: https://reviews.llvm.org/D93162
Kazushi (Jam) Marukawa [Thu, 10 Dec 2020 08:53:07 +0000 (17:53 +0900)]
[VE] Optimize toolchain regression test
Optimize toolchain regression test for VE by removing not a useful test
(-fuse-init-array test) and merge several tests to one test which checks
default behavior of driver. Also add sysroot to reduce conflicts.
These are suggested in https://reviews.llvm.org/D92996.
Thank you so much.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D93084
Michał Górny [Sun, 13 Dec 2020 08:18:41 +0000 (09:18 +0100)]
[lldb] [Process/FreeBSD] Add more 'override' keywords
Christian Sigg [Sat, 12 Dec 2020 09:50:41 +0000 (10:50 +0100)]
[mlir] Use mlir::OpState::operator->() to get to methods of mlir::Operation.
This is a preparation step to remove those methods from OpState.
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D93098
Chris Lattner [Sun, 13 Dec 2020 05:24:18 +0000 (21:24 -0800)]
[AsmParser] Fix support for zero bit integer types.
Zero bit integer types are supported by IntegerType for consistency,
but the asmparser never got updated. Allow them to be parsed, as
required to fix CIRCT issue #316
Differential Revision: https://reviews.llvm.org/D93089
kweisamx [Sun, 13 Dec 2020 03:06:32 +0000 (03:06 +0000)]
[mlir] Add Python binding for MLIR Dict Attribute
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D93004
Nico Weber [Sun, 13 Dec 2020 02:10:52 +0000 (21:10 -0500)]
[mac/arm] Deflake 3 check-llvm tests
On macOS/arm, signature verification has kill semantics by default.
Signature verification is cached with a file's inode (actually, vnode),
and if a new executable is copied over an existing file (which reuses
the inode), the cache isn't invalidated. So when the new executable
is executed, the kernel still has the old content's signature cached
and the kills the executable because the old signatue doesn't match
the new contents (https://openradar.appspot.com/
FB8914243).
As workaround, rm the desitnation files first, to ensure they have
a fresh vnode (and hence no stale cached signature) after the copy.
Part of PR46647. See also
e0e334a9c1ac for a similar change.
Chris Sears [Sat, 12 Dec 2020 15:23:55 +0000 (10:23 -0500)]
X86: Correcting X86OutgoingValueHandler typo (NFC)
https://reviews.llvm.org/D92631
Nico Weber [Sun, 13 Dec 2020 01:19:33 +0000 (20:19 -0500)]
fix typos to cycle bots
Nico Weber [Sun, 13 Dec 2020 01:16:14 +0000 (20:16 -0500)]
fix typo to cycle bots
Nico Weber [Sun, 13 Dec 2020 01:11:14 +0000 (20:11 -0500)]
mac/arm: XFAIL the last 2 failing check-llvm tests
We should fix them, but let's XFAIL them for now so that we can start
running check-llvm on bots and lock in the passing tests.
Part of PR46647.
Fangrui Song [Sun, 13 Dec 2020 00:50:25 +0000 (16:50 -0800)]
[ELF][test] Rewrite st_value=0 copy relocation tests
The original tests have unneeded symbols and copy-relocation-zero-abs-addr.s
does not actually test anything.
Rewrite them and add copy-relocation-zero-addr.s instead.
Add --soname=b so that the address 0x203400 will be stable. (When linking an
executable with %t.so, the path %t.so will be recorded in the DT_NEEDED entry if
%t.so doesn't have DT_SONAME. .dynstr will have varying lengths on different
systems.)
Nico Weber [Sun, 13 Dec 2020 00:44:10 +0000 (19:44 -0500)]
[mac/arm] skip MappedMemoryTest that try to map w+x
macOS/arm is w^x, so these tests don't work. Fixes these failures:
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.AllocAndRelease/5
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.AllocAndReleaseHuge/5
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.BasicWrite/5
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.DuplicateNear/5
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.EnabledWrite/3
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.EnabledWrite/4
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.EnabledWrite/5
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.MultipleAllocAndRelease/5
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.MultipleWrite/5
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.SuccessiveNear/5
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.UnalignedNear/5
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.ZeroNear/5
LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.ZeroSizeNear/5
Part of PR46647.
Craig Topper [Sun, 13 Dec 2020 00:37:28 +0000 (16:37 -0800)]
[X86] Autogenerate complete checks. NFC
Amara Emerson [Sat, 12 Dec 2020 22:57:36 +0000 (14:57 -0800)]
[[GlobalISel][IRTranslator] Fix a crash when the use of an extractvalue is a non-dominated metadata use.
We don't expect uses to come before defs in the CFG, so allocateVRegs() asserted.
Fixes PR48211
Roman Lebedev [Sat, 12 Dec 2020 12:48:58 +0000 (15:48 +0300)]
[SimplifyCFG] FoldBranchToCommonDest(): bonus instrns must only be used by PHI nodes in successors (PR48450)
In particular, if the successor block, which is about to get a new
predecessor block, currently only has a single predecessor,
then the bonus instructions will be directly used within said successor,
which is fine, since the block with bonus instructions dominates that
successor. But once there's a new predecessor, the IR is no longer valid,
and we don't fix it, because we only update PHI nodes.
Which means, the live-out bonus instructions must be exclusively used
by the PHI nodes in successor blocks. So we have to form trivial PHI nodes.
which will then be successfully updated to recieve cloned bonus instns.
This all works fine, except for the fact that we don't have access to
the dominator tree, and we don't ignore unreachable code,
so we sometimes do end up having to deal with some weird IR.
Fixes https://bugs.llvm.org/show_bug.cgi?id=48450
Zarko Todorovski [Sat, 12 Dec 2020 20:22:57 +0000 (15:22 -0500)]
[PPC] Check for PPC64 when emitting 64bit specific VSX nodes when pattern matching built vectors
Some of the pattern matching in PPCInstrVSX.td and node lowering involving vectors assumes 64bit mode. This patch disables some of the unsafe pattern matching and lowering of BUILD_VECTOR in 32bit mode.
Reviewed By: Xiangling_L
Differential Revision: https://reviews.llvm.org/D92789
Alexey Bader [Mon, 7 Dec 2020 19:47:48 +0000 (22:47 +0300)]
[CodeGen][AMDGPU] Fix ICE for static initializer IR generation
Differential Revision: https://reviews.llvm.org/D92782
Nico Weber [Sat, 12 Dec 2020 20:19:50 +0000 (15:19 -0500)]
[mac/arm] XFAIL two more tests on arm64-apple
Part of PR46644
Nikita Popov [Sat, 12 Dec 2020 19:34:45 +0000 (20:34 +0100)]
[CVP] Simplify and generalize switch handling
CVP currently handles switches by checking an equality predicate
on all edges from predecessor blocks. Of course, this can only
work if the value being switched over is defined in a different block.
Replace this implementation with a call to getPredicateAt(), which
also does the predecessor edge predicate check (if not defined in
the same block), but can also do quite a bit more: It can reason
about phi-nodes by checking edge predicates for incoming values,
it can reason about assumes, and it can reason about block values.
As such, this makes the implementation both simpler and more
powerful. The compile-time impact on CTMark is in the noise.
Nico Weber [Sat, 12 Dec 2020 20:08:19 +0000 (15:08 -0500)]
mac/arm: XFAIL the last 3 failing tests
We should fix them, but let's XFAIL them for now so that we can start
running check-clang on bots and lock in the passing tests.
Part of 46644.
Nikita Popov [Sat, 12 Dec 2020 19:47:23 +0000 (20:47 +0100)]
[CVP] Add additional switch tests (NFC)
These cover cases handled by getPredicateAt(), but not by the
current implementation:
* Assumes based on context instruction.
* Value from phi node in same block (using per-pred reasoning).
* Value from non-phi node in same block (using block-val reasoning).
Krzysztof Parzyszek [Sat, 12 Dec 2020 19:19:36 +0000 (13:19 -0600)]
[Hexagon] Reconsider getMask fix, return original mask, convert later
The getPayload/getMask/getPassThrough functions should return values
that could be composed into a masked load/store without any additional
type casts. The previous fix violated that.
Instead, convert scalar mask to a vector right before rescaling.
Tony [Thu, 10 Dec 2020 10:01:14 +0000 (10:01 +0000)]
[AMDGPU] Add missing targets to target-invalid-cpu-note.c
Differential Revision: https://reviews.llvm.org/D93018
Tony [Thu, 10 Dec 2020 09:59:16 +0000 (09:59 +0000)]
[AMDGPU] Add missing targets to amdgpu-features.cl
Differential Revision: https://reviews.llvm.org/D93017
Tony [Thu, 10 Dec 2020 03:38:32 +0000 (03:38 +0000)]
[NFC][AMDGPU] AMDGPUUsage updates
- Document which processors are supported by which runtimes.
- Add missing mappings for code object V2 note records
Differential Revision: https://reviews.llvm.org/D93016
Brian Gesiak [Fri, 11 Dec 2020 22:57:34 +0000 (17:57 -0500)]
[mlir] Print bad size in AttrSizedOperandSegments
When printing verification errors for ops with the incorrect number of
operand segments, print the required number as well as the actual
number. Split off from D93005.
Differential Revision: https://reviews.llvm.org/D93145
Kazu Hirata [Sat, 12 Dec 2020 18:09:35 +0000 (10:09 -0800)]
[Analysis/Interval] Remove isLoop (NFC)
The last use of isLoop was removed on Apr 29, 2002 in commit
09bbb5c015c6e40b3d45da057f955ddb7c8f8485 as part of an effort to
remove "old induction varaible cannonicalization pass built on top of
interval analysis".
Kazu Hirata [Sat, 12 Dec 2020 17:37:49 +0000 (09:37 -0800)]
[Transforms] Use is_contained (NFC)
Krzysztof Parzyszek [Sat, 12 Dec 2020 16:05:30 +0000 (10:05 -0600)]
[Hexagon] Create vector masks for scalar loads/stores
AlignVectors treats all loaded/stored values as vectors of bytes,
and masks as corresponding vectors of booleans, so make getMask
produce a 1-element vector for scalars from the start.
Harald van Dijk [Sat, 12 Dec 2020 17:11:13 +0000 (17:11 +0000)]
[UpdateTestChecks] Add --(no-)x86_scrub_sp option.
This makes it possible to use update_llc_test_checks to manage tests
that check for incorrect x86 stack offsets. It does not yet modify any
test to make use of this new option.
Harald van Dijk [Sat, 12 Dec 2020 17:05:24 +0000 (17:05 +0000)]
[X86] Avoid data16 prefix for lea in x32 mode
The ABI demands a data16 prefix for lea in 64-bit LP64 mode, but not in
64-bit ILP32 mode. In both modes this prefix would ordinarily be
ignored, but the instructions may be changed by the linker to
instructions that are affected by the prefix.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D93157
David Green [Sat, 12 Dec 2020 15:26:32 +0000 (15:26 +0000)]
[ARM] Add basic masked load/store costs
This adds some basic MVE masked load/store costs, notably changing the
cost of legal loads/stores to the MVECostFactor and the cost of
scalarized instructions to 8*NumElts.
Differential Revision: https://reviews.llvm.org/D86538
David Green [Sat, 12 Dec 2020 14:21:40 +0000 (14:21 +0000)]
[LV] Fix scalar cost for tail predicated loops
When it comes to the scalar cost of any predicated block, the loop
vectorizer by default regards this predication as a sign that it is
looking at an if-conversion and divides the scalar cost of the block by
2, assuming it would only be executed half the time. This however makes
no sense if the predication has been introduced to tail predicate the
loop.
Original patch by Anna Welker
Differential Revision: https://reviews.llvm.org/D86452
Nikita Popov [Sat, 12 Dec 2020 12:23:49 +0000 (13:23 +0100)]
[BasicAA] Make non-equal index handling simpler to extend (NFC)
Nikita Popov [Sat, 12 Dec 2020 12:19:23 +0000 (13:19 +0100)]
[BasicAA] Add tests for non-zero var index (NFC)
Melanie Blower [Sat, 12 Dec 2020 13:18:00 +0000 (05:18 -0800)]
Create SPIRABIInfo to enable SPIR_FUNC calling convention.
Background: Call to library arithmetic functions for div is emitted by the
compiler and it set wrong “C” calling convention for calls to these functions,
whereas library functions are declared with `spir_function` calling convention.
InstCombine optimization replaces such calls with “unreachable” instruction.
It looks like clang lacks SPIRABIInfo class which should specify default
calling conventions for “system” function calls. SPIR supports only
SPIR_FUNC and SPIR_KERNEL calling convention.
Reviewers: Erich Keane, Anastasia
Differential Revision: https://reviews.llvm.org/D92721
Tatyana Krasnukha [Thu, 10 Dec 2020 16:30:04 +0000 (19:30 +0300)]
[lldb] Make CommandInterpreter's execution context the same as debugger's one.
Currently, the interpreter's context is not updated until a command is executed.
This has resulted in the behavior of SB-interface functions and some commands
depends on previous user actions. The interpreter's context can stay uninitialized,
point to a currently selected target, or point to one of previously selected targets.
This patch removes any usages of CommandInterpreter::UpdateExecutionContext.
CommandInterpreter::HandleCommand* functions still may override context temporarily,
but now they always restore it before exiting. CommandInterpreter saves overriden
contexts to the stack, that makes nesting commands possible.
Added test reproduces one of the issues. Without this fix, the last assertion fails
because interpreter's execution context is empty until running "target list", so,
the value of the global property was updated instead of process's local instance.
Differential Revision: https://reviews.llvm.org/D92164
Tatyana Krasnukha [Wed, 2 Dec 2020 15:52:50 +0000 (18:52 +0300)]
[lldb] Modernize TargetList for-loops, NFC
Replace loops with standard algorithms or range-based loops.
Tatyana Krasnukha [Fri, 11 Dec 2020 08:09:39 +0000 (11:09 +0300)]
[lldb] "target create" shouldn't save target if the command failed
TargetList::CreateTarget automatically adds created target to the list, however,
CommandObjectTargetCreate does some additional preparation after creating a target
and which can fail. The command should remove created target if it failed. Since
the function has many ways to return, scope guard does this work safely.
Changes to the TargetList make target adding and selection more transparent.
Other changes remove unnecessary SetSelectedTarget after CreateTarget.
Differential Revision: https://reviews.llvm.org/D93052
Luo, Yuanke [Sat, 12 Dec 2020 12:21:43 +0000 (20:21 +0800)]
[X86] Add chain in ISel for x86_tdpbssd_internal intrinsic.
Nathan James [Sat, 12 Dec 2020 12:50:33 +0000 (12:50 +0000)]
[YAML] Support extended spellings when parsing bools.
Support all the spellings of boolean datatypes according to https://yaml.org/type/bool.html
Reviewed By: silvas
Differential Revision: https://reviews.llvm.org/D92755
David Green [Sat, 12 Dec 2020 11:43:14 +0000 (11:43 +0000)]
[ARM] Test for showing scalar vector costs. NFC
Jan Svoboda [Fri, 11 Dec 2020 14:43:05 +0000 (15:43 +0100)]
[clang][cli] Revert accidental access-control flag rename
This commit <https://reviews.llvm.org/rGe5158b52730d323bb8cd2cba6dc6c89b90cba452> introduced an accidental change, which renames `-faccess-control` and `-fno-access-control` to `-fno-access-control` and `-fno-no-access-control`.
Reviewed By: dexonsmith, MaskRay
Differential Revision: https://reviews.llvm.org/D93104
Jan Svoboda [Tue, 8 Dec 2020 17:15:21 +0000 (18:15 +0100)]
[clang][cli] Add flexible TableGen multiclass for boolean options
This introduces more flexible multiclass for declaring two flags controlling the same boolean keypath.
Compared to existing Opt{In,Out}FFlag multiclasses, the new syntax makes it easier to read option declarations and reason about the keypath.
This also makes specifying common properties of both flags possible.
I'm open to suggestions on the class names. Not 100% sure the benefits are worth the added complexity.
Depends on D92774.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D92775
Jan Svoboda [Tue, 8 Dec 2020 17:15:21 +0000 (18:15 +0100)]
[clang][cli] Don't always emit -f[no-]legacy-pass-manager
We don't need to always generate `-f[no-]experimental-new-pass-manager`.
This patch does not change the behavior of any other command line flag. (For example `-triple` is still being always generated.)
Reviewed By: dexonsmith, Bigcheese
Differential Revision: https://reviews.llvm.org/D92857
Jan Svoboda [Fri, 11 Dec 2020 13:22:21 +0000 (14:22 +0100)]
Reland "[clang][cli] CompilerInvocationTest: add tests for boolean options"
Add more tests of the command line marshalling infrastructure.
The new tests now make a "round-trip": from arguments, to CompilerInvocation instance to arguments again in a single test case.
The TODOs are resolved in a follow-up patch.
Depends on D92830.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D92774
Kazu Hirata [Sat, 12 Dec 2020 05:19:31 +0000 (21:19 -0800)]
[Analysis] Use is_contained (NFC)
Mircea Trofin [Sat, 12 Dec 2020 04:28:39 +0000 (20:28 -0800)]
[MLGO] Fix build break as result of new InstructionCost (D91174)
Giorgis Georgakoudis [Thu, 10 Dec 2020 19:24:27 +0000 (11:24 -0800)]
[OpenMP] Add time profiling for libomptarget
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D93055
Fangrui Song [Sat, 12 Dec 2020 02:28:16 +0000 (18:28 -0800)]
[llvm-cov gcov] Replace Donald B. Johnson's cycle enumeration with iterative cycle finding
gcov computes the line execution count as the sum of (a) counts from
predecessors on other lines and (b) the sum of loop execution counts of blocks
on the same line (think of loops on one line).
For (b), we use Donald B. Johnson's cycle enumeration algorithm and perform
cycle cancelling for each cycle. This number of candidate cycles were
exponential and D93036 made it polynomial by skipping zero count cycles. The
time complexity is high (O(V*E^2) (it could be O(E^2) but the linear `Blocks`
check made it higher) and the implementation is complex.
We could just identify loops and sum all back edges. However, this requires a
dominator tree construction which is more complex. The time complexity can be
decreased to almost linear, though.
This patch just performs cycle cancelling iteratively. Add two members
`traversable` and `incoming` to GCOVArc. There are 3 states:
* `!traversable`: blocks not on this line or explored blocks
* `traversable && incoming == nullptr`: unexplored blocks
* `traversable && incoming != nullptr`: blocks which are being explored (on the stack)
If an arc points to a block being explored, a cycle has been found.
Let E be the number of arcs. Every time a cycle is found, at least one arc is
saturated (`edgeCount` reduced to 0), so there are at most E cycles. Finding one
cycle takes O(E) time, so the overall time complexity is O(E^2). Note that we
always augment through a back edge and never need to augment its reverse edge so
reverse edges in traditional flow networks are not needed.
Reviewed By: xinhaoyuan
Differential Revision: https://reviews.llvm.org/D93073
Fangrui Song [Sat, 12 Dec 2020 02:01:04 +0000 (18:01 -0800)]
[Kaleidoscope] Migrate DebugInfo::get to DILocation::get
River Riddle [Sat, 12 Dec 2020 01:52:56 +0000 (17:52 -0800)]
[mlir][docs] Tidy up the pass infrastructure documentation
The doc has grown stale and is missing some recent changes to the infrastructure.
Differential Revision: https://reviews.llvm.org/D93081
Duncan P. N. Exon Smith [Sat, 12 Dec 2020 01:33:07 +0000 (17:33 -0800)]
Fixup for
8c86197de3cba4257f26133e837d64e5f8ece210 to avoid making it platform-dependent
Duncan P. N. Exon Smith [Wed, 9 Dec 2020 21:54:56 +0000 (13:54 -0800)]
clang-import-test: Clean up error output for files that cannot be found
Pass on the filesystem error string `FileManager::getFileRef` in
`clang-import-test`'s `ParseSource` function. Also include "error:" and
a newline in the output. As a side effect, migrate to the `FileEntryRef`
overload of `SourceManager::createFileID`.
No real functionality change here, just slightly better output on error.
Differential Revision: https://reviews.llvm.org/D92971
Duncan P. N. Exon Smith [Wed, 9 Dec 2020 21:41:17 +0000 (13:41 -0800)]
Frontend: Migrate to FileEntryRef in TextDiagnosticTest, NFC
Migrate over to the `FileEntryRef` overloads of
`SourceManager::createFileID` and `overrideFileContents` (using
`getVirtualFileRef`) in `TextDiagnostic`'s `ShowLine` test.
No functionality change.
Differential Revision: https://reviews.llvm.org/D92968
Jonas Paulsson [Fri, 11 Dec 2020 00:26:16 +0000 (01:26 +0100)]
Reapply "[SystemZFrameLowering] Don't overrwrite R1D (backchain) when probing."
Fixed to properly compute the live-in lists of new blocks.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D92803
Jonas Paulsson [Thu, 10 Dec 2020 00:56:45 +0000 (01:56 +0100)]
[SystemZTTIImpl] Allow some non-prefetched accesses in getMinPrefetchStride().
The performance improvement on LBM previously achieved with improved software
prefetching (36d4421) have gone lost recently with e00f189. There now is one
memory access in the loop that LoopDataPrefetch cannot handle (while before
there was none) which the heuristic rejects.
This patch adds a small margin by allowing 1 non-prefetched memory access for
every 32 prefetched ones, so that the heuristic doesn't bail in this type of
case.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D92985
diggerlin [Fri, 11 Dec 2020 23:53:10 +0000 (18:53 -0500)]
[AIX] Fixed a link error.
Summary:
link: http://lab.llvm.org:8011/#/builders/57/builds/2307/steps/6/logs/stdio".
PPCAsmPrinter.cpp:(.text._ZN12_GLOBAL__N_116PPCAIXAsmPrinter19emitFunctionBodyEndEv+0x2f8): undefined reference to `llvm::XCOFF::getNameForTracebackTableLanguageId(llvm::XCOFF::TracebackTable::LanguageID)'
PPCAsmPrinter.cpp:(.text._ZN12_GLOBAL__N_116PPCAIXAsmPrinter19emitFunctionBodyEndEv+0x2170): undefined reference to `llvm::XCOFF::parseParmsType(unsigned int, unsigned int)'
Craig Topper [Fri, 11 Dec 2020 23:24:18 +0000 (15:24 -0800)]
[LoopIdiomRecognize] Autogenerate complete checks for the X86 ctlz/cttz tests. NFC
Preparation for D92745 which will add more tests to these files.
Nikita Popov [Fri, 11 Dec 2020 23:04:10 +0000 (00:04 +0100)]
Revert "Consider reference, pointer, and pointer-to-member TemplateArguments to be different if they have different types."
This reverts commit
7b3470baf8bab1919e3ad4c18e2b776c1f7be2d5.
Causes a crash while building tramp3d-v4 from test-suite.
diggerlin [Fri, 11 Dec 2020 22:50:25 +0000 (17:50 -0500)]
[AIX][XCOFF] emit traceback table for function in aix
SUMMARY:
1. added a new option -xcoff-traceback-table to control whether generate traceback table for function.
2. implement the functionality of emit traceback table of a function.
Reviewers: hubert.reinterpretcast, Jason Liu
Differential Revision: https://reviews.llvm.org/D92398
Mehdi Amini [Fri, 11 Dec 2020 18:50:04 +0000 (18:50 +0000)]
Store a MlirIdentifier instead of a MlirStringRef in MlirNameAttribute
This mirror the C++ API for NamedAttribute, and has the advantage or
internalizing earlier in the Context and not requiring the caller to
keep the StringRef alive beyong this call.
Differential Revision: https://reviews.llvm.org/D93133
Siva Chandra Reddy [Fri, 11 Dec 2020 21:17:33 +0000 (13:17 -0800)]
[libc] Let wrappergen pick LLVM libc mangled name from aliasee file.
Along the way, made a change to run tool unittests when the target
"check-libc" is run by introducing a libc testsuite for tool unittests.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D93142
Sean Silva [Fri, 11 Dec 2020 22:20:03 +0000 (14:20 -0800)]
Revert "Revert "[mlir] Start splitting the `tensor` dialect out of `std`.""
This reverts commit
0d48d265db6633e4e575f81f9d3a52139b1dc5ca.
This reapplies the following commit, with a fix for CAPI/ir.c:
[mlir] Start splitting the `tensor` dialect out of `std`.
This starts by moving `std.extract_element` to `tensor.extract` (this
mirrors the naming of `vector.extract`).
Curiously, `std.extract_element` supposedly works on vectors as well,
and this patch removes that functionality. I would tend to do that in
separate patch, but I couldn't find any downstream users relying on
this, and the fact that we have `vector.extract` made it seem safe
enough to lump in here.
This also sets up the `tensor` dialect as a dependency of the `std`
dialect, as some ops that currently live in `std` depend on
`tensor.extract` via their canonicalization patterns.
Part of RFC: https://llvm.discourse.group/t/rfc-split-the-tensor-dialect-from-std/2347/2
Differential Revision: https://reviews.llvm.org/D92991
Sanjay Patel [Fri, 11 Dec 2020 21:18:56 +0000 (16:18 -0500)]
[InstCombine][x86] fix insertion point bug in vector demanded elts fold (PR48476)
This transform was added at:
c63799fc52ff
From what I see, it's the first demanded elements transform that adds
a new instruction using the IRBuilder. There are similar folds in
the generic demanded bits chunk of instcombine that also use the
InsertPointGuard code pattern.
The tests here would assert/crash because the new instruction was
being added at the start of the demanded elements analysis rather
than at the instruction that is being replaced.
Sean Silva [Fri, 11 Dec 2020 22:15:41 +0000 (14:15 -0800)]
Revert "[mlir] Start splitting the `tensor` dialect out of `std`."
This reverts commit
cab8dda90f48e15ee94b0d55ceac5b6a812e4743.
I mistakenly thought that CAPI/ir.c failure was unrelated to this
change. Need to debug it.
Peter Steinfeld [Fri, 11 Dec 2020 18:28:51 +0000 (10:28 -0800)]
[flang] Removed an absolute path from the "flang" script
The "flang" script that gets put into "install/bin" had an absolute path
in it. This precuded moving the install directory to a new location.
Differential Revision: https://reviews.llvm.org/D93131
Sean Silva [Thu, 10 Dec 2020 01:50:03 +0000 (17:50 -0800)]
[mlir] Start splitting the `tensor` dialect out of `std`.
This starts by moving `std.extract_element` to `tensor.extract` (this
mirrors the naming of `vector.extract`).
Curiously, `std.extract_element` supposedly works on vectors as well,
and this patch removes that functionality. I would tend to do that in
separate patch, but I couldn't find any downstream users relying on
this, and the fact that we have `vector.extract` made it seem safe
enough to lump in here.
This also sets up the `tensor` dialect as a dependency of the `std`
dialect, as some ops that currently live in `std` depend on
`tensor.extract` via their canonicalization patterns.
Part of RFC: https://llvm.discourse.group/t/rfc-split-the-tensor-dialect-from-std/2347/2
Differential Revision: https://reviews.llvm.org/D92991
Richard Smith [Sun, 15 Nov 2020 01:37:25 +0000 (17:37 -0800)]
Consider reference, pointer, and pointer-to-member TemplateArguments to be different if they have different types.
For the Itanium ABI, this implements the mangling rule suggested in
https://github.com/itanium-cxx-abi/cxx-abi/issues/47, namely mangling
such template arguments as being cast to the parameter type in the case
where the template name is overloadable. This can cause a mangling
change for rare cases, where
* the template argument declaration is converted from its declared type
to the type of the template parameter, and
* the template parameter either has a deduced type or is a parameter of
a function template.
However, such changes are necessary to avoid mangling collisions. The
ABI changes can be reversed with -fclang-abi-compat=11 or earlier.
Differential Revision: https://reviews.llvm.org/D91488
Krzysztof Parzyszek [Fri, 11 Dec 2020 18:15:53 +0000 (12:15 -0600)]
[Hexagon] Workaround for compilation error with VS2017
Fangrui Song [Fri, 11 Dec 2020 20:45:22 +0000 (12:45 -0800)]
Migrate deprecated DebugLoc::get to DILocation::get
This migrates all LLVM (except Kaleidoscope and
CodeGen/StackProtector.cpp) DebugLoc::get to DILocation::get.
The CodeGen/StackProtector.cpp usage may have a nullptr Scope
and can trigger an assertion failure, so I don't migrate it.
Reviewed By: #debug-info, dblaikie
Differential Revision: https://reviews.llvm.org/D93087
Nikita Popov [Fri, 11 Dec 2020 20:17:54 +0000 (21:17 +0100)]
[BasicAA] Add extra check in phi-spec-order.ll (NFC)
The (scevgep, scevgep5) relation regressed with a patch I was
trying, but wasn't tested.
Florian Hahn [Fri, 11 Dec 2020 20:12:59 +0000 (20:12 +0000)]
Revert "[AArch64] Lower calls with rv_marker attribute ."
This reverts commit
a87fccb3ff9c11986d3110d9f77fb0ccea0daf79.
A test appears to fail with expensive checks. Reverting while I
investigate.
Florian Hahn [Fri, 11 Dec 2020 19:55:48 +0000 (19:55 +0000)]
[LV] Precommit test for PR48429.
Jinsong Ji [Fri, 11 Dec 2020 19:32:18 +0000 (19:32 +0000)]
[lld][PowerPC][test] Avoid flaky failures
This test may fail if there is a new changes to this tests.
The archives are not deleted so the contents from the previous test run
may affect the contents for the current run,
so this will require cleaning up the Output dir or force build of buildbot.
The fix is to put all the objects in the temporary dir that we cleanup every run,
to avoid run-2-run flaky failures.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D93128
Florian Hahn [Fri, 11 Dec 2020 19:37:14 +0000 (19:37 +0000)]
[AArch64] Lower calls with rv_marker attribute .
This patch adds support for lowering function calls with the
rv_marker attribute. The goal is to expand such calls to the
following sequence of instructions:
BL @fn
mov x29, x29
This sequence of instructions triggers Objective-C runtime optimizations,
hence we want to ensure no instructions get moved in between them.
This patch achieves that by adding a new CALL_RVMARKER ISD node,
which gets turned into the BLR_RVMARKER pseudo, which eventually gets
expanded into the sequence mentioned above. The sequence is then marked
as instruction bundle, to avoid anything being moved in between.
@ahatanak is working on using this attribute in the front- & middle-end.
Together with the front- & middle-end changes, this should address
PR31925 for AArch64.
Reviewed By: t.p.northover
Differential Revision: https://reviews.llvm.org/D92569
Scott Linder [Fri, 11 Dec 2020 19:34:10 +0000 (19:34 +0000)]
[SmallVector][NFC] Link to ProgrammersManual from SmallVector docs
Add a "see also" link from the condensed doxygen description of
`SmallVector` to the more complete description in the ProgrammersManual.
Louis Dionne [Fri, 11 Dec 2020 19:12:59 +0000 (14:12 -0500)]
[libc++] Fix Docker image build after installing clang-format
Siva Chandra Reddy [Wed, 9 Dec 2020 05:44:22 +0000 (21:44 -0800)]
[libc] Add implementations of lround[f|l] and llround[f|l].
A new function to MPFRWrapper has been added, which is used to set up
the unit tests.
Reviewed By: lntue
Differential Revision: https://reviews.llvm.org/D93007
Fangrui Song [Fri, 11 Dec 2020 19:08:16 +0000 (11:08 -0800)]
[MCAsmInfo] Delete unused doesSupportExceptionHandling
ExceptionHandling:: is a bit misleading - we actually use the term for both
exceptions and non-exception .eh_frame usage.
Louis Dionne [Fri, 11 Dec 2020 19:06:24 +0000 (14:06 -0500)]
[libc++] Install clang-format on CI nodes
LLVM GN Syncbot [Fri, 11 Dec 2020 18:37:39 +0000 (18:37 +0000)]
[gn build] Port
b577d2df7bd
Craig Topper [Fri, 11 Dec 2020 18:34:12 +0000 (10:34 -0800)]
[RISCV] Add a pass to remove duplicate VSETVLI instructions in a basic block.
Add simple pass for removing redundant vsetvli instructions within a basic block. This handles the case where the AVL register and VTYPE immediate are the same and no other instructions that change VTYPE or VL are between them.
There are going to be more opportunities for improvement in this space as we development more complex tests.
Differential Revision: https://reviews.llvm.org/D92679
Zinovy Nis [Sun, 15 Nov 2020 15:09:18 +0000 (18:09 +0300)]
[clang-tidy] false-positive for bugprone-redundant-branch-condition in case of passed-by-ref params
Inspired by discussion in https://reviews.llvm.org/D91037
Differential Revision: https://reviews.llvm.org/D91495
Michael Kruse [Fri, 11 Dec 2020 17:45:35 +0000 (11:45 -0600)]
[tests][OpenMPIRBuilder] Use EXPECT_EQ instead ASSERT_EQ.
Test execution can continue even if previous cases failed.
Nikita Popov [Tue, 1 Dec 2020 17:06:37 +0000 (18:06 +0100)]
[BasicAA] Handle two unknown sizes for GEPs
If we have two unknown sizes and one GEP operand and one non-GEP
operand, then we currently simply return MayAlias. The comment says
we can't do anything useful ... but we can! We can still check that
the underlying objects are different (and do so for the GEP-GEP case).
To reduce the compile-time impact, this a) checks this early, before
doing the relatively expensive GEP decomposition that will not be
used and b) doesn't do the check if the other operand is a phi or
select. In that case, the phi/select will already recurse, so this
would just do two slightly different recursive walks that arrive at
the same roots.
Compile-time is still a bit of a mixed bag: https://llvm-compile-time-tracker.com/compare.php?from=
624af932a808b363a888139beca49f57313d9a3b&to=
845356e14adbe651a553ed11318ddb5e79a24bcd&stat=instructions
On average this is a small improvement, but sqlite with ThinLTO has
a 0.5% regression (lencod has a 1% improvement).
The BasicAA test case checks this by using two memsets with unknown
size. However, the more interesting case where this is useful is
the LoopVectorize test case, as analysis of accesses in loops tends
to always us unknown sizes.
Differential Revision: https://reviews.llvm.org/D92401
Hiroshi Yamauchi [Wed, 9 Dec 2020 23:04:55 +0000 (15:04 -0800)]
[PGO] Adjust -vp-counters-per-site under dynamic linking.
Addressing clang bootstrap under the dynamic linking mode running out of static
allocation of value profile nodes, reported in D81682.
Differential Revision: https://reviews.llvm.org/D92669
Michael Kruse [Fri, 11 Dec 2020 16:55:58 +0000 (10:55 -0600)]
[OpenMPIRBuilder] Various changes required for tileLoops.
Extract some changes not directly related to tileLoops out of D92974:
* Refactor `createLoopSkeleton` out of `createCanonicalLoop`.
* Introduce `ComputeIP` parameter to the `createCanonicalLoop` overload inserts instructions to compute the trip count. Specifying the location is necessary to make these instructions appear before the outermost loop of a loop nest that is tiled.
* Introduce `Name` parameter to `createCanonicalLoop`. This can help better understanding the origin of values of basic blocks with many loops. The default value is "loop" instead of "for" which could be confused with the "for directive" (aka worksharing-loop) and does not apply to Fortran.
* Remove `CanonicalLoopInfo::eraseFromParent` which is currently unused and untested and was added in anticipation to be used by `tileLoops`. `eraseFromParent` has shown to be insufficient when more than a single loop is involved and is replaced by `removeUnusedBlocksFromParent` in D92974.
Reviewed By: SouraVX
Differential Revision: https://reviews.llvm.org/D93088
Louis Dionne [Tue, 8 Dec 2020 17:15:44 +0000 (12:15 -0500)]
[libc++] Use TARGET_FILE instead of TARGET_SONAME_FILE when generating ABI lists
TARGET_SONAME_FILE isn't valid on Windows, and TARGET_FILE should achieve
the same results.
Differential Revision: https://reviews.llvm.org/D92856
Louis Dionne [Wed, 9 Dec 2020 21:57:28 +0000 (16:57 -0500)]
[libc++] NFCI: Implement make_shared as allocate_shared with std::allocator
This simplifies the implementation, and it appears to be equivalent since
make_shared was allocating memory with std::allocator anyway.
Differential Revision: https://reviews.llvm.org/D93071
Tobias Burnus [Fri, 11 Dec 2020 16:43:06 +0000 (16:43 +0000)]
[MC][ELF] Accept abbreviated form with sh_flags and sh_entsize
D73999 / commit
75af9da755721123e62b45cd0bc0c5e688a9722a
added for LLVM 11 a check that sh_flags and sh_entsize (and sh_type)
changes are an error, in line with GNU assembler.
However, GNU assembler accepts and GCC generates an abbreviated form:
while the first .section contains the flags and entsize, subsequent
sections simply contain the name without repeating entsize or flags.
Do likewise for better compatibility.
See https://bugs.llvm.org/show_bug.cgi?id=48201
Reviewed By: jhenderson, MaskRay
Differential Revision: https://reviews.llvm.org/D92052
Sam McCall [Fri, 11 Dec 2020 16:35:50 +0000 (17:35 +0100)]
Revert [clangd] Extract per-dir CDB cache to its own threadsafe class. NFC
This reverts commit
8a4390dc4768fcd929a7231717980ccb28f124f7.
(The reland did not have the bugfix, just trying to get more details
from the buildbots)
Sam McCall [Fri, 11 Dec 2020 15:47:17 +0000 (16:47 +0100)]
Reland [clangd] Extract per-dir CDB cache to its own threadsafe class. NFC
This reverts commit
de4f5519015cc97f28718d90cc6dac73c0a15161.
More debug output to try to pin down an impossible condition.
Nathan James [Fri, 11 Dec 2020 16:34:06 +0000 (16:34 +0000)]
[YAML] Use correct source location for unknown key errors.
Currently unknown keys when inputting mapping traits have the location set to the Value.
Example:
```
YAML:1:14: error: unknown key 'UnknownKey'
{UnknownKey: SomeValue}
^~~~~~~~~
```
This is unhelpful for a user as it draws them to fix the wrong item.
Reviewed By: silvas
Differential Revision: https://reviews.llvm.org/D93037
Jinsong Ji [Fri, 11 Dec 2020 15:47:42 +0000 (15:47 +0000)]
[PowerPC] Remove duplicate layout
Alex Zinenko [Wed, 9 Dec 2020 08:51:15 +0000 (09:51 +0100)]
[mlir] Support inlining into affine operations
Introduce support for inlining into affine operations. This uses the generic
inline infrastructure and boils down to checking that, if applied, the inlining
doesn't violate the affine dimension/symbol value categorization. Given valid
IR, only the values that are valid dimensions/symbols thanks to being top-level
in their affine scope need special handling.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D92770