[llvm-commits] [llvm] r73646 - /llvm/trunk/include/llvm/Support/IRBuilder.h

Chris Lattner clattner at apple.com
Thu Jun 18 11:40:46 PDT 2009


On Jun 18, 2009, at 1:10 AM, Anton Korobeynikov wrote:

> Hi Chris
>
>> Anton, why isn't the caller and callee already getting the right
>> calling conv?  This seems like the wrong fix,
> We have separate calling conv fields on, for example, Function and
> CallInst. That's why API user should put correct calling conv on
> CallInst during creation of such (see, for example,
> SimplifyCFGPass.cpp:ChangeToCall). By default CI's are created with C
> calling conv and in general we'll have calling conv mismatch between
> caller and callee if API user won't tune the calling conv of CI.
>
> SimplifyLibCalls pass uses IRBuilder to insert calls to strlen &
> friends. They can be already defined in the module with non-C calling
> convention, thus we need to put the same calling conv on CI also. I
> thought it's much safer to let IRBuilder to do this by default instead
> of letting each user to do this explicitly. Also, since custom CCs are
> not so frequent stuff, possible bugs due to CC mismatch might be
> pretty tricky to catch of we'll delegate tweaking of CC to API user.

I discussed this with Anton on IRC and convinced (I think!) him to  
revert the changes to IRBuilder.  I'd like to keep it really obvious  
how the IRbuilder interfaces relate to the generated IR.  One of my  
fears is that making this be "magic" will make enough stuff work in  
the obvious cases that we'll be left with obscure bugs in the uncommon  
cases.  By making the client have to directly think about CC's, we  
avoid some bugs.

-Chris



More information about the llvm-commits mailing list