SuccessChanges

Summary

  1. Prevent GetNumChildren from transitively walking pointer chains (details)
  2. [lldb][NFC] Pass DeclarationName to NameSearchContext by value (details)
  3. [AMDGPU][CODEGEN] Added 'A' constraint for inline assembler (details)
Commit 83bd2c4a06803fa9af7f92a474b1d37cb70397cc by Raphael Isemann
Prevent GetNumChildren from transitively walking pointer chains

Summary:

This is an attempt to fix https://bugs.llvm.org/show_bug.cgi?id=45988,
where SBValue::GetNumChildren returns 2, but SBValue::GetChildAtIndex(1) returns
an invalid value sentinel.

The root cause of this seems to be that GetNumChildren can return the number of
children of a wrong value. In particular, for pointers GetNumChildren just
recursively calls itself on the pointee type, so it effectively walks chains of
pointers. This is different from the logic of GetChildAtIndex, which only
recurses if pointee.IsAggregateType() returns true (IsAggregateType is false for
pointers and references), so it never follows chain of pointers.

This patch aims to make GetNumChildren (more) consistent with GetChildAtIndex by
only recursively calling GetNumChildren for aggregate types.

Ideally, GetNumChildren and GetChildAtIndex would share the code that decides
which pointers/references are followed, but that is a bit more invasive change.

Reviewers: teemperor, jingham, clayborg

Reviewed By: teemperor, clayborg

Subscribers: clayborg, labath, shafik, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D80254
The file was addedlldb/test/API/functionalities/pointer_num_children/TestPointerNumChildren.py
The file was addedlldb/test/API/functionalities/pointer_num_children/Makefile
The file was addedlldb/test/API/functionalities/pointer_num_children/main.cpp
The file was modifiedlldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp (diff)
Commit fe22e5689e94370b8eadef4b7267201cc9fcb2e3 by Raphael Isemann
[lldb][NFC] Pass DeclarationName to NameSearchContext by value

DeclarationName is usually passed around by value as it's just a pointer.
The file was modifiedlldb/source/Plugins/ExpressionParser/Clang/NameSearchContext.h (diff)
Commit b087b91c917087bc53d47282a16ee4af78bfe286 by dmitry.preobrazhensky
[AMDGPU][CODEGEN] Added 'A' constraint for inline assembler

Summary: 'A' constraint requires an immediate int or fp constant that can be inlined in an instruction encoding.

Reviewers: arsenm, rampitec

Differential Revision: https://reviews.llvm.org/D78494
The file was modifiedllvm/lib/Target/AMDGPU/SIISelLowering.cpp (diff)
The file was modifiedllvm/lib/Target/AMDGPU/SIISelLowering.h (diff)
The file was modifiedllvm/test/CodeGen/AMDGPU/inline-constraints.ll (diff)
The file was modifiedllvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp (diff)
The file was modifiedllvm/docs/LangRef.rst (diff)
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp (diff)
The file was modifiedllvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h (diff)