Skip to content

Commit 4f7ecce

Browse files
committed
Support non-immediates in trans_uniq::copy_val
Issue #409
1 parent 2b15aef commit 4f7ecce

File tree

7 files changed

+10
-6
lines changed

7 files changed

+10
-6
lines changed

src/comp/middle/trans_uniq.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ fn copy_val(cx: @block_ctxt, dst: ValueRef, src: ValueRef,
9797
let {bcx, val: llptr} = alloc_uniq(cx, ty);
9898
Store(bcx, llptr, dst);
9999

100-
let src = Load(bcx, src);
100+
let src = load_if_immediate(bcx, src, content_ty);
101101
let dst = llptr;
102102
let bcx = trans::copy_val(bcx, INIT, dst, src, content_ty);
103103
ret bcx;
+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// xfail-test
21

3-
fn f<T>(x: ~T) -> ~T { ret x; }
2+
fn f<@T>(x: ~T) -> ~T { ret x; }
43

54
fn main() { let x = f(~3); log *x; }

src/test/run-pass/move-1-unique.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// xfail-test
21

32
fn test(x: bool, foo: ~{x: int, y: int, z: int}) -> int {
43
let bar = foo;

src/test/run-pass/move-3-unique.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// xfail-test
21
use std;
32
import std::uint;
43

src/test/run-pass/move-4-unique.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// xfail-test
21
use std;
32
import std::uint;
43

src/test/run-pass/unique-pat-2.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// xfail-test
2+
13
type foo = {a: int, b: uint};
24
tag bar { u(~foo); w(int); }
35

src/test/run-pass/unique-rec.rs

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
fn main() {
3+
let x = ~{x: 1};
4+
let bar = x;
5+
assert bar.x == 1;
6+
}

0 commit comments

Comments
 (0)