[PATCH] D47953: [builtin] Add bitfield support for __builtin_dump_struct
    Paul Semel via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Fri Jun 22 07:23:21 PDT 2018
    
    
  
paulsemel added a comment.
First thanks all for reviewing !
Basically, what's happening is that it works good with non-packed structures.
Here is an example for packed structure (with unsigned signed short):
  c
  struct lol {
  	unsigned short a:3;
  	unsigned short b:2;
  	unsigned short c:6;
  	unsigned short d:2;
  	unsigned short e:6;
  } __attribute__((packed));
  
  int main(void)
  {
  	struct lol lolo = {
  		.a = 2,
  		.b = 1,
  		.c = 13,
  		.d = 2,
  		.e = 9
  	};
  	__builtin_dump_struct(&lolo, &printf);
  	return 0;
  }
Here is the output I get :
  sh
  unsigned short a : 2
  unsigned short b : 1
  unsigned short c : 13
  unsigned short d : 2
  unsigned short e : 1
The last `unsigned short` is incorrect.
If I switch this to signed integers, I get :
  sh
  unsigned short a : 0
  unsigned short b : 0
  unsigned short c : 0
  unsigned short d : 0
  unsigned short e : 0
All the fields are zeroed. I absolutely do not understand what is happening...
Thanks for trying to help guys !
Repository:
  rC Clang
https://reviews.llvm.org/D47953
    
    
More information about the cfe-commits
mailing list