Skip to content
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

Issue 11435 - -O optimization flag causes invalid 32 bit codegen #3806

Closed
wants to merge 1 commit into from

Conversation

yebblies
Copy link
Member

Do not emit a push from memory instruction for 8 or 16-byte words, ever.

@WalterBright Is there some way to detect it's pushing from a stack slot? (and therefore is always safe)

https://issues.dlang.org/show_bug.cgi?id=11435

Do not emit a push from memory instruction for 8 or 16-byte words, ever.
@yebblies yebblies self-assigned this Jul 28, 2014
@Safety0ff
Copy link
Contributor

Is there some way to detect it's pushing from a stack slot? (and therefore is always safe)

Would checking e->oper == OPvar be sufficient? (I'm not very familiar with subtle back end details.)

I think the condition on szb should be something like: szb <= 1 + !I16.

Out of curiosity, why is the fix done in the case OPvar section?

@yebblies
Copy link
Member Author

OPvar includes globals/tls/etc. Maybe those are safe?

I put it there because that's where the gotos went. I don't know why it fails, the condition I added should have been conservative. I haven't gotten around to looking into it yet.

@schuetzm
Copy link
Contributor

@yebblies
Copy link
Member Author

Of course it causes problems, it fails the autotester.

@schuetzm
Copy link
Contributor

Yes, but he posted a reduced example. Maybe it helps in finding the cause.

@andralex
Copy link
Member

andralex commented Feb 7, 2015

@yebblies ping

@yebblies
Copy link
Member Author

yebblies commented Feb 7, 2015

Eh I can't be bothered with this right now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants