GCC builtins in LDC - compiler interoperability
    kinke 
    noone at nowhere.com
       
    Thu Jul 16 00:06:49 UTC 2020
    
    
  
On Wednesday, 15 July 2020 at 23:31:39 UTC, Cecil Ward wrote:
> Oh, shame. There’s no __builtin_unreachable in ldc? I wonder if 
> I could work around this with LDC then.
With D / LDC, there's almost always a workaround. In this case, 
using inline LLVM IR (as 'unreachable' is an IR instruction for 
LLVM):
-----
bool foo() nothrow;
void unreachable()
{
     import ldc.llvmasm;
     // due to a current LDC bug, a dummy parameter is required
     __ir!(`unreachable`, void, int)(0);
}
int bar()
{
     int r = 123;
     if (foo())
     {
         r = 456;
         unreachable();
     }
     return r;
}
-----
With -O, bar() is optimized to a `return 123`.
    
    
More information about the digitalmars-d-ldc
mailing list