Index: tests/.expect/attributes.x64.txt
===================================================================
--- tests/.expect/attributes.x64.txt	(revision a8e221514cf267718a28f507adff247a3cc892f4)
+++ tests/.expect/attributes.x64.txt	(revision cd28605bcdaf022d1b2b5730527c9488d92363fb)
@@ -97,9 +97,11 @@
     __attribute__ ((used,used,unused)) signed int _X2f8i_1;
     __attribute__ ((unused)) signed int *_X2f9Pi_1;
-    __attribute__ ((unused,used)) signed int *_X3f10Pi_1;
+    __attribute__ ((used,unused)) signed int *_X3f10Pi_1;
     __attribute__ ((unused,unused)) signed int *_X3f11Pi_1;
     __attribute__ ((unused,unused,unused)) signed int *_X3f12Pi_1;
     __attribute__ ((unused,unused,unused)) signed int *_X3f13Pi_1;
     __attribute__ ((unused,unused,unused)) signed int *_X3f14Pi_1;
+    __attribute__ ((used)) signed short int _X4shi3s_1;
+    __attribute__ ((used,used)) signed short int _X4shi4s_1;
 };
 static inline void _X12_constructorFv_S3Fdl_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1){
@@ -160,4 +162,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) struct Fdl _X4_srcS3Fdl_1){
@@ -218,6 +228,22 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1=_X4_srcS3Fdl_1._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1=_X4_srcS3Fdl_1._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X11_destructorFv_S3Fdl_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ^?{} */);
+    }
+
     {
         ((void)((*_X4_dstS3Fdl_1)._X3f14Pi_1) /* ^?{} */);
@@ -336,4 +362,12 @@
 
     {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1=_X4_srcS3Fdl_1._X4shi3s_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1=_X4_srcS3Fdl_1._X4shi4s_1));
+    }
+
+    {
         ((void)_X12_constructorFv_S3FdlS3Fdl_autogen___1((&_X4_retS3Fdl_1), (*_X4_dstS3Fdl_1)));
     }
@@ -398,4 +432,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3Fdlii_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1){
@@ -456,4 +498,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3Fdliii_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1){
@@ -514,4 +564,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3Fdliiii_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1){
@@ -572,4 +630,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1){
@@ -630,4 +696,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1){
@@ -688,4 +762,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1){
@@ -746,4 +828,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1){
@@ -804,4 +894,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused)) signed int *_X2f9Pi_1){
@@ -862,4 +960,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3FdliiiiiiiiPiPi_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused)) signed int *_X2f9Pi_1, __attribute__ ((unused)) signed int *_X3f10Pi_1){
@@ -920,4 +1026,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3FdliiiiiiiiPiPiPi_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused)) signed int *_X2f9Pi_1, __attribute__ ((unused)) signed int *_X3f10Pi_1, __attribute__ ((unused,unused)) signed int *_X3f11Pi_1){
@@ -978,4 +1092,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3FdliiiiiiiiPiPiPiPi_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused)) signed int *_X2f9Pi_1, __attribute__ ((unused)) signed int *_X3f10Pi_1, __attribute__ ((unused,unused)) signed int *_X3f11Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f12Pi_1){
@@ -1036,4 +1158,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3FdliiiiiiiiPiPiPiPiPi_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused)) signed int *_X2f9Pi_1, __attribute__ ((unused)) signed int *_X3f10Pi_1, __attribute__ ((unused,unused)) signed int *_X3f11Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f12Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f13Pi_1){
@@ -1094,4 +1224,12 @@
     }
 
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
 }
 static inline void _X12_constructorFv_S3FdliiiiiiiiPiPiPiPiPiPi_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused)) signed int *_X2f9Pi_1, __attribute__ ((unused)) signed int *_X3f10Pi_1, __attribute__ ((unused,unused)) signed int *_X3f11Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f12Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f13Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f14Pi_1){
@@ -1150,4 +1288,144 @@
     {
         ((void)((*_X4_dstS3Fdl_1)._X3f14Pi_1=_X3f14Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3FdliiiiiiiiPiPiPiPiPiPis_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused)) signed int *_X2f9Pi_1, __attribute__ ((unused)) signed int *_X3f10Pi_1, __attribute__ ((unused,unused)) signed int *_X3f11Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f12Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f13Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f14Pi_1, signed short int _X4shi3s_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X2f9Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X3f10Pi_1=_X3f10Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X3f11Pi_1=_X3f11Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X3f12Pi_1=_X3f12Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X3f13Pi_1=_X3f13Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X3f14Pi_1=_X3f14Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1=_X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3FdliiiiiiiiPiPiPiPiPiPiss_autogen___1(__attribute__ ((unused)) struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused)) signed int *_X2f9Pi_1, __attribute__ ((unused)) signed int *_X3f10Pi_1, __attribute__ ((unused,unused)) signed int *_X3f11Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f12Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f13Pi_1, __attribute__ ((unused,unused,unused)) signed int *_X3f14Pi_1, signed short int _X4shi3s_1, signed short int _X4shi4s_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X2f9Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X3f10Pi_1=_X3f10Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X3f11Pi_1=_X3f11Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X3f12Pi_1=_X3f12Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X3f13Pi_1=_X3f13Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X3f14Pi_1=_X3f14Pi_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi3s_1=_X4shi3s_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X4shi4s_1=_X4shi4s_1) /* ?{} */);
     }
 
@@ -1405,5 +1683,79 @@
 
 }
-__attribute__ (( noreturn )) void _X4fredFv___1(void){
+void _X4fredFv___1(void){
+    __attribute__ ((unused)) signed int _X1ii_2;
+    {
+        __attribute__ ((unused)) signed int _X3reti_3;
+        switch ( 3 ) {
+            case 2:
+                {
+                    {
+                        ((void)4);
+                    }
+
+                    /* null statement */ ;
+                    /* null statement */ ;
+                }
+            case 1:
+                {
+                    {
+                        ((void)3);
+                    }
+
+                }
+        }
+
+    }
+
+    L: __attribute__ ((unused)) goto L;
+    L2: __attribute__ (( unused )) L1: __attribute__ (( unused )) goto L2;
+    return ;
+    return ;
+    return ;
+    {
+        ((void)(_X1ii_2+=((signed int )1)));
+    }
+
+}
+void _X4maryFv___1(void){
+    struct __attribute__ ((aligned(64))) S {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S1S_autogen___2(__attribute__ ((unused)) struct S *_X4_dstS1S_2){
+        {
+            ((void)((*_X4_dstS1S_2)._X1ii_2) /* ?{} */);
+        }
+
+    }
+    inline void _X12_constructorFv_S1SS1S_autogen___2(__attribute__ ((unused)) struct S *_X4_dstS1S_2, __attribute__ ((unused)) struct S _X4_srcS1S_2){
+        {
+            ((void)((*_X4_dstS1S_2)._X1ii_2=_X4_srcS1S_2._X1ii_2) /* ?{} */);
+        }
+
+    }
+    inline void _X11_destructorFv_S1S_autogen___2(__attribute__ ((unused)) struct S *_X4_dstS1S_2){
+        {
+            ((void)((*_X4_dstS1S_2)._X1ii_2) /* ^?{} */);
+        }
+
+    }
+    inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___2(__attribute__ ((unused)) struct S *_X4_dstS1S_2, __attribute__ ((unused)) struct S _X4_srcS1S_2){
+        __attribute__ ((unused)) struct S _X4_retS1S_2;
+        {
+            ((void)((*_X4_dstS1S_2)._X1ii_2=_X4_srcS1S_2._X1ii_2));
+        }
+
+        {
+            ((void)_X12_constructorFv_S1SS1S_autogen___2((&_X4_retS1S_2), (*_X4_dstS1S_2)));
+        }
+
+        return _X4_retS1S_2;
+    }
+    inline void _X12_constructorFv_S1Si_autogen___2(__attribute__ ((unused)) struct S *_X4_dstS1S_2, signed int _X1ii_2){
+        {
+            ((void)((*_X4_dstS1S_2)._X1ii_2=_X1ii_2) /* ?{} */);
+        }
+
+    }
     __attribute__ ((unused)) signed int _X1ii_2;
     switch ( 3 ) {
@@ -1414,4 +1766,6 @@
                 }
 
+                /* null statement */ ;
+                /* null statement */ ;
             }
         case 1:
@@ -1424,70 +1778,14 @@
     }
 
-    {
-        ((void)abort());
-    }
-
-}
-__attribute__ ((noreturn)) void _X4maryFv___1(void){
-    struct __attribute__ ((aligned(16))) S {
-        signed int _X1ii_2;
-    };
-    inline void _X12_constructorFv_S1S_autogen___2(__attribute__ ((unused)) struct S *_X4_dstS1S_2){
-        {
-            ((void)((*_X4_dstS1S_2)._X1ii_2) /* ?{} */);
-        }
-
-    }
-    inline void _X12_constructorFv_S1SS1S_autogen___2(__attribute__ ((unused)) struct S *_X4_dstS1S_2, __attribute__ ((unused)) struct S _X4_srcS1S_2){
-        {
-            ((void)((*_X4_dstS1S_2)._X1ii_2=_X4_srcS1S_2._X1ii_2) /* ?{} */);
-        }
-
-    }
-    inline void _X11_destructorFv_S1S_autogen___2(__attribute__ ((unused)) struct S *_X4_dstS1S_2){
-        {
-            ((void)((*_X4_dstS1S_2)._X1ii_2) /* ^?{} */);
-        }
-
-    }
-    inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___2(__attribute__ ((unused)) struct S *_X4_dstS1S_2, __attribute__ ((unused)) struct S _X4_srcS1S_2){
-        __attribute__ ((unused)) struct S _X4_retS1S_2;
-        {
-            ((void)((*_X4_dstS1S_2)._X1ii_2=_X4_srcS1S_2._X1ii_2));
-        }
-
-        {
-            ((void)_X12_constructorFv_S1SS1S_autogen___2((&_X4_retS1S_2), (*_X4_dstS1S_2)));
-        }
-
-        return _X4_retS1S_2;
-    }
-    inline void _X12_constructorFv_S1Si_autogen___2(__attribute__ ((unused)) struct S *_X4_dstS1S_2, signed int _X1ii_2){
-        {
-            ((void)((*_X4_dstS1S_2)._X1ii_2=_X1ii_2) /* ?{} */);
-        }
-
-    }
-    __attribute__ ((unused)) signed int _X1ii_2;
-    switch ( 3 ) {
-        case 2:
-            {
-                {
-                    ((void)4);
-                }
-
-            }
-        case 1:
-            {
-                {
-                    ((void)3);
-                }
-
-            }
-    }
-
-    {
-        ((void)abort());
-    }
-
-}
+    L: __attribute__ ((unused)) goto L;
+    L2: __attribute__ ((unused)) L1: __attribute__ ((unused)) goto L2;
+    return ;
+    return ;
+    return ;
+}
+__attribute__ (( noreturn )) void _X4jackFv___1(void){
+    {
+        ((void)exit((-((signed int )1))));
+    }
+
+}
Index: tests/attributes.cfa
===================================================================
--- tests/attributes.cfa	(revision a8e221514cf267718a28f507adff247a3cc892f4)
+++ tests/attributes.cfa	(revision cd28605bcdaf022d1b2b5730527c9488d92363fb)
@@ -4,12 +4,12 @@
 // The contents of this file are covered under the licence agreement in the
 // file "LICENCE" distributed with Cforall.
-//
-// attributes.cfa --
+// 
+// attributes.cfa -- 
 //
 // Author           : Peter A. Buhr
 // Created On       : Mon Feb  6 16:07:02 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Dec 20 15:32:21 2024
-// Update Count     : 53
+// Last Modified On : Thu Feb  6 12:06:22 2025
+// Update Count     : 117
 //
 
@@ -37,4 +37,5 @@
 
 // field_declaring_list
+typedef short int shint;
 struct Fdl {
     int f1 __attribute__(( unused ));
@@ -50,4 +51,9 @@
     int ( ( __attribute__(( unused )) * (f13)  __attribute__(( unused )) ) __attribute__(( unused )) );
     int ( ( ( __attribute__(( unused )) * (f14) )  __attribute__(( unused )) ) __attribute__(( unused )) );
+//	shint __attribute__(( used )) shi1;
+//	shint __attribute__(( used )) shi2 __attribute__(( used ));
+	__attribute__(( used )) shint shi3;
+	__attribute__(( used )) shint shi4 __attribute__(( used ));
+//	__attribute__(( used )) shint __attribute__(( used )) shi5 __attribute__(( used ));
 };
 
@@ -63,4 +69,5 @@
 const __attribute__(( used )) int __attribute__(( used )) (* __attribute__(( used )) vd7)() __attribute__(( used )), __attribute__(( unused )) ((* __attribute__(( used )) vd8)()) __attribute__(( used ));
 const __attribute__(( used )) int __attribute__(( used )) ( __attribute__(( used )) * vd9)() __attribute__(( used )), __attribute__(( unused )) (( __attribute__(( used )) * vd10)()) __attribute__(( used ));
+
 
 // function_declarator
@@ -91,5 +98,4 @@
     __attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )) ((t6))() __attribute__(( unused ));
 }
-
 
 // identifier_parameter_declarator
@@ -164,31 +170,47 @@
 };
 
-[[ noreturn ]] void fred() {
+
+// statments
+void fred() {
 	int [[unused]] i;
 	// C23 attributes are parsed but not pushed through the compiler.
 	// int [[gnu::xxx]] j;
 	switch ( 3 ) {
+		__attribute__((unused)) int ret;
 	  case 2:
 		4;
-//		__attribute__(( fallthrough ))
-//		[[fallthrough]]
+		__attribute__(( fallthrough ));
+		[[fallthrough]];
 	  case 1:
 		3;
 	}
-	abort();
-}
-
-@[ noreturn ] void mary() {
-	@[aligned(16)] struct S { int i; };
+  L : __attribute__(( unused )) goto L;
+  L1 : [[ unused ]] L2 : [[ unused ]] goto L2;
+	__attribute__(( unused )) return;
+	[[ noreturn ]] return;
+	__attribute__(( noreturn )) return;
+	[[ GNU::fred ]] i += 1;
+}
+
+void mary() {
+	@[aligned(64)] struct S { int i; };
 	int @[unused] i;
 	switch ( 3 ) {
 	  case 2:
 		4;
-//		__attribute__(( fallthrough ))
-//		[[fallthrough]]
+		__attribute__(( fallthrough ));
+		@[fallthrough];
 	  case 1:
 		3;
 	}
-	abort();
+  L : __attribute__(( unused )) goto L;
+  L1 : @[ unused ] L2 : @[ unused ] goto L2;
+	__attribute__(( unused )) return;
+	@[ noreturn ] return;
+	__attribute__(( noreturn )) return;
+}
+
+[[ noreturn ]] void jack() {
+	exit( -1 );
 }
 
