aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/comp/middle/trans.rs3
-rw-r--r--src/test/run-pass/simple-generic-tag.rs7
2 files changed, 9 insertions, 1 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 0b513744..2ad33968 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -4920,7 +4920,8 @@ fn trans_tag_variant(@crate_ctxt cx, ast.def_id tag_id,
auto arg_ty = arg_tys.(i).ty;
auto llargval;
- if (ty.type_is_structural(arg_ty)) {
+ if (ty.type_is_structural(arg_ty) ||
+ ty.type_has_dynamic_size(arg_ty)) {
llargval = llargptr;
} else {
llargval = bcx.build.Load(llargptr);
diff --git a/src/test/run-pass/simple-generic-tag.rs b/src/test/run-pass/simple-generic-tag.rs
new file mode 100644
index 00000000..ba6a3242
--- /dev/null
+++ b/src/test/run-pass/simple-generic-tag.rs
@@ -0,0 +1,7 @@
+tag clam[T] {
+ a(T);
+}
+
+fn main() {
+}
+