Skip to content

Constant arguments for calls #62

Open
@xermicus

Description

@xermicus

There was some support for constant arguments in the original ML code base but we don't use them currently. Either use them properly or remove related code.

  • It seems that this was only used for some era VM specific features? Please first check the original code base and report here what this was exactly used for, and whether we could use constant arguments in general. I'd like to answer the following questions:
    • Why are those constants needed as an extra argument?
    • Why are they not just ordinary values since LLVMs constant propagation should take care of it?
    • Why is this needed there but not in general?
  • We need to find out if this is really required and how well LLVMs optimization passes already handle constants. Investigate some code examples, possibly from the integration test suite. Please report those findings here first so we can decide.
    • Provide multiple Solidity or YUL examples and their corresponding optimized LL, and show that constant propagation works as expected or where it fails. A starting point is to use some code examples from the integration tests.
    • If not, why not?
  • Implementing anything heavily relies on the findings of the first two tasks. Should not implement anything yet.
  • If it turns out that any custom logic in our lowering regarding constants is futile because LLVM handles it really well anyways. We should simply remove any artifacts related to that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions