[llvm-branch-commits] [llvm] Make script-mode default, change args, update tests accordingly (PR #204367)
Stephen Tozer via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Jun 17 08:00:38 PDT 2026
https://github.com/SLTozer created https://github.com/llvm/llvm-project/pull/204367
Make script-mode default, change args, update tests accordingly
Update LLDB-based dexter-tests to use script-mode
Use heuristic for dexter-tests not using LLDB
>From 966930a04fe7028323a2bc3421666f2916ea1414 Mon Sep 17 00:00:00 2001
From: Stephen Tozer <stephen.tozer at sony.com>
Date: Wed, 17 Jun 2026 12:47:45 +0100
Subject: [PATCH 1/3] Make script-mode default, change args, update tests
accordingly
---
cross-project-tests/debuginfo-tests/dexter/Heuristic.md | 2 ++
cross-project-tests/debuginfo-tests/dexter/Script.md | 2 --
.../debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py | 4 ++--
.../debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py | 4 ++--
.../dexter/dex/debugger/visualstudio/VisualStudio.py | 4 ++--
.../debuginfo-tests/dexter/dex/tools/TestToolBase.py | 4 ++--
.../debuginfo-tests/dexter/dex/tools/test/Tool.py | 6 +++---
.../dexter/feature_tests/commands/control/dex-continue.cpp | 2 +-
.../feature_tests/commands/control/dex_step_function.cpp | 2 +-
.../feature_tests/commands/penalty/dex_declare_file.cpp | 2 +-
.../commands/penalty/expect_program_state.cpp | 2 +-
.../feature_tests/commands/penalty/expect_step_kinds.cpp | 2 +-
.../feature_tests/commands/penalty/expect_step_order.cpp | 2 +-
.../feature_tests/commands/penalty/expect_watch_type.cpp | 2 +-
.../feature_tests/commands/penalty/expect_watch_value.cpp | 2 +-
.../commands/penalty/float_range_out_range.cpp | 2 +-
.../commands/penalty/float_range_zero_nonmatch.cpp | 2 +-
.../feature_tests/commands/penalty/missing_dex_address.cpp | 2 +-
.../dexter/feature_tests/commands/penalty/unreachable.cpp | 2 +-
.../commands/penalty/unreachable_line_range.cpp | 2 +-
.../feature_tests/commands/penalty/unreachable_on_line.cpp | 2 +-
.../dexter/feature_tests/commands/perfect/command_line.c | 2 +-
.../perfect/dex_declare_address/address_after_ref.cpp | 2 +-
.../perfect/dex_declare_address/address_hit_count.cpp | 2 +-
.../perfect/dex_declare_address/expression_address.cpp | 2 +-
.../perfect/dex_declare_address/identical_address.cpp | 2 +-
.../perfect/dex_declare_address/multiple_address.cpp | 2 +-
.../perfect/dex_declare_address/offset_address.cpp | 2 +-
.../perfect/dex_declare_address/self_comparison.cpp | 2 +-
.../perfect/dex_declare_file/dex_and_source/test.cpp | 2 +-
.../perfect/dex_finish_test/default_conditional.cpp | 2 +-
.../dex_finish_test/default_conditional_hit_count.cpp | 2 +-
.../commands/perfect/dex_finish_test/default_hit_count.cpp | 2 +-
.../commands/perfect/dex_finish_test/default_simple.cpp | 2 +-
.../perfect/dex_finish_test/limit_steps_conditional.cpp | 2 +-
.../dex_finish_test/limit_steps_conditional_hit_count.cpp | 2 +-
.../perfect/dex_finish_test/limit_steps_hit_count.cpp | 2 +-
.../perfect/dex_finish_test/limit_steps_simple.cpp | 2 +-
.../commands/perfect/expect_program_state.cpp | 2 +-
.../commands/perfect/expect_step_kind/direction.cpp | 2 +-
.../commands/perfect/expect_step_kind/func.cpp | 2 +-
.../commands/perfect/expect_step_kind/func_external.cpp | 2 +-
.../commands/perfect/expect_step_kind/recursive.cpp | 2 +-
.../commands/perfect/expect_step_kind/small_loop.cpp | 2 +-
.../feature_tests/commands/perfect/expect_step_order.cpp | 2 +-
.../feature_tests/commands/perfect/expect_watch_type.cpp | 2 +-
.../feature_tests/commands/perfect/expect_watch_value.cpp | 2 +-
.../perfect/float_range_watch/float_range_multiple.cpp | 2 +-
.../perfect/float_range_watch/float_range_no_arg.cpp | 2 +-
.../perfect/float_range_watch/float_range_small.cpp | 2 +-
.../perfect/float_range_watch/float_range_zero_match.cpp | 2 +-
.../commands/perfect/limit_steps/hit_count.cpp | 2 +-
.../limit_steps/limit_steps_check_json_step_count.cpp | 2 +-
.../perfect/limit_steps/limit_steps_expect_loop.cpp | 2 +-
.../perfect/limit_steps/limit_steps_expect_value.cpp | 2 +-
.../perfect/limit_steps/limit_steps_line_mismatch.cpp | 2 +-
.../perfect/limit_steps/limit_steps_overlapping_ranges.cpp | 2 +-
.../limit_steps/limit_steps_same_line_conditional.cpp | 2 +-
.../commands/perfect/limit_steps/unconditional.cpp | 2 +-
.../dexter/feature_tests/commands/perfect/unreachable.cpp | 2 +-
.../commands/perfect/unreachable_not_cmd_lineno.cpp | 2 +-
.../feature_tests/commands/perfect/unreachable_on_line.cpp | 2 +-
.../dexter/feature_tests/scripts/conditions.cpp | 2 +-
.../feature_tests/scripts/debugging/debug_aggregates.cpp | 2 +-
.../scripts/debugging/simple_where_function.cpp | 2 +-
.../feature_tests/scripts/debugging/simple_where_line.cpp | 2 +-
.../scripts/debugging/then_after_hit_count.cpp | 2 +-
.../feature_tests/scripts/debugging/then_at_frame.cpp | 2 +-
.../dexter/feature_tests/scripts/debugging/then_finish.cpp | 2 +-
.../feature_tests/scripts/debugging/then_step_out.cpp | 2 +-
.../dexter/feature_tests/scripts/debugging/watch_scope.cpp | 2 +-
.../feature_tests/scripts/debugging/where_file_paths.cpp | 2 +-
.../feature_tests/scripts/debugging/where_fn_hit_count.cpp | 2 +-
.../scripts/debugging/where_for_hit_count.cpp | 2 +-
.../scripts/debugging/where_hit_count_early_exit.cpp | 2 +-
.../feature_tests/scripts/evaluation/basic_evaluate.cpp | 2 +-
.../feature_tests/scripts/evaluation/eval_address.cpp | 2 +-
.../feature_tests/scripts/evaluation/eval_aggregates.cpp | 2 +-
.../feature_tests/scripts/evaluation/eval_at_frame.cpp | 2 +-
.../scripts/evaluation/eval_list_aggregates.cpp | 2 +-
.../scripts/evaluation/eval_steps_penalties.cpp | 2 +-
.../scripts/evaluation/eval_steps_perfect.cpp | 2 +-
.../scripts/evaluation/eval_sublist_aggregates.cpp | 4 ++--
.../evaluation/eval_sublist_aggregates_addresses.cpp | 2 +-
.../dexter/feature_tests/scripts/evaluation/eval_types.cpp | 2 +-
.../feature_tests/scripts/evaluation/evaluate_nothing.cpp | 2 +-
.../dexter/feature_tests/scripts/floats.cpp | 2 +-
.../dexter/feature_tests/scripts/labels/invalid_label.cpp | 2 +-
.../dexter/feature_tests/scripts/labels/offset.cpp | 2 +-
.../dexter/feature_tests/scripts/labels/simple_labels.cpp | 2 +-
.../feature_tests/scripts/labels/source_root_dir.cpp | 2 +-
.../dexter/feature_tests/scripts/nested_wheres.cpp | 2 +-
.../feature_tests/scripts/parser/bad-where-attr.test | 2 +-
.../feature_tests/scripts/parser/error-locations.test | 2 +-
.../scripts/parser/expect-all-with-value.test | 2 +-
.../feature_tests/scripts/parser/invalid-address.test | 2 +-
.../feature_tests/scripts/parser/invalid-script-nodes.test | 2 +-
.../dexter/feature_tests/scripts/parser/parse-address.test | 2 +-
.../scripts/parser/reject-bad-at_frame_idx.test | 2 +-
.../scripts/parser/step-node-expected-values.test | 2 +-
.../dexter/feature_tests/scripts/parser/valid-parse.test | 2 +-
.../rewriting/Inputs/rewrite_aggregates_expected.cpp | 2 +-
.../scripts/rewriting/Inputs/rewrite_at_frame_expected.cpp | 2 +-
.../rewriting/Inputs/rewrite_expect_list_expected.cpp | 2 +-
.../scripts/rewriting/Inputs/rewrite_expects_expected.cpp | 2 +-
.../rewriting/Inputs/rewrite_list_aggregates_expected.cpp | 2 +-
.../rewriting/Inputs/rewrite_multiple_scripts_expected.cpp | 2 +-
.../scripts/rewriting/Inputs/rewrite_scopes_expected.cpp | 2 +-
.../rewriting/Inputs/rewrite_scopes_list_expected.cpp | 2 +-
.../scripts/rewriting/Inputs/rewrite_types_expected.cpp | 2 +-
.../feature_tests/scripts/rewriting/rewrite_aggregates.cpp | 2 +-
.../feature_tests/scripts/rewriting/rewrite_at_frame.cpp | 2 +-
.../scripts/rewriting/rewrite_expect_list.cpp | 2 +-
.../feature_tests/scripts/rewriting/rewrite_expects.cpp | 2 +-
.../scripts/rewriting/rewrite_list_aggregates.cpp | 2 +-
.../scripts/rewriting/rewrite_multiple_scripts.cpp | 2 +-
.../feature_tests/scripts/rewriting/rewrite_scopes.cpp | 2 +-
.../scripts/rewriting/rewrite_scopes_list.cpp | 2 +-
.../scripts/rewriting/rewrite_step_lines.test | 2 +-
.../feature_tests/scripts/rewriting/rewrite_types.cpp | 2 +-
.../dexter/feature_tests/scripts/rewriting/whole_file.test | 2 +-
.../dexter/feature_tests/scripts/where_hit_count.cpp | 2 +-
.../feature_tests/subtools/test/address_printing.cpp | 2 +-
.../feature_tests/subtools/test/err_bad_label_ref.cpp | 2 +-
.../feature_tests/subtools/test/err_duplicate_address.cpp | 2 +-
.../feature_tests/subtools/test/err_duplicate_label.cpp | 2 +-
.../dexter/feature_tests/subtools/test/err_label_kwarg.cpp | 2 +-
.../subtools/test/err_limit_steps_no_values.cpp | 2 +-
.../dexter/feature_tests/subtools/test/err_paren.cpp | 2 +-
.../dexter/feature_tests/subtools/test/err_paren_mline.cpp | 2 +-
.../dexter/feature_tests/subtools/test/err_syntax.cpp | 2 +-
.../subtools/test/err_syntax_dexdeclarefile.cpp | 2 +-
.../feature_tests/subtools/test/err_syntax_mline.cpp | 2 +-
.../dexter/feature_tests/subtools/test/err_type.cpp | 2 +-
.../dexter/feature_tests/subtools/test/err_type_mline.cpp | 2 +-
.../feature_tests/subtools/test/err_undeclared_addr.cpp | 2 +-
.../feature_tests/subtools/test/label_another_line.cpp | 2 +-
.../dexter/feature_tests/subtools/test/label_offset.cpp | 2 +-
.../dexter/feature_tests/subtools/test/source-root-dir.cpp | 2 +-
.../dexter/feature_tests/subtools/test/target_run_args.c | 2 +-
.../subtools/test/target_run_args_with_command.c | 2 +-
.../debuginfo-tests/dexter/feature_tests/subtools/view.cpp | 7 +++----
142 files changed, 151 insertions(+), 152 deletions(-)
diff --git a/cross-project-tests/debuginfo-tests/dexter/Heuristic.md b/cross-project-tests/debuginfo-tests/dexter/Heuristic.md
index a78c433747fb8..87b7e4650f0d0 100644
--- a/cross-project-tests/debuginfo-tests/dexter/Heuristic.md
+++ b/cross-project-tests/debuginfo-tests/dexter/Heuristic.md
@@ -1,5 +1,7 @@
# Dexter Heuristic Testing
+Dexter's heuristic mode can be accessed by using the `--use-heuristic` flag.
+
The old test model for Dexter is based on a debug experience "heuristic", combining a variety of different measures produced by "commands" into a single score, ranging from 0.0 (the lowest score) to 1.0 (a perfect score). The contribution from each command and each kind of failure towards this overall score is determine by a set of weights, which are assigned default values but can be given explicit overrides via command line. The set of commands and their behaviour are documented in [Commands.md](./Commands.md).
## Running a test case
diff --git a/cross-project-tests/debuginfo-tests/dexter/Script.md b/cross-project-tests/debuginfo-tests/dexter/Script.md
index 05ad986d495eb..e4b1b6022dddc 100644
--- a/cross-project-tests/debuginfo-tests/dexter/Script.md
+++ b/cross-project-tests/debuginfo-tests/dexter/Script.md
@@ -1,7 +1,5 @@
# Dexter Script Testing
-Dexter's script mode can be accessed by using the `--use-script` flag.
-
Dexter scripts are represented by YAML documents, which contain various "nodes" instructing Dexter how to step through the debuggee program, what information to collect and store from the debugger, and how to evaluate the result. A simple Dexter script looks something like this:
```yaml
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py
index c32e6df3d0094..424c37e39545f 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py
@@ -169,12 +169,12 @@ def _get_step_info(self, watches, step_index):
)
def get_stack_frames(self, step_index: int) -> StepIR:
- raise NotImplementedError("--use-script debugging not supported in dbgeng yet.")
+ raise NotImplementedError("--use-heuristic required for dbgeng.")
def collect_watches(
self, step: StepIR, frame_idx: int, watches: List[str], scope_watches: List[str]
):
- raise NotImplementedError("--use-script debugging not supported in dbgeng yet.")
+ raise NotImplementedError("--use-heuristic required for dbgeng.")
@property
def is_running(self):
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py
index 6383036a8e1f1..1e40caa27ca63 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py
@@ -320,12 +320,12 @@ def _get_step_info(self, watches, step_index):
)
def get_stack_frames(self, step_index: int) -> StepIR:
- raise NotImplementedError("--use-script debugging not supported in lldb yet.")
+ raise NotImplementedError("--use-heuristic required for dbgeng.")
def collect_watches(
self, step: StepIR, frame_idx: int, watches: List[str], scope_watches: List[str]
):
- raise NotImplementedError("--use-script debugging not supported in lldb yet.")
+ raise NotImplementedError("--use-heuristic required for dbgeng.")
@property
def is_running(self):
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py
index 63b0abf681932..e6e49e7c50e0f 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py
@@ -395,14 +395,14 @@ def _get_step_info(self, watches, step_index):
def get_stack_frames(self, step_index: int) -> StepIR:
raise NotImplementedError(
- "--use-script debugging not supported in visual studio yet."
+ "--use-heuristic required for visual studio."
)
def collect_watches(
self, step: StepIR, frame_idx: int, watches: List[str], scope_watches: List[str]
):
raise NotImplementedError(
- "--use-script debugging not supported in visual studio yet."
+ "--use-heuristic required for visual studio."
)
@property
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/tools/TestToolBase.py b/cross-project-tests/debuginfo-tests/dexter/dex/tools/TestToolBase.py
index c153193a0baca..93f83b80a5a62 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/tools/TestToolBase.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/tools/TestToolBase.py
@@ -66,10 +66,10 @@ def add_tool_arguments(self, parser, defaults):
help="if passed, result names will include relative path from this directory",
)
parser.add_argument(
- "--use-script",
+ "--use-heuristic",
action="store_true",
default=False,
- help="if passed, Dexter will look for a structured YAML script instead of dexter commands",
+ help="if passed, Dexter will use heuristic-mode instead of script-mode (the default)",
)
def handle_options(self, defaults):
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/tools/test/Tool.py b/cross-project-tests/debuginfo-tests/dexter/dex/tools/test/Tool.py
index ed14a95aece75..ac53a4cb5fd0a 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/tools/test/Tool.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/tools/test/Tool.py
@@ -147,7 +147,7 @@ def _init_debugger_controller(self):
dexter_version=self.context.version,
)
- if self.context.options.use_script:
+ if not self.context.options.use_heuristic:
step_collection.script, new_source_files = get_dexter_script(
self.context,
self.context.options.test_files[0],
@@ -160,7 +160,7 @@ def _init_debugger_controller(self):
self.context.options.source_files.extend(list(new_source_files))
- if self.context.options.use_script:
+ if not self.context.options.use_heuristic:
debugger_controller = ScriptDebuggerController(
self.context, step_collection
)
@@ -324,7 +324,7 @@ def _run_test(self, test_name):
print("\n".join(step.detailed_print()))
return
self._record_steps(test_name, steps)
- if self.context.options.use_script:
+ if not self.context.options.use_heuristic:
# Before evaluating, the script may contain "unknown" expects; if they should be rewritten, then do so
# first, and then use the rewritten script to evaluate.
script_writer = ScriptExpectWriter(self.context, steps)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/control/dex-continue.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/control/dex-continue.cpp
index 2d5cbe04569d5..cb3f85b4e6936 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/control/dex-continue.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/control/dex-continue.cpp
@@ -9,7 +9,7 @@
// UNSUPPORTED: system-windows
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run -v --binary %t -- %s 2>&1 | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic -v --binary %t -- %s 2>&1 | FileCheck %s
int g = 0;
int c(int) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/control/dex_step_function.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/control/dex_step_function.cpp
index 900e10b64a96e..cefe1e52fedb0 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/control/dex_step_function.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/control/dex_step_function.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-windows
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run -v --binary %t -- %s 2>&1 | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic -v --binary %t -- %s 2>&1 | FileCheck %s
int g = 0;
int c(int) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/dex_declare_file.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/dex_declare_file.cpp
index 4ee8effda39e4..68dc24200d754 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/dex_declare_file.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/dex_declare_file.cpp
@@ -6,7 +6,7 @@
//
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: dex_declare_file.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp
index 934b4e978073f..93b3b0f667266 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: expect_program_state.cpp:
int GCD(int lhs, int rhs)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp
index b059c993ba8bf..1fdb7982341fa 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: expect_step_kinds.cpp:
int abs(int i){
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp
index 391153ba18291..2fd42a9cf9324 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: expect_step_order.cpp:
int main()
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp
index 507f821cfd08c..0ee9cb38da410 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp
@@ -10,7 +10,7 @@
// expected behaviour.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: expect_watch_type.cpp:
template<class T>
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp
index 4cd2b390623c1..fff2941a15b0e 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp
@@ -6,7 +6,7 @@
//
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: expect_watch_value.cpp:
int main()
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_out_range.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_out_range.cpp
index 466dff34efc6f..f1fa31adae4e5 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_out_range.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_out_range.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: float_range_out_range.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_zero_nonmatch.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_zero_nonmatch.cpp
index e4f9e116d93fd..fe2eb0839fcb2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_zero_nonmatch.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_zero_nonmatch.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: float_range_zero_nonmatch.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/missing_dex_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/missing_dex_address.cpp
index c5803dd11d134..1373ffb0a2ee9 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/missing_dex_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/missing_dex_address.cpp
@@ -6,7 +6,7 @@
// UNSUPPORTED: system-windows
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: missing_dex_address.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp
index ddccf68caf9e4..4cc047fb76f79 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp
@@ -6,7 +6,7 @@
//
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: unreachable.cpp:
int
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_line_range.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_line_range.cpp
index b6925eb4e6c20..9e36f95c03599 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_line_range.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_line_range.cpp
@@ -6,7 +6,7 @@
//
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: unreachable_line_range.cpp:
int
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_on_line.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_on_line.cpp
index ba741a48850b7..86c1b36c0afe1 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_on_line.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_on_line.cpp
@@ -6,7 +6,7 @@
//
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: unreachable_on_line.cpp:
int
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/command_line.c b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/command_line.c
index b7f29abb86575..5b19a5a82ce9b 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/command_line.c
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/command_line.c
@@ -2,7 +2,7 @@
// UNSUPPORTED: system-windows
//
// RUN: %dexter_regression_test_c_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: command_line.c:
int main(int argc, const char **argv) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_after_ref.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_after_ref.cpp
index 67afd6687c3dc..f4a14836e33ea 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_after_ref.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_after_ref.cpp
@@ -3,7 +3,7 @@
// the first reference to that value.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: address_after_ref.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_hit_count.cpp
index 9fd1b24774285..1695485c63910 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_hit_count.cpp
@@ -5,7 +5,7 @@
// times.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: address_hit_count.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/expression_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/expression_address.cpp
index 0f4463338bba6..89286eb89db48 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/expression_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/expression_address.cpp
@@ -3,7 +3,7 @@
// addresses of two local variables that refer to the same address.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: expression_address.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/identical_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/identical_address.cpp
index edcda2c94a441..5851976d97631 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/identical_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/identical_address.cpp
@@ -3,7 +3,7 @@
// pointer variables.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: identical_address.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/multiple_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/multiple_address.cpp
index 66dcdb3ff42ab..ada450cec2b89 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/multiple_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/multiple_address.cpp
@@ -3,7 +3,7 @@
// addresses can be used within a single \DexExpectWatchValue.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: multiple_address.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/offset_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/offset_address.cpp
index b6e4f2cb535ad..cbe8e43a7034f 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/offset_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/offset_address.cpp
@@ -3,7 +3,7 @@
// variables that have a fixed offset between them.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: offset_address.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/self_comparison.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/self_comparison.cpp
index 295a05556d287..c054f0a0af463 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/self_comparison.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/self_comparison.cpp
@@ -3,7 +3,7 @@
// value of a variable over time, relative to its initial value.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: self_comparison.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/dex_and_source/test.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/dex_and_source/test.cpp
index 9e720ff8aa557..6be387c421fbd 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/dex_and_source/test.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/dex_and_source/test.cpp
@@ -7,7 +7,7 @@
//
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: dex_and_source
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional.cpp
index f419577e2d02e..4bbc27e3f35a2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional.cpp
@@ -7,7 +7,7 @@
// Tests using the default controller (no \DexLimitSteps).
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: default_conditional.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional_hit_count.cpp
index cd18523468267..154db536ac3d7 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional_hit_count.cpp
@@ -8,7 +8,7 @@
// Tests using the default controller (no \DexLimitSteps).
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: default_conditional_hit_count.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_hit_count.cpp
index efc22a6d7d816..a81a11dd3f8d6 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_hit_count.cpp
@@ -5,7 +5,7 @@
// Tests using the default controller (no \DexLimitSteps).
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: default_hit_count.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_simple.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_simple.cpp
index ee4cf1decf285..cfa4237cd7082 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_simple.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_simple.cpp
@@ -5,7 +5,7 @@
// Tests using the default controller (no \DexLimitSteps).
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: default_simple.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional.cpp
index 253e984e51c4b..0b5044f507d82 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional.cpp
@@ -8,7 +8,7 @@
// UNSUPPORTED: system-windows
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_conditional.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional_hit_count.cpp
index ac64d49d5392d..37a3904c29542 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional_hit_count.cpp
@@ -9,7 +9,7 @@
// UNSUPPORTED: system-windows
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_conditional_hit_count.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_hit_count.cpp
index ce9432f47bfaa..2dd49872e29ca 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_hit_count.cpp
@@ -8,7 +8,7 @@
// UNSUPPORTED: system-windows
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_hit_count.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_simple.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_simple.cpp
index 923f596ab84ed..b140c8eaca2ca 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_simple.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_simple.cpp
@@ -8,7 +8,7 @@
// UNSUPPORTED: system-windows, system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_simple.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp
index 58bdf40d9e112..284e624086d6c 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp
@@ -6,7 +6,7 @@
//
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: expect_program_state.cpp:
int GCD(int lhs, int rhs)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp
index 45a739b9c126e..6945a3d3742e0 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp
@@ -14,7 +14,7 @@
// UNSUPPORTED: system-linux
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: direction.cpp:
int func(int i) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp
index 0ea8875a9e21a..0394dbc3c2580 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp
@@ -6,7 +6,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: func.cpp:
int func(int i) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp
index eeb1e8cf7d26c..0068baca4474e 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp
@@ -9,7 +9,7 @@
// why.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: func_external.cpp:
#include <cstdlib>
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp
index 3642c9baf7a4f..fbc9a3b60e998 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp
@@ -6,7 +6,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: recursive.cpp:
int func(int i) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp
index 18859bd50089c..25f64ce084650 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp
@@ -6,7 +6,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: small_loop.cpp:
int func(int i){
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp
index 22883a7ce0c66..6ff1428a6bcbb 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: expect_step_order.cpp:
int main() // DexLabel('main')
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp
index ddc5e7cce6e98..785306791437e 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp
@@ -9,7 +9,7 @@
// XFAIL: system-windows
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: expect_watch_type.cpp:
template<class T>
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp
index 593488b809959..0cd8549bbd722 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: expect_watch_value.cpp:
unsigned long Factorial(int n) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_multiple.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_multiple.cpp
index 0ef1724c97eb5..617510d011d09 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_multiple.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_multiple.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: float_range_multiple.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_no_arg.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_no_arg.cpp
index 06454880b0fe9..caa6e59964020 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_no_arg.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_no_arg.cpp
@@ -8,7 +8,7 @@
// UNSUPPORTED: system-darwin, system-windows
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: float_range_no_arg.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_small.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_small.cpp
index 2e105a4ef3fbf..9b00e55f02c30 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_small.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_small.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: float_range_small.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_zero_match.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_zero_match.cpp
index 3c1926fd3cede..7579725611b55 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_zero_match.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_zero_match.cpp
@@ -4,7 +4,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: float_range_zero_match.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/hit_count.cpp
index 9f91145eaa3a5..56262e12b9c58 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/hit_count.cpp
@@ -3,7 +3,7 @@
// the number of times the command can trigger.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: hit_count.cpp
int a;
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_check_json_step_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_check_json_step_count.cpp
index ce28423b0c57f..62640fee6aaaa 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_check_json_step_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_check_json_step_count.cpp
@@ -2,7 +2,7 @@
// Check number of step lines are correctly reported in json output.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t --verbose -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t --verbose -- %s | FileCheck %s
// CHECK: limit_steps_check_json_step_count.cpp
// CHECK: ## BEGIN ##
// CHECK-COUNT-3: json_step_count.cpp",
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_loop.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_loop.cpp
index 15c8c87d906fb..c8c61a8df7b94 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_loop.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_loop.cpp
@@ -3,7 +3,7 @@
// for loop.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_expect_loop.cpp:
int main(const int argc, const char * argv[]) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_value.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_value.cpp
index 03b01cf574c1e..cc6a3ca01609e 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_value.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_value.cpp
@@ -2,7 +2,7 @@
// Ensure that limited stepping breaks for all expected values.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_expect_value.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_line_mismatch.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_line_mismatch.cpp
index 8b242c4e288f6..c91c05e24df25 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_line_mismatch.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_line_mismatch.cpp
@@ -4,7 +4,7 @@
// empty line.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_line_mismatch.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_overlapping_ranges.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_overlapping_ranges.cpp
index a99f6bbbe545a..f6ffc8e11181c 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_overlapping_ranges.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_overlapping_ranges.cpp
@@ -2,7 +2,7 @@
// Ensure that multiple overlapping \DexLimitSteps ranges do not interfere.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_overlapping_ranges.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_same_line_conditional.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_same_line_conditional.cpp
index 6613ad2355c7c..1470184180405 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_same_line_conditional.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_same_line_conditional.cpp
@@ -2,7 +2,7 @@
// Test that LimitStep commands can exist on the same from line.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_same_line_conditional.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/unconditional.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/unconditional.cpp
index 3a145eaa400a5..1743e52801738 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/unconditional.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/unconditional.cpp
@@ -3,7 +3,7 @@
// breakpoint range is set any time from_line is stepped on).
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: unconditional.cpp
int glob;
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp
index 7f42c50c1c791..f02c12a8be2f8 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: unreachable.cpp:
int main()
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_not_cmd_lineno.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_not_cmd_lineno.cpp
index 58ab2e6734057..2930c10309a81 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_not_cmd_lineno.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_not_cmd_lineno.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: unreachable_not_cmd_lineno.cpp:
int main(int argc, char **argv)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_on_line.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_on_line.cpp
index f414729855177..69129d044de41 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_on_line.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_on_line.cpp
@@ -5,7 +5,7 @@
// UNSUPPORTED: system-darwin
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: unreachable_on_line.cpp:
int main()
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/conditions.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/conditions.cpp
index 3e83a66030c28..178b742d8e3c2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/conditions.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/conditions.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
/// Test that we correctly interpret nested !where+!and nodes during debugging
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/debug_aggregates.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/debug_aggregates.cpp
index 9c1ae041b45bb..ec5a60cb82e14 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/debug_aggregates.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/debug_aggregates.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t \
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t \
// RUN: -- %s | FileCheck %s
/// Check that the debugger is able to fetch the components of aggregate values.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/simple_where_function.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/simple_where_function.cpp
index c25dce5aff443..9c9ea3ccab725 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/simple_where_function.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/simple_where_function.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t -- %s | FileCheck %s
void assign(int *Target, int Value) {
// A comment.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/simple_where_line.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/simple_where_line.cpp
index 731c3602318c9..cc0e791134a3e 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/simple_where_line.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/simple_where_line.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t -- %s | FileCheck %s
/// Test that we can perform a simple non-nested line-based !where.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_after_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_after_hit_count.cpp
index c6366f7376a2b..91ffe607eedc8 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_after_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_after_hit_count.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t \
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t \
// RUN: -- %s | FileCheck %s
/// Test !then finish with !and{after_hit_count}.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_at_frame.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_at_frame.cpp
index 91aa278450074..16655f56cc433 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_at_frame.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_at_frame.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t \
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t \
// RUN: -- %s | FileCheck %s --implicit-check-not="(int) -5"
// NB: Test CHECKs use line numbers, update them accordingly if adding/removing
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_finish.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_finish.cpp
index 44c580d95545d..cf93b8ded3e49 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_finish.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_finish.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t \
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t \
// RUN: -- %s | FileCheck %s
/// Test that when we use !then finish, we finish the entire test immediately,
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_step_out.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_step_out.cpp
index 69fbd54abb143..48e2e88430033 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_step_out.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/then_step_out.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t \
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t \
// RUN: -- %s | FileCheck %s
/// Test that when we use !then step_out, we jump out of the current frame, but
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/watch_scope.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/watch_scope.cpp
index 07ccb1cd5aa9f..a861f78f74677 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/watch_scope.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/watch_scope.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t \
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t \
// RUN: -- %s | FileCheck %s
char There[] = "Here";
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_file_paths.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_file_paths.cpp
index e0fc61e7d0f45..a09975721cae2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_file_paths.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_file_paths.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t -- %s | FileCheck %s --implicit-check-not="header.h(9"
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t -- %s | FileCheck %s --implicit-check-not="header.h(9"
/// Test that we can use file paths as part of a !where node, and that we can
/// use a trailing subset of the file path, including just the base filename, to
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_fn_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_fn_hit_count.cpp
index 0796968b47943..a2f5a6ce3f34f 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_fn_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_fn_hit_count.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t \
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t \
// RUN: -- %s | FileCheck %s
/// Test that we record hit counts for !where{function} nodes, even when there
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_for_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_for_hit_count.cpp
index 8a540b356b952..8d6d8e38c2fed 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_for_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_for_hit_count.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t \
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t \
// RUN: -- %s | FileCheck %s
/// Test !where nodes work with for_hit_count.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_hit_count_early_exit.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_hit_count_early_exit.cpp
index 5d799f4119c47..23cc80d19df81 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_hit_count_early_exit.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/debugging/where_hit_count_early_exit.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --skip-evaluate --binary %t \
+// RUN: %dexter_regression_test_run --skip-evaluate --binary %t \
// RUN: --timeout-total 10 -- %s 2>&1 | FileCheck %s
/// Test that when all root !where nodes have expired, we exit without waiting
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/basic_evaluate.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/basic_evaluate.cpp
index 113044a6510a8..20f4652cd0103 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/basic_evaluate.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/basic_evaluate.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// Test evaluation of a simple Dexter test.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_address.cpp
index 603497baa1cc5..7b825fe8c7913 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_address.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
// Test evaluation of !address nodes in Dexter.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_aggregates.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_aggregates.cpp
index 77662cbbf2437..5193a494e65d2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_aggregates.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_aggregates.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
/// Check that the debugger is able to evaluate the components of aggregate
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_at_frame.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_at_frame.cpp
index fa01c7d7c2ab7..d3116c00ab7b1 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_at_frame.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_at_frame.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
// Test evaluation of !and{at_frame_idx} nodes in Dexter.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_list_aggregates.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_list_aggregates.cpp
index f76c929253f99..1de1a67e7bfc3 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_list_aggregates.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_list_aggregates.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
/// Check that the debugger is able to correctly evaluate a list of expected
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_steps_penalties.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_steps_penalties.cpp
index 233aa4bfc872b..1346c48c8cb36 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_steps_penalties.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_steps_penalties.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
// Test evaluation of !step nodes in Dexter.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_steps_perfect.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_steps_perfect.cpp
index 2848ae1635104..c12f95c2b7e97 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_steps_perfect.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_steps_perfect.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
// Test evaluation of !step nodes in Dexter.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates.cpp
index cc1cda551b268..713693098c220 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates.cpp
@@ -1,8 +1,8 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-FORWARD
// RUN: %dexter_regression_test_cxx_build %s -o %t -DREVERSE_TEST
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-REVERSE
/// Check that the debugger is able to correctly evaluate lists of values for
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates_addresses.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates_addresses.cpp
index a60a628758262..e9de413e4d52a 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates_addresses.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates_addresses.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
/// Tests that expected value lists for aggregate members work as expected with
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_types.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_types.cpp
index 02e8d5d2c3a82..8b0245bbf4f86 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_types.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_types.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
// Test evaluation of !type nodes in Dexter.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/evaluate_nothing.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/evaluate_nothing.cpp
index 40456442ebad8..6aabfaea09474 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/evaluate_nothing.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/evaluate_nothing.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// Test evaluation of a Dexter test with no expects.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/floats.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/floats.cpp
index 66e24f7d57e7a..46ad9947ac192 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/floats.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/floats.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
/// Test that we correctly match float values against Float nodes, and also
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/invalid_label.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/invalid_label.cpp
index bcc9743dd50fd..c9535cceb4bd6 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/invalid_label.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/invalid_label.cpp
@@ -1,6 +1,6 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
// RUN: not %dexter_regression_test_run --source-root-dir %S/Inputs \
-// RUN: --use-script --binary %t -- %s 2>&1 | FileCheck %s
+// RUN: --binary %t -- %s 2>&1 | FileCheck %s
int main() {
int a = 4;
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/offset.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/offset.cpp
index 9d4d05b1f2039..80dc24b5ec4b4 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/offset.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/offset.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/simple_labels.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/simple_labels.cpp
index 2125dd3d4bafd..8d871010ebe56 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/simple_labels.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/simple_labels.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
#include "Inputs/header.h"
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/source_root_dir.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/source_root_dir.cpp
index 5e6435a8809b2..6bed3a54c392b 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/source_root_dir.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/labels/source_root_dir.cpp
@@ -1,6 +1,6 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
// RUN: %dexter_regression_test_run --source-root-dir %S/Inputs \
-// RUN: --use-script --binary %t -- %s | FileCheck %s
+// RUN: --binary %t -- %s | FileCheck %s
// Check that when --source-root-dir is provided, labels will be checked
// relative to that directory.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/nested_wheres.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/nested_wheres.cpp
index 5def3f050a2b2..11b34abd73180 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/nested_wheres.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/nested_wheres.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
/// Test that we correctly interpret nested !where+!and nodes during debugging
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/bad-where-attr.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/bad-where-attr.test
index 9d1d01413acec..1111e1d87f461 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/bad-where-attr.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/bad-where-attr.test
@@ -1,4 +1,4 @@
-RUN: not %dexter_regression_test_run --binary %s --use-script -- %s 2>&1 | FileCheck %s
+RUN: not %dexter_regression_test_run --binary %s -- %s 2>&1 | FileCheck %s
This is a test that when the script document starts part-way through a file, any syntax errors are reported with the
correct line number.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/error-locations.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/error-locations.test
index 941d5963ccb61..f41a40c553ca0 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/error-locations.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/error-locations.test
@@ -1,4 +1,4 @@
-RUN: not %dexter_regression_test_run --binary %s --use-script -- %s 2>&1 | FileCheck %s
+RUN: not %dexter_regression_test_run --binary %s -- %s 2>&1 | FileCheck %s
This is a test that when the script document starts part-way through a file, any syntax errors are reported with the
correct line number.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/expect-all-with-value.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/expect-all-with-value.test
index c5cb3c084e2bd..e9222f7decabc 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/expect-all-with-value.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/expect-all-with-value.test
@@ -1,4 +1,4 @@
-RUN: not %dexter_regression_test_run --binary %s --use-script --skip-run -- %s 2>&1 | FileCheck %s
+RUN: not %dexter_regression_test_run --binary %s --skip-run -- %s 2>&1 | FileCheck %s
Tests that we reject !expect/all nodes with expected values.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/invalid-address.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/invalid-address.test
index beae06b2eae0e..0abea09526105 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/invalid-address.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/invalid-address.test
@@ -1,4 +1,4 @@
-RUN: not %dexter_regression_test_run --binary %s --use-script --skip-run -- %s 2>&1 | FileCheck %s
+RUN: not %dexter_regression_test_run --binary %s --skip-run -- %s 2>&1 | FileCheck %s
Tests that we reject ill-formed addresses.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/invalid-script-nodes.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/invalid-script-nodes.test
index 993b8998a99e0..59cb739da6798 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/invalid-script-nodes.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/invalid-script-nodes.test
@@ -1,4 +1,4 @@
-RUN: not %dexter_regression_test_run --binary %s --use-script -- %s 2>&1 | FileCheck %s
+RUN: not %dexter_regression_test_run --binary %s -- %s 2>&1 | FileCheck %s
This is a test that Dexter validates that nodes appear in the correct place in scripts.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/parse-address.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/parse-address.test
index de9327b607a04..10dba2d3203dc 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/parse-address.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/parse-address.test
@@ -1,4 +1,4 @@
-RUN: %dexter_regression_test_run --binary %s --use-script --skip-run -- %s 2>&1 | FileCheck %s
+RUN: %dexter_regression_test_run --binary %s --skip-run -- %s 2>&1 | FileCheck %s
Tests that we can correctly parse+print !address nodes.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/reject-bad-at_frame_idx.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/reject-bad-at_frame_idx.test
index 2edf4139322e6..c29f6e4e5bce4 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/reject-bad-at_frame_idx.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/reject-bad-at_frame_idx.test
@@ -1,4 +1,4 @@
-RUN: not %dexter_regression_test_run --binary %s --use-script --skip-run -- %s 2>&1 | FileCheck %s
+RUN: not %dexter_regression_test_run --binary %s --skip-run -- %s 2>&1 | FileCheck %s
Tests that we reject invalid at_frame_idx uses.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/step-node-expected-values.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/step-node-expected-values.test
index b98d4f2767dcc..ec0601ec0b879 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/step-node-expected-values.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/step-node-expected-values.test
@@ -1,4 +1,4 @@
-RUN: not %dexter_regression_test_run --binary %s --use-script --skip-run -- %s 2>&1 | FileCheck %s
+RUN: not %dexter_regression_test_run --binary %s --skip-run -- %s 2>&1 | FileCheck %s
Tests that !step expected values must not be anything other than a list of integers.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/valid-parse.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/valid-parse.test
index f4da3bff9a1ef..4326fced66438 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/valid-parse.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/parser/valid-parse.test
@@ -1,4 +1,4 @@
-RUN: %dexter_regression_test_run --binary %s --use-script --skip-run -- %s 2>&1 | FileCheck %s
+RUN: %dexter_regression_test_run --binary %s --skip-run -- %s 2>&1 | FileCheck %s
Provides a valid test case and checks that we can parse it successfully and print the script back out correctly.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_aggregates_expected.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_aggregates_expected.cpp
index 8f9c5206e6480..c3fd25be3a043 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_aggregates_expected.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_aggregates_expected.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} %S/Inputs/rewrite_aggregates_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_at_frame_expected.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_at_frame_expected.cpp
index b871b07896df1..52867cb13dc97 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_at_frame_expected.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_at_frame_expected.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} \
// RUN: %S/Inputs/rewrite_at_frame_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_expect_list_expected.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_expect_list_expected.cpp
index cec451fdd69c9..707fe939c4411 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_expect_list_expected.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_expect_list_expected.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} %S/Inputs/rewrite_expect_list_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_expects_expected.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_expects_expected.cpp
index 2c04bcdc0fe0c..44dc950fdd0fb 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_expects_expected.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_expects_expected.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} %S/Inputs/rewrite_expects_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_list_aggregates_expected.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_list_aggregates_expected.cpp
index 630ed6e887413..8b809f0eea2ba 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_list_aggregates_expected.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_list_aggregates_expected.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} \
// RUN: %S/Inputs/rewrite_list_aggregates_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_multiple_scripts_expected.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_multiple_scripts_expected.cpp
index 134d32f93a5a4..4ed2ad9e22398 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_multiple_scripts_expected.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_multiple_scripts_expected.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} \
// RUN: %S/Inputs/rewrite_multiple_scripts_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_scopes_expected.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_scopes_expected.cpp
index 0786712bcf65c..525c2c5515af1 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_scopes_expected.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_scopes_expected.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} \
// RUN: %S/Inputs/rewrite_scopes_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_scopes_list_expected.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_scopes_list_expected.cpp
index 8c536f08b710b..2d8d897573232 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_scopes_list_expected.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_scopes_list_expected.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} \
// RUN: %S/Inputs/rewrite_scopes_list_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_types_expected.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_types_expected.cpp
index 1166cb8b8f6f9..a42642c4bc5b9 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_types_expected.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_types_expected.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} %S/Inputs/rewrite_types_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_aggregates.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_aggregates.cpp
index da55a3345093c..8b07a10dd119a 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_aggregates.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_aggregates.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} %S/Inputs/rewrite_aggregates_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_at_frame.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_at_frame.cpp
index 48ce084769a21..b4982dd8076bf 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_at_frame.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_at_frame.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} \
// RUN: %S/Inputs/rewrite_at_frame_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_expect_list.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_expect_list.cpp
index dee5c936522e5..48bef61aef7f8 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_expect_list.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_expect_list.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} %S/Inputs/rewrite_expect_list_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_expects.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_expects.cpp
index 256804e114ad7..0a6e847a691af 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_expects.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_expects.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} %S/Inputs/rewrite_expects_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_list_aggregates.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_list_aggregates.cpp
index ab517d1342b2f..a9d5fb82915a5 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_list_aggregates.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_list_aggregates.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} \
// RUN: %S/Inputs/rewrite_list_aggregates_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_multiple_scripts.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_multiple_scripts.cpp
index ce3b8f6b2db38..45bf34106d8ea 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_multiple_scripts.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_multiple_scripts.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} \
// RUN: %S/Inputs/rewrite_multiple_scripts_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_scopes.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_scopes.cpp
index fc0fec1a91bb0..db7af7af29bb9 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_scopes.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_scopes.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} \
// RUN: %S/Inputs/rewrite_scopes_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_scopes_list.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_scopes_list.cpp
index 1291a30fb2796..d7ca2cb96575f 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_scopes_list.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_scopes_list.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} \
// RUN: %S/Inputs/rewrite_scopes_list_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_step_lines.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_step_lines.test
index a67664c96d61d..624ff658fb6cf 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_step_lines.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_step_lines.test
@@ -2,7 +2,7 @@ RUN: rm -rf %t
RUN: mkdir %t
RUN: %dexter_regression_test_cxx_build %S/Inputs/rewrite_step_lines.cpp \
RUN: -o %t/test
-RUN: %dexter_regression_test_run --use-script --binary %t/test \
+RUN: %dexter_regression_test_run --binary %t/test \
RUN: --results-directory %t/results -- %S/Inputs/rewrite_step_lines.cpp 2>&1 \
RUN: | FileCheck %s
RUN: diff %t/results/rewrite_step_lines.cpp \
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_types.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_types.cpp
index 119f348b3c22c..abb0b1ecd4213 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_types.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_types.cpp
@@ -1,7 +1,7 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %dexter_regression_test_cxx_build %s -o %t/test
-// RUN: %dexter_regression_test_run --use-script --binary %t/test \
+// RUN: %dexter_regression_test_run --binary %t/test \
// RUN: --results-directory %t/results -- %s 2>&1 | FileCheck %s
// RUN: diff %t/results/%{s:basename} %S/Inputs/rewrite_types_expected.cpp
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/whole_file.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/whole_file.test
index 7168e4a7dd8ac..33c9cf9de9c46 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/whole_file.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/whole_file.test
@@ -1,7 +1,7 @@
RUN: rm -rf %t
RUN: mkdir %t
RUN: %dexter_regression_test_cxx_build %S/Inputs/simple_prog.cpp -o %t/test
-RUN: %dexter_regression_test_run --use-script --binary %t/test \
+RUN: %dexter_regression_test_run --binary %t/test \
RUN: --results-directory %t/results --source-root-dir %S/Inputs -- \
RUN: %S/Inputs/whole_file_test.dex 2>&1 | FileCheck %s
RUN: diff %t/results/whole_file_test.dex %S/Inputs/whole_file_test_expected.dex
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/where_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/where_hit_count.cpp
index 18db2df8a46b2..b44e2c3f1bb34 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/where_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/where_hit_count.cpp
@@ -1,5 +1,5 @@
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --use-script --binary %t -- %s \
+// RUN: %dexter_regression_test_run --binary %t -- %s \
// RUN: | FileCheck %s
/// Test that Dexter respects for and after hit_counts.
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/address_printing.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/address_printing.cpp
index 133679ee6950f..b12ed4c148291 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/address_printing.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/address_printing.cpp
@@ -12,7 +12,7 @@
// UNSUPPORTED: system-windows
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -v -- %s | FileCheck %s
// CHECK: Resolved Addresses:
// CHECK-NEXT: 'x_2': 0x[[X2_VAL:[0-9a-f]+]]
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_bad_label_ref.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_bad_label_ref.cpp
index 0921d7991bb6e..03eb41cffed5c 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_bad_label_ref.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_bad_label_ref.cpp
@@ -2,7 +2,7 @@
// Check that referencing an undefined label gives a useful error message.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s --match-full-lines
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -v -- %s | FileCheck %s --match-full-lines
//
// CHECK: parser error:{{.*}}err_bad_label_ref.cpp(15): Unresolved label: 'label_does_not_exist'
// CHECK-NEXT: {{Dex}}ExpectWatchValue('result', '0', on_line=ref('label_does_not_exist'))
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_address.cpp
index 6839360a7f3bc..962a065572ed2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_address.cpp
@@ -2,7 +2,7 @@
// Check that declaring duplicate addresses gives a useful error message.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s --match-full-lines
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -v -- %s | FileCheck %s --match-full-lines
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_label.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_label.cpp
index 89d6fb85d8d60..e6601cac70d77 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_label.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_label.cpp
@@ -2,7 +2,7 @@
// Check that defining duplicate labels gives a useful error message.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s --match-full-lines
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -v -- %s | FileCheck %s --match-full-lines
//
// CHECK: parser error:{{.*}}err_duplicate_label.cpp(12): Found duplicate line label: 'oops'
// CHECK-NEXT: {{Dex}}Label('oops')
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_label_kwarg.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_label_kwarg.cpp
index da15735252533..0e6bba795f023 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_label_kwarg.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_label_kwarg.cpp
@@ -2,7 +2,7 @@
// Check that bad keyword args in \DexLabel are reported.
// Use --binary switch to trick dexter into skipping the build step.
//
-// RUN: not %dexter_base test --binary %s %dexter_regression_test_debugger_args -- %s | FileCheck %s
+// RUN: not %dexter_base test --use-heuristic --binary %s %dexter_regression_test_debugger_args -- %s | FileCheck %s
// CHECK: parser error:{{.*}}err_label_kwarg.cpp(8): unexpected named args: bad_arg
// DexLabel('test', bad_arg=0)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_limit_steps_no_values.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_limit_steps_no_values.cpp
index 978450eeb8cd8..0e6963d3d5c51 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_limit_steps_no_values.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_limit_steps_no_values.cpp
@@ -3,7 +3,7 @@
// in a \DexLimitSteps command results in a useful error message.
// Use --binary switch to trick dexter into skipping the build step.
//
-// RUN: not %dexter_base test --binary %s %dexter_regression_test_debugger_args -- %s | FileCheck %s
+// RUN: not %dexter_base test --use-heuristic --binary %s %dexter_regression_test_debugger_args -- %s | FileCheck %s
// CHECK: parser error:{{.*}}err_limit_steps_no_values.cpp(9): expected 0 or at least 2 positional arguments
// DexLimitSteps('test')
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren.cpp
index e80b34da24ac4..c5e8db6bb9a8c 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren.cpp
@@ -5,7 +5,7 @@
// commands.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_base test --binary %t %dexter_regression_test_debugger_args \
+// RUN: not %dexter_base test --use-heuristic --binary %t %dexter_regression_test_debugger_args \
// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_paren.cpp(19): Unbalanced parenthesis starting here
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren_mline.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren_mline.cpp
index 8d5a9b0575996..af8c5b9021986 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren_mline.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren_mline.cpp
@@ -5,7 +5,7 @@
// commands.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_base test --binary %t %dexter_regression_test_debugger_args \
+// RUN: not %dexter_base test --use-heuristic --binary %t %dexter_regression_test_debugger_args \
// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_paren_mline.cpp(20): Unbalanced parenthesis starting here
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax.cpp
index 7e019df26e9bd..c535809b80fc9 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax.cpp
@@ -5,7 +5,7 @@
// commands.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_base test --binary %t %dexter_regression_test_debugger_args \
+// RUN: not %dexter_base test --use-heuristic --binary %t %dexter_regression_test_debugger_args \
// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_syntax.cpp(18): invalid syntax
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_dexdeclarefile.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_dexdeclarefile.cpp
index 0fdf255eded8f..226e54c6ed41b 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_dexdeclarefile.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_dexdeclarefile.cpp
@@ -3,7 +3,7 @@
// they appeared in rather than the current declared file.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_base test --binary %t %dexter_regression_test_debugger_args -v -- %s \
+// RUN: not %dexter_base test --use-heuristic --binary %t %dexter_regression_test_debugger_args -v -- %s \
// RUN: | FileCheck %s --implicit-check-not=FAIL-FILENAME-MATCH
// CHECK: err_syntax_dexdeclarefile.cpp(14): Undeclared address: 'not_been_declared'
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_mline.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_mline.cpp
index 342f2a53010ec..508d8746eec0a 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_mline.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_mline.cpp
@@ -5,7 +5,7 @@
// commands.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_base test --binary %t %dexter_regression_test_debugger_args \
+// RUN: not %dexter_base test --use-heuristic --binary %t %dexter_regression_test_debugger_args \
// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_syntax_mline.cpp(21): invalid syntax
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type.cpp
index 2865304101939..c4ee0e09f5be7 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type.cpp
@@ -5,7 +5,7 @@
// commands.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_base test --binary %t %dexter_regression_test_debugger_args \
+// RUN: not %dexter_base test --use-heuristic --binary %t %dexter_regression_test_debugger_args \
// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_type.cpp(18): expected at least two args
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type_mline.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type_mline.cpp
index 1062d2816b397..ef18e8c0bbb97 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type_mline.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type_mline.cpp
@@ -5,7 +5,7 @@
// commands.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_base test --binary %t %dexter_regression_test_debugger_args \
+// RUN: not %dexter_base test --use-heuristic --binary %t %dexter_regression_test_debugger_args \
// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_type_mline.cpp(19): expected at least two args
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_undeclared_addr.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_undeclared_addr.cpp
index 66a5e46254579..7b974ce417263 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_undeclared_addr.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_undeclared_addr.cpp
@@ -2,7 +2,7 @@
// Check that using an undeclared address gives a useful error message.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: not %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s --match-full-lines
+// RUN: not %dexter_regression_test_run --use-heuristic --binary %t -v -- %s | FileCheck %s --match-full-lines
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_another_line.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_another_line.cpp
index a28758a8fb53b..690456821328e 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_another_line.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_another_line.cpp
@@ -3,7 +3,7 @@
// that line instead of the line the command is found on.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -- %s | FileCheck %s
// CHECK: label_another_line.cpp: (1.0000)
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_offset.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_offset.cpp
index 334b6a565ee2e..dee543daf97c4 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_offset.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_offset.cpp
@@ -2,7 +2,7 @@
// Check that we can use label-relative line numbers.
//
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t -v -- %s | FileCheck %s
//
// CHECK: label_offset.cpp: (1.0000)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/source-root-dir.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/source-root-dir.cpp
index edbafdc6bfc10..ae97c4027b67e 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/source-root-dir.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/source-root-dir.cpp
@@ -2,7 +2,7 @@
// XFAIL:*
// RUN: %dexter_regression_test_cxx_build \
// RUN: -fdebug-prefix-map=%S=/changed %s -o %t
-// RUN: %dexter_regression_test_run \
+// RUN: %dexter_regression_test_run --use-heuristic \
// RUN: --binary %t --source-root-dir=%S --debugger-use-relative-paths -- %s
#include <stdio.h>
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args.c b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args.c
index d8a253e70f6b3..2eb4bcdae1156 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args.c
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args.c
@@ -2,7 +2,7 @@
// UNSUPPORTED: system-windows
//
// RUN: %dexter_regression_test_c_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t --target-run-args "a b 'c d'" -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t --target-run-args "a b 'c d'" -- %s | FileCheck %s
// CHECK: target_run_args.c:
int main(int argc, const char **argv) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args_with_command.c b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args_with_command.c
index 1f8ed5f189936..a226f61abfd24 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args_with_command.c
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args_with_command.c
@@ -2,7 +2,7 @@
// UNSUPPORTED: system-windows
//
// RUN: %dexter_regression_test_c_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t --target-run-args "a b 'c d'" -- %s | FileCheck %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t --target-run-args "a b 'c d'" -- %s | FileCheck %s
// CHECK: target_run_args_with_command.c:
int main(int argc, const char **argv) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/view.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/view.cpp
index 58e3644be5620..08bde74fa8dc2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/view.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/view.cpp
@@ -1,15 +1,14 @@
// Purpose:
// Check the `view` subtool works with typical inputs.
//
+// RUN: rm -rf %t
// RUN: %dexter_regression_test_cxx_build %s -o %t
-// RUN: %dexter_regression_test_run --binary %t --results %t.results -- %s
+// RUN: %dexter_regression_test_run --use-heuristic --binary %t \
+// RUN: --results %t.results -- %s
//
// RUN: %dexter_base view %t.results/view.cpp.dextIR | FileCheck %s
// CHECK: ## BEGIN
// CHECK: ## END
-//
-// # [TODO] This doesn't run if FileCheck fails!
-// RUN: rm -rf %t
int main() {
int a = 0;
>From dfea11cb8885c661f1a503070db73ab8ae91f085 Mon Sep 17 00:00:00 2001
From: Stephen Tozer <stephen.tozer at sony.com>
Date: Wed, 17 Jun 2026 15:50:14 +0100
Subject: [PATCH 2/3] Update LLDB-based dexter-tests to use script-mode
---
.../dexter-tests/aggregate-indirect-arg.cpp | 27 ++-
.../dexter-tests/asan-deque.cpp | 30 +++-
.../debuginfo-tests/dexter-tests/asan.c | 21 ++-
.../debuginfo-tests/dexter-tests/ctor.cpp | 26 ++-
.../debuginfo-tests/dexter-tests/dbg-arg.c | 24 ++-
.../dexter-tests/deferred_globals.cpp | 20 ++-
.../dexter-tests/memvars/bitcast.c | 26 ++-
.../dexter-tests/memvars/const-branch.c | 16 +-
.../dexter-tests/memvars/ctrl-flow.c | 21 ++-
.../dexter-tests/memvars/implicit-ptr.c | 28 ++-
.../memvars/inline-escaping-function.c | 14 +-
.../dexter-tests/memvars/inlining-dse.c | 41 ++---
.../dexter-tests/memvars/inlining.c | 16 +-
.../dexter-tests/memvars/loop.c | 22 ++-
.../dexter-tests/memvars/merged-store.c | 14 +-
.../dexter-tests/memvars/ptr-to.c | 24 ++-
.../dexter-tests/memvars/struct-dse.c | 23 ++-
.../memvars/unused-merged-value.c | 13 +-
.../dexter-tests/namespace.cpp | 16 +-
.../dexter-tests/nrvo-string.cpp | 26 ++-
.../dexter-tests/optnone-fastmath.cpp | 90 ++++++----
.../dexter-tests/optnone-loops.cpp | 122 +++++++------
.../dexter-tests/optnone-simple-functions.cpp | 149 ++++++++++------
.../optnone-struct-and-methods.cpp | 49 ++++--
.../optnone-vectors-and-functions.cpp | 166 ++++++++++--------
.../debuginfo-tests/dexter-tests/stack-var.c | 19 +-
.../debuginfo-tests/dexter-tests/vla.c | 18 +-
27 files changed, 669 insertions(+), 392 deletions(-)
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/aggregate-indirect-arg.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/aggregate-indirect-arg.cpp
index 4e06ba5d375ce..ac993ac287cfd 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/aggregate-indirect-arg.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/aggregate-indirect-arg.cpp
@@ -2,8 +2,8 @@
// UNSUPPORTED: system-windows
//
// RUN: %clang++ -std=gnu++11 -O0 -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
// Radar 8945514
class SVal {
@@ -16,7 +16,7 @@ class SVal {
void bar(SVal &v) {}
class A {
public:
- void foo(SVal v) { bar(v); } // DexLabel('foo')
+ void foo(SVal v) { bar(v); } // !dex_label foo
};
int main() {
@@ -28,17 +28,14 @@ int main() {
return 0;
}
+// CHECK-DAG: seen_values: 2
+// CHECK-DAG: correct_step_coverage: 100.0%
+
/*
-DexExpectProgramState({
- 'frames': [
- {
- 'location': { 'lineno': ref('foo') },
- 'watches': {
- 'v.Data == 0': 'true',
- 'v.Kind': '2142'
- }
- }
- ]
-})
+---
+!where {lines: !label foo}:
+ !value v:
+ Kind: 2142
+ !value "v.Data == 0": "true"
+...
*/
-
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/asan-deque.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/asan-deque.cpp
index d807fa1906080..1db61d8cd4fa2 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/asan-deque.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/asan-deque.cpp
@@ -9,8 +9,8 @@
// the debugged process and generally freak out.
// RUN: %clang++ -std=gnu++11 -O1 -glldb -fsanitize=address -arch x86_64 %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
#include <deque>
struct A {
@@ -32,16 +32,28 @@ int main() {
deq_t deq;
deq.push_back(1234);
deq.push_back(56789);
- escape(deq); // DexLabel('first')
+ escape(deq); // !dex_label first
while (!deq.empty()) {
auto record = deq.front();
deq.pop_front();
- escape(deq); // DexLabel('second')
+ escape(deq); // !dex_label second
}
}
-// DexExpectWatchValue('deq[0].a', '1234', on_line=ref('first'))
-// DexExpectWatchValue('deq[1].a', '56789', on_line=ref('first'))
-
-// DexExpectWatchValue('deq[0].a', '56789', '0', on_line=ref('second'))
-
+// CHECK-DAG: seen_values: 3
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label first}:
+ !value deq:
+ "[0]":
+ a: 1234
+ "[1]":
+ a: 56789
+!where {lines: !label second}:
+ !value deq:
+ "[0]":
+ a: 56789
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/asan.c b/cross-project-tests/debuginfo-tests/dexter-tests/asan.c
index 9105e1d8801b5..ad1fa584a8e51 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/asan.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/asan.c
@@ -5,15 +5,15 @@
//
// RUN: %clang -std=gnu11 --driver-mode=gcc -O0 -glldb -fblocks -arch x86_64 \
// RUN: -fsanitize=address %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
struct S {
int a[8];
};
int f(struct S s, unsigned i) {
- return s.a[i]; // DexLabel('asan')
+ return s.a[i]; // !dex_label asan
}
int main(int argc, const char **argv) {
@@ -23,7 +23,16 @@ int main(int argc, const char **argv) {
return 0;
}
-// DexExpectWatchValue('s.a[0]', '0', on_line=ref('asan'))
-// DexExpectWatchValue('s.a[1]', '1', on_line=ref('asan'))
-// DexExpectWatchValue('s.a[7]', '7', on_line=ref('asan'))
+// CHECK-DAG: seen_values: 3
+// CHECK-DAG: correct_step_coverage: 100.0%
+/*
+---
+!where {lines: !label asan}:
+ !value s:
+ a:
+ "[0]": 0
+ "[1]": 1
+ "[7]": 7
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/ctor.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/ctor.cpp
index 6b6dc3ef309b7..2d01114011dd1 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/ctor.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/ctor.cpp
@@ -2,12 +2,12 @@
// UNSUPPORTED: system-windows
//
// RUN: %clang++ -std=gnu++11 -O0 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
class A {
public:
- A() : zero(0), data(42) { // DexLabel('ctor_start')
+ A() : zero(0), data(42) { // !dex_label ctor_start
}
private:
int zero;
@@ -19,19 +19,13 @@ int main() {
return 0;
}
+// CHECK-DAG: total_watched_steps: 1
+// CHECK-DAG: irretrievable_steps: 0
/*
-DexExpectProgramState({
- 'frames': [
- {
- 'location': {
- 'lineno': ref('ctor_start')
- },
- 'watches': {
- '*this': {'is_irretrievable': False}
- }
- }
- ]
-})
+---
+!where {lines: !label ctor_start}:
+ !value this:
+ "*": "{}"
+...
*/
-
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/dbg-arg.c b/cross-project-tests/debuginfo-tests/dexter-tests/dbg-arg.c
index f1f145c7ff384..286470916b701 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/dbg-arg.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/dbg-arg.c
@@ -3,8 +3,8 @@
//
// This test case checks debug info during register moves for an argument.
// RUN: %clang -std=gnu11 -m64 -mllvm -fast-isel=false -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
//
// Radar 8412415
@@ -22,7 +22,7 @@ int bar(int, int);
int foobar(struct _mtx *mutex) {
int r = 1;
- int l = 0; // DexLabel('l_assign')
+ int l = 0; // !dex_label l_assign
int j = 0;
do {
if (mutex->waiters) {
@@ -44,17 +44,13 @@ int main() {
return foobar(&m);
}
+// CHECK-DAG: total_watched_steps: 1
+// CHECK-DAG: irretrievable_steps: 0
/*
-DexExpectProgramState({
- 'frames': [
- {
- 'location': { 'lineno': ref('l_assign') },
- 'watches': {
- '*mutex': { 'is_irretrievable': False }
- }
- }
- ]
-})
+---
+!where {lines: !label l_assign}:
+ !value mutex:
+ "*": "{}"
+...
*/
-
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/deferred_globals.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/deferred_globals.cpp
index 570708d4fa918..163da4312d370 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/deferred_globals.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/deferred_globals.cpp
@@ -5,8 +5,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang++ -std=gnu++11 -O0 -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -v -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -v -- %s | FileCheck %s
const int d = 100;
@@ -14,15 +14,23 @@ extern int foo();
int main() {
const int d = 4;
- const float e = 4; // DexLabel("main")
+ const float e = 4; // !dex_label main
const char *f = "Woopy";
return d + foo();
}
int foo() {
- return d; // DexLabel("foo")
+ return d; // !dex_label foo
}
-// DexExpectWatchValue('d', '4', on_line=ref('main'))
-// DexExpectWatchValue('d', '100', on_line=ref('foo'))
+// CHECK-DAG: seen_values: 2
+// CHECK-DAG: correct_step_coverage: 100.0%
+/*
+---
+!where {lines: !label main}:
+ !value d: 4
+!where {lines: !label foo}:
+ !value d: 100
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/bitcast.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/bitcast.c
index 69e3b8035511a..392dd399f482e 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/bitcast.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/bitcast.c
@@ -4,7 +4,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O3 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
//// Adapted from https://bugs.llvm.org/show_bug.cgi?id=34136#c1
//// LowerDbgDeclare has since been updated to look through bitcasts. We still
@@ -64,14 +64,24 @@ void alias(char* c) {
int main() {
int x = getint(5);
- int y = getint(5); // DexLabel('s1')
- int z = getint(5); // DexLabel('s2')
- alias((char*)&x); // DexLabel('s3')
+ int y = getint(5); // !dex_label s1
+ int z = getint(5); // !dex_label s2
+ alias((char*)&x); // !dex_label s3
alias((char*)&y);
alias((char*)&z);
- return 0; // DexLabel('s4')
+ return 0; // !dex_label s4
}
-// DexExpectWatchValue('x', '5', from_line=ref('s1'), to_line=ref('s4'))
-// DexExpectWatchValue('y', '5', from_line=ref('s2'), to_line=ref('s4'))
-// DexExpectWatchValue('z', '5', from_line=ref('s3'), to_line=ref('s4'))
+// CHECK-DAG: seen_values: 3
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !range [!label s1, !label s4]}:
+ !value x: 5
+!where {lines: !range [!label s2, !label s4]}:
+ !value y: 5
+!where {lines: !range [!label s3, !label s4]}:
+ !value z: 5
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/const-branch.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/const-branch.c
index 05df8a10fcff2..d5bed3ca32335 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/const-branch.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/const-branch.c
@@ -4,7 +4,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O3 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
//// Adapted from https://bugs.llvm.org/show_bug.cgi?id=34136#c4
@@ -23,7 +23,7 @@ void thing(int x) {
__attribute__((__noinline__))
int fun(int param) {
- esc(¶m); //// alloca is live until here DexLabel('s1')
+ esc(¶m); //// alloca is live until here !dex_label s1
if (param == 0) { //// end of alloca live range
//// param is now a constant, but without lowering to dbg.value we can't
//// capture that and would still point to the stack slot that may even have
@@ -41,12 +41,20 @@ int fun(int param) {
//// CMP32mi8 %param.addr, 1, $noreg, 0, $noreg, 0, implicit-def $eflags, debug-location !44
thing(param);
}
- return 0; // DexLabel('s2')
+ return 0; // !dex_label s2
}
int main() {
return fun(5);
}
-// DexExpectWatchValue('param', '5', from_line=ref('s1'), to_line=ref('s2'))
+// CHECK-DAG: seen_values: 1
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !range [!label s1, !label s2]}:
+ !value param: 5
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ctrl-flow.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ctrl-flow.c
index 4fa4e6e0120d2..8edfc4e1cfee8 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ctrl-flow.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ctrl-flow.c
@@ -1,7 +1,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O2 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
//// Check that we give good locations to a variable ('local') which is escaped
//// down some control paths and not others. This example is handled well currently.
@@ -15,12 +15,12 @@ void leak(int *ptr) {
__attribute__((__noinline__))
int fun(int cond) {
- int local = 0; // DexLabel('s1')
+ int local = 0; // !dex_label s1
if (cond)
leak(&local);
else
local = 1;
- return local; // DexLabel('s2')
+ return local; // !dex_label s2
}
int main() {
@@ -29,6 +29,15 @@ int main() {
return a + b;
}
-//// fun(1) fun(0)
-// DexExpectWatchValue('local', '0', '0', on_line=ref('s1'))
-// DexExpectWatchValue('local', '2', '1', on_line=ref('s2'))
+// CHECK-DAG: seen_values: 3
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {function: "fun"}:
+ !and {lines: !label s1}:
+ !value local: 0
+ !and {lines: !label s2}:
+ !value local: [2, 1]
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/implicit-ptr.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/implicit-ptr.c
index 5c11fe426d91d..9785eaf1225bf 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/implicit-ptr.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/implicit-ptr.c
@@ -4,7 +4,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O3 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
//// Check that 'param' in 'fun' can be read throughout, and that 'pa' and 'pb'
//// can be dereferenced in the debugger even if we can't provide the pointer
@@ -18,28 +18,40 @@ int globb;
__attribute__((__noinline__))
static void use_promote(const int* pa) {
//// Promoted args would be a good candidate for an DW_OP_implicit_pointer.
- globa = *pa; // DexLabel('s2')
+ globa = *pa; // !dex_label s2
}
__attribute__((__always_inline__))
static void use_inline(const int* pb) {
//// Inlined pointer to callee local would be a good candidate for an
//// DW_OP_implicit_pointer.
- globb = *pb; // DexLabel('s3')
+ globb = *pb; // !dex_label s3
}
__attribute__((__noinline__))
int fun(int param) {
- volatile int step = 0; // DexLabel('s1')
+ volatile int step = 0; // !dex_label s1
use_promote(¶m);
use_inline(¶m);
- return step; // DexLabel('s4')
+ return step; // !dex_label s4
}
int main() {
return fun(5);
}
-// DexExpectWatchValue('param', 5, from_line=ref('s1'), to_line=ref('s4'))
-// DexExpectWatchValue('*pa', 5, on_line=ref('s2'))
-// DexExpectWatchValue('*pb', 5, on_line=ref('s3'))
+// CHECK-DAG: seen_values: 3
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !range [!label s1, !label s4]}:
+ !value param: 5
+!where {lines: !label s2}:
+ !value pa:
+ "*": 5
+!where {lines: !label s3}:
+ !value pa:
+ "*": 5
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inline-escaping-function.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inline-escaping-function.c
index 541f003c26156..2bd9e1b0221c7 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inline-escaping-function.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inline-escaping-function.c
@@ -4,7 +4,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O3 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
// 1. param is escaped by inlineme(¶m) so it is not promoted by
// SROA/mem2reg.
@@ -34,7 +34,7 @@ __attribute__((noinline))
int fun(int param) {
if (param)
param = inlineme(¶m);
- fluff(); // DexLabel('s0')
+ fluff(); // !dex_label s0
return param;
}
@@ -42,4 +42,12 @@ int main() {
return fun(5);
}
-// DexExpectWatchValue('param', 10, on_line=ref('s0'))
+// CHECK-DAG: seen_values: 1
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label s0}:
+ !value param: 10
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c
index cded557f4e16b..052ae120351b3 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c
@@ -4,7 +4,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O2 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
//
//// Check that once-escaped variable 'param' can still be read after we
//// perform inlining + mem2reg, and that we see the DSE'd value 255.
@@ -15,38 +15,35 @@ __attribute__((__always_inline__))
static void use(int* p) {
g = *p;
*p = 255;
- volatile int step = 0; // DexLabel('use1')
+ volatile int step = 0; // !dex_label use1
}
__attribute__((__noinline__))
void fun(int param) {
//// Make sure first step is in 'fun'.
- volatile int step = 0; // DexLabel('fun1')
+ volatile int step = 0; // !dex_label fun1
use(¶m);
- return; // DexLabel('fun2')
+ return; // !dex_label fun2
}
int main() {
fun(5);
}
-/*
-# Expect param == 5 before stepping through inlined 'use'.
-DexExpectWatchValue('param', '5', on_line=ref('fun1'))
-
-# Expect param == 255 after assignment in inlined frame 'use'.
-DexExpectProgramState({
- 'frames': [
- { 'function': 'use',
- 'location': { 'lineno': ref('use1') },
- },
- { 'function': 'fun',
- 'location': { 'lineno': 20 },
- 'watches': { 'param': '255' }
- },
- ]
-})
+// CHECK-DAG: seen_values: 3
+// CHECK-DAG: correct_step_coverage: 100.0%
-# Expect param == 255 after inlined call to 'use'.
-DexExpectWatchValue('param', '255', on_line=ref('fun2'))
+/*
+---
+!where {function: fun}:
+ # Expect param == 5 before stepping through inlined 'use'.
+ !and {lines: !label fun1}:
+ !value param: 5
+ # Expect param == 255 after assignment in inlined frame 'use'.
+ !and {lines: !label fun2}:
+ !value param: 255
+ !where {file: "inlining-dse.c", lines: !label use1}:
+ !and {at_frame_idx: 1}:
+ !value param: 255
+...
*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c
index 7d02b2d4bc8cb..c68f433fccfb3 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c
@@ -1,7 +1,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O2 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
//
//// Check that the once-escaped variable 'param' can still be read after
//// we perform inlining + mem2reg. See D89810 and D85555.
@@ -14,13 +14,21 @@ static void use(int* p) {
__attribute__((__noinline__))
void fun(int param) {
- volatile int step1 = 0; // DexLabel('s1')
+ volatile int step1 = 0; // !dex_label s1
use(¶m);
- volatile int step2 = 0; // DexLabel('s2')
+ volatile int step2 = 0; // !dex_label s2
}
int main() {
fun(5);
}
-// DexExpectWatchValue('param', '5', from_line=ref('s1'), to_line=ref('s2'))
+// CHECK-DAG: seen_values: 1
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !range [!label s1, !label s2]}:
+ !value param: 5
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/loop.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/loop.c
index d74432579c3bb..115173de5d773 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/loop.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/loop.c
@@ -4,7 +4,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O3 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
//// Check that escaped local 'param' in function 'fun' has sensible debug info
//// after the escaping function 'use' gets arg promotion (int* -> int). Currently
@@ -17,7 +17,7 @@ __attribute__((__noinline__))
static void use(const int* p) {
//// Promoted args would be a good candidate for an DW_OP_implicit_pointer.
//// This desirable behaviour is checked for in the test implicit-ptr.c.
- g = *p;
+ g = *p; // !dex_label s1
}
__attribute__((__noinline__))
@@ -27,7 +27,7 @@ void do_thing(int x) {
__attribute__((__noinline__))
int fun(int param) {
- do_thing(0); // DexLabel('s2')
+ do_thing(0); // !dex_label s2
for (int i = 0; i < param; ++i) {
use(¶m);
}
@@ -45,12 +45,22 @@ int fun(int param) {
//// [0x0000000000400495, 0x00000000004004a2): DW_OP_reg3 RBX)
//// DW_AT_name ("param")
- return g; // DexLabel('s3')
+ return g; // !dex_label s3
}
int main() {
return fun(5);
}
-// DexExpectWatchValue('*p', 5, 5, 5, 5, 5, on_line=ref('s1'))
-// DexExpectWatchValue('param', 5, from_line=ref('s2'), to_line=ref('s3'))
+// CHECK-DAG: seen_values: 2
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label s1}:
+ !value p:
+ "*": 5
+!where {lines: !range [!label s2, !label s3]}:
+ !value param: 5
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/merged-store.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/merged-store.c
index 492e42dfce0b1..3b6be7f86b8a0 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/merged-store.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/merged-store.c
@@ -4,7 +4,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O3 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
// 1. parama is escaped by esc(¶ma) so it is not promoted by
// SROA/mem2reg.
@@ -31,7 +31,7 @@ __attribute__((noinline))
int fun(int parama, int paramb) {
if (parama)
parama = paramb;
- fluff(); // DexLabel('s0')
+ fluff(); // !dex_label s0
esc(¶ma);
return 0;
}
@@ -40,4 +40,12 @@ int main() {
return fun(5, 20);
}
-// DexExpectWatchValue('parama', 20, on_line=ref('s0'))
+// CHECK-DAG: seen_values: 1
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label s0}:
+ !value param: 20
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c
index 632b499eebd10..1ca021038569e 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c
@@ -5,7 +5,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O2 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
//
//// Check that a pointer to a variable living on the stack dereferences to the
//// variable value.
@@ -20,11 +20,29 @@ void esc(int* p) {
int main() {
int local = 0xA;
int *plocal = &local;
- esc(plocal); // DexLabel('s1')
+ esc(plocal); // !dex_label s1
local = 0xB; //// DSE
- return 0; // DexLabel('s2')
+ return 0; // !dex_label s2
}
+// CHECK-DAG: seen_values: 5
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label s1}:
+ !value local: 0xA
+ !value plocal:
+ "*": 0xA
+!where {lines: !label s2}:
+ !value local: 0xB
+ !value plocal:
+ "*": 0xB
+!where {lines: !range [!label s1, !label s2]}:
+ !value "(local == *plocal)": true
+...
+*/
+
// DexExpectWatchValue('local', 0xA, on_line=ref('s1'))
// DexExpectWatchValue('local', 0xB, on_line=ref('s2'))
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/struct-dse.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/struct-dse.c
index 5a36bbe598736..fe8c4b7f2d097 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/struct-dse.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/struct-dse.c
@@ -5,7 +5,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O2 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
//
//// Check debug-info for the escaped struct variable num is reasonable.
@@ -22,14 +22,25 @@ void esc(struct Nums* nums) {
__attribute__((__noinline__))
int main() {
struct Nums nums = { .c=1 }; //// Dead store.
- printf("s1 nums.c: %d\n", nums.c); // DexLabel('s1')
+ printf("s1 nums.c: %d\n", nums.c); // !dex_label s1
nums.c = 2; //// Killing store.
- printf("s2 nums.c: %d\n", nums.c); // DexLabel('s2')
+ printf("s2 nums.c: %d\n", nums.c); // !dex_label s2
esc(&nums); //// Force nums to live on the stack.
- return 0; // DexLabel('s3')
+ return 0; // !dex_label s3
}
-// DexExpectWatchValue('nums.c', '1', on_line=ref('s1'))
-// DexExpectWatchValue('nums.c', '2', from_line=ref('s2'), to_line=ref('s3'))
+// CHECK-DAG: seen_values: 2
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label s1}:
+ !value nums:
+ c: 1
+!where {lines: !range [!label s2, !label s3]}:
+ !value nums:
+ c: 2
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/unused-merged-value.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/unused-merged-value.c
index 2cf3e968ca757..1e5633e58f84e 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/unused-merged-value.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/unused-merged-value.c
@@ -6,7 +6,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
// RUN: %clang -std=gnu11 -O3 -glldb %s -o %t
-// RUN: %dexter --fail-lt 0.1 -w %dexter_lldb_args --binary %t -- %s
+// RUN: %dexter -w %dexter_lldb_args --binary %t -- %s | FileCheck %s
// See NOTE at end for more info about the RUN command.
// 1. SROA/mem2reg fully promotes parama.
@@ -30,7 +30,7 @@ __attribute__((noinline))
int fun(int parama, int paramb) {
if (parama)
parama = paramb;
- fluff(); // DexLabel('s0')
+ fluff(); // !dex_label s0
return paramb;
}
@@ -38,6 +38,15 @@ int main() {
return fun(5, 20);
}
+// CHECK-DAG: missing_var_steps: 0
+
+/*
+---
+!where {lines: !label s0}:
+ !value parama: 20
+...
+*/
+
// DexExpectWatchValue('parama', 20, on_line=ref('s0'))
//
// NOTE: the dexter command uses --fail-lt 0.1 (instead of the standard 1.0)
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/namespace.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/namespace.cpp
index ba910644de4e9..430e227746992 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/namespace.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/namespace.cpp
@@ -6,8 +6,8 @@
// UNSUPPORTED: system-windows
// RUN: %clang++ -g -O0 %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -v -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -v -- %s | FileCheck %s
#include <stdio.h>
@@ -16,9 +16,17 @@ const int ape = 32;
}
int main() {
- printf("hello %d\n", monkey::ape); // DexLabel('main')
+ printf("hello %d\n", monkey::ape); // !dex_label main
return 0;
}
-// DexExpectWatchValue('monkey::ape', 32, on_line=ref('main'))
+// CHECK-DAG: seen_values: 1
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label main}:
+ !value "monkey::ape": 32
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/nrvo-string.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/nrvo-string.cpp
index 42a7110151b24..dc2d12b57a803 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/nrvo-string.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/nrvo-string.cpp
@@ -8,12 +8,12 @@
// compiler-rt. Only run this test on non-asanified configurations.
//
// RUN: %clang++ -std=gnu++11 -O0 -glldb -fno-exceptions %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
//
// RUN: %clang++ -std=gnu++11 -O1 -glldb -fno-exceptions %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
//
// PR34513
volatile int sideeffect = 0;
@@ -28,7 +28,7 @@ struct string {
string __attribute__((noinline)) get_string() {
string unused;
string output = 3;
- stop(); // DexLabel('string-nrvo')
+ stop(); // !dex_label string-nrvo
return output;
}
void some_function(int) {}
@@ -43,7 +43,7 @@ string2 __attribute__((noinline)) get_string2() {
some_function(output.i);
// Test that the debugger can get the value of output after another
// function is called.
- stop(); // DexLabel('string2-nrvo')
+ stop(); // !dex_label string2-nrvo
return output;
}
int main() {
@@ -51,6 +51,16 @@ int main() {
get_string2();
}
-// DexExpectWatchValue('output.i', 3, on_line=ref('string-nrvo'))
-// DexExpectWatchValue('output.i', 5, on_line=ref('string2-nrvo'))
+// CHECK-DAG: seen_values: 2
+// CHECK-DAG: correct_step_coverage: 100.0%
+/*
+---
+!where {lines: !label string-nrvo}:
+ !value output:
+ i: 3
+!where {lines: !label string2-nrvo}:
+ !value output:
+ i: 5
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp
index 3f21a8711b3d5..828060e427f08 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp
@@ -1,9 +1,9 @@
// RUN: %clang++ -std=gnu++11 -O2 -ffast-math -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
// RUN: %clang++ -std=gnu++11 -O0 -ffast-math -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
// REQUIRES: lldb
// Currently getting intermittent failures on darwin.
@@ -21,24 +21,19 @@
__attribute__((optnone))
float test_fdiv(float A) {
float result;
- result = A / 10.f; // DexLabel('fdiv_assign')
- return result; // DexLabel('fdiv_ret')
+ result = A / 10.f; // !dex_label fdiv_assign
+ return result; // !dex_label fdiv_ret
}
-// DexExpectWatchValue('A', 4, on_line=ref('fdiv_assign'))
-// DexExpectWatchValue('result', '0.400000006', on_line=ref('fdiv_ret'))
//// (A * B) - (A * C) ==> A * (B - C)
__attribute__((optnone))
float test_distributivity(float A, float B, float C) {
float result;
float op1 = A * B;
- float op2 = A * C; // DexLabel('distributivity_op2')
- result = op1 - op2; // DexLabel('distributivity_result')
- return result; // DexLabel('distributivity_ret')
+ float op2 = A * C; // !dex_label distributivity_op2
+ result = op1 - op2; // !dex_label distributivity_result
+ return result; // !dex_label distributivity_ret
}
-// DexExpectWatchValue('op1', '20', on_line=ref('distributivity_op2'))
-// DexExpectWatchValue('op2', '24', on_line=ref('distributivity_result'))
-// DexExpectWatchValue('result', '-4', on_line=ref('distributivity_ret'))
//// (A + B) + C == A + (B + C)
//// therefore, ((A + B) + C) + (A + (B + C)))
@@ -51,14 +46,11 @@ float test_associativity(float A, float B, float C) {
float result;
float op1 = A + B;
float op2 = B + C;
- op1 += C; // DexLabel('associativity_op1')
+ op1 += C; // !dex_label associativity_op1
op2 += A;
- result = op1 + op2; // DexLabel('associativity_result')
- return result; // DexLabel('associativity_ret')
+ result = op1 + op2; // !dex_label associativity_result
+ return result; // !dex_label associativity_ret
}
-// DexExpectWatchValue('op1', '9', '15', from_line=ref('associativity_op1'), to_line=ref('associativity_result'))
-// DexExpectWatchValue('op2', '11', '15', from_line=ref('associativity_op1'), to_line=ref('associativity_result'))
-// DexExpectWatchValue('result', '30', on_line=ref('associativity_ret'))
//// With fastmath, the ordering of instructions doesn't matter
//// since we work under the assumption that there is no loss
@@ -72,28 +64,21 @@ float test_associativity(float A, float B, float C) {
//// This function can be simplified to a return A + B.
__attribute__((optnone))
float test_simplify_fp_operations(float A, float B) {
- float result = A + 10.0f; // DexLabel('fp_operations_result')
- result += B; // DexLabel('fp_operations_add')
+ float result = A + 10.0f; // !dex_label fp_operations_result
+ result += B; // !dex_label fp_operations_add
result -= 10.0f;
- return result; // DexLabel('fp_operations_ret')
+ return result; // !dex_label fp_operations_ret
}
-// DexExpectWatchValue('A', '8.25', on_line=ref('fp_operations_result'))
-// DexExpectWatchValue('B', '26.3999996', on_line=ref('fp_operations_result'))
-// DexExpectWatchValue('result', '18.25', '44.6500015', '34.6500015', from_line=ref('fp_operations_add'), to_line=ref('fp_operations_ret'))
//// Again, this is a simple return A + B.
//// Clang is unable to spot the opportunity to fold the code sequence.
__attribute__((optnone))
float test_simplify_fp_operations_2(float A, float B, float C) {
- float result = A + C; // DexLabel('fp_operations_2_result')
+ float result = A + C; // !dex_label fp_operations_2_result
result += B;
- result -= C; // DexLabel('fp_operations_2_subtract')
- return result; // DexLabel('fp_operations_2_ret')
+ result -= C; // !dex_label fp_operations_2_subtract
+ return result; // !dex_label fp_operations_2_ret
}
-// DexExpectWatchValue('A', '9.11999988', on_line=ref('fp_operations_2_result'))
-// DexExpectWatchValue('B', '61.050003', on_line=ref('fp_operations_2_result'))
-// DexExpectWatchValue('C', '1002.11102', on_line=ref('fp_operations_2_result'))
-// DexExpectWatchValue('result', '1072.28101', '70.1699829', from_line=ref('fp_operations_2_subtract'), to_line=ref('fp_operations_2_ret'))
int main() {
float result = test_fdiv(4.0f);
@@ -103,3 +88,42 @@ int main() {
result += test_simplify_fp_operations_2(9.12, result, 1002.111);
return static_cast<int>(result);
}
+
+// CHECK-DAG: seen_values: 20
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {function: test_fdiv}:
+ !and {lines: !label fdiv_assign}:
+ !value A: 4
+ !and {lines: !label fdiv_ret}:
+ !value result: "0.400000006"
+!where {function: test_distributivity}:
+ !and {lines: !label distributivity_op2}:
+ !value op1: 20
+ !and {lines: !label distributivity_result}:
+ !value op2: 24
+ !and {lines: !label distributivity_ret}:
+ !value result: -4
+!where {function: test_associativity}:
+ !and {lines: !range [!label associativity_op1, !label associativity_result]}:
+ !value op1: [9, 15]
+ !value op2: [11, 15]
+ !and {lines: !label associativity_ret}:
+ !value result: 30
+!where {function: test_simplify_fp_operations}:
+ !and {lines: !label fp_operations_result}:
+ !value A: "8.25"
+ !value B: "26.3999996"
+ !and {lines: !range [!label fp_operations_add, !label fp_operations_ret]}:
+ !value result: ["18.25", "44.6500015", "34.6500015"]
+!where {function: test_simplify_fp_operations_2}:
+ !and {lines: !label fp_operations_2_result}:
+ !value A: '9.11999988'
+ !value B: '61.050003'
+ !value C: '1002.11102'
+ !and {lines: !range [!label fp_operations_2_subtract, !label fp_operations_2_ret]}:
+ !value result: ["1072.28101", "70.1699829"]
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp
index f760b7afe6cb9..bbba226db3b6d 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp
@@ -6,8 +6,8 @@
// UNSUPPORTED: system-darwin
// RUN: %clang++ -std=gnu++11 -O2 -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
// A simple loop of assignments.
// With optimization level > 0 the compiler reorders basic blocks
@@ -19,26 +19,18 @@
__attribute__((optnone)) void simple_memcpy_loop(int *dest, const int *src,
unsigned nelems) {
for (unsigned i = 0; i != nelems; ++i)
- dest[i] = src[i]; // DexLabel('target_simple_memcpy_loop')
+ dest[i] = src[i]; // !dex_label target_simple_memcpy_loop
}
-// DexLimitSteps('i', 0, 4, 8, on_line=ref('target_simple_memcpy_loop'))
-// DexExpectWatchValue('nelems', '16', on_line=ref('target_simple_memcpy_loop'))
-// DexExpectWatchValue('src[i]', '3', '7', '1', on_line=ref('target_simple_memcpy_loop'))
-
// A trivial loop that could be optimized into a builtin memcpy
// which is either expanded into a optimal sequence of mov
// instructions or directly into a call to memset at plt
__attribute__((optnone)) void trivial_memcpy_loop(int *dest, const int *src) {
for (unsigned i = 0; i != 16; ++i)
- dest[i] = src[i]; // DexLabel('target_trivial_memcpy_loop')
+ dest[i] = src[i]; // !dex_label target_trivial_memcpy_loop
}
-// DexLimitSteps('i', 3, 7, 9, 14, 15, on_line=ref('target_trivial_memcpy_loop'))
-// DexExpectWatchValue('i', 3, 7, 9, 14, 15, on_line=ref('target_trivial_memcpy_loop'))
-// DexExpectWatchValue('dest[i-1] == src[i-1]', 'true', on_line=ref('target_trivial_memcpy_loop'))
-
__attribute__((always_inline)) int foo(int a) { return a + 5; }
@@ -46,20 +38,9 @@ __attribute__((always_inline)) int foo(int a) { return a + 5; }
__attribute__((optnone)) void nonleaf_function_with_loop(int *dest,
const int *src) {
for (unsigned i = 0; i != 16; ++i)
- dest[i] = foo(src[i]); // DexLabel('target_nonleaf_function_with_loop')
+ dest[i] = foo(src[i]); // !dex_label target_nonleaf_function_with_loop
}
-// DexLimitSteps('i', 1, on_line=ref('target_nonleaf_function_with_loop'))
-// DexExpectWatchValue('dest[0]', '8', on_line=ref('target_nonleaf_function_with_loop'))
-// DexExpectWatchValue('dest[1]', '4', on_line=ref('target_nonleaf_function_with_loop'))
-// DexExpectWatchValue('dest[2]', '5', on_line=ref('target_nonleaf_function_with_loop'))
-// DexExpectWatchValue('src[0]', '8', on_line=ref('target_nonleaf_function_with_loop'))
-// DexExpectWatchValue('src[1]', '4', on_line=ref('target_nonleaf_function_with_loop'))
-// DexExpectWatchValue('src[2]', '5', on_line=ref('target_nonleaf_function_with_loop'))
-
-// DexExpectWatchValue('src[1] == dest[1]', 'true', on_line=ref('target_nonleaf_function_with_loop'))
-// DexExpectWatchValue('src[2] == dest[2]', 'true', on_line=ref('target_nonleaf_function_with_loop'))
-
// This entire function could be optimized into a
// simple movl %esi, %eax.
@@ -67,14 +48,11 @@ __attribute__((optnone)) void nonleaf_function_with_loop(int *dest,
// knowing that ind-var 'i' can never be negative.
__attribute__((optnone)) int counting_loop(unsigned values) {
unsigned i = 0;
- while (values--) // DexLabel('target_counting_loop')
+ while (values--) // !dex_label target_counting_loop
i++;
return i;
}
-// DexLimitSteps('i', 8, 16, on_line=ref('target_counting_loop'))
-// DexExpectWatchValue('i', 8, 16, on_line=ref('target_counting_loop'))
-
// This loop could be rotated.
// while(cond){
@@ -99,17 +77,12 @@ __attribute__((optnone)) int loop_rotate_test(int *src, unsigned count) {
int result = 0;
while (count) {
- result += src[count - 1]; // DexLabel('target_loop_rotate_test')
+ result += src[count - 1]; // !dex_label target_loop_rotate_test
count--;
}
- return result; // DexLabel('target_loop_rotate_test_ret')
+ return result; // !dex_label target_loop_rotate_test_ret
}
-// DexLimitSteps('result', 13, on_line=ref('target_loop_rotate_test'))
-// DexExpectWatchValue('src[count]', 13, on_line=ref('target_loop_rotate_test'))
-// DexLimitSteps('result', 158, on_line=ref('target_loop_rotate_test_ret'))
-// DexExpectWatchValue('result', 158, on_line=ref('target_loop_rotate_test_ret'))
-
typedef int *intptr __attribute__((aligned(16)));
@@ -120,29 +93,19 @@ __attribute__((optnone)) void loop_vectorize_test(intptr dest, intptr src) {
int tempArray[16];
- while(count != 16) { // DexLabel('target_loop_vectorize_test')
+ while(count != 16) { // !dex_label target_loop_vectorize_test
tempArray[count] = src[count];
- tempArray[count+1] = src[count+1]; // DexLabel('target_loop_vectorize_test_2')
- tempArray[count+2] = src[count+2]; // DexLabel('target_loop_vectorize_test_3')
- tempArray[count+3] = src[count+3]; // DexLabel('target_loop_vectorize_test_4')
- dest[count] = tempArray[count]; // DexLabel('target_loop_vectorize_test_5')
- dest[count+1] = tempArray[count+1]; // DexLabel('target_loop_vectorize_test_6')
- dest[count+2] = tempArray[count+2]; // DexLabel('target_loop_vectorize_test_7')
- dest[count+3] = tempArray[count+3]; // DexLabel('target_loop_vectorize_test_8')
- count += 4; // DexLabel('target_loop_vectorize_test_9')
+ tempArray[count+1] = src[count+1]; // !dex_label target_loop_vectorize_test_2
+ tempArray[count+2] = src[count+2]; // !dex_label target_loop_vectorize_test_3
+ tempArray[count+3] = src[count+3]; // !dex_label target_loop_vectorize_test_4
+ dest[count] = tempArray[count]; // !dex_label target_loop_vectorize_test_5
+ dest[count+1] = tempArray[count+1]; // !dex_label target_loop_vectorize_test_6
+ dest[count+2] = tempArray[count+2]; // !dex_label target_loop_vectorize_test_7
+ dest[count+3] = tempArray[count+3]; // !dex_label target_loop_vectorize_test_8
+ count += 4; // !dex_label target_loop_vectorize_test_9
}
}
-// DexLimitSteps('count', 4, 8, 12, 16, from_line=ref('target_loop_vectorize_test'), to_line=ref('target_loop_vectorize_test_9'))
-// DexExpectWatchValue('tempArray[count] == src[count]', 'true', on_line=ref('target_loop_vectorize_test_2'))
-// DexExpectWatchValue('tempArray[count+1] == src[count+1]', 'true', on_line=ref('target_loop_vectorize_test_3'))
-// DexExpectWatchValue('tempArray[count+2] == src[count+2]', 'true', on_line=ref('target_loop_vectorize_test_4'))
-// DexExpectWatchValue('tempArray[count+3] == src[count+3]', 'true', on_line=ref('target_loop_vectorize_test_5'))
-// DexExpectWatchValue('dest[count] == tempArray[count]', 'true', on_line=ref('target_loop_vectorize_test_6'))
-// DexExpectWatchValue('dest[count+1] == tempArray[count+1]', 'true', on_line=ref('target_loop_vectorize_test_7'))
-// DexExpectWatchValue('dest[count+2] == tempArray[count+2]', 'true', on_line=ref('target_loop_vectorize_test_8'))
-// DexExpectWatchValue('dest[count+3] == tempArray[count+3]', 'true', on_line=ref('target_loop_vectorize_test_9'))
-
int main() {
int A[] = {3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
@@ -159,3 +122,54 @@ int main() {
return A[0] + count;
}
+// CHECK-DAG: seen_values: 30
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {function: simple_memcpy_loop}:
+ !and {lines: !label target_simple_memcpy_loop, conditions: "i == 0 || i == 4 || i == 8"}:
+ !value nelems: 16
+ !value "src[i]": [3, 7, 1]
+!where {function: trivial_memcpy_loop}:
+ !and {lines: !label target_trivial_memcpy_loop, conditions: "i == 3 || i == 7 || i == 9 || i == 14 || i == 15"}:
+ !value i: [3, 7, 9, 14, 15]
+ !value "dest[i-1] == src[i-1]": "true"
+!where {function: nonleaf_function_with_loop}:
+ !and {lines: !label target_nonleaf_function_with_loop, conditions: "i == 1"}:
+ !value "dest[0]": 8
+ !value "dest[1]": 4
+ !value "dest[2]": 5
+ !value "src[0]": 8
+ !value "src[1]": 4
+ !value "src[2]": 5
+ !value "src[1] == dest[1]": "true"
+ !value "src[2] == dest[2]": "true"
+!where {function: counting_loop}:
+ !and {lines: !label target_counting_loop, conditions: "i == 8 || i == 16"}:
+ !value i: [8, 16]
+!where {function: loop_rotate_test}:
+ !and {lines: !label target_loop_rotate_test, conditions: "result == 13"}:
+ !value "src[count]": 13
+ !and {lines: !label target_loop_rotate_test_ret, conditions: "result == 158"}:
+ !value result: 158
+!where {function: loop_vectorize_test}:
+ !and {lines: !range [!label target_loop_vectorize_test, !label target_loop_vectorize_test_9], conditions: "count == 4 || count == 8 || count == 12 || count == 16"}:
+ !and {lines: !label target_loop_vectorize_test_2}:
+ !value 'tempArray[count] == src[count]': "true"
+ !and {lines: !label target_loop_vectorize_test_3}:
+ !value 'tempArray[count+1] == src[count+1]': "true"
+ !and {lines: !label target_loop_vectorize_test_4}:
+ !value 'tempArray[count+2] == src[count+2]': "true"
+ !and {lines: !label target_loop_vectorize_test_5}:
+ !value 'tempArray[count+3] == src[count+3]': "true"
+ !and {lines: !label target_loop_vectorize_test_6}:
+ !value 'dest[count] == tempArray[count]': "true"
+ !and {lines: !label target_loop_vectorize_test_7}:
+ !value 'dest[count+1] == tempArray[count+1]': "true"
+ !and {lines: !label target_loop_vectorize_test_8}:
+ !value 'dest[count+2] == tempArray[count+2]': "true"
+ !and {lines: !label target_loop_vectorize_test_9}:
+ !value 'dest[count+3] == tempArray[count+3]': "true"
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-simple-functions.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-simple-functions.cpp
index cc693cc7c967b..ea697de21d712 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-simple-functions.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-simple-functions.cpp
@@ -1,9 +1,9 @@
// RUN: %clang++ -std=gnu++11 -O2 -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
// RUN: %clang++ -std=gnu++11 -O0 -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
// REQUIRES: lldb, D136396
// Currently getting intermittent failures on darwin.
@@ -16,91 +16,138 @@
__attribute__((optnone))
int test1(int test1_a, int test1_b) {
int test1_result = 0;
- // DexLabel('test1_start')
- test1_result = test1_a + test1_b; // DexExpectStepOrder(1)
- return test1_result; // DexExpectStepOrder(2)
- // DexLabel('test1_end')
+ // !dex_label test1_start
+ test1_result = test1_a + test1_b;
+ return test1_result;
+ // !dex_label test1_end
}
-// DexExpectWatchValue('test1_a', 3, from_line=ref('test1_start'), to_line=ref('test1_end'))
-// DexExpectWatchValue('test1_b', 4, from_line=ref('test1_start'), to_line=ref('test1_end'))
-// DexExpectWatchValue('test1_result', 0, 7, from_line=ref('test1_start'), to_line=ref('test1_end'))
__attribute__((optnone))
int test2(int test2_a, int test2_b) {
- int test2_result = test2_a + test2_a + test2_a + test2_a; // DexExpectStepOrder(3)
- // DexLabel('test2_start')
- return test2_a << 2; // DexExpectStepOrder(4)
- // DexLabel('test2_end')
+ int test2_result = test2_a + test2_a + test2_a + test2_a;
+ // !dex_label test2_start
+ return test2_a << 2;
+ // !dex_label test2_end
}
-// DexExpectWatchValue('test2_a', 1, from_line=ref('test2_start'), to_line=ref('test2_end'))
-// DexExpectWatchValue('test2_b', 2, from_line=ref('test2_start'), to_line=ref('test2_end'))
-// DexExpectWatchValue('test2_result', 4, from_line=ref('test2_start'), to_line=ref('test2_end'))
__attribute__((optnone))
int test3(int test3_a, int test3_b) {
int test3_temp1 = 0, test3_temp2 = 0;
- // DexLabel('test3_start')
- test3_temp1 = test3_a + 5; // DexExpectStepOrder(5)
- test3_temp2 = test3_b + 5; // DexExpectStepOrder(6)
- if (test3_temp1 > test3_temp2) { // DexExpectStepOrder(7)
- test3_temp1 *= test3_temp2; // DexUnreachable()
+ // !dex_label test3_start
+ test3_temp1 = test3_a + 5;
+ test3_temp2 = test3_b + 5;
+ if (test3_temp1 > test3_temp2) {
+ test3_temp1 *= test3_temp2;
}
- return test3_temp1; // DexExpectStepOrder(8)
- // DexLabel('test3_end')
+ return test3_temp1;
+ // !dex_label test3_end
}
-// DexExpectWatchValue('test3_a', 5, from_line=ref('test3_start'), to_line=ref('test3_end'))
-// DexExpectWatchValue('test3_b', 6, from_line=ref('test3_start'), to_line=ref('test3_end'))
-// DexExpectWatchValue('test3_temp1', 0, 10, from_line=ref('test3_start'), to_line=ref('test3_end'))
-// DexExpectWatchValue('test3_temp2', 0, 11, from_line=ref('test3_start'), to_line=ref('test3_end'))
unsigned num_iterations = 4;
__attribute__((optnone))
int test4(int test4_a, int test4_b) {
int val1 = 0, val2 = 0;
- // DexLabel('test4_start')
+ // !dex_label test4_start
- val1 = (test4_a > test4_b) ? test4_a : test4_b; // DexExpectStepOrder(9)
+ val1 = (test4_a > test4_b) ? test4_a : test4_b;
val2 = val1;
- val2 += val1; // DexExpectStepOrder(10)
+ val2 += val1;
- for (unsigned i=0; i != num_iterations; ++i) { // DexExpectStepOrder(11, 13, 15, 17, 19)
+ for (unsigned i=0; i != num_iterations; ++i) {
val1--;
val2 += i;
- if (val2 % 2 == 0) // DexExpectStepOrder(12, 14, 16, 18)
+ if (val2 % 2 == 0)
val2 /= 2;
}
- return (val1 > val2) ? val2 : val1; // DexExpectStepOrder(20)
- // DexLabel('test4_end')
+ return (val1 > val2) ? val2 : val1;
+ // !dex_label test4_end
}
-// DexExpectWatchValue('test4_a', 1, from_line=ref('test4_start'), to_line=ref('test4_end'))
-// DexExpectWatchValue('test4_b', 9, from_line=ref('test4_start'), to_line=ref('test4_end'))
-// DexExpectWatchValue('val1', 0, 9, 8, 7, 6, 5, from_line=ref('test4_start'), to_line=ref('test4_end'))
-// DexExpectWatchValue('val2', 0, 9, 18, 9, 10, 5, 7, 10, 5, 9, from_line=ref('test4_start'), to_line=ref('test4_end'))
__attribute__((optnone))
int test5(int test5_val) {
- int c = 1; // DexExpectStepOrder(21)
- // DexLabel('test5_start')
- if (test5_val) // DexExpectStepOrder(22)
- c = 5; // DexExpectStepOrder(23)
- return c ? test5_val : test5_val; // DexExpectStepOrder(24)
- // DexLabel('test5_end')
+ int c = 1;
+ // !dex_label test5_start
+ if (test5_val)
+ c = 5;
+ return c ? test5_val : test5_val;
+ // !dex_label test5_end
}
-// DexExpectWatchValue('test5_val', 7, from_line=ref('test5_start'), to_line=ref('test5_end'))
-// DexExpectWatchValue('c', 1, 5, from_line=ref('test5_start'), to_line=ref('test5_end'))
__attribute__((optnone))
int main() {
int main_result = 0;
- // DexLabel('main_start')
+ // !dex_label main_start
main_result = test1(3,4);
main_result += test2(1,2);
main_result += test3(5,6);
main_result += test4(1,9);
main_result += test5(7);
return main_result;
- // DexLabel('main_end')
+ // !dex_label main_end
}
-// DexExpectWatchValue('main_result', 0, 7, 11, 21, 26, 33, from_line=ref('main_start'), to_line=ref('main_end'))
+
+// CHECK-DAG: seen_values: 154
+// CHECK-DAG: correct_step_coverage: 100.0%
+// CHECK-DAG: correct_line_score: 100.0%
+
+/*
+---
+!where {function: test1}:
+ !and {lines: !range [!label test1_start, !label test1_end]}:
+ !value test1_a: 3
+ !value test1_b: 4
+ !value test1_result: [0, 7]
+ !step order: [!label test1_start + 1, !label test1_start + 2]
+!where {function: test2}:
+ !and {lines: !range [!label test2_start, !label test2_end]}:
+ !value test2_a: 1
+ !value test2_b: 2
+ !value test2_result: 4
+ !step order: [!label test2_start - 1, !label test2_start + 1]
+!where {function: test3}:
+ !and {lines: !range [!label test3_start, !label test3_end]}:
+ !value test3_a: 5
+ !value test3_b: 6
+ !value test3_temp1: [0, 10]
+ !value test3_temp2: [0, 11]
+ !step order:
+ - !label test3_start + 1
+ - !label test3_start + 2
+ - !label test3_start + 3
+ - !label test3_end - 1
+ !step never: [!label test3_start + 4]
+!where {function: test4}:
+ !and {lines: !range [!label test4_start, !label test4_end]}:
+ !value test4_a: 1
+ !value test4_b: 9
+ !value val1: [0, 9, 8, 7, 6, 5]
+ !value val2: [0, 9, 18, 9, 10, 5, 7, 10, 5, 9]
+ !step order:
+ - !label test4_start + 2
+ - !label test4_start + 4
+ - !label test4_start + 6
+ - !label test4_start + 9
+ - !label test4_start + 6
+ - !label test4_start + 9
+ - !label test4_start + 6
+ - !label test4_start + 9
+ - !label test4_start + 6
+ - !label test4_start + 9
+ - !label test4_start + 6
+ - !label test4_end - 1
+!where {function: test5}:
+ !and {lines: !range [!label test5_start, !label test5_end]}:
+ !value test5_val: 7
+ !value c: [1, 5]
+ !step order:
+ - !label test5_start - 1
+ - !label test5_start + 1
+ - !label test5_start + 2
+ - !label test5_start + 3
+!where {function: main}:
+ !and {lines: !range [!label main_start, !label main_end]}:
+ !value main_result: [0, 7, 11, 21, 26, 33]
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp
index 94934356ac7e3..7db614357504c 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp
@@ -1,9 +1,9 @@
// RUN: %clang++ -std=gnu++11 -O2 -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -v -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -v -- %s | FileCheck %s
// RUN: %clang++ -std=gnu++11 -O0 -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
// REQUIRES: lldb
// Currently getting intermittent failures on darwin.
@@ -67,31 +67,19 @@ struct A {
__attribute__((optnone))
A() {
__builtin_memset(this, 0xFF, sizeof(*this));
- } //DexLabel('break_0')
- // DexExpectWatchValue('a', '-1', on_line=ref('break_0'))
- //// Check b is NaN by comparing it to itself.
- // DexExpectWatchValue('this->b == this->b', 'false', on_line=ref('break_0'))
- // DexExpectWatchValue('_data.a.raw_ptr == -1', 'true', on_line=ref('break_0'))
- // DexExpectWatchValue('_data.a.float_ptr == -1', 'true', on_line=ref('break_0'))
- // DexExpectWatchValue('_data.a.float_ptr == -1', 'true', on_line=ref('break_0'))
- // DexExpectWatchValue('a_global_ptr[0]', 0xcafebabe, on_line=ref('break_0'))
- // DexExpectWatchValue('a_global_ptr[1]', 0xfeedbeef, on_line=ref('break_0'))
+ } //!dex_label break_0
__attribute__((optnone))
~A() {
*getOtherData()->a.long_ptr = 0xADDF00DL;
- } //DexLabel('break_1')
- // DexExpectWatchValue('_data.a.raw_ptr == a_global_ptr', 'true', on_line=ref('break_1'))
- // DexExpectWatchValue('a_global_ptr[0]', 0xaddf00d, on_line=ref('break_1'))
+ } //!dex_label break_1
__attribute__((optnone))
long getData() {
setSomeData1(B_VALUE, A_VALUE);
setOtherData();
- return getOtherData()->a.long_ptr[1]; //DexLabel('break_2')
+ return getOtherData()->a.long_ptr[1]; //!dex_label break_2
}
- // DexExpectWatchValue('_data.b.other_b', 'B_VALUE', on_line=ref('break_2'))
- // DexExpectWatchValue('_data.b.other_other_b', 'A_VALUE', on_line=ref('break_2'))
};
} // anonymous namespace
@@ -104,3 +92,26 @@ int main() {
}
return result;
}
+
+// CHECK-DAG: seen_values: 11
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label break_0}:
+ !value a: -1
+ # Check b is NaN by comparing it to itself.
+ !value 'this->b == this->b': 'false'
+ !value '_data.a.raw_ptr == -1': 'true'
+ !value '_data.a.float_ptr == -1': 'true'
+ !value '_data.a.float_ptr == -1': 'true'
+ !value 'a_global_ptr[0]': 0xcafebabe
+ !value 'a_global_ptr[1]': 0xfeedbeef
+!where {lines: !label break_1}:
+ !value '_data.a.raw_ptr == a_global_ptr': 'true'
+ !value 'a_global_ptr[0]': 0xaddf00d
+!where {lines: !label break_2}:
+ !value '_data.b.other_b': 'B_VALUE'
+ !value '_data.b.other_other_b': 'A_VALUE'
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp
index fd244fbafdb7e..43cda71a5e214 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp
@@ -1,9 +1,9 @@
// RUN: %clang++ -std=gnu++11 -O2 -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -v -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -v -- %s | FileCheck %s
// RUN: %clang++ -std=gnu++11 -O0 -g %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w \
+// RUN: --binary %t %dexter_lldb_args -- %s | FileCheck %s
// REQUIRES: lldb
// Currently getting intermittent failures on darwin.
@@ -27,101 +27,42 @@ unsigned TypeTraits<int4>::MysteryNumber = 3U;
template<typename T>
__attribute__((optnone))
T test1(T x, T y) {
- T tmp = x + y; // DexLabel('break_0')
+ T tmp = x + y; // !dex_label break_0
T tmp2 = tmp + y;
- return tmp; // DexLabel('break_1')
+ return tmp; // !dex_label break_1
}
-// DexLimitSteps('1', '1', from_line=ref('break_0'), to_line=ref('break_1'))
-//// FIXME: gdb can print this but lldb cannot. Perhaps PR42920?
-// \DexExpectWatchValue('TypeTraits<int __attribute__((ext_vector_type(4)))>::NumElements', 4, on_line=ref('break_0'))
-// \DexExpectWatchValue('TypeTraits<int __attribute__((ext_vector_type(4)))>::UnusedField', 0xdeadbeef, on_line=ref('break_0'))
-// DexExpectWatchValue('x[0]', 1, on_line=ref('break_0'))
-// DexExpectWatchValue('x[1]', 2, on_line=ref('break_0'))
-// DexExpectWatchValue('x[2]', 3, on_line=ref('break_0'))
-// DexExpectWatchValue('x[3]', 4, on_line=ref('break_0'))
-// DexExpectWatchValue('y[0]', 5, on_line=ref('break_0'))
-// DexExpectWatchValue('y[1]', 6, on_line=ref('break_0'))
-// DexExpectWatchValue('y[2]', 7, on_line=ref('break_0'))
-// DexExpectWatchValue('y[3]', 8, on_line=ref('break_0'))
-// DexExpectWatchValue('tmp[0]', 6, on_line=ref('break_1'))
-// DexExpectWatchValue('tmp[1]', 8, on_line=ref('break_1'))
-// DexExpectWatchValue('tmp[2]', 10, on_line=ref('break_1'))
-// DexExpectWatchValue('tmp[3]', 12, on_line=ref('break_1'))
-// DexExpectWatchValue('tmp2[0]', 11, on_line=ref('break_1'))
-// DexExpectWatchValue('tmp2[1]', 14, on_line=ref('break_1'))
-// DexExpectWatchValue('tmp2[2]', 17, on_line=ref('break_1'))
-// DexExpectWatchValue('tmp2[3]', 20, on_line=ref('break_1'))
+
template<typename T>
__attribute__((optnone))
T test2(T x, T y) {
T tmp = x;
- int break_2 = 0; // DexLabel('break_2')
+ int break_2 = 0; // !dex_label break_2
for (unsigned i = 0; i != TypeTraits<T>::NumElements; ++i) {
- tmp <<= 1; // DexLabel('break_3')
+ tmp <<= 1; // !dex_label break_3
tmp |= y;
}
tmp[0] >>= TypeTraits<T>::MysteryNumber;
- return tmp; // DexLabel('break_5')
+ return tmp; // !dex_label break_5
}
-// DexLimitSteps('1', '1', on_line=ref('break_2'))
-// DexExpectWatchValue('x[0]', 6, on_line=ref('break_2'))
-// DexExpectWatchValue('x[1]', 8, on_line=ref('break_2'))
-// DexExpectWatchValue('x[2]', 10, on_line=ref('break_2'))
-// DexExpectWatchValue('x[3]', 12, on_line=ref('break_2'))
-// DexExpectWatchValue('y[0]', 5, on_line=ref('break_2'))
-// DexExpectWatchValue('y[1]', 6, on_line=ref('break_2'))
-// DexExpectWatchValue('y[2]', 7, on_line=ref('break_2'))
-// DexExpectWatchValue('y[3]', 8, on_line=ref('break_2'))
-// DexExpectWatchValue('tmp[0]', 6, on_line=ref('break_2'))
-// DexExpectWatchValue('tmp[1]', 8, on_line=ref('break_2'))
-// DexExpectWatchValue('tmp[2]', 10, on_line=ref('break_2'))
-// DexExpectWatchValue('tmp[3]', 12, on_line=ref('break_2'))
-// DexLimitSteps('i', 3, from_line=ref('break_3'), to_line=ref('break_5'))
-// DexExpectWatchValue('tmp[0]', 63, on_line=ref('break_3'))
-// DexExpectWatchValue('tmp[1]', 94, on_line=ref('break_3'))
-// DexExpectWatchValue('tmp[2]', 95, on_line=ref('break_3'))
-// DexExpectWatchValue('tmp[3]', 120, on_line=ref('break_3'))
-// DexExpectWatchValue('tmp[0]', 15, on_line=ref('break_5'))
template<typename T>
__attribute__((optnone))
T test3(T InVec) {
T result;
for (unsigned i=0; i != TypeTraits<T>::NumElements; ++i)
- result[i] = InVec[i]; // DexLabel('break_6')
- return result; // DexLabel('break_7')
+ result[i] = InVec[i]; // !dex_label break_6
+ return result; // !dex_label break_7
}
-// DexLimitSteps('i', '3', from_line=ref('break_6'), to_line=ref('break_7'))
-// DexExpectWatchValue('InVec[0]', 15, from_line=ref('break_6'), to_line=ref('break_7'))
-// DexExpectWatchValue('InVec[1]', 190, from_line=ref('break_6'), to_line=ref('break_7'))
-// DexExpectWatchValue('InVec[2]', 191, from_line=ref('break_6'), to_line=ref('break_7'))
-// DexExpectWatchValue('InVec[3]', 248, from_line=ref('break_6'), to_line=ref('break_7'))
-// DexExpectWatchValue('result[0]', 15, from_line=ref('break_6'), to_line=ref('break_7'))
-// DexExpectWatchValue('result[1]', 190, from_line=ref('break_6'), to_line=ref('break_7'))
-// DexExpectWatchValue('result[2]', 191, from_line=ref('break_6'), to_line=ref('break_7'))
-// DexExpectWatchValue('result[3]', 248, on_line=ref('break_7'))
template<typename T>
__attribute__((optnone))
T test4(T x, T y) {
for (unsigned i=0; i != TypeTraits<T>::NumElements; ++i)
- x[i] = (x[i] > y[i])? x[i] : y[i] + TypeTraits<T>::MysteryNumber; // DexLabel('break_11')
- return x; // DexLabel('break_12')
+ x[i] = (x[i] > y[i])? x[i] : y[i] + TypeTraits<T>::MysteryNumber; // !dex_label break_11
+ return x; // !dex_label break_12
}
-// DexLimitSteps('1', '1', from_line=ref('break_11'), to_line=ref('break_12'))
-//// FIXME: lldb won't print this but gdb unexpectedly says it's optimized out, even at O0.
-// \DexExpectWatchValue('TypeTraits<int __attribute__((ext_vector_type(4)))>::MysteryNumber', 3, on_line=ref('break_11'))
-// DexExpectWatchValue('i', 0, 1, 2, 3, on_line=ref('break_11'))
-// DexExpectWatchValue('x[0]', 1, 8, from_line=ref('break_11'), to_line=ref('break_12'))
-// DexExpectWatchValue('x[1]', 2, 9, from_line=ref('break_11'), to_line=ref('break_12'))
-// DexExpectWatchValue('x[2]', 3, 10, from_line=ref('break_11'), to_line=ref('break_12'))
-// DexExpectWatchValue('x[3]', 4, 11, from_line=ref('break_11'), to_line=ref('break_12'))
-// DexExpectWatchValue('y[0]', 5, from_line=ref('break_11'), to_line=ref('break_12'))
-// DexExpectWatchValue('y[1]', 6, from_line=ref('break_11'), to_line=ref('break_12'))
-// DexExpectWatchValue('y[2]', 7, from_line=ref('break_11'), to_line=ref('break_12'))
-// DexExpectWatchValue('y[3]', 8, from_line=ref('break_11'), to_line=ref('break_12'))
int main() {
int4 a = (int4){1,2,3,4};
@@ -133,3 +74,82 @@ int main() {
tmp += test4(a,b);
return tmp[0];
}
+
+// CHECK-DAG: seen_values: 64
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label break_0}:
+ ## FIXME: gdb can print this but lldb cannot. Perhaps PR42920?
+ # !value 'TypeTraits<int __attribute__((ext_vector_type(4)))>::NumElements': 4
+ # !value 'TypeTraits<int __attribute__((ext_vector_type(4)))>::UnusedField': 0xdeadbeef
+ !value 'x[0]': 1
+ !value 'x[1]': 2
+ !value 'x[2]': 3
+ !value 'x[3]': 4
+ !value 'y[0]': 5
+ !value 'y[1]': 6
+ !value 'y[2]': 7
+ !value 'y[3]': 8
+!where {lines: !label break_1}:
+ !value 'tmp[0]': 6
+ !value 'tmp[1]': 8
+ !value 'tmp[2]': 10
+ !value 'tmp[3]': 12
+ !value 'tmp2[0]': 11
+ !value 'tmp2[1]': 14
+ !value 'tmp2[2]': 17
+ !value 'tmp2[3]': 20
+!where {lines: !label break_2}:
+ !value 'x[0]': 6
+ !value 'x[1]': 8
+ !value 'x[2]': 10
+ !value 'x[3]': 12
+ !value 'y[0]': 5
+ !value 'y[1]': 6
+ !value 'y[2]': 7
+ !value 'y[3]': 8
+ !value 'tmp[0]': 6
+ !value 'tmp[1]': 8
+ !value 'tmp[2]': 10
+ !value 'tmp[3]': 12
+!where {lines: !label break_3, conditions: "i == 3"}:
+ !value 'tmp[0]': 63
+ !value 'tmp[1]': 94
+ !value 'tmp[2]': 95
+ !value 'tmp[3]': 120
+!where {lines: !label break_5}:
+ !value 'tmp[0]': 15
+!where {lines: !label break_6, conditions: "i == 3"}:
+ !value 'InVec[0]': 15
+ !value 'InVec[1]': 190
+ !value 'InVec[2]': 191
+ !value 'InVec[3]': 248
+ !value 'result[0]': 15
+ !value 'result[1]': 190
+ !value 'result[2]': 191
+!where {lines: !label break_7}:
+ !value 'InVec[0]': 15
+ !value 'InVec[1]': 190
+ !value 'InVec[2]': 191
+ !value 'InVec[3]': 248
+ !value 'result[0]': 15
+ !value 'result[1]': 190
+ !value 'result[2]': 191
+ !value 'result[3]': 248
+!where {lines: !range [!label break_11, !label break_12]}:
+ ## FIXME: lldb won't print this but gdb unexpectedly says it's optimized out, even at O0.
+ # !value 'TypeTraits<int __attribute__((ext_vector_type(4)))>::MysteryNumber': 3
+ !and {lines: !label break_11}:
+ !value 'i': [0, 1, 2, 3]
+ !value 'x[0]': [1, 8]
+ !value 'x[1]': [2, 9]
+ !value 'x[2]': [3, 10]
+ !value 'x[3]': [4, 11]
+ !value 'y[0]': 5
+ !value 'y[1]': 6
+ !value 'y[2]': 7
+ !value 'y[3]': 8
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/stack-var.c b/cross-project-tests/debuginfo-tests/dexter-tests/stack-var.c
index 8447dd1cad290..1e79412548d0f 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/stack-var.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/stack-var.c
@@ -2,16 +2,25 @@
// UNSUPPORTED: system-windows
//
// RUN: %clang -std=gnu11 -O -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w --binary %t %dexter_lldb_args -- %s | FileCheck %s
void __attribute__((noinline, optnone)) bar(int *test) {}
int main() {
int test;
test = 23;
- bar(&test); // DexLabel('before_bar')
- return test; // DexLabel('after_bar')
+ bar(&test); // !dex_label before_bar
+ return test; // !dex_label after_bar
}
-// DexExpectWatchValue('test', '23', on_line=ref('before_bar'))
-// DexExpectWatchValue('test', '23', on_line=ref('after_bar'))
+// CHECK-DAG: seen_values: 2
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label before_bar}:
+ !value test: 23
+!where {lines: !label after_bar}:
+ !value test: 23
+...
+*/
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/vla.c b/cross-project-tests/debuginfo-tests/dexter-tests/vla.c
index 6978b5b91fa3b..b86aa79714e83 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/vla.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/vla.c
@@ -3,14 +3,14 @@
// UNSUPPORTED: system-windows
//
// RUN: %clang -std=gnu11 -O0 -glldb %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w --binary %t %dexter_lldb_args -- %s
+// RUN: %dexter -w --binary %t %dexter_lldb_args -- %s | FileCheck %s
void init_vla(int size) {
int i;
int vla[size];
for (i = 0; i < size; i++)
vla[i] = size-i;
- vla[0] = size; // DexLabel('end_init')
+ vla[0] = size; // !dex_label end_init
}
int main(int argc, const char **argv) {
@@ -18,6 +18,16 @@ int main(int argc, const char **argv) {
return 0;
}
-// DexExpectWatchValue('vla[0]', '23', on_line=ref('end_init'))
-// DexExpectWatchValue('vla[1]', '22', on_line=ref('end_init'))
+// CHECK-DAG: seen_values: 2
+// CHECK-DAG: correct_step_coverage: 100.0%
+
+/*
+---
+!where {lines: !label end_init}:
+ !value vla:
+ "[0]": 23
+ "[1]": 22
+...
+*/
+
>From 63c1cd9c94e2fced61641fd388b5b7d8b03582e5 Mon Sep 17 00:00:00 2001
From: Stephen Tozer <stephen.tozer at sony.com>
Date: Wed, 17 Jun 2026 15:55:02 +0100
Subject: [PATCH 3/3] Use heuristic for dexter-tests not using LLDB
---
.../debuginfo-tests/dexter-tests/global-constant.cpp | 2 +-
cross-project-tests/debuginfo-tests/dexter-tests/hello.c | 2 +-
.../debuginfo-tests/dexter-tests/inline-line-gap.cpp | 2 +-
cross-project-tests/debuginfo-tests/dexter-tests/nrvo.cpp | 2 +-
.../debuginfo-tests/dexter-tests/realigned-frame.cpp | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/global-constant.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/global-constant.cpp
index 7274506b9ae43..e74a5636c08f3 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/global-constant.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/global-constant.cpp
@@ -1,7 +1,7 @@
// REQUIRES: system-windows
//
// RUN: %clang_cl /Z7 /Zi %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
+// RUN: %dexter --use-heuristic --use-heuristic --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
// Check that global constants have debug info.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/hello.c b/cross-project-tests/debuginfo-tests/dexter-tests/hello.c
index 1e7b050cf08f7..7903739fed0cb 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/hello.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/hello.c
@@ -1,7 +1,7 @@
// REQUIRES: system-windows
//
// RUN: %clang_cl /Z7 /Zi %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
+// RUN: %dexter --use-heuristic --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
#include <stdio.h>
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/inline-line-gap.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/inline-line-gap.cpp
index e24d3a48656ed..a2fbb2b865238 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/inline-line-gap.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/inline-line-gap.cpp
@@ -1,7 +1,7 @@
// REQUIRES: system-windows
//
// RUN: %clang_cl /Od /Z7 /Zi %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
+// RUN: %dexter --use-heuristic --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
//
// RUN: %clang_cl /O2 /Z7 /Zi %s -o %t
// RUN: %dexter --fail-lt 1.0 -w --binary %t \
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/nrvo.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/nrvo.cpp
index bcb6d9b0b1d15..322917aa1b9b4 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/nrvo.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/nrvo.cpp
@@ -4,7 +4,7 @@
// REQUIRES: system-windows, dbgeng-10-19041
//
// RUN: %clang_cl /Z7 /Zi %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
+// RUN: %dexter --use-heuristic --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
struct string {
string() {}
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/realigned-frame.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/realigned-frame.cpp
index 24583cc968b6e..3968b183181b4 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/realigned-frame.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/realigned-frame.cpp
@@ -1,7 +1,7 @@
// REQUIRES: system-windows
//
// RUN: %clang_cl /Z7 /Zi %s -o %t
-// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
+// RUN: %dexter --use-heuristic --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
// From https://llvm.org/pr38857, where we had issues with stack realignment.
More information about the llvm-branch-commits
mailing list