Commit 7c90ace
fix: add constant propagation to _inline_yul_function
_inline_yul_function was the only sequential statement processor that
did not maintain a substitution map. When an intermediate variable was
assigned a constant (e.g. `let expr_1 := cleanup(3)`) and then passed
to a helper with branch expr_stmts (e.g. `wrapping_div(x, expr_1)`),
the helper saw `Var('expr_1')` instead of `IntLit(3)`, making the
branch condition non-constant and incorrectly rejecting the code.
Add a `const_subst` dict that tracks variables assigned to
compile-time-constant values:
- Before inline_calls: substitute known constants into expressions
- After inline_calls on PlainAssignment: record constant results,
or remove the variable if the new value is non-constant
- After ParsedIfBlock: invalidate conditionally-assigned variables
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent b9ad46d commit 7c90ace
2 files changed
+184
-17
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7620 | 7620 | | |
7621 | 7621 | | |
7622 | 7622 | | |
| 7623 | + | |
| 7624 | + | |
| 7625 | + | |
| 7626 | + | |
| 7627 | + | |
| 7628 | + | |
| 7629 | + | |
| 7630 | + | |
| 7631 | + | |
| 7632 | + | |
| 7633 | + | |
| 7634 | + | |
| 7635 | + | |
| 7636 | + | |
| 7637 | + | |
| 7638 | + | |
| 7639 | + | |
| 7640 | + | |
| 7641 | + | |
| 7642 | + | |
| 7643 | + | |
| 7644 | + | |
| 7645 | + | |
| 7646 | + | |
| 7647 | + | |
| 7648 | + | |
| 7649 | + | |
| 7650 | + | |
| 7651 | + | |
| 7652 | + | |
| 7653 | + | |
| 7654 | + | |
| 7655 | + | |
| 7656 | + | |
| 7657 | + | |
| 7658 | + | |
| 7659 | + | |
| 7660 | + | |
| 7661 | + | |
| 7662 | + | |
| 7663 | + | |
| 7664 | + | |
| 7665 | + | |
| 7666 | + | |
| 7667 | + | |
| 7668 | + | |
| 7669 | + | |
| 7670 | + | |
| 7671 | + | |
| 7672 | + | |
| 7673 | + | |
| 7674 | + | |
| 7675 | + | |
| 7676 | + | |
| 7677 | + | |
| 7678 | + | |
| 7679 | + | |
| 7680 | + | |
| 7681 | + | |
| 7682 | + | |
| 7683 | + | |
| 7684 | + | |
| 7685 | + | |
| 7686 | + | |
| 7687 | + | |
| 7688 | + | |
| 7689 | + | |
| 7690 | + | |
| 7691 | + | |
| 7692 | + | |
| 7693 | + | |
| 7694 | + | |
| 7695 | + | |
| 7696 | + | |
| 7697 | + | |
| 7698 | + | |
| 7699 | + | |
| 7700 | + | |
| 7701 | + | |
| 7702 | + | |
| 7703 | + | |
| 7704 | + | |
| 7705 | + | |
| 7706 | + | |
| 7707 | + | |
| 7708 | + | |
| 7709 | + | |
| 7710 | + | |
| 7711 | + | |
| 7712 | + | |
| 7713 | + | |
| 7714 | + | |
| 7715 | + | |
| 7716 | + | |
| 7717 | + | |
| 7718 | + | |
| 7719 | + | |
| 7720 | + | |
| 7721 | + | |
| 7722 | + | |
| 7723 | + | |
| 7724 | + | |
| 7725 | + | |
| 7726 | + | |
| 7727 | + | |
| 7728 | + | |
| 7729 | + | |
| 7730 | + | |
| 7731 | + | |
| 7732 | + | |
| 7733 | + | |
| 7734 | + | |
| 7735 | + | |
| 7736 | + | |
| 7737 | + | |
| 7738 | + | |
| 7739 | + | |
| 7740 | + | |
| 7741 | + | |
| 7742 | + | |
| 7743 | + | |
| 7744 | + | |
| 7745 | + | |
| 7746 | + | |
| 7747 | + | |
| 7748 | + | |
| 7749 | + | |
| 7750 | + | |
| 7751 | + | |
| 7752 | + | |
| 7753 | + | |
| 7754 | + | |
| 7755 | + | |
| 7756 | + | |
| 7757 | + | |
| 7758 | + | |
| 7759 | + | |
| 7760 | + | |
| 7761 | + | |
| 7762 | + | |
| 7763 | + | |
| 7764 | + | |
| 7765 | + | |
| 7766 | + | |
| 7767 | + | |
| 7768 | + | |
| 7769 | + | |
| 7770 | + | |
| 7771 | + | |
| 7772 | + | |
| 7773 | + | |
| 7774 | + | |
| 7775 | + | |
| 7776 | + | |
| 7777 | + | |
| 7778 | + | |
| 7779 | + | |
| 7780 | + | |
| 7781 | + | |
| 7782 | + | |
| 7783 | + | |
| 7784 | + | |
7623 | 7785 | | |
7624 | 7786 | | |
7625 | 7787 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3099 | 3099 | | |
3100 | 3100 | | |
3101 | 3101 | | |
| 3102 | + | |
3102 | 3103 | | |
3103 | 3104 | | |
3104 | 3105 | | |
| |||
3107 | 3108 | | |
3108 | 3109 | | |
3109 | 3110 | | |
3110 | | - | |
| 3111 | + | |
3111 | 3112 | | |
3112 | 3113 | | |
3113 | 3114 | | |
| |||
3118 | 3119 | | |
3119 | 3120 | | |
3120 | 3121 | | |
3121 | | - | |
| 3122 | + | |
3122 | 3123 | | |
3123 | 3124 | | |
3124 | 3125 | | |
| |||
3134 | 3135 | | |
3135 | 3136 | | |
3136 | 3137 | | |
3137 | | - | |
| 3138 | + | |
3138 | 3139 | | |
3139 | 3140 | | |
3140 | 3141 | | |
| |||
3148 | 3149 | | |
3149 | 3150 | | |
3150 | 3151 | | |
3151 | | - | |
3152 | | - | |
3153 | | - | |
3154 | | - | |
3155 | | - | |
3156 | | - | |
3157 | | - | |
3158 | | - | |
3159 | | - | |
3160 | | - | |
3161 | | - | |
| 3152 | + | |
| 3153 | + | |
| 3154 | + | |
| 3155 | + | |
| 3156 | + | |
| 3157 | + | |
| 3158 | + | |
3162 | 3159 | | |
| 3160 | + | |
| 3161 | + | |
| 3162 | + | |
| 3163 | + | |
3163 | 3164 | | |
3164 | 3165 | | |
3165 | 3166 | | |
3166 | | - | |
| 3167 | + | |
3167 | 3168 | | |
3168 | 3169 | | |
3169 | 3170 | | |
3170 | 3171 | | |
3171 | 3172 | | |
3172 | | - | |
| 3173 | + | |
3173 | 3174 | | |
3174 | 3175 | | |
3175 | 3176 | | |
| |||
3184 | 3185 | | |
3185 | 3186 | | |
3186 | 3187 | | |
3187 | | - | |
| 3188 | + | |
3188 | 3189 | | |
3189 | 3190 | | |
3190 | 3191 | | |
3191 | 3192 | | |
| 3193 | + | |
| 3194 | + | |
| 3195 | + | |
| 3196 | + | |
3192 | 3197 | | |
3193 | 3198 | | |
3194 | 3199 | | |
| |||
0 commit comments