summaryrefslogtreecommitdiffstats
path: root/clang/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
commit196ea449edd650a2d1c7b14c62f623ad2d8f30c5 (patch)
tree8fc825f18800bb323d1ee426db56d47fe83709d7 /clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
parentd45491077a5262405ec48b8fa2b977da32c6d7ed (diff)
downloadbcm5719-llvm-196ea449edd650a2d1c7b14c62f623ad2d8f30c5.tar.gz
bcm5719-llvm-196ea449edd650a2d1c7b14c62f623ad2d8f30c5.zip
IRgen: Move BitFieldIsSigned bit into CGBitFieldInfo.
llvm-svn: 100513
Diffstat (limited to 'clang/lib/CodeGen/CGRecordLayoutBuilder.cpp')
-rw-r--r--clang/lib/CodeGen/CGRecordLayoutBuilder.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp b/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
index e6aa320d81a..4b9ec66e178 100644
--- a/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
+++ b/clang/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));
}
OpenPOWER on IntegriCloud