On Sunday, 25 June 2017 at 23:02:28 UTC, Adam D. Ruppe wrote:
That'd be kinda tricky because the arguments would still be
liable to be evaluated...
Well..
I guess someone might argue that's a mis-feature of my
preprocessor example: "foo(i++)" may not do what you want. (So
the C code would have to do "(void)param" for all params, to
ensure evaluation and avoid compiler warning? =))
So I think I got things to work with inline IR! ^_^
https://godbolt.org/g/HVGTbx
```
version(none) {
void foo(int a, int b, int c) { /*...*/ };
} else {
pragma(LDC_inline_ir) R __ir(string s, R, P...)(P);
alias foo = __ir!(`ret i32 0`, int, int, int, int);
}
void bar()
{
int a;
foo(a++,2,3);
}
```
-Johan