Since 1.4.1, turning on the tco feature removes the non-tco execution code.
This is an issue for us (powdr labs) for the following reason:
- We build specialised chips for whole blocks of the program
- Execution for these specialised chips relies on execution for the instructions of the block
- Whether in tco or in non-tco mode, we execute the block instructions in non-tco node.
As a result, we cannot support tco in 1.4.1, because turning tco on removes the code that we rely on for execution.
We tried fixing this by relying on tco execution only when in tco mode. This does not seem to work, because once we tco-execute the first instruction in the block, we don't have a way to stop at the end of the block, since tco execution only stops when it reaches a base case.
We would suggest switching back to the 1.4.0 behaviour, where the tco feature kept the non-tco code intact.
Tagging @shuklaayush following advice from @jonathanpwang
Since 1.4.1, turning on the
tcofeature removes the non-tco execution code.This is an issue for us (powdr labs) for the following reason:
As a result, we cannot support
tcoin 1.4.1, because turningtcoon removes the code that we rely on for execution.We tried fixing this by relying on tco execution only when in tco mode. This does not seem to work, because once we tco-execute the first instruction in the block, we don't have a way to stop at the end of the block, since tco execution only stops when it reaches a base case.
We would suggest switching back to the 1.4.0 behaviour, where the
tcofeature kept the non-tco code intact.Tagging @shuklaayush following advice from @jonathanpwang