Skip to content

Conversation

jabraham17
Copy link
Member

Adds a new function, eliminateLiteralExpressions, which is called by the copyPropagation compiler pass to remove evaluate literal expressions and replace them.

This new function collapses expressions like 1 + 2 < 4, which prior to this PR would be generated as-is. Normally we just rely on backend compiler optimizations to handle this, but by handling this in the Chapel compiler we reduce the amount of code we generate. This is especially true when we can eliminate whole blocks by evaluating an if statement's condition. By putting this pass into copyPropagation, we can propagate bools before running deadCodeElimination, which enables that poass to remove even more dead blocks.

I originally created this to reduce the compiler's memory usage during codegen by reducing the amount of code we generate. I was using a large application (arkouda) and I saw little difference before/after this work (<1% difference), so I am leaving this PR as a draft due to its questionable utility.

  • paratest with/without gasnet

@jabraham17 jabraham17 changed the title Add new step to copyPropagation to elimnate literal expressions Add new step to copyPropagation to eliminate literal expressions Jul 15, 2025
Signed-off-by: Jade Abraham <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant