[llvm-dev] Why do backend pass definitions call a seperate function just to call the constructor?
Tim Northover via llvm-dev
llvm-dev at lists.llvm.org
Tue Jan 16 13:32:18 PST 2018
On 16 January 2018 at 20:40, Ahmed Samara via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> Things like this in `lib/Target/ARM/ARMExpandPseudoInsts.cpp`
>
>> FunctionPass *llvm::createARMExpandPseudoPass() {
>> return new ARMExpandPseudo();
>> }
>
> And other functions have basically the same style.
>
> What's the point of doing it this way instead of just calling `new
> ARMExpandPseudo` in any place that you would have called this function?
Mostly it's so that everything that relies on knowing the class
definition and layout is restricted to a single file. The interface to
the rest of LLVM is just a single "createXYZ" standalone function.
That speeds up build times and is generally good for abstraction.
Cheers.
Tim.
More information about the llvm-dev
mailing list