platform/upstream/llvm.git
20 months ago[CMake] Only set LLVM_DEFAULT_TARGET_TRIPLE to LLVM_HOST_TRIPLE when native target...
Xiang Li [Fri, 4 Nov 2022 19:37:07 +0000 (12:37 -0700)]
[CMake] Only set LLVM_DEFAULT_TARGET_TRIPLE to LLVM_HOST_TRIPLE when native target is enabled

This is for case when native target like X86 is not in LLVM_TARGETS_TO_BUILD.
Right now LLVM_DEFAULT_TARGET_TRIPLE is set to LLVM_HOST_TRIPLE even when native target is not enabled,
As a result, many lit tests will fail because default_triple is set for lit test but not enabled when build LLVM.

Reviewed By: smeenai

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

20 months agoRevert "Implement CWG2631"
Corentin Jabot [Fri, 4 Nov 2022 21:09:58 +0000 (22:09 +0100)]
Revert "Implement CWG2631"

This reverts commit 7acfe3629479c8489fc2d7f629994dc200be990c.
This reverts commit 5f87a892a7bed9cb0599573b9aaf387bc1df9c14.
This reverts commit 6875ac69279a3a02fab382a2c8d121558ecbfa91.

20 months ago[mlir][tiling] Relax tiling to accept generating multiple operations.
Hanhan Wang [Fri, 4 Nov 2022 20:58:59 +0000 (13:58 -0700)]
[mlir][tiling] Relax tiling to accept generating multiple operations.

Some operations need to generate multiple operations when implementing
the tiling interface. Here is a sound example in IREE, see
https://github.com/iree-org/iree/pull/10905 for more details.

Reviewed By: mravishankar

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

20 months agoAlias Analysis infra in Flang
Renaud-K [Wed, 2 Nov 2022 22:39:58 +0000 (15:39 -0700)]
Alias Analysis infra in Flang

Differential revision: https://reviews.llvm.org/D136889

20 months ago[BOLT] Always move JTs in jump-table=move
Rafael Auler [Sat, 29 Oct 2022 01:34:48 +0000 (18:34 -0700)]
[BOLT] Always move JTs in jump-table=move

We should always move jump tables when requested. Previously,
we were not moving jump tables of non-simple functions in relocation
mode. That caused a bug detailed in the attached test case: in PIC
jump tables, we force jump tables to be moved, but if they are not
moved because the function is not simple, we could incorrectly update
original entries in .rodata, corrupting it under special circumstances
(see testcase).

Reviewed By: #bolt, maksfb

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

20 months ago[BOLT][Hugify] Fix apple builds
Rafael Auler [Fri, 4 Nov 2022 20:08:31 +0000 (13:08 -0700)]
[BOLT][Hugify] Fix apple builds

Fix placement of ifdefs in hugify.cpp after D129107 landed.

20 months agoSome uses of the preprocessor can result in multiple target regions on the
Mike Rice [Thu, 3 Nov 2022 15:50:08 +0000 (08:50 -0700)]
Some uses of the preprocessor can result in multiple target regions on the
same line. Cases such as those in the associated lit tests, can now be
supported.

This adds a 'Count' field to TargetRegionEntryInfo to differentiate
regions with the same source position.

The OffloadEntriesInfoManager routines are updated to maintain a count of
regions seen at a location. The registration of regions proceeds that same as
before, but now the next available count is always determined and used in the
offload entry.

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

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

20 months ago[mlir] Move the assertion to a valid place.
Hanhan Wang [Thu, 3 Nov 2022 01:09:46 +0000 (18:09 -0700)]
[mlir] Move the assertion to a valid place.

The defining Op may live in an unlinked block so its parent Op may be
null. Only assert it when the parent Op is not null.

Reviewed By: mravishankar

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

20 months ago[mlir][arith][spirv] Remove duplicate test cases
Jakub Kuderski [Fri, 4 Nov 2022 19:10:58 +0000 (15:10 -0400)]
[mlir][arith][spirv] Remove duplicate test cases

Reviewed By: antiagainst

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

20 months ago[mlir][spirv] Do not truncate i/f64 -> i/f32 in SPIRVConversion
Jakub Kuderski [Fri, 4 Nov 2022 19:10:18 +0000 (15:10 -0400)]
[mlir][spirv] Do not truncate i/f64 -> i/f32 in SPIRVConversion

This truncation can be unexpected and break program behavior.
Dedicated emulation passes should be used instead.

Also rename pass options to "emulate-lt-32-bit-scalar-types".

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

Reviewed By: antiagainst

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

20 months ago[IndVars] Forget SCEV for replaced PHI.
Florian Hahn [Fri, 4 Nov 2022 18:42:06 +0000 (18:42 +0000)]
[IndVars] Forget SCEV for replaced PHI.

Additional SCEV verification highlighted a case where the cached loop
dispositions where incorrect after simplifying a phi node in IndVars.
Fix it by invalidating the phi before replacing it.

Fixes #58750

20 months ago[LLVM][AMDGPU] Specialize 32-bit atomic fadd instruction for generic address space
Shilei Tian [Fri, 4 Nov 2022 18:10:54 +0000 (14:10 -0400)]
[LLVM][AMDGPU] Specialize 32-bit atomic fadd instruction for generic address space

The 32-bit floating-point atomic add instructions on AMDGPUs does not support a
"flat" or "generic" address space. So, if the address space cannot be determined
statically, the AMDGPU backend will fall back to a CAS loop (which does support
"flat" addressing). Instead, this patch emits runtime address-space checks to
allow native FP atomic add instructions for global and LDS memory (and non-atomic
FP add instructions for private/scratch memory).

In order to do that, this patch introduces a new interface function
`emitExpandAtomicRMW`. It is expected to be called when a common atomic expand
doesn't work for a specific target, such as the case we discussed here.

Reviewed By: arsenm

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

20 months ago[bazel] Port 589764a38264
Benjamin Kramer [Fri, 4 Nov 2022 18:06:44 +0000 (19:06 +0100)]
[bazel] Port 589764a38264

20 months agoFix format specifier warning in EmulateInstructionRISCV more
Benjamin Kramer [Fri, 4 Nov 2022 17:58:43 +0000 (18:58 +0100)]
Fix format specifier warning in EmulateInstructionRISCV more

Yes, the portable macro is still the only way to do this.

20 months ago[mlir][math] Simplify pow(x, 0.75) into sqrt(sqrt(x)) * sqrt(x).
Slava Zakharin [Wed, 2 Nov 2022 01:27:04 +0000 (18:27 -0700)]
[mlir][math] Simplify pow(x, 0.75) into sqrt(sqrt(x)) * sqrt(x).

Trivial simplification for CPU2017/503.bwaves resulting in 3.89%
speed-up on icelake.

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

20 months ago[lldb] Fix format specifier warning in EmulateInstructionRISCV
Jonas Devlieghere [Fri, 4 Nov 2022 17:46:21 +0000 (10:46 -0700)]
[lldb] Fix format specifier warning in EmulateInstructionRISCV

Fixes warning: format specifies type 'unsigned long' but the argument
has type 'lldb::addr_t' (aka 'unsigned long long') [-Wformat]

20 months ago[mlir][math] Initial support for fastmath flag attributes for Math dialect.
Slava Zakharin [Fri, 4 Nov 2022 16:52:47 +0000 (09:52 -0700)]
[mlir][math] Initial support for fastmath flag attributes for Math dialect.

Added arith::FastMathAttr and ArithFastMathInterface support for Math dialect
floating point operations.

This change-set creates ArithCommon conversion utils that currently
provide classes and methods to aid with arith::FastMathAttr conversion
into LLVM::FastmathFlags. These utils are used in ArithToLLVM and
MathToLLVM convertors, but may eventually be used by other converters
that need to convert fast math attributes.

Since Math dialect operations use arith::FastMathAttr, MathOps.td now
has to include enum and attributes definitions from Arith dialect.
To minimize the amount of TD code included from Arith dialect,
I moved FastMathAttr definition into ArithBase.td.

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

20 months ago[flang] add -f[no-]reciprocal-math
Tom Eccles [Wed, 19 Oct 2022 10:51:31 +0000 (10:51 +0000)]
[flang] add -f[no-]reciprocal-math

Only add the option processing and store the result. No attributes are
added to FIR yet.

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

20 months ago[flang] Add -f[no-]associative-math and -mreassociate
Tom Eccles [Wed, 19 Oct 2022 10:33:12 +0000 (10:33 +0000)]
[flang] Add -f[no-]associative-math and -mreassociate

Only add the option processing and store the result. No attributes are
added to FIR yet.

Clang only forwards -mreassociate
if (AssociativeMath && !SignedZeros && !TrappingMath)

Flang doesn't have -f[no-]trapping-math, so this part of the condition
has been omitted. !TrappingMath is the default.

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

20 months ago[flang] Add -f[no-]signed-zeros
Tom Eccles [Tue, 18 Oct 2022 17:59:03 +0000 (17:59 +0000)]
[flang] Add -f[no-]signed-zeros

Only add the option processing and store the result. No attributes are
added to FIR yet.

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

20 months ago[flang] Add -f[no-]approx-func
Tom Eccles [Tue, 18 Oct 2022 16:14:52 +0000 (16:14 +0000)]
[flang] Add -f[no-]approx-func

Only add the option processing and store the result. No attributes are
added to FIR yet.

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

20 months ago[flang] Add -f[no-]honor-nans and -menable-no-nans
Tom Eccles [Mon, 17 Oct 2022 17:45:15 +0000 (17:45 +0000)]
[flang] Add -f[no-]honor-nans and -menable-no-nans

Only add the option processing and store the result. No attributes are
added to FIR yet.

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

20 months ago[Test] Fix CHECK typo.
Zequan Wu [Wed, 2 Nov 2022 21:25:48 +0000 (14:25 -0700)]
[Test] Fix CHECK typo.

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

20 months ago[RISCV] Define custom-N opcodes
Philip Reames [Fri, 4 Nov 2022 16:59:40 +0000 (09:59 -0700)]
[RISCV] Define custom-N opcodes

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

20 months ago[mlir][Transform] NFC - Add custom builders for some useful transforms.
Nicolas Vasilache [Thu, 3 Nov 2022 22:09:48 +0000 (15:09 -0700)]
[mlir][Transform] NFC - Add custom builders for some useful transforms.

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

20 months ago[RFC][OpenMP][Doc] No backward compatible for libomptarget and plugins
Shilei Tian [Fri, 4 Nov 2022 16:40:45 +0000 (12:40 -0400)]
[RFC][OpenMP][Doc] No backward compatible for libomptarget and plugins

Now we state that backward compatibility is not guaranteed in the document.

Reviewed By: JonChesterfield, dreachem

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

20 months ago[mlir][linalg] Fix neutral element value for minf/maxf
Thomas Raoux [Fri, 4 Nov 2022 04:23:32 +0000 (04:23 +0000)]
[mlir][linalg] Fix neutral element value for minf/maxf

The neutral element got minf/maxf should be respectively +inf and -inf.

Bug reported by @Hardcode84.

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

20 months ago[Driver][AIX] Change UNSUPPORTED to XFAIL system-aix
Hubert Tong [Fri, 4 Nov 2022 16:26:53 +0000 (12:26 -0400)]
[Driver][AIX] Change UNSUPPORTED to XFAIL system-aix

Update https://reviews.llvm.org/rGc14df228ff3c to check the host versus
the target thereby allowing XFAIL to be used in case the issue is
resolved in the future.

20 months ago[mlir][python] Allow adding to existing pass manager
rkayaith [Thu, 20 Oct 2022 04:27:09 +0000 (00:27 -0400)]
[mlir][python] Allow adding to existing pass manager

This adds a `PassManager.add` method which adds pipeline elements to the
pass manager. This allows for progressively building up a pipeline from
python without string manipulation.

Reviewed By: mehdi_amini

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

20 months ago[LVI] Improve debug message (NFC)
Nikita Popov [Fri, 4 Nov 2022 15:57:42 +0000 (16:57 +0100)]
[LVI] Improve debug message (NFC)

20 months ago[libc++] inline more functions into basic_string
Nikolas Klauser [Sat, 29 Oct 2022 19:04:35 +0000 (21:04 +0200)]
[libc++] inline more functions into basic_string

This removes a lot of boilerplate.

Reviewed By: ldionne, #libc, EricWF

Spies: EricWF, libcxx-commits

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

20 months agoPrecommit test for redundant mvn instructions
Benjamin Maxwell [Fri, 4 Nov 2022 11:52:38 +0000 (11:52 +0000)]
Precommit test for redundant mvn instructions

20 months ago[clang] Remove an incorrect assert
Corentin Jabot [Fri, 4 Nov 2022 14:45:06 +0000 (15:45 +0100)]
[clang]  Remove an incorrect assert

Compound statements can appear in default arguments
but should not be visited in ImmediateCallVisitor as they are
not subexpressions

20 months ago[LV][IVDescriptors] Fix recurrence identity element for FMin and FMax reductions
Karthik Senthil [Fri, 4 Nov 2022 14:33:45 +0000 (10:33 -0400)]
[LV][IVDescriptors] Fix recurrence identity element for FMin and FMax reductions

For a min and max reduction idioms, the identity (i.e. neutral) element
should be datatype's highest and lowest possible values respectively.
Current implementation in IVDescriptors incorrectly returns -Inf for FMin
reduction and +Inf for FMax reduction. This patch fixes this bug which
was causing incorrect reduction computation results in loops vectorized
by LV.

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

20 months ago[VectorCombine] move load safety checks to helper function; NFC
Sanjay Patel [Wed, 2 Nov 2022 21:10:20 +0000 (17:10 -0400)]
[VectorCombine] move load safety checks to helper function; NFC

These checks can be re-used with other potential transforms
such as a load of a subvector-insert.

20 months ago[clang] Fix assert in SemaEXpr.cpp
Corentin Jabot [Fri, 4 Nov 2022 14:37:18 +0000 (15:37 +0100)]
[clang] Fix assert in SemaEXpr.cpp

20 months ago[flang][RFC] Proposal for complex number lowering through MLIR
David Truby [Tue, 1 Nov 2022 14:12:14 +0000 (14:12 +0000)]
[flang][RFC] Proposal for complex number lowering through MLIR

This design document proposes lowering FIR complex number operations
through the MLIR complex dialect.

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

20 months ago[flang][RFC] Change the interface for non-BIND(C) CPTR type with VALUE attribute
Peixin Qiao [Fri, 4 Nov 2022 14:19:38 +0000 (22:19 +0800)]
[flang][RFC] Change the interface for non-BIND(C) CPTR type with VALUE attribute

When the `type(c_ptr/c_funptr)` argument has value attribute in non-BIND(C)
procedure, it is passed by VALUE in gfortran. ifort does not do this. Be
consistent with gfortran.

Fix #58756.

Reviewed By: PeteSteinfeld, jeanPerier

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

20 months ago[flang] Fix function result rewrite
Peixin Qiao [Fri, 4 Nov 2022 14:15:58 +0000 (22:15 +0800)]
[flang] Fix function result rewrite

When the function result is `type(c_ptr/c_funptr)`, and the function has
or does not have BIND(C) attribute, the function result is not taken as
the first argument of the function call in other compilers such as
gfortran and ifort. Fix it to be consistent with gfortran/ifort by
changing the abstract result type check.

Fix #58739.

Reviewed By: PeteSteinfeld, jeanPerier

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

20 months ago[flang] Update fir.select_type op to fit design document
Valentin Clement [Fri, 4 Nov 2022 13:59:37 +0000 (14:59 +0100)]
[flang] Update fir.select_type op to fit design document

Update the already existing fir.select_type operation to
reflect decisions made in the polymorphic entities design document.
The verifier is updated to check that the select is polymorphic.
The case attributes name are changed and some tests are added.

Reviewed By: jeanPerier

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

20 months agoImplement CWG2631
Corentin Jabot [Sun, 23 Oct 2022 15:32:58 +0000 (17:32 +0200)]
Implement CWG2631

Implement https://cplusplus.github.io/CWG/issues/2631.html.

Immediate calls in default arguments and defaults members
are not evaluated.

Instead, we evaluate them when constructing a
`CXXDefaultArgExpr`/`BuildCXXDefaultInitExpr`.

The immediate calls are executed by doing a
transform on the initializing expression.

Note that lambdas are not considering subexpressions so
we do not need to transform them.

As a result of this patch, unused default member
initializers are not considered odr-used, and
errors about members binding to local variables
in an outer scope only surface at the point
where a constructor is defined.

Reviewed By: aaron.ballman, #clang-language-wg

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

20 months ago[StructurizeCFG][DebugInfo] Avoid use-after-free
Juan Manuel MARTINEZ CAAMAÑO [Fri, 4 Nov 2022 13:28:26 +0000 (13:28 +0000)]
[StructurizeCFG][DebugInfo] Avoid use-after-free

Reviewed By: dstuttard

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

20 months ago[GVN] Patch for invalid GVN replacement
Alex Gatea [Fri, 4 Nov 2022 13:28:17 +0000 (14:28 +0100)]
[GVN] Patch for invalid GVN replacement

If PRE is performed as part of the main GVN pass (to PRE GEP
operands before processing loads), and it is performed across a
backedge, we will end up adding the new instruction to the leader
table of a block that has not yet been processed. When it will be
processed, GVN will incorrectly assume that the value is already
available, even though it is only available at the end of the
block.

Avoid this by not performing PRE across backedges.

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

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

20 months agoadds huge pages support of PIE/no-PIE binaries
Alexey Moksyakov [Mon, 27 Jun 2022 12:37:53 +0000 (12:37 +0000)]
adds huge pages support of PIE/no-PIE binaries

This patch adds the huge pages support (-hugify) for PIE/no-PIE
binaries. Also returned functionality to support the kernels < 5.10
where there is a problem in a dynamic loader with the alignment of
pages addresses.

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

20 months ago[llvm-debuginfo-analyzer] Fix format string-type mismatch in LVScope
Michał Górny [Fri, 4 Nov 2022 08:19:22 +0000 (09:19 +0100)]
[llvm-debuginfo-analyzer] Fix format string-type mismatch in LVScope

Fix mismatch between `%d`/`%x` format strings and `uint64_t` type.
This fixes incorrect printing of "Scope Sizes" on 32-bit platforms
where this leads to `llvm::print()` misreading vararg.

Fixes #58758

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

20 months ago[Driver] Do not run test on AIX
Serge Pavlov [Fri, 4 Nov 2022 11:30:17 +0000 (18:30 +0700)]
[Driver] Do not run test on AIX

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

20 months ago[mlir][linalg] Add BroadcastOp to Linalg structured ops.
Oleg Shyshkov [Fri, 4 Nov 2022 11:06:31 +0000 (12:06 +0100)]
[mlir][linalg] Add BroadcastOp to Linalg structured ops.

[[RFC] Primitive Ops: add BroadcastOp to Linalg](https://discourse.llvm.org/t/rfc-primitive-ops-add-broadcastop-to-linalg/66313?u=olegshyshkov)

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

20 months ago[AMDGPU] Skip stack-arg dbg objects while fixing the dead frame indices
Christudasan Devadasan [Wed, 2 Nov 2022 13:38:02 +0000 (19:08 +0530)]
[AMDGPU] Skip stack-arg dbg objects while fixing the dead frame indices

Both SGPR->VGPR and VGPR->AGPR spilling code give a fixup to the
spill frame indices referred in debug instructions so that they
can be entirely removed. We should skip the stack argument debug
objects while looking inside the bitvector with FI as the index
that tracks the spill indices being processed. The stack args will
have negative indices and would crash while accessing the bitvector.

Reviewed By: arsenm

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

20 months ago[LoongArch] Change the name of LoongArchPreRAExpandPseudo pass
wanglei [Fri, 4 Nov 2022 09:50:31 +0000 (17:50 +0800)]
[LoongArch] Change the name of LoongArchPreRAExpandPseudo pass

By convention, pass names use lowercase letters.
LoongArch-prera-expand-pseudo -> loongarch-prera-expand-pseudo.

Reviewed By: SixWeining

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

20 months ago[IR] Switch everything to use memory attribute
Nikita Popov [Wed, 2 Nov 2022 15:46:56 +0000 (16:46 +0100)]
[IR] Switch everything to use memory attribute

This switches everything to use the memory attribute proposed in
https://discourse.llvm.org/t/rfc-unify-memory-effect-attributes/65579.
The old argmemonly, inaccessiblememonly and inaccessiblemem_or_argmemonly
attributes are dropped. The readnone, readonly and writeonly attributes
are restricted to parameters only.

The old attributes are auto-upgraded both in bitcode and IR.
The bitcode upgrade is a policy requirement that has to be retained
indefinitely. The IR upgrade is mainly there so it's not necessary
to update all tests using memory attributes in this patch, which
is already large enough. We could drop that part after migrating
tests, or retain it longer term, to make it easier to import IR
from older LLVM versions.

High-level Function/CallBase APIs like doesNotAccessMemory() or
setDoesNotAccessMemory() are mapped transparently to the memory
attribute. Code that directly manipulates attributes (e.g. via
AttributeList) on the other hand needs to switch to working with
the memory attribute instead.

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

20 months ago[AArch64] SME2 multi-vec unpack, ZIP, frint for two and four registers
Caroline Concatto [Wed, 2 Nov 2022 09:35:43 +0000 (09:35 +0000)]
[AArch64] SME2 multi-vec unpack, ZIP, frint for  two and four registers

This patch adds the assembly/disassembly for the following instructions:
  SUNPK: Unpack and sign-extend multi-vector elements.
  UUNPK: Unpack and zero-extend multi-vector elements.
  ZIP (four registers): Interleave elements from four vectors.
  ZIP (two registers): Interleave elements from two vectors.
  FRINTA: Multi-vector floating-point round to integral value, to nearest with ties away from zero.
  FRINTM: Multi-vector floating-point round to integral value, toward minus Infinity.
  FRINTN: Multi-vector floating-point round to integral value, to nearest with ties to even.
  FRINTP: Multi-vector floating-point round to integral value, toward plus Infinity.

The reference can be found here:

https://developer.arm.com/documentation/ddi0602/2022-09

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

20 months ago[AArch64][SVE] Extend PTEST_ANY(X=OP(PG,...), X) -> PTEST_ANY(PG, X)) instcombine
Cullen Rhodes [Fri, 4 Nov 2022 08:40:18 +0000 (08:40 +0000)]
[AArch64][SVE] Extend PTEST_ANY(X=OP(PG,...), X) ->  PTEST_ANY(PG, X)) instcombine

Extend above instcombine added in D134946 to cover more flag-setting
instructions.

Reviewed By: peterwaller-arm

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

20 months ago[X86] Use default attributes for more intrinsics
Nikita Popov [Wed, 2 Nov 2022 10:49:22 +0000 (11:49 +0100)]
[X86] Use default attributes for more intrinsics

Another followup to D136939, adding default attributes to the
remaining readnone intrinsics.

This also covers some non-readnone intrinsics, because they were
interleaved, and it seemed to make more sense to update them at
the same time.

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

20 months ago[libc][NFC] Remove "$>" from another command block on examples/README.md.
Siva Chandra Reddy [Fri, 4 Nov 2022 08:37:05 +0000 (08:37 +0000)]
[libc][NFC] Remove "$>" from another command block on examples/README.md.

20 months ago[libc][NFC] Remove "$>" from recipe commands blocks in examples/README.md.
Siva Chandra Reddy [Fri, 4 Nov 2022 08:33:28 +0000 (08:33 +0000)]
[libc][NFC] Remove "$>" from recipe commands blocks in examples/README.md.

The blocks come with a copy button so removing the "$>" makes it easy to
copy paste the commands.

20 months ago[libc] Add example programs and their CMake build and instructions.
Siva Chandra Reddy [Fri, 28 Oct 2022 23:20:28 +0000 (23:20 +0000)]
[libc] Add example programs and their CMake build and instructions.

These examples are serve as an examples for people wanting to start
using the libc.

Reviewed By: michaelrj, jeffbailey

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

20 months ago[SimplifyCFG] Allow speculating block containing assume()
Nikita Popov [Thu, 3 Nov 2022 13:13:08 +0000 (14:13 +0100)]
[SimplifyCFG] Allow speculating block containing assume()

SpeculativelyExecuteBB(), which converts a branch + phi structure
into a select, currently bails out if the block contains an assume
(because it is not speculatable).

Adjust the fold to ignore ephemeral values (i.e. assumes and values
only used in assumes) for cost modelling purposes, and drop them
when performing the fold.

Theoretically, we could try to preserve the assume information by
generating a assume(br_cond || assume_cond) style assume, but this
is very unlikely to to be useful (because we don't do anything
useful with assumes of this form) and it would make things
substantially more complicated once we take operand bundle assumes
into account (which don't really support a || operation).
I'd prefer not to do that without good motivation.

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

20 months ago[clang-format][NFC] Remove parsePPElIf()
Owen Pan [Wed, 2 Nov 2022 22:23:00 +0000 (15:23 -0700)]
[clang-format][NFC] Remove parsePPElIf()

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

20 months ago[clang][cuda/hip] Allow `__noinline__` lambdas
Pierre van Houtryve [Fri, 4 Nov 2022 07:25:22 +0000 (07:25 +0000)]
[clang][cuda/hip] Allow `__noinline__`  lambdas

D124866 seem to have had an unintended side effect: __noinline__ on lambdas was no longer accepted.

This fixes the regression and adds a test case for it.

Reviewed By: aaron.ballman

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

20 months agoRevert "Implement CWG2631"
Corentin Jabot [Fri, 4 Nov 2022 07:24:52 +0000 (08:24 +0100)]
Revert "Implement CWG2631"

Breaks the build on some platforms.

This reverts commit bf1e235695a7acdc3e868217e69d5b31ada06cb3.

20 months ago[AMDGPU] Create new instructions in SIInstrInfo::moveToVALU
Jay Foad [Mon, 31 Oct 2022 15:10:14 +0000 (15:10 +0000)]
[AMDGPU] Create new instructions in SIInstrInfo::moveToVALU

Create new VALU instructions in moveToVALU instead of mutating the
existing SALU instruction. This makes it easier to add extra operands so
we can convert to the VOP3 form of VALU instructions.

NFCI but it does have the minor side effect of removing duplicate
implicit operands that were present on the original SALU if they are
default implicit operands for the VALU.

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

20 months ago[flang] Handle non derived-type unlimited polymorphic allocation
Valentin Clement [Fri, 4 Nov 2022 07:18:47 +0000 (08:18 +0100)]
[flang] Handle non derived-type unlimited polymorphic allocation

Runtime call to PointerNullifyDerived or AllocatableInitDerived
should only be generated for derived-type allocation of polymorphic entities.
With unlimited polymorphic entities, it is possible that the type spec is not
a derived-type. Avoid failure in that case.

Reviewed By: PeteSteinfeld

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

20 months ago[libc] Add implementation of setbuf and setvbuf.
Siva Chandra Reddy [Wed, 2 Nov 2022 22:38:50 +0000 (22:38 +0000)]
[libc] Add implementation of setbuf and setvbuf.

Reviewed By: michaelrj

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

20 months ago[libc] Convert the api-test in to an integration test.
Siva Chandra Reddy [Fri, 4 Nov 2022 07:07:54 +0000 (07:07 +0000)]
[libc] Convert the api-test in to an integration test.

It used to pass but showed an annoying message about _start not being
available. That will not happen anymore.

20 months ago[RISCV] Add FMV_H_X/FMV_W_X/FCVT_H_W/FCVT_H_WU to isAllUsesReadW in SExtWRemoval.
Craig Topper [Fri, 4 Nov 2022 03:56:47 +0000 (20:56 -0700)]
[RISCV] Add FMV_H_X/FMV_W_X/FCVT_H_W/FCVT_H_WU to isAllUsesReadW in SExtWRemoval.

The instructions only read the lower 16 or 32 bits of a GPR.

20 months ago[RISCV] Change SEXT_B/SEXT_H/ZEXT_H_RV64 handling in isAllUsesReadW in SExtWRemoval.
Craig Topper [Fri, 4 Nov 2022 03:55:41 +0000 (20:55 -0700)]
[RISCV] Change SEXT_B/SEXT_H/ZEXT_H_RV64 handling in isAllUsesReadW in SExtWRemoval.

These instrucitons only use the lower 8 or 16 bits. We don't need
to look across them.

20 months agoImplement CWG2631
Corentin Jabot [Sun, 23 Oct 2022 15:32:58 +0000 (17:32 +0200)]
Implement CWG2631

Implement https://cplusplus.github.io/CWG/issues/2631.html.

Immediate calls in default arguments and defaults members
are not evaluated.

Instead, we evaluate them when constructing a
`CXXDefaultArgExpr`/`BuildCXXDefaultInitExpr`.

The immediate calls are executed by doing a
transform on the initializing expression.

Note that lambdas are not considering subexpressions so
we do not need to transform them.

As a result of this patch, unused default member
initializers are not considered odr-used, and
errors about members binding to local variables
in an outer scope only surface at the point
where a constructor is defined.

Reviewed By: aaron.ballman, #clang-language-wg

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

20 months ago[lldb/Interpreter] Open saved transcript in GUI Editor
Med Ismail Bennani [Tue, 1 Nov 2022 05:14:18 +0000 (22:14 -0700)]
[lldb/Interpreter] Open saved transcript in GUI Editor

This patch will automatically open LLDB's saved transcript file on the
graphical editor if lldb is running under an interactive graphical session.

This can be controlled by a new setting: `interpreter.open-transcript-in-editor`

rdar://92692106

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[ELF] Fix duplicate work typo. NFC
Fangrui Song [Fri, 4 Nov 2022 06:10:19 +0000 (23:10 -0700)]
[ELF] Fix duplicate work typo. NFC

20 months ago[X86][test] Change some CodeGen tests to use %clang_cc1
Fangrui Song [Fri, 4 Nov 2022 05:54:44 +0000 (22:54 -0700)]
[X86][test] Change some CodeGen tests to use %clang_cc1

20 months ago[X86][test] Add -fcf-protection test for pre-pentiumpro
Fangrui Song [Fri, 4 Nov 2022 05:21:43 +0000 (22:21 -0700)]
[X86][test] Add -fcf-protection test for pre-pentiumpro

For #58737

20 months ago[X86][CET] Add Diags for targets pre to i686 for `-fcf-protection`
Phoebe Wang [Fri, 4 Nov 2022 03:21:28 +0000 (11:21 +0800)]
[X86][CET] Add Diags for targets pre to i686 for `-fcf-protection`

Intel Control-flow Enforcement Technology (CET) provides new instructions `endbr32/64` for the indirect branch control. They are NOPs on i686 and new targets. We need to check for that in case it crashes on older targets.

Fixes #58737

Reviewed By: nickdesaulniers

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

20 months ago[LoopInterchange] Check phis in all subloops
Congzhe Cao [Fri, 4 Nov 2022 04:07:42 +0000 (00:07 -0400)]
[LoopInterchange] Check phis in all subloops

This is the bugfix to the miscompile mentioned in
https://reviews.llvm.org/D132055#3814831. The IR
that reproduced the bug is added as the test case in
this patch.

What this patch does is that, during legality phase
instead of checking the phi nodes only in `InnerLoop`
and `OuterLoop`, we check phi nodes in all subloops
of the `OuterLoop`. Suppose if the loop nest is triply
nested, and `InnerLoop` and `OuterLoop` is the middle
loop and the outermost loop respectively, we'll check
phi nodes in the innermost loop as well, in addition to
the ones in the middle and outermost loops.

Reviewed By: Meinersbur, #loopoptwg

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

20 months ago[CodeGenPrep] Change ValueToSExts from DeseMap to MapVector
Haohai Wen [Fri, 4 Nov 2022 02:15:11 +0000 (10:15 +0800)]
[CodeGenPrep] Change ValueToSExts from DeseMap to MapVector

mergeSExts iterates throught ValueToSExts. Using DenseMap result in
unstable optimization path so that output IR may vary even if the input
IR is same.

Reviewed By: wxiao3

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

20 months agoReland "[LLDB] [LoongArch] Add loongarch64 case in ComputeHostArchitectureSupport()"
Tiezhu Yang [Fri, 4 Nov 2022 02:39:57 +0000 (10:39 +0800)]
Reland "[LLDB] [LoongArch] Add loongarch64 case in ComputeHostArchitectureSupport()"

This is a simple change, loongarch64 host also supports 32-bit binaries,
so note it.

Without this patch:

```
[loongson@linux build]$ ./tools/lldb/unittests/Host/HostTests | tail -6
[==========] 78 tests from 18 test suites ran. (16 ms total)
[  PASSED  ] 77 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] HostTest.GetProcessInfo

 1 FAILED TEST
```

With this patch:

```
[loongson@linux build]$ ./tools/lldb/unittests/Host/HostTests | tail -2
[==========] 78 tests from 18 test suites ran. (15 ms total)
[  PASSED  ] 78 tests.
```

Reviewed By: SixWeining, xen0n, MaskRay, DavidSpickett

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

20 months agoRevert "[LLDB] [LoongArch] Add loongarch64 case in ComputeHostArchitectureSupport()"
Weining Lu [Fri, 4 Nov 2022 02:38:10 +0000 (10:38 +0800)]
Revert "[LLDB] [LoongArch] Add loongarch64 case in ComputeHostArchitectureSupport()"

This reverts commit de865087f8c07c742dec3523ec8cbe6895bd57ac.

Reason to revert: author name is wrong.

20 months ago[LLDB] [LoongArch] Add loongarch64 case in ComputeHostArchitectureSupport()
Weining Lu [Fri, 4 Nov 2022 02:26:31 +0000 (10:26 +0800)]
[LLDB] [LoongArch] Add loongarch64 case in ComputeHostArchitectureSupport()

This is a simple change, loongarch64 host also supports 32-bit binaries,
so note it.

Without this patch:

```
[loongson@linux build]$ ./tools/lldb/unittests/Host/HostTests | tail -6
[==========] 78 tests from 18 test suites ran. (16 ms total)
[  PASSED  ] 77 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] HostTest.GetProcessInfo

 1 FAILED TEST
```

With this patch:

```
[loongson@linux build]$ ./tools/lldb/unittests/Host/HostTests | tail -2
[==========] 78 tests from 18 test suites ran. (15 ms total)
[  PASSED  ] 78 tests.
```

Reviewed By: xen0n, MaskRay, DavidSpickett

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

20 months ago[X86] Support -march=raptorlake, meteorlake
Freddy Ye [Fri, 4 Nov 2022 01:04:57 +0000 (09:04 +0800)]
[X86] Support -march=raptorlake, meteorlake

Reviewed By: pengfei, skan, MaskRay

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

20 months ago[lldb-vscode] Send Statistics Dump in terminated event
Wanyi Ye [Sat, 10 Sep 2022 18:27:09 +0000 (11:27 -0700)]
[lldb-vscode] Send Statistics Dump in terminated event

This patch will gather debug info & breakpoint info from the statistics dump (from `(SBTarget.GetStatistics())` func) and send to DAP in terminated event.

The statistics content can be huge (especially the `modules`) and dumping in full JSON can create delay in the IDE's debugging UI. (For more details, please read: https://github.com/llvm/llvm-project/commit/7bbd0fba986c241162b77b7e424ad82bc7e17b41 ). Hence, we will filter out large contents before returning it in terminated event.

It will keep all the metadata fields (those starts with "total"). For large contents, it uses the opt-out strategy. Currently it only removes the "modules" field. This way every time a new top-level field being added, we will be able to capture them from DAP log without changing lldb-vscode.

The DAP terminated event should look like
```
{
  "event":"terminated",
  "seq":0,
  "statistics": {
    "memory": <JSON string>
    "targets": <JSON string>, // it's a JSON array, breakpoints info included in each target
    <metadata_key: value> // pairs
  },
  "type":"event"
}
```

All the info above will be append to statistics field in the terminated event

Test Plan

Debugged a simple hello world program from VSCode. Exit debug session in two ways: 1) run to program exit; 2) user initiated debug session end (quit debugging before program exit).
Check DAP log and see both debug sessions have statistics returned in terminated event.

Here's an example when debugging the test program:

```
{"event":"terminated","seq":0,"statistics":{"memory":"{\"strings\":{\"bytesTotal\":1843200,\"bytesUnused\":897741,\"bytesUsed\":945459}}","targets":"[{\"breakpoints\":[{\"details\":{\"Breakpoint\":{\"BKPTOptions\":{\"AutoContinue\":false,\"ConditionText\":\"\",\"EnabledState\":true,\"IgnoreCount\":0,\"OneShotState\":false},\"BKPTResolver\":{\"Options\":{\"NameMask\":[56],\"Offset\":0,\"SkipPrologue\":true,\"SymbolNames\":[\"foo\"]},\"Type\":\"SymbolName\"},\"Hardware\":false,\"Names\":[\"vscode\"],\"SearchFilter\":{\"Options\":{},\"Type\":\"Unconstrained\"}}},\"id\":1,\"internal\":false,\"numLocations\":1,\"numResolvedLocations\":1,\"resolveTime\":0.002232},{\"details\":{\"Breakpoint\":{\"BKPTOptions\":{\"AutoContinue\":false,\"ConditionText\":\"\",\"EnabledState\":true,\"IgnoreCount\":0,\"OneShotState\":false},\"BKPTResolver\":{\"Options\":{\"Column\":0,\"Exact\":false,\"FileName\":\"/data/users/wanyi/llvm-sand/external/llvm-project/lldb/test/API/tools/lldb-vscode/terminated-event/main.cpp\",\"Inlines\":true,\"LineNumber\":5,\"Offset\":0,\"SkipPrologue\":true},\"Type\":\"FileAndLine\"},\"Hardware\":false,\"Names\":[\"vscode\"],\"SearchFilter\":{\"Options\":{},\"Type\":\"Unconstrained\"}}},\"id\":2,\"internal\":false,\"numLocations\":0,\"numResolvedLocations\":0,\"resolveTime\":0.23203799999999999},{\"details\":{\"Breakpoint\":{\"BKPTOptions\":{\"AutoContinue\":false,\"ConditionText\":\"\",\"EnabledState\":true,\"IgnoreCount\":0,\"OneShotState\":false},\"BKPTResolver\":{\"Options\":{\"Language\":\"c\",\"NameMask\":[4,4,4,4,4,4],\"Offset\":0,\"SkipPrologue\":false,\"SymbolNames\":[\"_dl_debug_state\",\"rtld_db_dlactivity\",\"__dl_rtld_db_dlactivity\",\"r_debug_state\",\"_r_debug_state\",\"_rtld_debug_state\"]},\"Type\":\"SymbolName\"},\"Hardware\":false,\"SearchFilter\":{\"Options\":{\"ModuleList\":[\"/usr/lib64/ld-2.28.so\"]},\"Type\":\"Modules\"}}},\"id\":-1,\"internal\":true,\"kindDescription\":\"shared-library-event\",\"numLocations\":1,\"numResolvedLocations\":1,\"resolveTime\":0.00026699999999999998}],\"expressionEvaluation\":{\"failures\":0,\"successes\":0},\"firstStopTime\":0.087458974999999994,\"frameVariable\":{\"failures\":0,\"successes\":0},\"launchOrAttachTime\":0.052953161999999998,\"moduleIdentifiers\":[94554748126576,94554747837792,94554747149216,139800112130176,139800112161056,139800112206064,139800112340224,139800112509552,139800112236528],\"signals\":[{\"SIGSTOP\":1}],\"sourceMapDeduceCount\":0,\"stopCount\":8,\"targetCreateTime\":0.00057700000000000004,\"totalBreakpointResolveTime\":0.234537}]","totalDebugInfoByteSize":1668056,"totalDebugInfoEnabled":3,"totalDebugInfoIndexLoadedFromCache":0,"totalDebugInfoIndexSavedToCache":0,"totalDebugInfoIndexTime":0.027963000000000002,"totalDebugInfoParseTime":0.34354800000000002,"totalModuleCount":10,"totalModuleCountHasDebugInfo":3,"totalSymbolTableIndexTime":0.056050000000000003,"totalSymbolTableParseTime":0.23930000000000001,"totalSymbolTableStripped":0,"totalSymbolTablesLoadedFromCache":0,"totalSymbolTablesSavedToCache":0},"type":"event"}
```

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

20 months agoAdd TOC to GPU.md
Oleksandr "Alex" Zinenko [Fri, 4 Nov 2022 00:03:01 +0000 (01:03 +0100)]
Add TOC to GPU.md

20 months ago[lld][WebAssembly] Add support for LLD_REPRODUCE
Sam Clegg [Thu, 3 Nov 2022 23:13:54 +0000 (16:13 -0700)]
[lld][WebAssembly] Add support for LLD_REPRODUCE

This is feature of the ELF and COFF linker that we were missing until
now.

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

20 months ago[clang][dataflow] Generalize custom comparison to return tri-value result.
Yitzhak Mandelbaum [Thu, 3 Nov 2022 12:44:10 +0000 (12:44 +0000)]
[clang][dataflow] Generalize custom comparison to return tri-value result.

Currently, the API for a model's custom value comparison returns a
boolean. Therefore, models cannot distinguish between situations where the
values are recognized by the model and different and those where the values are
just not recognized.  This patch changes the return value to a tri-valued enum,
allowing models to express "don't know".

This patch is essentially a NFC -- no practical differences result from this
change in this patch. But, it prepares for future patches (particularly,
upcoming patches for widening) which will take advantage of the new flexibility.

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

20 months ago[mlir][index] Add shl, shrs, and shru ops
Jeff Niu [Thu, 3 Nov 2022 18:51:43 +0000 (11:51 -0700)]
[mlir][index] Add shl, shrs, and shru ops

This patch adds the left shift, signed right shift, and unsigned right
shift operations to the index dialects with folders and LLVM lowerings.

Reviewed By: rriddle

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

20 months ago[RISCV] Add missing break to the last case in a switch. NFC
Craig Topper [Thu, 3 Nov 2022 22:54:09 +0000 (15:54 -0700)]
[RISCV] Add missing break to the last case in a switch. NFC

Might create a problem in the future if more cases are added.

20 months ago[lldb] Support simplified template names when looking up functions
Arthur Eubanks [Mon, 31 Oct 2022 18:19:36 +0000 (11:19 -0700)]
[lldb] Support simplified template names when looking up functions

This makes setting breakpoints work with -gsimple-template-names.

Assume that callers handle false positives. For example, `Module::LookupInfo::Prune` removes wrong template instantiations when setting a breakpoint.

Reviewed By: labath

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

20 months ago[mlir][linalg] Add reduction tiling transformation
Thomas Raoux [Wed, 2 Nov 2022 05:18:26 +0000 (05:18 +0000)]
[mlir][linalg] Add reduction tiling transformation

Add a transformation to tile reduction ops into a parallel operation
followed by a merge operation. This is equivalent to the existing
reduction spliting transformation but using loops instead of using
higher dimensions linalg.

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

20 months ago[StatepointLowering] remove unused parameter. NFC
Nick Desaulniers [Thu, 3 Nov 2022 22:42:51 +0000 (15:42 -0700)]
[StatepointLowering] remove unused parameter. NFC

Reviewed By: craig.topper

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

20 months ago[SelectionDAGBuilder] use bitcast instead of AnyExtOrTrunc if copy parts from an...
Henry Yu [Thu, 3 Nov 2022 22:30:38 +0000 (15:30 -0700)]
[SelectionDAGBuilder] use bitcast instead of AnyExtOrTrunc if copy parts from an int vector to a float vector to fix issue #58615

The getCopyFromPartsVector doesn't work correctly when PartEVT and ValueVT have both different element type and different size.

This patch
1) removes the part of a comment that contains the incorrect assumption that element type are the same
2) use bitcast when copy parts of int vector to a float vector after the subvector extraction

Reviewed By: Peter, efriedma

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

20 months ago[IR Verifier] didn't check if switch case is constant, align IR Verifier's check...
Peter Rong [Tue, 25 Oct 2022 02:10:47 +0000 (19:10 -0700)]
[IR Verifier] didn't check if switch case is constant, align IR Verifier's check with LLParser.

If a programmer incorrectly `Switch->setOperand()` and `Verifier` will pass, causing problems when dumping this `Module`
This patch aligns SwitchInst's check with LLParser. It also includes a test to justify the patch.

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

20 months agoclang/cmake: Simplify lit detection for standalone builds
Tom Stellard [Thu, 3 Nov 2022 22:12:50 +0000 (15:12 -0700)]
clang/cmake: Simplify lit detection for standalone builds

Reviewed By: mgorny, phosek, Ericson2314

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

20 months agoOverride CalculateFrameVariableError in SymbolFileOnDemand
George Hu [Wed, 2 Nov 2022 19:19:22 +0000 (12:19 -0700)]
Override CalculateFrameVariableError in SymbolFileOnDemand

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

20 months ago[lldb/Plugins] Use default initializers for StructuredData::*SP (NFC)
Med Ismail Bennani [Thu, 3 Nov 2022 21:42:34 +0000 (14:42 -0700)]
[lldb/Plugins] Use default initializers for StructuredData::*SP (NFC)

This patch replaces the ScriptedProcessInterface getters to return
default initializers for StructureData shared pointers instead of
returning a null pointer.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/crashlog] Add support for Application Specific Backtraces & Information
Med Ismail Bennani [Thu, 3 Nov 2022 21:27:28 +0000 (14:27 -0700)]
[lldb/crashlog] Add support for Application Specific Backtraces & Information

For an exception crashlog, the thread backtraces aren't usually very helpful
and instead, developpers look at the "Application Specific Backtrace" that
was generated by `objc_exception_throw`.

LLDB could already parse and symbolicate these Application Specific Backtraces
for regular textual-based crashlog, so this patch adds support to parse them
in JSON crashlogs, and materialize them a HistoryThread extending the
crashed ScriptedThread.

This patch also includes the Application Specific Information messages
as part of the process extended crash information log. To do so, the
ScriptedProcess Python interface has a new GetMetadata method that
returns an arbitrary dictionary with data related to the process.

rdar://93207586

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/Utility] Add GetDescription(Stream&) to StructureData::*
Med Ismail Bennani [Thu, 3 Nov 2022 18:25:40 +0000 (11:25 -0700)]
[lldb/Utility] Add GetDescription(Stream&) to StructureData::*

This patch improves the StructuredData classes to provide a
GetDescription(lldb_private::Stream&) affordance.

This is very convenient compared to the Dump method because this try to
pretty print the structure instead of just serializing it into a JSON.

This patch also updates some parts of lldb (i.e. extended crash info) to
use this new affordance instead of StructuredData::Dump.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/Utility] Fix StructuredData::ParseJSONValue for null items
Med Ismail Bennani [Mon, 10 Oct 2022 20:45:45 +0000 (13:45 -0700)]
[lldb/Utility] Fix StructuredData::ParseJSONValue for null items

This patch fixes the JSON parser for StructuredData to handle JSON null
entries.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/Commands] Add newline for extended backtrace thread (NFCI)
Med Ismail Bennani [Sat, 8 Oct 2022 01:20:17 +0000 (18:20 -0700)]
[lldb/Commands] Add newline for extended backtrace thread (NFCI)

This adds a new line between the real thread and the extended backtrace
thread when it's available. This should improve readability for the user.

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/Plugins] Cleanup error handling in Scripted{Process,Thread} (NFC)
Med Ismail Bennani [Fri, 7 Oct 2022 23:11:49 +0000 (16:11 -0700)]
[lldb/Plugins] Cleanup error handling in Scripted{Process,Thread} (NFC)

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/crashlog] Fix the image_regex_uuid to skip null UUID images
Med Ismail Bennani [Fri, 7 Oct 2022 23:08:52 +0000 (16:08 -0700)]
[lldb/crashlog] Fix the image_regex_uuid to skip null UUID images

This patch updates the image_regex_uuid matcher to match null-UUID
images in the plain text crashlog parser.

It updates the regex to match one or more '?' characters or the image
full path.

rdar://100904019

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[lldb/crashlog] Add support for 32bit frame addresses
Med Ismail Bennani [Fri, 7 Oct 2022 23:12:52 +0000 (16:12 -0700)]
[lldb/crashlog] Add support for 32bit frame addresses

This patch adds support for 32bit stack frame addresses in the `crashlog`
command.

For crash reports that are generated from a arm64_32 process, `PAGEZERO`
is loaded at 0x00004000 so no code address will be less than 0x4000.

This patch changes the crashlog frame address regex group to match
addresses as small as 4 hex characters.

rdar://100805026

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
20 months ago[libcxx] Fix the support requirements for `std::function` Objective-C++ test.
varconst [Thu, 3 Nov 2022 21:25:40 +0000 (14:25 -0700)]
[libcxx] Fix the support requirements for `std::function` Objective-C++ test.

The test requires two features to be supported but only checked for one
of them.

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