uweigand opened PR #3781 from isle-insndata
to main
:
Add accessors to prelude.isle to access data fields of
func_addr
andsymbol_value
instructions.These are based on similar versions I had added to the s390x
back-end, but are a bit more straightforward to use.
func_ref_data: Extract SigRef, ExternalName, and RelocDistance
fields given a FuncRef.symbol_value_data: Extract ExternalName, RelocDistance, and
offset fields given a GlobalValue representing a Symbol.reloc_distance_near: Test for RelocDistance::Near.
The s390x back-end is changed to use these common versions.
Note that this exposed a bug in common isle code: This extractor:
(extractor (load_sym inst) (and inst (load _ (def_inst (symbol_value (symbol_value_data _ (reloc_distance_near) offset))) (i64_from_offset (memarg_symbol_offset_sum <offset _)))))
would raise an assertion in sema.rs due to a supposed cycle in
extractor definitions. But there was no actual cycle, it was
simply that the extractor tree refers twice to theinsn_data
extractor (once via theload
and once via thesymbol_value
extractor). Fixed by checking for pre-existing definitions only
along one path in the tree, not across the whole tree.CC @cfallin
<!--
Please ensure that the following steps are all taken care of before submitting
the PR.
[ ] This has been discussed in issue #..., or if not, please tell us why
here.[ ] A short description of what this does, why it is needed; if the
description becomes long, the matter should probably be discussed in an issue
first.[ ] This PR contains test cases, if meaningful.
- [ ] A reviewer from the core maintainer team has been assigned for this PR.
If you don't know who could review this, please indicate so. The list of
suggested reviewers on the right can help you.Please ensure all communication adheres to the code of conduct.
-->
cfallin submitted PR review.
cfallin merged PR #3781.
Last updated: Dec 23 2024 at 12:05 UTC