@@ -374,12 +374,13 @@ fn T_tydesc(type_names tn) -> TypeRef {
374
374
T_ptr ( T_nil ( ) ) ,
375
375
tydescpp,
376
376
pvoid) , T_void ( ) ) ) ;
377
- auto cmp_glue_fn_ty = T_ptr ( T_fn ( vec ( T_ptr ( T_nil ( ) ) ,
377
+ auto cmp_glue_fn_ty = T_ptr ( T_fn ( vec ( T_ptr ( T_i8 ( ) ) ,
378
378
T_taskptr ( tn) ,
379
379
T_ptr ( T_nil ( ) ) ,
380
380
tydescpp,
381
381
pvoid,
382
- pvoid) , T_void ( ) ) ) ;
382
+ pvoid,
383
+ T_i8 ( ) ) , T_void ( ) ) ) ;
383
384
auto tydesc = T_struct ( vec ( tydescpp, // first_param
384
385
T_int ( ) , // size
385
386
T_int ( ) , // align
@@ -1658,7 +1659,7 @@ fn declare_tydesc(@local_ctxt cx, @ty.t t) {
1658
1659
1659
1660
tag make_generic_glue_helper_fn {
1660
1661
mgghf_single( val_and_ty_fn) ;
1661
- mgghf_pair ( val_pair_and_ty_fn ) ;
1662
+ mgghf_cmp ;
1662
1663
}
1663
1664
1664
1665
// declare_tydesc() above must have been called first.
@@ -1670,8 +1671,7 @@ fn define_tydesc(@local_ctxt cx, @ty.t t, vec[uint] ty_params) {
1670
1671
make_generic_glue( cx, t, info. take_glue, mgghf_single( tg) , ty_params) ;
1671
1672
auto dg = make_drop_glue;
1672
1673
make_generic_glue( cx, t, info. drop_glue, mgghf_single( dg) , ty_params) ;
1673
- auto cg = make_cmp_glue;
1674
- make_generic_glue( cx, t, info. cmp_glue, mgghf_pair( cg) , ty_params) ;
1674
+ make_generic_glue( cx, t, info. cmp_glue, mgghf_cmp, ty_params) ;
1675
1675
}
1676
1676
1677
1677
fn declare_generic_glue( @local_ctxt cx,
@@ -1731,10 +1731,13 @@ fn make_generic_glue(@local_ctxt cx,
1731
1731
case ( mgghf_single( ?single_fn) ) {
1732
1732
re = single_fn( bcx, llval0, t) ;
1733
1733
}
1734
- case ( mgghf_pair ( ?pair_fn ) ) {
1734
+ case ( mgghf_cmp ) {
1735
1735
auto llrawptr1 = llvm. LLVMGetParam ( llfn, 5 u) ;
1736
1736
auto llval1 = bcx. build. BitCast ( llrawptr0, llty) ;
1737
- re = pair_fn( bcx, llval0, llval1, t) ;
1737
+
1738
+ auto llcmpval = llvm. LLVMGetParam ( llfn, 6 u) ;
1739
+
1740
+ re = make_cmp_glue( bcx, llval0, llval1, t, llcmpval) ;
1738
1741
}
1739
1742
}
1740
1743
} else {
@@ -1982,8 +1985,8 @@ fn decr_refcnt_and_if_zero(@block_ctxt cx,
1982
1985
ret res( next_cx, phi) ;
1983
1986
}
1984
1987
1985
- fn make_cmp_glue( @block_ctxt cx, ValueRef v0, ValueRef v1, @ty. t t)
1986
- -> result {
1988
+ fn make_cmp_glue( @block_ctxt cx, ValueRef v0, ValueRef v1, @ty. t t,
1989
+ ValueRef llop ) -> result {
1987
1990
ret res( cx, C_nil ( ) ) ; // TODO
1988
1991
}
1989
1992
0 commit comments