479866 Commits

Author SHA1 Message Date
Haojian Wu
8a0535fbbe [bazel] Fix the bazel build for mlir:SPIRVTarget target. 2023-11-06 13:18:32 +01:00
Oleksandr "Alex" Zinenko
96dadc9fc8
[mlir] support scalable vectors in python bindings (#71050)
The scalable dimension functionality was added to the vector type after
the bindings for it were defined, without the bindings being ever
updated. Fix that.
2023-11-06 13:14:56 +01:00
Nathan Sidwell
ff67e85182
llvm: [NFC] Robustify testcase (#71120)
Robustify the check-not to not trigger on llvm-as's pathname in its initial error message.
2023-11-06 06:58:01 -05:00
Kiran Chandramohan
8a3a082156
[Flang][HLFIR] : Use the attributes from the ultimate symbol (#71195)
This change is required for hlfir.declares of host-associated symbols in
the OpenMP regions.

Added A FIXME to correctly use the symbol attributes for VOLATILE and
ASYNCHRONOUS.
2023-11-06 11:51:43 +00:00
Cullen Rhodes
fbc70c5a9e [mlir][ArmSME] remove addressof ops to undefined symbols (NFC)
The string symbols were replaced with 'vector.print str' calls in
061d97804345 (#68973) but the addressof ops weren't removed. This was
missed as the test is currently XFAIL'ed.
2023-11-06 11:43:43 +00:00
Jonathan Davies
22bea0c521
[BOLT] Add itrace aggregation for AUX data (#70426)
If you have a perf.data with Arm ETM data the only way to use perf2bolt
with Branch Aggregation is to first run `perf inject --itrace=l64i1us -o
perf-brstack.data` and then pass the new perf-brstack.data into
perf2bolt. perf2bolt then runs `perf script -F pid,ip,brstack` to
produce the brstacks.

This PR adds `--itrace` arg to perf2bolt to enable Itrace Aggregation.
It takes a string which is what is passed to the `perf script -F
pid,ip,brstack --itrace={0}`. This command produces the brstacks without
having to run perf inject and creating a new perf.data file.
2023-11-06 12:40:04 +01:00
Haojian Wu
684b8e1c08 Add missing header in MigratorOptions.h for 1a0e743ab01716ecafeb33858d9975cf90017c59. 2023-11-06 12:32:43 +01:00
Luke Lau
5ed0b21580 [RISCV] Add FileCheck prefixes for test where RV32/RV64 output differs. NFC 2023-11-06 19:32:07 +08:00
David Spickett
3f5fd4b3c1
[lldb][AArch64] Move register info reconfigure into architecture plugin (#70950)
This removes AArch64 specific code from the GDB* classes.

To do this I've added 2 new methods to Architecture:
* RegisterWriteCausesReconfigure to check if what you are about to do
  will trash the register info.
* ReconfigureRegisterInfo to do the reconfiguring. This tells you if
  anything changed so that we only invalidate registers when needed.

So that ProcessGDBRemote can call ReconfigureRegisterInfo in
SetThreadStopInfo,
I've added forwarding calls to GDBRemoteRegisterContext and the base
class
RegisterContext.

(which removes a slightly sketchy static cast as well)

RegisterContext defaults to doing nothing for both the methods
so anything other than GDBRemoteRegisterContext will do nothing.
2023-11-06 11:30:19 +00:00
Diana
7f5d59b38d
[AMDGPU] ISel for @llvm.amdgcn.cs.chain intrinsic (#68186)
The @llvm.amdgcn.cs.chain intrinsic is essentially a call. The call
parameters are bundled up into 2 intrinsic arguments, one for those that
should go in the SGPRs (the 3rd intrinsic argument), and one for those
that should go in the VGPRs (the 4th intrinsic argument). Both will
often be some kind of aggregate.

Both instruction selection frameworks have some internal representation
for intrinsics (G_INTRINSIC[_WITH_SIDE_EFFECTS] for GlobalISel,
ISD::INTRINSIC_[VOID|WITH_CHAIN] for DAGISel), but we can't use those
because aggregates are dissolved very early on during ISel and we'd lose
the inreg information. Therefore, this patch shortcircuits both the
IRTranslator and SelectionDAGBuilder to lower this intrinsic as a call
from the very start. It tries to use the existing infrastructure as much
as possible, by calling into the code for lowering tail calls.

This has already gone through a few rounds of review in Phab:

Differential Revision: https://reviews.llvm.org/D153761
2023-11-06 12:30:07 +01:00
Vladislav Khmelevsky
838331a081
[BOLT] Set NOOP size only on X86 (NFC) (#71307)
Small fix, we have problems with noop size only on x86, no reason to do
it on other platforms.
2023-11-06 15:21:50 +04:00
Cullen Rhodes
ed350bb3d8
[mlir][ArmSME] Add support for lowering masked tile_store ops (#71180)
This patch extends ArmSMEToSCF to support lowering of masked tile_store
ops. Only masks created by 'vector.create_mask' are currently supported.

Example:

  %mask = vector.create_mask %c3, %c2 : vector<[4]x[4]xi1>
  arm_sme.tile_store %tile, %dest[%c0, %c0], %mask : memref<?x?xi32>,
vector<[4]x[4]xi32>

Produces:

  %num_rows = arith.constant 3 : index
  %num_cols = vector.create_mask %c2 : vector<[4]xi1>
  scf.for %slice_idx = %c0 to %num_rows step %c1
    arm_sme.store_tile_slice %tile, %slice_idx, %num_cols, %dest[%slice_idx, %c0]
      : memref<?x?xi32>, vector<[4]xi1>, vector<[4]x[4]xi32>
2023-11-06 11:18:57 +00:00
Vlad Serebrennikov
b178cec84f [clang][NFC] Annotate most of clang/Basic headers with preferred_type
This patch doesn't touch `CodeGenOptions.h`, `DiagnosticOptions.h`, `LangOptions.h`, `IdentifierTable.h`.
2023-11-06 14:18:26 +03:00
Yingwei Zheng
6f1d3b97c7
[ConstantRange] Handle Intrinsic::cttz (#67917)
This patch adds support for `Intrinsic::cttz` in ConstantRange. It
calculates the range in O(1) with the LCP-based method.

Migrated from https://reviews.llvm.org/D153505.
2023-11-06 19:17:39 +08:00
Michael Buch
333124cfd6 Revert "[clang][DebugInfo] Emit global variable definitions for static data members with constant initializers (#70639)"
This reverts commit 4909814c08fdf4ec8bd9dad4f157d03de7c3c800.

Following LLDB patch had to be reverted due to Linux test failures:
```
ef3febadf606c2fc4f1ad8d85a7ecdde16e4cbb3
```

Since without that LLDB patch the LLDB tests would fail, revert
this clang patch for now.
2023-11-06 10:58:02 +00:00
Michael Buch
5f86b49146 Revert "[lldb][DWARFASTParserClang] Fetch constant value from variable defintion if available (#71004)"
This reverts commit ef3febadf606c2fc4f1ad8d85a7ecdde16e4cbb3.

This caused an LLDB test failure on Linux for `lang/cpp/symbols/TestSymbols.test_dwo`:

```
make: Leaving directory '/home/worker/2.0.1/lldb-x86_64-debian/build/lldb-test-build.noindex/lang/cpp/symbols/TestSymbols.test_dwo'
runCmd: expression -- D::i
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	HandleCommand(command = "expression -- D::i")
1.	<user expression 0>:1:4: current parser token 'i'
2.	<lldb wrapper prefix>:44:1: parsing function body '$__lldb_expr'
3.	<lldb wrapper prefix>:44:1: in compound statement ('{}')
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  _lldb.cpython-39-x86_64-linux-gnu.so 0x00007fbcfcb08b87
1  _lldb.cpython-39-x86_64-linux-gnu.so 0x00007fbcfcb067ae
2  _lldb.cpython-39-x86_64-linux-gnu.so 0x00007fbcfcb0923f
3  libpthread.so.0                      0x00007fbd07ab7140
```

And a failure in `TestCallStdStringFunction.py` on Linux aarch64:
```
--
Exit Code: -11

Command Output (stdout):
--
lldb version 18.0.0git (https://github.com/llvm/llvm-project.git revision ef3febadf606c2fc4f1ad8d85a7ecdde16e4cbb3)
  clang revision ef3febadf606c2fc4f1ad8d85a7ecdde16e4cbb3
  llvm revision ef3febadf606c2fc4f1ad8d85a7ecdde16e4cbb3

--
Command Output (stderr):
--
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      HandleCommand(command = "expression str")
1.      <lldb wrapper prefix>:45:34: current parser token ';'
2.      <lldb wrapper prefix>:44:1: parsing function body '$__lldb_expr'
3.      <lldb wrapper prefix>:44:1: in compound statement ('{}')
  #0 0x0000ffffb72a149c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lib/python3.8/site-packages/lldb/_[lldb.cpython-38-aarch64-linux-gnu.so](http://lldb.cpython-38-aarch64-linux-gnu.so/)+0x58c749c)
  #1 0x0000ffffb729f458 llvm::sys::RunSignalHandlers() (/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lib/python3.8/site-packages/lldb/_[lldb.cpython-38-aarch64-linux-gnu.so](http://lldb.cpython-38-aarch64-linux-gnu.so/)+0x58c5458)
  #2 0x0000ffffb72a1bd0 SignalHandler(int) (/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lib/python3.8/site-packages/lldb/_[lldb.cpython-38-aarch64-linux-gnu.so](http://lldb.cpython-38-aarch64-linux-gnu.so/)+0x58c7bd0)
  #3 0x0000ffffbdd9e7dc (linux-vdso.so.1+0x7dc)
  #4 0x0000ffffb71799d8 lldb_private::plugin::dwarf::SymbolFileDWARF::FindGlobalVariables(lldb_private::ConstString, lldb_private::CompilerDeclContext const&, unsigned int, lldb_private::VariableList&) (/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lib/python3.8/site-packages/lldb/_[lldb.cpython-38-aarch64-linux-gnu.so](http://lldb.cpython-38-aarch64-linux-gnu.so/)+0x579f9d8)
  #5 0x0000ffffb7197508 DWARFASTParserClang::FindConstantOnVariableDefinition(lldb_private::plugin::dwarf::DWARFDIE) (/home/tcwg-buildbot/worker/lldb-aarch64-ubuntu/build/lib/python3.8/site-packages/lldb/_[lldb.cpython-38-aarch64-linux-gnu.so](http://lldb.cpython-38-aarch64-linux-gnu.so/)+0x57bd508)
```
2023-11-06 10:56:49 +00:00
Michael Buch
947a32aed8 Revert "[lldb][test] Add FindGlobalVariables tests for C++ inline static data members (#70641)"
This reverts commit 934c573b7d24327fafea916a1d0e9a9fc88f87ab.

We had to revert dependencies of this patch due to test failures
on Linux:
```
4909814c08fdf4ec8bd9dad4f157d03de7c3c800
ef3febadf606c2fc4f1ad8d85a7ecdde16e4cbb3
```
2023-11-06 10:55:27 +00:00
Dominik Adamski
2cce0f6c57
[OpenMP][OMPIRBuilder] Add support to omp target parallel (#67000)
Added support for LLVM IR code generation which is used for handling omp
target parallel code. The call for __kmpc_parallel_51 is generated and
the parallel region is outlined to separate function.

The proper setup of kmpc_target_init mode is not included in the commit.
It is assumed that the SPMD mode for target initialization is properly
set by other codegen functions.
2023-11-06 11:44:00 +01:00
Vlad Serebrennikov
1a0e743ab0 [clang][NFC] Annotate clang/Frontend headers with preferred_type 2023-11-06 13:38:12 +03:00
Florian Hahn
8fb2113eb4
[AArch64] Preserve undef on registers when expanding CALL_RVMARKER. (#71177)
Preserve the undef flag on register operands when expanding
CALL_RVMARKER. This fixes a crash when the x0 operand is undef, e.g.
because it was poison in the input IR.

Fixes https://github.com/llvm/llvm-project/issues/68005.
2023-11-06 10:37:39 +00:00
David Spickett
93b8f5695b [llvm][TableGen] Fix value description made by OptRSTEmitter
When this was ported to clang-tblen for https://reviews.llvm.org/D123682,
some of the refactoring for the clang copy was backported to llvm,
but used .front instead of .back as clang does.

This means that if you have values "a, b, c" you get
"must be 'a', ' b' or 'a'." instead of "must be 'a', ' b' or 'c'.".
2023-11-06 10:35:38 +00:00
Michael Buch
ef3febadf6
[lldb][DWARFASTParserClang] Fetch constant value from variable defintion if available (#71004)
https://github.com/llvm/llvm-project/pull/70639 proposes moving the
`DW_AT_const_value` on inline static members from the declaration DIE to
the definition DIE. This patch makes sure the LLDB's expression
evaluator can continue to support static initialisers even if the
declaration doesn't have a `DW_AT_const_value` anymore.

Previously the expression evaluator would find the constant for a
VarDecl from its declaration `DW_TAG_member` DIE. In cases where the
initialiser was specified out-of-class, LLDB could find it during symbol
resolution.

However, neither of those will work for constants, since we don't have a
constant attribute on the declaration anymore and we don't have
constants in the symbol table.

**Testing**

* If https://github.com/llvm/llvm-project/pull/70639 were to land
without this patch then most of the `TestConstStaticIntegralMember.py`
would start failing
2023-11-06 10:24:05 +00:00
Michael Buch
934c573b7d
[lldb][test] Add FindGlobalVariables tests for C++ inline static data members (#70641)
Tests that LLDB can find inline static data members.

Relies on the debug-info change in:
https://github.com/llvm/llvm-project/pull/70639
2023-11-06 10:23:47 +00:00
Michael Buch
4909814c08
[clang][DebugInfo] Emit global variable definitions for static data members with constant initializers (#70639)
When an LLDB user asks for the value of a static data member, LLDB
starts by
searching the Names accelerator table for the corresponding variable
definition
DIE. For static data members with out-of-class definitions that works
fine,
because those get represented as global variables with a location and
making them
eligible to be added to the Names table. However, in-class definitions
won’t get
indexed because we usually don't emit global variables for them. So in
DWARF
we end up with a single `DW_TAG_member` that usually holds the constant
initializer.
But we don't get a corresponding CU-level `DW_TAG_variable` like we do
for
out-of-class definitions.

To make it more convenient for debuggers to get to the value of inline
static data members,
this patch makes sure we emit definitions for static variables with
constant initializers
the same way we do for other static variables. This also aligns Clang
closer to GCC, which
produces CU-level definitions for inline statics and also emits these
into `.debug_pubnames`.

The implementation keeps track of newly created static data members.
Then in
`CGDebugInfo::finalize`, we emit a global `DW_TAG_variable` with a
`DW_AT_const_value` for
any of those declarations that didn't end up with a definition in the
`DeclCache`.

The newly emitted `DW_TAG_variable` will look as follows:
```
0x0000007b:   DW_TAG_structure_type
                DW_AT_calling_convention        (DW_CC_pass_by_value)
                DW_AT_name      ("Foo")
                ...

0x0000008d:     DW_TAG_member
                  DW_AT_name    ("i")
                  DW_AT_type    (0x00000062 "const int")
                  DW_AT_external        (true)
                  DW_AT_declaration     (true)
                  DW_AT_const_value     (4)

Newly added
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

0x0000009a:   DW_TAG_variable
                DW_AT_specification     (0x0000008d "i")
                DW_AT_const_value       (4)
                DW_AT_linkage_name      ("_ZN2t2IiE1iIfEE")
```

This patch also drops the `DW_AT_const_value` off of the declaration since we now always have it on the definition. This ensures that the `DWARFParallelLinker` can type-merge class with static members where we couldn't attach the constant on the declaration in some CUs.
2023-11-06 10:23:26 +00:00
Oleg Shyshkov
72ad6cd29c [mlir][bazel] Fix build. 2023-11-06 10:50:56 +01:00
Vlad Serebrennikov
58679ea576 [clang][NFC] Annotate clang/Lex headers with preferred_type
This helps debuggers display unsigned bit-fields correctly.
2023-11-06 12:34:10 +03:00
Michael Buch
aa8a0c0e7b
[clang][DebugInfo][NFC] Add createConstantValueExpression helper (#70674)
This patch factors out the code to create a DIExpression from an APValue
into a separate helper function.

This will be useful in a follow-up patch where we re-use this logic
elsewhere.

Pre-requisite for https://github.com/llvm/llvm-project/pull/70639
2023-11-06 09:22:20 +00:00
David Spickett
a4fbe31f9e
[mlir][docs] Add link to Visual Studio Code extension (#71190)
The document talks a lot about it but never says explicitly that it
comes from the marketplace. At first I thought I had to install it
locally.
2023-11-06 09:21:07 +00:00
Dan Zimmerman
0807846a9e
[objcopy] Implement --weaken, --weaken-symbol(s) flags for Mach-O Object Files (#70560)
This PR implements --weaken, --weaken-symbol(s)  flags in llvm-objcopy for Mach-O.

Test plan: ninja check-all
2023-11-06 01:20:52 -08:00
Vlad Serebrennikov
ad27848209 [clang][NFC] Annotate Decl.h with preferred_type 2023-11-06 12:17:53 +03:00
Vlad Serebrennikov
dda8e3de35 [clang][NFC] Refactor ImplicitParamDecl::ImplicitParamKind
This patch converts `ImplicitParamDecl::ImplicitParamKind` into a scoped enum at namespace scope, making it eligible for forward declaring. This is useful for `preferred_type` annotations on bit-fields.
2023-11-06 12:01:09 +03:00
Nico Weber
3f69b0a903 [gn] port cf7d4f543c73 2023-11-06 09:54:59 +01:00
Petr Hosek
71a43897d4 [CMake][Fuchsia] Set the runtimes for the second stage
This is a temporary workaround until we figure out the right solution.
2023-11-06 08:32:59 +00:00
Vlad Serebrennikov
a0029a8a76 [clang][NFC] Annotate Sema.h with preferred_type 2023-11-06 11:03:23 +03:00
Yingwei Zheng
b6deea1b53
[ConstantRange] Handle Intrinsic::ctpop (#68310)
This patch adds support for `Intrinsic::ctpop` in ConstantRange. It
calculates the range in O(1) with the LCP-based method.

Migrated from https://reviews.llvm.org/D153505.
2023-11-06 15:59:50 +08:00
Vlad Serebrennikov
a07dbf1fb0 [clang][NFC] Annotate PrettyPrinter.h with preferred_type 2023-11-06 10:58:27 +03:00
Vlad Serebrennikov
c032225bfc [clang][NFC] Annotate RawCommentList.h with preferred_type 2023-11-06 10:43:53 +03:00
Vlad Serebrennikov
acb714c101 [clang][NFC] Annotate DeclTemplate.h with preferred_type 2023-11-06 10:35:53 +03:00
Vlad Serebrennikov
f1fdbcba5f [clang]]NFC] Annotate DeclObjC.h with preferred_type 2023-11-06 10:28:58 +03:00
Vlad Serebrennikov
13023ed1d6 [clang][NFC] Annotate DeclFriend.h with preferred_type 2023-11-06 10:18:30 +03:00
Vlad Serebrennikov
61d17b1168 [clang][NFC] Annotate DeclCXX.h with preferred_type 2023-11-06 10:14:49 +03:00
serge-sans-paille
95dd178483
[clang] Change representation of CurLexerKind (#70381)
Previous representation used an enumeration combined to a switch to
dispatch to the appropriate lexer.

Use function pointer so that the dispatching is just an indirect call,
which is actually better because lexing is a costly task compared to a
function call.

This also makes the code slightly cleaner, speedup on compile time
tracker are consistent and range form -0.05% to -0.20% for NewPM-O0-g,
see


https://llvm-compile-time-tracker.com/compare.php?from=f9906508bc4f05d3950e2219b4c56f6c078a61ef&to=608c85ec1283638db949d73e062bcc3355001ce4&stat=instructions:u

Considering just the preprocessing task, preprocessing the sqlite
amalgametion takes -0.6% instructions (according to valgrind
--tool=callgrind)

---------

Co-authored-by: serge-sans-paille <sguelton@mozilla.com>
Co-authored-by: cor3ntin <corentinjabot@gmail.com>
2023-11-06 07:13:05 +00:00
Vlad Serebrennikov
a5d2570861 [clang][NFC] Annotate `DependentDiagnostic.h with preferred_type 2023-11-06 10:04:21 +03:00
Craig Topper
8a417b7b7e [X86] Fix typo in comment in X86FixupLEAs. NFC 2023-11-05 23:04:07 -08:00
Vlad Serebrennikov
421d6ccc4c [clang][NFC] Annotate CXXInheritance.h with preferred_type 2023-11-06 10:00:42 +03:00
Vlad Serebrennikov
24faf3b0b8 [clang][NFC] Annotate Attr.h with preferred_type 2023-11-06 09:58:02 +03:00
Brad Smith
1881832994
[Driver][LTO] Copy fix empty stats filename to AVR, FreeBSD, Fuchsia (#71359)
Copy 85451f486d8144f8aacd94a47802c77da5a04d27 over to AVR, FreeBSD and
Fuchsia.
2023-11-06 01:56:27 -05:00
Vlad Serebrennikov
17db462810 [clang][NFC] Annotate TemplateBase.h with preferred_type 2023-11-06 09:46:41 +03:00
Heejin Ahn
d859403037
[sanitizer] Fix pthread_exit interceptor's return type (#71253)
`pthread_exit`'s return type is void.
2023-11-05 22:41:37 -08:00
Craig Topper
90f768440d
[VP][RISCV] Add llvm.experimental.vp.reverse. (#70405)
This is similar to vector.reverse, but only reverses the first EVL
elements.

I extracted this code from our downstream. Some of it may have come from
https://repo.hca.bsc.es/gitlab/rferrer/llvm-epi/ originally.
2023-11-05 22:39:27 -08:00