Haojian Wu [Thu, 11 Aug 2022 21:09:27 +0000 (23:09 +0200)]
[pseudo] Eliminate an ambiguity for the empty member declaration.
We happened to introduce a `member-declaration := ;` rule
when inlining the `member-declaration := decl-specifier-seq_opt
member-declarator-list_opt ;`.
And with the `member-declaration := empty-declaration` rule, we had two parses of `;`.
This patch is to restrict the grammar to eliminate the
`member-declaration := ;` rule.
Differential Revision: https://reviews.llvm.org/D131724
Nimish Mishra [Fri, 12 Aug 2022 11:16:26 +0000 (16:46 +0530)]
[flang][OpenMP] Lowering support for default clause
This patch adds lowering support for default clause.
1. During symbol resolution in semantics, should the enclosing context
have a default data sharing clause defined and a `parser::Name` is not
attached to an explicit data sharing clause, the
`semantics::Symbol::Flag::OmpPrivate` flag (in case of
default(private)) and `semantics::Symbol::Flag::OmpFirstprivate` flag
(in case of default(firstprivate)) is added to the symbol.
2. During lowering, all symbols having either
`semantics::Symbol::Flag::OmpPrivate` or
`semantics::Symbol::Flag::OmpFirstprivate` flag are collected and
privatised appropriately.
Co-authored-by: Peixin Qiao <qiaopeixin@huawei.com>
Reviewed by: peixin
Differential Revision: https://reviews.llvm.org/D123930
Nimish Mishra [Fri, 12 Aug 2022 11:15:38 +0000 (16:45 +0530)]
Revert "[flang][OpenMP] Lowering support for default clause"
This reverts commit
6a305c9b49dd28eaeae694fce5755e279fbc884c.
Nimish Mishra [Fri, 12 Aug 2022 16:35:43 +0000 (22:05 +0530)]
[flang][OpenMP] Lowering support for default clause
This patch adds lowering support for default clause.
1. During symbol resolution in semantics, should the enclosing context have
a default data sharing clause defined and a `parser::Name` is not attached
to an explicit data sharing clause, the
`semantics::Symbol::Flag::OmpPrivate` flag (in case of default(private))
and `semantics::Symbol::Flag::OmpFirstprivate` flag (in case of
default(firstprivate)) is added to the symbol.
2. During lowering, all symbols having either
`semantics::Symbol::Flag::OmpPrivate` or
`semantics::Symbol::Flag::OmpFirstprivate` flag are collected and
privatised appropriately.
Co-authored-by: Peixin Qiao <qiaopeixin@huawei.com>
Reviewed by: peixin
Differential Revision: https://reviews.llvm.org/D123930
Adrian Vogelsgesang [Sun, 7 Aug 2022 17:29:32 +0000 (10:29 -0700)]
[libc++][test] Mark `test_comparisons.h` helpers as nodiscard
I accidentally wrote `testComparisons(...)` instead of
`assert(testComparisons(...))`. This compiled without issues, but
did not provide the intended test coverage. By adding a `nodiscard`,
we can make sure that the compiler catches such mistakes for us.
Differential Revision: https://reviews.llvm.org/D131364
Utkarsh Saxena [Tue, 9 Aug 2022 10:05:26 +0000 (12:05 +0200)]
Handle explicitly defaulted consteval special members.
Followup patch for D128083
Previously, using a non-consteval constructor from an consteval constructor would code generates the consteval constructor.
Example
```
template <typename T>
struct S {
T i;
consteval S() = default;
};
struct Foo {
Foo() {}
};
void func() {
S<Foo> three; // incorrectly accepted by clang.
}
```
This happened because clang erroneously disregards `consteval` specifier for a `consteval explicitly defaulted special member functions in a class template` if it has dependent data members without a `consteval default constructor`.
According to
```
C++14 [dcl.constexpr]p6 (CWG DR647/CWG DR1358):
If the instantiated template specialization of a constexpr function
template or member function of a class template would fail to satisfy
the requirements for a constexpr function or constexpr constructor, that
specialization is still a constexpr function or constexpr constructor,
even though a call to such a function cannot appear in a constant
expression.
```
Therefore the `consteval defaulted constructor of a class template` should be considered `consteval` even if the data members' default constructors are not consteval.
Keeping this constructor `consteval` allows complaining while processing the call to data member constructors.
(Same applies for other special member functions).
This works fine even when we have more than one default constructors since we process the constructors after the templates are instantiated.
This does not address initialization issues raised in
[2602](https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#2602) and compiler divergence seen in https://godbolt.org/z/va9EMvvMe
Fixes: https://github.com/llvm/llvm-project/issues/51593
Differential Revision: https://reviews.llvm.org/D131479
Simon Pilgrim [Fri, 12 Aug 2022 09:45:21 +0000 (10:45 +0100)]
[DAG] Add TODO to remove creation of INSERT_SUBVECTOR nodes from SimplifyMultipleUseDemandedBits
SimplifyMultipleUseDemandedBits shouldn't be creating general nodes like this - although we allow bitcasts, even general constant folding is avoided.
Removing it causes a number of regressions that need addressing first, but I've added a TODO for now.
Filipp Zhinkin [Thu, 4 Aug 2022 18:34:15 +0000 (21:34 +0300)]
[DAGCombine] Hoist shifts out of a logic operations tree.
Hoist and combine shift operations from logic operations tree:
logic (logic (SH x0, s), y), (logic (SH x1, s), z) --> logic (SH (logic x0, x1), s), (logic y, z)
The transformation improves code generated for some cases related to the issue https://github.com/llvm/llvm-project/issues/49541.
Correctness:
https://alive2.llvm.org/ce/z/pVqVgY
https://alive2.llvm.org/ce/z/YVvT-q
https://alive2.llvm.org/ce/z/W5zTBq
https://alive2.llvm.org/ce/z/YfJsvJ
https://alive2.llvm.org/ce/z/3YSyDM
https://alive2.llvm.org/ce/z/Bs2kzk
https://alive2.llvm.org/ce/z/EoQpzU
https://alive2.llvm.org/ce/z/Jnc_5H
https://alive2.llvm.org/ce/z/_LP6k_
https://alive2.llvm.org/ce/z/KvZNC9
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D131189
Nicolas Vasilache [Thu, 11 Aug 2022 22:35:13 +0000 (15:35 -0700)]
[mlir][Linalg] Let FuseIntoContainingOp return success when nothing is fused.
This composes better when the op is applied in situations where it does not match.
Differential Revision: https://reviews.llvm.org/D131734
Michał Górny [Fri, 12 Aug 2022 09:17:15 +0000 (11:17 +0200)]
[lldb] [gdb-remote] Remove unimplemented ProcessIDIsValid() (NFC)
This method is not implemented and not referenced anywhere in the code.
Sponsored by: The FreeBSD Foundation
Matthias Springer [Fri, 12 Aug 2022 08:43:22 +0000 (10:43 +0200)]
[mlir][bufferize] Fix missing copy when bufferizing loops
Using a loop init_arg inside of the loop is not supported. This change adds a pre-processing pass that resolves such IR with copies.
Differential Revision: https://reviews.llvm.org/D131689
Marius Brehler [Fri, 12 Aug 2022 08:21:21 +0000 (08:21 +0000)]
[mlir][emitc][nfc] Clean up tests
With https://reviews.llvm.org/D131666 the types were removed from the
EmitC opaque attributes. This cleans up the tests accordingly.
Alex Zinenko [Fri, 12 Aug 2022 08:17:48 +0000 (10:17 +0200)]
Revert "[mlir] Switch segment size attributes to DenseI32ArrayAttr"
This reverts commit
30171e76f0e5ea8037bc4d1450dd3e12af4d9938.
Breaks Python tests in MLIR, missing C API and Python changes.
Martin Storsjö [Fri, 12 Aug 2022 08:21:51 +0000 (11:21 +0300)]
[doc] Remove release notes from the main branch for changes that were backported to 15.x
Balázs Kéri [Wed, 10 Aug 2022 09:07:38 +0000 (11:07 +0200)]
[clang-tidy] Support C++14 in bugprone-signal-handler.
Check `bugprone-signal-handler` is improved to check for
C++-specific constructs in signal handlers. This check is
valid until C++17.
Reviewed By: whisperity
Differential Revision: https://reviews.llvm.org/D118996
Daniil Fukalov [Mon, 1 Aug 2022 18:02:11 +0000 (21:02 +0300)]
[NFC] Split test to reduce time to run.
The `RUN:` line with `--debug` used just two function. Moved this test out to
different file.
Reviewed By: vangthao
Differential Revision: https://reviews.llvm.org/D130920
Max Kazantsev [Fri, 12 Aug 2022 06:27:01 +0000 (13:27 +0700)]
[SCEV] Prove condition invariance via context
Contextual knowledge may be used to prove invariance of some conditions.
For example, in this case:
```
; %len >= 0
guard(%iv = {start,+,1}<nuw> <s %len)
guard(%iv = {start,+,1}<nuw> <u %len)
```
the 2nd check always fails if `start` is negative and always passes otherwise.
It looks like there are more opportunities of this kind that are still to be
implemented in the future.
Differential Revision: https://reviews.llvm.org/D129753
Reviewed By: apilipenko
Marius Brehler [Thu, 11 Aug 2022 10:38:31 +0000 (10:38 +0000)]
[mlir][EmitC] Remove the type from the OpaqueAttr
This removes the type from EmitC's opaque attribute. The value provided
as a StringRefParameter can always be emitted as is. In consquence the
constant and variable ops explicitly need to opaque attributes which are
no longer typed attributes.
Co-authored-by: Simon Camphausen <simon.camphausen@iml.fraunhofer.de>
Reviewed By: Mogball, jpienaar
Differential Revision: https://reviews.llvm.org/D131666
Ting Wang [Fri, 12 Aug 2022 06:56:54 +0000 (02:56 -0400)]
[PowerPC] Fix test case changed by "Add XXEVAL TD pattern" [NFC]
wanglian [Thu, 11 Aug 2022 03:25:35 +0000 (11:25 +0800)]
[LegalizeTypes][NFC] Use getConstantOperandVal instead of cast constant getvalue
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D131642
wanglian [Thu, 11 Aug 2022 02:41:58 +0000 (10:41 +0800)]
[LegalizeTypes][NFC] Use dyn_cast instead of isa and cast
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D131544
gonglingqin [Fri, 12 Aug 2022 05:06:11 +0000 (13:06 +0800)]
[LoongArch] Add codegen support for ISD::CTPOP, ISD::CTTZ and ISD::CTLZ
Differential Revision: https://reviews.llvm.org/D131550
Fangrui Song [Fri, 12 Aug 2022 05:40:30 +0000 (22:40 -0700)]
[MCDwarf][test] Improve debug-prefix-map.s
Med Ismail Bennani [Fri, 12 Aug 2022 00:54:41 +0000 (17:54 -0700)]
[lldb/Symbol] Fix null-deref in TypeList::Dump
This patch should just a crash caused by a null pointer dereferencing
when dumping a type. It makes sure that the pointer is valid.
rdar://
97455134
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Med Ismail Bennani [Fri, 12 Aug 2022 05:26:36 +0000 (22:26 -0700)]
[lldb/crashlog] Improve exception reporting for interactive mode
This patch improve exception reporting when loading a crash report in a
scripted process. Now, we parse the `exception` dictionary from the
crash report use it the create a higher fidelity `MachException` stop info.
This patch also updates the test to reflect that change.
rdar://
97096486
Differential Revision: https://reviews.llvm.org/D131086
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Med Ismail Bennani [Fri, 12 Aug 2022 00:11:19 +0000 (17:11 -0700)]
[lldb/test] Fix interactive crashlog test failure (NFC)
This patch removes the system library names and mangled symbol from
the expected output for the interactive crashlog tests.
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Med Ismail Bennani [Fri, 12 Aug 2022 01:07:20 +0000 (18:07 -0700)]
[lldb/crashlog] Adapt raw text crashlog exception to json format
This patch parses CrashLog exception data from the raw
text format and adapts it to the new JSON format.
This is necessary for feature parity between the 2 formats.
Differential Revision: https://reviews.llvm.org/D131719
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Siva Chandra Reddy [Tue, 9 Aug 2022 20:40:53 +0000 (20:40 +0000)]
[libc] Add implemementations of thread specific data related API.
Specifically, POSIX functions pthread_key_create, pthread_key_delete,
pthread_setspecific and pthread_getspecific have been added. The C
standard equivalents tss_create, tss_delete, tss_set and tss_get have
also been added.
Reviewed By: lntue, michaelrj
Differential Revision: https://reviews.llvm.org/D131647
Ting Wang [Fri, 12 Aug 2022 05:27:24 +0000 (01:27 -0400)]
[PowerPC] Add XXEVAL TD pattern
Add xxeval TD pattern for P10 on: eqv, nor, or, xor.
Reviewed By: shchenz
Differential Revision: https://reviews.llvm.org/D131654
Fangrui Song [Fri, 12 Aug 2022 05:05:49 +0000 (05:05 +0000)]
[MCDwarf] Use emplace to avoid move assignment. NFC
Chuanqi Xu [Fri, 12 Aug 2022 03:44:26 +0000 (11:44 +0800)]
[Coroutines] Maintain the position of final suspend
Closing https://github.com/llvm/llvm-project/issues/56329
The problem happens when we try to simplify the suspend points. We might
break the assumption that the final suspend lives in the last slot of
Shape.CoroSuspends. This patch tries to main the assumption and fixes
the problem.
Chen Zheng [Thu, 21 Jul 2022 10:22:50 +0000 (06:22 -0400)]
[PowerPC] omit location attribute for TLS variable on AIX
TLS debug on AIX is not ready for now.
The location generated in no-integrated-as mode is wrong and
in integrated-as mode causes AIX linker error.
Reviewed By: Esme
Differential Revision: https://reviews.llvm.org/D130245
Slava Gurevich [Wed, 10 Aug 2022 20:04:26 +0000 (13:04 -0700)]
[LLDB][NFC] Reliability fixes for IOHandlerCursesGUI
- checking retval of function calls
- dead code removal
- null dereference fix
Differential Revision: https://reviews.llvm.org/D131615
Weining Lu [Fri, 12 Aug 2022 03:53:04 +0000 (11:53 +0800)]
[LoongArch] Return null SDValue by default in LowerOperation. NFC
Differential Revision: https://reviews.llvm.org/D131546
Slava Gurevich [Thu, 11 Aug 2022 07:11:35 +0000 (00:11 -0700)]
[LLDB][NFC] Reliability fixes for ObjectFileMachO.cpp (part 2)
Add the fixes suggested post-push in D131554
Differential Revision: https://reviews.llvm.org/D131743
Tom Stellard [Fri, 12 Aug 2022 03:53:34 +0000 (20:53 -0700)]
Disable update_cc_test_checks.py tests in stand-alone builds
The script is located in the llvm/ sub-directory, so it is not available
for when doing a stand-alone build.
See https://discourse.llvm.org/t/rfc-stand-alone-build-support/61291
Differential Revision: https://reviews.llvm.org/D123967
Chuanqi Xu [Thu, 11 Aug 2022 06:08:14 +0000 (14:08 +0800)]
[AST] [Modules] Introduce Decl::getNonTransparentDeclContext to handle exported friends
Closing https://github.com/llvm/llvm-project/issues/56826.
The root cause for pr56826 is: when we collect the template args for the
friend, we need to judge if the friend lives in file context. However,
if the friend lives in ExportDecl lexically, the judgement here is
invalid.
The solution is easy. We should judge the non transparent context and
the ExportDecl is transparent context. So the solution should be good.
A main concern may be the patch doesn't handle all the places of the
same defect. I think it might not be bad since the patch itself should
be innocent.
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D131651
Kevin Athey [Fri, 12 Aug 2022 03:19:58 +0000 (20:19 -0700)]
[MSAN] remove unused debugging statements (NFC)
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D131748
Amy Kwan [Thu, 11 Aug 2022 20:53:43 +0000 (15:53 -0500)]
[libcxx] [test] Fix max_size.pass.cpp for PowerPC targets
This patch fixes the max_size.pass.cpp test for PowerPC targets, depending on
endianness.
We will exhibit the full_size() behaviour for little endian
(where __endian_factor = 2 ), and the half_size() behaviour for
big endian (where __endian_factor = 1).
Differential Revision: https://reviews.llvm.org/D131682
wanglian [Fri, 12 Aug 2022 02:08:08 +0000 (10:08 +0800)]
[LegalizeTypes][NFC] Use getConstantOperandAPInt instead of cast constant getAPInt
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D131653
Dave Lee [Sun, 7 Aug 2022 18:37:56 +0000 (12:37 -0600)]
[lldb] Remove unused "import unittest2" statements
Dave Lee [Fri, 5 Aug 2022 19:35:20 +0000 (13:35 -0600)]
[lldb] Remove uses of six module (NFC)
With lldb (& llvm) requiring Python 3.6+, use of the `six` module can be removed.
Differential Revision: https://reviews.llvm.org/D131304
Slava Gurevich [Wed, 10 Aug 2022 05:55:27 +0000 (22:55 -0700)]
[LLDB][NFC] Fix the style issue in TCPSocket
Style fixes for the entire file
Differential Revision: https://reviews.llvm.org/D131543
Jeff Niu [Thu, 11 Aug 2022 07:01:35 +0000 (03:01 -0400)]
[mlir] Switch segment size attributes to DenseI32ArrayAttr
Switch variadic operand and result segment size attributes to use the
dense i32 array. Dense integer arrays were introduced primarily to
represent index lists. They are a better fit for segment sizes than
dense elements attrs.
Depends on D131738
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D131702
Jeff Niu [Thu, 11 Aug 2022 23:05:48 +0000 (19:05 -0400)]
[mlir] Change the syntax of dense arrays
Follow-up to D123774, where the syntax of dense arrays was discussed. It
was included that the syntax should be changed to `array<i32: 1, 2>`.
This patch changes the syntax but importantly preserves the `[1, 2]`
syntax when embedding these attributes in assembly formats through ODS.
Reviewed By: mehdi_amini, jpienaar
Differential Revision: https://reviews.llvm.org/D131738
Michael Jones [Thu, 11 Aug 2022 21:16:00 +0000 (14:16 -0700)]
[libc] move int conversion out of base template
The convert_alpha_numeric function is intentionally non-templated so
that its code can be reused for different bases in code-size sensitive
cases. Previously it was inside the IntegerToString class which created
a different version for each base.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D131725
Jonas Devlieghere [Thu, 11 Aug 2022 23:14:05 +0000 (16:14 -0700)]
[lldb] Fix output for unconditionally decorated tests
A missing call to `format` resulted in curly braces getting printed in
the reason a test was modified by a decorator. For example it would
print "{} unconditionally" instead of "skipping unconditionally" for
tests that were marked as such.
Ivan Murashko [Thu, 11 Aug 2022 23:04:23 +0000 (00:04 +0100)]
[clang] SIGSEGV fix at clang::ASTContext::getRawCommentForDeclNoCacheImpl
The `File` might point to an invalid `FileID` when the AST is broken. That leads to clang/clangd crashes while processing comments. The relevant part of the crash is below
```
#4 0x00007f1d7fbf95bc std::_Rb_tree<unsigned int, std::pair<unsigned int const, clang::RawComment*>, std::_Select1st<std::pair<unsigned int const, clang::RawComment*>>, std::less<unsigned int>, std::allocator<std::pair<unsigned int const
, clang::RawComment*>>>::_M_lower_bound(std::_Rb_tree_node<std::pair<unsigned int const, clang::RawComment*>> const*, std::_Rb_tree_node_base const*, unsigned int const&) const /usr/include/c++/8/bits/stl_tree.h:1911:2
#5 0x00007f1d7fbf95bc std::_Rb_tree<unsigned int, std::pair<unsigned int const, clang::RawComment*>, std::_Select1st<std::pair<unsigned int const, clang::RawComment*>>, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, clang::RawComment*>>>::lower_bound(unsigned int const&) const /usr/include/c++/8/bits/stl_tree.h:1214:56
#6 0x00007f1d7fbf95bc std::map<unsigned int, clang::RawComment*, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, clang::RawComment*>>>::lower_bound(unsigned int const&) const /usr/include/c++/8/bits/stl_map.h:1264:36
#7 0x00007f1d7fbf95bc clang::ASTContext::getRawCommentForDeclNoCacheImpl(clang::Decl const*, clang::SourceLocation, std::map<unsigned int, clang::RawComment*, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, clang::RawComment*>>> const&) const /home/ivanmurashko/local/llvm-project/clang/lib/AST/ASTContext.cpp:226:57
```
The corresponding LIT test that reproduces the crash was also added
Same issue is described at https://bugs.llvm.org/show_bug.cgi?id=49707
Reviewed By: gribozavr2
Differential Revision: https://reviews.llvm.org/D131675
Mircea Trofin [Thu, 11 Aug 2022 22:52:49 +0000 (15:52 -0700)]
[mlgo][nfc] regalloc test model generator: prep for TFLite
Casting operator to make TFLite happy.
Reviewed By: yundiqian
Differential Revision: https://reviews.llvm.org/D131584
not-jenni [Thu, 11 Aug 2022 21:54:13 +0000 (14:54 -0700)]
[mlir][tosa] Updates tosa.logical_not to use the SameOperandsAndResultType trait
Reviewed By: jpienaar
Differential Revision: https://reviews.llvm.org/D131496
Nico Weber [Thu, 11 Aug 2022 19:09:24 +0000 (15:09 -0400)]
[gn build] Make it possible to do PGO-optimized builds
This is fairly manual for now.
Differential Revision: https://reviews.llvm.org/D131710
Arthur Eubanks [Thu, 11 Aug 2022 22:38:50 +0000 (15:38 -0700)]
[NFC] Format ilist_node_options.h to cycle bots
Craig Topper [Thu, 11 Aug 2022 22:27:12 +0000 (15:27 -0700)]
[RISCV] Use SLTIU X, -1 for (setne X, -1).
Since -1 is the maximum unsigned value, all values less than it
are not equal to it.
Shafik Yaghmour [Thu, 11 Aug 2022 22:32:35 +0000 (15:32 -0700)]
[Clang] Fix for Tighten restrictions on enum out of range diagnostic
Ok it looks like this is a bit more subtle, I broke the llvm-test-suite file
paq8p.cpp again. We need both conditions to be true Info.EvalMode ==
EvalInfo::EM_ConstantExpression && Info.InConstantContext. We need to be in a
context that requires a constant value but also in a constant expression context.
Differential Revision: https://reviews.llvm.org/D131704
Dave Lee [Thu, 4 Aug 2022 04:22:40 +0000 (22:22 -0600)]
[lldb] Tidy some regex in crashlog.py (NFC)
A spiritual follow up to D131032. I noticed some regex could be simplified.
This does some of the following:
1. Removes unused capture groups
2. Uses non-capturing `(?:...)` groups where grouping is needed but capturing isn't
3. Removes trailing `.*`
4. Uses `\d` over `[0-9]`
5. Uses raw strings
6. Uses `{N,}` to indicate N-or-more
Also improves the call site of a `re.findall`.
Differential Revision: https://reviews.llvm.org/D131305
Martin Storsjö [Mon, 18 Jul 2022 11:13:05 +0000 (14:13 +0300)]
[llvm] Use hidden visibility when building for MinGW with Clang
Since
c5b3de6745c37dd991430b9b88ff97c35b6fc455 (git main,
August 11th), Clang does generate working hidden visibility
on MinGW targets. Using that reduces the number of exports from
a dylib build of LLVM significantly, which is vital for fitting
within the limit of 64k exported symbols from a DLL.
It's essential that if we set CMAKE_CXX_VISIBILITY_PRESET=hidden
(which passes -fvisibility=hidden on the command line), we also
must define LLVM_EXTERNAL_VISIBILITY consistently to override
it. (If there are mismatches, e.g. setting hidden visibility generally
but never overriding it back to default for the symbols that do need
to be exported, we'd get broken builds in such configurations.)
We don't want to be using __attribute__((visibility("hidden"))) on
MinGW with GCC, because GCC produces a warning about it. (GCC hasn't
warned about the command line options that set hidden visibility
though.) Clang has historically not warned about either of them, so
it is harmless to use the hidden visibility when building with older
Clang (so we don't need to detect the exact version of Clang/LLVM where
it has an effect).
This reduces the number of exported symbols for a dylib build of LLVM;
previously libLLVM exported around 64650 symbols (when the maximum is
65536) when the ARM, AArch64 and X86 targets were enabled. If enabling
more targets (or if building with e.g. assertions enabled), it would
exceed the limit. Now with visibility flags in use, the same build
with ARM, AArch64 and X86 ends up at around 35k exported symbols.
Differential Revision: https://reviews.llvm.org/D131661
Martin Storsjö [Thu, 11 Aug 2022 21:34:21 +0000 (00:34 +0300)]
[lldb] Silence a GCC warning about missing returns after a fully covered switch. NFC.
Vitaly Buka [Thu, 11 Aug 2022 21:10:55 +0000 (14:10 -0700)]
[test][msan] Test origin description argument
Reviewed By: kda
Differential Revision: https://reviews.llvm.org/D131721
Vitaly Buka [Thu, 11 Aug 2022 16:35:44 +0000 (09:35 -0700)]
[msan] Avoid unnecessary PC increment/decrement
Reviewed By: kda
Differential Revision: https://reviews.llvm.org/D131692
Craig Topper [Thu, 11 Aug 2022 19:59:04 +0000 (12:59 -0700)]
[RISCV] Add more ineg+setcc isel patterns to avoid creating neg+xori+slti(u).
Including patterns to select addiw if only the lower 32 bits are used.
I'm not excited about adding this many patterns. I'm looking at whether
we can create the xori during lowering and move the ineg patterns to
DAGCombiner.
Shafik Yaghmour [Thu, 11 Aug 2022 20:42:40 +0000 (13:42 -0700)]
[Clang] Tighten restrictions on enum out of range diagnostic
In D131528 using Info.EvalMode == EvalInfo::EM_ConstantExpression is not strict
enough to restrict the diagnostic to only constant expression contexts. It is
sometimes set in cases where we are still determining if we are in a constant
expression context.
Using InConstantContext will tighten the restriction.
Differential Revision: https://reviews.llvm.org/D131704
Jonathan Peyton [Thu, 11 Aug 2022 16:13:01 +0000 (11:13 -0500)]
[OpenMP][OMPT] Fix memory leak when using GCC compatibility code
Serialized parallels allocate lightweight task teams on the heap
but never free them in the corresponding join. This patch adds a wrapper
around the allocation (if ompt enabled) and also adds the corresponding
free in the join call.
Differential Revision: https://reviews.llvm.org/D131690
Vladimir Plyashkun [Thu, 11 Aug 2022 20:07:22 +0000 (21:07 +0100)]
[clang-tidy][docs] Fixed page title for abseil-no-internal-dependencies check documentation
It seems that documentation for abseil-no-internal-dependencies has invalid title.
This can be checked by looking at the actual web-site - https://clang.llvm.org/extra/clang-tidy/checks/abseil/no-internal-dependencies.html
There is redundant "subl.. title:: clang-tidy - abseil-no-internal-dependencies" paragraph in the beginning.
Reviewed By: njames93, sylvestre.ledru
Differential Revision: https://reviews.llvm.org/D131590
Philip Reames [Thu, 11 Aug 2022 18:11:10 +0000 (11:11 -0700)]
[RISCV][SLP] Add some basic test coverage
Jonas Devlieghere [Thu, 11 Aug 2022 19:44:36 +0000 (12:44 -0700)]
[lldb] Simplify TestExec's source code (2/2)
I accidentally forgot to stage part of the changes in the previous
commit.
Jonas Devlieghere [Thu, 11 Aug 2022 19:34:20 +0000 (12:34 -0700)]
[lldb] Simplify TestExec's source code
Simplify the test's source code, remove unnecessary headers, and convert
it from C++ to C.
Louis Dionne [Thu, 11 Aug 2022 14:28:43 +0000 (10:28 -0400)]
[libc++] Add a missing assertion in std::span's constructor
Also, add missing tests for assertions in span constructors. Now I
believe that all of std::span's API should be hardened, and all the
assertions should have a corresponding test.
Differential Revision: https://reviews.llvm.org/D131681
Siva Chandra Reddy [Thu, 11 Aug 2022 19:13:12 +0000 (19:13 +0000)]
[libc][Obvious] Fix thrd_join's first arg.
First argument to thrd_join was incorrectly listed as a pointer
to a thrd_t value. It should instead be a thrd_t value argument.
Arnold Schwaighofer [Wed, 10 Aug 2022 22:22:02 +0000 (15:22 -0700)]
[coro async] Mark async suspend function and its resume function pointer intrinsic as nomerge
Coroutine splitting is not possible if the one-to-one mapping between the two is
lost. Every suspend point must have a matching continuation function
pointer.
rdar://
98404664
Differential Revision: https://reviews.llvm.org/D131684
Valentin Clement [Thu, 11 Aug 2022 18:35:17 +0000 (20:35 +0200)]
[flang][openacc] Propagate correct location information from directive
Location information was not correctly propagated when creating OpenACC
operations. This patch propagate the correct location information from
the parse tree nodes to OpenACC MLIR operations.
Reviewed By: razvanlupusoru
Differential Revision: https://reviews.llvm.org/D131659
Denys Petrov [Thu, 11 Aug 2022 17:58:39 +0000 (20:58 +0300)]
[analyzer] [NFC] Fix comments into more regular form.
Nikolas Klauser [Sun, 31 Jul 2022 15:53:10 +0000 (17:53 +0200)]
[libc++][NFC] Replace macros in vector
Reviewed By: ldionne, Mordante, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D130848
Vir Narula [Thu, 11 Aug 2022 18:09:21 +0000 (19:09 +0100)]
[Matrix] Add tests dot product with varied strides
Add more tests with varied strides. Changes to lowering upcoming in https://reviews.llvm.org/D131125
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D131444
Fangrui Song [Thu, 11 Aug 2022 18:06:24 +0000 (11:06 -0700)]
Compiler.h: remove unused LLVM_NODISCARD
Reviewed By: kazu
Differential Revision: https://reviews.llvm.org/D131695
Walter Erquinigo [Thu, 11 Aug 2022 16:44:52 +0000 (09:44 -0700)]
[NFC][lldb][trace] Fix formatting of tracing files
Pavel Labath taught me that clang-format sorts headers automatically
using llvm's rules, and it's better not to have spaces between
So in this diff I'm removing those spaces and formatting them as well.
I used `clang-format -i` to format these files.
Alex Bradbury [Thu, 11 Aug 2022 17:51:37 +0000 (18:51 +0100)]
[clang][RISCV][test] Add test that shows incorrect ABI lowering
As reported in <https://github.com/llvm/llvm-project/issues/57084>,
under hard float ABIs there are issues with lowering structs that
inherit from other structs.
See <https://reviews.llvm.org/D131677> for a fix.
Aaron Ballman [Thu, 11 Aug 2022 17:42:47 +0000 (13:42 -0400)]
Fix crash-on-valid with consteval temporary construction through list initialization
Clang currently crashes when lowering a consteval list initialization
of a temporary. This is partially working around an issue in the
template instantiation code (TreeTransform::TransformCXXTemporaryObjectExpr())
that does not yet know how to handle list initialization of temporaries
in all cases. However, it's also helping reduce fragility by ensuring
we always have a valid QualType when trying to emit a constant
expression during IR generation.
Fixes #55871
Differential Revision: https://reviews.llvm.org/D131194
Fangrui Song [Thu, 11 Aug 2022 17:39:41 +0000 (17:39 +0000)]
[Support] Remove Log2 workaround for Android API level < 18
The function added by D9467 is unneeded.
https://github.com/android/ndk/wiki/Changelog-r24 shows that the NDK has
moved forward to at least a minimum target API of 19.
Reviewed By: srhines
Differential Revision: https://reviews.llvm.org/D131656
Fangrui Song [Thu, 11 Aug 2022 17:35:02 +0000 (17:35 +0000)]
[Support] Remove some #if __cplusplus > 201402L
Brett Wilson [Thu, 11 Aug 2022 17:11:23 +0000 (17:11 +0000)]
[clang-doc] Read docstrings for record members
Struct/class data members did not have the comments associated with
them. This adds that information to the MemberTypeInfo class and emits
it in the YAML. This does not update the frontends yet.
Reviewed By: paulkirth
Differential Revision: https://reviews.llvm.org/D131298
Craig Topper [Thu, 11 Aug 2022 16:45:32 +0000 (09:45 -0700)]
[RISCV] Move isValidCPUName to RISCVTargetInfo. NFC
Instead of having separate implementations for RV32 and RV64,
use the triple to control the Is64Bit parameter.
Do the same for isValidTuneCPUName, fillValidCPUList, and
fillValidTuneCPUList.
Marc Auberer [Thu, 11 Aug 2022 16:59:08 +0000 (09:59 -0700)]
[Docs] Fix duplicate enum item name
Removes duplicated names as recommended here: https://llvm.org/docs/CodingStandards.html#doxygen-use-in-documentation-comments
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D131193
Vitaly Buka [Thu, 11 Aug 2022 16:45:41 +0000 (09:45 -0700)]
[NFC][sanitizer] Use __builtin_extract_return_addr on all platforms
On most platforms it does nothing, so this eliminates a need for one #if.
Vitaly Buka [Thu, 11 Aug 2022 16:44:32 +0000 (09:44 -0700)]
[NFC][sanitizer] Add () into a few macros
Simon Pilgrim [Thu, 11 Aug 2022 16:35:44 +0000 (17:35 +0100)]
[X86] lowerShuffleWithVPMOV - support direct lowering to VPMOV on VLX targets
lowerShuffleWithVPMOV currently only matches shuffle(truncate(x)) patterns, but on VLX targets the truncate isn't usually necessary to make the VPMOV node worthwhile (as we're only targetting v16i8/v8i16 shuffles we're almost always ending up with a PSHUFB node instead). PACKSS/PACKUS are still preferred vs VPMOV due to their lower uop count.
Fixes the remaining regression from the fixes in rG293899c64b75
Mike Rice [Thu, 4 Aug 2022 22:16:43 +0000 (15:16 -0700)]
[OpenMP] Allow data members in interop init/use/destroy clauses
Previously a diagnostic was given if the expression was not strictly a
DeclRef. Now also allow use of data members inside member functions.
Differential Revision: https://reviews.llvm.org/D131222
Augusto Noronha [Tue, 9 Aug 2022 23:52:15 +0000 (16:52 -0700)]
[lldb] Allow DataFileCache to be constructed with a different policy
Differential Revision: https://reviews.llvm.org/D131531
Simon Pilgrim [Thu, 11 Aug 2022 16:11:30 +0000 (17:11 +0100)]
[X86] vector-rotate-128/265.ll - add VLX + NOVLX check prefixes to reduce CHECK duplication
Kevin P. Neal [Thu, 11 Aug 2022 16:04:03 +0000 (12:04 -0400)]
[FPEnv][InstSimplify] Fix formatting error.
My most recent change for D131607 had a formatting error that I didn't
notice until after I committed it. Let me fix it now so changes to this
file will be back-to-back from me.
Sanjay Patel [Thu, 11 Aug 2022 15:40:54 +0000 (11:40 -0400)]
[InstCombine] fold reassociative fadd with negated operand
We manage to iteratively achieve this result with no extra
uses, and the reassociate pass can also do this, but this
pattern falls through the cracks in the example from
issue #57053.
Sanjay Patel [Thu, 11 Aug 2022 15:01:56 +0000 (11:01 -0400)]
[InstCombine] add tests for reassociative fadd with negated op; NFC
Extra uses inhibit more basic folds, so we miss the larger fold.
Uday Bondhugula [Thu, 28 Jul 2022 11:51:43 +0000 (17:21 +0530)]
[MLIR] Fix hasNoInterveningEffect in the presence of ops from different affine scopes
Fix hasNoInterveningEffect in the presence of ops from different affine
scopes. Also, correctly check for dependence failures as well instead of
just for the existence of a dependence.
Differential Revision: https://reviews.llvm.org/D131641
Kevin P. Neal [Wed, 10 Aug 2022 18:23:51 +0000 (14:23 -0400)]
[FPEnv][InstSimplify] 0.0 - -X ==> X
Another ticket split out of D107285, this extends the optimization
of 0.0 - -X to just X when using constrained intrinsics and the
optimization is allowed.
If the negation of X is done with fsub then the match fails because of
the lack of IR Matcher support for constrained intrinsics.
While I'm here, remove some TODO notices since the work is no longer
planned.
Differential Revision: https://reviews.llvm.org/D131607
Simon Pilgrim [Thu, 11 Aug 2022 15:07:28 +0000 (16:07 +0100)]
[X86] Add RDPRU instruction CPUID bit masks
As mentioned on D128934 - we weren't including the CPUID bit handling for the RDPRU instruction
AMD's APMv3 (24594) lists it as CPUID Fn8000_0008_EBX Bit#4
Joe Nash [Thu, 11 Aug 2022 14:31:13 +0000 (10:31 -0400)]
[AMDGPU] Autogenerate spill-vector-superclass. NFC
This test is already a subset of the autogenerated test lines, so truly
auto-generate it to make it easier to update.
Johannes Doerfert [Thu, 11 Aug 2022 03:26:31 +0000 (22:26 -0500)]
[OpenMP][FIX] Ensure __kmpc_kernel_parallel is reachable
The problem is we create the call to __kmpc_kernel_parallel in the
openmp-opt pass but while we optimize the code, the call is not there
yet. Thus, we assume we never reach it from __kmpc_target_deinit. That
allows us to remove the store in there (`ParallelRegionFn = nullptr`),
which leads to bad results later on.
This is a shortstop solution until we come up with something better.
Fixes https://github.com/llvm/llvm-project/issues/57064
Simon Pilgrim [Thu, 11 Aug 2022 14:48:30 +0000 (15:48 +0100)]
[clang][X86] Add RDPRU predefined macro tests for znver2/znver3 targets
These were missed in D128934
Peter Waller [Tue, 9 Aug 2022 15:13:50 +0000 (15:13 +0000)]
[DAGCombine] Check zext legality in zext-extract-extend combine
Discussed in D131503.
Fix to D130782.
Eric Astor [Thu, 11 Aug 2022 14:18:32 +0000 (14:18 +0000)]
[ms] [llvm-ml] Add support for nested PROC/ENDP pairs
This is believed to match behavior by ML.EXE and ML64.EXE.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D131522
Dmitry Preobrazhensky [Thu, 11 Aug 2022 14:09:35 +0000 (17:09 +0300)]
[AMDGPU][MC][GFX11][NFC] Add tests for VOP1 and VOP2 16 bit opcodes
Differential Revision: https://reviews.llvm.org/D131588