mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 21:00:13 +01:00
Clang performs the equivalent of Carbon's `lower` progressively, interleaved with parsing/semantic analysis. This is in conflict with Carbon's phase-based approach and leads to bugs in missing functionality in Clang's generated IR during Carbon/C++ interop. I surveyed other uses of Clang's APIs (originally written up in [this](https://docs.google.com/document/d/1wi85FRiWh4X9A-gCYMVGKR40-q5fM6-3JaSpePk-XCY/edit?tab=t.0#heading=h.j7j8nwhzao5n) doc - though the contents in this proposal are now more complete than the doc) to better understand how Clang's constraints might effect projects and how they've addressed them. In the mean time, Carbon changes made more stable approaches viable that were eventually implemented in #6569. This proposal then aims to formalize the analysis that lead to #6569 for posterity in case these design decisions need to be revisited in the future. --------- Co-authored-by: Carbon Infra Bot <carbon-external-infra@google.com> Co-authored-by: Chandler Carruth <chandlerc@gmail.com>