xxxxxxxxxx
import std.stdio;
import ldc.attributes;
import ldc.dynamic_compile;
version(LDC_DynamicCompilation)
{
}
else
{
static assert(false, "LDC_DynamicCompilation is not defined");
}
int foo()
{
return 5;
}
int bar()
{
return foo() + 7;
}
void baz()
{
writeln("baz");
}
int bzz(int a, int b)
{
return a + b;
}
void main(string[] args)
{
void run(CompilerSettings settings)
{
compileDynamicCode(settings);
assert(5 == foo());
assert(12 == bar());
baz();
int function() fptr = &bar;
assert(12 == fptr());
assert(15 == bzz(7, 8));
}
foreach(i;0..4)
{
CompilerSettings settings;
settings.optLevel = i;
run(settings);
}
foreach(i;0..3)
{
CompilerSettings settings;
settings.sizeLevel = i;
run(settings);
}
}