[Issue 24317] New: pragma(inline, true) is wrongly applied when having nested functions
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Jan 3 21:18:29 UTC 2024
https://issues.dlang.org/show_bug.cgi?id=24317
Issue ID: 24317
Summary: pragma(inline, true) is wrongly applied when having
nested functions
Product: D
Version: D2
Hardware: x86
OS: Windows
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: msnmancini at hotmail.com
The following code:
```d
pragma(inline, true)
void test()
{
writeln(5);
writeln("oops");
}
pragma(inline, true)
void test2()
{
static int abc(int a){return a;}
writeln(abc(5));
writeln("oops");
}
void test3()
{
pragma(inline, true) static int abc(int a){return a;}
writeln(abc(5));
writeln("oops");
}
void main()
{
test();
test2();
test3();
}
```
Generates this tree when looking at the AST:
```d
pragma (inline, true)void test()
{
writeln(5);
writeln("oops");
}
pragma (inline, true)void test2()
{
static pure nothrow @nogc @safe int abc(int a)
{
return a;
}
writeln(((int a = 5;) , a));
writeln("oops");
}
void test3()
{
static pure nothrow @nogc @safe int abc(int a)
{
return a;
}
writeln(abc(5));
writeln("oops");
}
void main()
{
{
writeln(5);
writeln("oops");
}
test2();
test3();
}
```
When I define a function inside it but I'm using pragma(inline), it actually
inlines the function defined inside it. When I don't, it correctly inlines.
But when I put it inside the function defined, it completely disappears! -
https://issues.dlang.org/show_bug.cgi?id=23520 related
--
More information about the Digitalmars-d-bugs
mailing list