aboutsummaryrefslogtreecommitdiff
path: root/src/llvm.cff
diff options
context:
space:
mode:
Diffstat (limited to 'src/llvm.cff')
-rw-r--r--src/llvm.cff5
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;
}