Phoebe Wang [Thu, 1 Dec 2022 14:31:51 +0000 (22:31 +0800)]
[X86][FP16] Do not combine fminnum/fmaxnum for FP16 emulation
Under the emulation situation, we lack native fmin/fmax instruction support.
Fixes #59258
Reviewed By: skan, spatel
Differential Revision: https://reviews.llvm.org/D139078
Oleksandr "Alex" Zinenko [Thu, 1 Dec 2022 15:22:24 +0000 (16:22 +0100)]
[mlir] use correct markdown headers in TensorOps.td
The `====` underline is for h1, we actually need h4. This makes TOC look bad.
Paul Robinson [Thu, 1 Dec 2022 15:20:35 +0000 (07:20 -0800)]
[PS4/PS5] Canonicalize tests to use 'target=.*-(ps4|ps5)'
This allows grepping for ps4 or ps5 to continue to work.
Sander de Smalen [Thu, 1 Dec 2022 11:00:41 +0000 (11:00 +0000)]
Reland "[AArch64][SME]: Generate streaming-compatible code for ld2-alloca."
Phabricator review for this patch was D138791
Sander de Smalen [Thu, 1 Dec 2022 14:38:01 +0000 (14:38 +0000)]
Reland "[AArch64][SME]: Add precursory tests for D138791"
This reverts commit
06846596eb1768eea06778a5b6da31145e84e461.
Lorenzo Chelini [Thu, 1 Dec 2022 14:44:03 +0000 (15:44 +0100)]
Revert "[MLIR] Introduce constraint attributes for DenseArrayAttr"
This reverts commit
dd0de4dca92cd6affafb47f788b64e99187168f1.
Build on mlir-windows fails:
Step 6 (build-check-mlir-build-only) failure: build (failure)
C:\buildbot\mlir-x64-windows-ninja\build\tools\mlir\test\lib\Dialect\Test\TestOps.cpp.inc(928): error C2220: the following warning is treated as an error
C:\buildbot\mlir-x64-windows-ninja\build\tools\mlir\test\lib\Dialect\Test\TestOps.cpp.inc(928): warning C4804: '>': unsafe use of type 'bool' in operation
C:\buildbot\mlir-x64-windows-ninja\build\tools\mlir\test\lib\Dialect\Test\TestOps.cpp.inc(7419): warning C4804: '>': unsafe use of type 'bool' in operation
Lorenzo Chelini [Thu, 1 Dec 2022 14:31:16 +0000 (15:31 +0100)]
[MLIR][Transform] Fix top-level comment (NFC)
Valentin Clement [Thu, 1 Dec 2022 14:25:05 +0000 (15:25 +0100)]
[flang][NFC] Remove debugging line in convert op
This line should not have made it to the final patch.
Vlad Serebrennikov [Thu, 1 Dec 2022 14:09:28 +0000 (17:09 +0300)]
[clang] Add test for CWG360
P1787: "CWG360 is resolved by applying access control to using-declarations."
[[ http://eel.is/c++draft/class.access#general-4.sentence-3 | class.access.general#4 ]]: "When a using-declarator is named, access control is applied to it, not to the declarations that replace it."
Reviewed By: #clang-language-wg, aaron.ballman
Differential Revision: https://reviews.llvm.org/D139090
Lorenzo Chelini [Tue, 29 Nov 2022 13:51:34 +0000 (14:51 +0100)]
[MLIR][Tensor] Add canonicalization for UnpackOp
pack(unpack(x)) -> x
Reviewed By: hanchung
Differential Revision: https://reviews.llvm.org/D138917
Lorenzo Chelini [Tue, 29 Nov 2022 18:45:37 +0000 (19:45 +0100)]
[MLIR] Introduce constraint attributes for DenseArrayAttr
- `DenseArrayStrictlyPositive` all elements are required to be > 0.
Returns true if the range is empty.
- `DenseArrayNonNegative` all elements are required to be >= 0. Returns
true if the range is empty.
Both constraints will simplify verifier logic as we move from using `I64ArrayAttr` to `DenseI64ArrayAttr`.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D138988
Simon Pilgrim [Thu, 1 Dec 2022 13:41:36 +0000 (13:41 +0000)]
[X86] Remove unnecessary RDRAND overrides from znver1/znver2 model
Reported by D138359 - the overrides matched the base class schedule definition (its been flagged as WriteMicrocoded instead of WriteSystem but the models define both the same)
Anton Sidorenko [Thu, 20 Oct 2022 15:07:43 +0000 (18:07 +0300)]
[MachineCombiner][RISCV] Make hasReassociableSibling virtual and override it for RISCV
To check reassociation correctness for RISCV, we must ensure that the root and
it's sibling have equal rounding modes (for floating point instructions).
`hasReassociableSibling` is a good place to make additional target-dependend
checks.
This patch allows us to enable default machine combiner mechanism to gather
reassociation candidates on RISCV.
Differential Revision: https://reviews.llvm.org/D138302
Valentin Clement [Thu, 1 Dec 2022 13:25:04 +0000 (14:25 +0100)]
[flang] Avoid verifier error when emboxing trivial type to unlimited polymorphic entity
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D138989
Tomas Matheson [Thu, 1 Dec 2022 13:06:54 +0000 (13:06 +0000)]
Revert "[AArch64] Improve TargetParser API"
Buildbots unhappy about constexpr function.
This reverts commit
450de8008bb0ccb5dfc9dd69b6f5b434158772bd.
Tomas Matheson [Fri, 18 Nov 2022 11:20:05 +0000 (11:20 +0000)]
[AArch64] Improve TargetParser API
The TargetParser depends heavily on a collection of macros and enums to tie
together information about architectures, CPUs and extensions. Over time this
has led to some pretty awkward API choices. For example, recently a custom
operator-- has been added to the enum, which effectively turns iteration into
a graph traversal and makes the ordering of the macro calls in the header
significant. More generally there is a lot of string <-> enum conversion
going on. I think this shows the extent to which the current data structures
are constraining us, and the need for a rethink.
Key changes:
- Get rid of Arch enum, which is used to bind fields together. Instead of
passing around ArchKind, use the named ArchInfo objects directly or via
references.
- The list of all known ArchInfo becomes an array of pointers.
- ArchKind::operator-- is replaced with ArchInfo::implies(), which defines
which architectures are predecessors to each other. This allows features
from predecessor architectures to be added in a more intuitive way.
- Free functions of the form f(ArchKind) are converted to ArchInfo::f(). Some
functions become unnecessary and are deleted.
- Version number and profile are added to the ArchInfo. This makes comparison
of architectures easier and moves a couple of functions out of clang and
into AArch64TargetParser.
- clang::AArch64TargetInfo ArchInfo is initialised to Armv8a not INVALID.
- AArch64::ArchProfile which is distinct from ARM::ArchProfile
- Give things sensible names and add some comments.
Differential Revision: https://reviews.llvm.org/D138792
Tomas Matheson [Fri, 18 Nov 2022 13:05:11 +0000 (13:05 +0000)]
[AArch64TargetParser] getArchFeatures -> getArchFeature
Differential Revision: https://reviews.llvm.org/D138753
Tomas Matheson [Sat, 26 Nov 2022 13:44:36 +0000 (13:44 +0000)]
[AArch64] Remove unused fields from CPUs in TargetParser
Differential Revision: https://reviews.llvm.org/D138754
Simon Pilgrim [Wed, 30 Nov 2022 17:58:48 +0000 (17:58 +0000)]
[X86] Remove unnecessary INTO overrides from znver1/znver2 model
Reported by D138359 - the overrides matched the base class schedule definition (its been flagged as WriteMicrocoded instead of WriteSystem but the models define both the same)
Simon Pilgrim [Wed, 30 Nov 2022 17:47:55 +0000 (17:47 +0000)]
[X86] Remove unnecessary VPERMPS/VPERMDrr overrides from znver3 model
Reported by D138359 - the overrides matched the base class schedule definition (in the case of VPERMDYrr it was entirely replacing uses of WriteVarShuffle256 so could that could be adjusted directly)
Simon Pilgrim [Wed, 30 Nov 2022 15:42:25 +0000 (15:42 +0000)]
[X86] Remove unnecessary XADD*rr overrides from bdver2 model
Reported by D138359 - the overrides matched the base class schedule definition
Sam McCall [Thu, 1 Dec 2022 10:34:02 +0000 (11:34 +0100)]
[clangd] Log diagnostics if we failed to create a preamble.
Really we want these to be shown to the client, but the path to do so involves
storing them in
Bandaid for https://github.com/clangd/clangd/issues/1408
See https://github.com/clangd/clangd/issues/1399 for motivation
Differential Revision: https://reviews.llvm.org/D139088
Florian Hahn [Thu, 1 Dec 2022 12:07:51 +0000 (12:07 +0000)]
[DSE] Add tests for __memset_chk libcalls.
Nicolas Vasilache [Thu, 1 Dec 2022 11:48:23 +0000 (03:48 -0800)]
[mlir][Transform][NFC] Use a single rewriter instead of duplicating it everywhere
Differential Revision: https://reviews.llvm.org/D139094
Florian Hahn [Thu, 1 Dec 2022 11:37:06 +0000 (11:37 +0000)]
[DSE] Split off _chk libcall tests into separate file.
This keeps a clearer separation between tests and avoids growing the
libcalls.ll test too large.
Kadir Cetinkaya [Thu, 1 Dec 2022 10:57:33 +0000 (11:57 +0100)]
[include-cleaner] Use RAV instead of ASTMatchers in LocateSymbolTest
ASTMatchers are pulling in lots of dependencies that we don't really
need for just finding a decl based on name. So use a simple RAV instead.
Differential Revision: https://reviews.llvm.org/D139093
LLVM GN Syncbot [Thu, 1 Dec 2022 11:19:48 +0000 (11:19 +0000)]
[gn build] Port
89f36dd8f32f
LLVM GN Syncbot [Thu, 1 Dec 2022 11:19:48 +0000 (11:19 +0000)]
[gn build] Port
65d6d67fc9a9
WANG Xuerui [Thu, 1 Dec 2022 09:58:11 +0000 (17:58 +0800)]
[Object] Add some more LoongArch support
Add ELFObjectFileBase::getLoongArchFeatures, and return the proper ELF
relative reloc type for LoongArch.
Reviewed By: MaskRay, SixWeining
Differential Revision: https://reviews.llvm.org/D138016
David Sherwood [Thu, 1 Dec 2022 11:13:19 +0000 (11:13 +0000)]
Revert "[AArch64][SME]: Add precursory tests for D138791"
This reverts commit
45adca0f52af346a131163d1cc3e4a08baf7f0f1.
Nicolas Vasilache [Thu, 1 Dec 2022 10:56:33 +0000 (02:56 -0800)]
Revert "[WIP] Add support for MMA conversion for 1-D vector.transfer followed by a broadcast to 2-D"
This reverts commit
7db25f78db807da171f23bcbaff258c5677901d1.
This was mistakently stacked below (and committed) along with an NFC change.
Kadir Cetinkaya [Thu, 1 Dec 2022 10:48:55 +0000 (11:48 +0100)]
[include-cleaner] Attempt two at fixing buildbots
Nicolas Vasilache [Thu, 1 Dec 2022 10:07:50 +0000 (02:07 -0800)]
[mlir][Linalg][NFC] Improve debugging during vectorization
Make more systematic use of `notifyMatchFailure`.
Nicolas Vasilache [Wed, 30 Nov 2022 21:36:13 +0000 (13:36 -0800)]
[WIP] Add support for MMA conversion for 1-D vector.transfer followed by a broadcast to 2-D
Differential Revision: https://reviews.llvm.org/D139040
David Sherwood [Thu, 1 Dec 2022 10:46:44 +0000 (10:46 +0000)]
[AArch64] Fix test streaming-compatible-expand-masked-gather-scatter.ll
Fixes an issue introduced by D138588.
We should only run the test on a aarch64 registered target since it
makes use of a target-only flag.
Jean Perier [Thu, 1 Dec 2022 10:09:35 +0000 (11:09 +0100)]
[flang] lower F77 calls in HLFIR
Use recently added hlfir.associate/hlfir.end_associate to deal
with the cases where the actual argument is an expression.
Differential Revision: https://reviews.llvm.org/D139009
David Sherwood [Thu, 1 Dec 2022 09:53:13 +0000 (09:53 +0000)]
Revert "[AArch64][SME]: Generate streaming-compatible code for ld2-alloca."
This reverts commit
279c0a83aa22cd35d4b7c7c52b85d2a86f2528a7.
Guillaume Chatelet [Thu, 1 Dec 2022 10:19:16 +0000 (10:19 +0000)]
[libc][benchmark] more precise estimate of throughput
This patch increases precision by performing the integer divivion after the
multiplication.
Valentin Clement [Thu, 1 Dec 2022 10:18:12 +0000 (11:18 +0100)]
[flang] Make sure PointerNullifyDerived is called on pointer array
Record type was not correctly retrived so the runtime call was not
produced correctly.
Fix how the record type is retrived so the correct call is
produced.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D139084
Valentin Clement [Thu, 1 Dec 2022 10:12:01 +0000 (11:12 +0100)]
[flang] Use genExprBox for the rhs when calling PointerAssociate for unlimited polymorphic pointer
In D139019 the assumption was made that the rhs was also the MutableBox
but this is not a constraint. Use genExprBox instead. Also the allowed
conversion in D139019 was not correct. Remoed it since it is not needed anymore.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D139081
Guillaume Chatelet [Thu, 1 Dec 2022 10:06:36 +0000 (10:06 +0000)]
[reland][libc] Add bcopy
Differential Revision: https://reviews.llvm.org/D138994
Kadir Cetinkaya [Thu, 1 Dec 2022 10:02:04 +0000 (11:02 +0100)]
[include-cleaner] Fix build
Guillaume Chatelet [Thu, 1 Dec 2022 09:55:36 +0000 (09:55 +0000)]
Revert D138994 "[libc] Add bcopy"
Broke build bot
This reverts commit
186a15f7a9311a75f3c5e90243ea5d6d20878de1.
Guillaume Chatelet [Wed, 30 Nov 2022 10:49:23 +0000 (10:49 +0000)]
[libc] Add bcopy
Differential Revision: https://reviews.llvm.org/D138994
Kadir Cetinkaya [Mon, 5 Sep 2022 15:54:18 +0000 (17:54 +0200)]
[include-cleaner] Introduce symbol to location mapping
Creates a one to many mapping, by returning all the possible locations
providing a symbol. Also includes an "is definition" signal for the
location, that can be used for ranking afterwards.
This also takes care of stdlib symbols by having a variant of locations.
Depends on D135859.
Differential Revision: https://reviews.llvm.org/D135953
serge-sans-paille [Wed, 23 Nov 2022 06:45:59 +0000 (07:45 +0100)]
Cache memory buffer's name length
This avoids repeated calls to strlen while we already know its value.
When preprocessing sqlite3.c, this gives a surprising 2% speedup.
Full benchmark available here:
https://llvm-compile-time-tracker.com/compare.php?from=
d14c2d408dccd8c6defa7d151e9a96be3cac8cc3&to=
04f0641c1cbdcd0bdbd11cd910ca6091420bf52e&stat=instructions:u
Recommit
1824432174b3166b40bce59477beb5821170748e, with restored '\0' at the end of buffer name.
Differential Revision: https://reviews.llvm.org/D138555
Matthias Springer [Thu, 1 Dec 2022 08:16:17 +0000 (09:16 +0100)]
[mlir] Fix build breakage introduced by D139026
Matthias Springer [Wed, 30 Nov 2022 17:27:30 +0000 (18:27 +0100)]
[mlir][linalg][transform] Add structured.replace op
This op is useful for debugging/experiments and allows users to replace ops (without arguments + IsolatedFromAbove) with the given op in the region of transform op.
Differential Revision: https://reviews.llvm.org/D139026
Benjamin Kramer [Thu, 1 Dec 2022 07:58:37 +0000 (08:58 +0100)]
[MLIR][Transform] Disambiguate ternary operator for MSVC
mlir/lib/Dialect/SCF/TransformOps/SCFTransformOps.cpp(42): error C2446: ':': no conversion from 'OpTy' to 'OpTy'
with
[
OpTy=mlir::scf::ForOp
]
and
[
OpTy=mlir::AffineForOp
]
mlir/lib/Dialect/SCF/TransformOps/SCFTransformOps.cpp(42): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Carlos Galvez [Thu, 3 Nov 2022 11:04:10 +0000 (11:04 +0000)]
[clang-tidy] Add misc-use-anonymous-namespace check
Differential Revision: https://reviews.llvm.org/D137340
Shoaib Meenai [Thu, 1 Dec 2022 07:09:28 +0000 (23:09 -0800)]
[Driver] Add test for -stdlib++-isystem with -nostdinc
This further clarifies the intent of the flag.
Craig Topper [Thu, 1 Dec 2022 06:51:57 +0000 (22:51 -0800)]
[RISCV] Use Register instead of unsigned. NFC
Christian Sigg [Tue, 15 Nov 2022 13:19:35 +0000 (14:19 +0100)]
[mlir] Change scf::LoopNest to store 'results'.
This fixes the case where scf::LoopNest::loops is empty.
Change LoopVector and ValueVector to SmallVector.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D136926
Freddy Ye [Thu, 1 Dec 2022 05:47:25 +0000 (13:47 +0800)]
[X86] Add ExpandLargeFpConvert Pass and enable for X86
As stated in
https://discourse.llvm.org/t/rfc-llc-add-expandlargeintfpconvert-pass-for-fp-int-conversion-of-large-bitint/65528,
this implementation is very similar to ExpandLargeDivRem, which expands
‘fptoui .. to’, ‘fptosi .. to’, ‘uitofp .. to’, ‘sitofp .. to’ instructions
with a bitwidth above a threshold into auto-generated functions. This is
useful for targets like x86_64 that cannot lower fp convertions with more
than 128 bits. The expanded nodes are referring from the IR generated by
`compiler-rt/lib/builtins/floattidf.c`, `compiler-rt/lib/builtins/fixdfti.c`,
and etc.
Corner cases:
1. For fp16: as there is no related builtins added in compliler-rt. So I
mainly utilized the fp32 <-> fp16 lib calls to implement.
2. For fp80: as this pass is soft fp emulation and no fp80 instructions can
help in this problem. I recommend users to deprecate this usage. For now, the
implementation uses fp128 as the temporary conversion type and inserts
fptrunc/ext at top/end of the function.
3. For bf16: as clang FE currently doesn't support bf16 algorithm operations
(convert to int, float, +, -, *, ...), this patch doesn't consider bf16 for
now.
4. For unsigned FPToI: since both default hardware behaviors and libgcc are
ignoring "returns 0 for negative input" spec. This pass follows this old way
to ignore unsigned FPToI. See this example:
https://gcc.godbolt.org/z/bnv3jqW1M
The end-to-end tests are uploaded at https://reviews.llvm.org/D138261
Reviewed By: LuoYuanke, mgehre-amd
Differential Revision: https://reviews.llvm.org/D137241
Xiang1 Zhang [Mon, 28 Nov 2022 07:02:04 +0000 (15:02 +0800)]
Enhance stack protector for calling no return function
Reviewed By: LuoYuanke, WangPengfei, lebedev.ri
Differential Revision: https://reviews.llvm.org/D138774
Greg Clayton [Thu, 24 Nov 2022 04:28:03 +0000 (20:28 -0800)]
Report which modules have forcefully completed types in statistics.
A previous patch added the ability for us to tell if types were forcefully completed. This patch adds the ability to see which modules have forcefully completed types and aggregates the number of modules with forcefully completed types at the root level.
We add a module specific setting named "debugInfoHadIncompleteTypes" that is a boolean value. We also aggregate the number of modules at the root level that had incomplete debug info with a key named "totalModuleCountWithIncompleteTypes" that is a count of number of modules that had incomplete types.
Differential Revision: https://reviews.llvm.org/D138638
Lei Zhang [Thu, 1 Dec 2022 05:05:16 +0000 (05:05 +0000)]
[mlir][spirv] Fix missing parameter usage
This was accidentially removed during refactoring.
Reviewed By: kuhar
Differential Revision: https://reviews.llvm.org/D139071
Craig Topper [Thu, 1 Dec 2022 04:54:27 +0000 (20:54 -0800)]
[RISCV] Add ANDI to getRegAllocationHints.
Craig Topper [Thu, 1 Dec 2022 04:10:13 +0000 (20:10 -0800)]
[RISCV] Replace hardcoded constant with OPIVI.Value in tablegen. NFC
Hassnaa Hamdi [Thu, 1 Dec 2022 03:44:42 +0000 (03:44 +0000)]
[AArch64][SME][NFC]: Enable lowering truncate for enhancement.
Enable lowering truncate to enhance the generated code.
Hassnaa Hamdi [Tue, 29 Nov 2022 16:40:37 +0000 (16:40 +0000)]
[AArch64][SME]: Scalarize masked gather/scatter in streaming mode.
Add testing files:
- streaming-compatible-expand-masked-gather-scatter.ll
Reviewed By: david-arm, sdesmalen
Differential Revision: https://reviews.llvm.org/D138588
Hassnaa Hamdi [Wed, 30 Nov 2022 09:45:47 +0000 (09:45 +0000)]
[AArch64][SME]: Generate streaming-compatible code for ld2-alloca.
To generate code compatible to streaming mode:
- disable lowering interleaved load to avoid generating invalid NEON intrinsics.
Reviewed By: sdesmalen
Differential Revision: https://reviews.llvm.org/D138791
Hassnaa Hamdi [Mon, 28 Nov 2022 12:40:46 +0000 (12:40 +0000)]
[AArch64][SME]: Add precursory tests for D138791
Testing files:
- ld2-alloca.ll
Xiang1 Zhang [Thu, 1 Dec 2022 01:23:44 +0000 (09:23 +0800)]
[AMX] Support AMX-FP16 new intrinsic interface
We support AMX-FP16 isa in https://reviews.llvm.org/D135941 now.
The old intrinsic interface need to manually write tile registers.
So we support its new intrinsic interface to let it be able to do register allocation.
Reviewed By: LuoYuanke
Differential Revision: https://reviews.llvm.org/D138987
gonglingqin [Thu, 1 Dec 2022 01:18:00 +0000 (09:18 +0800)]
[LoongArch] Add remaining intrinsics for CRC check instructions
After D137316 implements the intrinsics of the first crc check instruction
and related diagnosis, this patch implements the intrinsics of all remaining
crc check instructions.
Differential Revision: https://reviews.llvm.org/D138418
Hassnaa Hamdi [Tue, 29 Nov 2022 12:57:56 +0000 (12:57 +0000)]
[AArch64][SME]: Add streaming-compatible testing files.
Testing files:
- int-compares.ll
- int-immediates.ll
- log-reduce.ll
Reviewed By: david-arm, sdesmalen
Differential Revision: https://reviews.llvm.org/D138717
LiaoChunyu [Wed, 30 Nov 2022 12:23:55 +0000 (20:23 +0800)]
[OpenMP][LegacyPM] Remove OpenMPOptCGSCCLegacyPass
Using the legacy pass manager for the optimization pipeline is deprecated.
I see the new PM is available.
Reviewed By: aeubanks, jdoerfert
Differential Revision: https://reviews.llvm.org/D139004
Hassnaa Hamdi [Tue, 29 Nov 2022 12:58:47 +0000 (12:58 +0000)]
[AArch64][SME]: Add streaming-compatible testing files.
Testing files:
- limit-duplane.ll
- optimize-ptrue.ll
- ptest.ll
Reviewed By: david-arm, sdesmalen
Differential Revision: https://reviews.llvm.org/D138768
River Riddle [Tue, 29 Nov 2022 02:48:12 +0000 (18:48 -0800)]
[mlir] Update HeapAsmResourceBlob::allocate API to make alignment explicit
This effectively matches the same API changes that were made to
UnmanagedAsmResourceBlob.
River Riddle [Tue, 29 Nov 2022 02:35:00 +0000 (18:35 -0800)]
[mlir] Cleanup lingering problems surrounding attribute/type aliases
This commit refactors attribute/type alias generation to be similar to how
we do it for operations, i.e. we generate aliases determined on what is
actually necessary when printing the IR (using a dummy printer for alias
collection). This allows for generating aliases only when necessary, and
also allows for proper propagation of when a nested alias can be deferred.
This also necessitated a fix for location parsing to actually parse aliases
instead of ignoring them.
Fixes #59041
Differential Revision: https://reviews.llvm.org/D138886
Shoaib Meenai [Thu, 1 Dec 2022 00:45:08 +0000 (16:45 -0800)]
[Driver] Only check -nostdinc++ for -stdlib++-isystem
A drive-by change in
53c98d85a8a609552448043d5512e70313b1eb1b made
-stdlib++-isystem be suppressed by -nostdinc and -nostdlibinc in
addition to -nostdinc++. However, that's contrary to the intent of the
flag. It's common to provide your own C++ headers (e.g. when building
libc++ by itself or as a compiler-rt dependency) but rely on the system
C headers, and having -stdlib++-isystem only look at -nostdinc++ allows
us to customize both the C header path (via -nostdinc or -nostdlibinc)
and the C++ header path (via -stdlib++-isystem) at the toolchain level
but still let users of the toolchain provide their own C++ headers. Add
a comment explaining the rationale to make it clearer.
Shoaib Meenai [Thu, 1 Dec 2022 00:41:31 +0000 (16:41 -0800)]
[runtimes] Fix runtimes-test-depends
The dependency list is stored in a global property, so we need to fetch
it to a variable before using that variable. We also need to add the
list contents as dependencies correctly.
Hassnaa Hamdi [Tue, 29 Nov 2022 12:57:01 +0000 (12:57 +0000)]
[AArch64][SME]: Add streaming-compatible testing files.
Testing files:
- subvector.ll
- permute-rev.ll
- permute-zip-uzp-trn.ll
- vector-shuffle.ll
Reviewed By: david-arm, sdesmalen
Differential Revision: https://reviews.llvm.org/D138683
Michael Jones [Thu, 14 Jul 2022 22:17:18 +0000 (15:17 -0700)]
[libc] add unsafe mode to strlen
The only safe way to implement strlen involves reading the string one
char at a time. It is faster to read in larger blocks, but this leads to
reading beyond the string boundary, which is undefined behavior. This
patch adds an implementation and flag to use this fast but unsafe
version of strlen.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D129808
Stephane Moore [Wed, 9 Nov 2022 19:07:53 +0000 (11:07 -0800)]
[clang-tidy] Suppress google-objc-avoid-throwing-exception in system macros 🫢
The google-objc-avoid-throwing-exception check enforces the Google
Objective-C Style Guide's prohibition on throwing exceptions in user
code but the check incorrectly triggers findings for code emitted from
system headers. This commit suppresses any findings that do not have
valid locations or are emitted from macros in system headers.
Avoid Throwing Exceptions, Google Objective-C Style Guide:
https://github.com/google/styleguide/blob/gh-pages/objcguide.md#avoid-throwing-exceptions
Test Notes:
Ran clang-tidy lit tests.
Reviewed By: gribozavr2
Differential Revision: https://reviews.llvm.org/D137738
Kirill Stoimenov [Thu, 1 Dec 2022 00:18:49 +0000 (00:18 +0000)]
[HWASAN] Modified __hwasan::Thread::unique_id_ to be u32 instead of u64.
This is needed for LSAN integration work. LSAN uses context to store thread_id << 32 + stack_id. In order to fit both we would need thread_id to be 32 bit.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D139060
Lei Zhang [Thu, 1 Dec 2022 00:35:41 +0000 (00:35 +0000)]
[mlir][spirv] Improve vector extract/insert element conversion
* Fix type conversions around positions--we need to use the
converted value from the adaptor.
* Convert constant position cases to composite extract/insert.
Reviewed By: kuhar
Differential Revision: https://reviews.llvm.org/D139057
Jakub Kuderski [Thu, 1 Dec 2022 00:25:39 +0000 (19:25 -0500)]
[mlir][spirv] Drop experimental LinalgToSPIRV pass
This experimental pass is unused and obsolete.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D139056
Lei Zhang [Thu, 1 Dec 2022 00:07:19 +0000 (19:07 -0500)]
[mlir][spirv] Check GlobalVariableOp result to be of pointer types
Querying the storage class in the verifier will assume the result
type is of pointer types. We need to check that's true first to
make sure it won't crash.
Reviewed By: kuhar
Differential Revision: https://reviews.llvm.org/D139053
Mircea Trofin [Wed, 30 Nov 2022 18:03:45 +0000 (10:03 -0800)]
[mlgo][nfc] Make `LoggedFeatureSpec` an implementation detail
It's an artifact very specific to using TFAgents during training, so it
belongs with ModelUnderTrainingRunner.
Differential Revision: https://reviews.llvm.org/D139031
Jakub Kuderski [Wed, 30 Nov 2022 23:52:54 +0000 (18:52 -0500)]
[mlir][vector] Reapply remaining cleanups from D139022. NFC.
It appears that structured bindings in function templates require extra
`template` keyword sparkled before `.cast<T>()` calls.
Peter Rong [Tue, 29 Nov 2022 02:42:11 +0000 (18:42 -0800)]
[FuzzMutate] New InsertPHINode strategy.
PHI Node can't be modeled like other instructions since its operand
number depends on predecessors. So we have a stand alone strategy for it.
Signed-off-by: Peter Rong <PeterRong96@gmail.com>
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D138959
LLVM GN Syncbot [Wed, 30 Nov 2022 22:46:01 +0000 (22:46 +0000)]
[gn build] Port
b95646fe7058
Jakub Kuderski [Wed, 30 Nov 2022 22:39:00 +0000 (17:39 -0500)]
[mlir][vector] Attempt to please gcc 9. NFC.
This is a post-commit fix to D139022.
Marco Elver [Wed, 30 Nov 2022 22:35:50 +0000 (23:35 +0100)]
Revert "Use-after-return sanitizer binary metadata"
This reverts commit
d3c851d3fc8b69dda70bf5f999c5b39dc314dd73.
Some bots broke:
- https://luci-milo.appspot.com/ui/p/fuchsia/builders/toolchain.ci/clang-linux-x64/
b8796062278266465473/overview
- https://lab.llvm.org/buildbot/#/builders/124/builds/5759/steps/7/logs/stdio
Jakub Kuderski [Wed, 30 Nov 2022 22:27:23 +0000 (17:27 -0500)]
Reapply "[mlir][vector] Clean up use of `llvm::zip` in `VectorOps.cpp`"
This reverts commit
0689edd68717df9218a6a8b2b3897263d36a5cc9.
Reapply D139022 without `enumerate` over `zip` to fix build errors on
gcc 9.4.
Jakub Kuderski [Wed, 30 Nov 2022 22:23:18 +0000 (17:23 -0500)]
Revert "[mlir][vector] Clean up use of `llvm::zip` in `VectorOps.cpp`"
This reverts commit
f22a573b2b8afaee88001168eeeb70c77f28a03e.
There's a buildbot that report compilation errors:
https://lab.llvm.org/buildbot/#/builders/199/builds/13507.
Roman Lebedev [Wed, 30 Nov 2022 22:16:21 +0000 (01:16 +0300)]
[NFC][SROA] Ensure that all check lines in SROA tests are autogenerated
Jakub Kuderski [Wed, 30 Nov 2022 22:11:35 +0000 (17:11 -0500)]
[mlir][vector] Clean up use of `llvm::zip` in `VectorOps.cpp`
- Use `zip_equal` where iteratees are supposted to have equal lenght.
- Use `zip_first` where the first iteratee is supposed to be the
shortest.
- Use `llvm::enumerate` instead of calculating index manually.
- Use structured bindings to unpack tuples where appropriate.
- Fix a bug in a comparison in `intersectsWhereNonNegative`.
Both `zip_first` (after D138858) and `zip_equal` (introduced in D138865)
assert interatee lengths, which allows us to more precisely convey
whether we want to iterate over the common prefix (`zip`), or expect all
lengths to be the same (`zip_equal`).
Reviewed By: dcaballe, antiagainst
Differential Revision: https://reviews.llvm.org/D139022
Paul Robinson [Wed, 30 Nov 2022 22:11:40 +0000 (14:11 -0800)]
[analyzer] Test depends on windows as host, not target
Adrian Prantl [Wed, 30 Nov 2022 22:06:58 +0000 (14:06 -0800)]
Add a log message to the IR interpreter.
This line existed in our internal branch and seems to be generally
useful, so I'm upstreaming it.
Eli Friedman [Wed, 30 Nov 2022 21:47:35 +0000 (13:47 -0800)]
[AArch64] Make sure we don't emit packed unwind for .seh_save_any_reg_p
Obvious oversight in implementation in D135417.
Differential Revision: https://reviews.llvm.org/D138955
Paul Robinson [Wed, 30 Nov 2022 21:32:42 +0000 (13:32 -0800)]
[Hexagon] Convert tests to check 'target=hexagon-.*'
Part of the project to eliminate special handling for triples in lit
expressions.
Arthur Eubanks [Wed, 23 Nov 2022 22:29:40 +0000 (14:29 -0800)]
[lldb] Change FindDefinitionTypeForDWARFDeclContext() to take DWARFDIE
This simplifies an upcoming patch.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D138612
Jordan Rupprecht [Wed, 30 Nov 2022 21:20:13 +0000 (13:20 -0800)]
[DataFormatter] Fix variant npos with `_LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION` enabled.
This data formatter should print "No Value" if a variant is unset. It does so by checking if `__index` has a value of `-1`, however it does so by interpreting it as a signed int.
By default, `__index` has type `unsigned int`. When `_LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION` is enabled, the type of `__index` is either `unsigned char`, `unsigned short`, or `unsigned int`, depending on how many fields there are -- as small as possible. For example, when `std::variant` has only a few types, the index type is `unsigned char`, and the npos value will be interpreted by LLDB as `255` when it should be `-1`.
This change does not special case the variant optimization; it just reads the type instead of assuming it's `unsigned int`.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D138892
Roy Sundahl [Wed, 30 Nov 2022 17:57:06 +0000 (09:57 -0800)]
[asan][aarch64] Don't use 64 bit allocator for Apple ios family
The recent change (https://reviews.llvm.org/D137136) to unconditionally
choose the 64 bit allocator on aarch64 breaks Apple iOS family of devices
which purposely use a smaller address space than is used with macOS.
rdar://
102527313
Reviewed By: thetruestblue, yln
Differential Revision: https://reviews.llvm.org/D139030
Samira Bazuzi [Wed, 30 Nov 2022 20:48:42 +0000 (12:48 -0800)]
[test] Fix aggregate initialization incompatible with c++20
In C++20, types that declare or delete any constructors are no longer aggregates, breaking compilation of many existing uses of aggregate initialization. In this test, provide a one-arg constructor so that `StructWithoutCopyOrMove{1}` still works.
Jonas Devlieghere [Wed, 30 Nov 2022 20:42:53 +0000 (12:42 -0800)]
[lldb] Use LLDB_ENABLE_SWIG as the canonical CMake variable
Use LLDB_ENABLE_SWIG instead of SWIG_EXECUTABLE or SWIG_FOUND as the
canonical CMake variable to determine whether we have SWIG available in
LLDB. This is a follow-up to
b3c978e850d3.
Sanjay Patel [Wed, 30 Nov 2022 20:31:55 +0000 (15:31 -0500)]
[InstSimplify] (X && Y) ? X : Y --> Y
Similar to the recent fold that was added for 'or' in D138815:
https://alive2.llvm.org/ce/z/PBapTJ
Sanjay Patel [Wed, 30 Nov 2022 20:28:11 +0000 (15:28 -0500)]
[InstSimplify] add tests for select with common 'and' ops; NFC