[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