[llvm] [NFC] Fix #106873 - update assignment tracking docs (PR #106959)
Orlando Cazalet-Hyams via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 2 05:42:21 PDT 2024
https://github.com/OCHyams updated https://github.com/llvm/llvm-project/pull/106959
>From 027e25b4641d80a0b3cfeb6f604be50cdcd9a1e3 Mon Sep 17 00:00:00 2001
From: Orlando Cazalet-Hyams <orlando.hyams at sony.com>
Date: Mon, 2 Sep 2024 10:48:01 +0100
Subject: [PATCH 1/2] [NFC] Fix #106873 - update assignment tracking docs
---
llvm/docs/AssignmentTracking.md | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/llvm/docs/AssignmentTracking.md b/llvm/docs/AssignmentTracking.md
index a24a8b0d797f87..e9e03e7028d0fb 100644
--- a/llvm/docs/AssignmentTracking.md
+++ b/llvm/docs/AssignmentTracking.md
@@ -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
>From 08de8ae9aa7c3dfd5cc427dd1748d897d1878be1 Mon Sep 17 00:00:00 2001
From: Orlando Cazalet-Hyams <orlando.hyams at sony.com>
Date: Mon, 2 Sep 2024 13:41:56 +0100
Subject: [PATCH 2/2] more docs changes
---
llvm/docs/AssignmentTracking.md | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/llvm/docs/AssignmentTracking.md b/llvm/docs/AssignmentTracking.md
index e9e03e7028d0fb..ae4891236c2591 100644
--- a/llvm/docs/AssignmentTracking.md
+++ b/llvm/docs/AssignmentTracking.md
@@ -90,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:
```
@@ -196,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.
@@ -230,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.
More information about the llvm-commits
mailing list