diff options
| author | Jed Davis <jld@panix.com> | 2012-12-30 20:51:53 -0800 |
|---|---|---|
| committer | Jed Davis <jld@panix.com> | 2013-01-11 23:42:51 -0800 |
| commit | 349fa1e550905577fd9545aada328fb0806cf641 (patch) | |
| tree | fccb1183b6c5bca6d8eadcf79e52d8416a0700a2 | |
| parent | abae61257c4d866bb321bfb80ad16b7531736f7e (diff) | |
| download | rust-349fa1e550905577fd9545aada328fb0806cf641.tar.gz rust-349fa1e550905577fd9545aada328fb0806cf641.zip | |
Omit needless zeroes for C-like variants of non-C-like enums
| -rw-r--r-- | src/librustc/middle/trans/consts.rs | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/src/librustc/middle/trans/consts.rs b/src/librustc/middle/trans/consts.rs index 23b4bb32eea..74aaec0d7e7 100644 --- a/src/librustc/middle/trans/consts.rs +++ b/src/librustc/middle/trans/consts.rs @@ -414,21 +414,10 @@ fn const_expr(cx: @crate_ctxt, e: @ast::expr) -> ValueRef { // variant or we wouldn't have gotten here -- the constant // checker forbids paths that don't map to C-like enum // variants. - let ety = ty::expr_ty(cx.tcx, e); - let llty = type_of::type_of(cx, ety); let lldiscrim = base::get_discrim_val(cx, e.span, enum_did, variant_did); - - let fields = if ty::enum_is_univariant(cx.tcx, enum_did) { - ~[lldiscrim] - } else { - let llstructtys = - lib::llvm::struct_element_types(llty); - ~[lldiscrim, C_null(llstructtys[1])] - }; - - C_named_struct(llty, fields) + C_struct(~[lldiscrim]) } Some(ast::def_struct(_)) => { let ety = ty::expr_ty(cx.tcx, e); |
