[PATCH] D79467: [PDB] Optimize public symbol processing

Mikael Holmén via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 13 03:11:41 PDT 2020


uabelho added inline comments.


================
Comment at: llvm/lib/DebugInfo/PDB/Native/GSIStreamBuilder.cpp:93
+namespace {
+LLVM_PACKED(struct PublicSym32Layout {
+  RecordPrefix Prefix;
----------------
uabelho wrote:
> abhinavgaba wrote:
> > This is causing the following warnings:
> > ```
> > ignoring packed attribute because of unpacked non-POD field ‘llvm::codeview::RecordPrefix {anonymous}::PublicSym32Layout::Prefix’
> >    RecordPrefix Prefix;
> >                 ^
> > ...
> > ignoring packed attribute because of unpacked non-POD field ‘llvm::codeview::PublicSym32Header {anonymous}::PublicSym32Layout::Pub’ 
> >    PublicSym32Header Pub;
> >                      ^
> > 
> > 
> > ```
> We see this too, we're using gcc 7.4.0 when compiling clang.
> 
> We did some small experiments and the struct does get different sizes when compiled with clang vs gcc which might be a problem?
> 
> With LLVM_PACKED_START/LLVM_PACKED_END around PublicSym32Layout instead of LLVM_PACKED the struct seems to get packed both with clang and gcc so perhaps that's a solution?
> 
Btw seems like someone already noticed that clang and gcc sometimes behaves differently regarding the packed attribute:
https://bugs.llvm.org/show_bug.cgi?id=28571#c3


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D79467





More information about the llvm-commits mailing list