A simplification callback communicates to the Attributor a user-provided value simplification of an IR position based on an AbstractAttribute. This patch constraints callback simplification based on the assumption that there should be a single simplification callback per IRP and forces the Attributor to use the callback-returned simplification value, when there is one.
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Unit Tests
Event Timeline
Comment Actions
The force update stuff does only work for one level but not more. So an AA depending on one that was forcefully updated is still going to see inconsistent values.
To really solve the issue we need to clear the state in aavaluesimplify (and friends) at the beginning of the update.
llvm/lib/Transforms/IPO/Attributor.cpp | ||
---|---|---|
662 | Same as below you have to give up and not fallback to aavaluesimplify. | |
703 | I think we just have to return SimplifiedV and be done with it. Fallback to AAValueSimplify is what can cause problems and inconsistencies. |
Same as below you have to give up and not fallback to aavaluesimplify.