What do BU and USR in compiler lingo mean?

Viewed 39

On my journey learning about llvm and clang, I came across the abbreviations BU and USR. I have not been able to find out what they mean.

I am assuming BU is some kind of unit - just like TU is a translation unit.
I saw it being used here talking about "[...] several BUs are compacted inside a larger TU [...]".

Also I was able to find, that apparently USRs can be generated from ASTs.

  • What do these abbreviations stand for and what do they mean?
  • Are these abbreviations common compiler lingo or merely used by llvm?
1 Answers

To quote the the clang documentation:

A Unified Symbol Resolution (USR) is a string that identifies a particular entity (function, class, variable, etc.) within a program. USRs can be compared across translation units to determine, e.g., when references in one translation refer to an entity defined in another translation unit.

Also from the the clang-tags User Manual:

A symbol can not be identified by its spelling only: context information is needed to disambiguate uses of the same spelling in different scopes. In order to uniquely identify a symbol across all translation units in a project, clang defines Unified Symbol Resolutions.

As for BU, this might refer to the Boost.Units library.

Related