gdc for rv32&64

jfondren julian.fondren at gmail.com
Mon Aug 23 10:16:36 UTC 2021


On Wednesday, 18 August 2021 at 08:09:36 UTC, Iain Buclaw wrote:
> On Wednesday, 18 August 2021 at 07:08:09 UTC, Mahdi wrote:
>>
>> A helloworld program on the X86_64-pc-linux-gnu platform 
>> contains 40 lines of assembly code or on the ARM 
>> (aarch64-linux-gnu) platform only 34 lines of assembly code, 
>> but on the risc-v(riscv64-unknow-gnu-linux) platform contains 
>> 871 lines of code on the explore.dgnu.org site!
>>
>> I'm concerned that this will affect the performance of the 
>> risc-v platform.
>
> A Phobos helloworld is over 1000 lines of assembly on both 
> x86_64 and ARM64.  My guess is that Compiler Explorer isn't 
> smart enough to filter RISC-V assembly in the same way as ARM 
> or X86.

This can be confirmed locally with objdump, to reveal a bunch of 
code that's filtered out by default:

```
$ cat hello.d
void main() {
     import std.stdio : writeln;
     writeln("Hello, world!");
}
$ gdc hello.d
$ objdump -dwr --no-show-raw-insn a.out | grep -m1 isValidDchar | 
ddemangle
    3179a:	call   6b870 <pure nothrow @nogc @safe bool 
std.utf.isValidDchar(dchar)>
```

You can also confirm it the Compiler Explorer by opening the 
Filter menu, below the compiler selection and "Compiler 
options..." input, and unchecking the 'Directives' filter.


More information about the D.gnu mailing list