[all-commits] [llvm/llvm-project] c154cd: [Orc] Fix tracking of pending debug objects in Deb...

Stefan Gränitz via All-commits all-commits at lists.llvm.org
Mon Mar 22 09:48:12 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c154cddabd71bb8a1c8ea79848bc42f984bd1150
      https://github.com/llvm/llvm-project/commit/c154cddabd71bb8a1c8ea79848bc42f984bd1150
  Author: Stefan Gränitz <stefan.graenitz at gmail.com>
  Date:   2021-03-22 (Mon, 22 Mar 2021)

  Changed paths:
    M llvm/include/llvm/ExecutionEngine/Orc/DebugObjectManagerPlugin.h
    M llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp

  Log Message:
  -----------
  [Orc] Fix tracking of pending debug objects in DebugObjectManagerPlugin

There can be multiple MaterializationResponsibilitys in-flight for a single ResourceKey. Hence, pending debug objects must be tracked by MaterializationResponsibility and not by ResourceKey.

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


  Commit: cbcc1c9f87080779bf138259a9177e8f2fe674c7
      https://github.com/llvm/llvm-project/commit/cbcc1c9f87080779bf138259a9177e8f2fe674c7
  Author: Stefan Gränitz <stefan.graenitz at gmail.com>
  Date:   2021-03-22 (Mon, 22 Mar 2021)

  Changed paths:
    M llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp

  Log Message:
  -----------
  [Orc] Make usage of ResourceKeys thread-safe in DebugObjectManagerPlugin

Don't leak ResourceKeys from MaterializationResponsibility::withResourceKeyDo() in notifyEmitted().
Also make some improvements in the overall implementation.

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


  Commit: 50e499a56d66d8041d39ef1f8047533d50c2d165
      https://github.com/llvm/llvm-project/commit/50e499a56d66d8041d39ef1f8047533d50c2d165
  Author: Stefan Gränitz <stefan.graenitz at gmail.com>
  Date:   2021-03-22 (Mon, 22 Mar 2021)

  Changed paths:
    M llvm/include/llvm/ExecutionEngine/Orc/Shared/RPCUtils.h

  Log Message:
  -----------
  [Orc] Fix copy elision warning in RPCUtils

The `callB()` template function always moved errors on return, because in the majority of cases its return type is an `Expected<T>` and the error must be moved into the implicit ctor.
For the special case of a `void` result, however, the `ResultTraits` class is specialized and the return type is a raw `Error`. Some build bots complain, that in favor of NRVO errors should not be moved in this case.

```
llvm/include/llvm/ExecutionEngine/Orc/Shared/RPCUtils.h:1513:27:
llvm/include/llvm/ExecutionEngine/Orc/Shared/RPCUtils.h:1519:27:
llvm/include/llvm/ExecutionEngine/Orc/Shared/RPCUtils.h:1526:29:
  warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
```

The warning is reasonable from a type-system point of view. For performance it's entirely insignificant.

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


Compare: https://github.com/llvm/llvm-project/compare/d4648eeaa270...50e499a56d66


More information about the All-commits mailing list