Skip to content

[NFC] Fix #106873 - update assignment tracking docs #106959

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 2, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions llvm/docs/AssignmentTracking.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,14 @@ LLVM pass writers, and minimal disruption to LLVM in general.

## Status and usage

**Status**: Experimental work in progress. Enabling is strongly advised against
except for development and testing.
**Status**: Enabled by default in Clang but disabled under some circumstances
(which can be overridden with the `forced` option, see below). `opt` will not
run the pass unless asked (`-passes=declare-to-assign`).

**Enable in Clang**: `-Xclang -fexperimental-assignment-tracking`
**Flag**:
`-Xclang -fexperimental-assignment-tracking=<disabled|enabled|forced>`

That causes Clang to get LLVM to run the pass `declare-to-assign`. The pass
When enabled Clang gets LLVM to run the pass `declare-to-assign`. The pass
converts conventional debug records to assignment tracking metadata and sets
the module flag `debug-info-assignment-tracking` to the value `i1 true`. To
check whether assignment tracking is enabled for a module call
Expand Down Expand Up @@ -88,7 +90,7 @@ int fun(int a) {
```
compiled without optimisations:
```
$ clang++ test.cpp -o test.ll -emit-llvm -S -g -O0 -Xclang -fexperimental-assignment-tracking
$ clang++ test.cpp -o test.ll -emit-llvm -S -g -O0 -Xclang -fexperimental-assignment-tracking=enabled
```
we get:
```
Expand Down Expand Up @@ -194,8 +196,7 @@ the choice at each instruction, iteratively joining the results for each block.

### TODO list

As this is an experimental work in progress so there are some items we still need
to tackle:
Outstanding improvements:

* As mentioned in test llvm/test/DebugInfo/assignment-tracking/X86/diamond-3.ll,
the analysis should treat escaping calls like untagged stores.
Expand Down Expand Up @@ -228,3 +229,8 @@ to tackle:
that we can only track assignments with fixed offsets and sizes, I think we
can probably get rid of the address and address-expression part, since it
will always be computable with the info we have.

* Assignment tracking is disabled by default for LTO and thinLTO builds, and
if LLDB debugger tuning has been specified. We should remove these
restrictions. See EmitAssemblyHelper::RunOptimizationPipeline in
clang/lib/CodeGen/BackendUtil.cpp.
Loading