New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix 23857 - backend inliner takes too long on recursive function call #15437
Conversation
Thanks for your pull request and interest in making D better, @dkorpel! We are looking forward to reviewing it, and you should be hearing from a maintainer soon.
Please see CONTRIBUTING.md for more information. If you have addressed all reviews or aren't sure how to proceed, don't hesitate to ping us with a simple comment. Bugzilla references
Testing this PR locallyIf you don't have a local development environment setup, you can use Digger to test this PR: dub run digger -- build "stable + dmd#15437" |
Huh, test23307 needs backend inlining or it fails the assert. #14733 says:
Looks like there's still a bug there. |
Target stable. Also is there not a inclining heuristic that can be adjusted? |
That seems weird. We shouldn't have a testcase that only works with the inliner. |
The issue reported it only happens with |
Conceptually, the inliner doesn't change the behavior of the program. Having it or not should behave exactly the same. Its a bug on the codegen. If we are asserting codegen execution, we shouldn't enforce it to pass only with |
Why do we even use this backend anyway :( |
The reason why is that DMD doesn't unittest properly so you have top level
integration tests for extremely sparse bits of the tree.
…On Fri, 21 Jul 2023, 18:14 Luís Ferreira, ***@***.***> wrote:
The issue reported it only happens with dmd -O -inline, so those were set
as REQUIRED_ARGS
Conceptually, the inliner doesn't change the behavior of the program.
Having it or not should behave exactly the same. Its a bug on the codegen.
If we are asserting codegen execution, we shouldn't enforce it to pass only
with -inline on or off, exclusively. We should permute the arguments, in
most of the cases.
—
Reply to this email directly, view it on GitHub
<#15437 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABLI75C5VYICQRSVVRFNGBLXRK2IBANCNFSM6AAAAAA2SUO2GE>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
24d4bda
to
3e6ea21
Compare
@@ -0,0 +1,24 @@ | |||
/* | |||
REQUIRED_ARGS: -O -inline |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
permute these flags, please
I'd rather the problem was identified and fixed rather than disabling things. |
#15447 doesn't disable the inliner |
Of course. I only disable faulty optimizations when they don't get fixed (I emailed you about this bug 3 months ago), because correctness is more important than generation of fast code, especially with dmd. Unlike ldc and gdc, dmd is known to generate code fast, but not fast code. |
Superseded by #15447 |
I obviously missed that. Oops. |
Blunt fix: disable backend inliner for now