Details
-
Sub-task
-
Status: Closed
-
Major
-
Resolution: Done
-
None
-
None
Description
Currently, the handling of if, while, and for predicates exhibits a couple of shortcomings. First, there are different representations for operations (as single-root HOP DAGs) and literals (as dedicated constants). Second, the runtime has to explicitly find intermediate variable names, remove rmvar instructions, which is brittle and error-prone. Third, the special handling of operations vs literals renders constant folding during dynamic recompilation invalid because, we would have to handle the transitioning from operation DAGs to constants accordingly.
This task aims to resolve all these issues, by properly compiling transient writes to special predicate variables (e.g., _pred that are guaranteed not to conflict with external variables). This requires a complete rework of the entire predicate handling during compilation and runtime.