swift-llvm and swift-clang
When Apple released the apple/swift repository on GitHub, they also released apple/swift-llvm and apple/swift-clang. Why?
Apple’s Swift fork of LLVM has only three sets of minor changes:
- Convenience wrappers for LLVM bitcode. These are used by Swift’s fork of Clang, as part of the implementation of APINotes (more on those below).
A specialization of the LLVM abstract data type
llvm::DenseMapInfo. This allows
std::tuple<T...>to be used as a key in an
llvm::DenseMap. Some helpers to hash tuple values have also been added. Again, this is used by Swift’s fork of Clang in its implementation of APINotes, to store tuples of information about Objective-C properties.
- Slight adjustments to ensure a mangled name is used as a “linkage name” for debug info. (I know very little about debug info, but I read that certain tools don’t work if the “linkage name” isn’t correct.)
All of these
Continue reading →