@@ -1386,21 +1386,15 @@ CodeGenFunction::emitCountedByMemberSize(const Expr *E, llvm::Value *EmittedE,
13861386 Value *Mul = Builder.CreateMul(Index, FieldBaseSize, "field_offset",
13871387 !IsSigned, IsSigned);
13881388 FieldOffset = Builder.CreateAdd(FieldOffset, Mul);
1389+ }
1390+ // Option (3) '&ptr->field', and Option (4) continuation.
13891391
1390- // size_t offset_diff = flexible_array_member_offset - field_offset;
1391- Value *OffsetDiff = Builder.CreateSub(SizeofStruct, FieldOffset,
1392- "offset_diff", !IsSigned, IsSigned);
1393-
1394- // return offset_diff + flexible_array_member_size;
1395- Res = Builder.CreateAdd(FlexibleArrayMemberSize, OffsetDiff, "result");
1396- } else { // Option (3) '&ptr->field'
1397- // size_t offset_diff = flexible_array_member_offset - field_offset;
1398- Value *OffsetDiff = Builder.CreateSub(SizeofStruct, FieldOffset,
1399- "offset_diff", !IsSigned, IsSigned);
1392+ // size_t offset_diff = flexible_array_member_offset - field_offset;
1393+ Value *OffsetDiff = Builder.CreateSub(SizeofStruct, FieldOffset,
1394+ "offset_diff", !IsSigned, IsSigned);
14001395
1401- // return flexible_array_member_size + offset_diff;
1402- Res = Builder.CreateAdd(FlexibleArrayMemberSize, OffsetDiff, "result");
1403- }
1396+ // return offset_diff + flexible_array_member_size;
1397+ Res = Builder.CreateAdd(FlexibleArrayMemberSize, OffsetDiff, "result");
14041398 }
14051399
14061400 Value *Cmp = Builder.CreateIsNotNeg(Res);
0 commit comments