-
Notifications
You must be signed in to change notification settings - Fork 63
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
Crucible/LLVM: Return type checking is too lax #443
Comments
It's an unfortunate misnaming, but Fundamentally, what I think you're asking here is: "what is the right check for argument/return value compatibility?" I think it's clear that Is what we want "MemType equality except that we consider all pointer types the same?" I'm not sure... My only hesitation about developing a separate |
@robdockins Thanks for clarifying that (I think you told me once and I forgot 😅) This is an uncomfortable middle ground. I would think that we want |
Rob and I had a conversation in which he convinced me that " * "... possibly with a warning if the pointer types aren't on-the-nose the same, but probably no warning if one of them was the null pointer..." |
This is a spot fix. The check we have right now is too strict, it won't even let you specify that a function returns `crucible_null`. See #443, which we should leave open until we implement the proper check described there.
This is a spot fix. The check we have right now is too strict, it won't even let you specify that a function returns `crucible_null`. See #443, which we should leave open until we implement the proper check described there.
We changed it back to |
I'm having buyer's remorse for the strict return type checking for
CrucibleSetup
blocks. With the strict check introduced there, I get messages like(see this minimal example: test.tar.gz). However, with the old check (
checkRegisterCompatibility
), differences between types likei30
andi32
weren't detected (see #438).It seems to me like the best solution would be to stop using
typeOfSetupValue
, and instead develop a predicateBut perhaps there's a better way I'm not aware of? Am I missing something important about the semantics of e.g.
MemType
vsStorageType
?The text was updated successfully, but these errors were encountered: