From ac1faba4df0d2081844e7e17b721c23be71c9c36 Mon Sep 17 00:00:00 2001
From: Daniel Micay <danielmicay@gmail.com>
Date: Mon, 7 Oct 2013 21:58:33 -0400
Subject: [PATCH] make small ty_struct immediate

Closes #9651
---
 src/librustc/middle/trans/common.rs | 6 +-----
 src/libstd/unstable/sync.rs         | 4 +++-
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs
index ddfcd2630fa..5845b0616d8 100644
--- a/src/librustc/middle/trans/common.rs
+++ b/src/librustc/middle/trans/common.rs
@@ -70,11 +70,7 @@ pub fn type_is_immediate(ccx: &mut CrateContext, ty: ty::t) -> bool {
         return true;
     }
     match ty::get(ty).sty {
-        // FIXME: #9651: small `ty_struct` should also be immediate
-        ty::ty_struct(def_id, ref substs) => {
-            ty::struct_fields(tcx, def_id, substs).is_empty()
-        }
-        ty::ty_enum(*) | ty::ty_tup(*) => {
+        ty::ty_struct(*) | ty::ty_enum(*) | ty::ty_tup(*) => {
             let llty = sizing_type_of(ccx, ty);
             llsize_of_alloc(ccx, llty) <= llsize_of_alloc(ccx, ccx.int_type)
         }
diff --git a/src/libstd/unstable/sync.rs b/src/libstd/unstable/sync.rs
index 066c2173b5a..f3945d8f3c9 100644
--- a/src/libstd/unstable/sync.rs
+++ b/src/libstd/unstable/sync.rs
@@ -26,7 +26,7 @@ use vec;
 /// An atomically reference counted pointer.
 ///
 /// Enforces no shared-memory safety.
-#[unsafe_no_drop_flag]
+//#[unsafe_no_drop_flag] FIXME: #9758
 pub struct UnsafeArc<T> {
     data: *mut ArcData<T>,
 }
@@ -427,6 +427,8 @@ mod tests {
     use util;
     use sys::size_of;
 
+    //#[unsafe_no_drop_flag] FIXME: #9758
+    #[ignore]
     #[test]
     fn test_size() {
         assert_eq!(size_of::<UnsafeArc<[int, ..10]>>(), size_of::<*[int, ..10]>());