зеркало из https://github.com/microsoft/clang-1.git
Add a FIXME and reduce nesting.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100432 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
09d9fa1933
Коммит
56229f5889
|
@ -107,24 +107,22 @@ LValue CGObjCRuntime::EmitValueForIvarAtOffset(CodeGen::CodeGenFunction &CGF,
|
|||
Qualifiers Quals = CGF.MakeQualifiers(IvarTy);
|
||||
Quals.addCVRQualifiers(CVRQualifiers);
|
||||
|
||||
if (Ivar->isBitField()) {
|
||||
// We need to compute the bit offset for the bit-field, the offset
|
||||
// is to the byte. Note, there is a subtle invariant here: we can
|
||||
// only call this routine on non-sythesized ivars but we may be
|
||||
// called for synthesized ivars. However, a synthesized ivar can
|
||||
// never be a bit-field so this is safe.
|
||||
uint64_t BitOffset = LookupFieldBitOffset(CGF.CGM, OID, 0, Ivar) % 8;
|
||||
if (!Ivar->isBitField())
|
||||
return LValue::MakeAddr(V, Quals);
|
||||
|
||||
uint64_t BitFieldSize =
|
||||
Ivar->getBitWidth()->EvaluateAsInt(CGF.getContext()).getZExtValue();
|
||||
return LValue::MakeBitfield(V, BitOffset, BitFieldSize,
|
||||
IvarTy->isSignedIntegerType(),
|
||||
Quals.getCVRQualifiers());
|
||||
}
|
||||
// We need to compute the bit offset for the bit-field, the offset is to the
|
||||
// byte. Note, there is a subtle invariant here: we can only call this routine
|
||||
// on non-synthesized ivars but we may be called for synthesized ivars.
|
||||
// However, a synthesized ivar can never be a bit-field, so this is safe.
|
||||
uint64_t BitOffset = LookupFieldBitOffset(CGF.CGM, OID, 0, Ivar) % 8;
|
||||
uint64_t BitFieldSize =
|
||||
Ivar->getBitWidth()->EvaluateAsInt(CGF.getContext()).getZExtValue();
|
||||
|
||||
|
||||
LValue LV = LValue::MakeAddr(V, Quals);
|
||||
return LV;
|
||||
// FIXME: We need to set a very conservative alignment on this, or make sure
|
||||
// that the runtime is doing the right thing.
|
||||
return LValue::MakeBitfield(V, BitOffset, BitFieldSize,
|
||||
IvarTy->isSignedIntegerType(),
|
||||
Quals.getCVRQualifiers());
|
||||
}
|
||||
|
||||
///
|
||||
|
|
Загрузка…
Ссылка в новой задаче