[clang] [clang][CGRecordLayout] Remove dependency on isZeroSize (PR #96422)

Michael Buch via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 11 02:59:13 PDT 2024


Michael137 wrote:

Some of the libc++ tests seem to be crashing on the x86_64 bot (can repro this on my x86_64 at home, not aarch64 though). Looks like they're segfaulting trying to access the member of an empty class. E.g., in
```
Process 1370440 stopped
* thread #1, name = 't.tmp.exe', stop reason = signal SIGSEGV: invalid address (fault address: 0x20)
    frame #0: 0x00005555555560c3 t.tmp.exe`std::__1::operator==[abi:se190000](__x=0x00007fffffffdd10, __y=0x00007fffffffdcd0) at error_code.h:97:25
   94   }
   95  
   96   inline _LIBCPP_HIDE_FROM_ABI bool operator==(const error_code& __x, const error_condition& __y) _NOEXCEPT {
-> 97     return __x.category().equivalent(__x.value(), __y) || __y.category().equivalent(__x, __y.value());
   98   }
   99  
   100  #if _LIBCPP_STD_VER <= 17
(lldb) dis -pc
t.tmp.exe`std::__1::operator==[abi:se190000](std::__1::error_code const&, std::__1::error_condition const&):
->  0x5555555560c3 <+51>: callq  *0x20(%rax)
    0x5555555560c6 <+54>: movb   %al, %cl
    0x5555555560c8 <+56>: movb   $0x1, %al
    0x5555555560ca <+58>: testb  $0x1, %cl
(lldb) 
```

https://github.com/llvm/llvm-project/pull/96422


More information about the cfe-commits mailing list