diff options
| author | bors <bors@rust-lang.org> | 2013-07-05 04:28:56 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-07-05 04:28:56 -0700 |
| commit | 58eb70a5e2ce6602e5685f5cc18ab2fe0c327020 (patch) | |
| tree | fad7223a868933e5832c7deaa9607fcd2f27941b | |
| parent | 8c50ee3916e049eb100f68a236bf99542f244b52 (diff) | |
| parent | 2f27d4316663dfecd47396d3655458602df28d29 (diff) | |
| download | rust-58eb70a5e2ce6602e5685f5cc18ab2fe0c327020.tar.gz rust-58eb70a5e2ce6602e5685f5cc18ab2fe0c327020.zip | |
auto merge of #7554 : jld/rust/rm-ssoe, r=catamorphism
| -rw-r--r-- | src/librustc/middle/trans/machine.rs | 42 | ||||
| -rw-r--r-- | src/librustc/middle/trans/type_of.rs | 3 |
2 files changed, 1 insertions, 44 deletions
diff --git a/src/librustc/middle/trans/machine.rs b/src/librustc/middle/trans/machine.rs index f55523b2841..2cd313ff431 100644 --- a/src/librustc/middle/trans/machine.rs +++ b/src/librustc/middle/trans/machine.rs @@ -14,9 +14,6 @@ use lib::llvm::{ValueRef}; use lib::llvm::False; use lib::llvm::llvm; use middle::trans::common::*; -use middle::trans::type_of; -use middle::ty; -use util::ppaux::ty_to_str; use middle::trans::type_::Type; @@ -116,42 +113,3 @@ pub fn llalign_of(cx: &CrateContext, ty: Type) -> ValueRef { llvm::LLVMAlignOf(ty.to_ref()), cx.int_type.to_ref(), False); } } - -// Computes the size of the data part of an enum. -pub fn static_size_of_enum(cx: &mut CrateContext, t: ty::t) -> uint { - if cx.enum_sizes.contains_key(&t) { - return cx.enum_sizes.get_copy(&t); - } - - debug!("static_size_of_enum %s", ty_to_str(cx.tcx, t)); - - match ty::get(t).sty { - ty::ty_enum(tid, ref substs) => { - // Compute max(variant sizes). - let mut max_size = 0; - let variants = ty::enum_variants(cx.tcx, tid); - for variants.iter().advance |variant| { - if variant.args.len() == 0 { - loop; - } - - let lltypes = variant.args.map(|&variant_arg| { - let substituted = ty::subst(cx.tcx, substs, variant_arg); - type_of::sizing_type_of(cx, substituted) - }); - - debug!("static_size_of_enum: variant %s type %s", - cx.tcx.sess.str_of(variant.name), - cx.tn.type_to_str(Type::struct_(lltypes, false))); - - let this_size = llsize_of_real(cx, Type::struct_(lltypes, false)); - if max_size < this_size { - max_size = this_size; - } - } - cx.enum_sizes.insert(t, max_size); - return max_size; - } - _ => cx.sess.bug("static_size_of_enum called on non-enum") - } -} diff --git a/src/librustc/middle/trans/type_of.rs b/src/librustc/middle/trans/type_of.rs index 562a8fd69b6..e6d0d87ba73 100644 --- a/src/librustc/middle/trans/type_of.rs +++ b/src/librustc/middle/trans/type_of.rs @@ -104,8 +104,7 @@ pub fn type_of_non_gc_box(cx: &mut CrateContext, t: ty::t) -> Type { // // (2) It won't make any recursive calls to determine the structure of the // type behind pointers. This can help prevent infinite loops for -// recursive types. For example, `static_size_of_enum()` relies on this -// behavior. +// recursive types. For example, enum types rely on this behavior. pub fn sizing_type_of(cx: &mut CrateContext, t: ty::t) -> Type { match cx.llsizingtypes.find_copy(&t) { |
