@@ -1738,19 +1738,6 @@ fn variant_types(@crate_ctxt cx, &ast.variant v) -> vec[@ty.t] {
1738
1738
ret tys;
1739
1739
}
1740
1740
1741
- fn type_of_variant( @crate_ctxt cx,
1742
- & ast. variant v,
1743
- vec[ ast. ty_param] ty_params,
1744
- vec[ @ty. t] ty_param_substs) -> TypeRef {
1745
- let vec[ TypeRef ] lltys = vec( ) ;
1746
- auto tys = variant_types( cx, v) ;
1747
- for ( @ty. t typ in tys) {
1748
- auto typ2 = ty. substitute_ty_params( ty_params, ty_param_substs, typ) ;
1749
- lltys += vec( type_of( cx, typ2) ) ;
1750
- }
1751
- ret T_struct ( lltys) ;
1752
- }
1753
-
1754
1741
// Returns the type parameters of a tag.
1755
1742
fn tag_ty_params( @crate_ctxt cx, ast. def_id id) -> vec[ ast. ty_param] {
1756
1743
check ( cx. items. contains_key( id) ) ;
@@ -1923,27 +1910,22 @@ fn iter_structural_ty_full(@block_ctxt cx,
1923
1910
1924
1911
if ( _vec. len[ ast. variant_arg] ( variant. args) > 0 u) {
1925
1912
// N-ary variant.
1926
- auto llvarty = type_of_variant( bcx. fcx. ccx, variants. ( i) ,
1927
- ty_params, tps) ;
1928
-
1929
1913
auto fn_ty = ty. ann_to_type( variants. ( i) . ann) ;
1930
1914
alt ( fn_ty. struct ) {
1931
1915
case ( ty. ty_fn( _, ?args, _) ) {
1932
- auto llvarp_a = variant_cx. build.
1933
- TruncOrBitCast ( llunion_a_ptr, T_ptr ( llvarty) ) ;
1934
-
1935
- auto llvarp_b = variant_cx. build.
1936
- TruncOrBitCast ( llunion_b_ptr, T_ptr ( llvarty) ) ;
1937
-
1938
- auto j = 0 u;
1916
+ auto j = 0 ;
1939
1917
for ( ty. arg a in args) {
1940
1918
auto v = vec( C_int ( 0 ) , C_int ( j as int) ) ;
1941
1919
1942
- auto llfldp_a =
1943
- variant_cx. build. GEP ( llvarp_a, v) ;
1920
+ auto rslt = GEP_tag ( variant_cx, llunion_a_ptr,
1921
+ tid, variants. ( i) . id, tps, j) ;
1922
+ auto llfldp_a = rslt. val;
1923
+ variant_cx = rslt. bcx;
1944
1924
1945
- auto llfldp_b =
1946
- variant_cx. build. GEP ( llvarp_b, v) ;
1925
+ rslt = GEP_tag ( variant_cx, llunion_b_ptr, tid,
1926
+ variants. ( i) . id, tps, j) ;
1927
+ auto llfldp_b = rslt. val;
1928
+ variant_cx = rslt. bcx;
1947
1929
1948
1930
auto ty_subst = ty. substitute_ty_params(
1949
1931
ty_params, tps, a. ty) ;
@@ -1961,7 +1943,7 @@ fn iter_structural_ty_full(@block_ctxt cx,
1961
1943
auto res = f( variant_cx,
1962
1944
llfld_a, llfld_b, ty_subst) ;
1963
1945
variant_cx = res. bcx;
1964
- j += 1 u ;
1946
+ j += 1 ;
1965
1947
}
1966
1948
}
1967
1949
case ( _) { fail; }
0 commit comments