Add a divided flag for the first piece of an argument divided into mulitple parts. Fixes PR1643

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49611 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nicolas Geoffray
2008-04-13 13:40:22 +00:00
parent fa0e66471f
commit c0cb28fd3a
3 changed files with 24 additions and 14 deletions

View File

@@ -1734,6 +1734,8 @@ namespace ISD {
static const uint64_t NestOffs = 5;
static const uint64_t ByValAlign = 0xFULL << 6; //< Struct alignment
static const uint64_t ByValAlignOffs = 6;
static const uint64_t Divided = 1ULL << 10;
static const uint64_t DividedOffs = 10;
static const uint64_t OrigAlign = 0x1FULL<<27;
static const uint64_t OrigAlignOffs = 27;
static const uint64_t ByValSize = 0xffffffffULL << 32; //< Struct size
@@ -1770,6 +1772,9 @@ namespace ISD {
Flags = (Flags & ~ByValAlign) |
(uint64_t(Log2_32(A) + 1) << ByValAlignOffs);
}
bool isDivided() const { return Flags & Divided; }
void setDivided() { Flags |= One << DividedOffs; }
unsigned getOrigAlign() const {
return (One << ((Flags & OrigAlign) >> OrigAlignOffs)) / 2;