@@ -19,6 +19,7 @@ import back::x86;
19
19
import back:: abi;
20
20
import back:: upcall;
21
21
22
+ import middle:: ty:: node_type_table;
22
23
import middle:: ty:: pat_ty;
23
24
24
25
import util:: common;
@@ -128,7 +129,8 @@ state type crate_ctxt = rec(session::session sess,
128
129
hashmap[ ty:: t, str] type_short_names ,
129
130
ty:: ctxt tcx,
130
131
stats stats,
131
- @upcall:: upcalls upcalls) ;
132
+ @upcall:: upcalls upcalls,
133
+ node_type_table node_types) ;
132
134
133
135
type local_ctxt = rec ( vec[ str] path ,
134
136
vec[ str] module_path ,
@@ -3270,7 +3272,7 @@ fn target_type(&@crate_ctxt cx, &ty::t t) -> ty::t {
3270
3272
3271
3273
// Converts an annotation to a type
3272
3274
fn node_ann_type( & @crate_ctxt cx, & ast:: ann a) -> ty:: t {
3273
- ret target_type( cx, ty:: ann_to_monotype( cx. tcx, a) ) ;
3275
+ ret target_type( cx, ty:: ann_to_monotype( cx. tcx, cx . node_types , a) ) ;
3274
3276
}
3275
3277
3276
3278
fn node_ann_ty_params( & ast:: ann a) -> vec[ ty:: t] {
@@ -3299,22 +3301,25 @@ fn trans_unary(&@block_ctxt cx, ast::unop op,
3299
3301
& @ast:: expr e, & ast:: ann a) -> result {
3300
3302
3301
3303
auto sub = trans_expr( cx, e) ;
3302
- auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e) ;
3304
+ auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, cx . fcx . lcx . ccx . node_types , e) ;
3303
3305
3304
3306
alt ( op) {
3305
3307
case ( ast:: bitnot) {
3306
3308
sub = autoderef( sub. bcx, sub. val,
3307
- ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e) ) ;
3309
+ ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3310
+ cx. fcx. lcx. ccx. node_types, e) ) ;
3308
3311
ret res( sub. bcx, sub. bcx. build. Not ( sub. val) ) ;
3309
3312
}
3310
3313
case ( ast:: not) {
3311
3314
sub = autoderef( sub. bcx, sub. val,
3312
- ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e) ) ;
3315
+ ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3316
+ cx. fcx. lcx. ccx. node_types, e) ) ;
3313
3317
ret res( sub. bcx, sub. bcx. build. Not ( sub. val) ) ;
3314
3318
}
3315
3319
case ( ast:: neg) {
3316
3320
sub = autoderef( sub. bcx, sub. val,
3317
- ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e) ) ;
3321
+ ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3322
+ cx. fcx. lcx. ccx. node_types, e) ) ;
3318
3323
if ( ty:: struct ( cx. fcx. lcx. ccx. tcx, e_ty) == ty:: ty_float) {
3319
3324
ret res( sub. bcx, sub. bcx. build. FNeg ( sub. val) ) ;
3320
3325
}
@@ -3323,7 +3328,8 @@ fn trans_unary(&@block_ctxt cx, ast::unop op,
3323
3328
}
3324
3329
}
3325
3330
case ( ast:: box( _) ) {
3326
- auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e) ;
3331
+ auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3332
+ cx. fcx. lcx. ccx. node_types, e) ;
3327
3333
auto e_val = sub. val;
3328
3334
auto box_ty = node_ann_type( sub. bcx. fcx. lcx. ccx, a) ;
3329
3335
sub = trans_malloc_boxed( sub. bcx, e_ty) ;
@@ -3579,12 +3585,14 @@ fn trans_binary(&@block_ctxt cx, ast::binop op,
3579
3585
// Lazy-eval and
3580
3586
auto lhs_res = trans_expr( cx, a) ;
3581
3587
lhs_res = autoderef( lhs_res. bcx, lhs_res. val,
3582
- ty:: expr_ty( cx. fcx. lcx. ccx. tcx, a) ) ;
3588
+ ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3589
+ cx. fcx. lcx. ccx. node_types, a) ) ;
3583
3590
3584
3591
auto rhs_cx = new_scope_block_ctxt( cx, "rhs") ;
3585
3592
auto rhs_res = trans_expr( rhs_cx, b) ;
3586
3593
rhs_res = autoderef( rhs_res. bcx, rhs_res. val,
3587
- ty:: expr_ty( cx. fcx. lcx. ccx. tcx, b) ) ;
3594
+ ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3595
+ cx. fcx. lcx. ccx. node_types, b) ) ;
3588
3596
3589
3597
auto lhs_false_cx = new_scope_block_ctxt( cx, "lhs false") ;
3590
3598
auto lhs_false_res = res( lhs_false_cx, C_bool ( false) ) ;
@@ -3601,12 +3609,14 @@ fn trans_binary(&@block_ctxt cx, ast::binop op,
3601
3609
// Lazy-eval or
3602
3610
auto lhs_res = trans_expr( cx, a) ;
3603
3611
lhs_res = autoderef( lhs_res. bcx, lhs_res. val,
3604
- ty:: expr_ty( cx. fcx. lcx. ccx. tcx, a) ) ;
3612
+ ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3613
+ cx. fcx. lcx. ccx. node_types, a) ) ;
3605
3614
3606
3615
auto rhs_cx = new_scope_block_ctxt( cx, "rhs") ;
3607
3616
auto rhs_res = trans_expr( rhs_cx, b) ;
3608
3617
rhs_res = autoderef( rhs_res. bcx, rhs_res. val,
3609
- ty:: expr_ty( cx. fcx. lcx. ccx. tcx, b) ) ;
3618
+ ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3619
+ cx. fcx. lcx. ccx. node_types, b) ) ;
3610
3620
3611
3621
auto lhs_true_cx = new_scope_block_ctxt( cx, "lhs true") ;
3612
3622
auto lhs_true_res = res( lhs_true_cx, C_bool ( true) ) ;
@@ -3622,10 +3632,12 @@ fn trans_binary(&@block_ctxt cx, ast::binop op,
3622
3632
case ( _) {
3623
3633
// Remaining cases are eager:
3624
3634
auto lhs = trans_expr( cx, a) ;
3625
- auto lhty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, a) ;
3635
+ auto lhty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3636
+ cx. fcx. lcx. ccx. node_types, a) ;
3626
3637
lhs = autoderef( lhs. bcx, lhs. val, lhty) ;
3627
3638
auto rhs = trans_expr( lhs. bcx, b) ;
3628
- auto rhty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, b) ;
3639
+ auto rhty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3640
+ cx. fcx. lcx. ccx. node_types, b) ;
3629
3641
rhs = autoderef( rhs. bcx, rhs. val, rhty) ;
3630
3642
ret trans_eager_binop( rhs. bcx, op,
3631
3643
autoderefed_ty( cx. fcx. lcx. ccx, lhty) , lhs. val, rhs. val) ;
@@ -3702,7 +3714,8 @@ fn trans_if(&@block_ctxt cx, &@ast::expr cond,
3702
3714
// If we have an else expression, then the entire
3703
3715
// if expression can have a non-nil type.
3704
3716
// FIXME: This isn't quite right, particularly re: dynamic types
3705
- auto expr_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, elexpr) ;
3717
+ auto expr_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
3718
+ cx. fcx. lcx. ccx. node_types, elexpr) ;
3706
3719
if ( ty:: type_has_dynamic_size( cx. fcx. lcx. ccx. tcx, expr_ty) ) {
3707
3720
expr_llty = T_typaram_ptr ( cx. fcx. lcx. ccx. tn) ;
3708
3721
} else {
@@ -3759,7 +3772,8 @@ fn trans_for(&@block_ctxt cx,
3759
3772
}
3760
3773
3761
3774
auto next_cx = new_sub_block_ctxt( cx, "next") ;
3762
- auto seq_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, seq) ;
3775
+ auto seq_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, cx. fcx. lcx. ccx. node_types,
3776
+ seq) ;
3763
3777
auto seq_res = trans_expr( cx, seq) ;
3764
3778
auto it = iter_sequence( seq_res. bcx, seq_res. val, seq_ty,
3765
3779
bind inner( _, local, _, _, body, next_cx) ) ;
@@ -4091,7 +4105,7 @@ fn trans_pat_match(&@block_ctxt cx, &@ast::pat pat, ValueRef llval,
4091
4105
4092
4106
case ( ast:: pat_lit ( ?lt, ?ann) ) {
4093
4107
auto lllit = trans_lit ( cx. fcx . lcx . ccx , * lt, ann) ;
4094
- auto lltype = ty:: ann_to_type ( ann) ;
4108
+ auto lltype = ty:: ann_to_type ( cx . fcx . lcx . ccx . node_types , ann) ;
4095
4109
auto lleq = trans_compare ( cx, ast:: eq, lltype, llval, lllit) ;
4096
4110
4097
4111
auto matched_cx = new_sub_block_ctxt ( lleq. bcx , "matched_cx" ) ;
@@ -4141,7 +4155,9 @@ fn trans_pat_match(&@block_ctxt cx, &@ast::pat pat, ValueRef llval,
4141
4155
matched_cx = rslt. bcx;
4142
4156
4143
4157
auto llsubval = load_if_immediate( matched_cx,
4144
- llsubvalptr, pat_ty( cx. fcx. lcx. ccx. tcx, subpat) ) ;
4158
+ llsubvalptr, pat_ty( cx. fcx. lcx. ccx. tcx,
4159
+ cx. fcx. lcx. ccx. node_types,
4160
+ subpat) ) ;
4145
4161
auto subpat_res = trans_pat_match( matched_cx, subpat,
4146
4162
llsubval, next_cx) ;
4147
4163
matched_cx = subpat_res. bcx;
@@ -4237,7 +4253,7 @@ fn trans_alt(&@block_ctxt cx, &@ast::expr expr,
4237
4253
"non-exhaustive match failure" ) ;
4238
4254
4239
4255
// FIXME: This isn't quite right, particularly re: dynamic types
4240
- auto expr_ty = ty:: ann_to_type( ann) ;
4256
+ auto expr_ty = ty:: ann_to_type( cx . fcx . lcx . ccx . node_types , ann) ;
4241
4257
auto expr_llty;
4242
4258
if ( ty:: type_has_dynamic_size( cx. fcx. lcx. ccx. tcx, expr_ty) ) {
4243
4259
expr_llty = T_typaram_ptr ( cx. fcx. lcx. ccx. tn) ;
@@ -4499,7 +4515,9 @@ fn trans_index(&@block_ctxt cx, &ast::span sp, &@ast::expr base,
4499
4515
& @ast:: expr idx, & ast:: ann ann) -> lval_result {
4500
4516
4501
4517
auto lv = trans_expr( cx, base) ;
4502
- lv = autoderef( lv. bcx, lv. val, ty: : expr_ty( cx. fcx. lcx. ccx. tcx, base) ) ;
4518
+ lv = autoderef( lv. bcx, lv. val, ty: : expr_ty( cx. fcx. lcx. ccx. tcx,
4519
+ cx. fcx. lcx. ccx. node_types,
4520
+ base) ) ;
4503
4521
auto ix = trans_expr( lv. bcx, idx) ;
4504
4522
auto v = lv. val;
4505
4523
auto bcx = ix. bcx;
@@ -4565,7 +4583,8 @@ fn trans_lval(&@block_ctxt cx, &@ast::expr e) -> lval_result {
4565
4583
}
4566
4584
case ( ast:: expr_field ( ?base, ?ident, ?ann) ) {
4567
4585
auto r = trans_expr ( cx, base) ;
4568
- auto t = ty:: expr_ty ( cx. fcx . lcx . ccx . tcx , base) ;
4586
+ auto t = ty:: expr_ty ( cx. fcx . lcx . ccx . tcx ,
4587
+ cx. fcx . lcx . ccx . node_types , base) ;
4569
4588
ret trans_field ( r. bcx , e. span , r. val , t, ident, ann) ;
4570
4589
}
4571
4590
case ( ast:: expr_index ( ?base, ?idx, ?ann) ) {
@@ -4626,7 +4645,8 @@ fn trans_cast(&@block_ctxt cx, &@ast::expr e, &ast::ann ann) -> result {
4626
4645
if ( !ty:: type_is_fp ( cx. fcx . lcx . ccx . tcx , t) ) {
4627
4646
// TODO: native-to-native casts
4628
4647
if ( ty:: type_is_native ( cx. fcx . lcx . ccx . tcx ,
4629
- ty:: expr_ty ( cx. fcx . lcx . ccx . tcx , e) ) ) {
4648
+ ty:: expr_ty ( cx. fcx . lcx . ccx . tcx ,
4649
+ cx. fcx . lcx . ccx . node_types , e) ) ) {
4630
4650
e_res. val = e_res. bcx . build . PtrToInt ( e_res. val , lldsttype) ;
4631
4651
} else if ( ty:: type_is_native ( cx. fcx . lcx . ccx . tcx , t) ) {
4632
4652
e_res. val = e_res. bcx . build . IntToPtr ( e_res. val , lldsttype) ;
@@ -4716,7 +4736,7 @@ fn trans_bind_thunk(&@local_ctxt cx,
4716
4736
4717
4737
// Arg provided at binding time; thunk copies it from closure.
4718
4738
case ( some[ @ast:: expr] ( ?e) ) {
4719
- auto e_ty = ty:: expr_ty( cx. ccx. tcx, e) ;
4739
+ auto e_ty = ty:: expr_ty( cx. ccx. tcx, cx . ccx . node_types , e) ;
4720
4740
auto bound_arg =
4721
4741
GEP_tup_like ( bcx, closure_ty, llclosure,
4722
4742
vec( 0 ,
@@ -4812,7 +4832,8 @@ fn trans_bind(&@block_ctxt cx, &@ast::expr f,
4812
4832
let vec[ ValueRef ] lltydescs;
4813
4833
alt ( f_res. generic) {
4814
4834
case ( none[ generic_info] ) {
4815
- outgoing_fty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, f) ;
4835
+ outgoing_fty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
4836
+ cx. fcx. lcx. ccx. node_types, f) ;
4816
4837
lltydescs = vec( ) ;
4817
4838
}
4818
4839
case ( some[ generic_info] ( ?ginfo) ) {
@@ -4841,7 +4862,8 @@ fn trans_bind(&@block_ctxt cx, &@ast::expr f,
4841
4862
4842
4863
_vec:: push[ ValueRef ] ( bound_vals, arg. val) ;
4843
4864
_vec:: push[ ty:: t] ( bound_tys,
4844
- ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e) ) ;
4865
+ ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
4866
+ cx. fcx. lcx. ccx. node_types, e) ) ;
4845
4867
4846
4868
i += 1 u;
4847
4869
}
@@ -4988,7 +5010,7 @@ fn trans_arg_expr(&@block_ctxt cx,
4988
5010
4989
5011
auto val;
4990
5012
auto bcx = cx;
4991
- auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e) ;
5013
+ auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, cx . fcx . lcx . ccx . node_types , e) ;
4992
5014
4993
5015
if ( ty:: type_is_structural( cx. fcx. lcx. ccx. tcx, e_ty) ) {
4994
5016
auto re = trans_expr( bcx, e) ;
@@ -5188,13 +5210,13 @@ fn trans_call(&@block_ctxt cx, &@ast::expr f,
5188
5210
}
5189
5211
5190
5212
case ( _) {
5191
- fn_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, f ) ;
5192
-
5213
+ fn_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, cx . fcx . lcx . ccx . node_types ,
5214
+ f ) ;
5193
5215
}
5194
5216
5195
5217
}
5196
5218
5197
- auto ret_ty = ty:: ann_to_type( ann) ;
5219
+ auto ret_ty = ty:: ann_to_type( cx . fcx . lcx . ccx . node_types , ann) ;
5198
5220
auto args_res = trans_args( f_res. res. bcx,
5199
5221
llenv, f_res. llobj,
5200
5222
f_res. generic,
@@ -5249,7 +5271,8 @@ fn trans_tup(&@block_ctxt cx, &vec[ast::elt] elts,
5249
5271
let int i = 0 ;
5250
5272
5251
5273
for ( ast : : elt e in elts) {
5252
- auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e. expr) ;
5274
+ auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, cx. fcx. lcx. ccx. node_types,
5275
+ e. expr) ;
5253
5276
auto src_res = trans_expr( bcx, e. expr) ;
5254
5277
bcx = src_res. bcx;
5255
5278
auto dst_res = GEP_tup_like ( bcx, t, tup_val, vec( 0 , i) ) ;
@@ -5565,7 +5588,7 @@ fn trans_expr(&@block_ctxt cx, &@ast::expr e) -> result {
5565
5588
// lval cases fall through to trans_lval and then
5566
5589
// possibly load the result (if it's non-structural).
5567
5590
5568
- auto t = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e) ;
5591
+ auto t = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, cx . fcx . lcx . ccx . node_types , e) ;
5569
5592
auto sub = trans_lval( cx, e) ;
5570
5593
ret res( sub. res. bcx, load_if_immediate( sub. res. bcx, sub. res. val, t) ) ;
5571
5594
}
@@ -5626,7 +5649,7 @@ fn trans_log(int lvl, &@block_ctxt cx, &@ast::expr e) -> result {
5626
5649
cx. build. CondBr ( test, log_cx. llbb, after_cx. llbb) ;
5627
5650
5628
5651
auto sub = trans_expr( log_cx, e) ;
5629
- auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e) ;
5652
+ auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, cx . fcx . lcx . ccx . node_types , e) ;
5630
5653
5631
5654
auto log_bcx = sub. bcx;
5632
5655
if ( ty:: type_is_fp( cx. fcx. lcx. ccx. tcx, e_ty) ) {
@@ -5744,7 +5767,8 @@ fn trans_put(&@block_ctxt cx, &option::t[@ast::expr] e) -> result {
5744
5767
alt ( e) {
5745
5768
case ( none[ @ast:: expr] ) { }
5746
5769
case ( some[ @ast:: expr] ( ?x) ) {
5747
- auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, x) ;
5770
+ auto e_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
5771
+ cx. fcx. lcx. ccx. node_types, x) ;
5748
5772
auto arg = rec( mode=ty:: mo_alias, ty=e_ty) ;
5749
5773
auto arg_tys = type_of_explicit_args( cx. fcx. lcx. ccx, vec( arg) ) ;
5750
5774
auto r = trans_arg_expr( bcx, arg, arg_tys. ( 0 ) , x) ;
@@ -5804,7 +5828,8 @@ fn trans_ret(&@block_ctxt cx, &option::t[@ast::expr] e) -> result {
5804
5828
5805
5829
alt ( e) {
5806
5830
case ( some[ @ast:: expr] ( ?x) ) {
5807
- auto t = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, x) ;
5831
+ auto t = ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
5832
+ cx. fcx. lcx. ccx. node_types, x) ;
5808
5833
auto r = trans_expr( cx, x) ;
5809
5834
bcx = r. bcx;
5810
5835
val = r. val;
@@ -6192,7 +6217,8 @@ fn trans_block(&@block_ctxt cx, &ast::block b) -> result {
6192
6217
if ( is_terminated( bcx) ) {
6193
6218
ret r;
6194
6219
} else {
6195
- auto r_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx, e) ;
6220
+ auto r_ty = ty:: expr_ty( cx. fcx. lcx. ccx. tcx,
6221
+ cx. fcx. lcx. ccx. node_types, e) ;
6196
6222
if ( !ty:: type_is_nil( cx. fcx. lcx. ccx. tcx, r_ty) ) {
6197
6223
// The value resulting from the block gets copied into an
6198
6224
// alloca created in an outer scope and its refcount
@@ -6416,7 +6442,7 @@ fn is_terminated(&@block_ctxt cx) -> bool {
6416
6442
}
6417
6443
6418
6444
fn arg_tys_of_fn( & @crate_ctxt ccx, ast:: ann ann) -> vec[ ty:: arg] {
6419
- alt ( ty:: struct( ccx. tcx, ty:: ann_to_type( ann) ) ) {
6445
+ alt ( ty:: struct( ccx. tcx, ty:: ann_to_type( ccx . node_types , ann) ) ) {
6420
6446
case ( ty:: ty_fn( _, ?arg_tys, _) ) {
6421
6447
ret arg_tys;
6422
6448
}
@@ -6435,7 +6461,7 @@ fn ret_ty_of_fn_ty(&@crate_ctxt ccx, ty::t t) -> ty::t {
6435
6461
6436
6462
6437
6463
fn ret_ty_of_fn( & @crate_ctxt ccx, ast:: ann ann) -> ty:: t {
6438
- ret ret_ty_of_fn_ty( ccx, ty:: ann_to_type( ann) ) ;
6464
+ ret ret_ty_of_fn_ty( ccx, ty:: ann_to_type( ccx . node_types , ann) ) ;
6439
6465
}
6440
6466
6441
6467
fn populate_fn_ctxt_from_llself( @fn_ctxt fcx, self_vt llself) {
@@ -7920,7 +7946,8 @@ fn create_crate_map(&@crate_ctxt ccx) -> ValueRef {
7920
7946
}
7921
7947
7922
7948
fn trans_crate ( & session:: session sess, & @ast:: crate crate, & ty:: ctxt tcx,
7923
- & ty:: type_cache type_cache, & str output )
7949
+ & ty:: node_type_table node_types, & ty:: type_cache type_cache,
7950
+ & str output )
7924
7951
-> ModuleRef {
7925
7952
auto llmod =
7926
7953
llvm:: LLVMModuleCreateWithNameInContext ( _str:: buf ( "rust_out" ) ,
@@ -7978,7 +8005,8 @@ fn trans_crate(&session::session sess, &@ast::crate crate, &ty::ctxt tcx,
7978
8005
mutable n_glues_created = 0 u,
7979
8006
mutable n_null_glues = 0 u,
7980
8007
mutable n_real_glues = 0 u) ,
7981
- upcalls = upcall:: declare_upcalls ( tn, llmod) ) ;
8008
+ upcalls = upcall:: declare_upcalls ( tn, llmod) ,
8009
+ node_types = node_types) ;
7982
8010
auto cx = new_local_ctxt ( ccx) ;
7983
8011
7984
8012
create_typedefs ( ccx) ;
0 commit comments