diff options
Diffstat (limited to 'src/llvm.cff')
| -rw-r--r-- | src/llvm.cff | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/llvm.cff b/src/llvm.cff index c4528e8..a2a4445 100644 --- a/src/llvm.cff +++ b/src/llvm.cff @@ -179,7 +179,8 @@ fn gen(fmt *const u8, ...) void { } case StrConstRef id; gen("@.str.%d", id); - + case else + assert(#f, "value? %d", val.u.#tag); } case 't'; pritype(ap->arg(*Type)); @@ -252,6 +253,7 @@ fn genaddr(f *Fn, ex *Expr) Value { case Dot dot; let lhs = dot.lhs.ty->is(:Ptr) ? genexpr(f, dot.lhs) : genaddr(f, dot.lhs); + assert(dot.fld.ty.align > 0, "%s align %zu", dot.fld.name, dot.fld.ty.align); assert(dot.fld.off % dot.fld.ty.align == 0, "field align %s %zu %zu", dot.fld.name, dot.fld.off, dot.fld.ty.align); let idx int #?; @@ -781,6 +783,7 @@ fn genexpr(f *Fn, ex *Expr) Value { if ty->is(:Bool) { return ty_int; }; if ty->is(:Int) { return typeof2(ty, ty); } if ty->is(:Flo) and ty.size < 8 { return ty_f64; } + if ty->is(:Arr) { return mkptrtype(ty.u.Arr.child); } return ty; } |