StructuredData is a fairly general mechanism for representing extensible
data in textual IR and in bitcode.
It is intended primarily as an abstraction layer used during IR printing,
parsing and (bitcode de-)serialization.
However, it can also be used to preserve structured data as-is for
extension points in tools where a particular extension isn't understood.
Possible use cases range over:
- Encoding TargetTypeInfo -- this is the use case that initially triggered this development
- Extensible human-readable and compile-time efficient metadata a la debug info metadata
- Human-readable and compile-time efficient modifiers on extended instructions / intrinsics
This change already includes rudimentary printing and parsing support.
Bitcode reading and writing will follow in a subsequent change.
Can constants follow the way metadata (and most other things in LLVM) is encoded and prefix the type?
I.e. i32 <integer> and i1 true/false