rkayaith [Tue, 11 Oct 2022 19:23:48 +0000 (15:23 -0400)]
[mlir][Pass] Disallow mixing -pass-pipeline with other pass options
Currently `-pass-pipeline` can be specified multiple times and mixed
with the individual `-pass-name` options. Removing this feature will
allow for including the pipeline anchor as part of the option
argument (see D134900).
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D135745
rkayaith [Tue, 11 Oct 2022 21:29:39 +0000 (17:29 -0400)]
[mlir] Don't mix -pass-pipeline with other pass options
These are test updates required for D135745, which disallows mixing
`-pass-pipeline` and the individual `-pass-name` options.
Reviewed By: rriddle, mehdi_amini
Differential Revision: https://reviews.llvm.org/D135746
Kevin Sala Penadés [Wed, 2 Nov 2022 16:03:34 +0000 (12:03 -0400)]
[OpenMP][libomptarget] Fix AsyncInfoTy object in omp_target_memcpy
The AsyncInfoTy should be created in the same device as the async operation will be issued. In omp_target_memcpy, the AsyncInfoTy for the host to destination device transfer was created referring to the source device.
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D137225
Valentin Clement [Wed, 2 Nov 2022 15:52:05 +0000 (16:52 +0100)]
[flang] Handle dispatch on nopass procedure from array element
When a fir.dispatch is done with a NOPASS type-bound
procedure, the object in fir.dispatch is just used to gather the vtable.
Therefore, no transformation is done on it and the original entity
is used. The current code generation didn't expect the entity to be an array.
This patch update the code generation to be able to retrieve the vtable
accordingly.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D137255
Matt Arsenault [Wed, 2 Nov 2022 15:30:21 +0000 (08:30 -0700)]
llvm-reduce: Add explicit triple to test
Some host targets are managing to get through MIR parsing
without constructing their MachineFunctionInfo.
Fixes at least SystemZ and SPARC (issue 58768)
Siva Chandra Reddy [Mon, 31 Oct 2022 08:25:25 +0000 (01:25 -0700)]
[libc] Add a doc about the libc fullbuild mode.
Reviewed By: jeffbailey
Differential Revision: https://reviews.llvm.org/D137061
Siva Chandra Reddy [Wed, 2 Nov 2022 07:34:11 +0000 (00:34 -0700)]
[libc] Add links to libc Discourse and to the libc Discord channel.
Reviewed By: jeffbailey
Differential Revision: https://reviews.llvm.org/D137229
Siva Chandra Reddy [Fri, 28 Oct 2022 08:09:38 +0000 (01:09 -0700)]
[libc] Add a contributing guide to the docs.
Reviewed By: jeffbailey
Differential Revision: https://reviews.llvm.org/D136961
Siva Chandra Reddy [Fri, 28 Oct 2022 07:12:08 +0000 (00:12 -0700)]
[libc] Add a porting guide to the docs.
Reviewed By: jeffbailey
Differential Revision: https://reviews.llvm.org/D136960
Philip Reames [Wed, 2 Nov 2022 00:19:29 +0000 (17:19 -0700)]
[RISCV] Fix cost of legal fixed length masked load and stores
We can cost them the same way as a scalable masked load/store. By hitting the default path, we were costing them as if they were being scalarized. This is a significant over estimate.
Differential Revision: https://reviews.llvm.org/D137218
OCHyams [Wed, 2 Nov 2022 14:08:23 +0000 (14:08 +0000)]
Denys Shabalin [Wed, 2 Nov 2022 13:04:37 +0000 (14:04 +0100)]
[mlir] Use the same pipeline tuning options as clang for execution engine
This change make sure that ExecutionEngine's pass pipeline is identical to one
used by clang. Previously, SLPVectorization was not enabled which caused
differences in code...
...generation.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D137248
John Brawn [Fri, 28 Oct 2022 13:17:01 +0000 (14:17 +0100)]
[MIRVRegNamer] Avoid opcode hash collision
D121929 happens to cause CodeGen/MIR/AArch64/mirnamer.mir to fail due
to a hash collision caused by adding two extra opcodes. The collision
is only in the top 19 bits of the hashed opcode so fix this by just
using the whole hash (in fixed width hex for consistency) instead of
the top 5 decimal digits.
Differential Revision: https://reviews.llvm.org/D137155
John Brawn [Thu, 27 Oct 2022 13:14:57 +0000 (14:14 +0100)]
[MachineCSE] Allow PRE of instructions that read physical registers
Currently MachineCSE forbids PRE when the instruction reads a physical
register. Relax this so that it's allowed when the value being read is
the same as what would be read in the place the instruction would be
hoisted to.
This is being done in preparation for adding FPCR handling to the
AArch64 backend, in order to prevent it to from worsening the
generated code, but for targets that already have a similar register
it should improve things.
This patch affects code generation in several tests. The new code
looks better except for in Thumb2/LowOverheadLoops/memcall.ll where
we perform PRE but the LowOverheadLoops transformation then undoes
it. Also in AMDGPU/selectcc-opt.ll the CHECK makes things look worse,
but actually the function as a whole is better (as a MOV is PRE'd).
Differential Revision: https://reviews.llvm.org/D136675
Nikita Popov [Wed, 2 Nov 2022 13:47:57 +0000 (14:47 +0100)]
[CVP] Add test for icmp without constant operand (NFC)
We should still be able to fold comparisons based on ranged in
this case.
OCHyams [Wed, 2 Nov 2022 13:42:52 +0000 (13:42 +0000)]
[Assignment Tracking][1/*] Add initial docs for Assignment Tracking
The Assignment Tracking debug-info feature is outlined in this RFC:
https://discourse.llvm.org/t/
rfc-assignment-tracking-a-better-way-of-specifying-variable-locations-in-ir
Add documentation outlining the intent and design.
Sanjay Patel [Wed, 2 Nov 2022 13:15:11 +0000 (09:15 -0400)]
[InstCombine] fold mul with decremented "shl -1" factor (2nd try)
This is a corrected version of:
bc886e9b587b
I made a copy-paste error that created an "add" instead of the
intended "sub" on that attempt. The regression tests showed the
bug, but I overlooked that.
As I said in a comment on issue #58717, the bug reports resulting
from the botched patch confirm that the pattern does occur in
many real-world applications, so hopefully eliminating the multiply
results in better code.
I added one more regression test in this version of the patch,
and here's an Alive2 proof to show that exact example:
https://alive2.llvm.org/ce/z/dge7VC
Original commit message:
This is a sibling to:
6064e92b0a84
...but we canonicalize the shl+add to shl+xor,
so the pattern is different than I expected:
https://alive2.llvm.org/ce/z/8CX16e
I have not found any patterns that are safe
to propagate no-wrap, so that is not included
here.
Differential Revision: https://reviews.llvm.org/D137157
OCHyams [Thu, 20 Oct 2022 14:40:14 +0000 (15:40 +0100)]
[DebugInfo] Fix minor debug info bug in deleteDeadLoop
Using a DebugVariable as the set key rather than std::pair<DIVariable *,
DIExpression *> ensures we don't accidently confuse multiple instances of
inlined variables.
Reviewed By: jryans
Differential Revision: https://reviews.llvm.org/D133303
Nikita Popov [Wed, 2 Nov 2022 13:21:38 +0000 (14:21 +0100)]
[BasicAA] Re-enable cs-cs-arm.ll test (PR58738)
Fixes https://github.com/llvm/llvm-project/issues/58738.
Matthias Springer [Wed, 2 Nov 2022 11:36:54 +0000 (12:36 +0100)]
[mlir][linalg] Fix crash in canonicalization pattern
This crash was due to incorrect usage of `hasTensorSemantics`, which has changed recently with DestinationStyleOpInterface. An op has tensor semantics if all of its inits and inputs are tensors. Previously, only inits needed to be tensors.
Differential Revision: https://reviews.llvm.org/D137243
Dmitry Makogon [Wed, 2 Nov 2022 12:55:56 +0000 (19:55 +0700)]
[Test] Add test exposing crash in SimpleLoopUnswitch
The test crashes with an assert in unswitchNontrivialInvariants.
Sanjay Patel [Wed, 2 Nov 2022 12:21:42 +0000 (08:21 -0400)]
[InstCombine] use logical-and matcher to avoid crash
Follow-on to:
ec0b406e16c44f1554
This should prevent crashing for example like issue #58552
by not matching a select-of-vectors-with-scalar-condition.
The test that shows a regression seems unlikely to occur
in real code.
This also picks up an optimization in the case where a real
(bitwise) logic op is used. We could already convert some
similar select ops to real logic via impliesPoison(), so
we don't see more diffs on commuted tests. Using commutative
matchers (when safe) might also handle one of the TODO tests.
Sanjay Patel [Wed, 2 Nov 2022 12:14:44 +0000 (08:14 -0400)]
[InstCombine] add tests for logical-and / logical-or folds; NFC
Similar to
29661fe94bf12ced1 - there are matching
deficiencies and a potential crash lurking in
these patterns.
Philip Pfaffe [Wed, 2 Nov 2022 10:51:18 +0000 (10:51 +0000)]
[wasm] Always treat DWARF expression addresses as load addresses
When resolving absolute addresses for DW_OP_addr or DW_OP_addrx, these are always load addresses rather than file addresses in wasm.
Reviewed By: DavidSpickett
Differential Revision: https://reviews.llvm.org/D135664
Aaron Ballman [Wed, 2 Nov 2022 11:56:43 +0000 (07:56 -0400)]
Reenable POSIX builtin library functions in gnu2x mode
gnu17 and earlier modes automatically expose several POSIX C APIs, and
this was accidentally disabled for gnu2x in
7d644e1215b376ec5e915df9ea2eeb56e2d94626.
This restores the behavior for gnu2x mode (without changing the
behavior in C standards modes instead of GNU modes).
Fixes #56607
Matt Devereau [Wed, 12 Oct 2022 09:20:05 +0000 (09:20 +0000)]
[InstCombine] Remove redundant splats in InstCombineVectorOps
Splatting the first vector element of the result of a BinOp, where any of the
BinOp's operands are the result of a first vector element splat can be simplified to
splatting the first vector element of the result of the BinOp
Differential Revision: https://reviews.llvm.org/D135876
Mirko Brkusanin [Tue, 1 Nov 2022 15:32:55 +0000 (16:32 +0100)]
[AMDGPU][NFC] Split MC tests into promoted from VOP1 to VOP3 and only VOP3
Differential Revision: https://reviews.llvm.org/D136149
Mirko Brkusanin [Tue, 1 Nov 2022 15:22:45 +0000 (16:22 +0100)]
[AMDGPU][NFC] Split MC tests into promoted from VOP2 to VOP3 and only VOP3
Differential Revision: https://reviews.llvm.org/D136148
Moritz Sichert [Wed, 2 Nov 2022 11:08:52 +0000 (12:08 +0100)]
[RuntimeDyld] Require x86_64-linux for IFUNC test
This test was introduced by
a667aa4de041816cb4865bce8f523228f2332ffa. It
assumes that it runs on x86_64 on linux, so require that for the test.
Jay Foad [Wed, 2 Nov 2022 11:03:59 +0000 (11:03 +0000)]
[AMDGPU] Constify a couple of methods. NFC.
Max Kazantsev [Wed, 2 Nov 2022 11:02:59 +0000 (18:02 +0700)]
[LoopPredication][NFCI] Perform 'visited' check before pushing to worklist
This prevents duplicates to be pushed into the stack and hypothetically
should reduce memory footprint on ugly cornercases with multiple repeating
duplicates in 'and' tree.
Tom Praschan [Wed, 2 Nov 2022 11:50:50 +0000 (12:50 +0100)]
[clangd] Index unscoped enums in class scope for code completion
Fixes https://github.com/clangd/clangd/issues/1082
Differential Revision: https://reviews.llvm.org/D136925
Ivan Butygin [Mon, 31 Oct 2022 13:16:03 +0000 (14:16 +0100)]
[mlir] Make `OperationFingerPrint` class public
It can be useful to external users as well for detecting if there were any changes in IR between passes.
Differential Revision: https://reviews.llvm.org/D137078
Anton Sidorenko [Tue, 1 Nov 2022 16:32:39 +0000 (19:32 +0300)]
[MachineCombiner] Add `const` to `shouldReduceRegisterPressure` arguments. NFC
Differential Revision: https://reviews.llvm.org/D137174
Moritz Sichert [Wed, 20 Jan 2021 16:08:47 +0000 (17:08 +0100)]
[RuntimeDyld] Added support for relocation of indirect functions
In ELF, symbols of type STT_GNU_IFUNC need to be resolved by calling the
function at the symbol's address. This is implemented by adding special
stubs for all symbols of that type.
Differential Revision: https://reviews.llvm.org/D105465
Nikita Popov [Wed, 2 Nov 2022 09:41:11 +0000 (10:41 +0100)]
[ValueLattice] Use DL-aware folding in getCompare()
Use DL-aware ConstantFoldCompareInstOperands() API instead of
ConstantExpr API. The practical effect of this is that SCCP can
now fold comparisons that require DL.
Nikita Popov [Wed, 2 Nov 2022 09:33:44 +0000 (10:33 +0100)]
[ValueLattice] Move getCompare() out of line (NFC)
This is a fairly large method that is unlikely to benefit from
inlining.
Nikita Popov [Wed, 2 Nov 2022 09:30:04 +0000 (10:30 +0100)]
[SCCP] Add test for icmp that requires DL to fold (NFC)
Nikita Popov [Tue, 1 Nov 2022 15:39:20 +0000 (16:39 +0100)]
Reapply [ValueLattice] Fix getCompare() for undef values
Relative to the previous attempt, this also updates the
ValueLattice unit tests.
-----
Resolve the TODO about incorrect getCompare() behavior. This can
be made more precise (e.g. by materializing the undef value and
performing constant folding on it), but for now just return an
unknown result to fix the correctness issue.
This should be NFC in terms of user-visible behavior, because the
only user of this method (SCCP) was already guarding against
UndefValue results.
Nikita Popov [Tue, 1 Nov 2022 15:23:26 +0000 (16:23 +0100)]
[AA] Remove some overloads (NFC)
Having all these instruction-specific overloads does not seem to
provide any compile-time benefit, so drop them in favor of the
generic methods accepting "const Instruction *". Only leave behind
the per-instruction AAQI overloads, which are part of the internal
implementation.
Matthias Springer [Wed, 2 Nov 2022 09:09:46 +0000 (10:09 +0100)]
[mlir][transform] Add PrintOp to transform dialect
This op dumps the associated payload IR to stderr. It has proven useful for printf-style debugging.
Differential Revision: https://reviews.llvm.org/D137151
Guillaume Chatelet [Wed, 2 Nov 2022 09:03:58 +0000 (09:03 +0000)]
[reland][libc] Switch to new implementation of mem* functions
The new framework makes it explicit which processor feature is being
used and allows for easier per platform customization:
- ARM cpu now uses trivial implementations to reduce code size.
- Memcmp, Bcmp and Memmove have been optimized for x86
- Bcmp has been optimized for aarch64.
This is a reland of https://reviews.llvm.org/D135134 (b3f1d58,
028414881381)
Reviewed By: courbet
Differential Revision: https://reviews.llvm.org/D136595
Muhammad Omair Javaid [Wed, 2 Nov 2022 09:06:43 +0000 (13:06 +0400)]
Revert "[FLANG] Fix MSVC + clang-cl build"
This reverts commit
870fbf8e300f3012470593ac087219a04d52857f.
Bjorn Pettersson [Tue, 1 Nov 2022 18:55:23 +0000 (19:55 +0100)]
[ConstraintElimination] Do not crash on vector GEP in decomposeGEP
Commit
359bc5c541ae4b02 caused
Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"'
failures in decomposeGEP when the GEP pointer operand is a vector.
Fix is to use DataLayout::getIndexTypeSizeInBits when fetching the
index size, as it will use the scalar type in case of a ptr vector.
Differential Revision: https://reviews.llvm.org/D137185
David Sherwood [Tue, 1 Nov 2022 15:09:26 +0000 (15:09 +0000)]
[AArch64][SVE2] Add the SVE2.1 ld1q gather & st1q scatter instructions
This patch adds the assembly/disassembly for the following instructions:
ld1q : Gather load quadwords
st1q : Scatter store quadwords
The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2022-09
Differential Revision: https://reviews.llvm.org/D137167
Guillaume Chatelet [Thu, 27 Oct 2022 17:01:14 +0000 (17:01 +0000)]
[libc] Improve testing of mem functions
This patch extracts the testing logic from `op_tests.cpp` into
`memory_check_utils.h` so we can reuse it for mem* function integration
tests.
This makes testing consistent and thorough.
For instance this catches a bug that got unnoticed during submission of
D136595 and D135134. Integration test for memcmp was only testing a
single size.
This also leverages ASAN to make sure that data is not read / written
outside permitted boundaries
Differential Revision: https://reviews.llvm.org/D136865
David Sherwood [Wed, 26 Oct 2022 10:40:02 +0000 (10:40 +0000)]
[AArch64][SVE2] Add the SVE2.1 while & pext predicate pair instructions
This patch adds the assembly/disassembly for the following
predicate pair instructions:
pext: Set pair of predicates from predicate-as-counter
whilelt: While incrementing signed scalar less than scalar
whilele: While incrementing signed scalar less than or equal to scalar
whilegt: While incrementing signed scalar greater than scalar
whilege: While incrementing signed scalar greater than or equal to scalar
whilelo: While incrementing unsigned scalar lower than scalar
whilels: While incrementing unsigned scalar lower or same as scalar
whilehs: While decrementing unsigned scalar higher or same as scalar
whilehi: While decrementing unsigned scalar higher than scalar
The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2022-09
Differential Revision: https://reviews.llvm.org/D136759
Muhammad Omair Javaid [Mon, 31 Oct 2022 20:53:16 +0000 (00:53 +0400)]
[FLANG] Fix MSVC + clang-cl build
Flang build on windows with MSVC environment and clang-cl compiler
requires clang_rt.builtin.${target} library. This patch allows us to
locate and include this link library. This is mostly needed for flang
runtime and associated unittests. Clang implicitly uses this library
while calling lld-link via clang driver however a standalone call to
lld-link doesnt link against clang_rt library on its own.
Differential Revision: https://reviews.llvm.org/D137112
Muhammad Omair Javaid [Wed, 2 Nov 2022 08:29:21 +0000 (12:29 +0400)]
[CLANG] XFAIL c-strings.c & volatile-1.c AArch64/Windows
c-strings.c and volatile-1.c failing due to alignment issue on WoA. I am
going to mark them as XFAIL for now.
Fangrui Song [Wed, 2 Nov 2022 08:26:48 +0000 (01:26 -0700)]
[asan][test] Convert some tests to use opaque pointers
Nikita Popov [Tue, 1 Nov 2022 13:24:41 +0000 (14:24 +0100)]
[X86] Use default attributes for more intrinsics
This is a continuation of D136939, adding the default attributes
(nosync, nofree, nocallback and willreturn) to more readnone
X86 intrinsics.
This still doesn't cover all of them...
Differential Revision: https://reviews.llvm.org/D137163
gonglingqin [Tue, 1 Nov 2022 11:31:30 +0000 (19:31 +0800)]
[LoongArch] Inline one-time-used variable and format codes. NFC.
Jean Perier [Wed, 2 Nov 2022 07:36:45 +0000 (08:36 +0100)]
[flang] lower intrinsic constants to HLFIR
Use the utility to lower Constant<T> that was split from current lowering
in https://reviews.llvm.org/D136955.
The difference in HLFIR is the addition of a fir.declare on constant
outlined in memory so that all the information about them is available.
Lowering to HLFIR is enabled in Brideg::genExprValue to allow testing
of scalar constant lowering.
Differential Revision: https://reviews.llvm.org/D137084
Siva Chandra Reddy [Tue, 1 Nov 2022 22:27:21 +0000 (22:27 +0000)]
[libc] Add definitions of a few missing macros and types.
Fangrui Song [Wed, 2 Nov 2022 07:17:16 +0000 (00:17 -0700)]
[hwasan] Remove no-op setDSOLocal. NFC
PrivateLinkage and HiddenVisibility are implicitly dso_local.
Zi Xuan Wu (Zeson) [Mon, 31 Oct 2022 10:07:37 +0000 (18:07 +0800)]
[CSKY] Fix the adjustFixupValue of fixup_csky_pcrel_uimm7_scale4
The logic to calculate the offset of lrw16 is complex and the Value
before adjustFixupValue should in range of 0 <= (Value >> 2) <= 0xfe.
It also influences the relax condition.
Zi Xuan Wu (Zeson) [Fri, 28 Oct 2022 02:26:32 +0000 (10:26 +0800)]
[CSKY] Fix .bss directive compling error created by --save-temps
.bss without symbol and num following can't be compiled in CSKY target, which is consistent to GCC behavior.
So when --save-temps generates .bss, we should UsesELFSectionDirectiveForBSS to avoid such error.
Michał Górny [Sat, 29 Oct 2022 17:03:37 +0000 (19:03 +0200)]
[compiler-rt] Switch from llvm-config to find_package(LLVM)
Replace the use of the deprecated `llvm-config` tool with LLVM's CMake
files for detecting LLVM in standalone builds.
Differential Revision: https://reviews.llvm.org/D137024
Carlos Alberto Enciso [Tue, 1 Nov 2022 12:41:04 +0000 (12:41 +0000)]
[llvm-debuginfo-analyzer] Fix memory leak reported by sanitizers.
The sanitizer reported memory leak issues; the command line
used in the test case is:
llvm-debuginfo-analyzer --attribute=level
--print=instructions
pr-incorrect-instructions-dwarf-clang.o
When dealing with logical instruction lines associated with
an artificial logical scope, skip the process of finding
their enclosing scope. Just add them to the scope.
Create logical debug lines only if the command line specifies:
--print=lines or --print=elements or --print=all
Reviewed By: jryans, vitalybuka
Differential Revision: https://reviews.llvm.org/D137156
Jan Svoboda [Wed, 2 Nov 2022 04:57:42 +0000 (21:57 -0700)]
[clang][modules][deps] System module maps might not be affecting
The dependency scanner relies on the module map filtering logic in `ASTWriter`. The algorithm currently considers all system module maps affecting, which is not only sub-optimal, but can also cause failures when building a module explicitly (see attached test case).
This patch applies the same filtering logic to system module maps.
Reviewed By: Bigcheese
Differential Revision: https://reviews.llvm.org/D136007
chenglin.bi [Wed, 2 Nov 2022 05:11:35 +0000 (13:11 +0800)]
[AArch64] Improve codegen for shifted mask op
The special case for bit extraction pattern is `((x >> C) & mask) << C`.
It can be combined to `x & (mask << C)` by return true in isDesirableToCommuteWithShift.
Fix: #56427
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D136014
Thomas Raoux [Tue, 1 Nov 2022 06:25:47 +0000 (06:25 +0000)]
[mlir][vector] Fix distribution of scf.for with value coming from above
When a value used in the forOp is defined outside the region but within
the parent warpOp we need to return and distribute the value to pass it
to new operations created within the loop.
Also simplify the lambda interface.
Differential Revision: https://reviews.llvm.org/D137146
Johannes Doerfert [Fri, 7 Oct 2022 18:43:23 +0000 (11:43 -0700)]
[Attributor][NFCI] Move MemIntrinsic handling into the initializer
The handling for MemIntrinsic is not dependent on optimistic
information, no need to put it in update for now. Added a TODO though.
Johannes Doerfert [Fri, 7 Oct 2022 18:37:37 +0000 (11:37 -0700)]
[Attributor][NFC] Hide verbose output behind `attributor-verbose`
Johannes Doerfert [Fri, 7 Oct 2022 13:34:29 +0000 (06:34 -0700)]
[OpenMP] Utilize the "non-uniform-workgroup" to simplify DeviceRTL
OpenMP offloading always uses uniform workgroups, see
https://reviews.llvm.org/D135374. The runtime doesn't need to handle
non-uniform workgroups at all either.
Differential Revision: https://reviews.llvm.org/D135444
Craig Topper [Wed, 2 Nov 2022 03:03:41 +0000 (20:03 -0700)]
Revert "[RISCV] Enable the LocalStackSlotAllocation pass support"
This reverts commit
82c820b95cf7ec284baf182cf838ca9e26758098.
This failed llvm-testsuite in our downstream and a similar issue
was reported by @rogfer01.
Jan Svoboda [Wed, 2 Nov 2022 02:23:51 +0000 (19:23 -0700)]
[clang][modules] Account for non-affecting inputs in `ASTWriter`
In D106876, we stopped serializing module map files that didn't affect compilation of the current module.
However, since each `SourceLocation` is simply an offset into `SourceManager`'s global buffer of concatenated input files in, these need to be adjusted during serialization. Otherwise, they can incorrectly point after the buffer or into subsequent input file.
This patch starts adjusting `SourceLocation`s, `FileID`s and other `SourceManager` offsets in `ASTWriter`.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D136624
Jan Svoboda [Wed, 2 Nov 2022 02:19:06 +0000 (19:19 -0700)]
[clang][modules] NFCI: Avoid unnecessary serialization logic for non-affecting files
This patch delays some `ASTWriter` logic until after we've checked whether the source location entry we're serializing as an affecting file or not.
Depends on D137214.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D137216
Konstantin Varlamov [Wed, 2 Nov 2022 02:20:08 +0000 (19:20 -0700)]
[libc++] Use stack buffers for uninitialized storage in tests.
This makes the tests more minimal, and in particular it avoids relying on a complete `<cstdlib>`, which may not be available on all platforms.
Differential Revision: https://reviews.llvm.org/D137188
Jan Svoboda [Wed, 2 Nov 2022 02:11:24 +0000 (19:11 -0700)]
[clang] NFC: Extract lower-level SourceManager functions
This is a prep-patch for D136624 which allows querying `SourceManager` with raw offsets instead of `SourceLocation`s.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D137215
Jan Svoboda [Wed, 2 Nov 2022 02:06:54 +0000 (19:06 -0700)]
[clang][modules] NFCI: Scaffolding for serialization of adjusted SourceManager offsets
This patch is a NFC prep for D136624, where we start adjusting offsets into `SourceManager`.
Depends on D137213.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D137214
Jan Svoboda [Wed, 2 Nov 2022 01:57:41 +0000 (18:57 -0700)]
[clang][modules] NFCI: Pragma diagnostic mappings: write/read FileID instead of SourceLocation
For pragma diagnostic mappings, we always write/read `SourceLocation` with offset 0. This is equivalent to just writing a `FileID`, which is exactly what this patch starts doing.
Depends on D137211.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D137213
Jan Svoboda [Wed, 2 Nov 2022 01:45:55 +0000 (18:45 -0700)]
[clang][modules] NFCI: Unify FileID writing/reading
This patch adds new functions for writing/reading `FileID`s and uses them to replace some ad-hoc code.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D137211
Matt Arsenault [Tue, 18 Jun 2019 23:03:09 +0000 (19:03 -0400)]
LangRef: Attempt to formulate some rules for addrspacecast
Some work will be needed to comply with these rules for non-integral
pointers.
Vitaly Buka [Wed, 2 Nov 2022 00:04:10 +0000 (17:04 -0700)]
Revert "[Sanitizers] Modified __aarch64__ to use the 64 bit version of the allocator."
We need to land asan_allocator.h patches first.
This reverts commit
75a8cdbc0659dc20746f31721cc48ef00c49f746.
bixia1 [Tue, 1 Nov 2022 23:55:24 +0000 (16:55 -0700)]
[mlir][sparse] Fix windows build.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D137210
Jan Svoboda [Tue, 1 Nov 2022 23:53:46 +0000 (16:53 -0700)]
[clang][modules] NFC: Remove unused lambda argument
Hongtao Yu [Tue, 1 Nov 2022 22:17:57 +0000 (15:17 -0700)]
[llvm-profgen] Fix a typo in collectProfiledFunctions
As titled. The change should have minimal impact since the targets of branch samples are mostly covered by range samples.
Reviewed By: wenlei, wlei
Differential Revision: https://reviews.llvm.org/D137203
Weverything [Tue, 4 Oct 2022 21:34:10 +0000 (14:34 -0700)]
Fix DenseMap with APInt keys
The empty key value for APInt was colliding with a valid zero-width
APInt. Change the internal value of empty key and tombstone values
for APInt to avoid this collision.
Fixes: https://github.com/llvm/llvm-project/issues/58013
Differential Revision: https://reviews.llvm.org/D135741
Siva Chandra Reddy [Tue, 1 Nov 2022 23:18:34 +0000 (23:18 +0000)]
[libc][Obvious] Fix a typo in a CMake file.
Siva Chandra Reddy [Tue, 1 Nov 2022 23:13:57 +0000 (23:13 +0000)]
[libc] Skip setjmp tests under sanitizers.
Amara Emerson [Tue, 25 Oct 2022 03:51:24 +0000 (20:51 -0700)]
[AArch64][GlobalISel] Add a simple cross-regclass copy optimization post-selection.
This does some trivial cross-regclass folding, where we can either do some extra
constraining to eliminate the copy or modify uses to use a smaller regclass.
There are minor code size improvements on average.
Program size.__text
before after diff
tramp3d-v4/tramp3d-v4 366000.00 366012.00 0.0%
mafft/pairlocalalign 248196.00 248188.00 -0.0%
7zip/7zip-benchmark 568612.00 568592.00 -0.0%
kimwitu++/kc 434704.00 434676.00 -0.0%
Bullet/bullet 456128.00 456096.00 -0.0%
sqlite3/sqlite3 284136.00 284100.00 -0.0%
ClamAV/clamscan 381492.00 381396.00 -0.0%
SPASS/SPASS 412052.00 411944.00 -0.0%
lencod/lencod 428060.00 427912.00 -0.0%
consumer-typeset/consumer-typeset 413148.00 411116.00 -0.5%
Geomean difference -0.1%
Differential Revision: https://reviews.llvm.org/D136793
Siva Chandra Reddy [Tue, 1 Nov 2022 06:18:12 +0000 (06:18 +0000)]
[libc] Add x86_64 implementation of setjmp and longjmp.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D137147
bixia1 [Mon, 31 Oct 2022 04:55:25 +0000 (21:55 -0700)]
[mlir][sparse] Add rewriting rule for the convert operator.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D136301
serge-sans-paille [Sun, 30 Oct 2022 17:25:04 +0000 (18:25 +0100)]
Honor LLVM_LIBDIR_SUFFIX
Some distribution install libraries under lib64. LLVM supports this
through LLVM_LIBDIR_SUFFIX, have bolt do the same.
Differential Revision: https://reviews.llvm.org/D137039
Eric Kunze [Tue, 1 Nov 2022 22:09:56 +0000 (15:09 -0700)]
[mlir][TOSA]Add optional attributes to TOSA custom op
The implementation_attrs attr allows passing of backend specific
attributes to TOSA custom ops.
Also adds a config option to avoid namespace collisions on the
identifier.
Reviewed By: rsuderman
Differential Revision: https://reviews.llvm.org/D137133
Aaron Puchert [Tue, 1 Nov 2022 21:26:40 +0000 (22:26 +0100)]
[llvm-c] Harmonize usage of unwrap (NFC)
Some places were using unwrap<T>(x) = cast<T>(unwrap(x)), even though
the unwrapped value already had type T. Removing the template argument
makes it clear that no cast is intended.
Other places were using cast<T>(unwrap(x)), we replace that with the
shorthand unwrap<T>(x) for consistency.
bipmis [Tue, 1 Nov 2022 21:49:44 +0000 (21:49 +0000)]
Add tests which need right Insert Point for merged load
Nicolas Vasilache [Thu, 14 Jul 2022 15:55:03 +0000 (08:55 -0700)]
[mlir][Linalg] Drop usage of tileWithLinalgTilingOptions in the structured.tile transform
This is on a path to deprecation.
Context: https://discourse.llvm.org/t/psa-retire-tileandfuselinalgops-method/63850
As the interface-based transformation is more generic, some additional folding of AffineMin/MaxOp and some extra canonicalizations are needed.
This can be further evolved.
Differential Revision: https://reviews.llvm.org/D137195
Paul Robinson [Tue, 1 Nov 2022 21:14:13 +0000 (14:14 -0700)]
Patch up attributes on a newly enabled test
Felipe de Azevedo Piovezan [Fri, 28 Oct 2022 15:39:17 +0000 (11:39 -0400)]
[lldb] Document QSetDetachOnError packet
The packet was introduced in
106d02866d4d54b09c08e6a12915dba58e709294.
Differential Revision: https://reviews.llvm.org/D136958
Aaron Ballman [Tue, 1 Nov 2022 20:54:08 +0000 (16:54 -0400)]
Fix release note indentation; NFC
Katherine Rasmussen [Mon, 31 Oct 2022 17:53:04 +0000 (10:53 -0700)]
[flang] Add atomic_or to list of intrinsics
Add the atomic subroutine, atomic_or, to the list of
intrinsic subroutines, add its last dummy argument to a check
for a coindexed-object, and update test.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D137097
Paul Robinson [Mon, 24 Oct 2022 15:34:30 +0000 (08:34 -0700)]
[lit][REQUIRES] Fix some tests with incorrect REQUIRES clauses
These weren't running anywhere because of bad specifications.
One test has bit-rotted and had to be XFAILed, the rest are okay.
Differential Revision: https://reviews.llvm.org/D136612
Kirill Stoimenov [Mon, 31 Oct 2022 23:29:39 +0000 (23:29 +0000)]
[Sanitizers] Modified __aarch64__ to use the 64 bit version of the allocator.
This change will switch SizeClassAllocator32 to SizeClassAllocator64 on ARM. This might potentially affect ARM platforms with 39-bit address space. This addresses [[ https://github.com/google/sanitizers/issues/703 | issues/703 ]], but unlike [[ https://reviews.llvm.org/D60243 | D60243 ]] it defaults to 64 bit allocator.
Reviewed By: vitalybuka, MaskRay
Differential Revision: https://reviews.llvm.org/D137136
Sanjay Patel [Tue, 1 Nov 2022 20:26:20 +0000 (16:26 -0400)]
[InstCombine] use logical-or matcher to avoid crash
This should prevent crashing for the example in issue #58552
by not matching a select-of-vectors-with-scalar-condition.
A similar change is likely needed for the related fold to
properly fix that kind of bug.
The test that shows a regression seems unlikely to occur
in real code.
This also picks up an optimization in the case where a real
(bitwise) logic op is used. We could already convert some
similar select ops to real logic via impliesPoison(), so
we don't see more diffs on commuted tests. Using commutative
matchers (when safe) might also handle one of the TODO tests.
Sanjay Patel [Tue, 1 Nov 2022 19:14:47 +0000 (15:14 -0400)]
[InstCombine] add tests for logical-and / logical-or folds; NFC
Valentin Clement [Tue, 1 Nov 2022 20:46:07 +0000 (21:46 +0100)]
[flang] Handle pointer assignment with polymorphic entities
This patch forces pointer and allocatable polymorphic entities to be
tracked as descriptor. It also enables the pointer assignment between
polymorphic entities. Pointer association between a non-polymorphic
pointer and a polyrmophic target might require some more work as
per 10.2.2.3 point 1.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D137150
Philip Reames [Tue, 1 Nov 2022 20:34:59 +0000 (13:34 -0700)]
Address post commit review feedback from D137046
It was pointed out the verifier rejects inttoptr and ptrtoint casts with inputs and outputs whose scalability doesn't match. As such, checking the input type separately from the type of the cast itself is redundant.
Arthur Eubanks [Fri, 21 Oct 2022 18:05:04 +0000 (11:05 -0700)]
[CodeView][clang] Add flag to disable emitting command line into CodeView
In https://reviews.llvm.org/D80833, there were concerns about
determinism emitting the commandline into CodeView. We're actually
hitting these when running clang-cl on Linux (cross compiling) versus on
Windows (e.g. -fmessage-length being inferred on terminals).
Add -g[no-]codeview-command-line to enable/disable this feature.
It's still on by default to preserve the current state of clang.
Reviewed By: thakis, rnk
Differential Revision: https://reviews.llvm.org/D136474