get  memcpy EXC_BAD_ACCESS only with LTO  on multi platform!
    Innot Sagg 
    donovinsbbkgbi at gmail.com
       
    Sat Jul 18 03:48:26 UTC 2020
    
    
  
On Saturday, 18 July 2020 at 03:33:30 UTC, Kagamin wrote:
> Maybe the compiler can understand that new_ptr=1 and remove the 
> copy.
Thanks for replay. "new_ptr=1" is typo, the code already remove 
that line.
If i remove bitfields from Buffer struct, the error will gone.
This code will trigger LTO error:
struct Buffer {
    ubyte*	m_data;
    union {
	   ulong   m_placeholder;
	   uint	m_location;
	   mixin(bitfields!(
	             uint,    "",	32 ,
	             uint,    "m_size",	31 ,
	             bool,    "is_new",	1 ,
	   )) ;
	}
}
replace it to this will be no error:
struct Buffer {
    ubyte*	m_data;
    uint		m_location;
    uint         m_size;
    bool         is_new;
}
I am still not able to reduce it into minimal test case, because 
any small change in the code will made the errno disappear.
    
    
More information about the digitalmars-d-ldc
mailing list