Issue 1:
I was playing around with unsafe blocks with the code listed below and it failed with the following.

System Info:

rustc 1.0.0-nightly (d3732a12e 2015-02-06 23:30:17 +0000)
host: 3.18.5-1-ARCH
architecture: x86_64

Example:

extern crate libc;
pub struct TestBuffer<T> {
start: *mut T,
size: usize,
curr: isize,
}

impl<T: Send> TestBuffer<T> {
pub fn new(value: T, size: usize) -> TestBuffer<T> {
unsafe {
let start = libc::malloc(
(std::mem::size_of::<T>() * size)
as libc::size_t) as *mut T;
std::ptr::write(&mut *start, value);
TestBuffer{start: start, size: size, curr: 0}
}
}
}

impl<T> Iterator for TestBuffer<T> {
type Item = T;
fn next(&mut self) -> Option<T> {
if self.curr < (self.size as isize) {
self.curr += 1;
} else {
()
}
unsafe { Some(*self.start.offset(self.curr - 1)) }
}
}
```rust

Running with `RUST_BACKTRACE=1`:

Buff.rs:29:23: 29:56 error: internal compiler error: this path should not cause illegal move

Buff.rs:29 unsafe { Some(*self.start.offset(self.curr - 1)) }

^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html

note: run with RUST_BACKTRACE=1 for a backtrace

thread 'rustc' panicked at 'Box', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libsyntax/diagnostic.rs:129

stack backtrace:

1: 0x7f93ce6cd250 - sys::backtrace::write::h361f9c7ed16d6f6eUsy

2: 0x7f93ce6f0950 - failure::on_fail::h69f5f434699d11ccOWF

3: 0x7f93ce6507d0 - rt::unwind::begin_unwind_inner::hc4455d84b00b874blBF

4: 0x7f93cba20040 - rt::unwind::begin_unwind::h13236156776379767181

5: 0x7f93cba1ffd0 - diagnostic::SpanHandler::span_bug::h5ec31613fa5cf53fBUE

6: 0x7f93cc547270 - session::Session::span_bug::h5f8ab95419f97cb6xdq

7: 0x7f93cd8375e0 - borrowck::build_borrowck_dataflow_data::h3de5b29d7c85ab98gVe

8: 0x7f93cd833ed0 - borrowck::borrowck_fn::hac2da55ab2d59b33DSe

9: 0x7f93cd837440 - visit::walk_method_helper::h7515637727083481066

10: 0x7f93cd834ee0 - borrowck::borrowck_item::h918c0642f54f00c7BRe

11: 0x7f93cd8356f0 - borrowck::check_crate::h5c36e499d0e6ca76tMe

12: 0x7f93cecbfb20 - driver::phase_3_run_analysis_passes::h8f5a5e5500230bd1oGa

13: 0x7f93ceca5a40 - driver::compile_input::hcb43bced2a0b021bCba

14: 0x7f93ced77be0 - run_compiler::hb81cf958c2f963666ac

15: 0x7f93ced76270 - thunk::F.Invoke<A, R>::invoke::h6159218808669033746

16: 0x7f93ced751a0 - rt::unwind::try::try_fn::h8268217050585033268

17: 0x7f93ce75ca90 - rust_try_inner

18: 0x7f93ce75ca80 - rust_try

19: 0x7f93ced75450 - thunk::F.Invoke<A, R>::invoke::h8703575304585054118

20: 0x7f93ce6dce40 - sys:🧵:thread_start::h35f66aa7ce5d7277LCB

21: 0x7f93c870f250 - start_thread

22: 0x7f93ce2d8219 - clone

23: 0x0 -

I'm still definitely a noobie just playing around, so this could definitely be my fault. Thanks in advance for the help. Any input or advice would also be appreciated.

Issue 2:
Input:

struct T(u8);

fn t() -> *mut T {
unsafe { 0u8 as *mut T }
}

fn main() {
let a = unsafe { *t() };
}

Output:

$ rustc ../test.rs
../test.rs:9:19: 9:23 error: internal compiler error: this path should not cause illegal move
../test.rs:9 let a = unsafe { *t() };
^~~~
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'Box<Any>', /Users/John/Documents/dev/rust/src/libsyntax/diagnostic.rs:123

stack backtrace:
1: 0x10f825b75 - sys::backtrace::write::h757d4037fec4513elCt
2: 0x10f84800f - failure::on_fail::he99e1d2cd81a67a80Hz
3: 0x10f7b3c8a - rt::unwind::begin_unwind_inner::hede15ebc165353e0Qpz
4: 0x10d508707 - rt::unwind::begin_unwind::h5150449308391082809
5: 0x10d50869c - diagnostic::SpanHandler::span_bug::h1cc7aa850b4525b9nQF
6: 0x10c93bc1d - session::Session::span_bug::h9dff6f0c981e0b95mRq
7: 0x10c547999 - borrowck::build_borrowck_dataflow_data::hbfab9f3785e58ec8QRe
8: 0x10c5432fb - borrowck::borrowck_fn::h9d4d5a57ec1e26a2cPe
9: 0x10c5440f2 - borrowck::borrowck_item::hd3de64f0b51b624a9Ne
10: 0x10c54461f - borrowck::check_crate::hab49ad1d67fb67e9ZIe
11: 0x10c09e8aa - driver::phase_3_run_analysis_passes::h3bf5eb3f470c8788gwa
12: 0x10c082d90 - driver::compile_input::h63293298907e332cxba
13: 0x10c14e7ba - monitor::unboxed_closure.22558
14: 0x10c14cf15 - thunk::F.Invoke<A, R>::invoke::h15985566512806182469
15: 0x10c14bcf0 - rt::unwind::try::try_fn::h5957420952141477940
16: 0x10f8b1189 - rust_try_inner
17: 0x10f8b1176 - rust_try
18: 0x10c14c3ec - thunk::F.Invoke<A, R>::invoke::h12578415658120090831
19: 0x10f835814 - sys::thread::thread_start::he6c5dcba45c95bf2drw
20: 0x7fff933e22fc - _pthread_body
21: 0x7fff933e2279 - _pthread_body