Michael Jones [Mon, 25 Apr 2022 22:46:03 +0000 (15:46 -0700)]
[libc] add printf writer
The printf implmentation is made up of three main pieces, the parser,
the converter, and the writer. This patch adds the implementation for
the writer, as well as the function for writing to a string, along with
tests.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D124421
Michael Jones [Mon, 2 May 2022 20:30:20 +0000 (13:30 -0700)]
[libc] fix strtold tests on 32 bit systems
This patch fixes the string to long double tests for systems that use
long double is double, and don't support uint128.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D124803
Chris Jackson [Tue, 3 May 2022 15:17:05 +0000 (16:17 +0100)]
[llvm-ar] Modify usage printouts to use the correct toolname
Modify llvm-ar and llvm-ranlib to use the actual name of the executable
when printing the usage text via the '--help' flag.
Reviewers: Maskray, jhenderson, gbreynoo
Differential Revision: https://reviews.llvm.org/D124445
Min-Yih Hsu [Wed, 20 Apr 2022 21:56:40 +0000 (14:56 -0700)]
[mlir][LLVMIR] Add support for translating Switch instruction
Add support for translating llvm::SwitchInst.
Differential Revision: https://reviews.llvm.org/D124628
Simon Pilgrim [Tue, 3 May 2022 16:16:17 +0000 (17:16 +0100)]
[DAG] Fix issue with rot(rot(x,c1),c2) -> rot(x,c1+c2) fold with unnormalized rotation amounts
Don't assume the rotation amounts have been correctly normalized - do it as part of the constant folding.
Also, the normalization should be performed with UREM not SREM.
Kugan Vivekanandarajah [Tue, 3 May 2022 16:04:46 +0000 (17:04 +0100)]
[RFC] Add and sort decl to maintain order instead of inserting in order
ASTWriter::associateDeclWithFile shows a lot in clangd perf profile due to O(n^2) behaviour in insertion of DeclIDs in SortedFileDeclIDs. Instead of doing that, this patch just appends it to the DeclIDs vector and sorts them at the end.
Reviewed By: akyrtzi
Differential Revision: https://reviews.llvm.org/D124840
Simon Pilgrim [Tue, 3 May 2022 15:37:53 +0000 (16:37 +0100)]
[X86] Add test showing failure to modulo the rotation amounts before merging an inner rotation
Thanks to @spatel for the test case
Fangrui Song [Tue, 3 May 2022 15:46:15 +0000 (08:46 -0700)]
[ELF] Fix branch range computation when picking ThunkSection
Similar to D117734. Take AArch64 as an example when the branch range is +-0x8000000.
getISDThunkSec returns `ts` when `src-0x8000000-r_addend <= tsBase < src-0x8000000`
and the new thunk will be placed in `ts` (`ts->addThunk(t)`). However, the new
thunk (at the end of ts) may be unreachable from src. In the next pass,
`normalizeExistingThunk` reverts the relocation back to the original target.
Then a new thunk is created and the same `ts` is picked as before. The `ts` is
still unreachable.
I have observed it in one test with a sufficiently large r_addend (47664): there
are initially 245 Thunk's, then in each pass 14 new Thunk's are created and get
appended to the unreachable ThunkSection. After 15 passes lld fails with
`thunk creation not converged`.
The new test aarch64-thunk-reuse2.s checks the case.
Without `- pcBias`, arm-thumb-thunk-empty-pass.s and arm-thunk-multipass-plt.s
will fail.
Reviewed By: peter.smith
Differential Revision: https://reviews.llvm.org/D124653
Nikita Popov [Tue, 3 May 2022 15:42:46 +0000 (17:42 +0200)]
[SCEV] Regenerate test checks (NFC)
Shilei Tian [Tue, 3 May 2022 15:30:46 +0000 (11:30 -0400)]
[Clang][OpenMP] Add the support for floating-point variables for specific atomic clauses
Currently when using `atomic update` with floating-point variables, if
the operation is add or sub, `cmpxchg`, instead of `atomicrmw` is emitted, as
shown in [1]. In fact, about three years ago, llvm-svn: 351850 added the
support for FP operations. This patch adds the support in OpenMP as well.
[1] https://godbolt.org/z/M7b4ba9na
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D124724
Philip Reames [Tue, 3 May 2022 15:28:36 +0000 (08:28 -0700)]
[X86] Autogen a few tests for ease of update [nfc]
Dawid Jurczak [Tue, 3 May 2022 15:15:56 +0000 (17:15 +0200)]
[NFC][GVNSink] Don't pretend that iteration is over instructions when it's actually over blocks
Differential Revision: https://reviews.llvm.org/D124764
David Spickett [Mon, 11 Apr 2022 12:55:55 +0000 (12:55 +0000)]
[lldb][NFC] Refactor printing of short options in help
Instead of building a set twice for optional and required,
build a set for each while walking the options once.
Then take advantage of set being sorted meaning we don't
have to enforce the upper/lower order ourselves.
Just cleaned up the formatting on the later loops.
Combined the if conditions and used a single line if.
Depends on D123501
Reviewed By: jingham
Differential Revision: https://reviews.llvm.org/D123502
Paul Kirth [Tue, 3 May 2022 00:28:00 +0000 (00:28 +0000)]
[BOLT] [NFC] Remove unused variable
This patch fixes a warning from -Wunused-but-set-variable
MismatchedBranches are counted, but are never reported.
Since evaluateProfileData() should already identify and report
these cases, we can safely remove the unused variable.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D124588
Philipp Tomsich [Tue, 3 May 2022 15:10:02 +0000 (16:10 +0100)]
[AArch64] Add native CPU detection for Ampere1
Map the IMPLEMENTOR ID 0xc0 (Ampere Computing) and CPU ID 0xac3
(Ampere1) to ampere1.
Differential Revision: https://reviews.llvm.org/D117111
Nikita Popov [Tue, 3 May 2022 15:08:05 +0000 (17:08 +0200)]
[X86] Add additional add of and not tests (NFC)
Add tests for cases involving a truncated not.
Simon Pilgrim [Tue, 3 May 2022 14:54:59 +0000 (15:54 +0100)]
[PowerPC] Regenerate urem-seteq-illegal-types.ll
Remove superfluous whitespace
Philipp Tomsich [Tue, 3 May 2022 14:54:02 +0000 (15:54 +0100)]
[AArch64] Support for Ampere1 core
Add support for the Ampere Computing Ampere1 core.
Ampere1 implements the AArch64 state and is compatible with ARMv8.6-A.
Differential Revision: https://reviews.llvm.org/D117112
David Spickett [Fri, 8 Apr 2022 15:43:16 +0000 (15:43 +0000)]
[lldb][NFC] Simplify part of Options::GenerateOptionUsage
Use llvm::enumerate, remove an unused arg name stream and
replace repeated uses of indexing to get the option def.
We could use map instead of multimap but I'm not 100% that
would be NFC. All short options should be unique in theory.
Depends on D123500
Reviewed By: JDevlieghere
Differential Revision: https://reviews.llvm.org/D123501
Simon Pilgrim [Tue, 3 May 2022 14:28:38 +0000 (15:28 +0100)]
[X86] load-local-v3i129.ll - add checks for targets with fast/slow shld funnel shift ops
Simon Pilgrim [Tue, 3 May 2022 14:27:15 +0000 (15:27 +0100)]
[X86] const-shift-of-constmasked.ll - replace X32 check prefix with X86
We try to only use X32 for gnux32 triple tests
Eric Li [Tue, 3 May 2022 03:28:52 +0000 (03:28 +0000)]
[bazel] Add test targets for dataflow framework
Differential Revision: https://reviews.llvm.org/D124819
Aaron Ballman [Tue, 3 May 2022 13:58:20 +0000 (09:58 -0400)]
Add explicit OpenMP 5.0 case for version macros; NFC
This adds an explicit case for OpenMP 5.0 as a reminder to still define
the correct macro value when the default OpenMP version changes in the
future.
Aaron Ballman [Tue, 3 May 2022 13:53:53 +0000 (09:53 -0400)]
Fix a typo in an OpenMP test
This fixes the typo and corrects the default OpenMP version being
tested.
LLVM GN Syncbot [Tue, 3 May 2022 13:55:41 +0000 (13:55 +0000)]
[gn build] Port
860eabb3953a
Haojian Wu [Tue, 3 May 2022 13:54:10 +0000 (15:54 +0200)]
Revert "[pseudo] Implement the GLR parsing algorithm."
This breaks some buildbots (on the declaration GSS& GSS), will fix it
later.
This reverts commit
eac22d0754f70df10ea0eb6f59cbd1ef012ab5a4.
LLVM GN Syncbot [Tue, 3 May 2022 13:47:14 +0000 (13:47 +0000)]
[gn build] Port
eac22d0754f7
Nikita Popov [Tue, 3 May 2022 10:16:29 +0000 (12:16 +0200)]
[SDAG] Handle A and B&~A in haveNoCommonBitsSet()
This is the DAG variant of D124763. The code already handles the
general pattern, but not this degenerate case.
This allows folding A + (B&~A) to A | (B&~A) which further holds
to A | B.
Handling on the SDAG level is needed because in the motivating
case the add is actually a getelementptr, which only gets converted
into an add on the SDAG level. However, this patch is not quite
sufficient to handle the getelementptr case yet, because of an
interfering demanded bits simplification.
Differential Revision: https://reviews.llvm.org/D124772
Nathan Sidwell [Fri, 18 Feb 2022 19:06:58 +0000 (11:06 -0800)]
[demangler] Fold expressions of .* and ->*
(Exitingly) a fold expression's operators include .* and ->*, but we
failed to demangle them as we categorize those as MemberExprs, not
BinaryExprs.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D123305
Sam McCall [Thu, 28 Apr 2022 08:21:51 +0000 (10:21 +0200)]
[pseudo] Implement the GLR parsing algorithm.
This patch implements a standard GLR parsing algorithm, the
core piece of the pseudoparser.
- it parses preprocessed C++ code, currently it supports correct code
only and parse them as a translation-unit;
- it produces a forest which stores all possible trees in an efficient
manner (only a single node being build for per (SymbolID, Token Range));
no disambiguation yet;
Differential Revision: https://reviews.llvm.org/D121150
David Spickett [Mon, 11 Apr 2022 11:14:38 +0000 (11:14 +0000)]
[lldb][NFC] Add more tests for GenerateOptionsUsage
This adds a few targeted tests to make sure that when refactoring
this function later I don't break these properties.
Some are tested in passing elsewhere but this makes it more
obvious what went wrong when it fails.
This doesn't cover everything the function does, I couldn't
find any examples that would exercise some of the code.
Reviewed By: jingham
Differential Revision: https://reviews.llvm.org/D123500
David Spickett [Tue, 3 May 2022 13:24:10 +0000 (13:24 +0000)]
Revert "[lldb] Fix ppc64 detection in lldb"
This reverts commit
f114f009486816ed4b3bf984f0fbbb8fc80914f6.
Due to hitting an assert on our lldb bots:
https://lab.llvm.org/buildbot/#/builders/96/builds/22715
../llvm-project/lldb/source/Plugins/Process/elf-core/ThreadElfCore.cpp:170:
virtual lldb::RegisterContextSP ThreadElfCore::CreateRegisterContextForFrame(
lldb_private::StackFrame *): Assertion `false && "Architecture or OS not supported"' failed.
David Truby [Wed, 20 Apr 2022 13:56:19 +0000 (13:56 +0000)]
[clang][AArch64][SVE] Implement conditional operator for SVE vectors
This patch adds support for the conditional (ternary) operator on SVE
scalable vector types in C++, matching the behaviour for NEON vector
types. Like the conditional operator for NEON types, this is disabled in
C mode.
Differential Revision: https://reviews.llvm.org/D124091
Nicolai Hähnle [Thu, 28 Apr 2022 20:51:31 +0000 (15:51 -0500)]
AMDGPU: Remove redundant call to MachineInstrBuilder::setMBB
setInstrAndDebugLoc also sets the basic block automatically.
Differential Revision: https://reviews.llvm.org/D124809
Serge Pavlov [Tue, 3 May 2022 12:28:47 +0000 (19:28 +0700)]
[Doc] Refine description of llvm.is_fpclass
Haojian Wu [Tue, 3 May 2022 08:06:28 +0000 (10:06 +0200)]
[pseudo] Simplify the forest dump, NFC.
The code was written to handle nullable grammar, and we disallow
nullable grammar, so it is not necessary to keep it around.
Differential Revision: https://reviews.llvm.org/D124827
Hanhan Wang [Tue, 3 May 2022 12:12:51 +0000 (05:12 -0700)]
[Linalg] Remove Optional from getStaticLoopRanges interface method.
It is very wrong if the ranges can't be infered. It's also checked in
verifyStructuredOpInterface, so we don't need the Optional return type.
Reviewed By: springerm
Differential Revision: https://reviews.llvm.org/D124596
Nicolai Hähnle [Tue, 3 May 2022 11:51:53 +0000 (13:51 +0200)]
AMDGPU/GISel: Update some MIR tests to reduce future churn
The default output format of the update_mir_test_checks.py script has
changed since some of these tests were generated.
Also, an upcoming commit will introduce differences between GFX9 and
GFX10 in the legalization of G_MUL.
Ali Shuja Siddiqui [Tue, 3 May 2022 12:05:19 +0000 (14:05 +0200)]
[analyzer] Check for std::__addressof for inner pointer checker
This is an extension to diff D99260. This adds an additional exception
for `std::__addressof` in `InnerPointerChecker`.
Patch By alishuja (Ali Shuja Siddiqui)!
Reviewed By: martong, alishuja
Differential Revision: https://reviews.llvm.org/D109467
Martin Liska [Tue, 3 May 2022 11:55:28 +0000 (13:55 +0200)]
sanitizer: Fix fallthrough detection.
First check for clang::fallthrough attribute that resolves:
sanitizer_stack_store.cpp:258:7: error: use of the 'fallthrough'
attribute is a C++17 extension [-Werror,-Wc++17-attribute-extensions]
Zhiyao Ma [Tue, 3 May 2022 11:29:48 +0000 (12:29 +0100)]
[ARM] Only update the successor edges for immediate predecessors of PrologueMBB
When adjusting the function prologue for segmented stacks, only update
the successor edges of the immediate predecessors of the original
prologue.
Differential Revision: https://reviews.llvm.org/D122959
Aaron Ballman [Tue, 3 May 2022 11:12:50 +0000 (07:12 -0400)]
Fix Clang sphinx build
It seems we don't have this option exposed via RST, so switching to use
generic backticks instead.
Simon Tatham [Tue, 3 May 2022 09:33:11 +0000 (10:33 +0100)]
[Windows] Fix handling of \" in program name on cmd line.
Bugzilla #47579: if you invoke clang on Windows via a pathname in
which a quoted section closes just after a backslash, e.g.
"C:\Program Files\Whatever\"clang.exe
then cmd.exe and CreateProcess will correctly find the binary, because
when they parse the program name at the start of the command line,
they don't regard the \ before the " as having any kind of escaping
effect. This is different from the behaviour of the Windows standard C
library when it parses the rest of the command line, which would
consider that \" not to close the quoted string.
But this confuses windows::GetCommandLineArguments, because the
Windows API function GetCommandLineW() will return a command line
containing that \" sequence, and cl::TokenizeWindowsCommandLine will
tokenize the whole string according to the C library's rules. So it
will misidentify where the program name stops and the arguments start.
To fix this, I've introduced a new variant function
cl::TokenizeWindowsCommandLineFull(), intended to be applied to the
string returned from GetCommandLineW(). It parses the first word of
the command line according to CreateProcess's rules, considering \ to
never be an escaping character; thereafter, it switches over to the C
library rules for the rest of the command line.
Reviewed By: hans
Differential Revision: https://reviews.llvm.org/D122914
Simon Tatham [Tue, 3 May 2022 09:33:11 +0000 (10:33 +0100)]
[Windows] Fix cmd line tokenization of unclosed quotes.
When cl::TokenizeWindowsCommandLine received a command line with an
unterminated double-quoted string at the end, it would discard the
text within that string. That doesn't match the behavior of the
standard Windows C library, which will return the text in the unclosed
quoted string as an argv word.
Fixed, and added extra unit tests in that area.
In some cases (specifically the one in Bugzilla #47579) this could
cause TokenizeWindowsCommandLine to return a zero-length list of
arguments, leading to an array overrun at the call site in
windows::GetCommandLineArguments. Added a check there, for extra
safety: now windows::GetCommandLineArguments will return an error code
instead of failing an assertion.
(This change was written as part of https://reviews.llvm.org/D122914,
but split into a separate commit at the last minute at the code
reviewer's suggestion, because it's fixing an unrelated bug in the
same area. The rest of D122914 will follow in the next commit.)
Martin Liska [Tue, 3 May 2022 10:42:01 +0000 (12:42 +0200)]
tsan: fix deadlock in libbacktrace
Fixes deadlock seen in GCC.
Fixes: #55226
Differential Revision: https://reviews.llvm.org/D124838
Nikita Popov [Tue, 3 May 2022 10:20:04 +0000 (12:20 +0200)]
[SDAG] Extract commutative helper from haveNoCommonBitsSet() (NFC)
To make it easier to add additional patterns, which will generally
want to handle commuted top-level operands.
serge-sans-paille [Mon, 2 May 2022 10:19:48 +0000 (12:19 +0200)]
[lldb] Fix ppc64 detection in lldb
Currently, ppc64le and ppc64 (defaulting to big endian) have the same
descriptor, thus the linear scan always return ppc64le. Handle that through
subtype.
Differential Revision: https://reviews.llvm.org/D124760
Simon Pilgrim [Tue, 3 May 2022 10:01:47 +0000 (11:01 +0100)]
[SLP][X86] Add test case for Issue #48223
Bradley Smith [Tue, 26 Apr 2022 12:19:32 +0000 (12:19 +0000)]
[AArch64][SVE] Only fold frame indexes referencing SVE objects into SVE loads/stores
Currently we always fold frame indexes into SVE load/store instructions,
however these instructions can only encode VL scaled offests. This means
that when we are accessing a fixed length stack object with these
instructions, the folded in frame index gets pulled back out during frame
lowering. This can cause issues when we have no spare registers and no
emergency spill slot.
Rather than causing issues like this, don't fold in frame indexes that
reference fixed length objects.
Fixes: #55041
Differential Revision: https://reviews.llvm.org/D124457
Martin Liska [Tue, 3 May 2022 08:19:20 +0000 (10:19 +0200)]
sanitizer: use pragma clang conditionally
Use the pragma only when __clang__ is defined.
Fixes:
sanitizer_common_libcdep.cpp:101: warning: ignoring ‘#pragma clang diagnostic’ [-Wunknown-pragmas]
Differential Revision: https://reviews.llvm.org/D124829
Nikita Popov [Mon, 2 May 2022 16:21:00 +0000 (18:21 +0200)]
[ValueTracking] A and (B & ~A) have no common bits set
This extends haveNoCommonBitsSet() to two additional cases, allowing
the following folds:
* `A + (B & ~A)` --> `A | (B & ~A)`
(https://alive2.llvm.org/ce/z/crxxhN)
* `A + ((A & B) ^ B)` --> `A | ((A & B) ^ B)`
(https://alive2.llvm.org/ce/z/A_wsH_)
These should further fold to just `A | B`, though this currently
only works in the first case.
The reason why the second fold is necessary is that we consider
this to be the canonical form if B is a constant. (I did check
whether we can change that, but it looks like a number of folds
depend on the current canonicalization, so I ended up adding both
patterns here.)
Differential Revision: https://reviews.llvm.org/D124763
Alex Zinenko [Mon, 2 May 2022 16:22:19 +0000 (18:22 +0200)]
[mlir] improve and test TransformState::Extension
Add the mechanism for TransformState extensions to update the mapping between
Transform IR values and Payload IR operations held by the state. The mechanism
is intentionally restrictive, similarly to how results of the transform op are
handled.
Introduce test ops that exercise a simple extension that maintains information
across the application of multiple transform ops.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D124778
Fred Tingaud [Tue, 3 May 2022 07:29:16 +0000 (09:29 +0200)]
In MSVC compatibility mode, friend function declarations behave as function declarations
Before C++20, MSVC treated any friend function declaration as a function declaration, so the following code would compile despite funGlob being declared after its first call:
```
class Glob {
public:
friend void funGlob();
void test() {
funGlob();
}
};
void funGlob() {}
```
This proposed patch mimics the MSVC behavior when in MSVC compatibility mode
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D124613
Martin Liska [Tue, 3 May 2022 08:54:06 +0000 (10:54 +0200)]
sanitizer: support GCC's fallthrough attribute
Fixes:
sanitizer_stack_store.cpp:257:13: warning: this statement may fall through [-Wimplicit-fallthrough=]
when being built with GCC.
Differential Revision: https://reviews.llvm.org/D124832
Marco Antognini [Wed, 27 Apr 2022 12:51:57 +0000 (14:51 +0200)]
[Analyzer] Fix assumptions about const field with member-initializer
Essentially, having a default member initializer for a constant member
does not necessarily imply the member will have the given default value.
Remove part of
a2e053638bbf ([analyzer] Treat more const variables and
fields as known contants., 2018-05-04).
Fix #47878
Reviewed By: r.stahl, steakhal
Differential Revision: https://reviews.llvm.org/D124621
Igor Kirillov [Wed, 15 Sep 2021 18:42:01 +0000 (19:42 +0100)]
[LoopVectorize] Support reductions that store intermediary result
Adds ability to vectorize loops containing a store to a loop-invariant
address as part of a reduction that isn't converted to SSA form due to
lack of aliasing info. Runtime checks are generated to ensure the store
does not alias any other accesses in the loop.
Ordered fadd reductions are not yet supported.
Differential Revision: https://reviews.llvm.org/D110235
Marek Kurdej [Tue, 3 May 2022 09:08:34 +0000 (11:08 +0200)]
[clang-format] Add a regression test for aligning macros with keywords.
Test from issue https://github.com/llvm/llvm-project/issues/54953.
Benjamin Kramer [Mon, 2 May 2022 19:18:37 +0000 (21:18 +0200)]
[mlir][MemRef] Return `0` for the canonical strided layout expr of a 0d memref
There can't be any strides, and the offset for the canonical expr is
always 0. Fixes #55229.
Differential Revision: https://reviews.llvm.org/D124795
Jeremy Morse [Tue, 3 May 2022 08:42:27 +0000 (09:42 +0100)]
[DebugInfo][InstrRef] Don't generate redundant DBG_PHIs
In SelectionDAG, DBG_PHI instructions are created to "read" physreg values
and give them an instruction number, when they can't be traced back to a
defining instruction. The most common scenario if arguments to a function.
Unfortunately, if you have 100 inlined methods, each of which has the same
"this" pointer, then the 100 dbg.value instructions become 100
DBG_INSTR_REFs plus 100 DBG_PHIs, where only one DBG_PHI would suffice.
This patch adds a vreg cache for MachienFunction::salvageCopySSA, if we've
already traced a value back to the start of a block and created a DBG_PHI
then it allows us to re-use the DBG_PHI, as well as reducing work.
Differential Revision: https://reviews.llvm.org/D124517
Markus Lavin [Tue, 3 May 2022 08:20:09 +0000 (10:20 +0200)]
[NFC] Minimal refactor of TTI to avoid clangsa complaint
Differential Revision: https://reviews.llvm.org/D124754
David Green [Tue, 3 May 2022 08:32:34 +0000 (09:32 +0100)]
[LV][SLP] Mark fptosi_sat as vectorizable
This adds fptosi_sat and fptoui_sat to the list of trivially
vectorizable functions, mainly so that the loop vectorizer can vectorize
the instruction. Marking them as trivially vectorizable also allows them
to be SLP vectorized, and Scalarized.
The signature of a fptosi_sat requires two type overrides
(@llvm.fptosi.sat.v2i32.v2f32), unlike other intrinsics that often only
take a single. This patch alters hasVectorInstrinsicOverloadedScalarOpd
to isVectorIntrinsicWithOverloadTypeAtArg, so that it can mark the first
operand of the intrinsic as a overloaded (but not scalar) operand.
Differential Revision: https://reviews.llvm.org/D124358
Pavel Labath [Tue, 3 May 2022 08:28:47 +0000 (10:28 +0200)]
[lldb] Fix nondeterminism in DWARFIndexCachingTest
The entries in the input map need to be sorted as well, as there's no
guarantee that the entries (ConstStrings) will be inserted in the proper
order.
Ivan Murashko [Sat, 30 Apr 2022 20:42:08 +0000 (21:42 +0100)]
[docs] PCH usage documentation update
The documentation has an incorrect example of PCH files usage via `-include` option. The possibility has not been available since [llvm-svn: 174385](https://reviews.llvm.org/rG48b72d81c8968f3d342557582db986a60aef2c54).
Differential Revision: https://reviews.llvm.org/D124719
Luo, Yuanke [Tue, 3 May 2022 06:48:22 +0000 (14:48 +0800)]
[X86][AMX] Add mayLoad/mayStore property for AMX instructions.
Vitaly Buka [Tue, 3 May 2022 05:26:48 +0000 (22:26 -0700)]
Revert "tsan: model atomic read for failing CAS"
https://lab.llvm.org/buildbot/#/builders/70/builds/21206 hangs.
This reverts commit
2fec52a40261ecab7fc621184159f464c67dcfa4.
Vitaly Buka [Wed, 27 Apr 2022 23:51:24 +0000 (16:51 -0700)]
[mlir] Create lbOperands before op.setLowerBound
To fix msan report like https://reviews.llvm.org/P8284
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D124575
Jonas Devlieghere [Mon, 2 May 2022 19:53:38 +0000 (12:53 -0700)]
[lldb] Make GetSharedModuleWithLocalCache consider the device support directory
Make GetSharedModuleWithLocalCache consider the device support
directory. In the past we only needed the device support directory to
debug remote processes. Since the introduction of Apple Silicon and
Rosetta this stopped being true.
When debugging a Rosetta process on macOS we need to consider the
Rosetta expanded shared cache. This patch and it dependencies move that
logic out of PlatfromRemoteDarwinDevice into a new abstract class called
PlatfromDarwinDevice. The new platform sit in between PlatformDarwin and
PlatformMacOSX and PlatformRemoteDarwinDevice and has all the necessary
logic to deal with the device support directory.
Technically I could have moved everything in PlatfromDarwinDevice into
PlatfromDarwin but decided that this logic is sufficiently self
contained that it warrants its own abstraction.
rdar://
91966349
Differential revision: https://reviews.llvm.org/D124801
Hsiangkai Wang [Thu, 28 Apr 2022 09:02:54 +0000 (09:02 +0000)]
[RISCV] Precommit test cases for (uaddo X, C)
Differential Revision: https://reviews.llvm.org/D124602
Hsiangkai Wang [Thu, 28 Apr 2022 23:14:48 +0000 (23:14 +0000)]
[RISCV][TargetLowering] Special case overflow expansion for (uaddo X, C).
Follow-up to D122933.
Differential Revision: https://reviews.llvm.org/D124374
Craig Topper [Tue, 3 May 2022 02:43:05 +0000 (19:43 -0700)]
[RISCV] Add isCommutable to FADD/FMUL/FMIN/FMAX/FEQ.
Reviewed By: arcbbb
Differential Revision: https://reviews.llvm.org/D123972
hsmahesha [Mon, 2 May 2022 20:55:07 +0000 (02:25 +0530)]
[AMDGPU] Fix scalar_to_vector for v8i16/v8f16
so that the stack access is avoided.
Reviewed By: rampitec
Differential Revision: https://reviews.llvm.org/D124734
hsmahesha [Sun, 1 May 2022 07:07:48 +0000 (12:37 +0530)]
[AMDGPU][NFC] Make lowerINSERT_VECTOR_ELT() more readable
by moving around the code and by adding more comments, which would
later help during any required clean-up.
Differential Revision: https://reviews.llvm.org/D124733
Zakk Chen [Tue, 3 May 2022 00:08:23 +0000 (17:08 -0700)]
[RISCV] Fix incorrect codegen for masked vmsge{u}.vx with mask agnostic.
The result was totally wrong.
We could use mask undisturbed result to emulate the mask agnostic result.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D124684
LLVM GN Syncbot [Tue, 3 May 2022 00:35:04 +0000 (00:35 +0000)]
[gn build] Port
41c0ff1e740b
Jonas Devlieghere [Mon, 2 May 2022 19:52:39 +0000 (12:52 -0700)]
[lldb] Move GetSharedModuleWithLocalCache to PlatformDarwinDevice (NFC)
Refactoring in preparation of D124801.
Differential revision: https://reviews.llvm.org/D124800
Jonas Devlieghere [Mon, 2 May 2022 16:03:58 +0000 (09:03 -0700)]
[lldb] Hoist device support out of PlatformRemoteDarwinDevice (NFC)
Refactoring in preparation of D124801.
Differential revision: https://reviews.llvm.org/D124799
Jonas Devlieghere [Mon, 2 May 2022 23:21:21 +0000 (16:21 -0700)]
[lldb] Remove unused PlatformRemoteDarwinDevice::FindFileInAllSDKs
As far as I can tell this function is unused both upstream and
downstream.
Jonas Devlieghere [Mon, 2 May 2022 23:12:38 +0000 (16:12 -0700)]
[lldb] Remove PlatformRemoteMacOSX::GetFileWithUUID overload (NFC)
There's no reason PlatformRemoteMacOSX has to override GetFileWithUUID.
Weverything [Tue, 3 May 2022 00:08:20 +0000 (17:08 -0700)]
[Driver][test] Remove clang{{.*}} when testing -cc1 command lines
The majority of tests omit testing "clang" for -cc1 command lines. In addition,
some distributions symlink %clang to an executable with a content hash based
filename so clang{{.*}} check won't work.
With this change, we can remove many -no-canonical-prefixes whose purpose was to
make the tests pass on such distributions.
Craig Topper [Mon, 2 May 2022 23:21:50 +0000 (16:21 -0700)]
[DAGCombiner] reassociationCanBreakAddressingModePattern should check uses of the outer add.
When looking for memory uses,
reassociationCanBreakAddressingModePattern should check uses of
the outer ADD rather than the inner ADD. We want to know if the
two ops we're reassociating are used by a load/store.
In practice, the existing check usually works because CodeGenPrepare
will make one of the load/stores have an offset of 0 relative to
split GEP. That will make the inner add have a memory use.
To test this, I've manually split the GEPs so there is no 0 offset
store.
This issue was recently discussed in the original review D60294.
Reviewed By: luismarques
Differential Revision: https://reviews.llvm.org/D124644
Tanya Lattner [Mon, 2 May 2022 23:29:15 +0000 (16:29 -0700)]
Add transparency report.
Min-Yih Hsu [Thu, 21 Apr 2022 00:46:16 +0000 (17:46 -0700)]
[mlir][LLVMIR] Add support for translating FCmp & FP constants
This patch add supports for translating FCmp and more kinds of FP
constants in addition to 32 & 64-bit ones. However, we can't express
ppc_fp128 constants right now because the semantics for its underlying
APFloat is `S_PPCDoubleDouble` but mlir::FloatType doesn't support such
semantics right now.
Differential Revision: https://reviews.llvm.org/D124630
Chris Bieneman [Mon, 2 May 2022 23:13:07 +0000 (18:13 -0500)]
[NFC] Add missing switch cases
This silences warnings encountered on some bots.
Nicolai Hähnle [Wed, 13 Apr 2022 01:37:44 +0000 (20:37 -0500)]
AMDGPU/SDAG: Factor out the fold (add (mul x, y), y) --> mad_[iu]64_[iu]32
Refactor to simplify a follow-up change.
No functional change intended. However, there is a rather subtle logic
change: the subsequent combines (e.g. reassociation) are skipped *always*
when one of the operands of the add is a mul, instead of only when
additionally mad64_32 etc. are available. This change makes sense because
the subsequent combines should never apply when one of the operands is a
mul.
Differential Revision: https://reviews.llvm.org/D123833
LLVM GN Syncbot [Mon, 2 May 2022 22:32:10 +0000 (22:32 +0000)]
[gn build] Port
4070aa01561c
Vitaly Buka [Mon, 2 May 2022 22:10:26 +0000 (15:10 -0700)]
Revert "[DeadArgElim] Set unused arguments for internal functions"
Breaks bots, see https://reviews.llvm.org/D124699
This reverts commit
e547a333a43348a8a7ec9460f37696ecc5453e56.
Chris Bieneman [Mon, 2 May 2022 21:23:16 +0000 (16:23 -0500)]
[Object][DX] Identify DXBC file magic
This adds support to llvm::identify_magic to detect DXBC and classify
it as the dxcontainer format.
Bardia Mahjour [Mon, 2 May 2022 21:06:00 +0000 (17:06 -0400)]
Evgenii Stepanov [Thu, 21 Apr 2022 22:17:29 +0000 (15:17 -0700)]
[sanitizer] Use canonical syscalls everywhere
These "new" syscalls have been added in 2.6.16, more than 16 years ago.
Surely that's enough time to migrate. Glibc 2.33 is using them on both
i386 and x86_64. Android has an selinux filter to block the legacy
syscalls in the apps.
Differential Revision: https://reviews.llvm.org/D124212
Bardia Mahjour [Mon, 2 May 2022 20:49:10 +0000 (16:49 -0400)]
[LoopCacheAnalysis] Consider dimension depth of the subscript reference when calculating cost
Reviewed By: congzhe, etiotto
Differential Revision: https://reviews.llvm.org/D123400
Teresa Johnson [Mon, 2 May 2022 19:38:27 +0000 (12:38 -0700)]
[memprof] Only insert dynamic shadow load when needed
We don't need to insert a load of the dynamic shadow address unless there
are interesting memory accesses to profile.
Split out of D124703.
Differential Revision: https://reviews.llvm.org/D124797
Chris Bieneman [Mon, 2 May 2022 20:16:21 +0000 (15:16 -0500)]
[NFC] Fixing error on some versions of GCC
Some versions of GCC don't implicitly move Error to Expected.
Emil Kieri [Mon, 2 May 2022 16:17:39 +0000 (18:17 +0200)]
[flang] Fix semantics check for RETURN statement
The RETURN statement is allowed in functions and subroutines, but not
in main programs. It is however a common extension, which we also
implement, to allow RETURN from main programs -- we only issue a
portability warning when -pedantic or -std=f2018 are set.
This patch fixes false positives for this portability warning, where it
was triggered also when RETURN was present in functions or subroutines.
Fixexs #55080
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D124732
Chris Bieneman [Mon, 2 May 2022 20:02:10 +0000 (15:02 -0500)]
[NFC] Fix warning reported on bots
Alexey Bataev [Mon, 2 May 2022 19:57:34 +0000 (12:57 -0700)]
[SLP][NFC]Minor code changes for better readability, NFC.
Tobias Ribizel [Mon, 2 May 2022 19:56:40 +0000 (15:56 -0400)]
[clangd] Add inlay hints for mutable reference parameters
Add a & prefix to all parameter inlay hints that refer to a non-const l-value reference. That makes it easier to identify them even if semantic highlighting is not used (where this is already available)
Reviewed By: nridge
Differential Revision: https://reviews.llvm.org/D124359
Sheng [Mon, 2 May 2022 19:36:07 +0000 (03:36 +0800)]
[NFC] Rename `FixedLenDecoderEmitter` as `DecoderEmitter`
Since now we are able to handle both fixed length & variable
length instructions.
Reviewed By: myhsu
Differential Revision: https://reviews.llvm.org/D123451
Sheng [Mon, 2 May 2022 19:26:55 +0000 (03:26 +0800)]
[TableGen] Add support for variable length instruction in decoder generator
To support variable length instructions, I think of them as fixed length instructions with the "maximum length". For example, if there're three instructions with 2, 6 and 9 bytes, we can fit them into the algorithm by treating them all as 9 bytes.
Also, since we can't know the length of the instruction in advance, there is a function object with type `void(APInt &, uint64_t)` added in the parameter list of `decodeInstruction` and `fieldFromInstruction`. We can use this to supply the additional bits the decoder needs after we know the opcode of the instruction.
Finally, `InstrLenTable` is added to let the decoder know the length of the instructions.
See D120960 for its usage.
Reviewed By: myhsu
Differential Revision: https://reviews.llvm.org/D120958
Sheng [Mon, 2 May 2022 19:32:02 +0000 (03:32 +0800)]
Revert "Fix a misuse of `cast`"
This reverts commit
ba59ec2843f99f19d55d7cd9f9ac536fb038fdab.
Teresa Johnson [Fri, 29 Apr 2022 21:53:31 +0000 (14:53 -0700)]
[memprof] Don't instrument PGO and other compiler inserted variables
Suppress instrumentation of PGO counter accesses, which is unnecessary
and costly. Also suppress accesses to other compiler inserted variables
starting with "__llvm". This is a slightly expanded variant of what is
done for tsan in shouldInstrumentReadWriteFromAddress.
Differential Revision: https://reviews.llvm.org/D124703