aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGRecordLayoutBuilder.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-04-06 01:07:44 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-04-06 01:07:44 +0000
commitefbf487da83883c2da81181cac6f040928aa4289 (patch)
treee760849636178291773eb0a39b613633c88e363c /lib/CodeGen/CGRecordLayoutBuilder.cpp
parentc7a984af71394402cb4d149554ab5da11aebd729 (diff)
IRgen: Move BitFieldIsSigned bit into CGBitFieldInfo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100513 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGRecordLayoutBuilder.cpp')
-rw-r--r--lib/CodeGen/CGRecordLayoutBuilder.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/CodeGen/CGRecordLayoutBuilder.cpp b/lib/CodeGen/CGRecordLayoutBuilder.cpp
index e6aa320d81..4b9ec66e17 100644
--- a/lib/CodeGen/CGRecordLayoutBuilder.cpp
+++ b/lib/CodeGen/CGRecordLayoutBuilder.cpp
@@ -178,10 +178,11 @@ void CGRecordLayoutBuilder::LayoutBitField(const FieldDecl *D,
const llvm::Type *Ty = Types.ConvertTypeForMemRecursive(D->getType());
uint64_t TypeSizeInBits = getTypeSizeInBytes(Ty) * 8;
+ bool IsSigned = D->getType()->isSignedIntegerType();
LLVMBitFields.push_back(LLVMBitFieldInfo(
D, CGBitFieldInfo(FieldOffset / TypeSizeInBits,
FieldOffset % TypeSizeInBits,
- FieldSize)));
+ FieldSize, IsSigned)));
AppendBytes(NumBytesToAppend);
@@ -279,8 +280,10 @@ void CGRecordLayoutBuilder::LayoutUnion(const RecordDecl *D) {
continue;
// Add the bit field info.
+ bool IsSigned = Field->getType()->isSignedIntegerType();
LLVMBitFields.push_back(LLVMBitFieldInfo(
- *Field, CGBitFieldInfo(0, 0, FieldSize)));
+ *Field, CGBitFieldInfo(0, 0, FieldSize,
+ IsSigned)));
} else {
LLVMFields.push_back(LLVMFieldInfo(*Field, 0));
}