-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
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
Deoptimize TLS access #17800
Deoptimize TLS access #17800
Conversation
* Apparently `ifunc` is not supported by gcc 5 on ARM * Try even harder to workaround LLVM bug when dealing with returntwice function
2ca2f60
to
f90eab3
Compare
// It's also harder to emit the offset in a generic way on AArch64 | ||
// (need to generate one or two `add` with shift) so let llvm emit | ||
// the add for now. | ||
auto T_size = (sizeof(size_t) == 8 ? Type::getInt64Ty(ctx) : |
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.
are there aarch64 variants without 8 byte pointers?
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.
This line is moved here from the above and I'm keeping it as close as possible to what it used to be with the hope that the LLVM bug can be fixed and we can revert all these workarounds.
Can we merge this? julia seems very unstable right now. |
I got the clobber list wrong the first time so I'd like someone else familiar with x86 asm to double check. Should be good to go otherwise (especially since we've branched). |
// The add instruction clobbers flags | ||
auto tp = InlineAsm::get(FunctionType::get(T_pint8, false), | ||
asm_str.c_str(), | ||
"=r,~{dirflag},~{fpsr},~{flags}", false); |
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.
why does this clobber the fpu status register? also, afaict, dirflags
is deprecated and a no-op
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.
Mainly because this is what clang generates and I couldn't find a single documentation of what each one mean and can't really figure out the logic in the x86 target code that uses these flags..
lgtm |
Apparently
ifunc
is not supported by gcc 5 on ARMWorkaround Build still fails on Raspberry Pi 3 #17264 (comment)
Try even harder to workaround LLVM bug when dealing with returntwice function
Workaround New segfault when tests fail with --inline=no #17793