Based on discussion in D15448.
- For every sub-class C, its kind in the relevant enumeration is CKind (or C##Kind in preprocessor-ish terms), eg:
MemRegionKind -> MemRegionValKind
RegionValueKind -> SymbolRegionValueKind
CastSymbolKind -> SymbolCastKind
SymIntKind -> SymIntExprKind
- MemSpaceRegion is now an abstract base and no longer occupies GenericMemSpaceRegionKind. Instead, a new class, CodeSpaceRegion, is introduced for handling the unique use case for MemSpaceRegion as "the generic memory space" (when it represents a memory space that holds all executable code).
- BEG_ prefixes in memory region kind ranges are renamed to BEGIN_ for consisitency with symbol kind ranges (pro: not about begging, con: two extra characters to type).
While we're at it, what do you think about renaming FunctionTextRegion and BlockTextRegion to FunctionCodeRegion and BlockCodeRegion, respectively? The term 'code' is less jargony than 'text' and we already refer to BlockTextRegion as a 'code region' in BlockDataRegion.