Eigenstate: myrddin-dev mailing list

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/9] Add isaggregate for later use with abi conformity.


---
 6/asm.h      | 1 +
 6/typeinfo.c | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/6/asm.h b/6/asm.h
index f4c0badb..04c088ed 100644
--- a/6/asm.h
+++ b/6/asm.h
@@ -316,6 +316,7 @@ size_t tyalign(Type *t);
 size_t size(Node *n);
 ssize_t tyoffset(Type *ty, Node *memb);
 ssize_t offset(Node *aggr, Node *memb);
+int isaggregate(Type *t);
 int stacknode(Node *n);
 int floatnode(Node *n);
 void breakhere();
diff --git a/6/typeinfo.c b/6/typeinfo.c
index f7ec797d..cc12f4a7 100644
--- a/6/typeinfo.c
+++ b/6/typeinfo.c
@@ -408,3 +408,10 @@ offset(Node *aggr, Node *memb)
 	return tyoffset(exprtype(aggr), memb);
 }
 
+int
+isaggregate(Type *t)
+{
+	t = tybase(t);
+	return (t->type == Tystruct || t->type == Tyarray || t->type == Tytuple ||
+		(t->type == Tyunion && !isenum(t)));
+}
-- 
2.27.0


References:
[PATCH 0/9] v2: Handle small-aggregates via AMD64 abi"S. Gilles" <sgilles@xxxxxxx>