[all-commits] [llvm/llvm-project] e6cbea: Revert "[lldb] unique_ptr-ify some GetUserExpressi...

wanglei via All-commits all-commits at lists.llvm.org
Wed Aug 28 02:54:38 PDT 2024


  Branch: refs/heads/users/wangleiat/spr/loongarch-pre-commit-test-for-immediate-value-materialization-using-bstrins_d
  Home:   https://github.com/llvm/llvm-project
  Commit: e6cbea11578f197589801297d22b9b3bc4f1bd10
      https://github.com/llvm/llvm-project/commit/e6cbea11578f197589801297d22b9b3bc4f1bd10
  Author: Lang Hames <lhames at gmail.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M lldb/include/lldb/Symbol/TypeSystem.h
    M lldb/include/lldb/Target/Target.h
    M lldb/source/Breakpoint/BreakpointLocation.cpp
    M lldb/source/Breakpoint/Watchpoint.cpp
    M lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
    M lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h
    M lldb/source/Target/Target.cpp

  Log Message:
  -----------
  Revert "[lldb] unique_ptr-ify some GetUserExpression APIs. (#106034)"

This reverts commit 3c5ab5a75a9c8fb87dcb13cdf4207aa975fd6972 while I investigate
bot failures (e.g. https://lab.llvm.org/buildbot/#/builders/163/builds/4286).


  Commit: 8067b88f8327a36ade4d587d4e611c7941f70a78
      https://github.com/llvm/llvm-project/commit/8067b88f8327a36ade4d587d4e611c7941f70a78
  Author: zhongyunde 00443407 <zhongyunde at huawei.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
    M llvm/test/CodeGen/AArch64/large-offset-ldr-merge.mir

  Log Message:
  -----------
  [AArch64] Fix buildbot breakage of ubsan

Fix the ERROR: UndefinedBehaviorSanitizer, reproduced by
  BUILDBOT_REVISION=43ffe2eed llvm-zorg/zorg/buildbot/builders/sanitizers/buildbot_bootstrap_ubsan.sh
It might be also related to #76202


  Commit: e5a5ac0c2355df9911953260aaf519185efa369e
      https://github.com/llvm/llvm-project/commit/e5a5ac0c2355df9911953260aaf519185efa369e
  Author: zhongyunde 00443407 <zhongyunde at huawei.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
    M llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
    M llvm/test/CodeGen/AArch64/arm64-addrmode.ll

  Log Message:
  -----------
  [AArch64] Fold more load.x into load.i with large offset

The list of load.x is refer to canFoldIntoAddrMode on D152828.
Also support LDRSroX missed in canFoldIntoAddrMode


  Commit: 190449a5d2a9ddfc2180dce11714a4443f0f29f0
      https://github.com/llvm/llvm-project/commit/190449a5d2a9ddfc2180dce11714a4443f0f29f0
  Author: Arseniy Zaostrovnykh <necto.ne at gmail.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
    M clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
    M clang/lib/StaticAnalyzer/Core/BugReporter.cpp
    M clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp
    M clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
    M clang/test/Analysis/copy-elision.cpp
    M clang/test/Analysis/incorrect-checker-names.cpp
    M clang/test/Analysis/loop-block-counts.c
    M clang/test/Analysis/stack-addr-ps.c
    M clang/test/Analysis/stack-addr-ps.cpp
    M clang/test/Analysis/stack-capture-leak-no-arc.mm
    M clang/test/Analysis/stackaddrleak.c

  Log Message:
  -----------
  [analyzer] Detect leaks of stack addresses via output params, indirect globals 3/3 (#105648)

Fix some false negatives of StackAddrEscapeChecker:
- Output parameters
  ```
  void top(int **out) {
    int local = 42;
    *out = &local; // Noncompliant
  }
  ```
- Indirect global pointers
  ```
  int **global;

  void top() {
    int local = 42;
    *global = &local; // Noncompliant
  }
  ```

Note that now StackAddrEscapeChecker produces a diagnostic if a function
with an output parameter is analyzed as top-level or as a callee. I took
special care to make sure the reports point to the same primary location
and, in many cases, feature the same primary message. That is the
motivation to modify Core/BugReporter.cpp and Core/ExplodedGraph.cpp

To avoid false positive reports when a global indirect pointer is
assigned a local address, invalidated, and then reset, I rely on the
fact that the invalidation symbol will be a DerivedSymbol of a
ConjuredSymbol that refers to the same memory region.

The checker still has a false negative for non-trivial escaping via a
returned value. It requires a more sophisticated traversal akin to
scanReachableSymbols, which out of the scope of this change.

CPP-4734

---------

This is the last of the 3 stacked PRs, it must not be merged before
https://github.com/llvm/llvm-project/pull/105652 and
https://github.com/llvm/llvm-project/pull/105653


  Commit: 3dbb6befa837c5daa07de1e0daa45e5943ee9520
      https://github.com/llvm/llvm-project/commit/3dbb6befa837c5daa07de1e0daa45e5943ee9520
  Author: Michael Park <mcypark at gmail.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M clang/lib/AST/ComputeDependence.cpp

  Log Message:
  -----------
  [NFC] Comment fix: "does specify state that" -> "does specify that" (#106338)


  Commit: 0b554dd9b1932c76225afded64d5f4cc7bb2933f
      https://github.com/llvm/llvm-project/commit/0b554dd9b1932c76225afded64d5f4cc7bb2933f
  Author: Michael Buch <michaelbuch12 at gmail.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M llvm/lib/Demangle/Demangle.cpp
    M llvm/test/tools/llvm-cxxfilt/invalid.test
    R llvm/test/tools/llvm-cxxfilt/strip-underscore-default-darwin.test
    R llvm/test/tools/llvm-cxxfilt/strip-underscore-default.test
    M llvm/test/tools/llvm-cxxfilt/strip-underscore.test
    M llvm/tools/llvm-cxxfilt/llvm-cxxfilt.cpp

  Log Message:
  -----------
  [llvm-cxxfilt][macOS] Don't strip underscores on macOS by default (#106233)

Currently, `llvm-cxxfilt` will strip the leading underscore of its input
on macOS. Historically MachO symbols were prefixed with an extra
underscore and this is why this default exists. However, nowadays, the
`ItaniumDemangler` supports all of the following mangling prefixes:
`_Z`, `__Z`, `___Z`, `____Z`. So really `llvm-cxxfilt` can simply
forward the mangled name to the demangler and let the library decide
whether it's a valid encoding.

Compiling C++ on macOS nowadays will generate symbols with `_Z` and
`___Z` prefixes. So users trying to demangle these symbols will have to
know that they need to add the `-n` prefix. This routinely catches
people off-guard.

This patch removes the `-n` default for macOS and allows calling into
the `ItaniumDemangler` with all the `_Z` prefixes that the demangler
supports (1-4 underscores).

rdar://132714940


  Commit: 175aa864f33786f3a6a4ee7381cbcafd0758501a
      https://github.com/llvm/llvm-project/commit/175aa864f33786f3a6a4ee7381cbcafd0758501a
  Author: wanglei <wanglei at loongson.cn>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td
    M llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td

  Log Message:
  -----------
  [LoongArch] Format LoongArchL{A}SXInstrInfo.td. NFC

Alignment and start with an upper-case letter.


  Commit: 6332c36bc846e7cba5c8cc1f865ca506539692fc
      https://github.com/llvm/llvm-project/commit/6332c36bc846e7cba5c8cc1f865ca506539692fc
  Author: Kazu Hirata <kazu at google.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M llvm/lib/Target/AMDGPU/R600InstrInfo.cpp

  Log Message:
  -----------
  [AMDGPU] Use range-based for loops (NFC) (#106328)


  Commit: 22e55ba3293f72df84de509db821b4d8a2c4c55e
      https://github.com/llvm/llvm-project/commit/22e55ba3293f72df84de509db821b4d8a2c4c55e
  Author: Kazu Hirata <kazu at google.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M llvm/lib/FileCheck/FileCheck.cpp
    M llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
    M llvm/unittests/Support/VirtualFileSystemTest.cpp

  Log Message:
  -----------
  [llvm] Prefer StringRef::substr to StringRef::slice (NFC) (#106330)

S.substr(N) is simpler than S.slice(N, StringRef::npos). Also, substr
is probably better recognizable than slice thanks to
std::string_view::substr.


  Commit: 866bec7d3ff8803b68e9972939c1a76ccf5fdc62
      https://github.com/llvm/llvm-project/commit/866bec7d3ff8803b68e9972939c1a76ccf5fdc62
  Author: Robin Caloudis <robin.caloudis at gmx.de>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M libcxx/include/__math/traits.h
    M libcxx/test/std/numerics/c.math/isnormal.pass.cpp

  Log Message:
  -----------
  [libc++][math] Provide overloads for cv-unqualified floating point types for `std::isnormal` (#104773)

## Why
Currently, the following does not work when compiled with clang:

```c++
#include <cmath>

struct ConvertibleToFloat {
    operator float();
};

bool test(ConvertibleToFloat x) {
    return std::isnormal(x);
}
```
See https://godbolt.org/z/5bos8v67T for differences with respect to
msvc, gcc or icx. It fails for `float`, `double` and `long double` (all
cv-unqualified floating-point types).

## What
Test and provide overloads as expected by the ISO C++ standard. The
classification/comparison function `isnormal` is defined since C++11
until C++23 as
```c++
bool isnormal( float num );
bool isnormal( double num );
bool isnormal( long double num );
```
and since C++23 as
```c++
constexpr bool isnormal( /* floating-point-type */ num );
```
for which "the library provides overloads for all cv-unqualified
floating-point types as the type of the parameter num". See §28.7.1/1 in
the [ISO C++
standard](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/n4950.pdf)
or check
[cppreference](https://en.cppreference.com/w/cpp/numeric/math/isnormal).


  Commit: 902b2a26ab9e1e78dfb66b52fba4512c91472e09
      https://github.com/llvm/llvm-project/commit/902b2a26ab9e1e78dfb66b52fba4512c91472e09
  Author: Haojian Wu <hokein.wu at gmail.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/include/clang/Sema/Sema.h
    M clang/lib/Sema/SemaAttr.cpp
    M clang/lib/Sema/SemaDecl.cpp
    M clang/test/SemaCXX/attr-lifetimebound.cpp

  Log Message:
  -----------
  [clang] Add lifetimebound attr to std::span/std::string_view constructor (#103716)

With this patch, clang now automatically adds
``[[clang::lifetimebound]]`` to the parameters of `std::span,
std::string_view` constructors, this enables Clang to capture more cases
where the returned reference outlives the object.


Fixes #100567


  Commit: 07514fa9b607fd80a72a80270d714e22d842fa39
      https://github.com/llvm/llvm-project/commit/07514fa9b607fd80a72a80270d714e22d842fa39
  Author: Chuanqi Xu <yedeng.yd at linux.alibaba.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    A clang/test/CodeGenCoroutines/coro-dwarf-O2.cpp
    M llvm/lib/Transforms/Coroutines/CoroFrame.cpp
    M llvm/lib/Transforms/Coroutines/CoroInternal.h
    M llvm/lib/Transforms/Coroutines/CoroSplit.cpp
    M llvm/test/Transforms/Coroutines/coro-debug-O2.ll

  Log Message:
  -----------
  [Coroutines] Salvage the debug information for coroutine frames within optimizations

This patch tries to salvage the debug information for the coroutine
frames within optimizations by creating the help alloca varaibles with
optimizations too. We didn't do this when I implement it initially. I
roughtly remember the reason was, we feel the additional help alloca
variable may pessimize the performance, which is almost the most
important thing under optimizations. But now, it looks like the new
inserted help alloca variables can be optimized out by the following
optimizations. So it looks like the time to make it available within
optimizations.

And also, it looks like the following optimizations will convert the
generated dbg.declare instrinsic into dbg.value intrinsic within
optimizations.

In LLVM's test, there is a slightly regression
that a dbg.declare for the promise object failed to be remained after
this change. But it looks like we won't have a chance to see dbg.declare
for the promise object when we split the coroutine as that dbg.declare
will be converted into a dbg.value in early stage.

So everything looks fine.


  Commit: 82e314e3664d2c8768212e74f751187d51950b87
      https://github.com/llvm/llvm-project/commit/82e314e3664d2c8768212e74f751187d51950b87
  Author: Arseniy Zaostrovnykh <necto.ne at gmail.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
    M clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp
    M clang/lib/StaticAnalyzer/Core/CallEvent.cpp
    M clang/lib/StaticAnalyzer/Core/CheckerHelpers.cpp
    M clang/test/Analysis/block-in-critical-section-inheritance.cpp
    A clang/test/Analysis/block-in-critical-section-nested-namespace.cpp

  Log Message:
  -----------
  [analyzer] Fix false positive for mutexes inheriting mutex_base (#106240)

If a mutex interface is split in inheritance chain, e.g. struct mutex
has `unlock` and inherits `lock` from __mutex_base then calls m.lock()
and m.unlock() have different "this" targets: m and the __mutex_base of
m, which used to confuse the `ActiveCritSections` list.

Taking base region canonicalizes the region used to identify a critical
section and enables search in ActiveCritSections list regardless of
which class the callee is the member of.

This likely fixes #104241

CPP-5541


  Commit: 0bd513082540b2b00bfad1540812e3ea282e70ed
      https://github.com/llvm/llvm-project/commit/0bd513082540b2b00bfad1540812e3ea282e70ed
  Author: Tim Besard <tim.besard at gmail.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M llvm/docs/ReleaseNotes.rst
    M llvm/lib/IR/Core.cpp
    M llvm/unittests/IR/FunctionTest.cpp
    M llvm/unittests/IR/ValueTest.cpp

  Log Message:
  -----------
  [LLVM][C API] Clearing initializer and personality by passing NULL (#105521)

This is similar to how the C++ API supports passing `nullptr` to
`setPersonalityFn` or `setInitializer`.


  Commit: dfde1a7232593fef01ef8c0e311a94188af5984d
      https://github.com/llvm/llvm-project/commit/dfde1a7232593fef01ef8c0e311a94188af5984d
  Author: Mel Chen <mel.chen at sifive.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M llvm/test/Transforms/LoopVectorize/RISCV/inloop-reduction.ll

  Log Message:
  -----------
  [LV][NFC] Update and clean up the test case LoopVectorize/RISCV/inloop-reduction.ll. (#102907)


  Commit: fc338df07e00386aa10b8c6494a26c8a0aa8e1fd
      https://github.com/llvm/llvm-project/commit/fc338df07e00386aa10b8c6494a26c8a0aa8e1fd
  Author: wanglei <wanglei at loongson.cn>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/include/clang/Sema/Sema.h
    M clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
    M clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
    M clang/lib/AST/ComputeDependence.cpp
    M clang/lib/Sema/SemaAttr.cpp
    M clang/lib/Sema/SemaDecl.cpp
    M clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp
    M clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
    M clang/lib/StaticAnalyzer/Core/BugReporter.cpp
    M clang/lib/StaticAnalyzer/Core/CallEvent.cpp
    M clang/lib/StaticAnalyzer/Core/CheckerHelpers.cpp
    M clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp
    M clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
    M clang/test/Analysis/block-in-critical-section-inheritance.cpp
    A clang/test/Analysis/block-in-critical-section-nested-namespace.cpp
    M clang/test/Analysis/copy-elision.cpp
    M clang/test/Analysis/incorrect-checker-names.cpp
    M clang/test/Analysis/loop-block-counts.c
    M clang/test/Analysis/stack-addr-ps.c
    M clang/test/Analysis/stack-addr-ps.cpp
    M clang/test/Analysis/stack-capture-leak-no-arc.mm
    M clang/test/Analysis/stackaddrleak.c
    A clang/test/CodeGenCoroutines/coro-dwarf-O2.cpp
    M clang/test/SemaCXX/attr-lifetimebound.cpp
    M libcxx/include/__math/traits.h
    M libcxx/test/std/numerics/c.math/isnormal.pass.cpp
    M lldb/include/lldb/Symbol/TypeSystem.h
    M lldb/include/lldb/Target/Target.h
    M lldb/source/Breakpoint/BreakpointLocation.cpp
    M lldb/source/Breakpoint/Watchpoint.cpp
    M lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
    M lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h
    M lldb/source/Target/Target.cpp
    M llvm/docs/ReleaseNotes.rst
    M llvm/lib/Demangle/Demangle.cpp
    M llvm/lib/FileCheck/FileCheck.cpp
    M llvm/lib/IR/Core.cpp
    M llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
    M llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
    M llvm/lib/Target/AMDGPU/R600InstrInfo.cpp
    M llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td
    M llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td
    M llvm/lib/Transforms/Coroutines/CoroFrame.cpp
    M llvm/lib/Transforms/Coroutines/CoroInternal.h
    M llvm/lib/Transforms/Coroutines/CoroSplit.cpp
    M llvm/test/CodeGen/AArch64/arm64-addrmode.ll
    M llvm/test/CodeGen/AArch64/large-offset-ldr-merge.mir
    M llvm/test/Transforms/Coroutines/coro-debug-O2.ll
    M llvm/test/Transforms/LoopVectorize/RISCV/inloop-reduction.ll
    M llvm/test/tools/llvm-cxxfilt/invalid.test
    R llvm/test/tools/llvm-cxxfilt/strip-underscore-default-darwin.test
    R llvm/test/tools/llvm-cxxfilt/strip-underscore-default.test
    M llvm/test/tools/llvm-cxxfilt/strip-underscore.test
    M llvm/tools/llvm-cxxfilt/llvm-cxxfilt.cpp
    M llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
    M llvm/unittests/IR/FunctionTest.cpp
    M llvm/unittests/IR/ValueTest.cpp
    M llvm/unittests/Support/VirtualFileSystemTest.cpp

  Log Message:
  -----------
  rebase

Created using spr 1.3.5-bogner


Compare: https://github.com/llvm/llvm-project/compare/a845c796939f...fc338df07e00

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list