GaloisInc / cclyzerpp

cclyzer++ is a precise and scalable pointer analysis for LLVM code.
https://galoisinc.github.io/cclyzerpp/
BSD 3-Clause "New" or "Revised" License
137 stars 14 forks source link

RFC: Remove handling of attributes #105

Closed langston-barrett closed 2 years ago

langston-barrett commented 2 years ago

The API around attributes changed in LLVM 14. Rather than blindly upgrade the FactGenerator to continue to type-check, I realized that

  1. Attribute handling was probably already incomplete - I'm sure LLVM 10-13 added new attributes that I hadn't yet updated the schema and FactGenerator to account for.
  2. I wasn't really sure how attributes impacted the analysis.

I decided to try to delete everything related to attributes instead. The idea is that if we don't use them, they're just slowing everything down and adding a maintenance burden, even while we know that the current support isn't comprehensive (and thus not useful to e.g., other clients of the FactGenerator).

This appears to pass all of the tests, including the golden tests and EXTRA_TESTS. It's certainly possible that the analysis changes would impact the output on programs that do use the byval attribute and that we don't have enough coverage of these in the test suite. However, it seems comparably likely that some aspect of the LLVM language changed in a way that made this code not work the way it was intended to when it was originally written. See #104.

See also #26.

langston-barrett commented 2 years ago

@thinkmoore and I discussed offline and we aligned on this approach.