Craig Topper [Tue, 6 Sep 2022 02:03:44 +0000 (19:03 -0700)]
[RISCV] Improve vector fceil/ffloor lowering by changing FRM.
This adds new VFCVT pseudoinstructions that take a rounding mode operand. A custom inserter is used to insert additional instructions to change FRM around the
VFCVT.
Some of this is borrowed from D122860, but takes a somewhat different direction. We may migrate to that patch, but for now I was trying to keep this as independent from
RVV intrinsics as I could.
A followup patch will use this approach for FROUND too.
Still need to fix the cost model.
Reviewed By: arcbbb
Differential Revision: https://reviews.llvm.org/D133238
gonglingqin [Mon, 5 Sep 2022 12:43:11 +0000 (20:43 +0800)]
[LoongArch] Fix annotations not matching predicates. NFC.
Peixin Qiao [Tue, 6 Sep 2022 00:15:01 +0000 (08:15 +0800)]
[flang] Support lowering of intrinsic module procedure C_F_POINTER
As Fortran 2018 18.2.3.3, the intrinsic module procedure
C_F_POINTER(CPTR, FPTR [, SHAPE]) associates a data pointer with the
target of a C pointer and specify its shape. CPTR shall be a scalar of
type C_PTR, and its value is the C address or the result of a reference
to C_LOC. FPTR is one pointer, either scalar or array. SHAPE is a
rank-one integer array, and it shall be present if and only if FPTR is
an array.
C_PTR is the derived type with only one component of integer 64, and the
integer 64 component value is the address. Build the right "source"
fir::ExtendedValue based on the address and shape, and use
associateMutableBox to associate the pointer with the target of the C
pointer.
Refactor the getting the address of C_PTR to reuse the code.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D132303
Arthur Eubanks [Mon, 5 Sep 2022 22:41:35 +0000 (15:41 -0700)]
Revert "[LoopPassManager] Implement and use LoopNestAnalysis::run() instead of manually creating LoopNests"
This reverts commit
57fd8665516161c3d2dbe3f0ad8461552967692a.
Causes crashes, see comments in D132581.
Kazu Hirata [Mon, 5 Sep 2022 21:42:34 +0000 (14:42 -0700)]
Revert "Use llvm::none_of (NFC)"
This partially reverts commit
f5a68feab30a529280c2912dc464e3a81e276f9a.
Fixes https://github.com/llvm/llvm-project/issues/57557
Amara Emerson [Mon, 5 Sep 2022 20:39:20 +0000 (21:39 +0100)]
[AArch64] Update checks in call lowering test for signext in prep for bug fix.
Eli Friedman [Mon, 5 Sep 2022 20:19:42 +0000 (13:19 -0700)]
[ARM64EC 5/?] Fix names of __chkstk and __security_check_cookie.
Part of initial Arm64EC patchset.
Arm64EC code needs to use functions with a different name, to avoid
using the x64 versions.
Differential Revision: https://reviews.llvm.org/D125417
Craig Topper [Mon, 5 Sep 2022 20:12:18 +0000 (13:12 -0700)]
[X86] Add test cases for PR57549. NFC
Eli Friedman [Mon, 5 Sep 2022 20:05:48 +0000 (13:05 -0700)]
[ARM64EC 4/?] Add LLVM support for varargs calling convention.
Part of patchset to add initial support for ARM64EC.
The ARM64EC calling convention is the same as ARM64 for non-varargs
functions, but for varargs, the convention is significantly different.
Basically, only x0-x3 registers are used for passing arguments, and x4
and x5 describe the address/size of the arguments passed in memory. (See
https://docs.microsoft.com/en-us/windows/uwp/porting/arm64ec-abi for
more details; see
https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention for
the x64 calling convention rules, which this convention needs to match.)
Note that this currently doesn't handle i128 arguments correctly; as
noted in review, that's sort of complicated to handle, so I'm leaving it
for a followup.
Differential Revision: https://reviews.llvm.org/D125415
Eli Friedman [Mon, 5 Sep 2022 19:59:39 +0000 (12:59 -0700)]
[ARM64EC 3/?] Mark reserved registers specific to ARM64EC ABI.
Part of patchset to add initial support for ARM64EC.
I'm not completely sure I understand the reason for this restriction,
but Microsoft documentation says that asynchronous signals clobber these
registers, so we can't ever use them.
As far as I know, none of these registers have any hardcoded meaning, so
reserving them shouldn't have any significant side-effects.
Differental Revision: https://reviews.llvm.org/D125413
Eli Friedman [Mon, 5 Sep 2022 19:27:10 +0000 (12:27 -0700)]
[ARM64EC 2/?] Add target triple, and allow targeting it.
Part of patchset to add initial support for ARM64EC.
Per discussion on review, using the triple arm64ec-pc-windows-msvc. The
parsing works the same way as Apple's alternate Arm ABI "arm64e".
Differential Revision: https://reviews.llvm.org/D125412
Eli Friedman [Mon, 5 Sep 2022 19:25:08 +0000 (12:25 -0700)]
[ARM64EC 1/?] Add parsing support to llvm-objdump/llvm-readobj.
This is the first patch of a patchset to add initial support for
ARM64EC. Basic documentation is available at
https://docs.microsoft.com/en-us/windows/uwp/porting/arm64ec-abi .
(Discourse post:
https://discourse.llvm.org/t/initial-patches-for-arm64ec-windows-11-now-posted/62449
.)
The file format for ARM64EC is basically identical to normal ARM64.
There are a few extra sections, but the existing code for reading ARM64
object files just works.
Differential Revision: https://reviews.llvm.org/D125411
David Green [Mon, 5 Sep 2022 18:43:23 +0000 (19:43 +0100)]
[AArch64][GlobalISel] Recognise some CCMPri
This is a simple addition to emitConditionalComparison, to match CCMP
with immediates using getIConstantVRegValWithLookThrough, letting it
select the CCMPri variants of the instructions.
Differential Revision: https://reviews.llvm.org/D131073
Fangrui Song [Mon, 5 Sep 2022 17:53:41 +0000 (10:53 -0700)]
[Verifier] Reject dllexport with non-default visibility
Add a visibility check for dllimport and dllexport. Note: dllimport with a
non-default visibility (implicit dso_local) is already rejected, but with a less
clear dso_local error.
The MC level visibility `MCSA_Exported` (D123951) is mapped from IR level
default visibility when dllexport is specified. The D123951 error is now very
difficult to trigger (needs to disable the IR verifier).
Reviewed By: mstorsjo
Differential Revision: https://reviews.llvm.org/D133267
Fangrui Song [Mon, 5 Sep 2022 17:17:19 +0000 (10:17 -0700)]
[MinGW] Reject explicit non-default visibility applied to dllexport/dllimport declaration
dllimport/dllexport is incompatible with protected/hidden visibilities.
(Arguably dllexport semantics is compatible with protected but let's reject the
combo for simplicity.)
When an explicit visibility attribute applies on a dllexport/dllimport
declaration, report a Frontend error (Sema does not compute visibility).
Reviewed By: mstorsjo
Differential Revision: https://reviews.llvm.org/D133266
Sam McCall [Mon, 5 Sep 2022 16:34:41 +0000 (18:34 +0200)]
[clangd] Trace preamble throttle time
Joseph Huber [Thu, 25 Aug 2022 19:00:07 +0000 (14:00 -0500)]
[ELF] Provide the GNU hash function in libObject
GNU uses a different hashing function compared to the sys-V standard
function already provided in libObject. This is already used internally
in LLD for generating synthetic sections. This patch simply extracts
this definition and makes it availible to other users of `libObject`.
This is done in preparation for supporting symbol name lookups via the
GNU hash table.
Reviewed By: MaskRay, jhenderson
Differential Revision: https://reviews.llvm.org/D132696
LiaoChunyu [Mon, 5 Sep 2022 15:57:53 +0000 (23:57 +0800)]
[InstSimplify][NFC] shortened the code
LiaoChunyu [Mon, 5 Sep 2022 15:30:52 +0000 (23:30 +0800)]
[InstSimplify] Odd - X ==/!= X -> false/true
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D132989
LiaoChunyu [Mon, 5 Sep 2022 15:17:03 +0000 (23:17 +0800)]
[InstSimplify][NFC][test] Add tests for Odd - X ==/!= X -> false/true
testcases will be updated by D132989
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D133306
isuckatcs [Thu, 18 Aug 2022 08:52:16 +0000 (10:52 +0200)]
[analyzer] Track trivial copy/move constructors and initializer lists in the BugReporter
If an object has a trivial copy/move constructor, it's not inlined
on invocation but a trivial copy is performed instead. This patch
handles trivial copies in the bug reporter by matching the field
regions of the 2 objects involved in the copy/move construction,
and tracking the appropriate region further. This patch also
introduces some support for tracking values in initializer lists.
Differential Revision: https://reviews.llvm.org/D131262
Amara Emerson [Mon, 5 Sep 2022 15:05:44 +0000 (16:05 +0100)]
[GlobalISel] Update combine-build-vector.mir test checks before patch.
Daniel Bertalan [Sat, 3 Sep 2022 17:21:12 +0000 (19:21 +0200)]
[lld-macho] Diagnose unaligned arm64 PAGEOFF12 relocations
The LDR and STR instructions store their immediate offsets as a multiple
of the load/store's size. Therefore, if the target address is not
aligned, the relocation is not representable. We now emit an error if
that happens, similarly to ld64.
This commit removes a test case from loh-adrp-ldr.s that contained an
unaligned LDR.
Differential Revision: https://reviews.llvm.org/D133269
LLVM GN Syncbot [Mon, 5 Sep 2022 14:41:45 +0000 (14:41 +0000)]
[gn build] Port
2d52c6bfae80
Amy Wang [Mon, 5 Sep 2022 14:36:36 +0000 (15:36 +0100)]
[clang-format] Use utf-8 for JSON object load
From Python 3.6 and above, it should be able to automatically select a
decoding for json.loads. However, with a vim encoding that defaults
to utf-8, clang-format.py runs into the following error
TypeError: the JSON object must be str, not 'bytes'
This patch explicitly specifies utf-8 decoding for the header.
Reviewed by: ldrumm, sammcall
Differential Revision: https://reviews.llvm.org/D133236
Nikolas Klauser [Mon, 5 Sep 2022 12:38:24 +0000 (14:38 +0200)]
[libc++] Granularize __tuple
Reviewed By: ldionne, #libc
Spies: libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D133081
Amara Emerson [Mon, 5 Sep 2022 14:17:55 +0000 (15:17 +0100)]
[GlobalISel] Update test checks before a patch.
Momchil Velikov [Mon, 5 Sep 2022 11:25:03 +0000 (12:25 +0100)]
[SimplifyCFG] Allow SimplifyCFG hoisting to skip over non-matching instructions
SimplifyCFG does some common code hoisting, which is limited
to hoisting a sequence of identical instruction in identical
order and stops at the first non-identical instruction.
This patch allows hoisting instruction pairs over
same-length sequences of non-matching instructions. The
linear asymptotic complexity of the algorithm stays the
same, there's an extra parameter
`simplifycfg-hoist-common-skip-limit` serving to limit
compilation time and/or the size of the hoisted live ranges.
The patch improves SPECv6/525.x264_r by about 10%.
Reviewed By: nikic, dmgreen
Differential Revision: https://reviews.llvm.org/D129370
Daniil Fukalov [Mon, 5 Sep 2022 14:07:55 +0000 (17:07 +0300)]
[MachineVerifier] Fix crash on early clobbered subreg operands.
MachineVerifier tried to checkLivenessAtDef() ignoring it is actually a subreg.
The issue was with processing two subregs of the same reg are used in the same
instruction (e.g. inline asm): "def early-clobber" and other just "def".
Reviewed By: foad
Differential Revision: https://reviews.llvm.org/D126661
David Sherwood [Mon, 17 Jan 2022 15:43:55 +0000 (15:43 +0000)]
[CodeGen] Support extracting fixed-length vectors from illegal scalable vectors
For some indices we can simply extract the fixed-length subvector from the
low half of the scalable vector, for example when the index is less than the
minimum number of elements in the low half. For all other cases we can
expand the operation through the stack by storing out the vector and
reloading the fixed-length part we need.
Fixes https://github.com/llvm/llvm-project/issues/55412
Tests added here:
CodeGen/AArch64/sve-extract-fixed-from-scalable-vector.ll
Differential Revision: https://reviews.llvm.org/D117499
Haojian Wu [Mon, 5 Sep 2022 12:55:13 +0000 (14:55 +0200)]
[clangd] Fix LineFoldingOnly flag is not propagated correctly to ClangdServer.
The Opts.LineFoldingOnly must be set before the clangdServer
construction, otherwise this flag is always false when using clangd in VSCode.
Differential Revision: https://reviews.llvm.org/D133299
Tian Zhou [Mon, 5 Sep 2022 13:50:40 +0000 (09:50 -0400)]
[InstCombine] reduce test-for-overflow of shifted value
Fixes #57338.
The added code makes the following transformations:
For unsigned predicates / eq / ne:
icmp pred (x << 1), x --> icmp getSignedPredicate(pred) x, 0
icmp pred x, (x << 1) --> icmp getSignedPredicate(pred) 0, x
Some examples:
https://alive2.llvm.org/ce/z/ckn4cj
https://alive2.llvm.org/ce/z/h-4bAQ
Differential Revision: https://reviews.llvm.org/D132888
Ivan Kosarev [Mon, 5 Sep 2022 13:13:12 +0000 (14:13 +0100)]
[AMDGPU][CodeGen] Support (base | offset) SMEM loads.
Prevents generation of unnecessary s_or_b32 instructions.
Reviewed By: foad
Differential Revision: https://reviews.llvm.org/D132552
Haojian Wu [Mon, 5 Sep 2022 13:12:19 +0000 (15:12 +0200)]
[clangd] NFC, correct template argument type for two RetiredFlags.
Andrey Tretyakov [Sun, 4 Sep 2022 01:09:02 +0000 (04:09 +0300)]
[SPIRV] Add tests to improve test coverage
Differential Revision: https://reviews.llvm.org/D133265
Simon Pilgrim [Mon, 5 Sep 2022 12:43:56 +0000 (13:43 +0100)]
[X86] Cleanup SLM SSE shift and CMPGTQ scheduler model numbers
These were causing weird mismatches for the D103695 script report as I'm trying to enable cost kinds support for vector shift and integer comparisons.
The SSE shifts by (non-constant) scalar are half-rate but still only 1uop and PCMPGT is half-rate and only on Pipe0 (although not as slow as PCMPEQQ which we already handle).
Matthias Springer [Mon, 5 Sep 2022 11:49:27 +0000 (13:49 +0200)]
[mlir][bufferize] Add new debug flag: copy-before-write
If this flag is set, the analysis is skipped and buffers are copied before every write.
Differential Revision: https://reviews.llvm.org/D133288
Nikolas Klauser [Mon, 5 Sep 2022 10:44:28 +0000 (12:44 +0200)]
[libc++] Enable rvalue overloads for pair in C++03
We require rvalue support anyways, so let's use it.
Reviewed By: ldionne, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D133013
Mehdi Amini [Mon, 29 Aug 2022 11:01:52 +0000 (11:01 +0000)]
Apply clang-tidy fixes for readability-simplify-boolean-expr in NVGPUDialect.cpp (NFC)
Mehdi Amini [Mon, 29 Aug 2022 11:00:29 +0000 (11:00 +0000)]
Apply clang-tidy fixes for performance-unnecessary-value-param in FoldMemRefAliasOps.cpp (NFC)
Ivan Kosarev [Mon, 5 Sep 2022 12:10:14 +0000 (13:10 +0100)]
[AMDGPU][CodeGen] Pre-commit a test on (base | offset) SMEM loads for D132552.
Reviewed By: foad
Differential Revision: https://reviews.llvm.org/D133021
Mats Petersson [Thu, 25 Aug 2022 12:03:21 +0000 (13:03 +0100)]
[FLANG][NFC]Use RTNAME instead of hard-coding for simplify intrinsics
Use the RTNMAE macro (via stringify macros) to generate the name
strings for runtime functions, instead of using strings.
The sequence of macros generate exactly the same string as the
ones used previously, but this will support future changes in
runtime function names.
No functional change.
Reviewed By: vzakhari
Differential Revision: https://reviews.llvm.org/D132652
Mehdi Amini [Mon, 5 Sep 2022 11:54:19 +0000 (11:54 +0000)]
Plumb write_bytecode to the Python API
This adds a `write_bytecode` method to the Operation class.
The method takes a file handle and writes the binary blob to it.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D133210
Ivan Kosarev [Mon, 5 Sep 2022 11:52:06 +0000 (12:52 +0100)]
[AMDGPU][CodeGen] Support (soffset + offset) s_buffer_load's.
Reviewed By: foad
Differential Revision: https://reviews.llvm.org/D130263
Valentin Clement [Mon, 5 Sep 2022 11:28:19 +0000 (13:28 +0200)]
[flang] Create a box instead of a temp to write to a char array
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D133284
Amara Emerson [Mon, 5 Sep 2022 11:09:17 +0000 (12:09 +0100)]
[GlobalISel] Fix a combine crash due to a negative G_INSERT_VECTOR_ELT idx.
These should really be folded away to undef but we shouldn't crash in any case.
Markus Böck [Mon, 5 Sep 2022 11:05:57 +0000 (13:05 +0200)]
[mlir][NFC] Move CodeGenHelpers.cpp from mlir-tblgen to TableGen library
Its header was already part of the TableGen library, but unusable as uses of its functions or classes would lead to undefined references when linking. This fixes that.
Simon Pilgrim [Mon, 5 Sep 2022 10:46:38 +0000 (11:46 +0100)]
[DAG] getFreeze()/getNode() - account for operand depth when calling isGuaranteedNotToBeUndefOrPoison (PR57554)
Similar to #57402 - we were calling isGuaranteedNotToBeUndefOrPoison on the freeze operand (with Depth = 0), but wasn't accounting for the fact that a later isGuaranteedNotToBeUndefOrPoison assertion will call from the new node (with Depth = 0 as well) - which will then recursively call isGuaranteedNotToBeUndefOrPoison for its operands with Depth = 1
Fixes #57554
Johannes Reifferscheid [Mon, 5 Sep 2022 09:25:58 +0000 (11:25 +0200)]
Add ArithBuilder::sub, make add, mul work with IndexTypes.
sgt and slt already worked with IndexTypes, the others did not.
Reviewed By: pifon2a
Differential Revision: https://reviews.llvm.org/D133285
LLVM GN Syncbot [Mon, 5 Sep 2022 10:39:22 +0000 (10:39 +0000)]
[gn build] Port
d5e26775d089
Nikolas Klauser [Sun, 4 Sep 2022 22:01:15 +0000 (00:01 +0200)]
[libc++] Granularize the rest of memory
Reviewed By: ldionne, #libc
Spies: vitalybuka, paulkirth, libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D132790
Emilia Dreamer [Mon, 5 Sep 2022 10:33:59 +0000 (12:33 +0200)]
[clang-format] Concepts: allow identifiers after negation
Previously, the formatter would refuse to treat identifiers within a
compound concept definition as actually part of the definition, if
they were after the negation operator !. It is now made consistent
with the likes of && and ||.
Fixes https://github.com/llvm/llvm-project/issues/55898
Differential Revision: https://reviews.llvm.org/D131978
Emilia Dreamer [Mon, 5 Sep 2022 10:32:40 +0000 (12:32 +0200)]
[clang-format] Allow `throw` to be a keyword in front of casts
This makes throw more similar to return. However, unlike return,
it has to more strict as to not remove spaces after usages of throw as
a (deprecated) exception specifier.
Fixes https://github.com/llvm/llvm-project/issues/57391
Differential Revision: https://reviews.llvm.org/D132762
Emilia Dreamer [Mon, 5 Sep 2022 10:19:31 +0000 (12:19 +0200)]
[clang-format] Don't put `noexcept` on empty line following constructor
With the AlwaysBreakTemplateDeclarations option, having a constructor
template for a type consisting of all-uppercase letters with a
noexcept specifier would put said noexcept specifier on its own blank
line.
This is because the all-uppercase type is understood as a macro-like
attribute (such as DEPRECATED()), and noexcept is seen as the
declaration. However, noexcept is a keyword and cannot be an
identifier on its own.
Fixes https://github.com/llvm/llvm-project/issues/56216
Differential Revision: https://reviews.llvm.org/D132189
Igor Kudrin [Mon, 15 Aug 2022 18:24:08 +0000 (22:24 +0400)]
[ubsan-minimal] Report the address of an error
This implements a FIXME in the runtime library and adds printing the
address at the end of the message as "by 0x123abc". The buffer for the
message is allocated on the stack in a handler, so the stack memory
consumption is slightly increased. No additional external dependencies
are added.
Differential revision: https://reviews.llvm.org/D131914
Florian Hahn [Mon, 5 Sep 2022 09:48:29 +0000 (10:48 +0100)]
[VPlan] Move VPWidenCallRecipe to VPlanRecipes.cpp (NFC).
Depends on D132585.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D132586
Nicolas Vasilache [Thu, 21 Jul 2022 11:38:46 +0000 (04:38 -0700)]
[mlir][tensor] Add gather/scatter op definitions to the tensor dialect.
Gather/Scatter are examined from first principles in light of our recent progress on tensor-based codegen
and in-place bufferization.
In the future, lowering of these abstractions to operate **inplace** on buffers
will likely require a more powerful buffer representation than strided memref.
General context: https://discourse.llvm.org/t/rfc-structured-codegen-beyond-rectangular-arrays/64707
Relevant TL;DR parts of the proposal:
- gather: https://discourse.llvm.org/t/rfc-structured-codegen-beyond-rectangular-arrays/64707#proposal-gatherop-and-friends-10
- need for more expressive types: https://discourse.llvm.org/t/rfc-structured-codegen-beyond-rectangular-arrays/64707#proposal-bufferization-copy-view-and-the-need-for-more-expressive-types-12
- jagged buffer discussion: https://discourse.llvm.org/t/rfc-structured-codegen-beyond-rectangular-arrays/64707#proposal-first-class-jagged-buffer-13
Differential Revision: https://reviews.llvm.org/D130348
Ying Yi [Fri, 2 Sep 2022 09:25:34 +0000 (10:25 +0100)]
Driver tests: remove `REQUIRES: x86-registered-target` and set `--sysroot=""` to support clang with `DEFAULT_SYSROOT`.
When testing clang that has been compiled with -DDEFAULT_SYSROOT set to some path, ps4-ps5-header-search.c would fail.
The test needs to be updated.
1. Remove unnecessary REQUIRES: x86-registered-target.
2. Override sysroot to be empty string for the test to succeed when clang is configured with DEFAULT_SYSROOT.
serge-sans-paille [Fri, 2 Sep 2022 11:36:08 +0000 (13:36 +0200)]
[clang] Fix crash when parsing scanf format string with missing arguments
When parsing a format string with less argument than specified, one should check
argument access because there may be no such argument.
This fixes #57517
Differential Revision: https://reviews.llvm.org/D133197
Christian Sigg [Mon, 5 Sep 2022 08:43:48 +0000 (10:43 +0200)]
[bazel] NFC: Move licenses declaration from package to function.
The `licences` attribute is deprecated, see https://docs.bazel.build/versions/4.0.0/be/common-definitions.html#common-attributes.
Samuel Parker [Mon, 5 Sep 2022 07:58:16 +0000 (08:58 +0100)]
[NFC][TypePromotion] Add test
Nathan Ridge [Mon, 5 Sep 2022 07:48:17 +0000 (03:48 -0400)]
Fix build error in StmtPrinterTest.cpp
Nikita Popov [Mon, 5 Sep 2022 07:39:59 +0000 (09:39 +0200)]
[LICM] Separate check for writability and thread-safety (NFCI)
This used a single check to make sure that the object is both
writable and thread-local. Separate them out to make the
deficiencies in the current code more obvious.
Nathan Ridge [Mon, 29 Aug 2022 08:19:19 +0000 (04:19 -0400)]
[clangd] Avoid crash when printing call to string literal operator template
Differential Revision: https://reviews.llvm.org/D132830
Krystian Kuzniarek [Sun, 4 Sep 2022 20:06:42 +0000 (22:06 +0200)]
[clang-format][docs] Fix incorrect 'clang-format 4' option markers
Introduced by
23a5090c6, some style option markers indicated
'clang-format 4', though their respective options were available in
earlier releases.
Differential Revision: https://reviews.llvm.org/D129934
Chuanqi Xu [Mon, 5 Sep 2022 06:17:58 +0000 (14:17 +0800)]
[Coroutines] Use LookupAllocationFunction to find allocation functions for coroutines consistently
Previously we may call Sema::FindAllocationFunctions directly to lookup
allocation functions directly instead of using our wrapped lambda
LookupAllocationFunction, which is slightly incosnsistent. It will be
helpful to refactor this for further changes.
Also previously, when we lookup 'operator new(std::size_t, std::nothrow_t)' in
case we found `get_return_object_on_allocation_failure` in the
promise_type, the compiler will try to look at the allocation function
in promise_type. However, this is not wanted actually. According to
[dcl.fct.def.coroutine]p10:
> if a global allocation function is selected, the
> ::operator new(size_t, nothrow_t) form is used.
So we should only lookup for `::operator (size_t, nothrow_t)` for the
global allocation function. For the allocation function in the
promise_type, the requirement is that it shouldn't throw, which has
already been checked.
Given users generally include headers from standard libs so it will
generally include the <new> header, so this change should be a trivial
one and shouldn't affect almost any user.
Fangrui Song [Mon, 5 Sep 2022 07:03:40 +0000 (00:03 -0700)]
[ELF][test] --gc-sections: test SHT_FINI_ARRAY is retained
Fangrui Song [Mon, 5 Sep 2022 07:01:09 +0000 (00:01 -0700)]
[ELF] MarkLive: remove dead code from D24750. NFC
wanglei [Mon, 5 Sep 2022 06:27:36 +0000 (14:27 +0800)]
[LoongArch] Add more fixups and relocations
This patch makes the assembler support all modifiers defined in gnu-as.
Also changes some diagnostic information.
Differential Revision: https://reviews.llvm.org/D132633
Fangrui Song [Mon, 5 Sep 2022 06:48:54 +0000 (23:48 -0700)]
[ASTReader] Fix -Wunused-private-field in non-assertion builds after D128490. NFC
Fangrui Song [Mon, 5 Sep 2022 06:12:26 +0000 (23:12 -0700)]
[ELF] Reuse one RelocationScanner to scan all sections. NFC
Craig Topper [Mon, 5 Sep 2022 05:20:52 +0000 (22:20 -0700)]
[TargetLowering] Use ComputeMaxSignificantBits instead of ComputeNumSignBits in expandMUL_LOHI. NFC
The way ComputeNumSignBits was being used was only correct if
OuterBitSize is exactly 2x InnerBitSize. Which is always true,
but not obviously so. Comparing ComputeMaxSignificantBits to
InnerBitSize feels more correct.
Fangrui Song [Mon, 5 Sep 2022 04:31:18 +0000 (21:31 -0700)]
[ELF] Move scanRelocations into Relocations.cpp. NFC
Fangrui Song [Mon, 5 Sep 2022 04:30:19 +0000 (21:30 -0700)]
[ELF] Relocations: set hasDirectReloc only if not ifunc. NFC
Craig Topper [Mon, 5 Sep 2022 04:18:54 +0000 (21:18 -0700)]
[X86] Pre-commit tests for D130862. NFC
Craig Topper [Mon, 5 Sep 2022 02:42:14 +0000 (19:42 -0700)]
[TargetLowering] Use getShiftAmountConstant. NFC
Chuanqi Xu [Mon, 5 Sep 2022 03:04:38 +0000 (11:04 +0800)]
[NFC] fix incorrect indentation in docs
gonglingqin [Mon, 5 Sep 2022 02:27:54 +0000 (10:27 +0800)]
[LoongArch] Add codegen support for fcopysign
Differential Revision: https://reviews.llvm.org/D133185
Chenbing Zheng [Mon, 5 Sep 2022 02:41:58 +0000 (10:41 +0800)]
[InstCombine] Precommit tests for smul_with_overflow. nfc
ZHU Zijia [Mon, 5 Sep 2022 01:56:04 +0000 (09:56 +0800)]
[LLVM][docs] Update CMake.rst to follow the upgrade to C++ 17 [NFC]
Update `CMake.rst` to follow the upgrade to C++ 17 in LLVM.
Reviewed By: thieta, MaskRay
Differential Revision: https://reviews.llvm.org/D133272
Fangrui Song [Mon, 5 Sep 2022 00:43:39 +0000 (17:43 -0700)]
[ELF] Change a DSO warning to errorOrWarn
Fangrui Song [Mon, 5 Sep 2022 00:27:35 +0000 (17:27 -0700)]
[ELF] Use stOther to track visibility
This simplifies SymbolTableSection<ELFT>::writeTo. Add dsoProtected to be used
in canDefineSymbolInExecutable and get the side benefit that the protected DSO
preemption diagnostic is clearer.
Fangrui Song [Sun, 4 Sep 2022 23:38:27 +0000 (16:38 -0700)]
[ELF] Simplify visibility computation. NFC
Fangrui Song [Sun, 4 Sep 2022 23:21:19 +0000 (16:21 -0700)]
[ELF] SharedFile::parse: make versym handling more precise
VER_NDX_LOCAL/VER_NDX_GLOBAL cannot be hidden, so we can compare them with
versyms[i] instead of versyms[i] & ~VERSYM_HIDDEN. In the presence of an error,
we can suppress addSymbol.
Fangrui Song [Sun, 4 Sep 2022 22:38:52 +0000 (15:38 -0700)]
[ELF] Clarify a workaround for mips GNU ld<2.31
Vitaly Buka [Sun, 4 Sep 2022 21:52:04 +0000 (14:52 -0700)]
Revert "[llvm] Use range-based for loops (NFC)"
range-based loop should not be used here, as
fixupImmediateBr push_backs into the container.
http://lab.llvm.org/buildbot/#/builders/168
http://lab.llvm.org/buildbot/#/builders/74
http://lab.llvm.org/buildbot/#/builders/5
http://lab.llvm.org/buildbot/#/builders/239
http://lab.llvm.org/buildbot/#/builders/237
http://lab.llvm.org/buildbot/#/builders/236
This reverts commit
fedc59734a44ef7b62c5f389b0cdffd02264b2a9.
Fangrui Song [Sun, 4 Sep 2022 22:15:39 +0000 (15:15 -0700)]
[ELF] Remove unneeded @@ check. NFC
Fangrui Song [Sun, 4 Sep 2022 21:44:58 +0000 (14:44 -0700)]
[ELF] Remove a redundant identify_magic call. NFC
Florian Hahn [Sun, 4 Sep 2022 21:22:36 +0000 (22:22 +0100)]
[LCSSA] Update unreachable uses with poison.
Users of LCSSA may not expect non-phi uses when checking the uses
outside a loop, which may cause crashes. This is due to the fact that we
do not update uses in unreachable blocks.
To ensure all reachable uses outside the loop are phis, update uses in
unreachable blocks to use poison in dead code.
Fixes #57508.
Florian Hahn [Sun, 4 Sep 2022 21:18:57 +0000 (22:18 +0100)]
[LV] Update test use opaque pointers, regenerate checks.
Modernize the test to make it easier to extend in a follow-up patch.
Florian Hahn [Sun, 4 Sep 2022 21:07:19 +0000 (22:07 +0100)]
[LCSSA] Update test use opaque pointers, regenerate checks.
Modernize the test to make it easier to extend in a follow-up patch.
LLVM GN Syncbot [Sun, 4 Sep 2022 21:07:13 +0000 (21:07 +0000)]
[gn build] Port
a46154cb1cd0
isuckatcs [Tue, 23 Aug 2022 07:21:16 +0000 (09:21 +0200)]
[analyzer] Warn if the size of the array in `new[]` is undefined
This patch introduces a new checker, called NewArraySize checker,
which detects if the expression that yields the element count of
the array in new[], results in an Undefined value.
Differential Revision: https://reviews.llvm.org/D131299
Daniel Bertalan [Sun, 4 Sep 2022 20:43:02 +0000 (22:43 +0200)]
[lld-macho] Change constant std::vector to std::array (NFC)
Simon Pilgrim [Sun, 4 Sep 2022 17:39:21 +0000 (18:39 +0100)]
[CostModel][X86] Add CostKinds handling for sqrt intrinsicc
This was achieved using the 'cost-tables vs llvm-mca' script from D103695
Some of the znver1/znver2 latency/throughput numbers were really weird (some copy+paste afaict) - I've used the numbers from the AMD SoG, which roughly match the 'worst case' range value from Agner
Simon Pilgrim [Sun, 4 Sep 2022 16:59:08 +0000 (17:59 +0100)]
[CostModel][X86] getTypeBasedIntrinsicInstrCost - convert to CostKindTblEntry
Begin the refactoring to use CostKindTblEntry and return real latency/codesize/sizelatency costs instead of reusing the throughput numbers
Simon Pilgrim [Sun, 4 Sep 2022 16:54:32 +0000 (17:54 +0100)]
[PhaseOrdering] Move X86 unsigned-multiply-overflow-check.ll test under X86
Simon Pilgrim [Sun, 4 Sep 2022 16:51:11 +0000 (17:51 +0100)]
Revert rG06e73626cf0fc33b025a0f98f1eee4a302279982 "[CostModel][X86] getTypeBasedIntrinsicInstrCost - convert to CostKindTblEntry"
Some arm buildbots are complaining about a phase ordering test failure in unsigned-multiply-overflow-check.ll - I guess this test needs making x86 specific first
Krzysztof Parzyszek [Sun, 4 Sep 2022 16:28:15 +0000 (11:28 -0500)]
[Libfuzzer] Include signal.h for SIGINT
Or else compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp fails to compile
on FreeBSD.
Simon Pilgrim [Sun, 4 Sep 2022 16:28:41 +0000 (17:28 +0100)]
[CostModel][X86] getTypeBasedIntrinsicInstrCost - convert to CostKindTblEntry
Begin the refactoring to use CostKindTblEntry and return real latency/codesize/sizelatency costs instead of reusing the throughput numbers