mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-24 23:19:03 +00:00
ARM: treat [N x i32] and [N x i64] as AAPCS composite types
The logic is almost there already, with our special homogeneous aggregate handling. Tweaking it like this allows front-ends to emit AAPCS compliant code without ever having to count registers or add discarded padding arguments. Only arrays of i32 and i64 are needed to model AAPCS rules, but I decided to apply the logic to all integer arrays for more consistency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230348 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -122,8 +122,8 @@ public:
|
||||
// There is no need to differentiate between a pending CCValAssign and other
|
||||
// kinds, as they are stored in a different list.
|
||||
static CCValAssign getPending(unsigned ValNo, MVT ValVT, MVT LocVT,
|
||||
LocInfo HTP) {
|
||||
return getReg(ValNo, ValVT, 0, LocVT, HTP);
|
||||
LocInfo HTP, unsigned ExtraInfo = 0) {
|
||||
return getReg(ValNo, ValVT, ExtraInfo, LocVT, HTP);
|
||||
}
|
||||
|
||||
void convertToReg(unsigned RegNo) {
|
||||
@@ -146,6 +146,7 @@ public:
|
||||
|
||||
unsigned getLocReg() const { assert(isRegLoc()); return Loc; }
|
||||
unsigned getLocMemOffset() const { assert(isMemLoc()); return Loc; }
|
||||
unsigned getExtraInfo() const { return Loc; }
|
||||
MVT getLocVT() const { return LocVT; }
|
||||
|
||||
LocInfo getLocInfo() const { return HTP; }
|
||||
|
||||
Reference in New Issue
Block a user