Skip to content

Commit 2f4b931

Browse files
committed
---
yaml --- r: 1443 b: refs/heads/master c: 2cd7fbb h: refs/heads/master i: 1441: 0505c77 1439: 379173f v: v3
1 parent b6542e4 commit 2f4b931

File tree

2 files changed

+41
-39
lines changed

2 files changed

+41
-39
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 6c24d0403b2e8fefecc5eea11933d493a01f1daf
2+
refs/heads/master: 2cd7fbbdf1edf84d962c62e9990acc0906998413

trunk/src/comp/middle/trans.rs

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -419,10 +419,7 @@ fn T_opaque_obj_ptr(type_names tn) -> TypeRef {
419419

420420

421421
fn type_of(@crate_ctxt cx, @ty.t t) -> TypeRef {
422-
let TypeRef llty = type_of_inner(cx, t);
423-
check (llty as int != 0);
424-
llvm.LLVMAddTypeName(cx.llmod, _str.buf(ty.ty_to_str(t)), llty);
425-
ret llty;
422+
ret type_of_inner(cx, t);
426423
}
427424

428425
fn type_of_explicit_args(@crate_ctxt cx,
@@ -433,7 +430,7 @@ fn type_of_explicit_args(@crate_ctxt cx,
433430
check (arg.mode == ast.alias);
434431
atys += T_typaram_ptr(cx.tn);
435432
} else {
436-
let TypeRef t = type_of(cx, arg.ty);
433+
let TypeRef t = type_of_inner(cx, arg.ty);
437434
alt (arg.mode) {
438435
case (ast.alias) {
439436
t = T_ptr(t);
@@ -464,7 +461,7 @@ fn type_of_fn_full(@crate_ctxt cx,
464461
if (ty.type_has_dynamic_size(output)) {
465462
atys += T_typaram_ptr(cx.tn);
466463
} else {
467-
atys += T_ptr(type_of(cx, output));
464+
atys += T_ptr(type_of_inner(cx, output));
468465
}
469466

470467
// Arg 1: Task pointer.
@@ -520,60 +517,62 @@ fn type_of_native_fn(@crate_ctxt cx, ast.native_abi abi,
520517
vec[ty.arg] inputs,
521518
@ty.t output) -> TypeRef {
522519
let vec[TypeRef] atys = type_of_explicit_args(cx, inputs);
523-
ret T_fn(atys, type_of(cx, output));
520+
ret T_fn(atys, type_of_inner(cx, output));
524521
}
525522

526523
fn type_of_inner(@crate_ctxt cx, @ty.t t) -> TypeRef {
524+
let TypeRef llty = 0 as TypeRef;
525+
527526
alt (t.struct) {
528-
case (ty.ty_native) { ret T_ptr(T_i8()); }
529-
case (ty.ty_nil) { ret T_nil(); }
530-
case (ty.ty_bool) { ret T_bool(); }
531-
case (ty.ty_int) { ret T_int(); }
532-
case (ty.ty_uint) { ret T_int(); }
527+
case (ty.ty_native) { llty = T_ptr(T_i8()); }
528+
case (ty.ty_nil) { llty = T_nil(); }
529+
case (ty.ty_bool) { llty = T_bool(); }
530+
case (ty.ty_int) { llty = T_int(); }
531+
case (ty.ty_uint) { llty = T_int(); }
533532
case (ty.ty_machine(?tm)) {
534533
alt (tm) {
535-
case (common.ty_i8) { ret T_i8(); }
536-
case (common.ty_u8) { ret T_i8(); }
537-
case (common.ty_i16) { ret T_i16(); }
538-
case (common.ty_u16) { ret T_i16(); }
539-
case (common.ty_i32) { ret T_i32(); }
540-
case (common.ty_u32) { ret T_i32(); }
541-
case (common.ty_i64) { ret T_i64(); }
542-
case (common.ty_u64) { ret T_i64(); }
543-
case (common.ty_f32) { ret T_f32(); }
544-
case (common.ty_f64) { ret T_f64(); }
534+
case (common.ty_i8) { llty = T_i8(); }
535+
case (common.ty_u8) { llty = T_i8(); }
536+
case (common.ty_i16) { llty = T_i16(); }
537+
case (common.ty_u16) { llty = T_i16(); }
538+
case (common.ty_i32) { llty = T_i32(); }
539+
case (common.ty_u32) { llty = T_i32(); }
540+
case (common.ty_i64) { llty = T_i64(); }
541+
case (common.ty_u64) { llty = T_i64(); }
542+
case (common.ty_f32) { llty = T_f32(); }
543+
case (common.ty_f64) { llty = T_f64(); }
545544
}
546545
}
547-
case (ty.ty_char) { ret T_char(); }
548-
case (ty.ty_str) { ret T_ptr(T_str()); }
546+
case (ty.ty_char) { llty = T_char(); }
547+
case (ty.ty_str) { llty = T_ptr(T_str()); }
549548
case (ty.ty_tag(?tag_id, _)) {
550-
ret llvm.LLVMResolveTypeHandle(cx.tags.get(tag_id).th.llth);
549+
llty = llvm.LLVMResolveTypeHandle(cx.tags.get(tag_id).th.llth);
551550
}
552551
case (ty.ty_box(?t)) {
553-
ret T_ptr(T_box(type_of(cx, t)));
552+
llty = T_ptr(T_box(type_of_inner(cx, t)));
554553
}
555554
case (ty.ty_vec(?t)) {
556-
ret T_ptr(T_vec(type_of(cx, t)));
555+
llty = T_ptr(T_vec(type_of_inner(cx, t)));
557556
}
558557
case (ty.ty_tup(?elts)) {
559558
let vec[TypeRef] tys = vec();
560559
for (@ty.t elt in elts) {
561-
tys += type_of(cx, elt);
560+
tys += type_of_inner(cx, elt);
562561
}
563-
ret T_struct(tys);
562+
llty = T_struct(tys);
564563
}
565564
case (ty.ty_rec(?fields)) {
566565
let vec[TypeRef] tys = vec();
567566
for (ty.field f in fields) {
568-
tys += type_of(cx, f.ty);
567+
tys += type_of_inner(cx, f.ty);
569568
}
570-
ret T_struct(tys);
569+
llty = T_struct(tys);
571570
}
572571
case (ty.ty_fn(?proto, ?args, ?out)) {
573-
ret T_fn_pair(cx.tn, type_of_fn(cx, proto, args, out));
572+
llty = T_fn_pair(cx.tn, type_of_fn(cx, proto, args, out));
574573
}
575574
case (ty.ty_native_fn(?abi, ?args, ?out)) {
576-
ret T_fn_pair(cx.tn, type_of_native_fn(cx, abi, args, out));
575+
llty = T_fn_pair(cx.tn, type_of_native_fn(cx, abi, args, out));
577576
}
578577
case (ty.ty_obj(?meths)) {
579578
auto th = mk_type_handle();
@@ -594,22 +593,25 @@ fn type_of_inner(@crate_ctxt cx, @ty.t t) -> TypeRef {
594593
auto abs_pair = llvm.LLVMResolveTypeHandle(th.llth);
595594
llvm.LLVMRefineType(abs_pair, pair);
596595
abs_pair = llvm.LLVMResolveTypeHandle(th.llth);
597-
ret abs_pair;
596+
llty = abs_pair;
598597
}
599598
case (ty.ty_var(_)) {
600599
log "ty_var in trans.type_of";
601600
fail;
602601
}
603602
case (ty.ty_param(_)) {
604-
ret T_typaram_ptr(cx.tn);
603+
llty = T_typaram_ptr(cx.tn);
605604
}
606-
case (ty.ty_type) { ret T_ptr(T_tydesc(cx.tn)); }
605+
case (ty.ty_type) { llty = T_ptr(T_tydesc(cx.tn)); }
607606
}
608-
fail;
607+
608+
check (llty as int != 0);
609+
llvm.LLVMAddTypeName(cx.llmod, _str.buf(ty.ty_to_str(t)), llty);
610+
ret llty;
609611
}
610612

611613
fn type_of_arg(@crate_ctxt cx, &ty.arg arg) -> TypeRef {
612-
auto ty = type_of(cx, arg.ty);
614+
auto ty = type_of_inner(cx, arg.ty);
613615
if (arg.mode == ast.alias) {
614616
ty = T_ptr(ty);
615617
}

0 commit comments

Comments
 (0)