Skip to content

Commit 1ad2825

Browse files
committed
Move before instruction creation.
1 parent bb2d6a5 commit 1ad2825

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1321,6 +1321,16 @@ CodeGenFunction::emitCountedByMemberSize(const Expr *E, llvm::Value *EmittedE,
13211321
// u64's leading to overflows..
13221322
int64_t CharWidth = static_cast<int64_t>(CGM.getContext().getCharWidth());
13231323

1324+
// size_t field_offset = offsetof (struct s, field);
1325+
Value *FieldOffset = nullptr;
1326+
if (FlexibleArrayMemberFD != FD) {
1327+
std::optional<int64_t> Offset = GetFieldOffset(Ctx, RD, FD);
1328+
if (!Offset)
1329+
return nullptr;
1330+
FieldOffset =
1331+
llvm::ConstantInt::get(ResType, *Offset / CharWidth, IsSigned);
1332+
}
1333+
13241334
// size_t count = (size_t) ptr->count;
13251335
Value *Count = EmitLoadOfCountedByField(ME, FlexibleArrayMemberFD, CountFD);
13261336
if (!Count)
@@ -1341,16 +1351,6 @@ CodeGenFunction::emitCountedByMemberSize(const Expr *E, llvm::Value *EmittedE,
13411351
auto *FlexibleArrayMemberBaseSize =
13421352
llvm::ConstantInt::get(ResType, BaseSize.getQuantity(), IsSigned);
13431353

1344-
// size_t field_offset = offsetof (struct s, field);
1345-
Value *FieldOffset = nullptr;
1346-
if (FlexibleArrayMemberFD != FD) {
1347-
std::optional<int64_t> Offset = GetFieldOffset(Ctx, RD, FD);
1348-
if (!Offset)
1349-
return nullptr;
1350-
FieldOffset =
1351-
llvm::ConstantInt::get(ResType, *Offset / CharWidth, IsSigned);
1352-
}
1353-
13541354
// size_t flexible_array_member_size =
13551355
// count * flexible_array_member_base_size;
13561356
Value *FlexibleArrayMemberSize =

0 commit comments

Comments
 (0)