-
-
Notifications
You must be signed in to change notification settings - Fork 609
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
[REG2.071] Issue 15984 - Interface contracts retrieve garbage instead… #8988
Conversation
|
Thanks for your pull request and interest in making D better, @thewilsonator! 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 fetch digger
dub run digger -- build "master + dmd#8988" |
1db95f9 to
7198b98
Compare
4245862 to
7a4a404
Compare
7a4a404 to
b59b6e7
Compare
|
"FYI: when porting the original fix to LDC, I chose to just pass the adjusted this pointer to the interface contracts. No magic required to change the actual pointer in ThisExp. I'm not sure what he means. Does he have a better fix? @rainers please clarify! |
I guess this referes to this commit: ldc-developers/ldc@628a560. This was 2 and a half year ago, so the following might not be accurate and also outdated: IIRC dmd passes the object pointer to the interface contract, passes the offset as a parameter and goes to great length to correct both in the contract function when calling interface functions or accessing parameters. LDC instead passes the adjusted interface pointer as |
|
Does the ldc commit fix bug 15984 for LDC? |
The test in this PR passes with LDC but for the checks regarding |
|
This PR does not seem to actually fix the issue in 15984. edit: Which as far as I can tell, comes about because C::foo() has no idea its parameter is actually used, and so blithely reuses its register. |
… of parameters
Rebase of #5765