Displaying 3 results from an estimated 3 matches for "getindirectbyv".
Did you mean:
getindirectbyval
2013 Jul 04
0
[LLVMdev] making a copy of a byval aggregate on the callee's frame
Hi,
> I believe the LowerCall is doing what it needs to do - passing pointer either on the stack or in register as per ABI.
>From very quick test-cases with no understanding of XCore, that looks plausible.
> LowerFormalArguments () calls CCInfo.AnalyzeFormalArguments(Ins, CC_XCore), which calls the CC_XCore().
> This is where I placed the CCIfByVal<CCPassByVal<0,4>>
2013 Jul 04
2
[LLVMdev] making a copy of a byval aggregate on the callee's frame
...pt the original data viz pass-by-reference!)
This should ideally be done early on in the IR in my thinking - to allow optimisation if the data is only ever read.
FYI, the clang hack is - notice the "CreateMemCpy":
CodeGenFunction::EmitFunctionProlog(){
...
if (ArgI.getIndirectByVal()) {
llvm::AllocaInst *ByValue = CreateMemTemp(Ty, V->getName() + "agg.tmp");
llvm::ConstantInt * size = llvm::ConstantInt::get(IntPtrTy,
getContext().getTypeSizeInChars(Ty).getQuantity());
Builder.CreateMemCpy(ByValue, V, size, 4...
2013 Jul 04
2
[LLVMdev] making a copy of a byval aggregate on the callee's frame
Hi Tim,
Thank you for the input.
I think I follow you.
I believe the LowerCall is doing what it needs to do - passing pointer either on the stack or in register as per ABI.
The LowerFormalArguments() is where I am stuck.
LowerFormalArguments () calls CCInfo.AnalyzeFormalArguments(Ins, CC_XCore), which calls the CC_XCore().
This is where I placed the CCIfByVal<CCPassByVal<0,4>> which