asquared31415
asquared31415
This is interesting, because *tuples or structs* seem to have some exceptions for two usize-sized elements specifically. `(u64, u64)` and `(u64, *mut ())` return by value, while `(u32, u32, u32,...
Ah, `NonZeroUsize` or `NonZeroU64` don't reproduce it, but `NonZeroU{32, 16, 8}` do return via an out ptr.
I suppose it's probably too late to actually make it require `unsafe {}`?
If we assume that we keep adding more larger `usize`, `usize as N` could possibly truncate for any integer type `N`. It's not clear how useful `cast_possible_truncation` firing on every...
Can you give a concrete example of code that you'd like to work with that? As far as I am aware, my proposed API is able to perform the same...
Should we guide users to using unique section names if they need to be able to have each asm block separate?
Note that adding `#[no_mangle]` to `check1` to force it to appear in the binary does cause it to appear as a constant. I think this might be a case of...
> `assert_eq!(2 * pointer_size, std::mem::size_of::());` This is an additional new guarantee. Right now everywhere that says that a fat pointer is 2x`usize` explicitly says that it's non-normative.
Oh interesting, the Reference is not consistent on whether this is a guarantee. The section on DSTs says > Pointer types to DSTs are sized but have twice the size...
This can definitely cause weird and hard to debug behavior. I ran into a case in practice where a parent node can be dropped but a child node might still...