llvm-project
62c97aa5 - [Clang] Improve CodeGenerator API a bit (#175239)

Commit
42 days ago
[Clang] Improve CodeGenerator API a bit (#175239) Essentially, figuring out how to use `CodeGenerator` was very confusing to me and I figured the API could be improved a bit, so: - the `CodeGenerator` ctor is now protected since an instance of `CodeGenerator` that is not a `CodeGeneratorImpl` is a bit useless (and deriving from it and implementing it yourself honestly just defeats the point of using this to begin with); - `ReleaseModule()` releases ownership of the module, so it should return a `unique_ptr`; - `CreateLLVMCodeGen()` also returns a `unique_ptr` now; - added a `CreateLLVMCodeGen()` overload that takes a `CompilerInstance&` and uses some of its state instead of requiring the user to pass everything in manually; this is consistent w/ other parts of our API, and most uses of this function in the codebase can be refactored to use that overload instead (and a code search I did also showed that a lot of people that use this API also just use the state from a `CompilerInstance`). I should have liked to replace `CreateLLVMCodeGen` w/ `CodeGenerator::Create`, but there are a lot of uses of `CreateLLVMCodeGen()` in the wild, so the only thing we could do is keep `CreateLLVMCodeGen()` and deprecate it, and at that point I don’t think it’s really worth it; I added a comment to the `CodeGenerator()` constructor declaration that points to it though. Fixes #172169.
Author
Parents
Loading