xref: /aosp_15_r20/external/llvm/docs/TableGen/Deficiencies.rst (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker=====================
2*9880d681SAndroid Build Coastguard WorkerTableGen Deficiencies
3*9880d681SAndroid Build Coastguard Worker=====================
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker.. contents::
6*9880d681SAndroid Build Coastguard Worker   :local:
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard WorkerIntroduction
9*9880d681SAndroid Build Coastguard Worker============
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard WorkerDespite being very generic, TableGen has some deficiencies that have been
12*9880d681SAndroid Build Coastguard Workerpointed out numerous times. The common theme is that, while TableGen allows
13*9880d681SAndroid Build Coastguard Workeryou to build Domain-Specific-Languages, the final languages that you create
14*9880d681SAndroid Build Coastguard Workerlack the power of other DSLs, which in turn increase considerably the size
15*9880d681SAndroid Build Coastguard Workerand complexity of TableGen files.
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard WorkerAt the same time, TableGen allows you to create virtually any meaning of
18*9880d681SAndroid Build Coastguard Workerthe basic concepts via custom-made back-ends, which can pervert the original
19*9880d681SAndroid Build Coastguard Workerdesign and make it very hard for newcomers to understand it.
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard WorkerThere are some in favour of extending the semantics even more, but making sure
22*9880d681SAndroid Build Coastguard Workerback-ends adhere to strict rules. Others suggesting we should move to more
23*9880d681SAndroid Build Coastguard Workerpowerful DSLs designed with specific purposes, or even re-using existing
24*9880d681SAndroid Build Coastguard WorkerDSLs.
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard WorkerKnown Problems
27*9880d681SAndroid Build Coastguard Worker==============
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard WorkerTODO: Add here frequently asked questions about why TableGen doesn't do
30*9880d681SAndroid Build Coastguard Workerwhat you want, how it might, and how we could extend/restrict it to
31*9880d681SAndroid Build Coastguard Workerbe more use friendly.
32