-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(hugr-llvm)!: Optimise the llvm types used to represent hugr sums. #1855
Conversation
This PR contains breaking changes to the public Rust API. cargo-semver-checks summary
|
de1e12c
to
d559824
Compare
@peter-campora I made this for you. Would you mind reviewing? |
LGTM but I currently lack context to find anything subtle here. |
The LLVM output looks a lot more readable now! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice, the LLVM is a lot more readbale now!
My only real concerns are empty sums and my comment in build_untag
Also, it took me a bit to wrap my head around what's going on in layout_variants_impl
. Left a few refactoring suggestions, but that's up to you
Great review, thank you @mark-koch . |
Co-authored-by: Mark Koch <[email protected]>
Co-authored-by: Mark Koch <[email protected]>
Co-authored-by: Mark Koch <[email protected]>
45f2e3f
to
23c75c6
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1855 +/- ##
==========================================
+ Coverage 86.52% 86.55% +0.02%
==========================================
Files 194 195 +1
Lines 35250 35569 +319
Branches 32063 32382 +319
==========================================
+ Hits 30501 30786 +285
- Misses 2973 3011 +38
+ Partials 1776 1772 -4
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
@mark-koch I believe I've address all of your comments. I split I have added test cases for emission I have restored handling for void sums, but I think we might need a bit more. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Doug, looks good!
However, something seems off in the layout since tests are failing the asserts?
Co-authored-by: Mark Koch <[email protected]>
Co-authored-by: Mark Koch <[email protected]>
Co-authored-by: Mark Koch <[email protected]>
## 🤖 New release * `hugr`: 0.14.1 -> 0.14.2 (✓ API compatible changes) * `hugr-core`: 0.14.1 -> 0.14.2 (✓ API compatible changes) * `hugr-model`: 0.16.0 -> 0.17.0 (⚠️ API breaking changes) * `hugr-llvm`: 0.14.1 -> 0.14.2 (✓ API compatible changes) * `hugr-passes`: 0.14.1 -> 0.14.2 (✓ API compatible changes) * `hugr-cli`: 0.14.1 -> 0.14.2 (✓ API compatible changes) ###⚠️ `hugr-model` breaking changes ``` --- failure enum_variant_added: enum variant added on exhaustive enum --- Description: A publicly-visible enum without #[non_exhaustive] has a new variant. ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.38.0/src/lints/enum_variant_added.ron Failed in: variant Term:Const in /tmp/.tmpszSQ4r/hugr/hugr-model/src/v0/mod.rs:591 variant Term:ConstFunc in /tmp/.tmpszSQ4r/hugr/hugr-model/src/v0/mod.rs:697 variant Term:ConstAdt in /tmp/.tmpszSQ4r/hugr/hugr-model/src/v0/mod.rs:703 variant Term:Bytes in /tmp/.tmpszSQ4r/hugr/hugr-model/src/v0/mod.rs:711 variant Term:BytesType in /tmp/.tmpszSQ4r/hugr/hugr-model/src/v0/mod.rs:717 variant Term:Meta in /tmp/.tmpszSQ4r/hugr/hugr-model/src/v0/mod.rs:720 variant Operation:Const in /tmp/.tmpszSQ4r/hugr/hugr-model/src/v0/mod.rs:409 --- failure enum_variant_missing: pub enum variant removed or renamed --- Description: A publicly-visible enum has at least one variant that is no longer available under its prior name. It may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.38.0/src/lints/enum_variant_missing.ron Failed in: variant Term::Quote, previously in file /tmp/.tmp8fke0a/hugr-model/src/v0/mod.rs:565 --- failure struct_missing: pub struct removed or renamed --- Description: A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.38.0/src/lints/struct_missing.ron Failed in: struct hugr_model::v0::MetaItem, previously in file /tmp/.tmp8fke0a/hugr-model/src/v0/mod.rs:500 ``` <details><summary><i><b>Changelog</b></i></summary><p> ## `hugr` <blockquote> ## [0.14.2](hugr-v0.14.1...hugr-v0.14.2) - 2025-01-20 ### Bug Fixes - Three bugfixes in model import and export. (#1844) ### Documentation - Fix typo in `DataflowParent` doc (#1865) ### New Features - Add CallGraph struct, and dead-function-removal pass (#1796) - `Value::some`, `::none`, and `SumType::new_option` helpers (#1828) - Constant values in `hugr-model` (#1838) - *(hugr-llvm)* Emit ipow (#1839) - Bytes literal in hugr-model. (#1845) - Improved representation for metadata in `hugr-model` (#1849) ### Testing - Add tests for constant value deserialization (#1822) </blockquote> ## `hugr-core` <blockquote> ## [0.14.2](hugr-core-v0.14.1...hugr-core-v0.14.2) - 2025-01-20 ### Bug Fixes - Three bugfixes in model import and export. (#1844) ### Documentation - Fix typo in `DataflowParent` doc (#1865) ### New Features - `Value::some`, `::none`, and `SumType::new_option` helpers (#1828) - Constant values in `hugr-model` (#1838) - *(hugr-llvm)* Emit ipow (#1839) - Bytes literal in hugr-model. (#1845) - Improved representation for metadata in `hugr-model` (#1849) ### Testing - Add tests for constant value deserialization (#1822) </blockquote> ## `hugr-model` <blockquote> ## [0.17.0](hugr-model-v0.16.0...hugr-model-v0.17.0) - 2025-01-20 ### Bug Fixes - Three bugfixes in model import and export. (#1844) ### New Features - Constant values in `hugr-model` (#1838) - Bytes literal in hugr-model. (#1845) - Improved representation for metadata in `hugr-model` (#1849) </blockquote> ## `hugr-llvm` <blockquote> ## [0.14.2](hugr-llvm-v0.14.1...hugr-llvm-v0.14.2) - 2025-01-20 ### New Features - *(hugr-llvm)* Emit more int ops (#1835) - Constant values in `hugr-model` (#1838) - *(hugr-llvm)* Emit ipow (#1839) ### Refactor - *(hugr-llvm)* [**breaking**] Optimise the llvm types used to represent hugr sums. (#1855) ### Testing - Fix failing inot test (#1841) </blockquote> ## `hugr-passes` <blockquote> ## [0.14.2](hugr-passes-v0.14.1...hugr-passes-v0.14.2) - 2025-01-20 ### New Features - Add CallGraph struct, and dead-function-removal pass (#1796) </blockquote> ## `hugr-cli` <blockquote> ## [0.14.1](hugr-cli-v0.14.0...hugr-cli-v0.14.1) - 2024-12-18 ### New Features - Print `hugr-cli`'s correct version when using '--version' (#1790) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/). --------- Co-authored-by: Agustín Borgna <[email protected]>
## 🤖 New release * `hugr`: 0.14.3 * `hugr-core`: 0.14.3 * `hugr-model`: 0.17.1 * `hugr-llvm`: 0.14.3 * `hugr-passes`: 0.14.3 * `hugr-cli`: 0.14.3 <details><summary><i><b>Changelog</b></i></summary><p> ## `hugr` <blockquote> ## [0.14.3](hugr-v0.14.2...hugr-v0.14.3) - 2025-02-05 ### Bug Fixes - Export `RemoveDeadFuncsError` (#1883) - const-folding Module keeps at least "main" (#1901) - determine correct bounds of custom types (#1888) - Exporting converging control flow edges (#1890) ### Documentation - Fix deprecation warning messages (#1891) - Explain why `ConstF64` is not PartialEq (#1829) ### New Features - Special cased array, float and int constants in hugr-model export (#1857) - Simplify hugr-model (#1893) </blockquote> ## `hugr-core` <blockquote> ## [0.14.3](hugr-core-v0.14.2...hugr-core-v0.14.3) - 2025-02-05 ### Bug Fixes - determine correct bounds of custom types (#1888) - Exporting converging control flow edges (#1890) ### Documentation - Explain why `ConstF64` is not PartialEq (#1829) ### New Features - Special cased array, float and int constants in hugr-model export (#1857) - Simplify hugr-model (#1893) </blockquote> ## `hugr-model` <blockquote> ## [0.17.1](hugr-model-v0.17.0...hugr-model-v0.17.1) - 2025-02-05 ### Bug Fixes - determine correct bounds of custom types (#1888) ### New Features - Special cased array, float and int constants in hugr-model export (#1857) - Simplify hugr-model (#1893) - Do not require `capnp` to be installed to compile `hugr-model` (#1907) </blockquote> ## `hugr-llvm` <blockquote> ## [0.14.2](hugr-llvm-v0.14.1...hugr-llvm-v0.14.2) - 2025-01-20 ### New Features - *(hugr-llvm)* Emit more int ops (#1835) - Constant values in `hugr-model` (#1838) - *(hugr-llvm)* Emit ipow (#1839) ### Refactor - *(hugr-llvm)* [**breaking**] Optimise the llvm types used to represent hugr sums. (#1855) ### Testing - Fix failing inot test (#1841) </blockquote> ## `hugr-passes` <blockquote> ## [0.14.3](hugr-passes-v0.14.2...hugr-passes-v0.14.3) - 2025-02-05 ### Bug Fixes - Export `RemoveDeadFuncsError` (#1883) - const-folding Module keeps at least "main" (#1901) ### Documentation - Fix deprecation warning messages (#1891) </blockquote> ## `hugr-cli` <blockquote> ## [0.14.1](hugr-cli-v0.14.0...hugr-cli-v0.14.1) - 2024-12-18 ### New Features - Print `hugr-cli`'s correct version when using '--version' (#1790) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/). --------- Co-authored-by: Agustín Borgna <[email protected]>
We rework
LLVMSumType
andLLVMValueType
to have llvm representations thatType::UNIT
.In particular, the hugr
bool_t()
is now represented byi1
.BREAKING CHANGE:
LLVMSumValue::get_tag_type
renamed totag_type
.LLVMSumType::try_new2
renamed toLLVMSumType::try_new
.LLVMSumType::get_variant
removed.