platform/upstream/llvm.git
23 months ago[DAG] Add TODO to remove creation of INSERT_SUBVECTOR nodes from SimplifyMultipleUseD...
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.

23 months ago[DAGCombine] Hoist shifts out of a logic operations tree.
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

23 months ago[mlir][Linalg] Let FuseIntoContainingOp return success when nothing is fused.
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

23 months ago[lldb] [gdb-remote] Remove unimplemented ProcessIDIsValid() (NFC)
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

23 months ago[mlir][bufferize] Fix missing copy when bufferizing loops
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

23 months ago[mlir][emitc][nfc] Clean up tests
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.

23 months agoRevert "[mlir] Switch segment size attributes to DenseI32ArrayAttr"
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.

23 months ago[doc] Remove release notes from the main branch for changes that were backported...
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

23 months ago[clang-tidy] Support C++14 in bugprone-signal-handler.
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

23 months ago[NFC] Split test to reduce time to run.
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

23 months ago[SCEV] Prove condition invariance via context
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

23 months ago[mlir][EmitC] Remove the type from the OpaqueAttr
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

23 months ago[PowerPC] Fix test case changed by "Add XXEVAL TD pattern" [NFC]
Ting Wang [Fri, 12 Aug 2022 06:56:54 +0000 (02:56 -0400)]
[PowerPC] Fix test case changed by "Add XXEVAL TD pattern" [NFC]

23 months ago[LegalizeTypes][NFC] Use getConstantOperandVal instead of cast constant getvalue
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

23 months ago[LegalizeTypes][NFC] Use dyn_cast instead of isa and cast
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

23 months ago[LoongArch] Add codegen support for ISD::CTPOP, ISD::CTTZ and ISD::CTLZ
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

23 months ago[MCDwarf][test] Improve debug-prefix-map.s
Fangrui Song [Fri, 12 Aug 2022 05:40:30 +0000 (22:40 -0700)]
[MCDwarf][test] Improve debug-prefix-map.s

23 months ago[lldb/Symbol] Fix null-deref in TypeList::Dump
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>
23 months ago[lldb/crashlog] Improve exception reporting for interactive mode
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>
23 months ago[lldb/test] Fix interactive crashlog test failure (NFC)
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>
23 months ago[lldb/crashlog] Adapt raw text crashlog exception to json format
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>
23 months ago[libc] Add implemementations of thread specific data related API.
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

23 months ago[PowerPC] Add XXEVAL TD pattern
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

23 months ago[MCDwarf] Use emplace to avoid move assignment. NFC
Fangrui Song [Fri, 12 Aug 2022 05:05:49 +0000 (05:05 +0000)]
[MCDwarf] Use emplace to avoid move assignment. NFC

23 months ago[Coroutines] Maintain the position of final suspend
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.

23 months ago[PowerPC] omit location attribute for TLS variable on AIX
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

23 months ago[LLDB][NFC] Reliability fixes for IOHandlerCursesGUI
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

23 months ago[LoongArch] Return null SDValue by default in LowerOperation. NFC
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

23 months ago[LLDB][NFC] Reliability fixes for ObjectFileMachO.cpp (part 2)
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

23 months agoDisable update_cc_test_checks.py tests in stand-alone builds
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

23 months ago[AST] [Modules] Introduce Decl::getNonTransparentDeclContext to handle exported friends
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

23 months ago[MSAN] remove unused debugging statements (NFC)
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

23 months ago[libcxx] [test] Fix max_size.pass.cpp for PowerPC targets
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

23 months ago[LegalizeTypes][NFC] Use getConstantOperandAPInt instead of cast constant getAPInt
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

23 months ago[lldb] Remove unused "import unittest2" statements
Dave Lee [Sun, 7 Aug 2022 18:37:56 +0000 (12:37 -0600)]
[lldb] Remove unused "import unittest2" statements

23 months ago[lldb] Remove uses of six module (NFC)
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

23 months ago[LLDB][NFC] Fix the style issue in TCPSocket
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

23 months ago[mlir] Switch segment size attributes to DenseI32ArrayAttr
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

23 months ago[mlir] Change the syntax of dense arrays
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

23 months ago[libc] move int conversion out of base template
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

23 months ago[lldb] Fix output for unconditionally decorated tests
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.

23 months ago[clang] SIGSEGV fix at clang::ASTContext::getRawCommentForDeclNoCacheImpl
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

23 months ago[mlgo][nfc] regalloc test model generator: prep for TFLite
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

23 months ago[mlir][tosa] Updates tosa.logical_not to use the SameOperandsAndResultType trait
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

23 months ago[gn build] Make it possible to do PGO-optimized builds
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

23 months ago[NFC] Format ilist_node_options.h to cycle bots
Arthur Eubanks [Thu, 11 Aug 2022 22:38:50 +0000 (15:38 -0700)]
[NFC] Format ilist_node_options.h to cycle bots

23 months ago[RISCV] Use SLTIU X, -1 for (setne X, -1).
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.

23 months ago[Clang] Fix for Tighten restrictions on enum out of range diagnostic
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

23 months ago[lldb] Tidy some regex in crashlog.py (NFC)
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

23 months ago[llvm] Use hidden visibility when building for MinGW with Clang
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

23 months ago[lldb] Silence a GCC warning about missing returns after a fully covered switch....
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.

23 months ago[test][msan] Test origin description argument
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

23 months ago[msan] Avoid unnecessary PC increment/decrement
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

23 months ago[RISCV] Add more ineg+setcc isel patterns to avoid creating neg+xori+slti(u).
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.

23 months ago[Clang] Tighten restrictions on enum out of range diagnostic
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

23 months ago[OpenMP][OMPT] Fix memory leak when using GCC compatibility code
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

23 months ago[clang-tidy][docs] Fixed page title for abseil-no-internal-dependencies check documen...
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

23 months ago[RISCV][SLP] Add some basic test coverage
Philip Reames [Thu, 11 Aug 2022 18:11:10 +0000 (11:11 -0700)]
[RISCV][SLP] Add some basic test coverage

23 months ago[lldb] Simplify TestExec's source code (2/2)
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.

23 months ago[lldb] Simplify TestExec's source code
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.

23 months ago[libc++] Add a missing assertion in std::span's constructor
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

23 months ago[libc][Obvious] Fix thrd_join's first arg.
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.

23 months ago[coro async] Mark async suspend function and its resume function pointer intrinsic...
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

23 months ago[flang][openacc] Propagate correct location information from directive
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

23 months ago[analyzer] [NFC] Fix comments into more regular form.
Denys Petrov [Thu, 11 Aug 2022 17:58:39 +0000 (20:58 +0300)]
[analyzer] [NFC] Fix comments into more regular form.

23 months ago[libc++][NFC] Replace macros in vector
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

23 months ago[Matrix] Add tests dot product with varied strides
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

23 months agoCompiler.h: remove unused LLVM_NODISCARD
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

23 months ago[NFC][lldb][trace] Fix formatting of tracing files
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.

23 months ago[clang][RISCV][test] Add test that shows incorrect ABI lowering
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.

23 months agoFix crash-on-valid with consteval temporary construction through list initialization
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

23 months ago[Support] Remove Log2 workaround for Android API level < 18
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

23 months ago[Support] Remove some #if __cplusplus > 201402L
Fangrui Song [Thu, 11 Aug 2022 17:35:02 +0000 (17:35 +0000)]
[Support] Remove some #if __cplusplus > 201402L

23 months ago[clang-doc] Read docstrings for record members
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

23 months ago[RISCV] Move isValidCPUName to RISCVTargetInfo. NFC
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.

23 months ago[Docs] Fix duplicate enum item name
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

23 months ago[NFC][sanitizer] Use __builtin_extract_return_addr on all platforms
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.

23 months ago[NFC][sanitizer] Add () into a few macros
Vitaly Buka [Thu, 11 Aug 2022 16:44:32 +0000 (09:44 -0700)]
[NFC][sanitizer] Add () into a few macros

23 months ago[X86] lowerShuffleWithVPMOV - support direct lowering to VPMOV on VLX targets
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

23 months ago[OpenMP] Allow data members in interop init/use/destroy clauses
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

23 months ago[lldb] Allow DataFileCache to be constructed with a different policy
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

23 months ago[X86] vector-rotate-128/265.ll - add VLX + NOVLX check prefixes to reduce CHECK dupli...
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

23 months ago[FPEnv][InstSimplify] Fix formatting error.
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.

23 months ago[InstCombine] fold reassociative fadd with negated operand
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.

23 months ago[InstCombine] add tests for reassociative fadd with negated op; NFC
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.

23 months ago[MLIR] Fix hasNoInterveningEffect in the presence of ops from different affine scopes
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

23 months ago[FPEnv][InstSimplify] 0.0 - -X ==> X
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

23 months ago[X86] Add RDPRU instruction CPUID bit masks
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

23 months ago[AMDGPU] Autogenerate spill-vector-superclass. NFC
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.

23 months ago[OpenMP][FIX] Ensure __kmpc_kernel_parallel is reachable
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

23 months ago[clang][X86] Add RDPRU predefined macro tests for znver2/znver3 targets
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

23 months ago[DAGCombine] Check zext legality in zext-extract-extend combine
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.

23 months ago[ms] [llvm-ml] Add support for nested PROC/ENDP pairs
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

23 months ago[AMDGPU][MC][GFX11][NFC] Add tests for VOP1 and VOP2 16 bit opcodes
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

23 months ago[analyzer] exploded-graph-rewriter: Fix python3 string encoding issues
Balazs Benics [Thu, 11 Aug 2022 14:07:52 +0000 (16:07 +0200)]
[analyzer] exploded-graph-rewriter: Fix python3 string encoding issues

This encapsulates 3 changes:
 - `DotDumpVisitor` now aggregates strings instead of *bytes* for both
   `python2` and `python3`. This difference caused crashes when it tried
    to write out the content as *strings*, similarly described at D71746.
 - `graphviz.pipe()` expects the input in *bytes* instead of unicode
   strings. And it results in *bytes*. Due to string concatenations and
   similar operations, I'm using unicode string as the default, and
   converting to *bytes* on demand.
 - `write_temp_file()` now appends the `egraph-` prefix and more
   importantly, it will create the temp file in the **current working
   directory** instead of in the *temp*. This change makes `Firefox` be
   able to open the file even if the `security.sandbox.content.level` is
   set to the (default) most restricting `4`.
   See https://support.mozilla.org/si/questions/1259285

An artifact of the bad byte handling was previously in the `HTML`
produced by the script that it displayed the `b'` string at the top left
corner. Now it won't anymore :)

I've tested that the following command works on `Ubuntu 22.04`:
```
exploded-graph-rewriter my-egraph.dot
```
Both `python2` and `python3` works as expected.

PS: I'm not adding tests, as the current test infra does not support
testing HTML outputs for this script.
Check the `clang/test/Analysis/exploded-graph-rewriter/lit.local.cfg`.
We always pass the `--dump-dot-only` flag to the script.
Along with that, the default invocation will not only create this HTML
report but also try to open it. In addition to this, I'm not sure if the
buildbots have `graphviz` installed and also if this package is installed
on `pip`.
Unless we change some of these, we cannot test this change.
Given that D71746 had no tests, I'm not too worried about this either.

Reviewed By: NoQ

Differential Revision: https://reviews.llvm.org/D131553

23 months ago[lldb][unittests] Add more test cases to CPlusPlusNameParser unit-tests
Michael Buch [Thu, 4 Aug 2022 15:22:47 +0000 (16:22 +0100)]
[lldb][unittests] Add more test cases to CPlusPlusNameParser unit-tests

Add test cases for the possible function qualifiers that the
`CPlusPlusNameParser` supports.

Differential Revision: https://reviews.llvm.org/D131332

23 months ago[Orc] Reorder operations in ExecutorSharedMemoryMapperService shutdown
Anubhab Ghosh [Tue, 9 Aug 2022 17:23:43 +0000 (22:53 +0530)]
[Orc] Reorder operations in ExecutorSharedMemoryMapperService shutdown

Differential Revision: https://reviews.llvm.org/D131510

23 months agoRemove redundant condition check, NFC
Jun Zhang [Thu, 11 Aug 2022 07:30:05 +0000 (15:30 +0800)]
Remove redundant condition check, NFC

Signed-off-by: Jun Zhang <jun@junz.org>
23 months ago[LLDB][RISCV] Fix risc-v target build
Emmmer [Thu, 11 Aug 2022 09:12:28 +0000 (17:12 +0800)]
[LLDB][RISCV] Fix risc-v target build

Fixed an inconsistency between D130985 and D130342

This should be a follow-up of D130985

Reviewed By: DavidSpickett

Differential Revision: https://reviews.llvm.org/D131667

23 months ago[libc] Change sinf/cosf range reduction to mod pi/32 to be shared with tanf.
Tue Ly [Thu, 11 Aug 2022 06:14:13 +0000 (02:14 -0400)]
[libc] Change sinf/cosf range reduction to mod pi/32 to be shared with tanf.

Change sinf/cosf range reduction to mod pi/32 to be shared with tanf,
since polynomial approximations for tanf on subintervals of length pi/16 do not
provide enough accuracy.

Reviewed By: orex

Differential Revision: https://reviews.llvm.org/D131652