Nick Desaulniers [Wed, 31 Aug 2022 19:40:46 +0000 (12:40 -0700)]
[llvm][test] precommit test for D130127
Add a FIXME that will be immediately removed in D130127.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D132609
Alexey Bataev [Wed, 31 Aug 2022 19:24:42 +0000 (12:24 -0700)]
[SLP][NFC]Fix comment and make function following naming standard, NFC.
Vitaly Buka [Wed, 31 Aug 2022 19:29:04 +0000 (12:29 -0700)]
[mlir] Avoid nullptr as memcpy arguments after D132758
Martin Storsjö [Tue, 30 Aug 2022 07:42:31 +0000 (10:42 +0300)]
[cmake] Disable the -Wmisleading-indentation warning with GCC
We do keep using the flag with Clang, which should keep catching
such issues in buildbots.
With GCC, the warning can cause lots of loud notes about the
warning logic getting disabled in large source files.
Differential Revision: https://reviews.llvm.org/D132914
Philip Reames [Wed, 31 Aug 2022 19:20:12 +0000 (12:20 -0700)]
[SLP] Simplify getOperandInfo implementation and be consistent
This is NOT nfc. Specifically, the following behavior changes:
* Pointers are now allowed. Both uniform, and constants.
* FP uniform non-constants can now be recognized.
* FP undefs are no longer considered constant. This matches int behavior which we had tests for. FP behavior was untested. Its not clear to me int behavior is reasonable, but it's what tests seem to expect, so go with minimum impact for now.
Ying Yi [Wed, 31 Aug 2022 19:16:22 +0000 (20:16 +0100)]
Re-add the REQUIRES line to fix a failed build on builder llvm-clang-win-x-aarch64.
Sanjay Patel [Wed, 31 Aug 2022 18:20:54 +0000 (14:20 -0400)]
[CodeGen] fix misnamed "not" operation; NFC
Seeing the wrong instruction for this name in IR is confusing.
Most of the tests are not even checking a subsequent use of
the value, so I just deleted the over-specified CHECKs.
Katherine Rasmussen [Wed, 17 Aug 2022 16:53:40 +0000 (09:53 -0700)]
[flang] Write semantics test for atomic_fetch_or
Write a semantics test for the atomic intrinsic subroutine,
atomic_fetch_or.
Reviewed By: rouson
Differential Revision: https://reviews.llvm.org/D132519
LLVM GN Syncbot [Wed, 31 Aug 2022 18:52:31 +0000 (18:52 +0000)]
[gn build] Port
74c8d9d5fc83
Wei Yi Tee [Wed, 31 Aug 2022 18:49:56 +0000 (18:49 +0000)]
Revert "[clang][dataflow] Generalise match switch utility to other AST types and add a `CFGMatchSwitch` which currently handles `CFGStmt` and `CFGInitializer`."
This reverts commit
c9033eeb2e59c0157b84adfc6b0fe345f6f03113.
https://lab.llvm.org/buildbot#builders/57/builds/21618
Build failure due to comparison between unsigned int and const int
originating from EXPECT_EQ.
Arthur Eubanks [Wed, 31 Aug 2022 18:19:07 +0000 (11:19 -0700)]
[test][InstCombine] Precommit some undef/noundef tests
Michael Maitland [Wed, 31 Aug 2022 18:03:55 +0000 (11:03 -0700)]
[RISCV][CodeGen] add assertion to RISCVTargetStreamer getTargetStreamer()
X86 and ARM AsmParsers have this same assertion. This assertion provides better reporting when the RISCVTargetStreamer is null and helps to prevent null pointer access.
Reviewed By: bkramer
Differential Revision: https://reviews.llvm.org/D132863
Craig Topper [Wed, 31 Aug 2022 18:03:39 +0000 (11:03 -0700)]
[VP] Correct the LEGALPOS for VP_STORE.
VP_STORE has a Chain for operand 0, so the LEGALPOS should be 1.
VP_STORE is always considered Legal for MVT::Other. So I suspect this
was causing vp_store to be ignored by LegalizeVectorOps and instead
handled in LegalizeDAG.
VP_LOAD is Custom expanded in LegalizeVectorOps for RISC-V.
Differential Revision: https://reviews.llvm.org/D132972
Nico Weber [Wed, 31 Aug 2022 18:15:17 +0000 (14:15 -0400)]
[gn build] port
d45c04da7cc5f (TestingADTTests)
Mark de Wever [Wed, 31 Aug 2022 18:14:10 +0000 (20:14 +0200)]
[libc++][format] Fixes broken CI.
Some of the merged patches didn't have conflicts but were not
compatible. This should fix it.
Siva Chandra Reddy [Fri, 26 Aug 2022 21:17:34 +0000 (21:17 +0000)]
[libc] Add arm-32 syscall implementation.
The implementation currently supports only non-thumb mode. As a test for
the implementation, mmap and munmap functions have been enabled.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D132825
Dong-hee Na [Wed, 31 Aug 2022 17:29:55 +0000 (17:29 +0000)]
[libc] Fix typo in lseek syscall number macro.
Differential Revision: https://reviews.llvm.org/D133022
Mark de Wever [Sat, 20 Aug 2022 08:34:26 +0000 (10:34 +0200)]
[libc++] Reduces the number of transitive includes.
This defines a new policy for removal of transitive includes.
The goal of the policy it to make it relatively easy to remove
headers when needed, but avoid breaking developers using and
vendors shipping libc++.
The method used is to guard transitive includes based on the
C++ language version. For the upcoming C++23 we can remove
headers when we want, but for other language versions we try
to keep it to a minimum.
In this code the transitive include of `<chrono>` is removed
since D128577 introduces a header cycle between `<format>`
and `<chrono>`. This cycle is indirectly required by the
Standard. Our cycle dependency tool basically is a grep based
tool, so it needs some hints to ignore cycles. With the input
of our transitive include tests we can create a better tool.
However that's out of the scope of this patch.
Note the flag `_LIBCPP_REMOVE_TRANSITIVE_INCLUDES` remains
unchanged. So users can still opt-out of transitives includes
entirely.
Reviewed By: #libc, ldionne, philnik
Differential Revision: https://reviews.llvm.org/D132284
Michael Jones [Tue, 30 Aug 2022 22:06:52 +0000 (15:06 -0700)]
[libc][cmake] split fputil into individual targets
The libc.src.__support.FPUtil.fputil target encompassed many unrelated
files, and provided a lot of hidden dependencies. This patch splits out
all of these files into component parts and cleans up the cmake files
that used them. It does not touch any source files for simplicity, but
there may be changes made to them in future patches.
Reviewed By: lntue
Differential Revision: https://reviews.llvm.org/D132980
Wei Yi Tee [Wed, 31 Aug 2022 17:21:33 +0000 (17:21 +0000)]
[llvm][ADT] Overload output stream operator `<<` for `StringMapEntry` and `StringMap`.
Printing support enables the production of more useful error messages in unit testing e.g. when using matchers such as `UnorderedElementsAre()` to inspect the contents of a `StringMap`.
Reviewed By: gribozavr2, sgatev, ymandel
Differential Revision: https://reviews.llvm.org/D132747
Fangrui Song [Wed, 31 Aug 2022 17:31:45 +0000 (10:31 -0700)]
[Driver][test] Test -dumpmachine
Mark de Wever [Sat, 6 Aug 2022 19:30:22 +0000 (21:30 +0200)]
[libc++][format] Fixes floating-point formatting.
Formatting the alternate form for the general categories should keep the
trailing zeros. This was reported by @fsb4000 in D131336.
The default format uses general formatting but this should not keep the
trailing zeros so the default format is not passed to the formatter.
While testing I found an off by one error; finding the exponent character
`e` in 1e+03 will start at after the `1` so a size of `4` can contain an
exponent.
Reviewed By: fsb4000, ldionne, #libc
Differential Revision: https://reviews.llvm.org/D131417
Arthur Eubanks [Wed, 31 Aug 2022 16:59:21 +0000 (09:59 -0700)]
[NFC] clang-format Any.h
To trigger some bots.
Differential Revision: https://reviews.llvm.org/D133033
Mark de Wever [Thu, 4 Aug 2022 15:54:20 +0000 (17:54 +0200)]
[NFC][libc++][format] Renames __char_type concept.
Move the concept to the concepts header and uses a name in the style of
P2286.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D131176
Mark de Wever [Wed, 27 Jul 2022 17:17:08 +0000 (19:17 +0200)]
[libc++][format] Allows width arg-id with value 0.
Implements:
- LWG3721 Allow an arg-id with a value of zero for width in std-format-spec
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D130649
Mark de Wever [Sat, 13 Aug 2022 13:05:10 +0000 (15:05 +0200)]
[libc++][CI] increases constexpr evaluation limit.
This was discovered as an issue in D131317.
Depends on D131835
Reviewed By: #libc, var-const, ldionne, philnik
Differential Revision: https://reviews.llvm.org/D131836
Mark de Wever [Wed, 24 Aug 2022 18:39:41 +0000 (20:39 +0200)]
[libc++] Tests transitive includes for all C++03.
A followup of D132534 with C++03 enabled after fixing the experimental
PMR issues.
Depends on D132582
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D132584
Mark de Wever [Wed, 24 Aug 2022 18:22:22 +0000 (20:22 +0200)]
[libc++][experimental] Disables PMR in C++03.
While working on D132534 it appeared the experimental PMR code doesn't
have version guards and fails to compile on C++03. This adds the guards
for that version. It seems the tests already were only disabled for
C++03.
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D132582
Mark de Wever [Thu, 25 Aug 2022 15:37:02 +0000 (17:37 +0200)]
[libc++] Inlines format_error for clang-cl DLL.
This version is build without support for the experimental library but
the code still wants to link this function. Inlining the function solves
the issue.
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D132667
LLVM GN Syncbot [Wed, 31 Aug 2022 17:02:52 +0000 (17:02 +0000)]
[gn build] Port
c9033eeb2e59
Wei Yi Tee [Wed, 31 Aug 2022 16:27:37 +0000 (16:27 +0000)]
[clang][dataflow] Generalise match switch utility to other AST types and add a `CFGMatchSwitch` which currently handles `CFGStmt` and `CFGInitializer`.
`MatchSwitch` currently takes in matchers and functions for the `Stmt` class.
This patch generalises the match switch utility (renamed to `ASTMatchSwitch`) to work for different AST node types by introducing a template argument which is the base type for the AST nodes that the match switch will handle.
A `CFGMatchSwitch` is introduced as a wrapper around multiple `ASTMatchSwitch`s for different base types. It works by unwrapping `CFGElement`s into their contained AST nodes and passing the nodes to the relevant `ASTMatchSwitch`. The `CFGMatchSwitch` currently only handles `CFGStmt` and `CFGInitializer`.
Reviewed By: gribozavr2, sgatev
Differential Revision: https://reviews.llvm.org/D131616
Mingming Liu [Mon, 29 Aug 2022 21:30:52 +0000 (14:30 -0700)]
[AArch64][CostModel][NFC] Specify target datalayout explicitly for cost analysis test.
- Use linux little endian data layout string.
Differential Revision: https://reviews.llvm.org/D132889
Daniel Thornburgh [Fri, 5 Aug 2022 21:58:44 +0000 (14:58 -0700)]
[Symbolizer] Handle {{{bt}}} symbolizer markup element.
This adds support for backtrace generation to the llvm-symbolizer markup
filter, which is likely the largest use case.
Reviewed By: peter.smith
Differential Revision: https://reviews.llvm.org/D132706
Ben Langmuir [Thu, 25 Aug 2022 16:22:31 +0000 (09:22 -0700)]
Reapply "[clang][deps] Split translation units into individual -cc1 or other commands"
Attempt to fix the test failures observed in CI:
* Add Option dependency, which caused BUILD_SHARED_LIBS builds to fail
* Adapt tests that accidentally depended on the host platform: platforms
that don't use an integrated assembler (e.g. AIX) get a different set
of commands from the driver. Most dependency scanner tests can use
-fsyntax-only or -E instead of -c to avoid this, and in the rare case
we want to check -c specifically, set an explicit target so the
behaviour is independent of the host.
Original commit message follows.
---
Instead of trying to "fix" the original driver invocation by appending
arguments to it, split it into multiple commands, and for each -cc1
command use a CompilerInvocation to give precise control over the
invocation.
This change should make it easier to (in the future) canonicalize the
command-line (e.g. to improve hits in something like ccache), apply
optimizations, or start supporting multi-arch builds, which would
require different modules for each arch.
In the long run it may make sense to treat the TU commands as a
dependency graph, each with their own dependencies on modules or earlier
TU commands, but for now they are simply a list that is executed in
order, and the dependencies are simply duplicated. Since we currently
only support single-arch builds, there is no parallelism available in
the execution.
Differential Revision: https://reviews.llvm.org/D132405
Egor Zhdan [Tue, 30 Aug 2022 17:43:17 +0000 (18:43 +0100)]
[libclang] Fix conversion from `StringRef` to `CXString`
`CXString createRef(StringRef String)` used to return an invalid string when invoked with some empty strings:
If a `StringRef` holds a non-nullptr pointer, for instance, pointing into contents of a larger string, and has a zero length, `createRef` previously returned the entire larger string, ignoring the fact that the actual string passed to it as a param is empty.
This was discovered when invoking `c-index-test` to dump the contents of documentation comments, in case the comment contains an empty HTML attribute, such as `src=""`.
Differential Revision: https://reviews.llvm.org/D133009
Simon Pilgrim [Wed, 31 Aug 2022 16:26:05 +0000 (17:26 +0100)]
[CostModel][X86] Add and/or/xor general cost kinds support
Account for double-pumping on early AVX1/AVX2 targets
Peixin Qiao [Wed, 31 Aug 2022 15:35:42 +0000 (23:35 +0800)]
[flang] Support lowering of intrinsic module procedure C_FUNLOC
As Fortran 2018 18.2.3.5, the intrinsic c_funloc(x) gets the C address
of argument x. It returns the scalar of type C_FUNPTR. As defined in
iso_c_binding in flang/module/__fortran_builtins.f90, C_FUNPTR is the
derived type with only one component of integer 64.
This follows the implementation of https://reviews.llvm.org/D129659. The
argument is lowered as ProcBox and the address is generated using
fir.box_addr.
Reviewed By: jeanPerier, clementval
Differential Revision: https://reviews.llvm.org/D132273
Florian Hahn [Wed, 31 Aug 2022 15:25:17 +0000 (16:25 +0100)]
[SLP] Add FMA test case with missing or partial fast-math flags.
Add extra FMA tests with missing or partial fast-math flags.
Daniel Bertalan [Wed, 31 Aug 2022 10:32:21 +0000 (12:32 +0200)]
[lld-macho] Set the SG_READ_ONLY flag on __DATA_CONST
This flag instructs dyld to make the segment read-only after fixups have
been performed.
I'm not sure why this flag is needed, as on macOS 13 beta at least,
__DATA_CONST is read-only even without this flag; but ld64 sets it as
well.
Differential Revision: https://reviews.llvm.org/D133010
Simon Pilgrim [Wed, 31 Aug 2022 13:39:32 +0000 (14:39 +0100)]
[DAG] extractShiftForRotate - replace assertion for shift opcode with an early-out
We feed the result from the first extractShiftForRotate call into the second, and that result might no longer be a shift op (usually due to constant folding).
NOTE: We REALLY need to stop creating nodes on the fly inside extractShiftForRotate!
Fixes Issue #57474
Jon Chesterfield [Wed, 31 Aug 2022 14:11:32 +0000 (15:11 +0100)]
[amdgpu][nfc] Factor predicate out of findLDSVariablesToLower
Jez Ng [Wed, 31 Aug 2022 14:21:25 +0000 (10:21 -0400)]
[lld-macho][nfc] Simplify MarkLive.cpp using `if constexpr`
No significant perf diff, as expected.
base diff difference (95% CI)
sys_time 1.722 ± 0.030 1.727 ± 0.027 [ -0.6% .. +1.2%]
user_time 5.081 ± 0.032 5.087 ± 0.030 [ -0.2% .. +0.4%]
wall_time 6.008 ± 0.056 6.029 ± 0.053 [ -0.1% .. +0.8%]
samples 25 37
Reviewed By: #lld-macho, oontvoo, thakis, BertalanD
Differential Revision: https://reviews.llvm.org/D133014
Siva Chandra Reddy [Wed, 31 Aug 2022 09:08:44 +0000 (09:08 +0000)]
[bazel overlay][libc] Add unistd targets.
Reviewed By: gchatelet
Differential Revision: https://reviews.llvm.org/D133004
Aaron Ballman [Wed, 31 Aug 2022 13:23:45 +0000 (09:23 -0400)]
Further update -Wbitfield-constant-conversion for 1-bit bitfield
https://reviews.llvm.org/D131255 (
82afc9b169a67e8b8a1862fb9c41a2cd974d6691)
began warning about conversion causing data loss for a single-bit
bit-field. However, after landing the changes, there were reports about
significant false positives from some code bases.
This alters the approach taken in that patch by introducing a new
warning group (-Wsingle-bit-bitfield-constant-conversion) which is
grouped under -Wbitfield-constant-conversion to allow users to
selectively disable the single-bit warning without losing the other
constant conversion warnings.
Differential Revision: https://reviews.llvm.org/D132851
Florian Hahn [Wed, 31 Aug 2022 13:01:41 +0000 (14:01 +0100)]
[LV] Add test case where SCEV is needed to remove vector backedge.
Test case mentioned in the discussion for D115261.
Aaron Ballman [Wed, 31 Aug 2022 12:29:19 +0000 (08:29 -0400)]
Clarifying the documentation for diagnostic formats; NFC
While discussing diagnostic format strings with a GSoC mentee, it
became clear there was some confusion regarding how to use them.
Specifically, the documentation for %select caused confunsion because
it was using %select{}2 and talking about how the integer value must
be in the range [0..2], which made it seem like the positional argument
was actually specifying the range of acceptable values.
I clarified several of the examples similarly, moved some documentation
to a more appropriate place, and added some additional information to
the %s modifier to point out that %plural exists.
Hassnaa Hamdi [Wed, 24 Aug 2022 15:53:40 +0000 (15:53 +0000)]
[AArch64 - SVE]: Use SVE to lower reduce.fadd.
Differential Revision: https://reviews.llvm.org/D132573
skip custom-lowering for v1f64 to be expanded instead, because it has only one lane
Differential Revision: https://reviews.llvm.org/D132959
Florian Hahn [Wed, 31 Aug 2022 12:24:49 +0000 (13:24 +0100)]
[LV] Fix test cases where vector loop never executed.
It looks like the vector loops in the modified test cases
unintentionally never get executed. Update the exit condition to ensure
it does to avoid them getting optimized away in upcoming changes.
Nikita Popov [Wed, 31 Aug 2022 12:23:43 +0000 (14:23 +0200)]
[LLParser] Add test for phi first class type error (NFC)
Nikita Popov [Wed, 31 Aug 2022 07:40:50 +0000 (09:40 +0200)]
[LLParser] Allow zero-input phi nodes
Zero-input phi nodes are accepted by the verifier and bitcode reader,
but currently rejected by the IR parser. Allow them there as well.
Because phi nodes must have one entry for each predecessor, such
phis can only occur in blocks without predecessors, aka unreachable
code.
Usually, when removing the last predecessor from a block, we also
remove phi nodes in it. However, this is not possible for
invalidation reasons sometimes, which is why we ended up allowing
zero-entry phis at some point in the past. See
9eb2c0113dfe,
D92247 and PR48296 for context.
I've dropped the verifier unit test, because this is now covered
by the regular IR test.
This fixes at least part of https://github.com/llvm/llvm-project/issues/57446.
Differential Revision: https://reviews.llvm.org/D133000
Alvin Wong [Wed, 31 Aug 2022 12:10:45 +0000 (15:10 +0300)]
[COFF] Use the more accurate GuardFlags definition everywhere
This also modifies llvm-readobj to be more future-proof when printing
the guard FIDs table by calculating the entry size correctly according
to MS docs.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D132924
Alvin Wong [Wed, 31 Aug 2022 12:01:57 +0000 (15:01 +0300)]
[llvm-readobj][COFF] Print load config GuardFlags as enum flags
Print flags as documented in MS docs.
https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#load-configuration-layout
https://docs.microsoft.com/en-us/windows/win32/secbp/pe-metadata
EH_CONTINUATION_TABLE_PRESENT is not mentioned in the docs but is
instead taken from Windows SDK headers.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D132823
Martin Storsjö [Mon, 29 Aug 2022 09:10:52 +0000 (12:10 +0300)]
[clang] Silence a false positive GCC -Wunused-but-set-parameter warning with constexpr
This fixes the following warning:
In file included from ../tools/clang/lib/Tooling/Transformer/Transformer.cpp:9:
../tools/clang/include/clang/Tooling/Transformer/Transformer.h: In instantiation of ‘llvm::Error clang::tooling::detail::populateMetadata(const clang::transformer::RewriteRuleWith<MetadataT>&, size_t, const clang::ast_matchers::MatchFinder::MatchResult&, clang::tooling::TransformerResult<T>&) [with T = void; size_t = long unsigned int]’:
../tools/clang/include/clang/Tooling/Transformer/Transformer.h:179:34: required from ‘void clang::tooling::detail::WithMetadataImpl<T>::onMatchImpl(const clang::ast_matchers::MatchFinder::MatchResult&) [with T = void]’
../tools/clang/include/clang/Tooling/Transformer/Transformer.h:156:8: required from here
../tools/clang/include/clang/Tooling/Transformer/Transformer.h:120:25: warning: parameter ‘SelectedCase’ set but not used [-Wunused-but-set-parameter]
120 | size_t SelectedCase,
| ~~~~~~~^~~~~~~~~~~~
The issue is fixed in GCC 10 and later, but this silences the noisy
warning in older versions. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85827
for more details about the bug.
Differential Revision: https://reviews.llvm.org/D132920
Hassnaa Hamdi [Wed, 31 Aug 2022 11:39:20 +0000 (11:39 +0000)]
[AArch64-SVE-fixed]:
change vscale_range<2,0> to vscale_range<1,0> for 64/128-bit vectors of fadda tests
Benjamin Kramer [Wed, 31 Aug 2022 11:31:11 +0000 (13:31 +0200)]
[bazel] Drop ConversionPassDetail, it shouldn't be needed after
67d0d7ac0acb0665d6a09f61278fbcf51f0114c2
Valentin Clement [Wed, 31 Aug 2022 11:24:57 +0000 (13:24 +0200)]
[flang] Apply lower bounds correctly before runtime call to ubound
Apply lower bounds before call to the ubound runtime function.
This is similary done in genLBound.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D133001
Simon Pilgrim [Wed, 31 Aug 2022 11:20:20 +0000 (12:20 +0100)]
[DAG] visitFreeze - account for operand depth when calling isGuaranteedNotToBeUndefOrPoison (PR57402)
We were calling isGuaranteedNotToBeUndefOrPoison on operands (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 #57402
Mikhail Goncharov [Wed, 31 Aug 2022 11:10:12 +0000 (13:10 +0200)]
[clang] update pr27699 test to make headers different (NFC)
some build systems treat those headers as identical, causing a warning
David Green [Wed, 31 Aug 2022 11:08:38 +0000 (12:08 +0100)]
[ARM] Add a phase ordering test for MVE intrinsic remainder vectorization/unrolling. NFC
Michele Scuttari [Wed, 31 Aug 2022 08:16:29 +0000 (10:16 +0200)]
[MLIR] Update pass declarations to new autogenerated files
The patch introduces the required changes to update the pass declarations and definitions to use the new autogenerated files and allow dropping the old infrastructure.
Reviewed By: mehdi_amini, rriddle
Differential Review: https://reviews.llvm.org/D132838
Wei Yi Tee [Wed, 31 Aug 2022 08:41:32 +0000 (08:41 +0000)]
[clang][dataflow] Extend transfer functions for other `CFGElement`s
Previously, the transfer function `void transfer(const Stmt *, ...)` overriden by users is restricted to apply only on `CFGStmt`s and its contained `Stmt`.
By using a transfer function (`void transfer(const CFGElement *, ...)`) that takes a `CFGElement` as input, this patch extends user-defined analysis to all kinds of `CFGElement`. For example, users can now handle `CFGInitializer`s where `CXXCtorInitializer` AST nodes are contained.
Reviewed By: gribozavr2, sgatev
Differential Revision: https://reviews.llvm.org/D131614
Simon Pilgrim [Wed, 31 Aug 2022 09:02:38 +0000 (10:02 +0100)]
[CostModel][X86] Replace CostKindCosts constructor with default values.
This improves static initialization of the cost tables and significantly speeds up MSVC compile time.
Nikita Popov [Wed, 13 Jul 2022 14:53:11 +0000 (16:53 +0200)]
[InstCombine] Use getInsertionPointAfterDef() in freeze fold
This simplifies the code and fixes handling of catchswitch, in
which case we have no insertion point for the freeze.
Originally part of D129660.
corona10 [Wed, 31 Aug 2022 09:19:38 +0000 (10:19 +0100)]
[clang-tidy] Fix modernize-use-emplace to support alias cases
Fix modernize-use-emplace to support alias cases
Reviewed By: njames93
Differential Revision: https://reviews.llvm.org/D132640
Nikita Popov [Tue, 9 Aug 2022 12:43:25 +0000 (14:43 +0200)]
[libclc] Quote addition of CLC/LLAsm flags
Otherwise cmake will insert a semicolon if flags are already set.
Differential Revision: https://reviews.llvm.org/D131490
Nikita Popov [Wed, 13 Jul 2022 14:53:11 +0000 (16:53 +0200)]
[Reassociate] Use getInsertionPointerAfterDef()
This simplifies the code and fixes handling for the callbr case,
where the instruction needs to be inserted in the normal
destination, rather than after the terminator.
Originally part of D129660.
Ying Yi [Mon, 22 Aug 2022 15:42:32 +0000 (16:42 +0100)]
Remove `REQUIRES: x86-registered-target` from ps4/ps5 driver tests
Reviewed By: probinson
Differential Revision: https://reviews.llvm.org/D132950
Nikita Popov [Wed, 13 Jul 2022 14:53:11 +0000 (16:53 +0200)]
[IR] Add Instruction::getInsertionPointAfterDef()
Transforms occasionally want to insert an instruction directly
after the definition point of a value. This involves quite a few
different edge cases, e.g. for phi nodes the next insertion point
is not the next instruction, and for invokes and callbrs its not
even in the same block. Additionally, the insertion point may not
exist at all if catchswitch is involved.
This adds a general Instruction::getInsertionPointAfterDef() API to
implement the necessary logic. For now it is used in two places
where this should be mostly NFC. I will follow up with additional
uses where this fixes specific bugs in the existing implementations.
Differential Revision: https://reviews.llvm.org/D129660
Adrian Kuegel [Wed, 31 Aug 2022 08:38:19 +0000 (10:38 +0200)]
[mlir][OpenMP] Apply ClangTidy readability finding.
Use .empty() check instead of size() check.
Daniel Bertalan [Tue, 30 Aug 2022 14:54:04 +0000 (16:54 +0200)]
[lld-macho] Support synthesizing __TEXT,__init_offsets
This section stores 32-bit `__TEXT` segment offsets of initializer
functions, and is used instead of `__mod_init_func` when chained fixups
are enabled.
Storing the offsets lets us avoid emitting fixups for the initializers.
Differential Revision: https://reviews.llvm.org/D132947
Kadir Cetinkaya [Wed, 31 Aug 2022 08:12:52 +0000 (10:12 +0200)]
Revert "[clang] Fix a crash in constant evaluation"
This reverts commit
a5ab650714d05c2e49ec158dc99156118a893027.
Kadir Cetinkaya [Tue, 30 Aug 2022 09:00:16 +0000 (11:00 +0200)]
[clang] Fix a crash in constant evaluation
This was showing up in our internal crash collector. I have no idea how
to test it out though, open for suggestions if there are easy paths but
otherwise I'd move forward with the patch.
Differential Revision: https://reviews.llvm.org/D132918
Nikita Popov [Wed, 31 Aug 2022 07:14:53 +0000 (09:14 +0200)]
[GVN] Add another test for phi translation miscompile (NFC)
Aleksandr Bezzubikov [Tue, 30 Aug 2022 23:34:50 +0000 (16:34 -0700)]
[SPIR-V] Use llvm::Optional for builtin lowering result.
Replace result type std::pair<bool, bool> of lowerBuiltin with
a nice and convenient Optional<bool>.
Reviewed By: iliya-diyachkov, MaskRay
Differential Revision: https://reviews.llvm.org/D132802
gonglingqin [Wed, 31 Aug 2022 06:13:08 +0000 (14:13 +0800)]
[LoongArch] Support floating-point number reciprocal
Differential Revision: https://reviews.llvm.org/D132847
Xiang Li [Mon, 29 Aug 2022 06:50:12 +0000 (23:50 -0700)]
[DirectX backend] change MinVectorRegisterBitWidth to 32.
This is to avoid vector-combine generate vector4 on float.
Reviewed By: beanz
Differential Revision: https://reviews.llvm.org/D132826
Fangrui Song [Wed, 31 Aug 2022 06:01:22 +0000 (23:01 -0700)]
[SLPVectorizer] Fix -Wunused-lambda-capture in -DLLVM_ENABLE_ASSERTIONS=off build
owenca [Tue, 30 Aug 2022 01:28:18 +0000 (18:28 -0700)]
[clang-format] Fix a bug in inserting braces at trailing comments
If the style wraps control statement braces, the opening braces
should be inserted after the trailing comments if present.
Fixes #57419.
Differential Revision: https://reviews.llvm.org/D132905
Tue Ly [Wed, 31 Aug 2022 05:26:01 +0000 (01:26 -0400)]
[libc][doc] Update implementation status of atanf and atanhf.
Chuanqi Xu [Wed, 31 Aug 2022 05:01:48 +0000 (13:01 +0800)]
[NFC] Add an invalid test case for clang/test/CXX/module/module.reach/ex1.cpp
Shraiysh Vaishay [Wed, 31 Aug 2022 04:34:24 +0000 (04:34 +0000)]
[mlir][OpenMP] Translation to LLVM IR for omp.taskgroup
This patch adds translation from OpenMP Dialect to LLVM IR for
omp.taskgroup. This patch also adds missing tests for the clauses in
omp.taskgroup operation.
Reviewed By: peixin
Differential Revision: https://reviews.llvm.org/D130157
jacquesguan [Sat, 20 Aug 2022 13:33:00 +0000 (21:33 +0800)]
[RISCV] Add cost model for select and integer compare instructions.
This patch adds cost model for vector select and integer compare instructions.
Chuanqi Xu [Wed, 31 Aug 2022 03:09:46 +0000 (11:09 +0800)]
[docs] Add "Standard C++ Modules"
We get some standard C++ module things done in clang15.x. But we lack a
user documentation for it. The implementation of standard C++ modules
share a big part of codes with clang modules. But they have very
different semantics and user interfaces, so I think it is necessary to
add a document for Standard C++ modules. Previously, there were also
some people ask the document for standard C++ Modules and I couldn't
offer that time.
Reviewed By: iains, Mordante, h-vetinari, ruoso, dblaikie, JohelEGP,
aaronmondal
Differential Revision: https://reviews.llvm.org/D131388
jacquesguan [Mon, 29 Aug 2022 07:24:55 +0000 (15:24 +0800)]
[RISCV][test] Add cost model coverage for compare instructions.
Differential Revision: https://reviews.llvm.org/D132827
Chenbing Zheng [Wed, 31 Aug 2022 02:49:58 +0000 (10:49 +0800)]
[InstCombine] add support for multi-use Y of (X op Y) op Z --> (Y op Z) op X
For (X op Y) op Z --> (Y op Z) op X
we can still do transform when Y is multi-use. In D131356 limit it to one-use,
this patch remove this limit.
This is still not a complete solution, I add a todo test to show it.
In this case, X and Y are both multi use, we can't differentiate how to convert based on this.
But at least we don't make the code worse,and it can solve half the scenarios.
Vitaly Buka [Tue, 30 Aug 2022 03:33:01 +0000 (20:33 -0700)]
[msan] Add more specific messages for use-after-destroy
Reviewed By: kda, kstoimenov
Differential Revision: https://reviews.llvm.org/D132907
Kai Luo [Wed, 31 Aug 2022 01:23:32 +0000 (09:23 +0800)]
[AtomicExpand] Make floating point conversion happens before fence insertion
IIUC, the conversion part is not part of atomic operations and fences should be put around converted atomic operations.
This also fixes atomic load of floating point values which requires fence on PowerPC.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D127609
Richard Smith [Wed, 31 Aug 2022 01:20:51 +0000 (18:20 -0700)]
Revert "[driver] Additional ignoring of module-map related flags, if modules are disabled"
This reverts commit
33162a81d4c93a53ef847d3601b0b03830937d3c.
This change breaks the usage of module maps with modules disabled, such
as for layering checking via `-fmodules-decluse`.
Regression test added.
Shafik Yaghmour [Wed, 31 Aug 2022 01:08:44 +0000 (18:08 -0700)]
[Clang] Fix lambda CheckForDefaultedFunction(...) so that it checks the CXXMethodDecl is a special member function before attempting to call DefineDefaultedFunction(...)
In Sema::CheckCompletedCXXClass(...) It used a lambda CheckForDefaultedFunction
the CXXMethodDecl passed to CheckForDefaultedFunction may not be a special
member function and so before attempting to apply functions that only apply to
special member functions it needs to check. It fails to do this before calling
DefineDefaultedFunction(...). This PR adds that check and test to verify we no
longer crash.
This fixes https://github.com/llvm/llvm-project/issues/57431
Differential Revision: https://reviews.llvm.org/D132906
Weining Lu [Wed, 31 Aug 2022 00:48:01 +0000 (08:48 +0800)]
[llc] Use CPUStr instead of calling codegen::getMCPU(). NFC
`getCPUStr()` fallsback to `getMCPU()`.
The only difference between `getCPUStr()` and `getMCPU()` is that
`getCPUStr()` handles `-mcpu=native`. That doesn't matter for this case.
This is just a simplification of the original code and it does not
change the functionality. So no new tests added.
Differential Revision: https://reviews.llvm.org/D132849
Lang Hames [Sat, 27 Aug 2022 03:29:02 +0000 (20:29 -0700)]
[ORC-RT] Make llvm-jitlink an ORC-RT specific dependence.
The llvm-jitlink tool is not needed by other sanitizer tests.
Joseph Huber [Tue, 30 Aug 2022 21:21:22 +0000 (16:21 -0500)]
[Libomptarget] Remove old workaround for GCC 5,6 from libomptarget
Some code previous needed the `used` attribute to prevent the GCC
compiler versions 5 and 6 from removing it. This is no longer required
as the minimum supported GCC version for LLVM 16 is >=7.1.0.
Reviewed By: JonChesterfield, vzakhari
Differential Revision: https://reviews.llvm.org/D132976
bzcheeseman [Tue, 9 Aug 2022 15:11:13 +0000 (08:11 -0700)]
[Docs][CodeReview] Add a small paragraph on adding tokens, NFC.
Reviewed By: whisperity
Differential Revision: https://reviews.llvm.org/D131500
LLVM GN Syncbot [Tue, 30 Aug 2022 22:53:54 +0000 (22:53 +0000)]
[gn build] Port
ea9ac3519c13
Greg Clayton [Fri, 24 Jun 2022 22:08:59 +0000 (15:08 -0700)]
An upcoming patch to LLDB will require the ability to decode base64. This patch adds support for decoding base64 and adds tests.
Resubmission of https://reviews.llvm.org/D126254 with where decodeBase64Byte is no longer a lambda but a static function. Some compilers have different errors or warnings with respect to what needs to be captured and what doesn't (see comments in https://reviews.llvm.org/D126254 for details).
Differential Revision: https://reviews.llvm.org/D128560
Ben Langmuir [Tue, 30 Aug 2022 22:50:09 +0000 (15:50 -0700)]
Revert "[clang][deps] Split translation units into individual -cc1 or other commands"
Failing on some bots, reverting until I can fix it.
This reverts commit
f80a0ea760728e70f70debf744277bc3aa59bc17.
Markus Böck [Tue, 30 Aug 2022 22:35:07 +0000 (00:35 +0200)]
[GlobalISel] Explicitly fail trying to translate `gc.statepoint` and related intrinsics
The provided testcase would previously fail with an assertion due to later down below trying to allocate registers for `token` return types and arguments. This is especially problematic as the process would then exit instead of falling back to using FastIsel.
This patch fixes that by simply explicitly failing translation if either of these intrinsics are encountered.
Fixes https://github.com/llvm/llvm-project/issues/57349
Differential Revision: https://reviews.llvm.org/D132974
Ben Langmuir [Thu, 25 Aug 2022 16:22:31 +0000 (09:22 -0700)]
[clang][deps] Split translation units into individual -cc1 or other commands
Instead of trying to "fix" the original driver invocation by appending
arguments to it, split it into multiple commands, and for each -cc1
command use a CompilerInvocation to give precise control over the
invocation.
This change should make it easier to (in the future) canonicalize the
command-line (e.g. to improve hits in something like ccache), apply
optimizations, or start supporting multi-arch builds, which would
require different modules for each arch.
In the long run it may make sense to treat the TU commands as a
dependency graph, each with their own dependencies on modules or earlier
TU commands, but for now they are simply a list that is executed in
order, and the dependencies are simply duplicated. Since we currently
only support single-arch builds, there is no parallelism available in
the execution.
Differential Revision: https://reviews.llvm.org/D132405
Ian Anderson [Tue, 30 Aug 2022 20:09:21 +0000 (13:09 -0700)]
[clang][modules] Don't hard code [no_undeclared_includes] for the Darwin module
The Darwin module has specified [no_undeclared_includes] for at least five years now, there's no need to hard code it in the compiler.
Reviewed By: ributzka, Bigcheese
Differential Revision: https://reviews.llvm.org/D132971
Mingming Liu [Sat, 20 Aug 2022 04:14:43 +0000 (21:14 -0700)]
[NFC] Move a test case across files.
The test case is about pmull2 instruction generated used than a SIMD
ldr being generated. So aarch64-pmull2.ll is a better test file.
Differential Revision: https://reviews.llvm.org/D132277