Taming the optimizer
Johan Engelen
j at j.nl
Thu Jun 14 16:56:21 UTC 2018
On Thursday, 14 June 2018 at 03:39:39 UTC, Mike Franklin wrote:
>
> Using the information at
> https://stackoverflow.com/questions/40122141/preventing-compiler-optimizations-while-benchmarking, I've created this:
Have you read this too?
https://llvm.org/docs/LangRef.html#inline-assembler-expressions
> This seems to work, but I don't know that I've implemented it
> properly; especially the `use` function. How would you write
> this to achieve a real-world optimized measurement? What's the
> equivalent of...
>
> static void escape(void *p) {
> asm volatile("" : : "g"(p) : "memory");
> }
Your use function may be correct, I'm not 100% sure. The escape
function you ask for is clobbering _all_ memory (not only the
memory accessible through `p`), so that then becomes:
void escape(void* p)
{
import ldc.llvmasm;
__asm("", "r,~{memory}", p); // added the memory
clobber here
}
-Johan
More information about the digitalmars-d-ldc
mailing list