diff options
| author | 2026-04-13 19:25:11 +0200 | |
|---|---|---|
| committer | 2026-04-13 19:30:01 +0200 | |
| commit | ddbd42e66cc71b470730037d76f4f267e98d8d40 (patch) | |
| tree | aae9ff541b3e0690e23e391bb2e5e8927d34bf38 /src/t_x86-64_sysv.c | |
| parent | 36143af2748b6fcae02ca320baaac417d77ebe58 (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.c | 4 |
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 */ |