platform/upstream/llvm.git
2 years ago[Libomptarget] Allow static assert to work on 32-bit systems
Joseph Huber [Tue, 12 Jul 2022 12:02:17 +0000 (08:02 -0400)]
[Libomptarget] Allow static assert to work on 32-bit systems

Summary:
We use a static assert to make sure that someone doesn't change the size
of an argument struct without properly updating all the other logic.
This originally only checked the size on a 64-bit system with 8-byte
pointers, causing builds on 32-bit systems to fail. This patch allows
either pointer size to work.

Fixes #56486

2 years ago[NFC][flang][OpenMP] Add comment for handling the data race problem in copyin clause
Peixin Qiao [Tue, 12 Jul 2022 11:54:24 +0000 (19:54 +0800)]
[NFC][flang][OpenMP] Add comment for handling the data race problem in copyin clause

The reference and description is missed before.

Reviewed By: kiranchandramohan

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

2 years ago[LLDB] Fix NativePDB/local-variables.cpp for AArch64/Windows
Muhammad Omair Javaid [Tue, 12 Jul 2022 11:24:08 +0000 (16:24 +0500)]
[LLDB] Fix NativePDB/local-variables.cpp for AArch64/Windows

This patch fixes NativePDB/local-variables.cpp test for AArch64 Windows.
There are two changes:
1) Replace function breakpoint with line breakpoint required due to pr56288
2) Adjust "target modules dump ast" test as the output was slightly different
on AArch64/Windows.

2 years ago[Mem2Reg] Consistently preserve nonnull assume for uninit load
Nikita Popov [Tue, 12 Jul 2022 10:38:52 +0000 (12:38 +0200)]
[Mem2Reg] Consistently preserve nonnull assume for uninit load

When performing a !nonnull load from uninitialized memory, we
should preserve the nonnull assume just like in all other cases.
We already do this correctly in the generic mem2reg code, but
don't handle this case when using the optimized single-block
implementation.

Make sure that the optimized implementation exhibits the same
behavior as the generic implementation.

2 years agoUndeprecate ATOMIC_FLAG_INIT in C++
Aaron Ballman [Tue, 12 Jul 2022 10:48:31 +0000 (06:48 -0400)]
Undeprecate ATOMIC_FLAG_INIT in C++

C++20 deprecated ATOMIC_FLAG_INIT thinking it was deprecated in C when it
wasn't. It is expected to be undeprecated in C++23 as part of LWG3659
(https://wg21.link/LWG3659), which is currently Tentatively Ready.

This handles the case where the user includes <stdatomic.h> in C++ code in a
freestanding compile mode. The corollary libc++ changes are in
1544d1f9fdb115782202d72ad200c3f93b2c4f5a.

2 years ago[Mem2Reg] Add test for uninitialized nonnull loads (NFC)
Nikita Popov [Tue, 12 Jul 2022 10:31:31 +0000 (12:31 +0200)]
[Mem2Reg] Add test for uninitialized nonnull loads (NFC)

This shows a difference in behavior between the single block and
the multi block case.

2 years agoFixing build bot failure due to python-pip unavailability.
Vignesh Balasubramanian [Tue, 12 Jul 2022 10:18:51 +0000 (15:48 +0530)]
Fixing build bot failure due to python-pip unavailability.

commit: 51d3f421f48f7c888c37a13be049a4ca8b61436e
failed due to missing python-pip om machine.
Now the ompd gdb-plugin code will be skipped with a warning
if pip is not available in the machine.

2 years ago[lldb] add SBSection.alignment to python bindings
David M. Lary [Tue, 12 Jul 2022 09:51:33 +0000 (11:51 +0200)]
[lldb] add SBSection.alignment to python bindings

This commit adds SBSection.GetAlignment(), and SBSection.alignment as a python property to lldb.

Reviewed By: clayborg, JDevlieghere, labath

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

2 years agoRevert "[lldb] add SBSection.alignment to python bindings"
Pavel Labath [Tue, 12 Jul 2022 10:17:29 +0000 (12:17 +0200)]
Revert "[lldb] add SBSection.alignment to python bindings"

The patch didn't get proper attribution. Will recommit.

This reverts commit 4135abca897d1b945193f767cbf42a200b55bbdc.

2 years ago[lldb] add SBSection.alignment to python bindings
Pavel Labath [Tue, 12 Jul 2022 09:51:33 +0000 (11:51 +0200)]
[lldb] add SBSection.alignment to python bindings

This commit adds SBSection.GetAlignment(), and SBSection.alignment as a python property to lldb.

Reviewed By: clayborg, JDevlieghere, labath

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

2 years ago[AArch64] Fix subtarget features for tests. NFC
David Green [Tue, 12 Jul 2022 10:03:40 +0000 (11:03 +0100)]
[AArch64] Fix subtarget features for tests. NFC

These tests were using instructions that require feature predicates that
were not enabled.

2 years ago[gn build] Port 73ebcabff2d9
LLVM GN Syncbot [Tue, 12 Jul 2022 09:49:13 +0000 (09:49 +0000)]
[gn build] Port 73ebcabff2d9

2 years ago[libc++][ranges][NFC] Implement the repetitive parts of the remaining range algorithms:
Konstantin Varlamov [Tue, 12 Jul 2022 09:48:29 +0000 (02:48 -0700)]
[libc++][ranges][NFC] Implement the repetitive parts of the remaining range algorithms:

- create the headers (but not include them from `<algorithm>`);
- define the niebloid and its member functions with the right signatures
  (as no-ops);
- make sure all the right headers are included that are required by each
  algorithm's signature;
- update `CMakeLists.txt` and the module map;
- create the test files with the appropriate synopses.

The synopsis in `<algorithm>` is deliberately not updated because that
could be taken as a readiness signal. The new headers aren't included
from `<algorithm>` for the same reason.

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

2 years ago[InlineAsm] Improve error messages for invalid constraint strings
Nikita Popov [Tue, 12 Jul 2022 09:20:49 +0000 (11:20 +0200)]
[InlineAsm] Improve error messages for invalid constraint strings

InlineAsm constraint string verification can fail for many reasons,
but used to always print a generic "invalid type for inline asm
constraint string" message -- which is especially confusing if
the actual error is unrelated to the type, e.g. a failure to parse
the constraint string.

Change the verify API to return an Error with a more specific
error message, and print that in the IR parser.

2 years ago[LLDB][ClangExpression] Remove unused StructVars::m_object_pointer_type
Michael Buch [Fri, 8 Jul 2022 12:19:27 +0000 (13:19 +0100)]
[LLDB][ClangExpression] Remove unused StructVars::m_object_pointer_type

This member variable was removed a while ago in
443427357f539f5ac97e664a53aa9e50788abce9. It was previously used in
materialization code paths that have since been removed. Nowadays,
`m_object_pointer_type` gets set but not used anywhere.

This patch simply removes all remaining instances of it and any
supporting code.

**Testing**

* API tests pass

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

2 years ago[mlir] assorted fixes in transform dialect documentation
Alex Zinenko [Tue, 12 Jul 2022 09:17:36 +0000 (09:17 +0000)]
[mlir] assorted fixes in transform dialect documentation

Various typos and formatting fixes that make the generated documentation
hard to follow.

2 years ago[LLDB][DataFormatter] Add data formatter for libcxx std::unordered_map iterator
Michael Buch [Fri, 8 Jul 2022 09:47:04 +0000 (10:47 +0100)]
[LLDB][DataFormatter] Add data formatter for libcxx std::unordered_map iterator

This patch adds a formatter for libcxx's `std::unordered_map` iterators.
The implementation follows a similar appraoch to the `std::map` iterator
formatter. I was hesistant about coupling the two into a common
implementation since the libcxx layouts might change for one of the
the containers but not the other.

All `std::unordered_map` iterators are covered with this patch:
1. const/non-const key/value iterators
2. const/non-const bucket iterators

Note that, we currently don't have a formatter for `std::unordered_map`.
This patch doesn't change that, we merely add support for its iterators,
because that's what Xcode users requested. One can still see contents
of `std::unordered_map`, whereas with iterators it's less ergonomic.

**Testing**

* Added API test

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

2 years ago[OpenMP][OMPD] GDB plugin code to leverage libompd to provide debugging
Vignesh Balasubramanian [Tue, 12 Jul 2022 08:32:50 +0000 (14:02 +0530)]
[OpenMP][OMPD] GDB plugin code to leverage libompd to provide debugging
support for OpenMP programs.

This is 5th of 6 patches started from https://reviews.llvm.org/D100181
This plugin code, when loaded in gdb, adds a few commands like
ompd icv, ompd bt, ompd parallel.
These commands create an interface for GDB to read the OpenMP
runtime through libompd.

Reviewed By: @dreachem
Differential Revision: https://reviews.llvm.org/D100185

2 years ago[mlir] Add ReplicateOp to the Transform dialect
Alex Zinenko [Thu, 7 Jul 2022 13:55:23 +0000 (15:55 +0200)]
[mlir] Add ReplicateOp to the Transform dialect

This handle manipulation operation allows one to define a new handle that is
associated with a the same payload IR operations N times, where N can be driven
by the size of payload IR operation list associated with another handle. This
can be seen as a sort of broadcast that can be used to ensure the lists
associated with two handles have equal numbers of payload IR ops as expected by
many pairwise transform operations.

Introduce an additional "expensive" check that guards against consuming a
handle that is assocaited with the same payload IR operation more than once as
this is likely to lead to double-free or other undesired effects.

Depends On D129110

Reviewed By: nicolasvasilache

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

2 years ago[libc++][ranges][NFC] Consolidate some repetitive range algorithm tests:
Konstantin Varlamov [Tue, 12 Jul 2022 09:06:22 +0000 (02:06 -0700)]
[libc++][ranges][NFC] Consolidate some repetitive range algorithm tests:

- checking that the algorithm supports predicates returning
  a non-boolean type that's implicitly convertible to `bool`;
- checking that predicates and/or projections are invoked using
  `std::invoke`.

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

2 years ago[MachineVerifier] Try harder to verify LiveStacks
Jay Foad [Wed, 6 Jul 2022 13:00:32 +0000 (14:00 +0100)]
[MachineVerifier] Try harder to verify LiveStacks

Verify the LiveStacks analysis after a pass that claims to preserve it,
even if there are no further passes (apart from the verifier itself)
that would use the analysis.

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

2 years ago[mlir][Math] Support fold SqrtOp with constant dense.
jacquesguan [Mon, 11 Jul 2022 03:03:48 +0000 (11:03 +0800)]
[mlir][Math] Support fold SqrtOp with constant dense.

This patch uses constFoldUnaryOpConditional to replace current folder in order to support constant dense.

Reviewed By: rriddle

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

2 years ago[SDAG] Don't duplicate ParseConstraints() implementation SDAGBuilder (NFCI)
Nikita Popov [Mon, 11 Jul 2022 15:17:50 +0000 (17:17 +0200)]
[SDAG] Don't duplicate ParseConstraints() implementation SDAGBuilder (NFCI)

visitInlineAsm() in SDAGBuilder was duplicating a lot of the code
in ParseConstraints(), in particular all the logic to determine the
operand value and constraint VT.

Rely on the data computed by ParseConstraints() instead, and update
its ConstraintVT implementation to match getCallOperandValEVT()
more precisely.

2 years ago[AArch64][SVE] Ensure PTEST operands have type nxv16i1
Rosie Sumpter [Thu, 30 Jun 2022 11:15:00 +0000 (12:15 +0100)]
[AArch64][SVE] Ensure PTEST operands have type nxv16i1

Currently any legal predicate types will be pattern-matched when
creating a PTEST instruction. This could be a problem in future since
PTEST always uses the .B specifier for the operand, but it is not
always guaranteed that the extra lanes of unpacked types (e.g. nxv4i1)
are zero. This patch ensures the operands of PTEST are type nxv16i1,
where the undef lanes are set to zero.

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

2 years ago[MCA] Support multiple comma-separated -mattr features
Cullen Rhodes [Tue, 12 Jul 2022 07:55:55 +0000 (07:55 +0000)]
[MCA] Support multiple comma-separated -mattr features

Reviewed By: myhsu

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

2 years ago[BOLT][AArch64] Use all supported CPU features on AArch64
Denis Revunov [Tue, 12 Jul 2022 07:31:18 +0000 (03:31 -0400)]
[BOLT][AArch64] Use all supported CPU features on AArch64

Since we now have +all feature for AArch64 disassembler, we can use it
in BOLT and allow it to disassemble all ARM instructions supported by LLVM.

Reviewed by: rafauler

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

2 years ago[lldb/libc++] Simplify the libc++ string formatter
Pavel Labath [Mon, 11 Jul 2022 14:56:04 +0000 (16:56 +0200)]
[lldb/libc++] Simplify the libc++ string formatter

Precise string layout has changed a lot recently, but a long of these
changes did not have any effect on the usages of its fields -- e.g.
introduction/removal of an anonymous struct or union does not change the
way one can access the field in C++. Our name-based variable lookup
rules (deliberately) copy the C++ semantics, which means these changes
would have been invisible to the them, if only we were using name-based
lookup.

This patch replaces the opaque child index accesses with name-based
lookups, which allows us to greatly simplify the data formatter code.
The formatter continues to support all the string layouts that it
previously supported.

It is unclear why the formatter was not using this approach from the
beginning. I would speculate that the original version was working
around some (now fixed) issue with anonymous members or base classes,
and the subsequent revisions stuck with that approach out of inertia.

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

2 years agoFix build errors.
Manuel Klimek [Tue, 12 Jul 2022 07:42:34 +0000 (07:42 +0000)]
Fix build errors.

2 years ago[libc][utils] Add more methods to StringView
Guillaume Chatelet [Thu, 30 Jun 2022 13:04:57 +0000 (13:04 +0000)]
[libc][utils] Add more methods to StringView

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

2 years ago[IR] Remove support for float binop constant expressions
Nikita Popov [Fri, 8 Jul 2022 14:54:49 +0000 (16:54 +0200)]
[IR] Remove support for float binop constant expressions

As part of https://discourse.llvm.org/t/rfc-remove-most-constant-expressions/63179,
this removes support for the floating-point binop constant expressions
fadd, fsub, fmul, fdiv and frem.

As part of this change, the C APIs LLVMConstFAdd, LLVMConstFSub,
LLVMConstFMul, LLVMConstFDiv and LLVMConstFRem are removed.
The LLVMBuild APIs should be used instead.

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

2 years ago[mlir] XFAIL IR/elements-attr-interface.mlir on SystemZ
Ulrich Weigand [Tue, 12 Jul 2022 07:37:19 +0000 (09:37 +0200)]
[mlir] XFAIL IR/elements-attr-interface.mlir on SystemZ

This is still failing as endianness of binary blob external
resources is still not handled correctly.

2 years agoRead/write external resource alignment tag in little-endian
Ulrich Weigand [Tue, 12 Jul 2022 07:29:07 +0000 (09:29 +0200)]
Read/write external resource alignment tag in little-endian

https://reviews.llvm.org/D126446 added support for encoding
binary blobs in MLIR assembly.  To enable cross-architecture
compatibility, these need to be encoded in little-endian format.

This patch is a first step in that direction by reading and
writing the alignment tag that those blobs are prefixed by
in little-endian format.  This fixes assertion failures in
several test cases on big-endian platforms.

The actual content of the blob is not yet handled here.

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

2 years ago[flang] Merge GEPs in substring fir.embox codegen
Jean Perier [Tue, 12 Jul 2022 07:26:16 +0000 (09:26 +0200)]
[flang] Merge GEPs in substring fir.embox codegen

When computing the base addresses of an array slice to make a
descriptor, codegen generated two LLVM GEPs. The first to compute
the address of the base character element, and a second one to
compute the substring base inside that element.
The previous code did not care about getting the result of the first
GEP right: it used the base array LLVM type as the result type.
This used to work when opaque pointer were not enabled (the actual GEP
result type was probably applied in some later pass). But with opaque
pointers, the second GEP ends-up computing an offset of len*<LLVM array
type> instead of len*<character width>. A previous attempt to fix the
issue was done in D129079, but it does not cover the cases where the
array slice contains subcomponents before the substring
(e.g: array(:)%char_field(5:10)).

This patch fix the issue by computing the actual GEP result type in
codegen. There is also enough knowledge now so that a single GEP can be
generated instead of two.

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

2 years ago[flang] move getKindMapping() calls out of FIROpBuilder ctor calls
Jean Perier [Tue, 12 Jul 2022 07:22:13 +0000 (09:22 +0200)]
[flang] move getKindMapping() calls out of FIROpBuilder ctor calls

FirOpBuilder takes a fir::KindMapping reference. When the getKindMapping()
call is made inside the ctor call, the lifetime of this reference may
be as short as the ctor call (at least with when building flang in
release mode with clang 8). This can cause segfaults when later using
the FirOpBuilder.

Ensure the kindMap passed to the FirOpBuilder ctor is the same as the
FirOpBuilder.

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

2 years ago[gn build] Port d6d0dc1f4537
LLVM GN Syncbot [Tue, 12 Jul 2022 07:12:21 +0000 (07:12 +0000)]
[gn build] Port d6d0dc1f4537

2 years ago[clang-format] Add MacroUnexpander.
Manuel Klimek [Fri, 25 Sep 2020 12:25:08 +0000 (14:25 +0200)]
[clang-format] Add MacroUnexpander.

MacroUnexpander applies the structural formatting of expanded lines into
UnwrappedLines to the corresponding unexpanded macro calls, resulting in
UnwrappedLines for the macro calls the user typed.

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

2 years agoFix linalg.dot over boolean tensors.
Johannes Reifferscheid [Thu, 7 Jul 2022 18:36:41 +0000 (20:36 +0200)]
Fix linalg.dot over boolean tensors.

dot is currently miscompiled for booleans (uses add instead of or).

Reviewed By: bkramer

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

2 years ago[RISCV] Use X0 in place of VLMaxSentinel in lowering.
Craig Topper [Tue, 12 Jul 2022 06:28:57 +0000 (23:28 -0700)]
[RISCV] Use X0 in place of VLMaxSentinel in lowering.

I thought I had already fixed all of these, but I guess I missed one.

2 years agoUpdate the Windows packaging script.
Carlos Alberto Enciso [Tue, 12 Jul 2022 05:37:29 +0000 (06:37 +0100)]
Update the Windows packaging script.

As discussed on:
  https://discourse.llvm.org/t/build-llvm-release-bat-script-options/63146/6

Latest 7-zip versions (21.x) require administrator permissions
to create symbolic links.

Check if any of the following conditions is true:
- Version of 7-zip is 20.x or older
- Script is running with administrator permissions

Reviewed By: hans, thieta

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

2 years ago[libc++] Undeprecate ATOMIC_FLAG_INIT (LWG3659)
Raul Tambre [Fri, 8 Jul 2022 16:38:22 +0000 (19:38 +0300)]
[libc++] Undeprecate ATOMIC_FLAG_INIT (LWG3659)

According to @aaron.ballman this was marked Tentatively Ready as of 2022-07-07.
D129362 implemented the C counterpart.

Reviewed By: ldionne, #libc, Mordante

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

2 years ago[mlir] Add support for regex within `expected-*` diagnostics
River Riddle [Fri, 8 Jul 2022 02:58:51 +0000 (19:58 -0700)]
[mlir] Add support for regex within `expected-*` diagnostics

This can be enabled by using a `-re` suffix when defining the expected line,
e.g. `expected-error-re`. This support is similar to what clang provides in its "expected"
diagnostic framework(e.g. the `-re` is also the same). The regex definitions themselves are
similar to  FileCheck in that regex blocks are specified within `{{` `}}` blocks.

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

2 years ago[X86] Add test case for interleave shuffle for sub/add
Luo, Yuanke [Tue, 12 Jul 2022 03:43:58 +0000 (11:43 +0800)]
[X86] Add test case for interleave shuffle for sub/add

2 years ago[flang] Use has_value instead of hasValue (NFC)
Kazu Hirata [Tue, 12 Jul 2022 03:41:12 +0000 (20:41 -0700)]
[flang] Use has_value instead of hasValue (NFC)

This patch replaces hasValue with has_value in an effort to deprecate
Optional<X>::hasValue.

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

2 years ago[IPO] Remove addLTOOptimizationPasses and addLateLTOOptimizationPasses (NFC)
Kazu Hirata [Tue, 12 Jul 2022 03:15:24 +0000 (20:15 -0700)]
[IPO] Remove addLTOOptimizationPasses and addLateLTOOptimizationPasses (NFC)

The last uses were removed on Apr 15, 2022 in commit
2e6ac54cf48aa04f7b05c382c33135b16d3f01ea.

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

2 years ago[X86] Support -mstack-protector-guard-symbol
Xiang1 Zhang [Tue, 12 Jul 2022 02:16:24 +0000 (10:16 +0800)]
[X86] Support -mstack-protector-guard-symbol

Reviewed By: nickdesaulniers

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

2 years agoRevert "[X86] Support -mstack-protector-guard-symbol"
Xiang1 Zhang [Tue, 12 Jul 2022 02:14:32 +0000 (10:14 +0800)]
Revert "[X86] Support -mstack-protector-guard-symbol"

This reverts commit efbaad1c4a526e91b034e56386e98a9268cd87b2.
due to miss adding review info.

2 years ago[X86] Support -mstack-protector-guard-symbol
Xiang1 Zhang [Fri, 8 Jul 2022 02:14:49 +0000 (10:14 +0800)]
[X86] Support -mstack-protector-guard-symbol

2 years agoAdd missing include for std::size_t
David Blaikie [Tue, 12 Jul 2022 01:40:57 +0000 (01:40 +0000)]
Add missing include for std::size_t

2 years ago[Clang] Fix tests failing due to invalid syntax for host triple
Joseph Huber [Tue, 12 Jul 2022 01:30:12 +0000 (21:30 -0400)]
[Clang] Fix tests failing due to invalid syntax for host triple

Summary:
We use the `--host-triple=` argument to manually set the target triple.
This was changed to include the `=` previously but was not included in
these additional test cases, causing it for fail on some unsupported
systems.

2 years agoUpdate Optional gdb pretty printer for 556bcc782101804b2d168a6868ddf06b963a4878
David Blaikie [Tue, 12 Jul 2022 01:10:31 +0000 (01:10 +0000)]
Update Optional gdb pretty printer for 556bcc782101804b2d168a6868ddf06b963a4878

2 years ago[BOLT] Restrict execution of tests that fail on Windows
Rafael Auler [Tue, 12 Jul 2022 00:58:32 +0000 (17:58 -0700)]
[BOLT] Restrict execution of tests that fail on Windows

Turn off execution of tests that use UNIX-specific features.

Reviewed By: Amir

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

2 years ago[DependencyScanningTool.cpp] Use `using namespace` instead of wrapping the `.cpp...
Argyrios Kyrtzidis [Tue, 12 Jul 2022 00:42:17 +0000 (17:42 -0700)]
[DependencyScanningTool.cpp] Use `using namespace` instead of wrapping the `.cpp` file contents in namespaces, NFC

This makes the file consistent with the coding style of the rest of LLVM.

2 years ago[BOLT] Increase coverage of shrink wrapping [5/5]
Rafael Auler [Sat, 21 May 2022 03:10:22 +0000 (20:10 -0700)]
[BOLT] Increase coverage of shrink wrapping [5/5]

Add -experimental-shrink-wrapping flag to control when we
want to move callee-saved registers even when addresses of the stack
frame are captured and used in pointer arithmetic, making it more
challenging to do alias analysis to prove that we do not access
optimized stack positions. This alias analysis is not yet implemented,
hence, it is experimental. In practice, though, no compiler would emit
code to do pointer arithmetic to access a saved callee-saved register
unless there is a memory bug or we are failing to identify a
callee-saved reg, so I'm not sure how useful it would be to formally
prove that.

Reviewed By: Amir

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

2 years ago[BOLT] Increase coverage of shrink wrapping [4/5]
Rafael Auler [Wed, 9 Mar 2022 18:46:15 +0000 (10:46 -0800)]
[BOLT] Increase coverage of shrink wrapping [4/5]

Change shrink-wrapping to try a priority list of save
positions, instead of trying the best one and giving up if it doesn't
work. This also increases coverage.

Reviewed By: Amir

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

2 years ago[BOLT] Increase coverage of shrink wrapping [3/5]
Rafael Auler [Sat, 21 May 2022 02:43:07 +0000 (19:43 -0700)]
[BOLT] Increase coverage of shrink wrapping [3/5]

Add the option to run -equalize-bb-counts before shrink
wrapping to avoid unnecessarily optimizing some CFGs where profile is
inaccurate but we can prove two blocks have the same frequency.

Reviewed By: Amir

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

2 years ago[BOLT] Increase coverage of shrink wrapping [2/5]
Rafael Auler [Sat, 21 May 2022 02:31:07 +0000 (19:31 -0700)]
[BOLT] Increase coverage of shrink wrapping [2/5]

Refactor isStackAccess() to reflect updates by D126116. Now we only
handle simple stack accesses and delegate the rest of the cases to
getMemDataSize.

Reviewed By: Amir

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

2 years ago[BOLT] Increase coverage of shrink wrapping [1/5]
Rafael Auler [Wed, 9 Mar 2022 18:46:15 +0000 (10:46 -0800)]
[BOLT] Increase coverage of shrink wrapping [1/5]

Change how function score is calculated and provide more
detailed statistics when reporting back frame optimizer and shrink
wrapping results. In this new statistics, we provide dynamic coverage
numbers. The main metric for shrink wrapping is the number of executed
stores that were saved because of shrink wrapping (push instructions
that were either entirely moved away from the hot block or converted
to a stack adjustment instruction). There is still a number of reduced
load instructions (pop) that we are not counting at the moment. Also
update alloc combiner to report dynamic numbers, as well as frame
optimizer.

For debugging purposes, we also include a list of top 10 functions
optimized by shrink wrapping. These changes are aimed at better
understanding the impact of shrink wrapping in a given binary.

We also remove an assertion in dataflow analysis to do not choke on
empty functions (which makes no sense).

Reviewed By: Amir

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

2 years ago[gn build] (manually) port ce233e714665
Nico Weber [Tue, 12 Jul 2022 00:14:26 +0000 (20:14 -0400)]
[gn build] (manually) port ce233e714665

2 years ago[libc] clean up printf error codes
Michael Jones [Tue, 28 Jun 2022 22:08:00 +0000 (15:08 -0700)]
[libc] clean up printf error codes

Move the constants for printf's return values into core_structs, and
update the converters to match.

Reviewed By: lntue

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

2 years ago[lldb] Add support for escaping fish arguments
Raphael Isemann [Mon, 11 Jul 2022 23:41:44 +0000 (16:41 -0700)]
[lldb] Add support for escaping fish arguments

LLDB supports having globbing regexes in the process launch arguments
that will be resolved using the user's shell. This requires that we pass
the launch args to the shell and then read back the expanded arguments
using LLDB's argdumper utility.

As the shell will not just expand the globbing regexes but all special
characters, we need to escape all non-globbing charcters such as $, &,
<, >, etc. as those otherwise are interpreted and removed in the step
where we expand the globbing characters. Also because the special
characters are shell-specific, LLDB needs to maintain a list of all the
characters that need to be escaped for each specific shell.

This patch adds the list of special characters that need to be escaped
for fish. Without this patch on systems where fish is the user's shell
having any of these special characters in your arguments or path to
the binary will cause the process launch to fail. E.g., `lldb -- ./calc
1<2` is failing without this patch. The same happens if the absolute
path to calc is in a directory that contains for example parentheses
or other special characters.

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

2 years ago[lldb] Add a test to prefer exact triple matches in platform selection
Jonas Devlieghere [Mon, 11 Jul 2022 23:29:55 +0000 (16:29 -0700)]
[lldb] Add a test to prefer exact triple matches in platform selection

Add a test that ensures we always prioritize exact triple matches when
creating platforms. This is a regression test for a (now resolved) bug
that that resulted in the remote tvOS platform being selected for a tvOS
simulator binary because the ArchSpecs are compatible.

2 years ago[GlobalOpt] Add test that requires splitting up global into many.
Florian Hahn [Mon, 11 Jul 2022 23:34:07 +0000 (16:34 -0700)]
[GlobalOpt] Add test that requires splitting up global into many.

Add test that hits the limit introduced in 4796b4ae7bccc7.

2 years ago[LV] Move VPBlendRecipe::execute to VPlanRecipes.cpp (NFC).
Florian Hahn [Mon, 11 Jul 2022 23:01:04 +0000 (16:01 -0700)]
[LV] Move VPBlendRecipe::execute to VPlanRecipes.cpp (NFC).

2 years agoFix build on Windows
Alex Brachet [Mon, 11 Jul 2022 22:46:06 +0000 (22:46 +0000)]
Fix build on Windows

It seems like the `sed` on Windows is not particularly
smart. It's not actually needed in this place, so I've
removed it's usage and just created an invalid yaml
another way.

2 years ago[RISCV] Use MVT for the argument to getMaskTypeFor. NFC
Craig Topper [Mon, 11 Jul 2022 22:06:00 +0000 (15:06 -0700)]
[RISCV] Use MVT for the argument to getMaskTypeFor. NFC

Only one caller didn't already have an MVT and that was easy to
fix. Since the return type is MVT and it uses MVT::getVectorVT,
taking an MVT as input makes the most sense.

2 years ago[mlir] Register linalg external TilingInterface models in InitAllDialects
Christopher Bate [Thu, 7 Jul 2022 22:50:53 +0000 (16:50 -0600)]
[mlir] Register linalg external TilingInterface models in InitAllDialects

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

2 years ago[lldb] Use the just-built libc++ for testing the LLDB data formatters
Jonas Devlieghere [Mon, 11 Jul 2022 21:03:53 +0000 (14:03 -0700)]
[lldb] Use the just-built libc++ for testing the LLDB data formatters

Make sure we use the libc++ from the build dir. Currently, by passing
-stdlib=libc++, we might pick up the system libc++. This change ensures
that if LLVM_LIBS_DIR is set, we try to use the libc++ from there.

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

2 years ago[mlir][sparse] implement sparse2sparse reshaping (expand/collapse)
Aart Bik [Sat, 9 Jul 2022 04:12:25 +0000 (21:12 -0700)]
[mlir][sparse] implement sparse2sparse reshaping (expand/collapse)

A previous revision implemented expand/collapse reshaping between
dense and sparse tensors for sparse2dense and dense2sparse since those
could use the "cheap" view reshape on the already materialized
dense tensor (at either the input or output side), and do some
reshuffling from or to sparse. The dense2dense case, as always,
is handled with a "cheap" view change.

This revision implements the sparse2sparse cases. Lacking any "view"
support on sparse tensors this operation necessarily has to perform
data reshuffling on both ends.

Tracker for improving this:
https://github.com/llvm/llvm-project/issues/56477

Reviewed By: bixia

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

2 years ago[Driver] Don't use frame pointer on Fuchsia when optimizations are enabled
Petr Hosek [Mon, 11 Jul 2022 20:09:51 +0000 (20:09 +0000)]
[Driver] Don't use frame pointer on Fuchsia when optimizations are enabled

This matches the standard behavior on other platforms.

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

2 years agoFix build on Windows
Alex Brachet [Mon, 11 Jul 2022 21:44:28 +0000 (21:44 +0000)]
Fix build on Windows

Error message is not capitalized on Windows

2 years ago[COFF] Add vfsoverlay flag
Alex Brachet [Mon, 11 Jul 2022 21:31:01 +0000 (21:31 +0000)]
[COFF] Add vfsoverlay flag

This patch adds a new flag vfsoverlay similar to clang’s
ivfsoverlay flag. This is helpful when compiling on case
sensitive file systems when cross compiling to Windows.
Particularly when compiling third party code containing
\#pragma comment(“linker”, “/defaultlib:...”) which
can’t be easily changed.

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

2 years ago[libc] Add imaxabs
Alex Brachet [Mon, 11 Jul 2022 21:28:21 +0000 (21:28 +0000)]
[libc] Add imaxabs

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

2 years agoRevert "[C++20][Modules] Update handling of implicit inlines [P1779R3]"
Jonas Devlieghere [Mon, 11 Jul 2022 20:58:52 +0000 (13:58 -0700)]
Revert "[C++20][Modules] Update handling of implicit inlines [P1779R3]"

This reverts commit ef0fa9f0ef3e as a follow up to b19d3ee7120b which
reverted commit ac507102d258. See https://reviews.llvm.org/D126189 for
more details.

2 years ago[SelectionDAG] Simplify how we drop poison flags in SimplifyDemandedBits.
Craig Topper [Mon, 11 Jul 2022 20:31:07 +0000 (13:31 -0700)]
[SelectionDAG] Simplify how we drop poison flags in SimplifyDemandedBits.

As far as I can tell what was happening in the original code is
that the getNode call receives the same operands as the original
node with different SDNodeFlags. The logic inside getNode detects
that the node already exists and intersects the flags into the
existing node and returns it. This results in Op and NewOp for the
TLO.CombineTo call always being the same node.

We may have already called CombineTo as part of the recursive handling.
A second call to CombineTo as we unwind the recursion overwrites
the previous CombineTo. I think this means any time we updated the
poison flags that was the only change that ends up getting made
and we relied on DAGCombiner to revisit and call SimplifyDemandedBits
again. The second time the poison flags wouldn't need to be dropped
and we would keep the CombineTo call from further down the recursion.

We can instead call setFlags to drop the poison flags and remove the
call to TLO.CombineTo. This way we keep the CombineTo from deeper in
the recursion which should be more efficient.

Reviewed By: spatel

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

2 years ago[lldb] Reduce the stack alignment requirements for the Windows x86_64 ABI
Martin Storsjö [Fri, 8 Jul 2022 21:36:16 +0000 (00:36 +0300)]
[lldb] Reduce the stack alignment requirements for the Windows x86_64 ABI

This fixes https://github.com/llvm/llvm-project/issues/56095.

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

2 years ago[AMDGPU] Fix bitcast v4i64/v16i16
Piotr Sobczak [Mon, 11 Jul 2022 19:24:56 +0000 (21:24 +0200)]
[AMDGPU] Fix bitcast v4i64/v16i16

Fix a regression introduced in D128865.

Reviewed By: arsenm

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

2 years ago[mlgo] Simplify autogenerated regalloc model
Aiden Grossman [Mon, 11 Jul 2022 20:12:52 +0000 (13:12 -0700)]
[mlgo] Simplify autogenerated regalloc model

Currently the autogenerated regalloc model will sometimes
output an incorrect LR index to evict instead of the first LR
with with the mask set to 1. This trips an assertion within
the MLRegallocAdvisor that the evicted LR has a mask of 1. This
patch, made possible by https://reviews.llvm.org/D124565, simplifies
the autogenerated model by taking away all unnecessary features and
getting rid of the functions that were previously to mix in all
the necessary inputs so they wouldn't get pruned by the Tensorflow
XLA AOT compiler. This is no longer necessary after the previously
mentioned patch. This also fixes the nondeterministic behavior
that is sometimes observed where the autogenerated model will
simply output 0 instead of the correct index.

Reviewed By: yundiqian

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

2 years agoFix an issue with grouped conv2d op
George Petterson [Mon, 11 Jul 2022 19:37:03 +0000 (15:37 -0400)]
Fix an issue with grouped conv2d op

Reviewed By: silvas

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

2 years agoRevert "Fix an issue with grouped conv2d op"
Nirvedh [Mon, 11 Jul 2022 20:03:16 +0000 (20:03 +0000)]
Revert "Fix an issue with grouped conv2d op"

This reverts commit 45ef20ca71aaba9ad50c4641fe7fcbb786724af8.

2 years agoFix an issue with grouped conv2d op
George Petterson [Mon, 11 Jul 2022 19:37:03 +0000 (15:37 -0400)]
Fix an issue with grouped conv2d op

2 years ago[libc++] Rename variables to use the snake case instead of camel case
Hui Xie [Mon, 11 Jul 2022 19:56:14 +0000 (21:56 +0200)]
[libc++] Rename variables to use the snake case instead of camel case

For some reason the pre-commit CI of https://reviews.llvm.org/D129233 was all green so I didn't spot this
https://reviews.llvm.org/B174525

Reviewed By: #libc, philnik, Mordante

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

2 years ago[mlir][complex] Lower complex.log to libm log call
Kai Sasaki [Mon, 11 Jul 2022 19:55:31 +0000 (21:55 +0200)]
[mlir][complex] Lower complex.log to libm log call

Lower complex.log to corresponding function call with libm.

Reviewed By: bixia

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

2 years ago[sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr confl...
Fangrui Song [Mon, 11 Jul 2022 19:53:34 +0000 (12:53 -0700)]
[sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36

It is generally not a good idea to mix usage of glibc headers and Linux UAPI
headers (https://sourceware.org/glibc/wiki/Synchronizing_Headers). In glibc
since 7eae6a91e9b1670330c9f15730082c91c0b1d570 (milestone: 2.36), sys/mount.h
defines `fsconfig_command` which conflicts with linux/mount.h:

    .../usr/include/linux/mount.h:95:6: error: redeclaration of ‘enum fsconfig_command’

Remove #include <linux/fs.h> which pulls in linux/mount.h. Expand its 4 macros manually.
Android sys/mount.h doesn't define BLKBSZGET and it still needs linux/fs.h.
In the long term we should move Linux specific definitions to sanitizer_platform_limits_linux.cpp
but this commit is easy to cherry pick into older compiler-rt releases.

Fix https://github.com/llvm/llvm-project/issues/56421

Reviewed By: #sanitizers, vitalybuka, zatrazz

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

2 years agoRevert "[sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_at...
Fangrui Song [Mon, 11 Jul 2022 19:44:37 +0000 (12:44 -0700)]
Revert "[sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36"

This reverts commit b379129c4beb3f26223288627a1291739f33af02.

Breaks Android build. Android sys/mount.h doesn't define macros like BLKBSZGET.

2 years ago[HIP] Add support for handling HIP in the linker wrapper
Joseph Huber [Thu, 30 Jun 2022 11:59:24 +0000 (07:59 -0400)]
[HIP] Add support for handling HIP in the linker wrapper

This patch adds the necessary changes required to bundle and wrap HIP
files. The bundling is done using `clang-offload-bundler` currently to
mimic `fatbinary` and the wrapping is done using very similar runtime
calls to CUDA. This still does not support managed / surface / texture
variables, that would require some additional information in the entry.

One difference in the codegeneration with AMD is that I don't check if
the handle is null before destructing it, I'm not sure if that's
required.

With this we should be able to support HIP with the new driver.

Depends on D128850

Reviewed By: JonChesterfield

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

2 years ago[HIP] Generate offloading entries for HIP with the new driver.
Joseph Huber [Wed, 29 Jun 2022 19:48:16 +0000 (15:48 -0400)]
[HIP] Generate offloading entries for HIP with the new driver.

This patch adds the small change required to output offloading entried
for HIP instead of CUDA. These should be placed in different sections so
because they need to be distinct to the offloading toolchain, otherwise
we'd have HIP trying to register CUDA kernels or vice-versa. This patch will
precede support for HIP in the linker wrapper.

Reviewed By: yaxunl, tra

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

2 years ago[llvm-objdump][docs] Fix documentation for offloading flags
Joseph Huber [Mon, 11 Jul 2022 19:43:18 +0000 (15:43 -0400)]
[llvm-objdump][docs] Fix documentation for offloading flags

2 years ago[llvm-objdump][docs] fix typo in llvm-objdump documentation.
mphschmitt [Mon, 11 Jul 2022 19:39:33 +0000 (15:39 -0400)]
[llvm-objdump][docs] fix typo in llvm-objdump documentation.

Fix a typo in llvm-objdump documentation.

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

Reviewed by: jhuber6

2 years ago[Clang] Parse toolchain-specific offloading arguments directly
Joseph Huber [Sun, 10 Jul 2022 02:20:04 +0000 (22:20 -0400)]
[Clang] Parse toolchain-specific offloading arguments directly

OpenMP supports multiple offloading toolchains and architectures. In
order to support this we originally used `getArgsForToolchain` to get
the arguments only intended for each toolchain. This allowed users to
manually specify if an `--offload-arch=` argument was intended for which
toolchain using `-Xopenmp-target=` or other methods. For example,

```
clang input.c -fopenmp -fopenmp-targets=nvptx64,amdgcn -Xopenmp-target=nvptx64 --offload-arch=sm_70 -Xopenmp-target=amdgcn --offload-arch=gfx908
```

However, this was causing problems with the AMDGPU toolchain. This is
because the AMDGPU toolchain for OpenMP uses an `amdgpu` arch to determine the
architecture. If this tool is not availible the compiler will exit with an error
even when manually specifying the architecture. This patch pulls out the logic in
`getArgsForToolchain` and specializes it for extracting `--offload-arch`
arguments to avoid this.

Reviewed By: JonChesterfield, yaxunl

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

2 years ago[AArch64] Move fp16 intrinsics tests to new file. NFC
David Green [Mon, 11 Jul 2022 19:36:46 +0000 (20:36 +0100)]
[AArch64] Move fp16 intrinsics tests to new file. NFC

The enabled features for the existing test do not always include FP16,
which is required for the intrinsics.

2 years ago[llvm][docs] commit phabricator patch
Nick Desaulniers [Mon, 11 Jul 2022 19:33:52 +0000 (12:33 -0700)]
[llvm][docs] commit phabricator patch

Users upgrading to PHP 8.1 might start observing failures with `arc`.
Commit @ychen's suggestions as a patch in tree that can be applied since
arcanist is no longer accepting patches.

Also, remove the suggestion to apply an external patch updating CA
certs. It seems that this was fixed in upstream arcanist before they
stopped accepting patches. Compare
https://github.com/rashkov/arcanist/commit/e3659d43d8911e91739f3b0c5935598bceb859aa
vs
https://github.com/rashkov/arcanist/commit/13d3a3c3b100979c34dda261fe21253e3571bc46

Link: https://secure.phabricator.com/book/phabcontrib/article/contributing_code/
Reviewed By: MaskRay

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

2 years ago[lld-macho] Handle user-provided dtrace symbols to avoid linking failure
Kaining Zhong [Mon, 11 Jul 2022 19:21:57 +0000 (15:21 -0400)]
[lld-macho] Handle user-provided dtrace symbols to avoid linking failure

This fixes https://github.com/llvm/llvm-project/issues/56238. ld64.lld currently does not generate __dof section in Mach-O, and -no_dtrace_dof option is on by default. However when there are user-defined dtrace symbols, ld64.lld will treat them as undefined symbols, which causes the linking to fail because lld cannot find their definitions. This patch allows ld64.lld to rewrite the instructions calling dtrace symbols to instructions like nop as what ld64 does; therefore, when encountered with user-provided dtrace probes, the linking can still succeed.

I'm not sure whether support for dtrace is expected in lld, so for now I didn't add codes to make lld emit __dof section like ld64, and only made it possible to link with dtrace symbols provided. If this feature is needed, I can add that part in Dtrace.cpp & Dtrace.h.

Reviewed By: int3, #lld-macho

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

2 years agoUpdate DynInit generation for ASan globals.
Mitch Phillips [Mon, 11 Jul 2022 18:44:55 +0000 (11:44 -0700)]
Update DynInit generation for ASan globals.

Address a follow-up TODO for Sanitizer Metadata.

Reviewed By: vitalybuka

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

2 years ago[gn build] Port 7d426a392f73
LLVM GN Syncbot [Mon, 11 Jul 2022 19:17:30 +0000 (19:17 +0000)]
[gn build] Port 7d426a392f73

2 years ago[RISCV] Pre-commit tests for D121833. NFC
Craig Topper [Mon, 11 Jul 2022 18:00:50 +0000 (11:00 -0700)]
[RISCV] Pre-commit tests for D121833. NFC

2 years ago[libc++] Implement ranges::{reverse, rotate}_copy
Nikolas Klauser [Mon, 11 Jul 2022 15:07:35 +0000 (17:07 +0200)]
[libc++] Implement ranges::{reverse, rotate}_copy

Reviewed By: var-const, #libc

Spies: huixie90, libcxx-commits, mgorny

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

2 years agoRevert "[C++20][Modules] Build module static initializers per P1874R1."
Iain Sandoe [Mon, 11 Jul 2022 18:50:31 +0000 (19:50 +0100)]
Revert "[C++20][Modules] Build module static initializers per P1874R1."

This reverts commit ac507102d258b6fc0cb57eb60c9dfabd57ff562f.

reverting while we figuere out why one of the green dragon lldb test fails.

2 years agoRevert "[C++20][Modules] Fix two tests for CTORs that return pointers [NFC]."
Iain Sandoe [Mon, 11 Jul 2022 18:49:48 +0000 (19:49 +0100)]
Revert "[C++20][Modules] Fix two tests for CTORs that return pointers [NFC]."

This reverts commit 4328b960176f4394416093e640ad4265bde65ad7.

reverting while we figure out why one of the Greendragon lldb tests fails.

2 years ago[Flang] Fix formatting for FIRLangRef.html
Dylan Fleming [Mon, 11 Jul 2022 18:08:48 +0000 (18:08 +0000)]
[Flang] Fix formatting for FIRLangRef.html

Previously, FIRLangRef.md was incorrectly formatted.
This was due to how FIRLangRef.md had no page header,
and so the first entry would render incorrectly.

This patch introduces a header file, which is prepended to the FIRLangRef
 before it becomes a HTML file. The header is currently brief
but can be expanded upon at a later date if required.

This formatting fix also means the index page
can correctly generate a link to FIRLangRef.html and as such,
this patch also removes FIRLangRef from the sidebar and adds it to the main list of links.

Depends on D128650

Reviewed By: kiranchandramohan

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

2 years ago[sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr confl...
Fangrui Song [Mon, 11 Jul 2022 18:38:28 +0000 (11:38 -0700)]
[sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36

It is generally not a good idea to mix usage of glibc headers and Linux UAPI
headers (https://sourceware.org/glibc/wiki/Synchronizing_Headers). In glibc
since 7eae6a91e9b1670330c9f15730082c91c0b1d570 (milestone: 2.36), sys/mount.h
defines `fsconfig_command` which conflicts with linux/mount.h:

    .../usr/include/linux/mount.h:95:6: error: redeclaration of ‘enum fsconfig_command’

Remove #include <linux/fs.h> which pulls in linux/mount.h. Expand its 4 macros manually.

Fix https://github.com/llvm/llvm-project/issues/56421

Reviewed By: #sanitizers, vitalybuka, zatrazz

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