Skip to content

Conversation

@Keno
Copy link
Member

@Keno Keno commented Mar 10, 2023

Currently, semi-concrete eval results are one-to-one associated with a particular callsite, so in theory we can destroy them during inlining and nothing bad will happen. However, since we propagate them using the :info field, this breaks the assumption that we can copy IRCode around and re-run the compiler on it without ill effect. In general, the :info field is assumed generally immutable and mutating the IR containted therein breaks all sorts of assumptions. Perhaps in the future, we can avoid destroying the IRCode that we're about to inline, which would make all this copying unnecessary (note that we're already copying for every case other than semi-concrete eval), but for now just fix the robustness issue here.

Currently, semi-concrete eval results are one-to-one associated with
a particular callsite, so in theory we can destroy them during
inlining and nothing bad will happen. However, since we propagate
them using the `:info` field, this breaks the assumption that we
can copy IRCode around and re-run the compiler on it without ill
effect. In general, the `:info` field is assumed generally
immutable and mutating the IR containted therein breaks all sorts
of assumptions. Perhaps in the future, we can avoid destroying
the IRCode that we're about to inline, which would make all this
copying unnecessary (note that we're already copying for every case
other than semi-concrete eval), but for now just fix the robustness
issue here.
@aviatesk
Copy link
Member

@nanosoldier runbenchmarks("inference", vs=":master")

@nanosoldier
Copy link
Collaborator

Your benchmark job has completed - no performance regressions were detected. A full report can be found here.

@Keno Keno merged commit 441c570 into master Mar 11, 2023
@Keno Keno deleted the kf/defsemi branch March 11, 2023 02:16
@aviatesk
Copy link
Member

LGTM.

Xnartharax pushed a commit to Xnartharax/julia that referenced this pull request Apr 19, 2023
…ng#48963)

Currently, semi-concrete eval results are one-to-one associated with
a particular callsite, so in theory we can destroy them during
inlining and nothing bad will happen. However, since we propagate
them using the `:info` field, this breaks the assumption that we
can copy IRCode around and re-run the compiler on it without ill
effect. In general, the `:info` field is assumed generally
immutable and mutating the IR containted therein breaks all sorts
of assumptions. Perhaps in the future, we can avoid destroying
the IRCode that we're about to inline, which would make all this
copying unnecessary (note that we're already copying for every case
other than semi-concrete eval), but for now just fix the robustness
issue here.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants