diff options
Diffstat (limited to 'src/llvm.cff')
| -rw-r--r-- | src/llvm.cff | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/llvm.cff b/src/llvm.cff index bb07c77..83f3f10 100644 --- a/src/llvm.cff +++ b/src/llvm.cff @@ -557,12 +557,12 @@ fn genexpr(f *Fn, ex *Expr) Value { } else if lhs.ty->is(:Ptr) { let $t = mktmp(type); gen("\t%v = getelementptr %t, %t %v, %t %v\n", - &$t, lhs.ty.u.Ptr == ty_void ? ty_i8 : lhs.ty.u.Ptr, lhs.ty, &lhs, rhs.ty, &rhs); + &$t, lhs.ty.u.Ptr->is(:Void) ? ty_i8 : lhs.ty.u.Ptr, lhs.ty, &lhs, rhs.ty, &rhs); res = $t; } else if rhs.ty->is(:Ptr) { let $t = mktmp(type); gen("\t%v = getelementptr %t, %t %v, %t %v\n", - &$t, rhs.ty.u.Ptr == ty_void ? ty_i8 : rhs.ty.u.Ptr, rhs.ty, &rhs, rhs.ty, &lhs); + &$t, rhs.ty.u.Ptr->is(:Void) ? ty_i8 : rhs.ty.u.Ptr, rhs.ty, &rhs, rhs.ty, &lhs); res = $t; } else { assert(#f, "bad ad"); @@ -641,7 +641,7 @@ fn genexpr(f *Fn, ex *Expr) Value { case '+='; let ref = genref(f, b.lhs); - let rhs = convert(f, b.lhs.ty, b.rhs); + let rhs = b.lhs.ty->is(:Ptr) ? genexpr(f, b.rhs) : convert(f, b.lhs.ty, b.rhs); let lhs0 = genload(f, ref); let tmp = genadd(ex.ty, lhs0, rhs); genstore(f, ref, tmp); |