1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
// RUN: %ldc -enable-dynamic-compile -run %s
import std.stdio;
import std.array;
import std.string;
import ldc.attributes;
import ldc.dynamic_compile;
int foo()
{
return 42;
}
@dynamicCompileEmit int bar()
{
return 43;
}
@dynamicCompileEmit @dynamicCompile int baz()
{
return 44;
}
void main(string[] args)
{
assert(43 == bar());
auto dump = appender!string();
CompilerSettings settings;
settings.dumpHandler = (DumpStage stage, in char[] str)
{
if (DumpStage.OriginalModule == stage)
{
write(str);
dump.put(str);
}
};
writeln("===========================================");
compileDynamicCode(settings);
writeln();
writeln("===========================================");
stdout.flush();
assert(44 == baz());
// Check function name in original IR
assert(count(dump.data, foo.mangleof) == 0);
assert(count(dump.data, bar.mangleof) > 0);
assert(count(dump.data, baz.mangleof) > 0);
}
|