[cfe-dev] [RFC] cHash: Integration of AST hashing

Christian Dietrich via cfe-dev cfe-dev at lists.llvm.org
Fri Dec 1 08:32:59 PST 2017


so I made some progress in integrating the CHash AST Hashing mechanism
into CLang: https://reviews.llvm.org/D40731
I cleaned up the mess in our repository and based the implementation on

Christian Dietrich <dietrich at sra.uni-hannover.de> writes:

> As I see, you have done a lot of work on the StmtDataCollectors and used
> TableGen to generate the DataCollector. So my idea would be the following:
> - Extend the StmtDataCollectors.td to handle all possible nodes/types in
>   the clang AST. Invoking this operator once, we get the hash value for
>   one node.

Currently the change D40731 is still incomplete, but some important
parts were already implemented:

- I have extended the StmtDataCollectors.td file (and added tablegen
  files for Decl, Attr, Type).

- Provide a CHashVisitor, based on RecursiveASTVisitor, that captures
  our idea of a AST Hash (Semantic, stable across invocations).

- Make it all work with the cHash test suite.

- Start to add a (condensed) unit-test suite to validate CHashVisitor.
  Integrating the useful parts of our internal test suite here is still
  to be done.

> - Derive an recursive AST hashing visitor from RecursiveASTVisitor. This
>   recursive AST visitor then has our desired flags:
>   - semantic_hash vs syntactic_hash
>   - Hash mechanism as a template parameter
>   - Include debug flags

Including these flags for the CHashVisitor is still to be done.

At this point I would appreciate some comments on the current state of
the implementation. My next steps would be to integrate larger parts of
our test suite.

Christian Dietrich, M.Sc. (Scientific Staff)
Institute for Systems Engineering (Systems and Computerarchitecture)
Leibniz Universität Hannover
Appelstraße 4
30167 Hannover, Germany

Tel:    +49 511 762-19737
Fax:    +49 511 762-19733
eMail:  dietrich at sra.uni-hannover.de
WWW:    https://www.sra.uni-hannover.de

More information about the cfe-dev mailing list