[PATCH] D60765: [ELF] Place SectionPiece::{Live,Hash} bit fields together

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 17 01:09:48 PDT 2019


MaskRay added a comment.

In D60765#1469825 <https://reviews.llvm.org/D60765#1469825>, @ruiu wrote:

> The point of my last comment was that, with the new layout, accesses to OutputOffHi don't race with accesses to `Live` or `Hash`, as they are now in different non-integer-bitmap struct members.


I don't understand the split of `uint64_t OutputOff` -> `uint8_t OutputOffHi`+`uint32_t OutputOffLo` (40 bits).

  uint32_t InputOff;
  
  uint32_t Hash;
  uint8_t Live : 1;
  uint8_t TailShardId : 5;
  uint8_t OutputOffHi;  // this may be written concurrently with the read of `Live` -> race
  
  uint32_t OutputOffLo;


Repository:
  rLLD LLVM Linker

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60765/new/

https://reviews.llvm.org/D60765





More information about the llvm-commits mailing list