Hi Mark, this list has been dead for a while now. You are probably looking for https://users.rust-lang.org/ or https://internals.rust-lang.org/
- µ Am 22/01/2018 um 21:42 schrieb Mark S. Baranowski: > Hello, > > I am working on a verifier for Rust, based on the generated LLVM code. I > am having an issue with code generated similar to the following > > struct Point { > pub x: u32, > pub y: u32 > } > fn double_point(p: Point) -> Point { > Point { x: 2*p.x, y: 2*p.y } > } > fn main() { > let p = Point { x: 2, y: 3 }; > let q = double_point(p); > assert!(q.x == 4 && q.y == 6); > } > > The call to the double_point function is what causes the issue, as shown > in the following generated llvm-ir code > > %8 = bitcast %Point* %arg to i64* > %9 = load i64, i64* %8, align 4 > %10 = call i64 @_ZN5point12double_point17h4b5ca79567fdc22dE(i64 %9) > store i64 %10, i64* %abi_cast > > In the verifier's default mode, reads from the i64 don't work correctly, > giving an assertion violation. This code works if the Point structure > uses 64-bit ints instead, since no packing occurs. > > My question is: is there is a way to prevent the compiler from > bit-casting the structure to an integer? I am using a December 2016 > nightly compiler, and have tried disabling all optimizations. > > Thanks, > > Mark > > _______________________________________________ > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev