Index: src/tests/.expect/globals.txt
===================================================================
--- src/tests/.expect/globals.txt	(revision 783dfd6ba68cda284190e53d91bc0db5249eb3db)
+++ src/tests/.expect/globals.txt	(revision 783dfd6ba68cda284190e53d91bc0db5249eb3db)
@@ -0,0 +1,9 @@
+static	inline	autogen	value
+no 		no 		no 		22
+no 		no 		yes		22
+no 		yes		no 		22
+no 		yes		yes		22
+yes		no 		no 		22
+yes		no 		yes		22
+yes		yes		no 		22
+yes		yes		yes		22
Index: src/tests/globals.c
===================================================================
--- src/tests/globals.c	(revision 783dfd6ba68cda284190e53d91bc0db5249eb3db)
+++ src/tests/globals.c	(revision 783dfd6ba68cda284190e53d91bc0db5249eb3db)
@@ -0,0 +1,83 @@
+#include <fstream>
+
+struct value_t {
+	int value;
+};
+
+void ?{}( value_t * this ) { this->value = 22; }
+
+//Standard case
+struct g_t {
+	value_t val;
+};
+
+void ?{}( g_t * this ) { (&this->val){}; }
+
+g_t g;
+
+//Autogen case
+struct ga_t {
+	value_t val;
+};
+
+ga_t ga;
+
+//Inline case
+struct gi_t;
+void ?{}( gi_t * this );
+
+struct gi_t {
+	value_t val;
+} gi;
+
+void ?{}( gi_t * this ) { (&this->val){}; }
+
+//Inline autogen case
+struct gia_t {
+	value_t val;
+} gia;
+
+//Static case
+struct gs_t {
+	value_t val;
+};
+
+void ?{}( gs_t * this ) { (&this->val){}; }
+
+static gs_t gs;
+
+//Static autogen case
+struct gsa_t {
+	value_t val;
+};
+
+static gsa_t gsa;
+
+//Static inline case
+struct gsi_t;
+void ?{}( gsi_t * this );
+
+static struct gsi_t {
+	value_t val;
+} gsi;
+
+void ?{}( gsi_t * this ) { (&this->val){}; }
+
+//Static inline autogen case
+static struct gsia_t {
+	value_t val;
+} gsia;
+
+int main() {
+	sout | "static\tinline\tautogen\tvalue" | endl;
+
+	sout | "no \t\tno \t\tno \t\t" | g.val.value    | endl;
+	sout | "no \t\tno \t\tyes\t\t" | ga.val.value   | endl;
+	sout | "no \t\tyes\t\tno \t\t" | gi.val.value   | endl;
+	sout | "no \t\tyes\t\tyes\t\t" | gia.val.value  | endl;
+	sout | "yes\t\tno \t\tno \t\t" | gs.val.value   | endl;
+	sout | "yes\t\tno \t\tyes\t\t" | gsa.val.value  | endl;
+	sout | "yes\t\tyes\t\tno \t\t" | gsi.val.value  | endl;
+	sout | "yes\t\tyes\t\tyes\t\t" | gsia.val.value | endl;
+
+}
