GCC builtins in LDC - compiler interoperability
Cecil Ward
cecil at cecilward.com
Wed Jul 15 23:31:39 UTC 2020
On Wednesday, 15 July 2020 at 08:20:48 UTC, kinke wrote:
> On Tuesday, 14 July 2020 at 23:37:13 UTC, Cecil Ward wrote:
>> I currently have a fair amount of code that will only run
>> under GDC because of reliance on GDC-specific library
>> routines. I’d like to ask whether I can find or implement
>> equivalents in LDC2 to the GDC routines
>> __builtin_expect()
>> and
>> __builtin_unreachable() ?
>
> As Ilya already posted in another thread of yours,
> __builtin_expect is ldc.intrinsics.llvm_expect. Many other gcc
> builtins are available in ldc.gccbuiltins_<arch>. I don't think
> we expose `unreachable` though.
Oh, shame. There’s no __builtin_unreachable in ldc? I wonder if I
could work around this with LDC then.
I’m using unreachable to declare the truth of a condition in
release build so that the compiler can generate better code. The
trick I use with GCC is to mark the body of some if-statement as
unreachable. Then the compiler can remove a load of later if-test
conditions or remove if/else statements’ basic blocks.
More information about the digitalmars-d-ldc
mailing list