From d08e43f70d7482543c9bb2ba548bcd31e7eba978 Mon Sep 17 00:00:00 2001 From: lemon Date: Fri, 26 Aug 2022 07:42:27 +0200 Subject: gensym fix, offset fix, str statics --- src/llvm.cff | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/llvm.cff') diff --git a/src/llvm.cff b/src/llvm.cff index a33ca56..c4528e8 100644 --- a/src/llvm.cff +++ b/src/llvm.cff @@ -1017,7 +1017,8 @@ fn genstmt(f *Fn, block *Block, st *Stmt) void { if c.capt { gen("\t%%%s.%d = alloca %t\n", c.capt, c.captid, c.captty); let valaddr = mktmp(mkptrtype(c.fld.ty)); - gen("\t%v = getelementptr i8, %t %v, i32 %d\n", valaddr, exaddr.ty, exaddr, as(int)c.fld.off); + gen("\t%v = getelementptr i8, %t %v, i32 %d\n", valaddr, exaddr.ty, exaddr, + as(int)c.fld.off); if c.captptr { gen("\tstore %t %v, %t %%%s.%d\n", valaddr.ty, valaddr, mkptrtype(c.captty), c.capt, c.captid); } else { @@ -1167,6 +1168,13 @@ fn gendata(ty *const Type, ex *Expr) void { case BoolLit b; return gen("%d", b); case NullLit; return gen("null"); case ZeroIni; return gen("zeroinitializer"); + case StrLit s; + if ty->is(:Arr) { + return gen("c%S", s); + } else { + strs->push(s); + return gen("@.str.%z", strs.len - 1); + } } assert(#f, "bad static"); } -- cgit v1.2.3