Lauro Ramos Venancio
2007-Feb-09 21:57 UTC
[LLVMdev] problem with function arguments in ARM EABI
> > Yes, you need to override both LowerArguments and LowerCallTo. All of > the current targets / abi's use the default implementation in > SelectionDAGISel.cpp But I guess ARM EABI will be the first. :-) As > far as I can see, this is the only clean way to do it. I expect the > ARM EABI specific implementation will be quite a bit simpler than the > default implementation though. >If I override these functions, I would copy a lot of code and change only few lines. I found another solution: adding two items to arguments Flags. Flags[27:24] = number of pieces that an argument was expanded. Flags[31:28] = sequential piece ID. What do you think? May I add these items? Lauro
I am ok with adding an attribute but don't like to add two of them as you've described. I don't think you need the "sequential piece ID" to deal with this issue, no? You just need a little extra bookkeeping in the target lowering code. Alternatively, you can use a "original alignment" attribute (i.e. alignment of unexpanded argument). That would be a 5-bit attribute. Chris, got a better idea? Evan On Feb 9, 2007, at 1:57 PM, Lauro Ramos Venancio wrote:>> >> Yes, you need to override both LowerArguments and LowerCallTo. All of >> the current targets / abi's use the default implementation in >> SelectionDAGISel.cpp But I guess ARM EABI will be the first. :-) As >> far as I can see, this is the only clean way to do it. I expect the >> ARM EABI specific implementation will be quite a bit simpler than the >> default implementation though. >> > > If I override these functions, I would copy a lot of code and change > only few lines. I found another solution: adding two items to > arguments Flags. Flags[27:24] = number of pieces that an argument was > expanded. Flags[31:28] = sequential piece ID. > > What do you think? May I add these items? > > Lauro > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
On Feb 9, 2007, at 2:50 PM, Evan Cheng wrote:> I am ok with adding an attribute but don't like to add two of them as > you've described. I don't think you need the "sequential piece ID" to > deal with this issue, no? You just need a little extra bookkeeping in > the target lowering code. > > Alternatively, you can use a "original alignment" attribute (i.e. > alignment of unexpanded argument). That would be a 5-bit attribute.I think this will work quite well. Add the alignment info to the first expanded node and the target lowering code should be able to handle the rest. Seems nice and clean. Evan> > Chris, got a better idea? > > Evan > > On Feb 9, 2007, at 1:57 PM, Lauro Ramos Venancio wrote: > >>> >>> Yes, you need to override both LowerArguments and LowerCallTo. >>> All of >>> the current targets / abi's use the default implementation in >>> SelectionDAGISel.cpp But I guess ARM EABI will be the first. :-) As >>> far as I can see, this is the only clean way to do it. I expect the >>> ARM EABI specific implementation will be quite a bit simpler than >>> the >>> default implementation though. >>> >> >> If I override these functions, I would copy a lot of code and change >> only few lines. I found another solution: adding two items to >> arguments Flags. Flags[27:24] = number of pieces that an argument was >> expanded. Flags[31:28] = sequential piece ID. >> >> What do you think? May I add these items? >> >> Lauro >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Maybe Matching Threads
- [LLVMdev] problem with function arguments in ARM EABI
- [LLVMdev] problem with function arguments in ARM EABI
- [LLVMdev] problem with function arguments in ARM EABI
- [LLVMdev] [patch] arm: external weak in constant pool
- [LLVMdev] another problem with function arguments aligment