platform/upstream/llvm.git
19 months ago[flang] enable as_expr codegen from array without FortranVariabeInterface
Jean Perier [Fri, 16 Dec 2022 08:20:47 +0000 (09:20 +0100)]
[flang] enable as_expr codegen from array without FortranVariabeInterface

The defining op of HLFIR variables is expected to be visible
in most cases, but HLFIR codegen won't rely on it from a correctness
point of view.

This patch allows building a fir.shape from an hlfir::Entity does not
have a visible FortranVariabeInterface defining op.

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

19 months ago[flang] hlfir.elemental codegen
Jean Perier [Fri, 16 Dec 2022 08:19:07 +0000 (09:19 +0100)]
[flang] hlfir.elemental codegen

Without any optimization or when it cannot be optimized before
bufferization, an hlfir.elemental lowers to an array temporary.
Its codegen consists in:
- allocating a temp given the type, shape, and length parameter arguments.
- generating a loop nest given the elemental shape
- inlining the body of the elemental inside the loops, and replacing the
  yield_element by an assignment to an element of the temp.

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

19 months ago[trace] Change /sys/bus const char * variables to const char []
Fangrui Song [Fri, 16 Dec 2022 08:07:07 +0000 (08:07 +0000)]
[trace] Change /sys/bus const char * variables to const char []

19 months agoJSON: llvm::Optional => std::optional
Fangrui Song [Fri, 16 Dec 2022 07:56:52 +0000 (07:56 +0000)]
JSON: llvm::Optional => std::optional

Many files are from language servers.

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[gn] Port 344230913812cec3b4509c0216cefce06f69dd4d
Fangrui Song [Fri, 16 Dec 2022 07:40:23 +0000 (07:40 +0000)]
[gn] Port 344230913812cec3b4509c0216cefce06f69dd4d

19 months ago[SelectionDAG] Port ARC/M68k/LoongArch after D140161
Fangrui Song [Fri, 16 Dec 2022 07:34:42 +0000 (07:34 +0000)]
[SelectionDAG] Port ARC/M68k/LoongArch after D140161

19 months ago[mlir][llvm] Fastmath flags import from LLVM IR.
Tobias Gysi [Fri, 16 Dec 2022 07:05:34 +0000 (08:05 +0100)]
[mlir][llvm] Fastmath flags import from LLVM IR.

This revision adds support to import fastmath flags from LLVMIR. It
implement the import using a listener attached to the builder. The
listener gets notified if an operation is created and then checks if
there are fastmath flags to import from LLVM IR to the MLIR. The
listener based approach allows us to perform the import without changing
the mlirBuilders used to create the imported operations.

An alternative solution, could be to update the builders so that they
return the created operation using FailureOr<Operation*> instead of
LogicalResult. However, this solution implies an LLVM IR instruction
always maps to exatly one MLIR operation. While mostly true, there are
already exceptions to this such as the PHI instruciton. Additionally, an
mlirBuilder based solution also further complicates the builder
implementations, which led to the listener based solution.

Depends on D139405

Reviewed By: ftynse

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

19 months ago[clang-tidy] Use Python3 for add_new_check.py and rename_check.py
Carlos Galvez [Tue, 13 Dec 2022 21:06:14 +0000 (21:06 +0000)]
[clang-tidy] Use Python3 for add_new_check.py and rename_check.py

Fixes #58782

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

19 months ago[clang/Lexer] Enhance `Lexer::getImmediateMacroNameForDiagnostics` to return a result...
Argyrios Kyrtzidis [Thu, 15 Dec 2022 21:33:17 +0000 (13:33 -0800)]
[clang/Lexer] Enhance `Lexer::getImmediateMacroNameForDiagnostics` to return a result from non-file buffers

Use `SourceManager::isWrittenInScratchSpace()` to specifically check for token paste or stringization, instead of
excluding all non-file buffers. This allows diagnostics to mention macro names that were defined from the command-line.

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

19 months ago[RISCV] Emit .variant_cc directives for vector function calls.
Yeting Kuo [Tue, 6 Dec 2022 12:12:11 +0000 (20:12 +0800)]
[RISCV] Emit .variant_cc directives for vector function calls.

The patch is splitted from D103435. The patch emits .variant_cc [0] for those
function calls that have vector arguments or vector return values.

[0]: https://github.com/riscv/riscv-elf-psabi-doc/pull/190

Initial authored by: HsiangKai

Reviewed By: reames

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

19 months ago[docs] Update docs since getBasicBlockList() is now private
Vasileios Porpodas [Wed, 14 Dec 2022 23:44:55 +0000 (15:44 -0800)]
[docs] Update docs since getBasicBlockList() is now private

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

19 months ago[NFC] Cleanup: Function::getBasicBlockList() and Function::getSublistAccess() are...
Vasileios Porpodas [Wed, 14 Dec 2022 00:02:50 +0000 (16:02 -0800)]
[NFC] Cleanup: Function::getBasicBlockList() and Function::getSublistAccess() are now private

The Function class now supports an adequate set of member functions to help
modify the BB list, including Function::splice(), Function::erase(),
Function::insert() etc. so we no longer need access to the underlying list.

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

19 months ago[AA] Allow for flow-sensitive analyses.
David Goldblatt [Fri, 16 Dec 2022 03:33:10 +0000 (19:33 -0800)]
[AA] Allow for flow-sensitive analyses.

All current analyses ignore the context. We make the argument mandatory
for analyses, but optional for the query interface.

Reviewed By: nikic

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

19 months ago[lld-macho] Don't rewrite -rpath arguments in response file
Jez Ng [Fri, 16 Dec 2022 04:52:42 +0000 (23:52 -0500)]
[lld-macho] Don't rewrite -rpath arguments in response file

We only want to rewrite paths to files that the linker looks up. Files
under RPATH are looked up at runtime by dyld.

Reviewed By: #lld-macho, keith

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

19 months ago[Format] Capture `FormatStyle` by value to avoid use-after-free.
Jordan Rupprecht [Fri, 16 Dec 2022 04:38:32 +0000 (20:38 -0800)]
[Format] Capture `FormatStyle` by value to avoid use-after-free.

Fixes the test failure in 240e29c5015d246de7fb5e4421aa93042fada59b, reported on the D140058 review thread.

19 months ago[clang-format][NFC] Turn on some code-changing options one by one
Owen Pan [Wed, 14 Dec 2022 21:54:44 +0000 (13:54 -0800)]
[clang-format][NFC] Turn on some code-changing options one by one

For the code-changing options InsertBraces, RemoveBracesLLVM, and
RemoveSemicolon, turn the option on only when running the token
analyzer pass for it. This improves the run-time and avoids
interference from other options.

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

19 months ago[OpenMP] Add missing test for pinned memory API
Carlo Bertolli [Fri, 16 Dec 2022 03:29:15 +0000 (21:29 -0600)]
[OpenMP] Add missing test for pinned memory API

I accidentally left out the test for the pinned API introduced by D138933. Adding it back.

Reviewed By: jdoerfert

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

19 months ago[AIX][BigArchive][NFC] Add test case that list members of archive with free list...
Kai Luo [Fri, 16 Dec 2022 03:08:34 +0000 (11:08 +0800)]
[AIX][BigArchive][NFC] Add test case that list members of archive with free list in it

The archive is generated via
```
touch foo.c
ar crus libfoo.a foo.c
ar d libfoo.a foo.c
```
Thus it contains free list.

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

19 months agoAMDGPU/GlobalISel: Do not create readfirstlane with non-s32 type
Matt Arsenault [Wed, 19 Jan 2022 21:16:20 +0000 (16:16 -0500)]
AMDGPU/GlobalISel: Do not create readfirstlane with non-s32 type

We should probably handle any 32-bit type here, but the intrinsic
definition and selection pattern currently do not. Avoids a few lit
tests failures when switched on by default.

19 months ago[flang] Enforce 15.4.2.2(4)(c) - explicit interface required
Peter Klausler [Thu, 8 Dec 2022 21:45:57 +0000 (13:45 -0800)]
[flang] Enforce 15.4.2.2(4)(c) - explicit interface required

When a function has an implicit interface its result type may
not have a deferred type parameter.

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

19 months agoRemove the dependency between lib/DebugInfoDWARF and MC.
Shubham Sandeep Rastogi [Thu, 6 Oct 2022 19:15:07 +0000 (12:15 -0700)]
Remove the dependency between lib/DebugInfoDWARF and MC.

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

19 months ago[mlir][sparse] Added new SparseTensorEncodingAttr::withoutOrdering factory
wren romano [Thu, 15 Dec 2022 22:32:58 +0000 (14:32 -0800)]
[mlir][sparse] Added new SparseTensorEncodingAttr::withoutOrdering factory

Reviewed By: aartbik, Peiming

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

19 months ago[NFC][bazel] Update comment in llvm-config.h.cmake so headers match
Jordan Rupprecht [Fri, 16 Dec 2022 01:41:48 +0000 (17:41 -0800)]
[NFC][bazel] Update comment in llvm-config.h.cmake so headers match

19 months ago[flang] Check for polymorphism in DEALLOCATE statements in pure procedures
Peter Klausler [Wed, 7 Dec 2022 23:41:47 +0000 (15:41 -0800)]
[flang] Check for polymorphism in DEALLOCATE statements in pure procedures

Semantic checking for DEALLOCATE statements omitted checks for
polymorphic objects and ultimate allocatable components in a pure
procedure, which if not caught would allow execution of an impure
FINAL subroutine defined on a type extension.

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

19 months ago[mlir][tosa] Make tosa.resize to linalg avoid redundant loads for unit width
Rob Suderman [Fri, 16 Dec 2022 00:07:31 +0000 (16:07 -0800)]
[mlir][tosa] Make tosa.resize to linalg avoid redundant loads for unit width

When using a tosa resize for ?x1x1x? to ?x1x?x? we should avoid doing a 2D
interpolation as only two unique values are loaded. As the extract operation
performance numerical computation on its values the superfluous extracts may
fail to be coalesced. Instead we only interpolate between the values if there
are multiple values to interpolate between.

For the integer case we also perform scaling by the scaling-factor to apply
the same integer scaling behavior as interpolation.

Reviewed By: jpienaar, NatashaKnk

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

19 months agoImplement LWG-3646 std::ranges::view_interface::size returns a signed type
Igor Zhukov [Tue, 13 Dec 2022 00:07:26 +0000 (07:07 +0700)]
Implement LWG-3646 std::ranges::view_interface::size returns a signed type

Reviewed By: Mordante, philnik, #libc

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

19 months ago[mlir][sparse] add dim level type toString convenience method
Aart Bik [Thu, 15 Dec 2022 21:50:20 +0000 (13:50 -0800)]
[mlir][sparse] add dim level type toString convenience method

Reviewed By: wrengr, bixia

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

19 months ago[clang][deps] Implement `dump()` for the VFS
Jan Svoboda [Thu, 15 Dec 2022 23:03:07 +0000 (15:03 -0800)]
[clang][deps] Implement `dump()` for the VFS

19 months ago[mlir][sparse] add folder to sparse_tensor.storage.get operation.
Peiming Liu [Thu, 15 Dec 2022 23:04:17 +0000 (23:04 +0000)]
[mlir][sparse] add folder to sparse_tensor.storage.get operation.

Reviewed By: aartbik, wrengr

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

19 months ago[SelectionDAG] Give all the target specific subclasses of SelectionDAGISel their...
Craig Topper [Thu, 15 Dec 2022 23:32:55 +0000 (15:32 -0800)]
[SelectionDAG] Give all the target specific subclasses of SelectionDAGISel their own pass ID.

Previously we had a shared ID in SelectionDAGISel. AMDGPU has an
initializePass function for its subclass of SelectionDAGISel. No
other target does.

This causes all target specific SelectionDAGISel passes to be known
as "amdgpu-isel".

I'm not sure what would happen if another target tried to implement
an initializePass function too since the ID is already claimed.

This patch gives all targets their own ID and passes it down to
SelectionDAGISel constructor to MachineFunctionPass's constructor.

Unfortunately, I think this causes most targets to lose
print-before/after-all support for their SelectionDAGISel pass.
And they probably no longer support start/stop-before/after. We
can add initializePass functions to fix this as a follow up. NOTE:
This was probably also broken if the AMDGPU target isn't compiled in.

Step 1 to fixing PR59538.

Reviewed By: arsenm

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

19 months agoRevert "[lld-macho] Private label aliases to weak symbols should not retain section...
Jez Ng [Wed, 7 Dec 2022 16:17:51 +0000 (11:17 -0500)]
Revert "[lld-macho] Private label aliases to weak symbols should not retain section data"

This reverts commit 6736bce6db5fe15bcb765b976c99fff34500d1eb.

It's causing Swift-related crashes in e.g.
https://bugs.chromium.org/p/chromium/issues/detail?id=1400716 and
elsewhere.

19 months ago[AMDGPU] Lower VGPR to physical SGPR COPY to S_MOV_B32 if VGPR contains the compile...
Alexander Timofeev [Mon, 12 Dec 2022 20:18:19 +0000 (21:18 +0100)]
[AMDGPU] Lower VGPR to physical SGPR COPY to S_MOV_B32 if VGPR contains the compile time constant

Sometimes we have a constant value loaded to VGPR. In case we further
need to rematrerialize it in the physical scalar register we may avoid VGPR to
SGPR copy replacing it with S_MOV_B32.

Reviewed By: JonChesterfield, arsenm

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

19 months agoReland "Delete sanitizer_common-based ('old') scudo: o7"
Mitch Phillips [Thu, 15 Dec 2022 23:34:18 +0000 (15:34 -0800)]
Reland "Delete sanitizer_common-based ('old') scudo: o7"

This reverts commit 78f786d02a464ae69594ee8f678e4cee495642f5.

Internal use cases have been migrated.

This has been on life support for a long time. Now that -fsanitize=scudo
is scudo_standalone, this can be removed.

Tests are sticking around for now to be reused for scudo_standalone
later on.

19 months ago[OpenMP][libomptarget] Add AMDGPU NextGen plugin with asynchronous behavior
Kevin Sala [Mon, 12 Dec 2022 17:13:48 +0000 (18:13 +0100)]
[OpenMP][libomptarget] Add AMDGPU NextGen plugin with asynchronous behavior

This commit adds the AMDGPU NextGen plugin inheriting from PluginInterface's classes.
It also implements the asynchronous behavior in the plugin operations: kernel launches
and memory transfers. To this end, it implements the concept of streams of asynchronous
operations. The streams are implemented using the HSA signals to define input and output
dependencies between asynchronous operations.

Missing features:
  - Retrieve the maximum number of threads per group that a kernel can run. This requires
    reading the image.
  - Implement __tgt_rtl_sync_event, not used on the libomptarget side.

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

19 months ago[mlir][tensor][linalg] Add a pattern that generalizes tensor.pack op.
Hanhan Wang [Wed, 14 Dec 2022 22:36:37 +0000 (14:36 -0800)]
[mlir][tensor][linalg] Add a pattern that generalizes tensor.pack op.

The pattern generalizes a tensor::PackOp into a sequence of tensor +
Linalg ops, when the outer dims are all 1s. It uses the trick of
rank-reduced tensor.extract_slice to get the tile; transpose the tile;
use tensor.insert_slice to insert it to the destination of inner tile.

Reviewed By: pifon2a, tyb0807

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

19 months ago[flang] When resolving a binding, allow for overriding
Peter Klausler [Thu, 15 Dec 2022 21:56:17 +0000 (13:56 -0800)]
[flang] When resolving a binding, allow for overriding

In type-bound generic resolution, when the actual argument
is monomorphic, resolve the call to the target of the
most recent (i.e., least deeply inherited) override of
the binding, if any.

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

19 months ago[mlir] Convert tests to check 'target=...'
Paul Robinson [Thu, 15 Dec 2022 22:49:20 +0000 (14:49 -0800)]
[mlir] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months ago[MachOYAML] Improve section offset misalignment error message
Michael Buch [Thu, 15 Dec 2022 17:57:53 +0000 (17:57 +0000)]
[MachOYAML] Improve section offset misalignment error message

Before:
```
wrote too much data somewhere, section offsets don't line up
```

After:
```
wrote too much data somewhere, section offsets in section __debug_str for segment __DWARF don't line up: [cursor=0x581], [fileStart=0x0], [sectionOffset=0x579]
```

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

19 months ago[lldb][Test] Propagate llvm::yaml error message in TestFile::fromYaml
Michael Buch [Thu, 15 Dec 2022 16:26:20 +0000 (16:26 +0000)]
[lldb][Test] Propagate llvm::yaml error message in TestFile::fromYaml

Currently the test-suite would swallow the error message
on `llvm::yaml::convertYAML` failures.

This patch simply propagates the error string up to the caller.

Before patch:
```
[ RUN      ] DWARFASTParserClangTests.TestDefaultTemplateParamParsing
/Users/michaelbuch/Git/llvm-worktrees/playground/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.cpp:19: Failure
Value of: llvm::detail::TakeExpected(File)
Expected: succeeded
  Actual: failed  (convertYAML() failed: )
Assertion failed: (!HasError && "Cannot get value when an error exists!"), function getStorage, file Error.h, line 671.
```

After patch:
```
[ RUN      ] DWARFASTParserClangTests.TestDefaultTemplateParamParsing
/Users/michaelbuch/Git/llvm-worktrees/playground/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.cpp:19: Failure
Value of: llvm::detail::TakeExpected(File)
Expected: succeeded
  Actual: failed  (convertYAML() failed: wrote too much data somewhere, section offsets don't line up)
Assertion failed: (!HasError && "Cannot get value when an error exists!"), function getStorage, file Error.h, line 671.
```

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

19 months ago[llvm] Convert tests to check 'target=...'
Paul Robinson [Thu, 15 Dec 2022 22:40:14 +0000 (14:40 -0800)]
[llvm] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months ago[mlgo] Retire LLVM_HAVE_TF_API
Kazu Hirata [Thu, 15 Dec 2022 22:40:16 +0000 (14:40 -0800)]
[mlgo] Retire LLVM_HAVE_TF_API

I've eliminated all uses of LLVM_HAVE_TF_API except a couple of them
being removed in llvm/lib/CodeGen/CMakeLists.txt.  This patch removes
remaining definitions and uses of LLVM_HAVE_TF_API.

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

19 months ago[LoopRotate] Clear block and loop dispo cache when merging blocks.
Florian Hahn [Thu, 15 Dec 2022 22:22:20 +0000 (22:22 +0000)]
[LoopRotate] Clear block and loop dispo cache when merging blocks.

Merging blocks in LoopRotate may remove blocks reference in the block
disposition cache. Clear the cache.

Fixes #59534.

19 months ago[MCJIT] Convert tests to check 'target=...'
Paul Robinson [Thu, 15 Dec 2022 22:08:36 +0000 (14:08 -0800)]
[MCJIT] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months ago[lld] Convert tests to check 'target=...'
Paul Robinson [Thu, 15 Dec 2022 21:57:50 +0000 (13:57 -0800)]
[lld] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months ago[mlgo] Use have_tflite instead of have_tf_api
Kazu Hirata [Thu, 15 Dec 2022 21:54:25 +0000 (13:54 -0800)]
[mlgo] Use have_tflite instead of have_tf_api

We are in the process of retiring LLVM_HAVE_TF_API in favor of
LLVM_HAVE_TFLITE.  This patch takes care of the transition in
llvm/test.

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

19 months ago[flang] Correct folding of SAME_TYPE_AS()
Peter Klausler [Mon, 5 Dec 2022 23:26:28 +0000 (15:26 -0800)]
[flang] Correct folding of SAME_TYPE_AS()

The result can't be known to be true at compilation time when
either operand is polymorphic.

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

19 months agoHeaders: tweak inclusion condition for stdatomic.h
Saleem Abdulrasool [Thu, 15 Dec 2022 20:34:04 +0000 (20:34 +0000)]
Headers: tweak inclusion condition for stdatomic.h

MSVC requires that C++23 be available (_HAS_CXX23) else the entire
content is elided. Conditionalise the inclusion properly so that C/C++
code using stdatomic.h for memory_order_* constants are able to do
so without changing the C++ standard. This repairs builds of Swift and
libdispatch after ba49d39b20cc5358da28af2ac82bd336028780bc.

Differential Revision: https://reviews.llvm.org/D139266
Reviewed By: aaron.ballman, Mordante, fsb4000

19 months ago[mailmap] Add my entry
Tommy Chiang [Thu, 15 Dec 2022 21:30:29 +0000 (05:30 +0800)]
[mailmap] Add my entry

19 months ago[PowerPC][GIsel] Materialize i64 constants.
Kai Nacke [Thu, 15 Dec 2022 20:26:32 +0000 (20:26 +0000)]
[PowerPC][GIsel] Materialize i64 constants.

Adds support for i64 constant. It uses the same pattern-based
approach as in SDAG (see PPCISelDAGToDAG::selectI64ImmDirect(),
PPCISelDAGToDAG::selectI64Imm()). It does not support the
prefixed instructions.

Reviewed By: arsenm, tschuett

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

19 months ago[NFC] Cleanup: Remove instances of Function::getBasicBlockList()
Vasileios Porpodas [Thu, 15 Dec 2022 03:07:24 +0000 (19:07 -0800)]
[NFC] Cleanup: Remove instances of Function::getBasicBlockList()

This is part of a series of patches that aim at making Function::getBasicBlockList() private.

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

19 months ago[libc] Handle allocation failures in the dirent API gracefully.
Siva Chandra Reddy [Wed, 14 Dec 2022 22:37:28 +0000 (22:37 +0000)]
[libc] Handle allocation failures in the dirent API gracefully.

Along the way, setting of errno has been moved out of the internal code.

Reviewed By: lntue

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

19 months ago[libc] fix shifting exact multiples of 64 in uint
Michael Jones [Thu, 15 Dec 2022 00:51:23 +0000 (16:51 -0800)]
[libc] fix shifting exact multiples of 64 in uint

The internal uint class had a bug introduced recently when optimizing
the shift routines. When calculating the value of a block, it would
shift an adjacent block by 64 - the shift amount. If the shift amount
was 0, this would be a shift of 64, which is undefined for a 64 bit
integer. This patch fixes this by adding a conditional to catch this
case.

Reviewed By: lntue

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

19 months ago[WindowsDriver] Improve VSInstallPath check for IDE subdirectory
Dimitry Andric [Thu, 15 Dec 2022 20:38:07 +0000 (21:38 +0100)]
[WindowsDriver] Improve VSInstallPath check for IDE subdirectory

This avoids potential memory allocation failures, if VSInstallPath is
not empty, but also does not contain the string "\Common7\IDE".

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

Reviewed By: mstorsjo

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

19 months agoRevert "[WindowsDriver] Improve VSInstallPath check for IDE subdirectory"
Dimitry Andric [Thu, 15 Dec 2022 20:36:32 +0000 (21:36 +0100)]
Revert "[WindowsDriver]  Improve VSInstallPath check for IDE subdirectory"

This reverts commit cc40dacbd0b736522d0254fb5525cde22bd5f166.

19 months ago[WindowsDriver] Improve VSInstallPath check for IDE subdirectory
Dimitry Andric [Sun, 11 Dec 2022 18:18:21 +0000 (19:18 +0100)]
[WindowsDriver]  Improve VSInstallPath check for IDE subdirectory

This avoids potential memory allocation failures, if VSInstallPath is
not empty, but also does not contain the string "\Common7\IDE".

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

Reviewed By: mstorsjo

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

19 months ago[NFC] Rename Instruction::insertAt() to Instruction::insertInto(), to be consistent...
Vasileios Porpodas [Thu, 15 Dec 2022 01:42:26 +0000 (17:42 -0800)]
[NFC] Rename Instruction::insertAt() to Instruction::insertInto(), to be consistent with BasicBlock::insertInto()

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

19 months ago[clang] Convert tests to check 'target=...'
Paul Robinson [Thu, 15 Dec 2022 20:25:59 +0000 (12:25 -0800)]
[clang] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months agoRevert "[NFC][DebugInfo] Autogenerate check lines in assignment-tracking/sroa/*"
Roman Lebedev [Thu, 15 Dec 2022 20:20:37 +0000 (23:20 +0300)]
Revert "[NFC][DebugInfo] Autogenerate check lines in assignment-tracking/sroa/*"

As per post-commit feedback, DebugInfo owners are not receptive of the
idea of having a single source of truth instead of relying on everyone
to know how to update these tests manually.

This reverts commit 4ff8d1e315bdd26daae8a6928aa46e347fe0d6eb.
This reverts commit a33b40d61c64b95d736f1a0dd537e9087c330304.

19 months ago[mlir][sparse] performs a tab cleanup (NFC)
Aart Bik [Thu, 15 Dec 2022 19:38:55 +0000 (11:38 -0800)]
[mlir][sparse] performs a tab cleanup (NFC)

Reviewed By: Peiming

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

19 months ago[AArch64] Minor changes and sanity checks in relation to https://reviews.llvm.org...
Nilanjana Basu [Thu, 15 Dec 2022 19:35:34 +0000 (01:05 +0530)]
[AArch64] Minor changes and sanity checks in relation to https://reviews.llvm.org/D135229

19 months ago[clang] Support for read-only types
MalavikaSamak [Thu, 15 Dec 2022 19:02:46 +0000 (11:02 -0800)]
[clang] Support for read-only types

The main goal of this work is to allow developers to express the need to place instances
of a class or structure in the read-only part of the program memory. Such a placement is
desirable to prevent any further modifications to the instances of a given structure, by
leveraging the read-only run time protection.

To achieve this, we are introducing a new attribute that can be attached to any record
definition or a declaration. The compiler enforces that every instance of this type can
be placed in the read-only segment of the program memory, provided the target triplet
supports such a placement. If an instance of a given type bearing this attribute doesn’t
satisfy such a placement, the compiler attaches an appropriate warning at suitable program
locations. In other words, adding this attribute to a type requires every instance of this
type to be a global const, which are placed in the read-only segments for most target
triplets. However, this is *not a language feature* and it *need not* be true for
*all target triplets*.

The current patch emits a warning at global variable declaration sites of types bearing
the attribute without const qualification and corresponding note attached to the type
definition/declaration.

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

19 months ago[OpenMP][libomptarget] Add utility header for AMDGPU plugins
Kevin Sala [Sun, 11 Dec 2022 15:28:02 +0000 (16:28 +0100)]
[OpenMP][libomptarget] Add utility header for AMDGPU plugins

This patch prepares the PluginInterface for the new AMDGPU NextGen plugin. The original and the
NextGen plugin will share some structures and functionalities. We use this header for defining
them and avoiding code duplication.

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

19 months ago[libc][NFC] Rename "loader" to "startup".
Siva Chandra Reddy [Wed, 14 Dec 2022 20:38:45 +0000 (20:38 +0000)]
[libc][NFC] Rename "loader" to "startup".

Reviewed By: lntue

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

19 months ago[mlir][sparse] remove unintended file and trailing white space
Peiming Liu [Thu, 15 Dec 2022 19:32:25 +0000 (19:32 +0000)]
[mlir][sparse] remove unintended file and trailing white space

Reviewed By: aartbik

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

19 months ago[mlir][VectorToGPU] Support transposed+broadcasted 2D MMA load
Lei Zhang [Thu, 15 Dec 2022 19:34:14 +0000 (19:34 +0000)]
[mlir][VectorToGPU] Support transposed+broadcasted 2D MMA load

This is loading from 2-D memref, in addition to D139655 where we
load from 1-D memref cases.

Reviewed By: ThomasRaoux

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

19 months agoFix: use "using namespace" in a header file.
Emmmer [Thu, 15 Dec 2022 19:30:55 +0000 (03:30 +0800)]
Fix: use "using namespace" in a header file.

19 months ago[mlir][VectorToGPU] Support transposed+broadcasted 1D MMA load
Lei Zhang [Thu, 15 Dec 2022 19:16:01 +0000 (19:16 +0000)]
[mlir][VectorToGPU] Support transposed+broadcasted 1D MMA load

This is now possible with transpose semantics on subgroup MMA
load ops.

Reviewed By: ThomasRaoux

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

19 months ago[AutoFDO] Use getHeadSamplesEstimate instead of getTotalSamples to compute profile...
wlei [Wed, 14 Dec 2022 22:47:37 +0000 (14:47 -0800)]
[AutoFDO] Use getHeadSamplesEstimate instead of getTotalSamples to compute profile callsite staleness

Fix two issues for profile staleness report.

1) It should be more accurate to use the sum of all entry count(`getHeadSamplesEstimate`) for the callsite samples than the total samples, since even the top-level callsite is mismatched, it does affect the inlining but it can still be merged into base profile and used later.

2) I accidentally missed to persist the num of mismatched callsite into binary.

Also added the asm testing to test the decoding of the section.

Reviewed By: hoy, wenlei

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

19 months agoRevert "Revert "[AArch64][GlobalISel][Legalizer] Legalize G_SHUFFLE_VECTOR with diffe...
Kevin Athey [Thu, 15 Dec 2022 19:19:24 +0000 (11:19 -0800)]
Revert "Revert "[AArch64][GlobalISel][Legalizer] Legalize G_SHUFFLE_VECTOR with different lengths""

This reverts commit 192cc76e0be688106492989cd845ba786a7ae36d.

Reverted Revert, as build was fixed while I was examining.

19 months agoRevert "[AArch64][GlobalISel][Legalizer] Legalize G_SHUFFLE_VECTOR with different...
Kevin Athey [Thu, 15 Dec 2022 17:21:37 +0000 (09:21 -0800)]
Revert "[AArch64][GlobalISel][Legalizer] Legalize G_SHUFFLE_VECTOR with different lengths"

This reverts commit 4c52fb1a5ee20846627d16e38f5dec08c08f8884.

Breaks sanitizer ubsan buildbot:
https://lab.llvm.org/buildbot/#/builders/85/builds/12983

19 months ago[mlgo] Use LLVM_HAVE_TFLITE instead of LLVM_HAVE_TF_API
Kazu Hirata [Thu, 15 Dec 2022 19:11:24 +0000 (11:11 -0800)]
[mlgo] Use LLVM_HAVE_TFLITE instead of LLVM_HAVE_TF_API

This patch replaces uses of LLVM_HAVE_TF_API with LLVM_HAVE_TFLITE in
a couple of CMakeLists.txt.

Now that 842b0d0fe2dd142305a9461e50cdce9aff7f86bc has landed,
we now have:

  LLVM_HAVE_TF_API is defined if and only if LLVM_HAVE_TFLITE
  evaluates to true

in the CMake variable world (assuming that you do not set
LLVM_HAVE_TF_API on the cmake invocation).

FWIW, the story is a little different in the C++ macro world, where:

  LLVM_HAVE_TF_API is defined if and only if LLVM_HAVE_TFLITE is
  defined

This is why edc83a15b45e6b91fce3f35622a6b0a6d34e5211 consisted only of
mechanical replacements.

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

19 months ago[RISCV][InsertVSETVL] Incorporate demanded fields into compatibility interface [nfc]
Philip Reames [Thu, 15 Dec 2022 19:09:49 +0000 (11:09 -0800)]
[RISCV][InsertVSETVL] Incorporate demanded fields into compatibility interface [nfc]

This reworks the API to explicitly pass in the demanded fields instead of requering them internally.  At the moment, this is NFC, but it will stop being so in future changes which adjust the demanded bits in the caller.

19 months agoAPFloat: Add isSmallestNormalized predicate function
Matt Arsenault [Thu, 1 Dec 2022 14:12:20 +0000 (09:12 -0500)]
APFloat: Add isSmallestNormalized predicate function

It was annoying to write the check for this in the one case I added,
and I'm planning on adding another, so add a convenient PatternMatch
like for other special case values.

I have no idea what is going on in the DoubleAPFloat case, I reversed
this from the makeSmallestNormalized test. Also could implement this
as *this == getSmallestNormalized() for less code, but this avoids the
construction of a temporary APFloat copy and follows the style of the
other functions.

19 months ago[RISCV] Teach RISCVSExtWRemoval to remove sext.w whose upper bits aren't demanded.
Craig Topper [Thu, 15 Dec 2022 19:01:20 +0000 (11:01 -0800)]
[RISCV] Teach RISCVSExtWRemoval to remove sext.w whose upper bits aren't demanded.

SelectionDAG aggressively creates sext_inreg operations after
promoting an i32 add. If the add is later matched to a sh1add,
sh2add or sh3add, a sext.w from the sext_inreg will get left behind.
In many cases we can prove this sext.w is unnecessary by checking
if its upper bits are ever used.

19 months ago[APInt] Fix a bug in the unit testing introduced in 55968109d
Peter Rong [Thu, 15 Dec 2022 18:51:33 +0000 (10:51 -0800)]
[APInt] Fix a bug in the unit testing introduced in 55968109d

Signed-off-by: Peter Rong <PeterRong96@gmail.com>
19 months ago[flang] Semantic-check for procedure pointers with assumed character length
Kelvin Li [Thu, 15 Dec 2022 16:59:08 +0000 (11:59 -0500)]
[flang] Semantic-check for procedure pointers with assumed character length

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

Committed on behalf of tislam

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

19 months ago[NFC][DebugInfo] assignment-tracking/sroa: do check !DIAssignID, and the metadata
Roman Lebedev [Thu, 15 Dec 2022 18:20:17 +0000 (21:20 +0300)]
[NFC][DebugInfo] assignment-tracking/sroa: do check !DIAssignID, and the metadata

Based on post-commit feedback for the original change.

19 months ago[UpdateTestChecks] Handle !DIAssignID metadata
Roman Lebedev [Thu, 15 Dec 2022 18:19:07 +0000 (21:19 +0300)]
[UpdateTestChecks] Handle !DIAssignID metadata

19 months ago[NFC][UpdateTestChecks] Add coverage for missing !DIAssignID handling
Roman Lebedev [Thu, 15 Dec 2022 18:05:47 +0000 (21:05 +0300)]
[NFC][UpdateTestChecks] Add coverage for missing !DIAssignID handling

19 months agoFix buildbot out of memory
Emmmer [Sun, 30 Oct 2022 17:35:16 +0000 (01:35 +0800)]
Fix buildbot out of memory

https://lab.llvm.org/buildbot#builders/17/builds/31659

19 months ago[AMDGPU] Test fixup
Christudasan Devadasan [Thu, 15 Dec 2022 17:46:53 +0000 (23:16 +0530)]
[AMDGPU] Test fixup

Changing cast_lds_gv into a kernel function to
lower the LDS usage appropriately. The LDS lowering
is currently won't happen for orphan device functions.

19 months ago[APInt] provide a safe API for zext value and sext value.
Peter Rong [Fri, 9 Dec 2022 00:59:22 +0000 (16:59 -0800)]
[APInt] provide a safe API for zext value and sext value.

Currently, APInt::getSExtValue and getZExtValue crashes on values with more than 64 bits.
Users may accidently crash the compiler with this setting when the integer may be i128.
As shown in https://github.com/llvm/llvm-project/issues/59316

In this patch we provide a trySExtValue and tryZExtValue to return an Optional, the user
needs to explictly unwrap it and condsier the possibility where there my no value in it.

Reviewed By: RKSimon

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

19 months ago[NFC] Rename Function::insertBasicBlockAt() to Function::insert().
Vasileios Porpodas [Wed, 14 Dec 2022 23:57:08 +0000 (15:57 -0800)]
[NFC] Rename Function::insertBasicBlockAt() to Function::insert().

I think this is a better name because it is what STL uses.

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

19 months ago[clang-tools-extra] Convert tests to check 'target=...'
Paul Robinson [Thu, 15 Dec 2022 17:50:21 +0000 (09:50 -0800)]
[clang-tools-extra] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months ago[libc] Templatize ato* tests
Alex Brachet [Thu, 15 Dec 2022 17:30:00 +0000 (17:30 +0000)]
[libc] Templatize ato* tests

This catches missing corner cases from atol tests.

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

19 months ago[ADT] Remove llvm::Optional::transform
Kazu Hirata [Thu, 15 Dec 2022 17:24:54 +0000 (09:24 -0800)]
[ADT] Remove llvm::Optional::transform

I've removed the last uses of transform on Dec 14, 2022 in commit
230df792e17519071a9ef4dc0fb10132540dfbb8.

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

19 months agoApply clang-tidy fixes for llvm-qualified-auto in ElementwiseOpFusion.cpp (NFC)
Mehdi Amini [Sat, 10 Dec 2022 10:57:20 +0000 (10:57 +0000)]
Apply clang-tidy fixes for llvm-qualified-auto in ElementwiseOpFusion.cpp (NFC)

19 months agoApply clang-tidy fixes for bugprone-argument-comment in BufferizableOpInterfaceImpl...
Mehdi Amini [Sat, 10 Dec 2022 10:50:43 +0000 (10:50 +0000)]
Apply clang-tidy fixes for bugprone-argument-comment in BufferizableOpInterfaceImpl.cpp (NFC)

19 months ago[lldb] Fix a warning
Kazu Hirata [Thu, 15 Dec 2022 17:18:55 +0000 (09:18 -0800)]
[lldb] Fix a warning

This patch fixes:

  lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.cpp:1402:18:
  error: default label in switch which covers all enumeration values
  [-Werror,-Wcovered-switch-default]

19 months ago[InstCombine] add nuw to any (1<<x)
Sanjay Patel [Thu, 15 Dec 2022 16:41:22 +0000 (11:41 -0500)]
[InstCombine] add nuw to any (1<<x)

https://alive2.llvm.org/ce/z/9EjDKE

This was mentioned as a missing fold in D139598.

It can unlock follow-on folds in some cases.
This verifies one of the changed tests:
https://alive2.llvm.org/ce/z/B_btDM

19 months ago[mlir][bufferize][NFC] Add statistics to OneShotBufferizePass
Matthias Springer [Thu, 15 Dec 2022 16:55:39 +0000 (17:55 +0100)]
[mlir][bufferize][NFC] Add statistics to OneShotBufferizePass

Print statistics about the number of alloc/deallocs and in-place/out-of-place bufferization.

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

19 months ago[LLDB][RISCV] Add RVD instruction support for EmulateInstructionRISCV
Emmmer [Sat, 10 Dec 2022 08:59:13 +0000 (16:59 +0800)]
[LLDB][RISCV] Add RVD instruction support for EmulateInstructionRISCV

RVD extension is a double-precision floating-point instruction-set extension, which adds double-precision floating-point computational instructions compliant with the IEEE 754-2008 arithmetic standard.

This patch:
- Reuse most of the functions in the "F extension" to impl the"D extension"
- corresponding unittests.

Reviewed By: DavidSpickett

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

19 months agoRevert "[SelectionDAG] Do not second-guess alignment for alloca"
Ron Lieberman [Thu, 15 Dec 2022 16:54:41 +0000 (10:54 -0600)]
Revert "[SelectionDAG] Do not second-guess alignment for alloca"

Breaks amdgpu buildbot https://lab.llvm.org/buildbot/#/builders/193
 23491

This reverts commit ffedf47d8b793e07317f82f9c2a5f5425ebb71ad.

19 months ago[mlir][memref] Fold subview(subview(x))
Matthias Springer [Thu, 15 Dec 2022 16:49:46 +0000 (17:49 +0100)]
[mlir][memref] Fold subview(subview(x))

Folding of rank-reduced subviews is also supported.

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

19 months ago[mlir][cf] Print message in cf.assert to LLVM lowering
Matthias Springer [Thu, 15 Dec 2022 16:37:49 +0000 (17:37 +0100)]
[mlir][cf] Print message in cf.assert to LLVM lowering

The assert message was previously ignored. The lowered IR now calls `puts` it in case of a failed assertion.

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

19 months ago[X86] combineBitcastvxi1 - handle boolmask sign-extension through vselect
Simon Pilgrim [Thu, 15 Dec 2022 16:40:39 +0000 (16:40 +0000)]
[X86] combineBitcastvxi1 - handle boolmask sign-extension through vselect

See if we can freely sign-extend both sources of a vselect operand, also handle allones constant build vectors (easily rematerializable and uses in the test case).

Fixes #59526

19 months ago[LoopVersioningLICM] Regenerate test checks (NFC)
Nikita Popov [Thu, 15 Dec 2022 16:33:13 +0000 (17:33 +0100)]
[LoopVersioningLICM] Regenerate test checks (NFC)

19 months ago[RISCV] Bugfix for 90f91683 noticed in follow up work
Philip Reames [Thu, 15 Dec 2022 16:26:25 +0000 (08:26 -0800)]
[RISCV] Bugfix for 90f91683 noticed in follow up work

I went to extend this locally, and then promptly tripped across a bug which is possible with the landed patch.  The problematic case is:
vsetvli zero, 4, <some vtype>
vmv.x.s x1, v0
vsetvli a0, zero, <same type>

In this case, the naive rewrite - what I had implemented - would form:
vsetvli zero, zero, <same vtype>
vmv.x.s x1, v0

This is, amusingly, correct for the vmv.x.s, but is incorrect for the instructions which follow the sequence and probably rely on VL=VLMAX.  (The VL before the sequence is unknown, and thus doesn't have to be VLMAX.)

I plan to rework the rewrite code to be more robust here, but I wanted to directly fix the bug first.  Sorry for the lack of test; I didn't manage to reproduce this without an additional optimization change after a few minutes of trying.

19 months ago[UpdateTestChecks][PowerPC] Add ppc64 triple support
Kai Nacke [Thu, 15 Dec 2022 15:44:38 +0000 (15:44 +0000)]
[UpdateTestChecks][PowerPC] Add ppc64 triple support

Newer tests use ppc64le-linux triple. It is identical to ppc32.
Some of the PPC GIsel tests were generated by this change.

Reviewed by: RKSimon

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

19 months ago[X86] Add test case for Issue #59526
Simon Pilgrim [Thu, 15 Dec 2022 16:19:35 +0000 (16:19 +0000)]
[X86] Add test case for Issue #59526