Luboš Luňák [Wed, 5 Aug 2020 10:18:38 +0000 (12:18 +0200)]
[lldb] expect TestGuiBasicDebug.py failure on aarch64
http://lab.llvm.org:8011/builders/lldb-aarch64-ubuntu/builds/7287/steps/test/logs/stdio
fails, and the output suggests that gui 'finish' (='thread step-out') is broken
on aarch64.
Arpith C. Jacob [Wed, 5 Aug 2020 10:16:17 +0000 (12:16 +0200)]
[mlir] Conversion of ViewOp with memory space to LLVM.
Handle the case where the ViewOp takes in a memref that has
an memory space.
Reviewed By: ftynse, bondhugula, nicolasvasilache
Differential Revision: https://reviews.llvm.org/D85048
Alexander Belyaev [Wed, 5 Aug 2020 10:12:45 +0000 (12:12 +0200)]
[mlir] Lower RankOp to LLVM for unranked memrefs.
Differential Revision: https://reviews.llvm.org/D85273
Georgii Rymar [Tue, 4 Aug 2020 12:19:36 +0000 (15:19 +0300)]
[llvm-readobj/elf] - Add a testing for --stackmap and refine the implementation.
Currently, we only test the `--stackmap` option here:
https://github.com/llvm/llvm-project/blob/master/llvm/test/Object/stackmap-dump.test
it uses a precompiled MachO binary currently and I've found no tests for this option for ELF.
The implementation also has issues. For example, it might assert on a wrong version
of the .llvm-stackmaps section. Or it might crash on an empty or truncated section.
This patch introduces a new tools/llvm-readobj/ELF test file as well as implements a few
basic checks to catch simple crashes/issues
It also eliminates `unwrapOrError` calls in `printStackMap()`.
Differential revision: https://reviews.llvm.org/D85208
Benjamin Kramer [Wed, 5 Aug 2020 10:03:30 +0000 (12:03 +0200)]
[llvm-symbolizer] Add legacy aliases -demangle=true and -demangle=false.
This is used in the wild, don't break compatibility for no good reason.
https://github.com/google/pprof/blob/master/internal/binutils/addr2liner_llvm.go
Jordan Rupprecht [Tue, 4 Aug 2020 23:23:03 +0000 (00:23 +0100)]
[docs] Document pattern of using CHECK-SAME to skip irrelevant lines
This came up during the review for D67656. It's nice but also subtle, so documenting it as an idiom will make tests easier to understand.
Reviewed By: probinson
Differential Revision: https://reviews.llvm.org/D68061
Luboš Luňák [Wed, 5 Aug 2020 09:55:02 +0000 (11:55 +0200)]
Revert "[lldb] temporary commit to see why a test is failing only on lldb-aarch64-ubuntu"
This reverts commit
21f142ce1df10fe6cf5721e263fc6e91aea93938.
Luboš Luňák [Wed, 5 Aug 2020 09:54:14 +0000 (11:54 +0200)]
[lldb] temporary commit to see why a test is failing only on lldb-aarch64-ubuntu
Frederik Gossen [Wed, 5 Aug 2020 09:41:42 +0000 (09:41 +0000)]
[MLIR][Shape] Expose extent tensor type builder
The extent tensor type is a `tensor<?xindex>` that is used in the shape dialect.
To facilitate the use of this type when working with the shape dialect, we
expose the helper function for its construction.
Differential Revision: https://reviews.llvm.org/D85121
Pierre Gousseau [Wed, 5 Aug 2020 09:17:25 +0000 (10:17 +0100)]
[compiler-rt] Normalize some in/out doxygen parameter in interface
headers. NFC.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D84945
Tatyana Krasnukha [Tue, 4 Aug 2020 17:53:30 +0000 (20:53 +0300)]
[lldb] Suppress MSVC warning C4065
MSVC reports "switch statement contains 'default' but no 'case' labels". Suppress,
as this was intended behavior.
Tatyana Krasnukha [Tue, 4 Aug 2020 17:52:48 +0000 (20:52 +0300)]
[lldb] Use PyUnicode_GetLength instead of PyUnicode_GetSize
PyUnicode_GetSize is deprecated since Python version 3.3.
Tatyana Krasnukha [Tue, 4 Aug 2020 14:15:29 +0000 (17:15 +0300)]
[lldb/TestingSupport] Manually disable GTEST_HAS_TR1_TUPLE
Gtest 1.8.0 uses tr1::tuple which is deprecated on MSVC. We have to force it off
to avoid the compiler warnings, which will become errors after switching on C++17
(https://devblogs.microsoft.com/cppblog/c17-feature-removals-and-deprecations).
David Turner [Wed, 5 Aug 2020 08:50:06 +0000 (10:50 +0200)]
Do not map read-only data memory sections with EXECUTE flags.
The code in SectionMemoryManager.cpp unnecessarily maps
read-only data sections with the READ+EXECUTE flags. This is
undesirable from a security stand-point.
Moreover, on the Fuchsia platform, which is now very strict
about mapping pages with the EXECUTE permission, this simply
fails, because the section's pages were initially allocated
with only the READ+WRITE flags.
A more detailed description of the issue can be found in this
public SwiftShader bug:
https://issuetracker.google.com/issues/
154586551
This patch just restrict the mapping to the READ flag for ROData
sections. Code sections are still mapped with READ+EXECUTE as
expected.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D78574
Sander de Smalen [Wed, 5 Aug 2020 08:17:57 +0000 (09:17 +0100)]
[AArch64][SVE] Disable tail calls if callee does not preserve SVE regs.
This fixes an issue triggered by the following code, where emitEpilogue
got confused when trying to restore the SVE registers after the call,
whereas the call to bar() is implemented as a TCReturn:
int non_sve();
int sve(svint32_t x) { return non_sve(); }
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D84869
George Mitenkov [Wed, 5 Aug 2020 08:18:38 +0000 (11:18 +0300)]
[MLIR][SPIRVToLLVM] Updated LLVM types in the documentation
Updated the documentation with new MLIR LLVM types for
vectors, pointers, arrays and structs. Also, changed remaining
tabs to spaces.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D85277
Jay Foad [Fri, 24 Jul 2020 11:55:12 +0000 (12:55 +0100)]
[AMDGPU] Propagate fast math flags in frem lowering
Differential Revision: https://reviews.llvm.org/D84518
Jay Foad [Fri, 24 Jul 2020 11:52:36 +0000 (12:52 +0100)]
[AMDGPU] Precommit tests for D84518 Propagate fast math flags in frem lowering
Jay Foad [Fri, 24 Jul 2020 11:05:46 +0000 (12:05 +0100)]
[AMDGPU] Lower frem f16
Without this it would fail to select on subtargets that have 16-bit
instructions.
Differential Revision: https://reviews.llvm.org/D84517
Andrzej Warzynski [Sat, 1 Aug 2020 19:53:27 +0000 (20:53 +0100)]
[Flang] Fix multi-config generator builds
Based on https://reviews.llvm.org/D84022 with additional changes to
maintain out-of-tree builds.
Original commit message:
Currently the binaries are output directly into the bin subdirectory of
the build directory. This doesn't work correctly with multi-config
generators which should output the binaries into <CONFIG_NAME>/bin
instead.
The original patch was implemented by David Truby and the additional
changes added here were also proposed by David Truby.
Differential Revision: https://reviews.llvm.org/D85078/
Co-authored-by: David Truby <david.truby@arm.com>
Luboš Luňák [Mon, 3 Aug 2020 06:32:16 +0000 (08:32 +0200)]
[lldb][gui] add a test for 'b' (toggle breakpoint)
Differential Revision: https://reviews.llvm.org/D85107
Luboš Luňák [Mon, 3 Aug 2020 05:09:03 +0000 (07:09 +0200)]
[lldb][gui] move TestGuiBasicDebug.py to lldb/test and update it
Between the time it was created and it was pushed upstream,
99451b4453688a94c6014cac233d371ab4cc342d has moved the existing
gui gui tests to lldb/test, so move this one too.
And update it to contain TestGuiBasic.py changes since the time
when it was based on that test.
Differential Revision: https://reviews.llvm.org/D85106
Luboš Luňák [Sun, 2 Aug 2020 20:03:21 +0000 (22:03 +0200)]
[lldb][gui] implement breakpoint removal on breakpoint toggling
It says it toggles breakpoints, so if one already exists
on the selected location, remove it instead of adding.
Differential Revision: https://reviews.llvm.org/D85098
Luboš Luňák [Sun, 2 Aug 2020 11:18:41 +0000 (13:18 +0200)]
[lldb][gui] implement shift+tab for going back in views
Also simplify the code for going forward.
Differential Revision: https://reviews.llvm.org/D85089
Luboš Luňák [Sun, 2 Aug 2020 10:58:22 +0000 (12:58 +0200)]
[lldb][gui] implement TerminalSizeChanged()
Differential Revision: https://reviews.llvm.org/D85088
Luboš Luňák [Tue, 4 Aug 2020 16:37:34 +0000 (18:37 +0200)]
[lldb] fix building with panel.h being in /usr/include/ncurses/
My openSUSE 15.2 has /usr/include/curses.h as a symlink to
/usr/include/ncurses/curses.h , but there's no such symlink
for panel.h . Prefer using /usr/include/ncurses for the includes
if they are found there by the CMake check.
Differential Revision: https://reviews.llvm.org/D85219
Eduardo Caldas [Tue, 4 Aug 2020 08:30:24 +0000 (08:30 +0000)]
[SyntaxTree] Add test coverage for `->*` operator
This was the last binary operator that we supported but didn't have any
test coverage. The recent fix in a crash in member pointers allowed us
to add this test.
Differential Revision: https://reviews.llvm.org/D85185
George Mitenkov [Wed, 5 Aug 2020 07:09:21 +0000 (10:09 +0300)]
[MLIR][SPIRVToLLVM] Conversion pattern for loop op
This patch introduces a conversion of `spv.loop` to LLVM dialect.
Similarly to `spv.selection`, op's control attributes are not mapped
to LLVM yet and therefore the conversion fails if the loop control is
not `None`. Also, all blocks within the loop should be reachable in
order for conversion to succeed.
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D84245
Yevgeny Rouban [Wed, 5 Aug 2020 04:06:54 +0000 (11:06 +0700)]
DomTree: Make PostDomTree indifferent to block successors swap
Fixed the commit
c35585e209efe69e2233bdc5ecd23bed7b735ba3.
This is a fix for the bug 46098 where PostDominatorTree
is unexpectedly changed by InstCombine's branch swapping
transformation.
This patch fixes PostDomTree builder. While looking for
the furthest away node in a reverse unreachable subgraph
this patch runs DFS with successors in their function order.
This order is indifferent to the order of successors, so is
the furthest away node.
Reviewers: kuhar, nikic, lebedev.ri
Differential Revision: https://reviews.llvm.org/D84763
George Mitenkov [Wed, 5 Aug 2020 06:27:03 +0000 (09:27 +0300)]
[MLIR][SPIRVToLLVM] Updated documentation for SPIR-V to LLVM conversion
Updated the documentation for SPIR-V to LLVM conversion, particularly:
- Added a section on control flow
- Added a section on memory ops
- Added a section on GLSL ops
Also, moved `spv.FunctionCall` to control flow section. Added a new section
that will be used to describe the modelling of runtime-related ops.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D84734
Martin Storsjö [Tue, 4 Aug 2020 07:24:32 +0000 (10:24 +0300)]
[llvm-rc] Allow string table values split into multiple string literals
This can practically easily be a product of combining strings with
macros in resource files.
This fixes https://github.com/mstorsjo/llvm-mingw/issues/140.
As string literals within llvm-rc are handled as StringRefs, each
referencing an uninterpreted slice of the input file, with actual
interpretation of the input string (codepage handling, unescaping etc)
done only right before writing them out to disk, it's hard to
concatenate them other than just bundling them up in a vector,
without rearchitecting a large part of llvm-rc.
This matches how the same already is supported in VersionInfoValue,
with a std::vector<IntOrString> Values.
MS rc.exe only supports concatenated string literals in version info
values (already supported), string tables (implemented in this patch)
and user data resources (easily implemented in a separate patch, but
hasn't been requested by any end user yet), while GNU windres supports
string immediates split into multiple strings anywhere (e.g. like
(100 ICON "myicon" ".ico"). Not sure if concatenation in other
statements actually is used in the wild though, in resource files
normally built by GNU windres.
Differential Revision: https://reviews.llvm.org/D85183
Juneyoung Lee [Tue, 4 Aug 2020 08:22:36 +0000 (17:22 +0900)]
[JumpThreading] Consider freeze as a zero-cost instruction
This is a simple patch that makes freeze as a zero-cost instruction, as bitcast already is.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D85023
Juneyoung Lee [Tue, 4 Aug 2020 08:21:32 +0000 (17:21 +0900)]
[JumpThreading] Add a test for D85023; NFC
Mehdi Amini [Wed, 5 Aug 2020 04:31:30 +0000 (04:31 +0000)]
Revert "DomTree: Make PostDomTree immune to block successors swap"
This reverts commit
c35585e209efe69e2233bdc5ecd23bed7b735ba3.
The MLIR is broken with this patch, reproduce by adding
-DLLVM_ENABLE_PROJECTS=mlir to the cmake configuration and
build `ninja tools/mlir/lib/IR/CMakeFiles/obj.MLIRIR.dir/Dominance.cpp.o`
Evgeniy Brevnov [Wed, 29 Jul 2020 12:19:00 +0000 (19:19 +0700)]
[BPI][NFC] Unify handling of normal and SCC based loops
This is one more NFC part extracted from D79485. Normal and SCC based loops have very different representation and have to be handled separatly each time we deal with loops. D79485 is going to introduce much more extensive use of loops what will be problematic with out this change.
Reviewed By: davidxl
Differential Revision: https://reviews.llvm.org/D84838
Yevgeny Rouban [Wed, 5 Aug 2020 04:06:54 +0000 (11:06 +0700)]
DomTree: Make PostDomTree immune to block successors swap
This is another fix for the bug 46098 where PostDominatorTree
is unexpectedly changed by InstCombine's branch swapping
transformation.
This patch fixes PostDomTree builder. While looking for
the furthest away node in a reverse unreachable subgraph
this patch runs DFS with successors in their function order.
This order is indifferent to the order of successors, so is
the furthest away node.
Reviewers: kuhar, nikic, lebedev.ri
Differential Revision: https://reviews.llvm.org/D84763
Matt Arsenault [Fri, 31 Jul 2020 14:11:00 +0000 (10:11 -0400)]
GlobalISel: Use buildAnyExtOrTrunc
Matt Arsenault [Fri, 31 Jul 2020 14:19:02 +0000 (10:19 -0400)]
GlobalISel: Simplify code
This cannot be a vector of pointers, so using getScalarSizeInBits just
added a bit extra noise.
Matt Arsenault [Fri, 31 Jul 2020 14:14:22 +0000 (10:14 -0400)]
GlobalISel: Fix redundant variable and shadowing
Matt Arsenault [Fri, 31 Jul 2020 14:09:00 +0000 (10:09 -0400)]
GlobalISel: Move load/store lowering to separate functions
Zequan Wu [Fri, 31 Jul 2020 06:36:31 +0000 (23:36 -0700)]
[llvm-cov] reset executation count to 0 after wrapped segment
Fix the bug: https://bugs.llvm.org/show_bug.cgi?id=36979. It also fixes this bug: https://bugs.llvm.org/show_bug.cgi?id=35404, which I think is caused by the same problem.
Differential Revision: https://reviews.llvm.org/D85036
Vitaly Buka [Wed, 5 Aug 2020 01:31:10 +0000 (18:31 -0700)]
[StackSafety,NFC] Add combined index test
Missing file for the previous patch
Richard Smith [Wed, 5 Aug 2020 00:49:56 +0000 (17:49 -0700)]
PR46997: don't run clang-format on clang's testcases.
The formatting of the testcases matters and shouldn't be overwritten by
a tool.
Fangrui Song [Wed, 5 Aug 2020 00:50:06 +0000 (17:50 -0700)]
[X86] Optimize getImpliedDisabledFeatures & getImpliedEnabledFeatures after D83273
Previously the time complexity is O(|number of paths from the root to an
implied feature| * CPU_FWATURE_MAX) where CPU_FEATURE_MAX is 92.
The number of paths can be large (theoretically exponential).
For an inline asm statement, there is a code path
`clang::Parser::ParseAsmStatement -> clang::Sema::ActOnGCCAsmStmt -> ASTContext::getFunctionFeatureMap`
leading to potentially many calls of getImpliedEnabledFeatures (41 for my -march=native case).
We should improve the performance a bit in case the number of inline asm
statements is large (Linux kernel builds).
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D85257
Fred Riss [Wed, 5 Aug 2020 00:45:36 +0000 (17:45 -0700)]
[lldb/testsuite] Skip 'frame diagnose' tests based on architecture
AFAICS, the feature only works on x86, skipping the tests has nothing to
do with the target being iOS or remote.
Vitaly Buka [Wed, 5 Aug 2020 00:39:46 +0000 (17:39 -0700)]
[StackSafety,NFC] Add combined index test
Mircea Trofin [Tue, 4 Aug 2020 22:00:35 +0000 (15:00 -0700)]
[llvm] Expose type and element count-related APIs on TensorSpec
Added a mechanism to check the element type, get the total element
count, and the size of an element.
Differential Revision: https://reviews.llvm.org/D85250
Roman Lebedev [Wed, 5 Aug 2020 00:19:38 +0000 (03:19 +0300)]
Revert "[InstCombine] Negator: -(X << C) --> X * (-1 << C)"
Breaks codegen tests, will recommit later.
This reverts commit
8aeb2fe13a4100b4c2e78d6ef75119304100cb1f.
Roman Lebedev [Tue, 4 Aug 2020 23:08:58 +0000 (02:08 +0300)]
[InstCombine] Negator: -(X << C) --> X * (-1 << C)
This shows some regressions in tests, but they are all around GEP's,
so i'm not really sure how important those are.
https://rise4fun.com/Alive/1Gn
Roman Lebedev [Tue, 4 Aug 2020 23:42:21 +0000 (02:42 +0300)]
[NFC][InstCombine] Fix value names (s/%tmp/%i/) and autogenerate a few tests being affected by negator change
Roman Lebedev [Tue, 4 Aug 2020 22:52:57 +0000 (01:52 +0300)]
[NFC][InstCombine] Negator: add tests for negation of left-shift by constant
Adrian Prantl [Sat, 25 Jul 2020 01:36:18 +0000 (18:36 -0700)]
Fix debugserver's qProcessInfo reporting of maccatalyst binaries
This patch is similar in spirit to https://reviews.llvm.org/D84480,
but does the maccatalyst/macosx disambiguation. I also took the
opportunity to factor out the gdb-remote packet log scanning used by
several testcases into lldbutil functions.
rdar://problem/
66059257
Differential Revision: https://reviews.llvm.org/D84576
Krzysztof Parzyszek [Tue, 4 Aug 2020 22:36:17 +0000 (17:36 -0500)]
[RDF] Add operator<<(raw_ostream&, RegisterAggr), NFC
Krzysztof Parzyszek [Tue, 4 Aug 2020 22:36:17 +0000 (17:36 -0500)]
[RDF] Use hash-based containers, cache extra information
This improves performance.
Yonghong Song [Mon, 3 Aug 2020 23:12:19 +0000 (16:12 -0700)]
BPF: simplify IR generation for __builtin_btf_type_id()
This patch simplified IR generation for __builtin_btf_type_id().
For __builtin_btf_type_id(obj, flag), previously IR builtin
looks like
if (obj is a lvalue)
llvm.bpf.btf.type.id(obj.ptr, 1, flag) !type
else
llvm.bpf.btf.type.id(obj, 0, flag) !type
The purpose of the 2nd argument is to differentiate
__builtin_btf_type_id(obj, flag) where obj is a lvalue
vs.
__builtin_btf_type_id(obj.ptr, flag)
Note that obj or obj.ptr is never used by the backend
and the `obj` argument is only used to derive the type.
This code sequence is subject to potential llvm CSE when
- obj is the same .e.g., nullptr
- flag is the same
- metadata type is different, e.g., typedef of struct "s"
and strust "s".
In the above, we don't want CSE since their metadata is different.
This patch change IR builtin to
llvm.bpf.btf.type.id(seq_num, flag) !type
and seq_num is always increasing. This will prevent potential
llvm CSE.
Also report an error if the type name is empty for
remote relocation since remote relocation needs non-empty
type name to do relocation against vmlinux.
Differential Revision: https://reviews.llvm.org/D85174
Krzysztof Parzyszek [Tue, 4 Aug 2020 23:20:30 +0000 (18:20 -0500)]
[RDF] Really remove remaining uses of PhysicalRegisterInfo::normalize
Krzysztof Parzyszek [Tue, 4 Aug 2020 22:46:38 +0000 (17:46 -0500)]
[RDF] Cache register aliases in PhysicalRegisterInfo
This improves performance of PhysicalRegisterInfo::makeRegRef.
Krzysztof Parzyszek [Tue, 4 Aug 2020 23:03:18 +0000 (18:03 -0500)]
[RDF] Lower the sorting complexity in RDFLiveness::getAllReachingDefs
The sorting is needed, because reaching defs are (logically) ordered,
but are not collected in that order. This change will break up the
single call to std::sort into a series of smaller sorts, each of which
should use a cheaper comparison function than the original.
Adrian Prantl [Mon, 3 Aug 2020 23:15:22 +0000 (16:15 -0700)]
Teach SROA to handle allocas with more than one dbg.declare.
It is technically legal for optimizations to create an alloca that is
used by more than one dbg.declare, if one or both of them are inlined
instances of aliasing variables.
Differential Revision: https://reviews.llvm.org/D85172
Arthur Eubanks [Wed, 29 Jul 2020 20:54:07 +0000 (13:54 -0700)]
[Hexagon] Use InstSimplify instead of ConstantProp
This is the last remaining use of ConstantProp, migrate it to InstSimplify in the goal of removing ConstantProp.
Add -hexagon-instsimplify option to enable skipping of instsimplify in
tests that can't handle the extra optimization.
Differential Revision: https://reviews.llvm.org/D85047
Eli Friedman [Tue, 4 Aug 2020 21:17:30 +0000 (14:17 -0700)]
[SelectionDAG][SVE] Support scalable vectors in getConstantFP()
Differential Revision: https://reviews.llvm.org/D85249
Krzysztof Parzyszek [Tue, 4 Aug 2020 21:13:08 +0000 (16:13 -0500)]
[RDF] Remove uses of RDFRegisters::normalize (deprecate)
This function has been reduced to an identity function for some time.
Jonas Devlieghere [Tue, 4 Aug 2020 21:39:39 +0000 (14:39 -0700)]
[lldb/Test] Add @skipIfRemote decorator to TestProcessList.py
lldb-platform contains a very minimal support for the qfProcessInfo
packet, only allowing the simplest query to get most of the testsuite
running, and returning very little information about the matched
processes.
Matt Arsenault [Mon, 20 Jul 2020 21:10:42 +0000 (17:10 -0400)]
AMDGPU/GlobalISel: Use live in helper function for returnaddress
Mircea Trofin [Tue, 4 Aug 2020 21:32:07 +0000 (14:32 -0700)]
[llvm][NFC] Moved implementation of TrainingLogger outside of its decl
Also renamed a method - printTensor - to print; and added comments.
Matt Arsenault [Mon, 20 Jul 2020 01:26:02 +0000 (21:26 -0400)]
AMDGPU/GlobalISel: Select llvm.returnaddress
Jonas Devlieghere [Tue, 4 Aug 2020 21:00:30 +0000 (14:00 -0700)]
[lldb/Test] Skip tests that try to get the remote environment
We don't support getting the remote environment. The gdb remote protocol
has no packet for that.
Matt Arsenault [Mon, 20 Jul 2020 12:26:33 +0000 (08:26 -0400)]
GlobalISel: Add utilty for getting function argument live ins
Get the argument register and ensure there's a copy to the virtual
register. AMDGPU and AArch64 have similarish code to get the livein
value, and I also want to use this in multiple places.
This is a bit more aggressive about setting the register class than
the original function, but that's probably OK.
I think we're missing a few verifier checks for function live ins. I
noticed AArch64's calling convention code is not actually adding
liveins to functions, only the entry block (which apparently might not
matter that much?). There should probably be a verifier check that
entry block live ins are also live into the function. We also might
need a verifier check that the copy to the livein virtual register is
in the entry block.
Yifan Shen [Tue, 4 Aug 2020 20:31:44 +0000 (13:31 -0700)]
[lldb-vscode ]Add Syntax Highlighting to Disassembly View
When lldb cannot find source file thus IDE renders a disassembly view, add syntax highlighting for constants, registers and final line comments for better debugging experience.
The original plain disassembly view looks like:
{
F12401687}
An ideal view is like the screenshot attached.
{
F12401515}
In this diff, the mimeType is a kind of media type for formatting the content in the response to a source request. Elements in the disassembly view, like constants, registers and final line comments are colored for highlighting.
A built-in support in the VSCode IDE for syntax highlighting will identify the which mimeType to apply and render the disassembly view as expected.
Reviewed By: wallace, clayborg
Differential Revision: https://reviews.llvm.org/D84555
Eli Friedman [Mon, 3 Aug 2020 22:59:14 +0000 (15:59 -0700)]
[AArch64][SVE] Widen narrow sdiv/udiv operations.
The SVE instruction set only supports sdiv/udiv for 32-bit and 64-bit
integers. If we see an 8-bit or 16-bit divide, widen the operands to 32
bits, and narrow the result.
Differential Revision: https://reviews.llvm.org/D85170
AK [Tue, 4 Aug 2020 18:16:56 +0000 (11:16 -0700)]
[HotColdSplit] Add test case for unlikely attribute in outlined function
Differential Revision: https://reviews.llvm.org/D85232
Adrian Pop [Tue, 4 Aug 2020 20:15:17 +0000 (23:15 +0300)]
[OpenMP] support build on msys2/mingw with clang or gcc
RTM Adaptive Locks are supported on msys2/mingw for clang and gcc.
Differential Revision: https://reviews.llvm.org/D81776
Jonas Devlieghere [Tue, 4 Aug 2020 20:07:46 +0000 (13:07 -0700)]
[lldb/Test] Add missing stdio.h includes
Fixes error: implicit declaration of function 'printf' is invalid in C99
[-Werror,-Wimplicit-function-declaration]
Ilya Leoshkevich [Thu, 30 Jul 2020 18:08:40 +0000 (20:08 +0200)]
[libFuzzer] Enable for SystemZ
* Add SystemZ to the list of supported architectures.
* XFAIL a few tests.
Coverage reporting is broken, and is not easy to fix (see comment in
coverage.test). Interaction with sanitizers needs to be investigated
more thoroughly, since they appear to reduce coverage in certain cases.
Ilya Leoshkevich [Thu, 30 Jul 2020 18:08:08 +0000 (20:08 +0200)]
[SanitizerCoverage] Fix types of __stop* and __start* symbols
If a section is supposed to hold elements of type T, then the
corresponding CreateSecStartEnd()'s Ty parameter represents T*.
Forwarding it to GlobalVariable constructor causes the resulting
GlobalVariable's type to be T*, and its SSA value type to be T**, which
is one indirection too many. This issue is mostly masked by pointer
casts, however, the global variable still gets an incorrect alignment,
which causes SystemZ to choose wrong instructions to access the
section.
Ilya Leoshkevich [Thu, 30 Jul 2020 18:07:11 +0000 (20:07 +0200)]
[libFuzzer] Fix endianness issue in ForEachNonZeroByte()
The usage pattern of Bundle variable assumes the machine is little
endian, which is not the case on SystemZ. Fix by converting Bundle to
little-endian when necessary.
Dan Gohman [Wed, 18 Mar 2020 15:07:33 +0000 (08:07 -0700)]
[WebAssembly] Use "signed char" instead of "char" in SIMD intrinsics.
This allows people to use `int8_t` instead of `char`, -funsigned-char,
and generally decouples SIMD from the specialness of `char`.
And it makes intrinsics like `__builtin_wasm_add_saturate_s_i8x16`
and `__builtin_wasm_add_saturate_u_i8x16` use signed and unsigned
element types, respectively.
Differential Revision: https://reviews.llvm.org/D85074
Rahul Joshi [Tue, 4 Aug 2020 18:46:26 +0000 (11:46 -0700)]
[MLIR] Change FunctionType::get() and TupleType::get() to use TypeRange
- Moved TypeRange into its own header/cpp file, and add hashing support.
- Change FunctionType::get() and TupleType::get() to use TypeRange
Differential Revision: https://reviews.llvm.org/D85075
Cameron McInally [Tue, 4 Aug 2020 19:26:23 +0000 (14:26 -0500)]
[FastISel] Don't transform FSUB(-0, X) -> FNEG(X) in FastISel
This corresponds with the SelectionDAGISel change in D84056.
Also, rename some poorly named tests in CodeGen/X86/fast-isel-fneg.ll with NFC.
Differential Revision: https://reviews.llvm.org/D85149
Yonghong Song [Thu, 30 Jul 2020 05:46:07 +0000 (22:46 -0700)]
BPF: support type exist/size and enum exist/value relocations
Four new CO-RE relocations are introduced:
- TYPE_EXISTENCE: whether a typedef/record/enum type exists
- TYPE_SIZE: the size of a typedef/record/enum type
- ENUM_VALUE_EXISTENCE: whether an enum value of an enum type exists
- ENUM_VALUE: the enum value of an enum type
These additional relocations will make CO-RE bpf programs
more adaptive for potential kernel internal data structure
changes.
Differential Revision: https://reviews.llvm.org/D83878
Diego Caballero [Tue, 4 Aug 2020 18:22:19 +0000 (11:22 -0700)]
[MLIR][Affine] Fix createPrivateMemRef in affine fusion
Always define a remapping for the memref replacement (`indexRemap`)
with the proper number of inputs, including all the `outerIVs`, so that
the number of inputs and the operands provided for the map don't mismatch.
Reviewed By: bondhugula, andydavis1
Differential Revision: https://reviews.llvm.org/D85177
Fangrui Song [Tue, 4 Aug 2020 19:22:47 +0000 (12:22 -0700)]
[llvm-symbolizer][test] Fix pdb/pdb.test after D83530
This is a Windows only test which requires HAVE_DIA_SDK, so I failed to notice it.
Matt Arsenault [Wed, 29 Jul 2020 13:48:26 +0000 (09:48 -0400)]
GlobalISel: Handle llvm.localescape
This one is pretty easy and shrinks the list of unhandled
intrinsics. I'm not sure how relevant the insert point is. Using the
insert position of EntryBuilder will place this after
constants. SelectionDAG seems to end up emitting these after argument
copies and before anything else, but I don't think it really
matters. This also ends up emitting these in the opposite order from
SelectionDAG, but I don't think that matters either.
This also needs a fix to stop the later passes dropping this as a dead
instruction. DeadMachineInstructionElim's version of isDead special
cases LOCAL_ESCAPE for some reason, and I'm not sure why it's excluded
from MachineInstr::isLabel (or why isDead doesn't check it).
I also noticed DeadMachineInstructionElim never considers inline asm
as dead, but GlobalISel will drop asm with no constraints.
cgyurgyik [Tue, 4 Aug 2020 18:55:12 +0000 (14:55 -0400)]
[libc] Add implementations for isblank, iscntrl, isgraph, ispunct.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D85059
Matt Arsenault [Fri, 31 Jul 2020 19:46:10 +0000 (15:46 -0400)]
GlobalISel: Add node mappings for frameindex/blockaddress
Matt Arsenault [Sun, 26 Jul 2020 21:44:28 +0000 (17:44 -0400)]
AMDGPU/GlobalISel: Add baseline tests for andn2/orn2 matching
Louis Dionne [Tue, 4 Aug 2020 19:09:05 +0000 (15:09 -0400)]
[libc++abi] Make sure we use a 32 bit guard on 32 bit Aarch64
aartbik [Fri, 31 Jul 2020 19:47:25 +0000 (12:47 -0700)]
[mlir] [VectorOps] Add expand/compress operations to Vector dialect
Introduces the expand and compress operations to the Vector dialect
(important memory operations for sparse computations), together
with a first reference implementation that lowers to the LLVM IR
dialect to enable running on CPU (and other targets that support
the corresponding LLVM IR intrinsics).
Reviewed By: reidtatge
Differential Revision: https://reviews.llvm.org/D84888
Bardia Mahjour [Tue, 4 Aug 2020 18:47:24 +0000 (14:47 -0400)]
[NFC][LV] Vectorized Loop Skeleton Refactoring
This patch tries to improve readability and maintenance
of createVectorizedLoopSkeleton by reorganizing some lines,
updating some of the comments and breaking it up into
smaller logical units.
Reviewed By: pjeeva01
Differential Revision: https://reviews.llvm.org/D83824
Xavier Denis [Tue, 4 Aug 2020 18:44:47 +0000 (20:44 +0200)]
[InstSimplify] Peephole optimization for icmp (urem X, Y), X
This revision adds the following peephole optimization
and it's negation:
%a = urem i64 %x, %y
%b = icmp ule i64 %a, %x
====>
%b = true
With John Regehr's help this optimization was checked with Alive2
which suggests it should be valid.
This pattern occurs in the bound checks of Rust code, the program
const N: usize = 3;
const T = u8;
pub fn split_mutiple(slice: &[T]) -> (&[T], &[T]) {
let len = slice.len() / N;
slice.split_at(len * N)
}
the method call slice.split_at will check that len * N is within
the bounds of slice, this bounds check is after some transformations
turned into the urem seen above and then LLVM fails to optimize it
any further. Adding this optimization would cause this bounds check
to be fully optimized away.
ref: https://github.com/rust-lang/rust/issues/74938
Differential Revision: https://reviews.llvm.org/D85092
Xavier Denis [Tue, 4 Aug 2020 18:44:47 +0000 (20:44 +0200)]
[InstSimplify] Add tests for icmp with urem divisor (NFC)
Fangrui Song [Tue, 4 Aug 2020 18:01:02 +0000 (11:01 -0700)]
[llvm-symbolizer] Add compatibility aliases for --inlining={true,false}
D83530 removed --inlining={true,false} which were used by old asan_symbolize.py script.
Add compatibility aliases so that old asan_symbolize.py and sanitizer
binaries can work with new llvm-symbolizer.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D85228
Nikita Popov [Tue, 7 Jul 2020 20:50:12 +0000 (22:50 +0200)]
[SCCP] Propagate inequalities
Teach SCCP to create notconstant lattice values from inequality
assumes and nonnull metadata, and update getConstant() to make
use of them. Additionally isOverdefined() needs to be changed to
consider notconstant an overdefined value.
Handling inequality branches is delayed until our branch on undef
story in other passes has been improved.
Differential Revision: https://reviews.llvm.org/D83643
AK [Tue, 4 Aug 2020 17:57:52 +0000 (10:57 -0700)]
Revert "[HotColdSplit] Add test case for unlikely attribute in outlined function"
This reverts commit
aa1f905890fbbfedf396530f1e14409875ece13c.
The flag -codegenprepare maybe causing failures. Reverting this
to investigate the root cause.
Thorsten Schuett [Tue, 4 Aug 2020 18:10:01 +0000 (11:10 -0700)]
[clang] improve diagnostics for misaligned and large atomics
"Listing the alignment and access size (== expected alignment) in the warning
seems like a good idea."
solves PR 46947
struct Foo {
struct Bar {
void * a;
void * b;
};
Bar bar;
};
struct ThirtyTwo {
struct Large {
void * a;
void * b;
void * c;
void * d;
};
Large bar;
};
void braz(Foo *foo, ThirtyTwo *braz) {
Foo::Bar bar;
__atomic_load(&foo->bar, &bar, __ATOMIC_RELAXED);
ThirtyTwo::Large foobar;
__atomic_load(&braz->bar, &foobar, __ATOMIC_RELAXED);
}
repro.cpp:21:3: warning: misaligned atomic operation may incur significant performance penalty; the expected (16 bytes) exceeds the actual alignment (8 bytes) [-Watomic-alignment]
__atomic_load(&foo->bar, &bar, __ATOMIC_RELAXED);
^
repro.cpp:24:3: warning: misaligned atomic operation may incur significant performance penalty; the expected (32 bytes) exceeds the actual alignment (8 bytes) [-Watomic-alignment]
__atomic_load(&braz->bar, &foobar, __ATOMIC_RELAXED);
^
repro.cpp:24:3: warning: large atomic operation may incur significant performance penalty; the access size (32 bytes) exceeds the max lock-free size (16 bytes) [-Watomic-alignment]
3 warnings generated.
Differential Revision: https://reviews.llvm.org/D85102
Jordan Rupprecht [Tue, 4 Aug 2020 18:01:43 +0000 (11:01 -0700)]
[test] Fix another realpath->abspath.
This is a followup to
817b3a6fe3a4452eb61a2503c8beaa7267ca0351: in `builder_base` we should use abspath, not realpath, because the name is significant.
This is used by test cases that use `@skipIf(compiler="clang", compiler_version=['<', <version>])`
Sanjay Patel [Tue, 4 Aug 2020 17:54:15 +0000 (13:54 -0400)]
[InstSimplify] add tests for compare of min/max; NFC
The test are adapted from the existing tests for cmp/select idioms.
George Mitenkov [Tue, 4 Aug 2020 17:30:40 +0000 (20:30 +0300)]
[MLIR][SPIRVToLLVM] Indentation and style fix in tests
Second patch with test fixes. Redundant `%{{.*}} = `
removed, label checks added, tabs converted to spaces and
some namings are changed to match the convention.
Fixed tests:
- constant-op-to-llvm
- func-ops-to-llvm (renamed)
- memory-ops-to-llvm
- misc-ops-to-llvm
- module-ops-to-llvm
- shift-ops-to-llvm (renamed)
- spirv-types-to-llvm-invalid (renamed)
Reviewed By: ftynse, rriddle
Differential Revision: https://reviews.llvm.org/D85206
David Blaikie [Tue, 4 Aug 2020 17:41:27 +0000 (10:41 -0700)]
Fix -Wconstant-conversion warning with explicit cast
Introduced by
fd6584a22043b254a323635c142b28ce80ae5b5b
Following similar use of casts in AsmParser.cpp, for instance - ideally
this type would use unsigned chars as they're more representative of raw
data and don't get confused around implementation defined choices of
char's signedness, but this is what it is & the signed/unsigned
conversions are (so far as I understand) safe/bit preserving in this
usage and what's intended, given the API design here.
Fangrui Song [Tue, 4 Aug 2020 17:24:59 +0000 (10:24 -0700)]
sanitizer_symbolizer_libcdep.cpp: Change --inlining=true to --inlines and --inlining=false to --no-inlines