You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consider an IR::SwitchStatement that has two unique IR::SwitchCases (let's call them "case 1 and 2"), that each point to the same IR::BlockStatement*.
When traversing from preorder(const IR::SwitchStatement *statement) down to preorder(const IR::BlockStatement *statement), the callingContext is not updated, so when we are setting the IR::BlockStatement*'s definitions, the ProgramPoint for the IR::BlockStatement* pointed by both case 1 and case 2 will be equivalent.
This is just one example of the problem, but there are also at least several other (and possibly many other) places in ComputeWriteSet where this is a problem.
Solving this problem should allow us to disable the Cloner and RemoveHidden passes, as suggested by @mihaibudiu in #4797.
#4810 (comment) mentions two possible solutions for the problem.
Disable Cloner and RemoveHidden passes, run unit tests, and analyze the failures
The text was updated successfully, but these errors were encountered:
kfcripps
added
bug
This behavior is unintended and should be fixed.
core
Topics concerning the core segments of the compiler (frontend, midend, parser)
labels
Jul 16, 2024
See #4810 and related discussions for context.
Consider an
IR::SwitchStatement
that has two uniqueIR::SwitchCase
s (let's call them "case 1 and 2"), that each point to the sameIR::BlockStatement*
.When traversing from
preorder(const IR::SwitchStatement *statement)
down topreorder(const IR::BlockStatement *statement)
, thecallingContext
is not updated, so when we are setting theIR::BlockStatement*
's definitions, theProgramPoint
for theIR::BlockStatement*
pointed by both case 1 and case 2 will be equivalent.This is just one example of the problem, but there are also at least several other (and possibly many other) places in
ComputeWriteSet
where this is a problem.Solving this problem should allow us to disable the
Cloner
andRemoveHidden
passes, as suggested by @mihaibudiu in #4797.#4810 (comment) mentions two possible solutions for the problem.
To better understand the problem:
IR::Vector
#4810 (comment)Cloner
andRemoveHidden
passes, run unit tests, and analyze the failuresThe text was updated successfully, but these errors were encountered: