Hubert Tong [Wed, 23 Mar 2022 15:03:44 +0000 (11:03 -0400)]
[Clang][NFC] Some `const` for `IdentifierInfo *`s feeding `DeclarationName`
`DeclarationName` already takes `const IdentifierInfo *`. Propagate the
`const` outward to various APIs.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D122261
Nikita Popov [Thu, 10 Feb 2022 08:45:08 +0000 (09:45 +0100)]
[LangRef] Allow non-power-of-two assume operand bundle
There has been a lot of confusion on this in the past (see for
example https://reviews.llvm.org/D110634 and earlier revisions),
so let's try to get some clarity here. This patch specifies that
a) specifying a non-constant assumed alignment is explicitly
allowed and b) an invalid (non-power-of-two) alignment is not UB,
but rather converts it into an assumption that the pointer is null.
This change is done for two reasons:
a) Assume operand bundles are specifically used in cases where the
alignment is not known during frontend codegen (otherwise we'd just
use an align attribute), so rejecting this case doesn't make sense.
b) At least for aligned_alloc the C standard specifies that passing
an invalid alignment results in a null pointer, not undefined
behavior.
Differential Revision: https://reviews.llvm.org/D119414
Kiran Chandramohan [Wed, 23 Mar 2022 14:39:11 +0000 (14:39 +0000)]
[Flang] Lower atan, sinh, cosh intrinsics
The intrinsic computes the tan and hyperbolic sin, cosine values. By
default they are lowered to runtime calls to the math library. Not all
types are supported currently. The generic and llvm lowering does not
lower floating point types with kind greater than 8, the llvm lowering
does not support the complex types.
Note: tanh is not present in fir-dev hence ignoring for now. We can add
support after upstreaming is complete. sin and cos will come in separate
patches since they have llvm intrinsic lowering.
This is part of the upstreaming effort from the fir-dev branch in [1].
[1] https://github.com/flang-compiler/f18-llvm-project
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D122264
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: William Moses <gh@wsmoses.com>
Jan Svoboda [Wed, 23 Mar 2022 14:29:49 +0000 (15:29 +0100)]
[clang][deps] NFC: De-duplicate clang-cl tests
In D92191, a bunch of test cases were added to check `clang-scan-deps` works in `clang-cl` mode as well.
We don't need to duplicate all test cases, though. Testing the few special cases we have in `clang-scan-deps` for `clang-cl` should be good enough:
1. Deducing output path (and therefore target name in our make output).
2. Ignoring `-Xclang` arguments in step 1.
3. Deducing resource directory by invoking the compiler executuable.
This test de-duplicates the extra clang-cl test cases.
Reviewed By: dexonsmith, saudi
Differential Revision: https://reviews.llvm.org/D121812
Jan Svoboda [Wed, 23 Mar 2022 13:59:03 +0000 (14:59 +0100)]
[clang][deps] Create lit substitution for deps-to-rsp
This patch gets rid of the ridiculous relative path we use to invoke the `module-deps-to-rsp.py` script and creates proper lit substitution, cleaning up the tests.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D121525
Alexandros Lamprineas [Wed, 23 Mar 2022 14:23:17 +0000 (14:23 +0000)]
[FuncSpec][NFC] Clang-format the source code and fix debug typo.
Nikita Popov [Wed, 23 Mar 2022 14:32:36 +0000 (15:32 +0100)]
[CGExpr] Perform bitcast unconditionally
The way the check is written is not compatible with opaque
pointers -- while we don't need to change the IR pointer type,
we do need to change the element type stored in the Address.
Nikita Popov [Wed, 23 Mar 2022 14:19:29 +0000 (15:19 +0100)]
[Bitcode] Check for live uses of llvm.cmdline/embedded.module
The one use check here is very misleading: At this point we should
actually have no uses, because the only possible use in llvm.used
was already dropped. But because the use in llvm.used is generally
bitcasted, we end up still having one dead use here.
What we actually want to check is that there are no live uses, for
which a helper has recently been added.
Nikita Popov [Wed, 23 Mar 2022 13:58:24 +0000 (14:58 +0100)]
[InstrProfiling] Account for missing bitcast/GEP
This code is supposed to clean up a constexpr bitcast/GEP, but
with opaque pointers this ends up dropping references to the
global.
Nikita Popov [Wed, 23 Mar 2022 13:27:32 +0000 (14:27 +0100)]
[CGObjCMac] Check global value type instead of poitner type
As we're going to reassign the initializer, we actually need the
value types to match, not just the pointer types. This is only
relevant with opaque pointers.
Nikita Popov [Wed, 23 Mar 2022 13:15:06 +0000 (14:15 +0100)]
[CGBlocks] Don't assume presence of bitcast
With opaque pointers, the bitcast constexpr will not be present.
Corentin Jabot [Tue, 22 Mar 2022 22:47:51 +0000 (23:47 +0100)]
[Clang][NFC] Cleanup dcl.constexpr/p3 tests
* Check for warnings instead of using -Werror, to avoid masking the
type of diagnostic emitted
* use different -verify labels instead of using conditional
compilation of diagnostic checks
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D122265
Frederic Cambus [Wed, 23 Mar 2022 14:28:46 +0000 (15:28 +0100)]
[compiler-rt] Remove forgotten mention of SVN modules, LLVM now uses Git.
Valentin Clement [Wed, 23 Mar 2022 14:27:36 +0000 (15:27 +0100)]
[flang][NFC] Add character lowering tests
This patch some lowering tests for characters related operations.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D122310
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: V Donaldson <vdonaldson@nvidia.com>
Valentin Clement [Wed, 23 Mar 2022 14:25:59 +0000 (15:25 +0100)]
[flang][NFC] Add call lowering tests
This patch adds various lowering test
for calls.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D122306
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Mats Petersson <mats.petersson@arm.com>
Valentin Clement [Wed, 23 Mar 2022 14:24:00 +0000 (15:24 +0100)]
[flang][NFC] Add misc lowering tests
This patch adds some lowering tests.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D122308
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Valentin Clement [Wed, 23 Mar 2022 14:22:08 +0000 (15:22 +0100)]
[flang] Add lowering C interoperability test
This patch adds a lowering test for the C
interoperability.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D122307
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
David Truby [Wed, 16 Mar 2022 14:23:57 +0000 (14:23 +0000)]
[clang][AArc64][SVE] Implement vector-scalar operators
This patch extends the support for C/C++ operators for SVE
types to allow one of the arguments to be a scalar, in which
case a vector splat is performed.
Differential Revision: https://reviews.llvm.org/D121829
Aaron Ballman [Wed, 23 Mar 2022 14:17:01 +0000 (10:17 -0400)]
Fix LLVM sphinx build
This amends
a749e3295df4aee18a0ad723875a6501f30ac744 to fix a few
missed targets in the contributor documentation.
serge-sans-paille [Wed, 23 Mar 2022 14:15:07 +0000 (15:15 +0100)]
Cleanup include: Add missing header
Should fix https://lab.llvm.org/buildbot#builders/57/builds/16192 introduced by
02c28970b26b3888543d0a4c343a569fbf8fe16b
Danny Mösch [Wed, 23 Mar 2022 14:10:20 +0000 (10:10 -0400)]
Replace links to archived mailing lists by links to Discourse forums
Jan Svoboda [Tue, 22 Mar 2022 16:03:58 +0000 (17:03 +0100)]
[clang][lex] Fix failures with Microsoft header search rules
`HeaderSearch` currently assumes `LookupFileCache` is eventually populated in `LookupFile`. However, that's not always the case with `-fms-compatibility` and its early returns.
This patch adds a defensive check that the iterator pulled out of the cache is actually valid before using it.
(This bug was introduced in D119721. Before that, the cache was initialized to `0` - essentially the `search_dir_begin()` iterator.)
Reviewed By: dexonsmith, erichkeane
Differential Revision: https://reviews.llvm.org/D122237
Benjamin Kramer [Wed, 23 Mar 2022 13:38:13 +0000 (14:38 +0100)]
Unbreak the build after
02c28970b2
Vince Bridgers [Wed, 23 Mar 2022 00:33:19 +0000 (19:33 -0500)]
[analyzer] Fix crash in RangedConstraintManager.cpp
This change fixes a crash in RangedConstraintManager.cpp:assumeSym due to an
unhandled BO_Div case.
clang: <root>clang/lib/StaticAnalyzer/Core/RangedConstraintManager.cpp:51:
virtual clang::ento::ProgramStateRef
clang::ento::RangedConstraintManager::assumeSym(clang::ento::ProgramStateRef,
clang::ento::SymbolRef, bool):
Assertion `BinaryOperator::isComparisonOp(Op)' failed.
Reviewed By: NoQ
Differential Revision: https://reviews.llvm.org/D122277
Vince Bridgers [Fri, 18 Feb 2022 16:20:05 +0000 (10:20 -0600)]
[analyzer] refactor makeIntValWithPtrWidth, remove getZeroWithPtrWidth (NFC)
This is a NFC refactoring to change makeIntValWithPtrWidth
and remove getZeroWithPtrWidth to use types when forming values to match
pointer widths. Some targets may have different pointer widths depending
upon address space, so this needs to be comprehended.
Reviewed By: steakhal
Differential Revision: https://reviews.llvm.org/D120134
Augusto Noronha [Tue, 22 Mar 2022 17:11:32 +0000 (14:11 -0300)]
[dsymutil] Update vector of section starts with size of current section
Take into account the contributions of the sections from different
object files when calculating the address where relocations should be
applied.
Differential Revision: https://reviews.llvm.org/D122239
serge-sans-paille [Mon, 21 Mar 2022 20:51:43 +0000 (21:51 +0100)]
Cleanup include: codegen second round
Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup
Differential Revision: https://reviews.llvm.org/D122180
Marek Kurdej [Thu, 17 Mar 2022 15:13:32 +0000 (16:13 +0100)]
[clang-format] [doc] Add script to automatically update help output in ClangFormat.rst.
Fixes https://github.com/llvm/llvm-project/issues/54418.
Reviewed By: MyDeveloperDay
Differential Revision: https://reviews.llvm.org/D121916
Marcus Johnson [Wed, 23 Mar 2022 12:12:14 +0000 (08:12 -0400)]
Matthias Springer [Wed, 23 Mar 2022 11:07:23 +0000 (20:07 +0900)]
[mlir][bufferize] Do not run the buffer deallocation pass if no allocs escape block boundaries
This fixes a bufferization issue with ops that are not supported by the buffer deallocation pass when `allow-return-allocs=0`.
Differential Revision: https://reviews.llvm.org/D122304
Aaron Ballman [Wed, 23 Mar 2022 11:59:18 +0000 (07:59 -0400)]
Update the C and C++ status pages now that Clang 14 is out
Nikita Popov [Wed, 23 Mar 2022 11:57:30 +0000 (12:57 +0100)]
[LLVMContext] Respect default value of -opaque-pointers option (NFC)
If the option is edited to use true as the default, we should
respect that, rather than hardcoding false here.
Zahira Ammarguellat [Wed, 23 Mar 2022 11:51:08 +0000 (04:51 -0700)]
Revert "[clang] roll-forward "[clang] Mark `trivial_abi` types as "trivially relocatable""."
This reverts commit
56d46b36fc231a0beb518602503035bba92043e0.
The LIT test SemaCXX/attr-trivial-abi.cpp is failing with 32bit build on
Windows. All the lines with the ifdef WIN32 are asserting but they are
not expected to. It looks like the LIT test was not tested on a 32bit
build of the compiler.
Sanjay Patel [Tue, 22 Mar 2022 20:36:16 +0000 (16:36 -0400)]
[InstCombine] add tests for shuffle of mismatched binops; NFC
David Spickett [Wed, 23 Mar 2022 10:51:08 +0000 (10:51 +0000)]
Reland "[llvm][AArch64] Insert "bti j" after call to setjmp"
This reverts commit
edb7ba714acba1d18a20d9f4986d2e38aee1d109.
This changes BLR_BTI to take variable_ops meaning that we can accept
a register or a label. The pattern still expects one argument so we'll
never get more than one. Then later we can check the type of the operand
to choose BL or BLR to emit.
(this is what BLR_RVMARKER does but I missed this detail of it first time around)
Also require NoSLSBLRMitigation which I missed in the first version.
Nikita Popov [Wed, 23 Mar 2022 11:14:39 +0000 (12:14 +0100)]
[CGOpenMPRuntime] Remove uses of deprecated Address constructor
And as these are the last remaining uses, also remove the
constructor itself.
Aaron Ballman [Wed, 23 Mar 2022 11:39:53 +0000 (07:39 -0400)]
Forgot to add a release note for WG14 N2412.
This support was completed in
bf7d9970ba0ac5ecfa1a469086f5789de5c94e3f
Shraiysh Vaishay [Wed, 23 Mar 2022 10:11:09 +0000 (15:41 +0530)]
[mlir][OpenMP] Add omp.single
This patch adds omp.single according to Section 2.8.2 of OpenMP 5.0.
Also added tests for the same.
Reviewed By: peixin
Differential Revision: https://reviews.llvm.org/D122288
Co-authored-by: Kiran Kumar T P <kirankumar.tp@amd.com>
Sven van Haastregt [Wed, 23 Mar 2022 11:12:50 +0000 (11:12 +0000)]
[OpenCL] opencl-c.h: remove arg names for vload/vstore builtins
This simplifies completeness comparisons against OpenCLBuiltins.td and
also makes the header no longer "claim" the identifiers "data" and
"offset".
Continues the direction set out in D119560.
Arjun P [Wed, 23 Mar 2022 11:10:48 +0000 (11:10 +0000)]
[MLIR][Presburger] support IntegerRelation::convertIdKind
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122154
Nikita Popov [Fri, 18 Mar 2022 12:06:42 +0000 (13:06 +0100)]
Reapply [CodeGen] Avoid deprecated Address ctor in EmitLoadOfPointer()
This requires some adjustment in caller code, because there was
a confusion regarding the meaning of the PtrTy argument: This
argument is the type of the pointer being loaded, not the addresses
being loaded from.
Reapply after fixing the specified pointer type for one call in
47eb4f7dcd845878b16a53dadd765195b9c24b6e, where the used type is
important for determining alignment.
Nikita Popov [Wed, 23 Mar 2022 10:59:15 +0000 (11:59 +0100)]
[CodeGen][OpenMP] Add alignment to test (NFC)
Check which alignments are generated for loads/stores.
Arjun P [Tue, 22 Mar 2022 13:21:20 +0000 (13:21 +0000)]
[MLIR][Presburger] add Simplex:addDivisionVariable
This is a convenience function for adding new divisions to the Simplex given the numerator and denominator.
This will be needed for symbolic integer lexmin support.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122159
Nikita Popov [Wed, 23 Mar 2022 10:35:32 +0000 (11:35 +0100)]
[CGOpenMPRuntime] Specify correct type in EmitLoadOfPointerLValue()
Perform a bitcast first, so we can specify the correct pointer type
inf EmitLoadOfPointerLValue(), rather than using a dummy void pointer.
David Spickett [Wed, 23 Mar 2022 10:43:20 +0000 (10:43 +0000)]
Revert "[llvm][AArch64] Insert "bti j" after call to setjmp"
This reverts commit
eb5ecbbcbb6ce38e29237ab5d17156fcb2e96e74
due to failures on buildbots with expensive checks enabled.
Nikita Popov [Wed, 23 Mar 2022 10:21:46 +0000 (11:21 +0100)]
[CGOpenMPRuntime] Reuse getDepobjElements() (NFC)
There were two more places repeating this code, reuse the helper.
This requires moving the static functions into the class.
serge-sans-paille [Mon, 21 Mar 2022 20:52:21 +0000 (21:52 +0100)]
Cleanup includes: Transforms/Instrumentation & Transforms/Vectorize
Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup
Differential Revision: https://reviews.llvm.org/D122181
Benjamin Kramer [Wed, 23 Mar 2022 10:00:35 +0000 (11:00 +0100)]
[bazel] Make extract_api compatible with bazel
Ingo Müller [Wed, 23 Mar 2022 09:53:22 +0000 (09:53 +0000)]
Fix link to Rationale document from doc on tuple.
This also replaces the absolute link to the same document with a
relative one in the same file.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D121814
David Spickett [Mon, 14 Mar 2022 10:24:45 +0000 (10:24 +0000)]
[llvm][AArch64] Insert "bti j" after call to setjmp
Some implementations of setjmp will end with a br instead of a ret.
This means that the next instruction after a call to setjmp must be
a "bti j" (j for jump) to make this work when branch target identification
is enabled.
The BTI extension was added in armv8.5-a but the bti instruction is in the
hint space. This means we can emit it for any architecture version as long
as branch target enforcement flags are passed.
The starting point for the hint number is 32 then call adds 2, jump adds 4.
Hence "hint #36" for a "bti j" (and "hint #34" for the "bti c" you see
at the start of functions).
The existing Arm command line option -mno-bti-at-return-twice has been
applied to AArch64 as well.
Support is added to SelectionDAG Isel and GlobalIsel. FastIsel will
defer to SelectionDAG.
Based on the change done for M profile Arm in https://reviews.llvm.org/D112427
Fixes #48888
Reviewed By: danielkiss
Differential Revision: https://reviews.llvm.org/D121707
Nikita Popov [Wed, 23 Mar 2022 09:28:04 +0000 (10:28 +0100)]
[CodeGen][OpenMP] Add alignment to test (NFC)
Check which alignments are generated for loads and stores.
Nikita Popov [Wed, 23 Mar 2022 09:22:14 +0000 (10:22 +0100)]
Revert "[CodeGen] Avoid deprecated Address ctor in EmitLoadOfPointer()"
This reverts commit
767ec883e37510a247ea5695921876ef67cf5b3f.
This results in a some incorrect alignments which are not covered
by existing tests.
Tobias Hieta [Wed, 23 Mar 2022 09:21:04 +0000 (10:21 +0100)]
[NFC] Remove trailing whitespaces in clang/Driver/Options.td
Alex Bradbury [Wed, 23 Mar 2022 08:53:05 +0000 (08:53 +0000)]
[WebAssembly] Fix error location for parsed symbol/label operands
The previous code didn't take account for the fact that parseExpression
my lex additional tokens - because of this, it's necessary to record the
location of the current token ahead of the call. This patch additionally
makes use of the fact parseExpression will set its End parameter to the
end of the expression.
Although this fix could be added independently of D122127, I've opted to
make it a child patch in order to ensure the change has some test
coverage.
Differential Revision: https://reviews.llvm.org/D122128
Alex Bradbury [Wed, 23 Mar 2022 08:51:15 +0000 (08:51 +0000)]
[WebAssembly] Use location of operand for operand-based type check errors
This addresses a series of FIXMEs introduced in D122020.
A follow-up patch (D122128) addresses the bug that is exposed by this
change (an issue with source location information when lexing
identifiers).
Differential Revision: https://reviews.llvm.org/D122127
Alexander Belyaev [Wed, 23 Mar 2022 08:46:40 +0000 (09:46 +0100)]
Valentin Clement [Tue, 22 Mar 2022 19:48:06 +0000 (12:48 -0700)]
[flang][NFC] Fix lowering tests indent
Remove 2 spaces indent that was introduced by mistake
when upstreaming these files.
Jacob Lambert [Mon, 21 Mar 2022 20:54:08 +0000 (13:54 -0700)]
[AMDGPU][LLD] Adding support for ABI version 5 option
Code object version 5 will use the same EFlags as version 4, so we only need to add an additional case
Differential Revision: https://reviews.llvm.org/D122190
Alisamar Husain [Wed, 23 Mar 2022 07:30:18 +0000 (13:00 +0530)]
[lldb/docs] Fixed minor ugly links
Craig Topper [Wed, 23 Mar 2022 06:41:23 +0000 (23:41 -0700)]
Revert "[SelectionDAG] Don't create entries in ValueMap in ComputePHILiveOutRegInfo"
This reverts commit
1a9b55b63a6e18a4692eeb795697cb61ca1b002f.
Causing build bot failures
Tom Stellard [Wed, 23 Mar 2022 06:35:30 +0000 (23:35 -0700)]
Revert "Driver: Don't warn on -mbranch-protection when linking"
This reverts commit
98fd3b359866f474ab1c097c22fb5c3be356b996.
This patch broke multiple bots.
Craig Topper [Wed, 23 Mar 2022 06:07:29 +0000 (23:07 -0700)]
[SelectionDAG] Don't create entries in ValueMap in ComputePHILiveOutRegInfo
Instead of using operator[], use DenseMap::find to prevent default
constructing an entry if it isn't already in the map.
Tom Stellard [Wed, 23 Mar 2022 06:17:39 +0000 (23:17 -0700)]
Driver: Don't warn on -mbranch-protection when linking
The -mbranch-protection definition in Options.td was not given a Group,
so this was causing clang to emit a -Wunused-command-line-argument
warning when this flag was passed to the linker driver. This was a
problem, because some build systems, like cmake, automatically pass the
C flags to the linker. Therefore, any program that was compiled with
-Werror and -mbranch-protection would fail to link with the error:
argument unused during compilation: '-mbranch-protection=standard' [-Werror,-Wunused-command-line-argument]
Reviewed By: vhscampos
Differential Revision: https://reviews.llvm.org/D121983
Shraiysh Vaishay [Wed, 23 Mar 2022 04:33:11 +0000 (10:03 +0530)]
[flang] Flush and master constructs
This patch adds tests for flush and master constructs
This is part of the upstreaming effort from the fir-dev branch in [1].
[1] https://github.com/flang-compiler/f18-llvm-project
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D122250
Co-authored By: Sourabh Singh Tomar <SourabhSingh.Tomar@amd.com>
Shraiysh Vaishay [Wed, 23 Mar 2022 04:07:55 +0000 (09:37 +0530)]
[mlir][OpenMP] Added assembly format for omp.wsloop and remove parseClauses
This patch
- adds assembly format for `omp.wsloop` operation
- removes the `parseClauses` clauses as it is not required anymore
This is expected to be the final patch in a series of patches for replacing
parsers for clauses with `oilist`.
Reviewed By: Mogball
Differential Revision: https://reviews.llvm.org/D121367
Phoebe Wang [Wed, 23 Mar 2022 03:24:54 +0000 (11:24 +0800)]
[Inline-asm] Add diagnosts for unsupported inline assembly arguments
GCC supports power-of-2 size structures for the arguments. Clang supports fewer than GCC. But Clang always crashes for the unsupported cases.
This patch adds sema checks to do the diagnosts to solve these crashes.
Reviewed By: jyu2
Differential Revision: https://reviews.llvm.org/D107141
jacquesguan [Tue, 22 Mar 2022 12:04:56 +0000 (20:04 +0800)]
[mlir][NFC] Remove redundant let assignment.
We already have bit hasFolder = 0 in the defination of the class Op, so no need to have another let assignment here.
Differential Revision: https://reviews.llvm.org/D122222
jacquesguan [Tue, 22 Mar 2022 13:00:33 +0000 (21:00 +0800)]
[mlir][Arith] Make integer max/min commutative.
Make MaxSI, MaxUI, MinSI and MinUI commutative, so they will be canonicalized to have its constants appear as the second operand. And the constant folder will match more cases.
Differential Revision: https://reviews.llvm.org/D122225
Shengchen Kan [Wed, 23 Mar 2022 02:14:02 +0000 (10:14 +0800)]
[Bundle][Codegen] Ignore bundle for meta-instruction
The purpose is to keep the default behavior as before.
Noticed by comments in D121600.
Reviewed By: bjope
Differential Revision: https://reviews.llvm.org/D122221
wangyihan [Tue, 22 Mar 2022 12:34:16 +0000 (20:34 +0800)]
[NFC][llvm][StringMap]Extract createTable and getHashTable functions and add the inline attribute to the getMinBucketToReserveForEntries function.
1. Extract createTable and getHashTable functions.
2. Add the inline attribute to the getMinBucketToReserveForEntries function.
3. Remove unnecessary local variable HTSize.
Statements in the following order appear in llvm::StringMapImpl::init and llvm::StringMapImpl::RehashTable, so I extracted this code into a function. getHashTable is for the same reason, it appears in llvm::StringMapImpl::FindKey, llvm::StringMapImpl::LookupBucketFor and llvm::StringMapImpl::RehashTable.
```
auto **Table = static_cast<StringMapEntryBase **>(safe_calloc(
NewNumBuckets + 1, sizeof(StringMapEntryBase **) + sizeof(unsigned)));
// Allocate one extra bucket, set it to look filled so the iterators stop at
// end.
Table[NewNumBuckets] = (StringMapEntryBase *)2;
```
```
unsigned *HashTable = (unsigned *)(TheTable + NumBuckets + 1);
```
Reviewed By: skan, sepavloff
Differential Revision: https://reviews.llvm.org/D121934
Ben Shi [Sun, 13 Mar 2022 06:35:49 +0000 (06:35 +0000)]
[AVR] Generate 'rcall' instead of 'call' on avr2 and avr25
The 'call' (long call) instruction is available on avr3 and above,
and devices in avr2 and avr25 should use the 'rcall' (short call)
instruction for function calls.
Reviewed By: aykevl, dylanmckay
Differential Revision: https://reviews.llvm.org/D121539
Ben Shi [Thu, 10 Mar 2022 09:01:07 +0000 (09:01 +0000)]
[AVR] Add more devices
Synchronize AVR device lists with gcc-avr-5.4.0 and avr-libc-2.0.0.
Reviewed By: dylanmckay, aykevl
Differential Revision: https://reviews.llvm.org/D121359
Ben Shi [Fri, 4 Mar 2022 14:42:41 +0000 (14:42 +0000)]
[AVR] Fix incorrect calling convention for varargs functions
An i8 argument should only cost 1 byte on the stack. This is
compatible with avr-gcc.
There are also more test cases (of calling convention) are added.
Reviewed By: aykevl, dylanmckay
Differential Revision: https://reviews.llvm.org/D121767
hsmahesha [Wed, 23 Mar 2022 01:45:52 +0000 (07:15 +0530)]
[AMDGPU] [NFC]: Organize the code around reserving registers.
First, add code to reserve all required special purpose registers,
followed by code to reserve SGPRs, followed by code to reserve
VGPRs/AGPRs.
This patch is prepared as a pre-requisite to fix an issue related to
GFX90A hardware.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D122219
Akira Hatanaka [Wed, 23 Mar 2022 01:39:16 +0000 (18:39 -0700)]
[NFC][Clang][OpaquePtr] Remove calls to Address::deprecated in
TargetInfo.cpp
Differential Revision: https://reviews.llvm.org/D122199
Nathan Chancellor [Wed, 23 Mar 2022 00:32:33 +0000 (17:32 -0700)]
Revert "[InstCombine] try to narrow shifted bswap-of-zext"
This reverts commit
9e9bda2e8f5b88715bad767a4b7740df32b040d2.
This causes a backend error when building the Linux kernel for arm64.
See https://reviews.llvm.org/D122166 for a simplified reproducer.
Vasileios Porpodas [Tue, 22 Mar 2022 22:21:20 +0000 (15:21 -0700)]
Recommit "[SLP] Fix lookahead operand reordering for splat loads." attempt 2, fixed assertion crash.
Original review: https://reviews.llvm.org/D121354
This reverts commit
f7d7d2a08d16356c57f6d2d36bc2fc0589a55df9.
Fabian Wolff [Tue, 22 Mar 2022 23:28:18 +0000 (00:28 +0100)]
[clang-tidy] Fix false positives in `misc-redundant-expression` check
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D122111
Arthur Eubanks [Tue, 22 Mar 2022 23:26:44 +0000 (16:26 -0700)]
[gn build] Manually port 89f6b26
Jez Ng [Fri, 10 Sep 2021 21:00:43 +0000 (17:00 -0400)]
[lld-macho][nfc] Don't mix file sizes with addresses
Update DataInCode's calculation of `endAddr` to use `getSize()` instead
of `getFileSize()` -- while in practice they're the same for
non-zerofill sections (which code sections are), we still should treat
address sizes / offsets as distinct from file sizes / offsets.
Snehasish Kumar [Tue, 22 Mar 2022 21:40:02 +0000 (14:40 -0700)]
Reland "[memprof] Store callsite metadata with memprof records."
This reverts commit
f4b794427e8037a4e952cacdfe7201e961f31a6f.
Reland with underlying msan issue fixed in D122260.
Snehasish Kumar [Tue, 22 Mar 2022 20:56:30 +0000 (13:56 -0700)]
[memprof] Initialize MemInfoBlock data.
This patch updates the existing default no-arg constructor for
MemInfoBlock to explicitly initialize all members. Also add missing
DataTypeId initialization to the other constructor. These issues were
exposed by msan on patch D121179. With this patch D121179 builds cleanly
on msan.
Reviewed By: tejohnson
Differential Revision: https://reviews.llvm.org/D122260
Craig Topper [Tue, 22 Mar 2022 21:19:50 +0000 (14:19 -0700)]
[X86] Fold MMX_MOVD64from64rr + store to MMX_MOVQ64mr instead of MMX_MOVD64from64mr.
MMX_MOVD64from64rr moves an MMX register to a 64-bit GPR.
MMX_MOVD64from64mr is the memory version of moving a MMX register to a
64-bit GPR. It requires the REX.W bit to be set. There are no isel
patterns that use this instruction.
MMX_MOVQ64mr is the MMX register store instruction. It doesn't
require a REX.W prefix. This makes it one byte shorter to encode
than MMX_MOVD64from64mr in many cases.
Both store instructions output the same mnemonic string. The assembler
would choose MMX_MOVQ64mr if it was to parse the output. Which is
another reason using it is the correct thing to do.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D122241
Zixu Wang [Tue, 22 Mar 2022 21:11:45 +0000 (14:11 -0700)]
[NFC][clang][extract-api] Use proper name string for Objective-C language
Change the Symbol Graph serializer for ExtractAPI to use `objective-c`
for the language name string for Objective-C, to align with clang
frontend standards.
Craig Topper [Tue, 22 Mar 2022 20:51:22 +0000 (13:51 -0700)]
[SelectionDAG] Add printing support for the Align value of AssertAlign nodes.
Differential Revision: https://reviews.llvm.org/D122262
wren romano [Sat, 19 Mar 2022 02:31:03 +0000 (19:31 -0700)]
[mlir][sparse] Distinguishing "shape" from "sizes" in variable names
I'm using "shape" to mean the compile-time object, where zeros indicate sizes which are compile-time dynamic; and using "sizes" to mean the run-time object, where zeros indicate a dimension with no coordinates (hence resulting in trivial storage). Because their semantics differ on zeros, it's important to keep them distinguished. Although we do not define separate C++ types to capture the distinction, we can at least use variable names to do so.
This is (tangential) work towards fixing: https://github.com/llvm/llvm-project/issues/51652
Depends On D122057
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D122058
Mike Rice [Tue, 22 Mar 2022 17:55:21 +0000 (10:55 -0700)]
[OpenMP] Initial parsing/sema for the 'omp parallel loop' construct
Adds basic parsing/sema/serialization support for the
#pragma omp parallel loop directive.
Differential Revision: https://reviews.llvm.org/D122247
Stanislav Mekhanoshin [Tue, 22 Mar 2022 19:08:29 +0000 (12:08 -0700)]
[AMDGPU] Allow v_accvgpr_write to use SGPR on gfx90a
This is undocumented, but it should work.
Differential Revision: https://reviews.llvm.org/D122252
Philip Reames [Tue, 22 Mar 2022 20:30:59 +0000 (13:30 -0700)]
[instcombine] Fold away memset/memmove from otherwise unused alloca
The motivation for this is that while both memcpyopt and dse will catch this case, both are limited by MSSA's walk back threshold when finding clobbers. As such, if you have a memcpy of an otherwise dead alloca placed towards the end of a long basic block with lots of other memory instructions, it would be missed. This is a bit undesirable for such an "obviously" useless bit of code.
As noted in comments, we should probably generalize instcombine's escape analysis peephole (see visitAllocInst) to allow read xor write. Doing that would subsume this code in a more general way, but is also a more involved change. For the moment, I went with the easiest fix.
Louis Dionne [Tue, 22 Mar 2022 20:48:30 +0000 (16:48 -0400)]
[libc++][NFC] Slight improvement to __availability documentation
wren romano [Sat, 19 Mar 2022 02:20:33 +0000 (19:20 -0700)]
[mlir][sparse] Adding Action::kSparseToSparse for @newSparseTensor
This is work towards: https://github.com/llvm/llvm-project/issues/51652
This differential doesn't yet make use of the new kSparseToSparse, just introduces it. The differential that finally makes use of them is D122061, which is the final differential in the chain that fixes bug 51652.
Depends On D122054
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D122055
Valentin Clement [Tue, 22 Mar 2022 20:32:57 +0000 (21:32 +0100)]
[flang][NFC] Add forall lowering tests
This patch adds some lowering tests for the `forall` construct.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D122253
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Arthur Eubanks [Tue, 22 Mar 2022 20:27:04 +0000 (13:27 -0700)]
Revert "Recommit "[SLP] Fix lookahead operand reordering for splat loads.""
This reverts commit
79613185d305013de743cdbd6690e4d77c8af27e.
Causes crashes, see comments in https://reviews.llvm.org/D121973.
Sanjay Patel [Tue, 22 Mar 2022 20:02:09 +0000 (16:02 -0400)]
[InstCombine] reorder code, fix formatting; NFC
The affected code can be updated to solve #54364,
so make some cosmetic diffs before real changes.
Zixu Wang [Mon, 21 Mar 2022 07:53:28 +0000 (00:53 -0700)]
[clang][extract-api] Refactor ExtractAPI and improve docs
- The name SymbolGraph is inappropriate and confusing for the new library
for clang-extract-api. Refactor and rename things to make it clear that
ExtractAPI is the core functionality and SymbolGraph is one serializer
for the API information.
- Add documentation comments to ExtractAPI classes and methods to improve
readability and clearness of the ExtractAPI work.
Differential Revision: https://reviews.llvm.org/D122160
Philip Reames [Tue, 22 Mar 2022 20:16:17 +0000 (13:16 -0700)]
[test,instcombine] Precommit test for upcoming transform
wren romano [Sat, 19 Mar 2022 02:10:40 +0000 (19:10 -0700)]
[mlir][sparse] Introducing options for the SparseTensorConversion pass
This is work towards: https://github.com/llvm/llvm-project/issues/51652
This differential sets up the options and threads them through everywhere, but doesn't actually use them yet. The differential that finally makes use of them is D122061, which is the final differential in the chain that fixes bug 51652.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D122054
wren romano [Tue, 22 Mar 2022 00:39:15 +0000 (17:39 -0700)]
[mlir][sparse] Moving lexOrder from SparseTensorCOO to Element
This is the more logical place for the function to live. If/when we factor out a separate class for just the `Coordinates` themselves, then the definition should be moved to `Coordinates::lexOrder` (and `Element::lexOrder` would become a thin wrapper delegating to that function).
This is (tangentially) work towards fixing: https://github.com/llvm/llvm-project/issues/51652
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D122057
Valentin Clement [Tue, 22 Mar 2022 19:56:25 +0000 (20:56 +0100)]
[flang][NFC] Add pointer dummy arguments tests
This patch adds test for calls with POINTER dummy arguments on the caller side.
It also fixes some formatting error that was introduced when upstreaming
the other pointer tests.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D122238
Co-authored-by: Jean Perier <jperier@nvidia.com>
Stanislav Mekhanoshin [Tue, 22 Mar 2022 19:42:31 +0000 (12:42 -0700)]
[AMDGPU] Update mfma test to run gfx940 checks. NFC.