mirror of
git://c9x.me/qbe.git
synced 2026-04-05 09:59:47 +00:00
amd64: Use member class for aggregate parameter temporary
Otherwise, we may end up using an integer and floating class for the
same register, triggering an assertion failure:
qbe: rega.c:215: pmrec: Assertion `KBASE(pm[i].cls) == KBASE(*k)' failed.
Test case:
type :T = { s }
export
function $d(:T %.1, s %.2) {
@start
call $c(s %.2)
ret
}
This commit is contained in:
parent
9639940cb4
commit
f059f8b1cf
@ -467,10 +467,10 @@ selpar(Fn *fn, Ins *i0, Ins *i1)
|
||||
}
|
||||
r = rarg(a->cls[0], &ni, &ns);
|
||||
if (i->op == Oparc) {
|
||||
emit(Ocopy, Kl, a->ref[0], r, R);
|
||||
emit(Ocopy, a->cls[0], a->ref[0], r, R);
|
||||
if (a->size > 8) {
|
||||
r = rarg(a->cls[1], &ni, &ns);
|
||||
emit(Ocopy, Kl, a->ref[1], r, R);
|
||||
emit(Ocopy, a->cls[1], a->ref[1], r, R);
|
||||
}
|
||||
} else
|
||||
emit(Ocopy, i->cls, i->to, r, R);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user