-
Notifications
You must be signed in to change notification settings - Fork 7
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
Intrinsics handling. Again. #1551
Comments
I don't see the evidence that what we're doing is sound or unsound: you need to look at the trace to see if the call has been inlined/not-inlined and/or |
Note that we would be talking about LLVM inlining the intrinsic at the MIR level. The intrinsic call will always be present in the high level IR. |
I agree with @ltratt. There could be cases where LLVM has inlined the call in some blocks but not in others. So we do find the symbol with |
From an offline discussion: At the moment we reject calls we don't find the symbol for. For now this is sound if LLVM never emits calls to functions with the same name as the intrinsic. E.g. |
Using today's master at 47aad5c with this lua program:
The log shows:
Here we obviously can't find a symbol by that name. If we are going to do a call, it should be to
memcpy
.However, @ptersilie rightly points out that if the intrinsic was inlined, doing the call would be incorrect.
So what we have currently is actually good because it's sound, but could we handle the intrinsic properly and not abort tracing somehow?
Related: #817
The text was updated successfully, but these errors were encountered: