[LLVMdev] LLVMBuilder vs LLVMFoldingBuilder
sabre at nondot.org
Thu Apr 3 19:29:04 PDT 2008
On Apr 2, 2008, at 9:54 AM, Dominic Hamon wrote:
> Hello llvm dev peeps
> I would like to use an LLVMBuilder pointer as a base pointer to
> reference either an LLVMBuilder or an LLVMFoldingBuilder. As the
> in the Folding builder have the same names as the base class, I
> about submitting a patch whereby the base class methods would become
> virtual. However, the base class methods return specific types while
> Folding builder, for good reason, return more general Value* types.
> Would it be reasonable for me to submit a patch whereby the
> methods also return the general Value* type and the LLVMFoldingBuilder
> methods become virtual overrides of the base class methods?
No, please don't do this. The idea of llvmbuilder is that it is a
"free" wrapper around the other existing API calls. Making the
methods virtual would make them much more expensive.
> Users (such as myself) could then decide at runtime which type of
> builder they wish to use.
Why do you want this?
> Another option that was discussed in #llvm is to nuke LLVMBuilder and
> rename LLVMFoldingBuilder to LLVMBuilder.
I'd strongly prefer this. The non-folding builder is not very useful
for anything, and anyone who wants unfolded instructions can call the
instruction ctors directly.
> If this was the case, I'd
> argue for a flag in the Builder that could retain the old non-folding
> functionality for debugging purposes.
More information about the llvm-dev