Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1521 +/- ##
==========================================
- Coverage 83.82% 83.73% -0.10%
==========================================
Files 187 187
Lines 28954 28987 +33
Branches 27875 27908 +33
==========================================
Hits 24271 24271
- Misses 3522 3555 +33
Partials 1161 1161
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
5136b71 to
9f04315
Compare
I believe these lines are covered by the tests in |
| # hugr-core = { git = "https://github.com/quantinuum/hugr", "rev" = "de7b9f7581ae02cd80dff7b12794b55635903304" } | ||
| # hugr-cli = { git = "https://github.com/quantinuum/hugr", "rev" = "de7b9f7581ae02cd80dff7b12794b55635903304" } | ||
| # hugr-llvm = { git = "https://github.com/quantinuum/hugr", "rev" = "de7b9f7581ae02cd80dff7b12794b55635903304" } | ||
| hugr = { git = "https://github.com/quantinuum/hugr", branch = "george/debuginfo" } |
There was a problem hiding this comment.
Need to update to a released version of HUGR and remove these patches before merging.
There was a problem hiding this comment.
Pull request overview
This PR propagates HUGR/LLVM debug info support into the qis-compiler entry points by adding an emit_debug parameter, then updates tests and stored snapshots/resources to reflect the new debug metadata emitted into LLVM IR.
Changes:
- Expose
emit_debug(andtarget_triple) in the Python bindings/stubs and enable debug info intest_basic_generation.py. - Regenerate/update LLVM IR snapshots across
tket,tket-qsystem, andqis-compilerto include debug metadata (!dbg,!DICompileUnit,!DIFile, etc.). - Update the HUGR generator script/resources to include debug info and bump
instapatch versions.
Reviewed changes
Copilot reviewed 162 out of 175 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| Cargo.toml | Enables git patch overrides for hugr* crates to pick up debug-info work. |
| tket/Cargo.toml | Bumps insta patch version for snapshot compatibility. |
| tket/src/llvm/bool.rs | Adjusts test HUGR to be mutable (likely required by debug/info emission pipeline). |
| tket/src/llvm/rotation.rs | Makes test HUGR mutable; renames a test function exec_aadd → exec_add. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@llvm21_1.snap | Updates IR snapshot to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@llvm21_2.snap | Updates IR snapshot to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@llvm21_3.snap | Updates IR snapshot to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@llvm21_4.snap | Updates IR snapshot to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@llvm21_5.snap | Updates IR snapshot to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@llvm21_6.snap | Updates IR snapshot to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@llvm21_7.snap | Updates IR snapshot to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@pre-mem2reg@llvm21_1.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@pre-mem2reg@llvm21_2.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@pre-mem2reg@llvm21_3.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@pre-mem2reg@llvm21_4.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@pre-mem2reg@llvm21_5.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@pre-mem2reg@llvm21_6.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket/src/llvm/snapshots/tket__llvm__bool__test__emit_all_ops@pre-mem2reg@llvm21_7.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/debug.rs | Makes test HUGR mutable for emission. |
| tket-qsystem/src/llvm/futures.rs | Makes test HUGR mutable for emission. |
| tket-qsystem/src/llvm/prelude.rs | Makes test HUGRs mutable for emission. |
| tket-qsystem/src/llvm/random.rs | Makes test HUGR mutable for emission. |
| tket-qsystem/src/llvm/result.rs | Makes test HUGR mutable for emission. |
| tket-qsystem/src/llvm/utils.rs | Makes test HUGR mutable for emission. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__utils__test__emit_utils_codegen@llvm21_1.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__utils__test__emit_utils_codegen@pre-mem2reg@llvm21_1.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@llvm21_1.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@llvm21_2.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@llvm21_3.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@llvm21_4.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@llvm21_12.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@llvm21_13.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@llvm21_15.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@llvm21_16.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@pre-mem2reg@llvm21_1.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@pre-mem2reg@llvm21_2.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@pre-mem2reg@llvm21_3.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@pre-mem2reg@llvm21_4.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@pre-mem2reg@llvm21_12.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@pre-mem2reg@llvm21_13.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@pre-mem2reg@llvm21_15.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__result__test__emit_result_codegen@pre-mem2reg@llvm21_16.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@llvm21.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@llvm21_1.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@llvm21_2.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@llvm21_3.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@llvm21_4.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@llvm21_5.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@[email protected] | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@pre-mem2reg@llvm21_1.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@pre-mem2reg@llvm21_2.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@pre-mem2reg@llvm21_3.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@pre-mem2reg@llvm21_4.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__random__test__emit_random_codegen@pre-mem2reg@llvm21_5.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@llvm21_1.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@llvm21_2.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@llvm21_3.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@llvm21_4.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@llvm21_5.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@llvm21_6.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@llvm21_7.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@llvm21_8.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@llvm21_9.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@llvm21_10.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@pre-mem2reg@llvm21_1.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@pre-mem2reg@llvm21_2.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@pre-mem2reg@llvm21_3.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@pre-mem2reg@llvm21_4.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@pre-mem2reg@llvm21_5.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@pre-mem2reg@llvm21_6.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@pre-mem2reg@llvm21_7.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@pre-mem2reg@llvm21_8.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@pre-mem2reg@llvm21_9.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__qsystem__test__emit_qsystem_codegen@pre-mem2reg@llvm21_10.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__prelude__test__panic_emit@llvm21_0.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__prelude__test__panic_emit@pre-mem2reg@llvm21_0.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__prelude__test__exit_emit@llvm21_0.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__prelude__test__exit_emit@pre-mem2reg@llvm21_0.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@llvm21_1.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@llvm21_2.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@llvm21_3.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@llvm21_4.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@llvm21_5.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@llvm21_6.snap | Updates IR snapshot to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@pre-mem2reg@llvm21_1.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@pre-mem2reg@llvm21_2.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@pre-mem2reg@llvm21_3.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@pre-mem2reg@llvm21_4.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@pre-mem2reg@llvm21_5.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| tket-qsystem/src/llvm/snapshots/tket_qsystem__llvm__futures__test__emit_futures_codegen@pre-mem2reg@llvm21_6.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| qis-compiler/Cargo.toml | Bumps insta patch version for snapshot compatibility. |
| qis-compiler/rust/gpu.rs | Makes test HUGR mutable for emission. |
| qis-compiler/rust/snapshots/selene_hugr_qis_compiler__gpu__test__gpu_codegen@llvm21_call_ret_float.snap | Updates IR snapshot to include debug metadata. |
| qis-compiler/rust/snapshots/selene_hugr_qis_compiler__gpu__test__gpu_codegen@llvm21_call_ret_int.snap | Updates IR snapshot to include debug metadata. |
| qis-compiler/rust/snapshots/selene_hugr_qis_compiler__gpu__test__gpu_codegen@llvm21_dispose_context.snap | Updates IR snapshot to include debug metadata. |
| qis-compiler/rust/snapshots/selene_hugr_qis_compiler__gpu__test__gpu_codegen@llvm21_lookup_by_id.snap | Updates IR snapshot to include debug metadata. |
| qis-compiler/rust/snapshots/selene_hugr_qis_compiler__gpu__test__gpu_codegen@llvm21_read_result_int.snap | Updates IR snapshot to include debug metadata. |
| qis-compiler/rust/snapshots/selene_hugr_qis_compiler__gpu__test__gpu_codegen@pre-mem2reg@llvm21_dispose_context.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| qis-compiler/rust/snapshots/selene_hugr_qis_compiler__gpu__test__gpu_codegen@pre-mem2reg@llvm21_lookup_by_id.snap | Updates IR snapshot (pre-mem2reg) to include debug metadata. |
| qis-compiler/python/selene_hugr_qis_compiler/selene_hugr_qis_compiler.pyi | Updates type stubs for new emit_debug/target_triple parameters. |
| qis-compiler/python/tests/generate_hugrs.py | Enables guppylang debug mode when generating HUGR test resources. |
| qis-compiler/python/tests/resources/entry_args.hugr | Adds/updates a HUGR resource used by Python tests. |
| qis-compiler/python/tests/test_basic_generation.py | Enables emit_debug=True for LLVM snapshot tests. |
| qis-compiler/python/tests/snapshots/test_basic_generation/test_llvm/x86_64-unknown-linux-gnu-print_current_shot/print_current_shot_x86_64-unknown-linux-gnu | Updates Python LLVM snapshot to include debug metadata. |
| qis-compiler/python/tests/snapshots/test_basic_generation/test_llvm/x86_64-apple-darwin-print_current_shot/print_current_shot_x86_64-apple-darwin | Updates Python LLVM snapshot to include debug metadata. |
| qis-compiler/python/tests/snapshots/test_basic_generation/test_llvm/aarch64-apple-darwin-print_current_shot/print_current_shot_aarch64-apple-darwin | Updates Python LLVM snapshot to include debug metadata. |
| qis-compiler/python/tests/snapshots/test_basic_generation/test_llvm/x86_64-windows-msvc-print_current_shot/print_current_shot_x86_64-windows-msvc | Updates Python LLVM snapshot to include debug metadata. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| !1 = distinct !DICompileUnit(language: DW_LANG_Python, file: !2, producer: "guppylang (guppylang-internals-v0.32.0)-v0.21.11", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) | ||
| !2 = !DIFile(filename: "/Users/george.hodgkins/proj/tket2/qis-compiler/python/tests/generate_hugrs.py", directory: "file:///Users/george.hodgkins/proj/clone-anduril") | ||
| !3 = !{!"mainlib"} | ||
| !4 = distinct !DISubprogram(name: "print_current_shot.<locals>.main", linkageName: "__hugr__.__main__.print_current_shot.<locals>.main.1", scope: null, file: !5, line: 194, type: !6, scopeLine: 195, spFlags: DISPFlagDefinition, unit: !1) | ||
| !5 = !DIFile(filename: "/Users/george.hodgkins/proj/tket2/qis-compiler/python/tests/generate_hugrs.py", directory: "") | ||
| !6 = !DISubroutineType(types: !7) |
There was a problem hiding this comment.
This snapshot hard-codes an absolute local path (including a username) in the embedded debug metadata (!DIFile). This leaks developer machine details into the repo and is brittle if resources are regenerated elsewhere. Prefer emitting a sanitized/relative filename (or a constant like COMPILER_GENERATED_CODE) when generating the HUGR debug info used by tests.
There was a problem hiding this comment.
This is a good point, not sure it's avoidable with our current frontend generation though. It doesn't affect the current tests because they just use whatever is present in the HUGR (don't actually resolve the path).
There was a problem hiding this comment.
Looked into it and clang also produces DIFile entries with absolute paths, so I think we will keep that approach and live with the consequences.
There was a problem hiding this comment.
Recommend some anonymisation run on IR text before turning it into a snapshot. Otherwise CI will not be able to reproduce it and the snapshot test is guaranteed to fail, no?
There was a problem hiding this comment.
The snapshot doesn't fail because this string is present in the input HUGR, and the compiler just copies it into the bitcode without interpreting it. But I will sanitize it for tidiness
| # "tket", | ||
| # ] | ||
| # /// | ||
| # TODO: point at re-released guppylang(-internals) once available with debug info. right |
There was a problem hiding this comment.
Need to fix this before merging, once latest guppylang is rereleased.
| %1 = tail call i64 @teardown() | ||
| ret i64 %1 | ||
| tail call void @setup(i64 %0), !dbg !24 | ||
| tail call void @"__hugr__.__main__.flip_some.<locals>.main.1"(), !dbg !24 |
There was a problem hiding this comment.
Can we switch off tail calls for debug builds?
I don't know how we can recover DWARF metadata if we can't reliably walk the call stack. I guess this could be done manually when compiling bitcode to an object file (-fno-optimize-sibling-calls) but it feels like we shouldn't be hinting it anyway.
There was a problem hiding this comment.
Looked into this:
-
tail callby itself actually has no effect unless a) explicitly enabled with-tailcalloptor b) the call is immediately followed by a return (this is the case covered byoptimize-sibling-calls). And even if enabled with-tailcallopt, it still has no effect unless the call site (or callee function?) is labeled with a non-default calling convention likefastcc. -
Even when compiling a
tail call fastccwithllc -tailcallopt, it seems that a stack frame is still generated (or at least the calling convention uses a normal-lookingbl-retpair) on Linux and Darwin aarch64, and on Darwin at least the debugger displays a correct backtrace at a call site that was marked withtail.
TLDR, if the tail call annotations currently don't propagate to codegen, I think we should just disable them in hugr-llvm and QsystemPass unless/until we want them.
This reverts commit 25c18b9.
This PR adopts the debug info support being implemented for hugr-llvm in Quantinuum/hugr#3026, by adding an
emit_debugparameter to the qis-compiler entry points. See the hugr PR for an explanation of the test changes. This PR also updates the sample HUGRs used intest_basic_generation.pyto include debug info.