aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/t_x86-64_sysv.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-04-13 19:25:11 +0200
committerlemon <lsof@mailbox.org>2026-04-13 19:30:01 +0200
commitddbd42e66cc71b470730037d76f4f267e98d8d40 (patch)
treeaae9ff541b3e0690e23e391bb2e5e8927d34bf38 /src/t_x86-64_sysv.c
parent36143af2748b6fcae02ca320baaac417d77ebe58 (diff)
C99 complex types MVP
Missing: static eval of complex values, Silly inefficient implementation of equality comparisons between them The whole thing is pretty inefficient without proper aggregate mem2reg anyway
Diffstat (limited to 'src/t_x86-64_sysv.c')
-rw-r--r--src/t_x86-64_sysv.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/t_x86-64_sysv.c b/src/t_x86-64_sysv.c
index 8686571..9f1d59c 100644
--- a/src/t_x86-64_sysv.c
+++ b/src/t_x86-64_sysv.c
@@ -5,6 +5,10 @@ static int classify(uchar cls[2], const TypeData *td, uint off);
static void
clsscalar(uchar cls[2], uint off, Type ty)
{
+ if (iscomplex(ty)) {
+ classify(cls, &typedata[complex2struct(ty).dat], off);
+ return;
+ }
enum irclass k = type2cls[scalartypet(ty)];
uchar *fcls = &cls[off/8];
if (isflt(ty)) { /* SSE */