platform/upstream/llvm.git
15 months ago[NFC][lsan] Add GetCurrentThreadId wrapper for GetCurrentThread
Vitaly Buka [Fri, 14 Apr 2023 23:22:54 +0000 (16:22 -0700)]
[NFC][lsan] Add GetCurrentThreadId wrapper for GetCurrentThread

I am going to change return type of GetCurrentThreadId() in the next
patch.

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

15 months ago[test][sanitizer] Add another stress test for pthread_create
Vitaly Buka [Sat, 15 Apr 2023 05:38:58 +0000 (22:38 -0700)]
[test][sanitizer] Add another stress test for pthread_create

15 months ago[NFC][sanitizer] Return nullptr instead of 0
Vitaly Buka [Sat, 15 Apr 2023 00:18:04 +0000 (17:18 -0700)]
[NFC][sanitizer] Return nullptr instead of 0

15 months ago[GISel] Legalize G_FSUB to G_FADD + G_FNEG even if G_FNEG is illegal
Sergei Barannikov [Thu, 13 Apr 2023 01:42:07 +0000 (04:42 +0300)]
[GISel] Legalize G_FSUB to G_FADD + G_FNEG even if G_FNEG is illegal

`G_FNEG` used to be legalized to `G_FSUB -0, x` causing infinite loop.
This is no longer the case after D84287.

Reviewed By: arsenm

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

15 months agoGuard against dereferencing a nullptr
Akshay Khadse [Sat, 15 Apr 2023 03:28:50 +0000 (11:28 +0800)]
Guard against dereferencing a nullptr

In `lib/CodeGen/PrologEpilogInserter.cpp` file, `RS` is assigned via `RS = TRI->requiresRegisterScavenging(MF) ? new RegScavenger() : nullptr;`. This means that `RS` can be `nullptr`. While executing the `TFI->processFunctionBeforeFrameFinalized(MF, RS);`, the `RS` can be dereferenced in the call `RS->enterBasicBlock(MBB);` in file `lib/Target/AMDGPU/SIFrameLowering.cpp`

Reviewed By: skan, arsenm

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

15 months ago[TableGen] Make InlinePatternFragments a member of TreePatternNode again. NFC
Craig Topper [Sat, 15 Apr 2023 02:40:56 +0000 (19:40 -0700)]
[TableGen] Make InlinePatternFragments a member of TreePatternNode again. NFC

Now that we use IntrusiveRefCntPtr instead of std::shared_ptr
we don't need to pass a TreePatternNodePtr to this method.

15 months ago[RISCV] Move RISCVInstrInfoZihintntl.td include out of the vendor extension section...
Craig Topper [Sat, 15 Apr 2023 02:30:45 +0000 (19:30 -0700)]
[RISCV] Move RISCVInstrInfoZihintntl.td include out of the vendor extension section. NFC

15 months ago[hwasan] [test] fix test broken by argument promotion pass
Florian Mayer [Sat, 15 Apr 2023 01:50:22 +0000 (18:50 -0700)]
[hwasan] [test] fix test broken by argument promotion pass

15 months agoRevert D148384 "[Demangle] replace use of llvm::StringView w/ std::string_view"
Fangrui Song [Sat, 15 Apr 2023 01:42:11 +0000 (18:42 -0700)]
Revert D148384 "[Demangle] replace use of llvm::StringView w/ std::string_view"

This reverts commit 3e559509b426b6aae735a7f57dbdaed1041d2622 and e0c4ffa796b553fa78c638a9584c05ac21fe07d5.

This still breaks Windows builds.

In addition, `#include <llvm/ADT/StringViewExtras.h>` in
llvm/include/llvm/Demangle/ItaniumDemangle.h is a library layering violation
(LLVMDemangle is the lowest LLVM library and cannot depend on LLVMSupport).

15 months ago[NewPM] Use PassID instead of pass name
Prem Chintalapudi [Sat, 15 Apr 2023 00:35:07 +0000 (17:35 -0700)]
[NewPM] Use PassID instead of pass name

PrintIRInstrumentation::shouldPrintAfterPass accepts a pass ID instead of a pass name

Reviewed By: aeubanks

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

15 months ago[MC] Add section flag 'l' for SHF_X86_64_LARGE
Arthur Eubanks [Fri, 14 Apr 2023 18:06:17 +0000 (11:06 -0700)]
[MC] Add section flag 'l' for SHF_X86_64_LARGE

Reviewed By: MaskRay

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

15 months ago[asan][test] Fix use-after-scope-capture test after D148269
Paul Kirth [Fri, 14 Apr 2023 23:51:34 +0000 (23:51 +0000)]
[asan][test] Fix use-after-scope-capture test after D148269

After enabling ArgPromotion at lower opt levels, the body of this test
was optimized away, and the CHECK lines no longer functioned.

Setting -O0 is a hammer, but gets the test passing again, until code owners
can find a better solution.

Reviewed By: fmayer

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

15 months ago[NFC][lsan] Move SetCurrentThread call
Vitaly Buka [Fri, 14 Apr 2023 22:43:56 +0000 (15:43 -0700)]
[NFC][lsan] Move SetCurrentThread call

Future patch will set the current context as well.
Existing callsite requires additional lock to find context.

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

15 months ago[Demangle] fix windows build
Nick Desaulniers [Fri, 14 Apr 2023 23:25:11 +0000 (16:25 -0700)]
[Demangle] fix windows build

Fixes diagnostics reported against
https://reviews.llvm.org/D148384

https://lab.llvm.org/buildbot/#/builders/127/builds/46749/steps/4/logs/stdio

Reviewed By: MaskRay

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

15 months ago[ValueTracking] Add `shl nsw %val, %cnt != 0` if `%val != 0`.
Noah Goldstein [Fri, 14 Apr 2023 19:34:23 +0000 (14:34 -0500)]
[ValueTracking] Add `shl nsw %val, %cnt != 0` if `%val != 0`.

Link: https://alive2.llvm.org/ce/z/mxZLJn
Reviewed By: nikic

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

15 months ago[ValueTracking] Use maximum shift count in `shl` when determining if `shl` can be...
Noah Goldstein [Sun, 9 Apr 2023 21:27:57 +0000 (16:27 -0500)]
[ValueTracking] Use maximum shift count in `shl` when determining if `shl` can be zero.

Previously only return `shl` non-zero if the shift value was `1`. We
can expand this if we have some bounds on the shift count.

For example:
    ```
    %cnt = and %c, 16 ; Max cnt == 16
    %val = or %v, 4 ; val[2] is known one
    %shl = shl %val, %cnt ; (val.known.one << cnt.maxval) != 0
    ```

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

15 months ago[ValueTracking] Add more tests for `shl` isKnownNonZero; NFC
Noah Goldstein [Sun, 9 Apr 2023 22:11:27 +0000 (17:11 -0500)]
[ValueTracking] Add more tests for `shl` isKnownNonZero; NFC

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

15 months agoAccount for PATCHABLE instrs in Branch Relaxation
Daniel Hoekwater [Tue, 11 Apr 2023 00:09:59 +0000 (17:09 -0700)]
Account for PATCHABLE instrs in Branch Relaxation

PATCHABLE_* instructions expand to up to 36-byte
sleds. Updating the size of PATCHABLE instructions
causes them to be outlined, so we need to add a
check to prevent the outliner from considering
basic blocks that contain PATCHABLE instructions.

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

15 months ago[flang] Remove `ignoring all compiler directives` warning
V Donaldson [Wed, 12 Apr 2023 22:37:19 +0000 (15:37 -0700)]
[flang] Remove `ignoring all compiler directives` warning

The explicit `ignoring all compiler directives` reminder warning is no
longer accurate.  Any similar, more accurate message is best generated
by the front end (change pending).

15 months ago[MCParser] Reject processor-specific section flags not known by the current target
Fangrui Song [Fri, 14 Apr 2023 23:06:12 +0000 (16:06 -0700)]
[MCParser] Reject processor-specific section flags not known by the current target

Catch accidentally used flags and match MCSectionELF.cpp
`MCSectionELF::printSwitchToSection`.

Reviewed By: aeubanks

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

15 months ago[Demangle] replace use of llvm::StringView w/ std::string_view
Nick Desaulniers [Fri, 14 Apr 2023 22:43:03 +0000 (15:43 -0700)]
[Demangle] replace use of llvm::StringView w/ std::string_view

This refactoring was waiting on converting LLVM to C++17.

Leave StringView.h and cleanup around for subsequent cleanup.

Reviewed By: MaskRay

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

15 months ago[libc] Add implementation of getchar
Michael Jones [Fri, 14 Apr 2023 22:36:39 +0000 (15:36 -0700)]
[libc] Add implementation of getchar

added getchar and getchar_unlocked which are just wrappers getc and getc_unlocked respectively.

Reviewed By: sivachandra, lntue, michaelrj

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

15 months ago[StringView] remove consumeFront
Nick Desaulniers [Fri, 14 Apr 2023 22:27:56 +0000 (15:27 -0700)]
[StringView] remove consumeFront

Towards converting our use of llvm::StringView to std::string_view,
remove a method that std::string_view doesn't have.

This could be moved to the nascent llvm/ADT/StringViewExtras.h, but the
use is highly localized to one TU. Move this to be a static function
there.

Reviewed By: MaskRay

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

15 months agoRevert ""Reland "[hwasan] Provide aliases for c allocation functions for Fuchsia""
Leonard Chan [Fri, 14 Apr 2023 22:31:09 +0000 (22:31 +0000)]
Revert ""Reland "[hwasan] Provide aliases for c allocation functions for Fuchsia""

This reverts commit 39ece7583a784976dea786d59e6564649b13d92d.

Reverting because I suspect this is leading to the failures we see in
fxbug.dev/125426. We're seeing unexpected OOMs and I suspect it's
because this change makes c-style allocation functions use hwasan's
allocator which might be worse than the default one (scudo). Reverting
for now to see if this unblocks the clang roll.

15 months ago[Clang] Fix defaulted equality operator so that it does not attempt to compare unname...
Shafik Yaghmour [Fri, 14 Apr 2023 21:56:36 +0000 (14:56 -0700)]
[Clang] Fix defaulted equality operator so that it does not attempt to compare unnamed bit-fields

If we look at class.bit p2 it tells us that that unnamed bit-fields are not
members and class.compare.default p5 tells us that we should only compare
non-static data members of the class.

This fixes: https://github.com/llvm/llvm-project/issues/61335 and https://github.com/llvm/llvm-project/issues/61417

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

15 months ago[SLP][NFC] Remove Limit from tryToVectorizeSequence() arguments.
Vasileios Porpodas [Fri, 14 Apr 2023 20:18:33 +0000 (13:18 -0700)]
[SLP][NFC] Remove Limit from tryToVectorizeSequence() arguments.

Limit turns out to be implemented in the exact same way for all calls to
tryToVectorizeSequence(). So this patch removes it and implements it internally
as a lambda function.

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

15 months agoValueTracking: Handle freeze in computeKnownFPClass
Matt Arsenault [Thu, 13 Apr 2023 13:35:18 +0000 (09:35 -0400)]
ValueTracking: Handle freeze in computeKnownFPClass

15 months ago[test][sanitizer] Add stress test for pthread_create
Vitaly Buka [Fri, 14 Apr 2023 21:28:31 +0000 (14:28 -0700)]
[test][sanitizer] Add stress test for pthread_create

15 months agoValueTracking: Implement computeKnownFPClass for arithmetic.fence
Matt Arsenault [Sun, 9 Apr 2023 11:10:46 +0000 (07:10 -0400)]
ValueTracking: Implement computeKnownFPClass for arithmetic.fence

15 months agoValueTracking: Add baseline test for arithmetic.fence computeKnownFPClass
Matt Arsenault [Sun, 9 Apr 2023 11:09:59 +0000 (07:09 -0400)]
ValueTracking: Add baseline test for arithmetic.fence computeKnownFPClass

15 months agoValueTracking: Add baseline test for computeKnownFPClass fpext handling
Matt Arsenault [Sun, 9 Apr 2023 11:23:53 +0000 (07:23 -0400)]
ValueTracking: Add baseline test for computeKnownFPClass fpext handling

15 months agoValueTracking: Implement computeKnownFPClass for llvm.trunc
Matt Arsenault [Sun, 9 Apr 2023 02:54:30 +0000 (22:54 -0400)]
ValueTracking: Implement computeKnownFPClass for llvm.trunc

15 months agoValueTracking: Add baseline test for trunc computeKnownFPClass handling
Matt Arsenault [Sun, 9 Apr 2023 10:49:48 +0000 (06:49 -0400)]
ValueTracking: Add baseline test for trunc computeKnownFPClass handling

15 months agoValueTracking: Handle non-splat vectors in computeKnownFPClass
Matt Arsenault [Mon, 10 Apr 2023 19:41:46 +0000 (15:41 -0400)]
ValueTracking: Handle non-splat vectors in computeKnownFPClass

Avoids some regressions when the implementation of isKnownNeverNaN is
replaced with computeKnownFPClass.

15 months ago[github] update action and use major version
Mohammed Keyvanzadeh [Fri, 14 Apr 2023 11:23:30 +0000 (14:53 +0330)]
[github] update action and use major version

- Update the `actions/download-artifact` action to version 3.
- Use the major version of an action instead of specifying the minor or patch versions.

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

15 months ago[libc++] Re-generate the ignore-format file with the CI's clang-format
Louis Dionne [Fri, 14 Apr 2023 21:14:16 +0000 (22:14 +0100)]
[libc++] Re-generate the ignore-format file with the CI's clang-format

99e52b68a4 re-generated that file with a clang-format version that differs
from the CI's clang-format, leading to CI breakage.

15 months ago[ELF] Fix SysV hash function.
Nathan Sidwell [Sun, 9 Apr 2023 17:28:34 +0000 (13:28 -0400)]
[ELF] Fix SysV hash function.

(a) Treat name as unsigned chars.

(b) Refactor for better optimization of main loop.

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

15 months ago[clang-format] Correctly indent comment above finalized PPDirective
Owen Pan [Thu, 13 Apr 2023 07:27:40 +0000 (00:27 -0700)]
[clang-format] Correctly indent comment above finalized PPDirective

Fixes #62107.

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

15 months ago[gn build] Port d6d30dd9590b
LLVM GN Syncbot [Fri, 14 Apr 2023 20:52:23 +0000 (20:52 +0000)]
[gn build] Port d6d30dd9590b

15 months ago[ASan] fix test broken by argument promotion pass
Florian Mayer [Fri, 14 Apr 2023 20:47:26 +0000 (13:47 -0700)]
[ASan] fix test broken by argument promotion pass

Reviewed By: vitalybuka

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

15 months ago[ADT] add StringViewExtras llvm::starts_with for std::string_view
Nick Desaulniers [Fri, 14 Apr 2023 20:41:52 +0000 (13:41 -0700)]
[ADT] add StringViewExtras llvm::starts_with for std::string_view

std::string_view::starts_with isn't available until C++20. Create
llvm::starts_with for now; we can delete this when LLVM moves to C++20
one day.

To run the newly added unit test:
$ cd llvm/build; ninja ADTTests; cd -
$ ./llvm/build/unittests/ADT/ADTTests --gtest_filter=StringViewExtrasTest.\*

Reviewed By: MaskRay, erichkeane

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

15 months ago[Tests] Added test for D128011
Dávid Bolvanský [Fri, 14 Apr 2023 20:37:55 +0000 (22:37 +0200)]
[Tests] Added test for D128011

15 months agoValueTracking: Implement computeKnownFPClass for canonicalize
Matt Arsenault [Sat, 8 Apr 2023 23:44:44 +0000 (19:44 -0400)]
ValueTracking: Implement computeKnownFPClass for canonicalize

15 months agoValueTracking: Add baseline test for computeKnownFPClass for canonicalize
Matt Arsenault [Sat, 8 Apr 2023 23:44:22 +0000 (19:44 -0400)]
ValueTracking: Add baseline test for computeKnownFPClass for canonicalize

15 months ago[OpenMP] Remove duplicates from the list if using 'auto'
Joseph Huber [Wed, 12 Apr 2023 20:08:59 +0000 (15:08 -0500)]
[OpenMP] Remove duplicates from the list if using 'auto'

Summary:
We can detect the user's GPUs via the `auto` option. But if the user has
multiple GPUs installed or set the list incorrectly, we need to remove
the duplicates.

15 months ago[libc] Remove duplicate architecture from the detected list
Joseph Huber [Fri, 14 Apr 2023 20:05:40 +0000 (15:05 -0500)]
[libc] Remove duplicate architecture from the detected list

Summary:
When we detect the architectures via `native` we can have systems with
multiple of the same GPU. We need to remove duplicates or else we will
try to build the same target multiple times.

15 months ago[StringView] remove popFront
Nick Desaulniers [Fri, 14 Apr 2023 20:09:01 +0000 (13:09 -0700)]
[StringView] remove popFront

Towards converting our use of llvm::StringView to std::string_view,
remove a method that std::string_view doesn't have.

llvm::StringView::popFront is similar to std::string_view::remove_prefix
but with a reference to std::string_view::front taken first.

Reviewed By: MaskRay

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

15 months ago[AArch64] Precommit a test
Jingu Kang [Fri, 14 Apr 2023 19:42:53 +0000 (20:42 +0100)]
[AArch64] Precommit a test

This patch precommits a test for:

https://reviews.llvm.org/D148347

15 months ago[MLIR][python bindings] implement `PyValue` subclassing to enable operator overloading
max [Fri, 14 Apr 2023 19:20:33 +0000 (14:20 -0500)]
[MLIR][python bindings] implement `PyValue` subclassing to enable operator overloading

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

15 months ago[scudo] The BaseAddr should be MappedBase in releasePagesToOS()
Chia-hung Duan [Fri, 14 Apr 2023 19:12:48 +0000 (19:12 +0000)]
[scudo] The BaseAddr should be MappedBase in releasePagesToOS()

This is used to make MemMapDefault be compliant with legacy APIs.

Reviewed By: fabio-d

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

15 months agoReland "[clang-scan-deps] Migrate to OptTable"
Alex Brachet [Fri, 14 Apr 2023 19:15:02 +0000 (19:15 +0000)]
Reland "[clang-scan-deps] Migrate to OptTable"

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

15 months agotest-release.sh: build projects and runtimes lists with semicolons
Dimitry Andric [Sun, 12 Mar 2023 18:53:12 +0000 (19:53 +0100)]
test-release.sh: build projects and runtimes lists with semicolons

While doing a test-release.sh run on FreeBSD, I ran into a sed error due
to the introduction of the GNU extension '\s' in commit 500587e23dfd.

Scanning for blanks (spaces and tabs) could be done in a more portable
fashion using the [[:blank:]] character class. But it is easier to avoid
the original problem, which is that the projects and runtime lists have
to be separated by semicolons, and cannot start with a semicolon.

Instead, use the shell's alternate value parameter expansion mechanism,
which makes it easy to append items to lists with separators in between,
and without any leading separator. This also avoids having to run sed on
the end result.

In addition, build any selected runtimes in the second phase, otherwise
the third phase can fail to find several symbols in compiler-rt, if that
has been built. This is because the host's compiler-rt is not guaranteed
to have those symbols.

Reviewed By: tstellar

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

15 months agoFix tls_get_addr handling for glibc >=2.25
Thurston Dang [Wed, 12 Apr 2023 20:53:49 +0000 (20:53 +0000)]
Fix tls_get_addr handling for glibc >=2.25

This changes the sanitizers' tls_get_addr handling from
a heuristic check of __signal_safe_memalign allocations
(which has only been used in a since deprecated version
of Google's runtime), to using the sanitizers' interface
function to check if it is a malloc allocation (used
since glibc >= 2.25).

This is one of the approaches proposed by Keno in
https://github.com/google/sanitizers/issues/1409#issuecomment-1214244142

This moves the weak annotation of __sanitizer_get_allocated_size/begin from the header to sanitizer_tls_get_addr.cpp, as suggested by Vitaly in D148060.

Reviewed By: vitalybuka

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

15 months ago[bazel] Fix build after 33468a5
Christian Sigg [Fri, 14 Apr 2023 18:44:19 +0000 (20:44 +0200)]
[bazel] Fix build after 33468a5

Add missing dependency.

15 months agoValueTracking: Handle fptrunc in computeKnownFPClass
Matt Arsenault [Sun, 9 Apr 2023 11:18:07 +0000 (07:18 -0400)]
ValueTracking: Handle fptrunc in computeKnownFPClass

Handle nan.

15 months agoValueTracking: Add computeKnownFPClass baseline test for fptrunc
Matt Arsenault [Mon, 10 Apr 2023 13:49:06 +0000 (09:49 -0400)]
ValueTracking: Add computeKnownFPClass baseline test for fptrunc

15 months agoInstSimplify: Perform cheaper check first
Matt Arsenault [Tue, 11 Apr 2023 20:39:39 +0000 (16:39 -0400)]
InstSimplify: Perform cheaper check first

15 months agoValueTracking: Handle extractelement and extractvalue in computeKnownFPClass
Matt Arsenault [Wed, 12 Apr 2023 23:09:17 +0000 (19:09 -0400)]
ValueTracking: Handle extractelement and extractvalue in computeKnownFPClass

15 months agoValueTracking: Implement computeKnownFPClass for sin/cos
Matt Arsenault [Sat, 8 Apr 2023 23:15:26 +0000 (19:15 -0400)]
ValueTracking: Implement computeKnownFPClass for sin/cos

15 months ago[Docs] Update ClangFormatStyleOptions.rst's versionbadge's to have min-width
Shivam Gupta [Fri, 14 Apr 2023 18:14:39 +0000 (23:44 +0530)]
[Docs] Update ClangFormatStyleOptions.rst's versionbadge's to have min-width

This fix https://github.com/llvm/llvm-project/issues/61934

By default, the width property is used to set the width of a table column.
However, if the content of a cell in that column is wider than the width
specified by the width property, the cell's content will overflow the
column and the table will become wider than the specified width.
This causes the version numbers to be displayed outside of their table cells.

Using the min-width property instead of width ensures that the column is
wide enough to accommodate the content of its cells. If a cell's content is
wider than the specified min-width, the column will expand to fit the content.

15 months ago[mlir][linalg] Fix a bug in lower_pack when there are no padding values.
Hanhan Wang [Fri, 14 Apr 2023 18:23:16 +0000 (11:23 -0700)]
[mlir][linalg] Fix a bug in lower_pack when there are no padding values.

Reviewed By: chelini

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

15 months ago[StringView] remove ctor incompatible with std::string_view
Nick Desaulniers [Fri, 14 Apr 2023 18:11:25 +0000 (11:11 -0700)]
[StringView] remove ctor incompatible with std::string_view

Towards replacing llvm::StringView with std::string_view, remove ctor
that std::string_view doesn't have an analog for.

Reviewed By: erichkeane, MaskRay

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

15 months ago[InstCombine] Make `FoldOpIntoSelect` handle non-constants and use condition to deduc...
Noah Goldstein [Fri, 14 Apr 2023 17:35:14 +0000 (12:35 -0500)]
[InstCombine] Make `FoldOpIntoSelect` handle non-constants and use condition to deduce constants.

Make the fold use the information present in the condition for deducing constants i.e:
```
%c = icmp eq i8 %x, 10
%s = select i1 %c, i8 3, i8 2
%r = mul i8 %x, %s
```

If we fold the `mul` into the select, on the true side we insert `10` for `%x` in the `mul`.

Reviewed By: nikic

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

15 months ago[InstCombine] Add tests for deducing constants based on condition in select; NFC
Noah Goldstein [Fri, 14 Apr 2023 17:34:53 +0000 (12:34 -0500)]
[InstCombine] Add tests for deducing constants based on condition in select; NFC

Reviewed By: nikic

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

15 months ago[LIBC] Actually assert no errors in `pthread_call_once` in its test; NFC
Noah Goldstein [Fri, 14 Apr 2023 17:34:27 +0000 (12:34 -0500)]
[LIBC] Actually assert no errors in `pthread_call_once` in its test; NFC

Just seemed to be missing an assertion.

Reviewed By: sivachandra

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

15 months ago[LIBC] Clarify namespace of `thread_exit` in `pthread_exit`
Noah Goldstein [Fri, 14 Apr 2023 17:33:59 +0000 (12:33 -0500)]
[LIBC] Clarify namespace of `thread_exit` in `pthread_exit`

Just add `__llvm_libc::` to makes things clearer.

Reviewed By: sivachandra

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

15 months ago[TableGen] Replace std::shared_ptr with InstrusiveRefCntPtr for TreePatternNode. NFC
Craig Topper [Fri, 14 Apr 2023 17:37:14 +0000 (10:37 -0700)]
[TableGen] Replace std::shared_ptr with InstrusiveRefCntPtr for TreePatternNode. NFC

An intrusive reference counter uses less memory than the control
block of std::shared_ptr.

This should allow some additional code simplifications if we
don't need to pass around shared_ptr in order to create new
shared_ptrs.

15 months ago[gn build] Port 5abe338f2a7f
LLVM GN Syncbot [Fri, 14 Apr 2023 17:45:35 +0000 (17:45 +0000)]
[gn build] Port 5abe338f2a7f

15 months ago[clang-tidy][NFC] Remove reference to Visual studio native plugin
Jorge Pinto Sousa [Fri, 14 Apr 2023 17:22:47 +0000 (17:22 +0000)]
[clang-tidy][NFC] Remove reference to Visual studio native plugin

The clang-tidy documentation contained:

> MS Visual Studio has a native clang-tidy-vs plugin

This plugin was removed via 559ae14.

Fixes: https://github.com/llvm/llvm-project/issues/62142

Reviewed By: PiotrZSL

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

15 months ago[clang-tidy][NFC] Improved hungarian notation regression test at post-commit review
Douglas Chen [Fri, 14 Apr 2023 17:22:36 +0000 (17:22 +0000)]
[clang-tidy][NFC] Improved hungarian notation regression test at post-commit review

Improve the (`D144510`)[https://reviews.llvm.org/D144510] patch with prefix string. Using "my" instead of "cust" would increase
readability.

Take some examples:
- const char* `custszNamePtr` = "Name"; --> `myszNamePtr`
- uint8_t `custu8ValueU8` = 0; --> `myu8ValueU8`
- DWORD `custdwMsDword` = 0; --> `mydwMsDword`

Reviewed By: PiotrZSL

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

15 months ago[clang-tidy] Fix false positve for defaulted move constructor in performance-noexcept...
AMS21 [Fri, 14 Apr 2023 17:06:30 +0000 (17:06 +0000)]
[clang-tidy] Fix false positve for defaulted move constructor in performance-noexcept-move-constructor

Previously a struct like this:

template <typename>
struct A { A(A&&) = default; };

Would trigger a false positive, since even though it is not marked as
noexcept it still is due to the `= default`.
Now we only give a warning if the defaulted move constructor is
actually declared as throwing and correctly resolve it if they are
defaulted.

This fixes llvm#56026, llvm#41414, llvm#38081

Reviewed By: PiotrZSL

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

15 months ago[StringView] remove dropFront
Nick Desaulniers [Fri, 14 Apr 2023 17:24:07 +0000 (10:24 -0700)]
[StringView] remove dropFront

Towards converting our use of llvm::StringView to std::string_view,
remove a method that std::string_view doesn't have.
llvm::StringView::dropFront is semantically similar to
std::string_view::substr but with the input clamped to the size. No code
was relying on clamping other than the rust demangler, which I fixed in
https://reviews.llvm.org/D148272.  Removing this method makes it easier
to switch over code later.

Reviewed By: MaskRay

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

15 months ago[lsan] Move allocator base to avoid conflict with high-entropy ASLR for x86-64 Linux
Fangrui Song [Fri, 14 Apr 2023 17:18:54 +0000 (10:18 -0700)]
[lsan] Move allocator base to avoid conflict with high-entropy ASLR for x86-64 Linux

This ports D148280 for ASan.

On x86-64 Linux, when mmap_rnd_bits is set to 32 (the maximum `ARCH_MMAP_RND_BITS_MAX`),
the allocator space `[kAllocatorSpace,kAllocatorSpace+kAllocatorSize)`
collides with the PIE load base range (0x555555554000 upto `2**mmap_rnd_bits * pagesize` away),
which can cause the allocation to fail.
Using 0x500000000000ULL as the base address avoids this problem and works with
AArch64 Linux and FreeBSD as well.

While here, change s390x to use 0x500000000000ULL as well. See D78644
discussions that the address works.

Reviewed By: thurston, vitalybuka

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

15 months ago[Pipeline] Don't limit ArgumentPromotion to -O3
Arthur Eubanks [Thu, 13 Apr 2023 20:25:08 +0000 (13:25 -0700)]
[Pipeline] Don't limit ArgumentPromotion to -O3

This is a cheap pass so there's no need to limit to -O3.
This removes some differences between various pipelines.

Reviewed By: nikic

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

15 months ago[passes] Remove the legacy PM version of IRCE
Bjorn Pettersson [Fri, 14 Apr 2023 13:04:10 +0000 (15:04 +0200)]
[passes] Remove the legacy PM version of IRCE

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

15 months ago[passes] Remove the legacy PM version of AlignmentFromAssumptions
Bjorn Pettersson [Fri, 14 Apr 2023 13:00:36 +0000 (15:00 +0200)]
[passes] Remove the legacy PM version of AlignmentFromAssumptions

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

15 months ago[Passes] Remove the legacy DemandedBitsWrapperPass
Bjorn Pettersson [Thu, 13 Apr 2023 11:25:43 +0000 (13:25 +0200)]
[Passes] Remove the legacy DemandedBitsWrapperPass

Last user of DemandedBitsWrapperPass was the BDCE pass. Since
the legacy PM version of BDCE was removed in an earlier commit, this
patch removes the now unused DemandedBitsWrapperPass.

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

15 months ago[Passes] Remove legacy PM version of BDCE (aka BitTrackingDCEPass)
Bjorn Pettersson [Thu, 13 Apr 2023 08:42:16 +0000 (10:42 +0200)]
[Passes] Remove legacy PM version of BDCE (aka BitTrackingDCEPass)

BDCE is not used by the codegen pipeline so we should not need the
legacy PM version of the pass any longer.

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

15 months ago[clangd] Handle destructors in DefineOutline tweak
Nathan James [Fri, 14 Apr 2023 16:51:44 +0000 (17:51 +0100)]
[clangd] Handle destructors in DefineOutline tweak

Fix destructors being incorrectly defined in the DefineOutline tweak
Currently it doesn't prepend the class name to the destructor
```lang=c++
class A { ~A() {} };
// Destructor definition after outline
~A() {}
// After this fix
A::~A() {}
```

Reviewed By: kadircet

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

15 months ago[AArch64] Combine SELECT_CC patterns that match smin(a,0) and smax(a,0)
Cameron McInally [Fri, 14 Apr 2023 16:26:16 +0000 (09:26 -0700)]
[AArch64] Combine SELECT_CC patterns that match smin(a,0) and smax(a,0)

With a previous patch to canonicalize SPF to min/max intrinsics (a266af721153),
we saw a performance regression on the AArch64 backend.

This patch recovers from the SPF canonicalization by combining smin(a,0) and
smax(a,0) SELECT_CC patterns during AArch64ISelLowering.

GitHub Issue: #61767

Reviewed By: dmgreen

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

15 months ago[mlir][Linalg] Make HoistRedundantTensorSubsetsOp not a FunctionalStyleTransformOpTrait
Nicolas Vasilache [Fri, 31 Mar 2023 15:00:39 +0000 (08:00 -0700)]
[mlir][Linalg] Make HoistRedundantTensorSubsetsOp not a FunctionalStyleTransformOpTrait

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

15 months ago[flang][openacc] Add kernels construct lowering
Valentin Clement [Fri, 14 Apr 2023 16:43:44 +0000 (09:43 -0700)]
[flang][openacc] Add kernels construct lowering

Lower the parse tree to acc dialects operations. Make use
of the compute construct lowering.

Depends on D148277

Reviewed By: PeteSteinfeld

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

15 months ago[mlir][Tensor] Add support for insert_slice in FoldTensorSubsetOps
Nicolas Vasilache [Fri, 14 Apr 2023 12:44:41 +0000 (05:44 -0700)]
[mlir][Tensor] Add support for insert_slice in FoldTensorSubsetOps

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

15 months ago[RustDemangle] remove StringView::dropFront
Nick Desaulniers [Fri, 14 Apr 2023 16:18:04 +0000 (09:18 -0700)]
[RustDemangle] remove StringView::dropFront

Toward the goal of replacing llvm::StringView with std::string_view,
first replacing users of llvm::StringView::dropFront, this case in the
Rust demangling scheme seemed worth its own commit+review.

Reviewed By: erichkeane, MaskRay

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

15 months ago[lldb][ClangExpression] Filter out non-root namespaces in FindNamespace
Michael Buch [Mon, 3 Apr 2023 10:09:23 +0000 (11:09 +0100)]
[lldb][ClangExpression] Filter out non-root namespaces in FindNamespace

**Summary**

In a program such as:
```
namespace A {
namespace B {
struct Bar {};
}
}

namespace B {
struct Foo {};
}
```
...LLDB would run into issues such as:
```
(lldb) expr ::B::Foo f
error: expression failed to parse:
error: <user expression 0>:1:6: no type named 'Foo' in namespace 'A::B'
::B::Foo f
~~~~~^
```

This is because the `SymbolFileDWARF::FindNamespace` implementation
will return *any* namespace it finds if the `parent_decl_ctx` provided
is empty. In `FindExternalVisibleDecls` we use this API to find the
namespace that symbol `B` refers to. If `A::B` happened to be the one
that `SymbolFileDWARF::FindNamespace` looked at first, we would try
to find `struct Foo` in `A::B`. Hence the error.

This patch proposes a new `SymbolFileDWARF::FindNamespace` API that
will only find a match for top-level namespaces, which is what
`FindExternalVisibleDecls` is attempting anyway; it just never
accounted for multiple namespaces of the same name.

**Testing**

* Added API test-case

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

15 months ago[OpenMP][Docs] Replace broken design document link with the git repo
Joseph Huber [Fri, 14 Apr 2023 16:09:33 +0000 (11:09 -0500)]
[OpenMP][Docs] Replace broken design document link with the git repo

Summary:
At some point we stopped copying this file to the server, but
realistically this is just a static `.pdf` hosted in the LLVM repository
so we can link it directly.

15 months ago[AArch64] Teach the AArch64 backend patterns to generate the RAX1 instruction.
Shreyansh Chouhan [Fri, 14 Apr 2023 16:11:05 +0000 (17:11 +0100)]
[AArch64] Teach the AArch64 backend patterns to generate the RAX1 instruction.

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

15 months ago[lldb] Allow evaluating expressions in C++20 mode
Michael Buch [Fri, 14 Apr 2023 16:01:49 +0000 (17:01 +0100)]
[lldb] Allow evaluating expressions in C++20 mode

This patch allows users to evaluate expressions using
`expr -l c++20`. Currently DWARF keeps the CU's at
`DW_AT_language` at `DW_LANG_C_plus_plus_14` even
when compiling with `-std=c++20`. So even in "C++20
programs" expression evaluation will by default be
performed in `C++11` mode for now.

Enabling `C++14` has been previously attempted at
https://reviews.llvm.org/D80308

There are some remaining issues around evaluating C++20
expressions. Mainly, lack of support for C++20 AST nodes in
`clang::ASTImporter`. But these can be addressed in follow-up
patches.

15 months ago[lldb][Language] Add more language types
Michael Buch [Wed, 1 Feb 2023 03:58:05 +0000 (03:58 +0000)]
[lldb][Language] Add more language types

Adds more languages to the `language_names` list in
preparation for adding support for C++20 expression
evaluation.

The language constants were taken from the DWARFv5
constants defined in LLVM's `Dwarf.def`. Two vendor
constants overlap with the DWARFv5 constants so bump
their values. Their actual value is not important,
whereas keeping the enum values consecutive is (since
they are used for array lookups).

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

15 months ago[fuzzer][test] Disable noasan-strncmp test for AArch64
Antoine Moynault [Fri, 14 Apr 2023 15:32:41 +0000 (15:32 +0000)]
[fuzzer][test] Disable noasan-strncmp test for AArch64

This test fails on several aarch64 bots
  clang-aarch64-lld-2stage ( https://lab.llvm.org/buildbot/#/builders/185/builds/3525 )
  clang-aarch64-full-2stage ( https://lab.llvm.org/buildbot/#/builders/179/builds/5904 )
  clang-aarch64-sve-vla ( https://lab.llvm.org/buildbot/#/builders/197/builds/4519 )
Disable it while this is analyzed.

Reviewed By: DavidSpickett

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

15 months ago[mlir][openacc] Add acc.kernels operation
Valentin Clement [Fri, 14 Apr 2023 15:29:39 +0000 (08:29 -0700)]
[mlir][openacc] Add acc.kernels operation

The acc.kernels operation models the OpenACC kernels construct.
The kernels construct defines a region of a program that is
compiled into a sequence of kernels to be executed on the current device.
The operation is modelled on the acc.parallel operation and will
receive similar updates when the data operands operations will
be implemented.

Reviewed By: PeteSteinfeld

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

15 months ago[libc++] Remove redundant assertion in std::span::subspan
Louis Dionne [Tue, 11 Apr 2023 16:53:39 +0000 (17:53 +0100)]
[libc++] Remove redundant assertion in std::span::subspan

That is already checked later in the function as `__count <= size() - __offset`.

rdar://107884996

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

15 months ago[FPEnv][LangRef] Update doc for strictfp attribute
Kevin P. Neal [Wed, 12 Apr 2023 15:42:44 +0000 (11:42 -0400)]
[FPEnv][LangRef] Update doc for strictfp attribute

Based on the direction of IR Verifier changes in D146845, this documentation
needs to be updated.

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

15 months ago[lldb] Add `operator StringRef` to ConstString
Dave Lee [Wed, 12 Apr 2023 21:44:19 +0000 (15:44 -0600)]
[lldb] Add `operator StringRef` to ConstString

Add a `StringRef` conversion function to `ConstString`.

This will make using llvm, and other non-ConstString, APIs more convenient.

For demonstration, this updates Module.cpp.

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

15 months ago[mlir] Fix test after 2d4e856
Christian Sigg [Fri, 14 Apr 2023 15:04:14 +0000 (17:04 +0200)]
[mlir] Fix test after 2d4e856

The test CHECKs for `-nan`, but printing the sign is optional.

This change removes the sign because it has no meaning.

15 months ago[ConstraintElimination] Add tests to check for transfering facts from sgt to ugt.
Zain Jaffal [Fri, 14 Apr 2023 14:37:06 +0000 (15:37 +0100)]
[ConstraintElimination] Add tests to check for transfering facts from sgt to ugt.

If we have a >s b and we know that b >s 0 then we also can infer that a >u b.

Reviewed By: fhahn

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

15 months ago[OpenMP] Replace HeapToShared's initial value with `poison`
Joseph Huber [Thu, 6 Apr 2023 16:18:47 +0000 (11:18 -0500)]
[OpenMP] Replace HeapToShared's initial value with `poison`

There's a desire to move away from `undef` in LLVM. Currently we want to
have the `addressspace(3)` variables use `poison` instead.

Reviewed By: jdoerfert

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

15 months ago[OpenMP][Docs] Add documentation for using configuration files
Joseph Huber [Mon, 10 Apr 2023 14:50:40 +0000 (09:50 -0500)]
[OpenMP][Docs] Add documentation for using configuration files

We recently reverted a patch that automatically set the rpath on OpenMP
executables. This was used because the `libomptarget.so` library is only
expected to work with the same version of compiler that will be using
it. This patch adds some documentation for how to get similar behaviour
as before using a clang configuration file.

Reviewed By: jdoerfert

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

15 months ago[Flang] Add code owner for the Driver
Kiran Chandramohan [Fri, 14 Apr 2023 14:23:30 +0000 (14:23 +0000)]
[Flang] Add code owner for the Driver

Andrzej proposed the design and led the work for the Flang Driver
over the past couple of years. He is continuing to function as
the primary reviewer and gate-keeper of the Driver.

Reviewed By: sscalpone

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

15 months ago[X86] combineSetCCMOVMSK - fold anyof/noneof movmskps/movmskpd -> testps/testpd
Simon Pilgrim [Fri, 14 Apr 2023 14:37:40 +0000 (15:37 +0100)]
[X86] combineSetCCMOVMSK - fold anyof/noneof movmskps/movmskpd -> testps/testpd

Another part of Issue #60007