Vitaly Buka [Sun, 11 Sep 2022 18:44:38 +0000 (11:44 -0700)]
Revert "[test][clangd] Fix use-after-return after
72142fbac4"
Will try another fix.
This reverts commit
c3c930d573656a825523b7112891bd97eec7b64f.
Aaron Puchert [Sun, 11 Sep 2022 18:44:51 +0000 (20:44 +0200)]
Make sure libLLVM users link with libatomic if needed
64-bit atomics are used in llvm/ADT/Statistic.h, which means that users
of libLLVM.so might also have to link with libatomic. To avoid having
to special-case the library here, we simply add all `LLVM_SYSTEM_LIBS`
as public link dependencies to libLLVM.
This fixes a build failure on PowerPC 32-bit.
Reviewed By: beanz
Differential Revision: https://reviews.llvm.org/D132799
Aaron Puchert [Sun, 11 Sep 2022 18:44:36 +0000 (20:44 +0200)]
[libcxxabi] Fix forced_unwind3.pass.cpp compilation error
Under some circumstances there is no struct _Unwind_Exception, it's just
an alias to another struct. This would result in an error like this:
libcxxabi/test/forced_unwind3.pass.cpp:50:77: error: typedef '_Unwind_Exception' cannot be referenced with a struct specifier
static _Unwind_Reason_Code stop(int, _Unwind_Action actions, type, struct _Unwind_Exception*, struct _Unwind_Context*,
^
<...>/lib/clang/15.0.0/include/unwind.h:68:38: note: declared here
typedef struct _Unwind_Control_Block _Unwind_Exception; /* Alias */
^
This seems to have been an issue since the test was first added in
D109856, except that it didn't surface with Clang 14 because the code
is filtered out by the preprocessor if `__clang_major__ < 15`.
Reviewed By: danielkiss, mstorsjo, #libc_abi, ldionne
Differential Revision: https://reviews.llvm.org/D132873
Aaron Puchert [Sun, 11 Sep 2022 18:43:55 +0000 (20:43 +0200)]
[docs] Use relative URLs for man pages
Should have no effect on the online documentation, but it makes offline
builds more self-contained. With relative links however we have to
abstain from using `:manpage:` outside of man page cross-references.
Reviewed By: mysterymath
Differential Revision: https://reviews.llvm.org/D132794
Vitaly Buka [Sun, 11 Sep 2022 17:15:13 +0000 (10:15 -0700)]
[test][clangd] Fix use-after-return after
72142fbac4
Vitaly Buka [Sun, 11 Sep 2022 17:06:55 +0000 (10:06 -0700)]
Revert "[test][clangd] Try to unbrake bots after
72142fbac4"
It does not help.
This reverts commit
355dbd3b2aa28d479170c4e43265de186317dd86.
Mark de Wever [Sat, 3 Sep 2022 11:37:09 +0000 (13:37 +0200)]
[libc++][random] Removes transitive includes.
It seems these includes are still provided by the sub headers, so it only
removes the duplicates.
There is no change in the list of includes, but the change affects the
modular build. By not having the includes in the top-level header the
module map has changed. This uncovers missing includes in the tests
and missing exports in the module map. This causes the huge amount of
changes in the patch.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D133252
Junduo Dong [Tue, 16 Aug 2022 12:45:09 +0000 (05:45 -0700)]
[Clang] Reimplement time tracing of NewPassManager by PassInstrumentation framework
The previous implementation of time tracing in NewPassManager is direct but messive.
The key codes are like the demo below:
```
/// Runs the function pass across every function in the module.
PreservedAnalyses run(LazyCallGraph::SCC &C, CGSCCAnalysisManager &AM,
LazyCallGraph &CG, CGSCCUpdateResult &UR) {
/// ...
PreservedAnalyses PassPA;
{
TimeTraceScope TimeScope(Pass.name());
PassPA = Pass.run(F, FAM);
}
/// ...
}
```
It can be bothered to judge where should we add the tracing codes by hands.
With the PassInstrumentation framework, we can easily add `Before/After` callback
functions to add time tracing codes.
Differential Revision: https://reviews.llvm.org/D131960
Florian Hahn [Sun, 11 Sep 2022 11:24:43 +0000 (12:24 +0100)]
[VPlan] Check recipe uses instead of type of underlying instr (NFC).
Suggested by @Ayal post-commit, to reduce the dependence on the
underlying instruction in favor of information available directly for
the recipe.
Marc Auberer [Sun, 11 Sep 2022 10:13:25 +0000 (06:13 -0400)]
[InstCombine] Fold x + (x | -x) to x & (x - 1)
Fixes #57531
This transformation may be particularly useful on x86-64,
because x & (x - 1) can be performed by a single blsr instruction.
Differential Revision: https://reviews.llvm.org/D133362
Sanjay Patel [Sat, 10 Sep 2022 15:38:32 +0000 (11:38 -0400)]
[InstCombine] add tests for mul-by-neg-pow2; NFC
Sanjay Patel [Fri, 9 Sep 2022 20:19:03 +0000 (16:19 -0400)]
[InstCombine] add tests for demanded bits of add with multi-use; NFC
Mark de Wever [Sun, 11 Sep 2022 10:12:22 +0000 (12:12 +0200)]
[libc++][doc] Updates format status page.
Rainer Orth [Sun, 11 Sep 2022 09:25:53 +0000 (11:25 +0200)]
[compiler-rt] Handle non-canonical triples with new runtime lib layout
As described in Issue #54196
<https://github.com/llvm/llvm-project/issues/54196>, the ideas of `clang`
and `compiler-rt` where runtime libs are located with
`-DLLVM_ENABLE_RUNTIMES` can differ. This is the `compiler-rt` side of the
patch I've used to get them in sync for the `amd64-pc-solaris2.11` and
`sparc64-unknown-linux-gnu` release builds.
Tested on `amd64-pc-solaris2.11` and `sparc64-unknown-linux-gnu`.
Differential Revision: https://reviews.llvm.org/D133406
Alexey Bader [Wed, 3 Aug 2022 13:06:50 +0000 (06:06 -0700)]
[StripDeadDebugInfo] Drop dead CUs
In situations when a submodule is extracted from big module (i.e. using
CloneModule) a lot of debug info is copied via metadata nodes. Despite of
the fact that part of that info is not linked to any instruction in extracted
IR file, StripDeadDebugInfo pass doesn't drop them.
Strengthen criteria for debug info that should be kept in a module:
- Only those compile units are left that referenced by a subprogram debug info
node that is attached to a function definition in the module or to an instruction
in the module that belongs to an inlined function.
Signed-off-by: Mikhail Lychkov <mikhail.lychkov@intel.com>
Differential Revision: https://reviews.llvm.org/D122163
Vitaly Buka [Sun, 11 Sep 2022 08:19:22 +0000 (01:19 -0700)]
[test][clangd] Try to unbrake bots after
72142fbac4
Tom Honermann [Sat, 10 Sep 2022 14:16:20 +0000 (10:16 -0400)]
[libc++][cuchar] Declare std::c8rtomb and std::mbrtoc8 in <cuchar> if available.
This change implements the C library dependent portions of P0482R6
(char8_t: A type for UTF-8 characters and strings (Revision 6)) by
declaring std::c8rtomb() and std::mbrtoc8() in the <cuchar> header
when implementations are provided by the C library as specified by
WG14 N2653 (char8_t: A type for UTF-8 characters and strings
(Revision 1)) as adopted for C23.
A _LIBCPP_HAS_NO_C8RTOMB_MBRTOC8 macro is defined by the libc++ __config
header unless it is known that the C library provides these functions
in the current compilation mode. This macro is used for testing purposes
and may be of use to libc++ users. At present, the only C library known
to implement these functions is GNU libc as of its 2.36 release.
Reviewed By: ldionne
Differential Revision: https://reviews.llvm.org/D130946
Groverkss [Sun, 11 Sep 2022 00:02:52 +0000 (01:02 +0100)]
[MLIR][Presburger] Refactor MultiAffineFunction to be defined over universe
This patch refactors MAF to be defined over the universe in a given space
instead of being defined over a restricted domain.
The reasoning for this refactor is to store division representation for local
variables explicitly for the function outputs. This change is required for
unionLexMax/Min to support local variables which will be upstreamed after this
patch. Another reason for this refactor is to have a flattened form of
AffineMap as MultiAffineFunction.
Reviewed By: arjunp
Differential Revision: https://reviews.llvm.org/D131864
Vitaly Buka [Sat, 10 Sep 2022 23:00:17 +0000 (16:00 -0700)]
[test][msan] Add tests for @llvm.masked.*
Aiden Grossman [Wed, 7 Sep 2022 20:36:09 +0000 (20:36 +0000)]
[MLGO] Make TFLiteUtils throw an error if some features haven't been passed to the model
In the Tensorflow C lib utilities, an error gets thrown if some features
haven't gotten passed into the model (due to differences in ordering
which now don't exist with the transition to TFLite). However, this is
not currently the case when using TFLiteUtils. This patch makes some
minor changes to throw an error when not all inputs of the model have
been passed, which when not handled will result in a seg fault within
TFLite.
Reviewed By: mtrofin
Differential Revision: https://reviews.llvm.org/D133451
Vitaly Buka [Sat, 10 Sep 2022 22:19:00 +0000 (15:19 -0700)]
[test][msan] Remove -DAG after fixing indeterminism
Vitaly Buka [Sat, 10 Sep 2022 21:15:23 +0000 (14:15 -0700)]
[msan] Don't deppend on argumens evaluation order
Vitaly Buka [Sat, 10 Sep 2022 20:19:17 +0000 (13:19 -0700)]
[test][msan] Autogenerate the test
Vitaly Buka [Sat, 10 Sep 2022 20:47:10 +0000 (13:47 -0700)]
[msan] Do not deppend on arguments evaluation order
Clang and GCC do this differently making IR inconsistent.
https://lab.llvm.org/buildbot#builders/6/builds/13120
Vitaly Buka [Sat, 10 Sep 2022 20:31:56 +0000 (13:31 -0700)]
Revert "[test][msan] Convert test into autogenerated"
Fails https://lab.llvm.org/buildbot#builders/6/builds/13120
This reverts commit
affc90ed8d30badf585a93d1b6997e400099075c.
Vitaly Buka [Sat, 10 Sep 2022 20:19:17 +0000 (13:19 -0700)]
[test][msan] Convert test into autogenerated
Florian Hahn [Sat, 10 Sep 2022 19:55:03 +0000 (20:55 +0100)]
[SLP] Add test case showing missing CSE in hoisted instructions.
Vitaly Buka [Sat, 10 Sep 2022 19:20:54 +0000 (12:20 -0700)]
[NFC][msan] Remove unused return type
Vitaly Buka [Sat, 10 Sep 2022 19:09:51 +0000 (12:09 -0700)]
[msan] Relax handling of llvm.masked.expandload and llvm.masked.gather
This is work around for new false positives. Real implementation will
follow.
Simon Pilgrim [Sat, 10 Sep 2022 17:18:36 +0000 (18:18 +0100)]
[CostModel][X86] Merge AVX512BW vXi8/vXi16 shifts into default AVX512BW cost table
We only need to handle the uniform cases early
Corentin Jabot [Sat, 10 Sep 2022 17:07:56 +0000 (19:07 +0200)]
[Clang] NFC: Remove duplicated variable def in CheckLValueConstantExpression
Simon Pilgrim [Sat, 10 Sep 2022 16:57:20 +0000 (17:57 +0100)]
[CostModel][X86] Update CTPOP costs
With the bdver2 model updates, many of the AVX1 costs were far too high - it also helped expose some costs mismatches for Atom/Silvermont
Simon Pilgrim [Sat, 10 Sep 2022 16:34:40 +0000 (17:34 +0100)]
[X86] Fix bdver2 128-bit shuffles throughputs
Noticed while trying to get vector ctpop/ctlz/cttz costs fixed using the script from D103695 - all of these are full-rate but the throughput costs were weirdly high for bdver2
Matches AMD 15h SoG, Agner and instlatx64
Simon Pilgrim [Sat, 10 Sep 2022 15:21:50 +0000 (16:21 +0100)]
[X86] Fix bdver2 128-bit ALU/logic/shift throughputs
Noticed while trying to get vector shifts costs fixed using the script from D103695 - all of these are full-rate but the throughput costs were weirdly high for bdver2
Matches AMD 15h SoG, Agner and instlatx64
Manuel Brito [Sat, 10 Sep 2022 13:22:38 +0000 (14:22 +0100)]
Use PoisonValue instead of UndefValue when RAUWing unreachable code [NFC]
Replacing the following instances of UndefValue with PoisonValue, where the UndefValue is used as an arbitrary value:
- llvm/lib/CodeGen/WinEHPrepare.cpp
`demotePHIsOnFunclets`: RAUW arbitrary value for lingering uses of removed PHI nodes
- llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
`FoldSingleEntryPHINodes`: Removes a self-referential single entry phi node.
- llvm/lib/Transforms/Utils/CallGraphUpdater.cpp
`finalize`: Remove all references to removed functions.
- llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
`cleanup`: the result is not used then the inserted instructions are removed.
- llvm/tools/bugpoint/CrashDebugger.cpp
`TestInts`: the program is cloned and instructions are removed to narrow down source of crash.
Differential Revision: https://reviews.llvm.org/D133640
Yi Kong [Fri, 9 Sep 2022 19:42:15 +0000 (03:42 +0800)]
[Object] Improve ArchiveWriter diagnostics
Print out the archive member that failed, to make debugging easier.
Before:
error: failed to build archive: Not an int attribute (Producer: 'LLVM15.0.1git' Reader: 'LLVM 14.0.5-rust-dev')
After:
error: failed to build archive: 'fake_bt_keystore.o': Not an int attribute (Producer: 'LLVM15.0.1git' Reader: 'LLVM 14.0.5-rust-dev')
Differential Revision: https://reviews.llvm.org/D133607
Nikolas Klauser [Mon, 5 Sep 2022 22:23:21 +0000 (00:23 +0200)]
[libc++] Bump _LIBCPP_STD_VER to the next expected C++ version
We've decided to use `_LIBCPP_STD_VER >= xy` while discussing to change the constexpr macros, so let's finally bump the version macro to match that.
Reviewed By: ldionne, Mordante, huixie90, #libc, avogelsgesang
Spies: avogelsgesang, libcxx-commits
Differential Revision: https://reviews.llvm.org/D133323
Rainer Orth [Sat, 10 Sep 2022 07:37:35 +0000 (09:37 +0200)]
[Linux] Hack around Linux/sparc <bits/stdio-ldbl.h>
I've been using this hack to work around the Linux/sparc64 compile failure
described in Issue #47994
<https://github.com/llvm/llvm-project/issues/47994>, especially since the
underlying glibc PR build/27558
<https://sourceware.org/bugzilla/show_bug.cgi?id=27558> doesn't seem to be
making progress and some fix is required to have LLVM build on
`sparc64-unknown-linux-gnu` at all, as evidenced on the buildbot.
Tested on `sparc64-unknown-linux-gnu`.
Differential Revision: https://reviews.llvm.org/D133405
sunho [Sat, 10 Sep 2022 06:46:11 +0000 (15:46 +0900)]
[ORC] Remove moves.
sunho [Sat, 10 Sep 2022 06:25:50 +0000 (15:25 +0900)]
[ORC][ORC_RT][COFF] Remove public bootstrap method.
Removes public bootstrap method that is not really necessary and not consistent with other platform API.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D132780
sunho [Sat, 10 Sep 2022 06:25:49 +0000 (15:25 +0900)]
[ORC][ORC_RT][COFF] Support dynamic VC runtime.
Supports dynamic VC runtime. It implements atexits handling which is required to load msvcrt.lib successfully. (the object file containing atexit symbol somehow resolves to static vc runtim symbols) It also default to dynamic vc runtime which tends to be more robust.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D132525
sunho [Sat, 10 Sep 2022 06:25:44 +0000 (15:25 +0900)]
[JITLink][COFF] Use DLLImportDefinitionGenerator for creating PLT stubs.
Uses DLLImportDefinitionGenerator for creating PLT stubs. It removes previous approach for dllimport stub creation which can't deal with jump thunks.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D132524
Craig Topper [Sat, 10 Sep 2022 05:02:40 +0000 (22:02 -0700)]
[DAGCombiner] Use HandleSDNode to keep node alive across call to getNegatedExpression.
getNegatedExpression can delete nodes. If the first call to
getNegatedExpression produced a node that the second call also
manages to create, it might get deleted. Use a HandleSDNode to
ensure it has a use to prevent it from being deleted.
Fixes PR57658.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D133602
Adrian Prantl [Sat, 10 Sep 2022 00:47:53 +0000 (17:47 -0700)]
Document some of the clang-specific DWARF extensions supported by LLDB
This patch adds a new page to the LLDB documentation that documents,
among other things the -gmodules debug info format.
Differential Revision: https://reviews.llvm.org/D133519
Jason Molenda [Sat, 10 Sep 2022 00:34:23 +0000 (17:34 -0700)]
dependency cycle fix in DynamicLoaderDarwinKernel
DynamicLoaderDarwinKernel calls in to PlatformDarwinKernel, and
with my changes in https://reviews.llvm.org/D133534, PlatformDarwinKernel
calls in to DynamicLoaderDarwinKernel. This results in a cmake
dependency if accurately included in the link libraries list.
lldbPluginDynamicLoaderDarwinKernel is specfically for kernel
debugging and is uncommonly linked in to anything except a full
lldb. lldbPluginPlatformMacOSX is any Darwin platform, including
PlatformDarwinKernel, and is referenced a number of time in shell
tests, for instance.
I believe anything linking the darwin kernel DynamicLoader plugin
will already have lldbPluginPlatformMacOSX in its dependency list,
so not explicitly expressing this dependency is safe.
Mohammed Keyvanzadeh [Fri, 9 Sep 2022 20:11:17 +0000 (00:41 +0430)]
[clang][cmake] Remove extra brace
Remove the extra trailing brace from the local variable accessor.
Differential Revision: https://reviews.llvm.org/D133613
Aart Bik [Fri, 9 Sep 2022 23:55:03 +0000 (16:55 -0700)]
[mlir][sparse] fix some asan detected leaks in integration tests
One was an oversight, but the others seem something that regressed.
Matthias to have look later.
https://github.com/llvm/llvm-project/issues/57663
Reviewed By: Peiming
Differential Revision: https://reviews.llvm.org/D133624
Joe Loser [Thu, 8 Sep 2022 23:34:09 +0000 (17:34 -0600)]
[llvm][lit] Respect GTEST_TOTAL_SHARDS and GTEST_SHARD_INDEX env vars
There are a variety of issues with using GTest sharding by default for users of
`lit` using the Google Test formatter as mentioned in
https://github.com/llvm/llvm-project/issues/56492 and
https://github.com/llvm/llvm-project/issues/56491.
Currently, there is no way for users to explicitly control the sharding
behavior, even with the environment variables that GTest provides. This patch
teaches the `googletest` formatter to actually respect `GTEST_TOTAL_SHARDS`
and `GTEST_SHARD_INDEX` environment variables if they are set.
In practice, we could go one step further and not do any of the post-processing
of the JSON files if `GTEST_TOTAL_SHARDS` is `1` for example, but that it left
as a follow-up if desired. There may be preferred alternative approaches to
disabling sharding entirely through another mechanism, such as a lit config
variable.
Differential Revision: https://reviews.llvm.org/D133542
Joe Loser [Fri, 9 Sep 2022 18:47:56 +0000 (12:47 -0600)]
[llvm] Remove includes of `llvm/Support/STLArrayExtras.h`
`llvm` and downstream internal callers no longer use `array_lengthof`, so drop
the include everywhere.
Differential Revision: https://reviews.llvm.org/D133600
Bruno Cardoso Lopes [Fri, 9 Sep 2022 22:10:31 +0000 (15:10 -0700)]
[Clang][ScanDeps] Change multiple-commands.c test to use -fmodules-cache-path on implicit builds
The module cache escapes the test output dirs in this test. Since its default location maybe
composed of system and user related path this can cause problems in some builders (e.g. not
accessible paths inherited in a chroot environment).
Clean the test a bit by passing `-fmodules-cache-path` inside the test output dirs.
Differential Revision: https://reviews.llvm.org/D133617
Nico Weber [Fri, 9 Sep 2022 23:17:41 +0000 (19:17 -0400)]
[gn build] port
1a608cfb5ca8
Nico Weber [Fri, 9 Sep 2022 23:17:19 +0000 (19:17 -0400)]
[gn build] port
48506fbbbf2732d (Mach-O-Fileset)
Greg Clayton [Tue, 30 Aug 2022 22:46:57 +0000 (15:46 -0700)]
Add the ability to show when variables fails to be available when debug info is valid.
Many times when debugging variables might not be available even though a user can successfully set breakpoints and stops somewhere. Letting the user know will help users fix these kinds of issues and have a better debugging experience.
Examples of this include:
- enabling -gline-tables-only and being able to set file and line breakpoints and yet see no variables
- unable to open object file for DWARF in .o file debugging for darwin targets due to modification time mismatch or not being able to locate the N_OSO file.
This patch adds an new API to SBValueList:
lldb::SBError lldb::SBValueList::GetError();
object so that if you request a stack frame's variables using SBValueList SBFrame::GetVariables(...), you can get an error the describes why the variables were not available.
This patch adds the ability to get an error back when requesting variables from a lldb_private::StackFrame when calling GetVariableList.
It also now shows an error in response to "frame variable" if we have debug info and are unable to get varialbes due to an error as mentioned above:
(lldb) frame variable
error: "a.o" object from the "/tmp/libfoo.a" archive: either the .o file doesn't exist in the archive or the modification time (0x63111541) of the .o file doesn't match
Differential Revision: https://reviews.llvm.org/D133164
Stanley Winata [Fri, 9 Sep 2022 23:00:33 +0000 (16:00 -0700)]
[mlir][linalg] Add decomposition from conv_2d_nchw
Decompose conv_2d_nchw_fchw -> conv_1d_ncw_fcw
Reviewed By: hanchung
Differential Revision: https://reviews.llvm.org/D133551
Adrian Prantl [Fri, 9 Sep 2022 22:58:14 +0000 (15:58 -0700)]
Adapt LLDB dataformatters for libcxx change D129386
Differential Revision: https://reviews.llvm.org/D133618
Fangrui Song [Fri, 9 Sep 2022 22:56:57 +0000 (15:56 -0700)]
[ADT] Move LLVM_DEPRECATED before type after D133502
`[[deprecated(...)]]` cannot appear between `inline size_t`.
Zequan Wu [Fri, 9 Sep 2022 22:47:17 +0000 (15:47 -0700)]
[LLDB][NativePDB] Replace blocks.cpp with blocks.s so the test won't be affected by codegen changes.
Fangrui Song [Fri, 9 Sep 2022 22:35:52 +0000 (15:35 -0700)]
River Riddle [Fri, 9 Sep 2022 21:57:04 +0000 (14:57 -0700)]
[mlir] Fix asan leak in BlockAndValueMapping test
Operations were being created without being erased.
River Riddle [Fri, 9 Sep 2022 09:03:47 +0000 (02:03 -0700)]
[mlir:SymbolTable] Add "remove" method that drops a symbol without erasing it
There are various use cases where we don't want to immediately erase
an operation when removing it from the symbol table. This commit adds
a "remove" method to support that.
Differential Revision: https://reviews.llvm.org/D133564
Xiang Li [Fri, 9 Sep 2022 22:03:35 +0000 (15:03 -0700)]
[NFC] Cleanup test for D132913 Preserve vec3 for HLSL
Support number for parameter test added in
https://reviews.llvm.org/D132913
Jason Molenda [Fri, 9 Sep 2022 21:52:59 +0000 (14:52 -0700)]
Recognize a platform binary in ProcessGDBRemote which determines plugins
Complete support of the binary-addresses key in the qProcessInfo packet
in ProcessGDBRemote, for detecting if one of the binaries needs to be
handled by a Platform plugin, and can be used to set the Process'
DynamicLoader plugin and the Target's Platform plugin.
Implement this method in PlatformDarwinKernel to recognize a kernel
fileset at that address, find the actual kernel address in the
fileset, set DynamicLoaderDarwinKernel and PlatformDarwinKernel
in the Process/Target; register the kernel address with the dynamic
loader so it will be loaded later during attach.
This patch only addresses the live debug scenario with a gdb remote
serial protocol connection. I'll handle corefiles in a subsequent
patch that builds on this.
Differential Revision: https://reviews.llvm.org/D133534
rdar://
98754861
Fangrui Song [Fri, 9 Sep 2022 21:37:18 +0000 (14:37 -0700)]
[ELF] Merge Symbol::needs* into uint16_t flags. NFC
Split off from D133003 ([ELF] Parallelize relocation scanning) to make its diff smaller.
Joe Loser [Thu, 8 Sep 2022 15:13:17 +0000 (09:13 -0600)]
[ADT] Mark `llvm::array_lengthof` as deprecated
As a follow-up of
5e96cea1db0623a833d5376c9ea2ce4528771f97, mark
`llvm::array_lengthof` as deprecated in favor of using `std::size` function
directly.
Differential Revision: https://reviews.llvm.org/D133502
Joe Loser [Fri, 9 Sep 2022 18:43:07 +0000 (12:43 -0600)]
[lld] Use std::size instead of llvm::array_lengthof
LLVM contains a helpful function for getting the size of a C-style
array: `llvm::array_lengthof`. This is useful prior to C++17, but not as
helpful for C++17 or later: `std::size` already has support for C-style
arrays.
Differential Revision: https://reviews.llvm.org/D133598
Jakub Kuderski [Fri, 9 Sep 2022 21:17:50 +0000 (17:17 -0400)]
[mlir][arith] Fix unused variable warning. NFC.
Jordan Rupprecht [Wed, 7 Sep 2022 01:46:40 +0000 (18:46 -0700)]
[test] Use either `127.0.0.1` or `[::1]` to run in ipv6-only environments.
Test for both IPv4 and IPv6 support to determine if either `127.0.0.1` or `[::1]` are appropriate IP addresses to attempt to connect to. In an IPv6-only environment, `127.0.0.1` is not available.
Using `localhost` is problematic because we might not be able to get the same port on each IP flavor, and later try to connect to the wrong thing.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D133393
Peiming Liu [Fri, 9 Sep 2022 18:37:59 +0000 (18:37 +0000)]
[mlir][sparse] Add new option (enable-runtime-library) to sparse compiler pipeline
Add new option (enable-runtime-library) to sparse compiler pipeline, it allows us to decide whether we need to rewrite operations (e.g., concatenate, reshape) within sparsification (when using codegen) or convert them after sparsification (when using runtime library).
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D133597
Jakub Kuderski [Fri, 9 Sep 2022 20:48:00 +0000 (16:48 -0400)]
[mlir][arith] Support wide integer addition emulation
I tested this implementation for all i16 input pairs, when emulating i16
operations with i8 operations.
Reviewed By: antiagainst, Mogball
Differential Revision: https://reviews.llvm.org/D133137
Lei Zhang [Fri, 9 Sep 2022 20:16:36 +0000 (16:16 -0400)]
[mlir][spirv] Add support for fast math mode
This commit introduces a new option to SPIRVConversionOptions
to allow enabling fast math mode. With it, various patterns
would assume no NaN/infinity for floating point values and
avoid guards to check them. This is particularly useful for
CodeGen towards WebGPU environment, where fast math is assumed.
Along the way, fixed the conversion for arith.minf/maxf to
handle the NaN cases properly for Shader cases.
Part of https://github.com/llvm/llvm-project/issues/57584.
Reviewed By: ThomasRaoux, hanchung
Differential Revision: https://reviews.llvm.org/D133599
Joseph Huber [Fri, 9 Sep 2022 20:26:02 +0000 (15:26 -0500)]
[Libomptarget][NFC] Remove unused variable
Joseph Huber [Fri, 9 Sep 2022 18:18:16 +0000 (13:18 -0500)]
[Libomptarget] Fix compiling with asserts using the bitcode library
Sumnmary:
A previous patch introduces an `exports` file which contains all the
symbol names that are not internalized in the bitcode library. This is
done to reduce the size of the bitcode library and only export needed
functions. This export file must contain all the functoins expected to
be called from the device. Since its introduction the `__assert_fail`
function used to be provided but was mistakenly not included. This patch
adds it.
Fixes #57656
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D133594
Lei Zhang [Fri, 9 Sep 2022 19:46:17 +0000 (15:46 -0400)]
[mlir][spirv] NFC: move conversion options out of the type converter
This is a step for adding more options not directly related to type
conversion. Also with this we can now avoid the explicit constructor.
Reviewed By: kuhar
Differential Revision: https://reviews.llvm.org/D133596
Florian Hahn [Fri, 9 Sep 2022 19:25:54 +0000 (20:25 +0100)]
[LV] Remove now dead variable after
2a78890b7b7f08 (NFC).
Nico Weber [Fri, 9 Sep 2022 19:04:04 +0000 (15:04 -0400)]
[gn build] port
4d50a392401c (llvm-exegesis multi-target)
Also ports follow-up
5a425b0b2f855c (I'm getting linker errors without it).
Emilio Cota [Fri, 9 Sep 2022 18:59:46 +0000 (14:59 -0400)]
[mlir] NFC: ConvertAsyncToLLVM: sort deps alphabetically
Hanhan Wang [Fri, 9 Sep 2022 18:56:29 +0000 (11:56 -0700)]
[mlir] Improve bitEnumContains methods.
https://github.com/llvm/llvm-project/commit/
839b436c93604e042f74050cf2adadd75f30e898
changes the behavior. Based on the discussion, we also want to support
"and" behavior. The revision changes it into two functions, bitEnumContainsAny
and bitEnumContainsAll.
Reviewed By: krzysz00, antiagainst
Differential Revision: https://reviews.llvm.org/D133507
Nico Weber [Fri, 9 Sep 2022 18:48:26 +0000 (14:48 -0400)]
[gn build] port
5e0464e38bcb (lld test zstd)
Markus Böck [Fri, 9 Sep 2022 18:13:08 +0000 (20:13 +0200)]
[mlir][CallGraph] Add special call graph node for representing unknown callees
The callgraph currently contains a special external node that is used both as the quasi caller for any externally callable as well as callees that could not be resolved.
This has one negative side effect however, which is the motivation for this patch: It leads to every externally callable which contains a call that could not be resolved (eg. an indirect call), to be put into one giant SCC when iterating over the SCCs of the call graph.
This patch fixes that issue by creating a second special callgraph node that acts as the callee for any unresolved callable. This breaks the cycles produced in the callgraph, yielding proper SCCs for all direct calls.
Differential Revision: https://reviews.llvm.org/D133585
Florian Hahn [Fri, 9 Sep 2022 18:20:12 +0000 (19:20 +0100)]
[VPlan] Move SCEV expansion for pointer induction to VPExpandSCEV (NFC).
Use VPExpandSCEVRecipe to expand the step of pointer inductions. This
cleanup addresses a corresponding FIXME.
It should be NFC, as steps for pointer induction must be constants,
which makes expansion trivial.
Philip Reames [Fri, 9 Sep 2022 18:16:53 +0000 (11:16 -0700)]
Speculative bot fix after
4d50a392
https://lab.llvm.org/buildbot#builders/56/builds/3201 failed with a link error being unable to initialize the disassembler. Oddly, this bot is the *only* bot which appears to have failed in this way. (A bunch sent warnings, but that appears to be spurious due to cmake rebuilds on incremental bots.) Why only polly would witness this is an excercise for the reader - because I have no clue.
Augie Fackler [Wed, 27 Apr 2022 00:33:35 +0000 (20:33 -0400)]
OpenMP: mark allocptr attribute on __kmpc_free_shared
Differential Revision: https://reviews.llvm.org/D124491
Peiming Liu [Fri, 9 Sep 2022 17:29:16 +0000 (17:29 +0000)]
[mlir][sparse] Avoid generating DimOp in conversion passes.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D133592
Xiang Li [Tue, 30 Aug 2022 07:35:25 +0000 (00:35 -0700)]
[HLSL] Preserve vec3 for HLSL.
Preserve vec3 for HLSL by set -fpreserve-vec3-type.
Reviewed By: beanz
Differential Revision: https://reviews.llvm.org/D132913
Jamie Schmeiser [Fri, 9 Sep 2022 17:43:58 +0000 (13:43 -0400)]
Loop names used in reporting can grow very large
Summary:
The code for generating a name for loops for various reporting scenarios
created a name by serializing the loop into a string. This may result in
a very large name for a loop containing many blocks. Use the getName()
function on the loop instead.
Author: Jamie Schmeiser <schmeise@ca.ibm.com>
Reviewed By: Whitney (Whitney Tsang), aeubanks (Arthur Eubanks)
Differential Revision: https://reviews.llvm.org/D133587
Adrian Prantl [Fri, 9 Sep 2022 17:40:41 +0000 (10:40 -0700)]
Temporarily XFAIL libcxx tests.
These tests started failing on green dragon after a configuration change that compiles tests using the just-built libcxx. We may need to force the system libcxx here, or change LLDB to import the std module from the just-built libcxx, too.
Fangrui Song [Fri, 9 Sep 2022 17:30:18 +0000 (10:30 -0700)]
[ELF] Add --compress-debug-sections=zstd
`clang -gz=zstd a.o` passes this option to the linker. This option compresses output
debug sections with zstd and sets ch_type to ELFCOMPRESS_ZSTD. As of today, very
few DWARF consumers recognize ELFCOMPRESS_ZSTD.
Use the llvm::zstd::compress API with level llvm::zstd::DefaultCompression (5),
which we may tune after we have more experience with zstd output.
zstd has built-in parallel compression support (so we don't need to do D117853
for zlib), which is not leveraged yet.
Reviewed By: peter.smith
Differential Revision: https://reviews.llvm.org/D133548
Dylan Fleming [Fri, 9 Sep 2022 17:18:27 +0000 (17:18 +0000)]
[Flang][OpenMP] Add support for logical and reduction in worksharing-loop
Adds support for .and. reductions with logical types.
Because arith.addi doesn'to work with fir.logical<4> types
logical<4> must be converted to i1 prior to the operation.
This means that the pattern matched by integer reductions
(load -> op -> store) will not match logical reductions.
Instead, the pattern being searched for here is
load -> convert(logical<4> to i1) -> op -> convert(i1 to logical<4>) -> store
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D132228
Fangrui Song [Fri, 9 Sep 2022 17:25:37 +0000 (10:25 -0700)]
[ELF] Support ELFCOMPRESS_ZSTD input
so that lld accepts relocatable object files produced by `clang -c -g -gz=zstd`.
We don't want to increase the size of InputSection, so do redundant but cheap
ch_type checks instead.
Differential Revision: https://reviews.llvm.org/D129406
Fangrui Song [Fri, 9 Sep 2022 17:18:46 +0000 (10:18 -0700)]
[ELF] Rename InputSectionBase::uncompress to decompress. NFC
The canonical verb is "decompress" (also used in llvm-objcopy). "uncompressed"
describes the state.
Yitzhak Mandelbaum [Fri, 9 Sep 2022 17:04:24 +0000 (17:04 +0000)]
[NFC] Remove a FIXME fixed by an earlier patch.
Commit
28bd7945eabdbde2b1fc071ab2f9b78e6e754a1a incidentally fixed the
associated FIXME, but didn't delete it.
Differential Revision: https://reviews.llvm.org/D133588
Mingming Liu [Tue, 21 Jun 2022 20:38:30 +0000 (13:38 -0700)]
[AArch64][CostModel] Detects that {extract,insert}-element at lane 0 has the same cost as the other lane for vector instructions in the IR.
Currently, {extract,insert}-element has zero cost at lane 0 [1]. However, there is a cost (by fmov instruction [2], or ext/ins instruction) to move values from SIMD registers to GPR registers, when the element is used explicitly as integers.
See https://godbolt.org/z/faPE1nTn8, when fmov is generated for d* register -> x* register conversion.
Implementation-wise, add a private method `AArch64TTIImpl::getVectorInstrCostHelper` as a helper function. This way, instruction-based method could share the core logic (e.g.,
returning zero cost if type is legalized to scalar).
[1] https://github.com/llvm/llvm-project/blob/
2cf320d41ed708679e01eeeb93f58d6c5c88ba7a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp#L1853
[2] https://github.com/llvm/llvm-project/blob/
2cf320d41ed708679e01eeeb93f58d6c5c88ba7a/llvm/lib/Target/AArch64/AArch64InstrInfo.td#L8150-L8157
Differential Revision: https://reviews.llvm.org/D128302
Philip Reames [Fri, 9 Sep 2022 15:30:50 +0000 (08:30 -0700)]
[llvm-exegesis] Cross compile all enabled targets
llvm-exegesis is rather odd in the LLVM ecosystem in code is selectively compiled based on the native machine. LLVM is cross compiler by default, so this stands out as odd. It's also less then helpful when working on code for a target other than your native dev environment.
This change only changes the build setup. A later change will enable -march support to allow actual benchmarking under e.g. simulators in a cross compilation environment.
Differential Revision: https://reviews.llvm.org/D133150
Thomas Raoux [Fri, 9 Sep 2022 00:34:47 +0000 (00:34 +0000)]
[mlir][vector] Fix bug in transfer op flattening
The logic to figure out if a transfer op can be flattened wasn't
considering the shape being loaded therefore it was incorrectly assuming
some transfer ops were reading contigous data.
Differential Revision: https://reviews.llvm.org/D133544
Steven Wu [Fri, 9 Sep 2022 15:56:53 +0000 (08:56 -0700)]
Frontend: Respect -working-directory when checking if output files can be written
Call `FixupRelativePath` when opening output files to ensure that
`-working-directory` is used when checking up front for write failures,
not just when finalizing the files at the end. This also moves the
temporary file into the same directory as the output file.
Reviewed By: benlangmuir
Differential Revision: https://reviews.llvm.org/D95497
Tyker [Fri, 9 Sep 2022 15:26:06 +0000 (08:26 -0700)]
[MLIR] Improve interaction of TypedValue with BlockAndValueMapping
Blue Gaston [Fri, 9 Sep 2022 15:53:05 +0000 (08:53 -0700)]
[ASAN][DARWIN] Remove getpwnam(NULL) test for undefined behavior
Reverting a patch that was added to test for getpwnam(NULL) -- it was noted at the time the behavior might have been a bug, however the patch was added for binary compatibility. Because of the change in the expected behavior, we are reverting this commit, as the test added is no longer passing.
Update: Rather than reverting the original commit, updating this to only remove the unnecessary test.
Original Patch: https://reviews.llvm.org/D40052
rdar://
98592334
zhongyunde [Fri, 9 Sep 2022 15:44:58 +0000 (23:44 +0800)]
[AArch64][CodeGen]Fold the mov and lsl into ubfiz
Fix the issue exposed by D132322, depand on D132939
Reviewed By: efriedma, paulwalker-arm
Differential Revision: https://reviews.llvm.org/D132325
Sanjay Patel [Fri, 9 Sep 2022 15:46:50 +0000 (11:46 -0400)]
[InstCombine] move/adjust comments about demanded bits; NFC
The code has been moved/copied around, but the comments were not updated to match.
Slava Zakharin [Thu, 8 Sep 2022 17:13:45 +0000 (10:13 -0700)]
[flang] Compute type allocation size based on the actual target representation.
This change makes sure that we compute the element size and the byte stride
based on the target representation of the element type.
For example, when REAL*10 is mapped to x86_fp80 each element occupies
16 bytes rather than 10 because of the padding.
Note that the size computation method used here actually returns
the distance between two adjacent element of the *same* type in memory
(which is equivalent to llvm::DataLayout::getTypeAllocSize()).
It does not return the number of bytes that may be overwritten
by storing a value of the specified type (e.g. what can be computed
via llvm::DataLayout::getTypeStoreSize(), but not available in
mlir::DataLayout).
Differential Revision: https://reviews.llvm.org/D133508