On Monday, 28 October 2013 at 21:07:07 UTC, Iain Buclaw wrote:
From what I've read and gathered from David over a period of some conversations. Clang infrastructure-wise is much like gcc-3.3/gcc-4.0 was - they have a well defined AST that is capable of representing
everything you'd expect in a typical C-family language, with a
backdoor to lower level register/assembly representations for
target-specific implementations.

If you are referring to LLVM here: Yes and no.

It's true that the LLVM IR is mostly target-independent (except for data type sizes and so on) with a number of backdoors in the form of inline assembly, special intrinsics and so on.

But at the same time, the LLVM IR is also of a very different quality than GCC GENERIC, being strictly in SSA form. I have not looked into the current GCC architecture in any detail, but I'd guess that LLVM itself starts approximately at the point where the middle-end does in GCC.

Clang itself is obviously on a higher layer, but unlike GENERIC, its data structures are not designed to be reused for non-C-family languages. So, the questions of whether its AST can represent every concept from another language or if it needs contains backdoors to a lower level are somewhat moot.

David

Reply via email to