Skip to content

tco and non-tco execution cannot be active at the same time #2245

@Schaeff

Description

@Schaeff

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions