diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs index 8fbf8b1813c8..bbed6324543f 100644 --- a/src/librustc/middle/trans/common.rs +++ b/src/librustc/middle/trans/common.rs @@ -69,9 +69,13 @@ pub fn type_is_immediate(ccx: &mut CrateContext, ty: ty::t) -> bool { if simple { return true; } + // FIXME: #9651: C-like enums should also be immediate + if ty::type_is_c_like_enum(ccx.tcx, ty) { + return false; + } match ty::get(ty).sty { - // FIXME: #9651: small `ty_struct` and `ty_enum` should also be immediate - ty::ty_tup(*) => { + // FIXME: #9651: small `ty_struct` should also be immediate + 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) }