Index: src/tests/.expect/32/gccExtension.txt
===================================================================
--- src/tests/.expect/32/gccExtension.txt	(revision f1231f247470e4cd4d6125bdf604b4c94bbed41a)
+++ src/tests/.expect/32/gccExtension.txt	(revision f1231f247470e4cd4d6125bdf604b4c94bbed41a)
@@ -0,0 +1,167 @@
+extern void *malloc(long unsigned int __size);
+extern void free(void *__ptr);
+extern void abort(void);
+extern int atexit(void (*__func)(void));
+extern void exit(int __status);
+extern int printf(const char *__restrict __format, ...);
+int main(int __argc__i_1, const char **__argv__PPCc_1){
+    asm ( "nop" :  :  :  );
+    asm ( "nop" :  :  :  );
+    asm ( "nop" :  :  :  );
+    double _Complex __c1__Xd_2;
+    double _Complex __c2__Xd_2;
+    const int __i1__Ci_2;
+    const int __i2__Ci_2;
+    const int __i3__Ci_2;
+    __extension__ const int __ex__Ci_2;
+    struct S {
+        __extension__ int __a__i_2;
+        __extension__ int __b__i_2;
+        __extension__ int __c__i_2;
+    };
+    inline struct S ___operator_assign__F2sS_P2sS2sS_autogen___2(struct S *___dst__P2sS_2, struct S ___src__2sS_2){
+        ((void)((*___dst__P2sS_2).__a__i_2=___src__2sS_2.__a__i_2));
+        ((void)((*___dst__P2sS_2).__b__i_2=___src__2sS_2.__b__i_2));
+        ((void)((*___dst__P2sS_2).__c__i_2=___src__2sS_2.__c__i_2));
+        return ((struct S )___src__2sS_2);
+    }
+    inline void ___constructor__F_P2sS_autogen___2(struct S *___dst__P2sS_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P2sS2sS_autogen___2(struct S *___dst__P2sS_2, struct S ___src__2sS_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=___src__2sS_2.__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=___src__2sS_2.__b__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))=___src__2sS_2.__c__i_2) /* ?{} */);
+    }
+    inline void ___destructor__F_P2sS_autogen___2(struct S *___dst__P2sS_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ^?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ^?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))) /* ^?{} */);
+    }
+    inline void ___constructor__F_P2sSi_autogen___2(struct S *___dst__P2sS_2, int __a__i_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P2sSii_autogen___2(struct S *___dst__P2sS_2, int __a__i_2, int __b__i_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=__b__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P2sSiii_autogen___2(struct S *___dst__P2sS_2, int __a__i_2, int __b__i_2, int __c__i_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=__b__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))=__c__i_2) /* ?{} */);
+    }
+    int __i__i_2;
+    ((void)((*((int *)(&__i__i_2)))=__extension__ 3) /* ?{} */);
+    __extension__ int __a__i_2;
+    __extension__ int __b__i_2;
+    __extension__ int __c__i_2;
+    ((void)((__extension__ __a__i_2 , __extension__ __b__i_2) , __extension__ __c__i_2));
+    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
+    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
+    inline int __f1__Fi___2(){
+    }
+    inline int __f2__Fi___2(){
+    }
+    int __s1__i_2;
+    int __s2__i_2;
+    int __t1___2;
+    int __t2___2;
+    volatile int __v1__Vi_2;
+    volatile int __v2__Vi_2;
+    int __a1__i_2;
+    const int __a2__Ci_2;
+    static const int __a3__Ci_2;
+    static const int __a4__Ci_2;
+    static const int __a5__Ci_2;
+    static const int __a6__Ci_2;
+    static const int __a7__Ci_2;
+    int *__p1__Pi_2;
+    int *__p2__Pi_2;
+    struct s1;
+    struct s2 {
+        int __i__i_2;
+    };
+    inline struct s2 ___operator_assign__F3ss2_P3ss23ss2_autogen___2(struct s2 *___dst__P3ss2_2, struct s2 ___src__3ss2_2){
+        ((void)((*___dst__P3ss2_2).__i__i_2=___src__3ss2_2.__i__i_2));
+        return ((struct s2 )___src__3ss2_2);
+    }
+    inline void ___constructor__F_P3ss2_autogen___2(struct s2 *___dst__P3ss2_2){
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P3ss23ss2_autogen___2(struct s2 *___dst__P3ss2_2, struct s2 ___src__3ss2_2){
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))=___src__3ss2_2.__i__i_2) /* ?{} */);
+    }
+    inline void ___destructor__F_P3ss2_autogen___2(struct s2 *___dst__P3ss2_2){
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))) /* ^?{} */);
+    }
+    inline void ___constructor__F_P3ss2i_autogen___2(struct s2 *___dst__P3ss2_2, int __i__i_2){
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))=__i__i_2) /* ?{} */);
+    }
+    struct s3 {
+        int __i__i_2;
+    };
+    inline struct s3 ___operator_assign__F3ss3_P3ss33ss3_autogen___2(struct s3 *___dst__P3ss3_2, struct s3 ___src__3ss3_2){
+        ((void)((*___dst__P3ss3_2).__i__i_2=___src__3ss3_2.__i__i_2));
+        return ((struct s3 )___src__3ss3_2);
+    }
+    inline void ___constructor__F_P3ss3_autogen___2(struct s3 *___dst__P3ss3_2){
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P3ss33ss3_autogen___2(struct s3 *___dst__P3ss3_2, struct s3 ___src__3ss3_2){
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))=___src__3ss3_2.__i__i_2) /* ?{} */);
+    }
+    inline void ___destructor__F_P3ss3_autogen___2(struct s3 *___dst__P3ss3_2){
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))) /* ^?{} */);
+    }
+    inline void ___constructor__F_P3ss3i_autogen___2(struct s3 *___dst__P3ss3_2, int __i__i_2){
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))=__i__i_2) /* ?{} */);
+    }
+    struct s3 __x1__3ss3_2;
+    ((void)___constructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
+    struct s3 __y1__3ss3_2;
+    ((void)___constructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
+    struct s4 {
+        int __i__i_2;
+    };
+    inline struct s4 ___operator_assign__F3ss4_P3ss43ss4_autogen___2(struct s4 *___dst__P3ss4_2, struct s4 ___src__3ss4_2){
+        ((void)((*___dst__P3ss4_2).__i__i_2=___src__3ss4_2.__i__i_2));
+        ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
+        ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
+        return ((struct s4 )___src__3ss4_2);
+    }
+    inline void ___constructor__F_P3ss4_autogen___2(struct s4 *___dst__P3ss4_2){
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P3ss43ss4_autogen___2(struct s4 *___dst__P3ss4_2, struct s4 ___src__3ss4_2){
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))=___src__3ss4_2.__i__i_2) /* ?{} */);
+    }
+    inline void ___destructor__F_P3ss4_autogen___2(struct s4 *___dst__P3ss4_2){
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))) /* ^?{} */);
+    }
+    inline void ___constructor__F_P3ss4i_autogen___2(struct s4 *___dst__P3ss4_2, int __i__i_2){
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))=__i__i_2) /* ?{} */);
+    }
+    struct s4 __x2__3ss4_2;
+    ((void)___constructor__F_P3ss4_autogen___2(((struct s4 *)(&__x2__3ss4_2))));
+    struct s4 __y2__3ss4_2;
+    ((void)___constructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2))));
+    int __m1__A0i_2[((long unsigned int )10)];
+    int __m2__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
+    int __m3__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
+    int _retVal0 = { 0 };
+    ((void)(_retVal0=0) /* ?{} */);
+    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2))));
+    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__x2__3ss4_2))));
+    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
+    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
+    return ((int )_retVal0);
+    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2))));
+    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__x2__3ss4_2))));
+    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
+    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
+}
Index: src/tests/.expect/32/math.txt
===================================================================
--- src/tests/.expect/32/math.txt	(revision f1231f247470e4cd4d6125bdf604b4c94bbed41a)
+++ src/tests/.expect/32/math.txt	(revision f1231f247470e4cd4d6125bdf604b4c94bbed41a)
@@ -0,0 +1,59 @@
+fabs: 1 1 1 1.41421 1.41421356237309505 1.41421356237309505
+fmod: 1 1 1 1 1 1
+remainder: -1 -1 -1
+remquo: 7 0.0999999 7 0.1 7 0.0999999999999999999
+div: 7 0.0999999 7 0.1 7 0.0999999999999999999
+fma: -2 -2 -2
+fdim: 2 2 2
+nan: nan nan nan
+exp: 2.71828 2.71828182845905 2.71828182845904524 1.46869+2.28736i 1.46869393991589+2.28735528717884i 1.46869393991588516+2.28735528717884239i
+exp2: 2 2 2
+expm1: 1.71828 1.71828182845905 1.71828182845904524
+log: 0 0 0 0.346574+0.785398i 0.346573590279973+0.785398163397448i 0.346573590279972655+0.78539816339744831i
+log2: 3 3 3
+log10: 2 2 2
+log1p: 0.693147 0.693147180559945 0.693147180559945309
+ilogb: 0 0 0
+logb: 3 3 3
+sqrt: 1 1 1 1.09868+0.45509i 1.09868411346781+0.455089860562227i 1.09868411346780997+0.455089860562227341i
+cbrt: 3 3 3
+hypot: 1.41421 1.4142135623731 1.41421356237309505
+pow: 1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614628i
+sin: 0.841471 0.841470984807897 0.841470984807896507 1.29846+0.634964i 1.29845758141598+0.634963914784736i 1.29845758141597729+0.634963914784736108i
+cos: 0.540302 0.54030230586814 0.540302305868139717 0.83373-0.988898i 0.833730025131149-0.988897705762865i 0.833730025131149049-0.988897705762865096i
+tan: 1.55741 1.5574077246549 1.55740772465490223 0.271753+1.08392i 0.271752585319512+1.08392332733869i 0.271752585319511717+1.08392332733869454i
+asin: 1.5708 1.5707963267949 1.57079632679489662 0.666239+1.06128i 0.666239432492515+1.06127506190504i 0.666239432492515255+1.06127506190503565i
+acos: 0 0 0 0.904557-1.06128i 0.904556894302381-1.06127506190504i 0.904556894302381364-1.06127506190503565i
+atan: 0.785398 0.785398163397448 0.78539816339744831 1.01722+0.402359i 1.01722196789785+0.402359478108525i 1.01722196789785137+0.402359478108525094i
+atan2: 0.785398 0.785398163397448 0.78539816339744831 atan: 0.785398 0.785398163397448 0.78539816339744831 sinh: 1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i
+cosh: 1.54308 1.54308063481524 1.54308063481524378 0.83373+0.988898i 0.833730025131149+0.988897705762865i 0.833730025131149049+0.988897705762865096i
+tanh: 0.761594 0.761594155955765 0.761594155955764888 1.08392+0.271753i 1.08392332733869+0.271752585319512i 1.08392332733869454+0.271752585319511717i
+acosh: 0 0 0 1.06128+0.904557i 1.06127506190504+0.904556894302381i 1.06127506190503565+0.904556894302381364i
+asinh: 0.881374 0.881373587019543 0.881373587019543025 1.06128+0.666239i 1.06127506190504+0.666239432492515i 1.06127506190503565+0.666239432492515255i
+atanh: inf inf inf 0.402359+1.01722i 0.402359478108525+1.01722196789785i 0.402359478108525094+1.01722196789785137i
+erf: 0.842701 0.842700792949715 0.842700792949714869
+erfc: 0.157299 0.157299207050285 0.157299207050285131
+lgamma: 1.79176 1.79175946922805 1.791759469228055
+lgamma: 1.79176 1 1.79175946922805 1 1.791759469228055 1
+tgamma: 6 6 6
+floor: 1 1 1
+ceil: 2 2 2
+trunc: 3 3 3
+rint: 2 2 2
+rint: 2 2 2
+rint: 2 2 2
+lrint: 2 2 2
+llrint: 2 2 2
+nearbyint: 4 4 4
+round: 2 2 2
+round: 2 2 2
+round: 2 2 2
+lround: 2 2 2
+llround: 2 2 2
+copysign: -1 -1 -1
+frexp: 0.5 3 0.5 3 0.5 3
+ldexp: 8 8 8
+modf: 2 0.3 2 0.3 2 0.3 nextafter: 2 2 2
+nexttoward: 2 2 2
+scalbn: 16 16 16
+scalbln: 16 16 16
Index: src/tests/.expect/64/gccExtensions.txt
===================================================================
--- src/tests/.expect/64/gccExtensions.txt	(revision f1231f247470e4cd4d6125bdf604b4c94bbed41a)
+++ src/tests/.expect/64/gccExtensions.txt	(revision f1231f247470e4cd4d6125bdf604b4c94bbed41a)
@@ -0,0 +1,167 @@
+extern void *malloc(long unsigned int __size);
+extern void free(void *__ptr);
+extern void abort(void);
+extern int atexit(void (*__func)(void));
+extern void exit(int __status);
+extern int printf(const char *__restrict __format, ...);
+int main(int __argc__i_1, const char **__argv__PPCc_1){
+    asm ( "nop" :  :  :  );
+    asm ( "nop" :  :  :  );
+    asm ( "nop" :  :  :  );
+    double _Complex __c1__Xd_2;
+    double _Complex __c2__Xd_2;
+    const int __i1__Ci_2;
+    const int __i2__Ci_2;
+    const int __i3__Ci_2;
+    __extension__ const int __ex__Ci_2;
+    struct S {
+        __extension__ int __a__i_2;
+        __extension__ int __b__i_2;
+        __extension__ int __c__i_2;
+    };
+    inline struct S ___operator_assign__F2sS_P2sS2sS_autogen___2(struct S *___dst__P2sS_2, struct S ___src__2sS_2){
+        ((void)((*___dst__P2sS_2).__a__i_2=___src__2sS_2.__a__i_2));
+        ((void)((*___dst__P2sS_2).__b__i_2=___src__2sS_2.__b__i_2));
+        ((void)((*___dst__P2sS_2).__c__i_2=___src__2sS_2.__c__i_2));
+        return ((struct S )___src__2sS_2);
+    }
+    inline void ___constructor__F_P2sS_autogen___2(struct S *___dst__P2sS_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P2sS2sS_autogen___2(struct S *___dst__P2sS_2, struct S ___src__2sS_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=___src__2sS_2.__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=___src__2sS_2.__b__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))=___src__2sS_2.__c__i_2) /* ?{} */);
+    }
+    inline void ___destructor__F_P2sS_autogen___2(struct S *___dst__P2sS_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ^?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ^?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))) /* ^?{} */);
+    }
+    inline void ___constructor__F_P2sSi_autogen___2(struct S *___dst__P2sS_2, int __a__i_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P2sSii_autogen___2(struct S *___dst__P2sS_2, int __a__i_2, int __b__i_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=__b__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P2sSiii_autogen___2(struct S *___dst__P2sS_2, int __a__i_2, int __b__i_2, int __c__i_2){
+        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=__b__i_2) /* ?{} */);
+        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))=__c__i_2) /* ?{} */);
+    }
+    int __i__i_2;
+    ((void)((*((int *)(&__i__i_2)))=__extension__ 3) /* ?{} */);
+    __extension__ int __a__i_2;
+    __extension__ int __b__i_2;
+    __extension__ int __c__i_2;
+    ((void)((__extension__ __a__i_2 , __extension__ __b__i_2) , __extension__ __c__i_2));
+    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
+    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
+    inline int __f1__Fi___2(){
+    }
+    inline int __f2__Fi___2(){
+    }
+    int __s1__i_2;
+    int __s2__i_2;
+    int __t1___2;
+    int __t2___2;
+    volatile int __v1__Vi_2;
+    volatile int __v2__Vi_2;
+    int __a1__i_2;
+    const int __a2__Ci_2;
+    static const int __a3__Ci_2;
+    static const int __a4__Ci_2;
+    static const int __a5__Ci_2;
+    static const int __a6__Ci_2;
+    static const int __a7__Ci_2;
+    int *__p1__Pi_2;
+    int *__p2__Pi_2;
+    struct s1;
+    struct s2 {
+        int __i__i_2;
+    };
+    inline struct s2 ___operator_assign__F3ss2_P3ss23ss2_autogen___2(struct s2 *___dst__P3ss2_2, struct s2 ___src__3ss2_2){
+        ((void)((*___dst__P3ss2_2).__i__i_2=___src__3ss2_2.__i__i_2));
+        return ((struct s2 )___src__3ss2_2);
+    }
+    inline void ___constructor__F_P3ss2_autogen___2(struct s2 *___dst__P3ss2_2){
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P3ss23ss2_autogen___2(struct s2 *___dst__P3ss2_2, struct s2 ___src__3ss2_2){
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))=___src__3ss2_2.__i__i_2) /* ?{} */);
+    }
+    inline void ___destructor__F_P3ss2_autogen___2(struct s2 *___dst__P3ss2_2){
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))) /* ^?{} */);
+    }
+    inline void ___constructor__F_P3ss2i_autogen___2(struct s2 *___dst__P3ss2_2, int __i__i_2){
+        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))=__i__i_2) /* ?{} */);
+    }
+    struct s3 {
+        int __i__i_2;
+    };
+    inline struct s3 ___operator_assign__F3ss3_P3ss33ss3_autogen___2(struct s3 *___dst__P3ss3_2, struct s3 ___src__3ss3_2){
+        ((void)((*___dst__P3ss3_2).__i__i_2=___src__3ss3_2.__i__i_2));
+        return ((struct s3 )___src__3ss3_2);
+    }
+    inline void ___constructor__F_P3ss3_autogen___2(struct s3 *___dst__P3ss3_2){
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P3ss33ss3_autogen___2(struct s3 *___dst__P3ss3_2, struct s3 ___src__3ss3_2){
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))=___src__3ss3_2.__i__i_2) /* ?{} */);
+    }
+    inline void ___destructor__F_P3ss3_autogen___2(struct s3 *___dst__P3ss3_2){
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))) /* ^?{} */);
+    }
+    inline void ___constructor__F_P3ss3i_autogen___2(struct s3 *___dst__P3ss3_2, int __i__i_2){
+        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))=__i__i_2) /* ?{} */);
+    }
+    struct s3 __x1__3ss3_2;
+    ((void)___constructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
+    struct s3 __y1__3ss3_2;
+    ((void)___constructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
+    struct s4 {
+        int __i__i_2;
+    };
+    inline struct s4 ___operator_assign__F3ss4_P3ss43ss4_autogen___2(struct s4 *___dst__P3ss4_2, struct s4 ___src__3ss4_2){
+        ((void)((*___dst__P3ss4_2).__i__i_2=___src__3ss4_2.__i__i_2));
+        ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
+        ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
+        return ((struct s4 )___src__3ss4_2);
+    }
+    inline void ___constructor__F_P3ss4_autogen___2(struct s4 *___dst__P3ss4_2){
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))) /* ?{} */);
+    }
+    inline void ___constructor__F_P3ss43ss4_autogen___2(struct s4 *___dst__P3ss4_2, struct s4 ___src__3ss4_2){
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))=___src__3ss4_2.__i__i_2) /* ?{} */);
+    }
+    inline void ___destructor__F_P3ss4_autogen___2(struct s4 *___dst__P3ss4_2){
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))) /* ^?{} */);
+    }
+    inline void ___constructor__F_P3ss4i_autogen___2(struct s4 *___dst__P3ss4_2, int __i__i_2){
+        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))=__i__i_2) /* ?{} */);
+    }
+    struct s4 __x2__3ss4_2;
+    ((void)___constructor__F_P3ss4_autogen___2(((struct s4 *)(&__x2__3ss4_2))));
+    struct s4 __y2__3ss4_2;
+    ((void)___constructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2))));
+    int __m1__A0i_2[((long unsigned int )10)];
+    int __m2__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
+    int __m3__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
+    int _retVal0 = { 0 };
+    ((void)(_retVal0=0) /* ?{} */);
+    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2))));
+    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__x2__3ss4_2))));
+    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
+    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
+    return ((int )_retVal0);
+    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2))));
+    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__x2__3ss4_2))));
+    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
+    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
+}
Index: src/tests/.expect/64/math.txt
===================================================================
--- src/tests/.expect/64/math.txt	(revision f1231f247470e4cd4d6125bdf604b4c94bbed41a)
+++ src/tests/.expect/64/math.txt	(revision f1231f247470e4cd4d6125bdf604b4c94bbed41a)
@@ -0,0 +1,59 @@
+fabs: 1 1 1 1.41421 1.41421356237309505 1.41421356237309505
+fmod: 1 1 1 1 1 1
+remainder: -1 -1 -1
+remquo: 7 0.0999999 7 0.1 7 0.0999999999999999999
+div: 7 0.0999999 7 0.1 7 0.0999999999999999999
+fma: -2 -2 -2
+fdim: 2 2 2
+nan: nan nan nan
+exp: 2.71828 2.71828182845905 2.71828182845904524 1.46869+2.28736i 1.46869393991589+2.28735528717884i 1.46869393991588516+2.28735528717884239i
+exp2: 2 2 2
+expm1: 1.71828 1.71828182845905 1.71828182845904524
+log: 0 0 0 0.346574+0.785398i 0.346573590279973+0.785398163397448i 0.346573590279972655+0.78539816339744831i
+log2: 3 3 3
+log10: 2 2 2
+log1p: 0.693147 0.693147180559945 0.693147180559945309
+ilogb: 0 0 0
+logb: 3 3 3
+sqrt: 1 1 1 1.09868+0.45509i 1.09868411346781+0.455089860562227i 1.09868411346780997+0.455089860562227341i
+cbrt: 3 3 3
+hypot: 1.41421 1.4142135623731 1.41421356237309505
+pow: 1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614628i
+sin: 0.841471 0.841470984807897 0.841470984807896507 1.29846+0.634964i 1.29845758141598+0.634963914784736i 1.29845758141597729+0.634963914784736108i
+cos: 0.540302 0.54030230586814 0.540302305868139717 0.83373-0.988898i 0.833730025131149-0.988897705762865i 0.833730025131149049-0.988897705762865096i
+tan: 1.55741 1.5574077246549 1.55740772465490223 0.271753+1.08392i 0.271752585319512+1.08392332733869i 0.271752585319511717+1.08392332733869454i
+asin: 1.5708 1.5707963267949 1.57079632679489662 0.666239+1.06128i 0.666239432492515+1.06127506190504i 0.666239432492515255+1.06127506190503565i
+acos: 0 0 0 0.904557-1.06128i 0.904556894302381-1.06127506190504i 0.904556894302381364-1.06127506190503565i
+atan: 0.785398 0.785398163397448 0.78539816339744831 1.01722+0.402359i 1.01722196789785+0.402359478108525i 1.01722196789785137+0.402359478108525094i
+atan2: 0.785398 0.785398163397448 0.78539816339744831 atan: 0.785398 0.785398163397448 0.78539816339744831 sinh: 1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i
+cosh: 1.54308 1.54308063481524 1.54308063481524378 0.83373+0.988898i 0.833730025131149+0.988897705762865i 0.833730025131149049+0.988897705762865096i
+tanh: 0.761594 0.761594155955765 0.761594155955764888 1.08392+0.271753i 1.08392332733869+0.271752585319512i 1.08392332733869454+0.271752585319511717i
+acosh: 0 0 0 1.06128+0.904557i 1.06127506190504+0.904556894302381i 1.06127506190503565+0.904556894302381364i
+asinh: 0.881374 0.881373587019543 0.881373587019543025 1.06128+0.666239i 1.06127506190504+0.666239432492515i 1.06127506190503565+0.666239432492515255i
+atanh: inf inf inf 0.402359+1.01722i 0.402359478108525+1.01722196789785i 0.402359478108525094+1.01722196789785137i
+erf: 0.842701 0.842700792949715 0.842700792949714869
+erfc: 0.157299 0.157299207050285 0.157299207050285131
+lgamma: 1.79176 1.79175946922805 1.791759469228055
+lgamma: 1.79176 1 1.79175946922805 1 1.791759469228055 1
+tgamma: 6 6 6
+floor: 1 1 1
+ceil: 2 2 2
+trunc: 3 3 3
+rint: 2 2 2
+rint: 2 2 2
+rint: 2 2 2
+lrint: 2 2 2
+llrint: 2 2 2
+nearbyint: 4 4 4
+round: 2 2 2
+round: 2 2 2
+round: 2 2 2
+lround: 2 2 2
+llround: 2 2 2
+copysign: -1 -1 -1
+frexp: 0.5 3 0.5 3 0.5 3
+ldexp: 8 8 8
+modf: 2 0.3 2 0.3 2 0.3 nextafter: 2 2 2
+nexttoward: 2 2 2
+scalbn: 16 16 16
+scalbln: 16 16 16
Index: src/tests/.expect/gccExtensions.txt
===================================================================
--- src/tests/.expect/gccExtensions.txt	(revision 9c791ddf2c2ea0de4b5c1338cd0581fa3dfaa4cc)
+++ 	(revision )
@@ -1,167 +1,0 @@
-extern void *malloc(long unsigned int __size);
-extern void free(void *__ptr);
-extern void abort(void);
-extern int atexit(void (*__func)(void));
-extern void exit(int __status);
-extern int printf(const char *__restrict __format, ...);
-int main(int __argc__i_1, const char **__argv__PPCc_1){
-    asm ( "nop" :  :  :  );
-    asm ( "nop" :  :  :  );
-    asm ( "nop" :  :  :  );
-    double _Complex __c1__Xd_2;
-    double _Complex __c2__Xd_2;
-    const int __i1__Ci_2;
-    const int __i2__Ci_2;
-    const int __i3__Ci_2;
-    __extension__ const int __ex__Ci_2;
-    struct S {
-        __extension__ int __a__i_2;
-        __extension__ int __b__i_2;
-        __extension__ int __c__i_2;
-    };
-    inline struct S ___operator_assign__F2sS_P2sS2sS_autogen___2(struct S *___dst__P2sS_2, struct S ___src__2sS_2){
-        ((void)((*___dst__P2sS_2).__a__i_2=___src__2sS_2.__a__i_2));
-        ((void)((*___dst__P2sS_2).__b__i_2=___src__2sS_2.__b__i_2));
-        ((void)((*___dst__P2sS_2).__c__i_2=___src__2sS_2.__c__i_2));
-        return ((struct S )___src__2sS_2);
-    }
-    inline void ___constructor__F_P2sS_autogen___2(struct S *___dst__P2sS_2){
-        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))) /* ?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
-    }
-    inline void ___constructor__F_P2sS2sS_autogen___2(struct S *___dst__P2sS_2, struct S ___src__2sS_2){
-        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=___src__2sS_2.__a__i_2) /* ?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=___src__2sS_2.__b__i_2) /* ?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))=___src__2sS_2.__c__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_P2sS_autogen___2(struct S *___dst__P2sS_2){
-        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ^?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ^?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))) /* ^?{} */);
-    }
-    inline void ___constructor__F_P2sSi_autogen___2(struct S *___dst__P2sS_2, int __a__i_2){
-        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))) /* ?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
-    }
-    inline void ___constructor__F_P2sSii_autogen___2(struct S *___dst__P2sS_2, int __a__i_2, int __b__i_2){
-        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=__b__i_2) /* ?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))) /* ?{} */);
-    }
-    inline void ___constructor__F_P2sSiii_autogen___2(struct S *___dst__P2sS_2, int __a__i_2, int __b__i_2, int __c__i_2){
-        ((void)((*((int *)(&(*___dst__P2sS_2).__a__i_2)))=__a__i_2) /* ?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__b__i_2)))=__b__i_2) /* ?{} */);
-        ((void)((*((int *)(&(*___dst__P2sS_2).__c__i_2)))=__c__i_2) /* ?{} */);
-    }
-    int __i__i_2;
-    ((void)((*((int *)(&__i__i_2)))=__extension__ 3) /* ?{} */);
-    __extension__ int __a__i_2;
-    __extension__ int __b__i_2;
-    __extension__ int __c__i_2;
-    ((void)((__extension__ __a__i_2 , __extension__ __b__i_2) , __extension__ __c__i_2));
-    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
-    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
-    inline int __f1__Fi___2(){
-    }
-    inline int __f2__Fi___2(){
-    }
-    int __s1__i_2;
-    int __s2__i_2;
-    int __t1___2;
-    int __t2___2;
-    volatile int __v1__Vi_2;
-    volatile int __v2__Vi_2;
-    int __a1__i_2;
-    const int __a2__Ci_2;
-    static const int __a3__Ci_2;
-    static const int __a4__Ci_2;
-    static const int __a5__Ci_2;
-    static const int __a6__Ci_2;
-    static const int __a7__Ci_2;
-    int *__p1__Pi_2;
-    int *__p2__Pi_2;
-    struct s1;
-    struct s2 {
-        int __i__i_2;
-    };
-    inline struct s2 ___operator_assign__F3ss2_P3ss23ss2_autogen___2(struct s2 *___dst__P3ss2_2, struct s2 ___src__3ss2_2){
-        ((void)((*___dst__P3ss2_2).__i__i_2=___src__3ss2_2.__i__i_2));
-        return ((struct s2 )___src__3ss2_2);
-    }
-    inline void ___constructor__F_P3ss2_autogen___2(struct s2 *___dst__P3ss2_2){
-        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))) /* ?{} */);
-    }
-    inline void ___constructor__F_P3ss23ss2_autogen___2(struct s2 *___dst__P3ss2_2, struct s2 ___src__3ss2_2){
-        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))=___src__3ss2_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_P3ss2_autogen___2(struct s2 *___dst__P3ss2_2){
-        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))) /* ^?{} */);
-    }
-    inline void ___constructor__F_P3ss2i_autogen___2(struct s2 *___dst__P3ss2_2, int __i__i_2){
-        ((void)((*((int *)(&(*___dst__P3ss2_2).__i__i_2)))=__i__i_2) /* ?{} */);
-    }
-    struct s3 {
-        int __i__i_2;
-    };
-    inline struct s3 ___operator_assign__F3ss3_P3ss33ss3_autogen___2(struct s3 *___dst__P3ss3_2, struct s3 ___src__3ss3_2){
-        ((void)((*___dst__P3ss3_2).__i__i_2=___src__3ss3_2.__i__i_2));
-        return ((struct s3 )___src__3ss3_2);
-    }
-    inline void ___constructor__F_P3ss3_autogen___2(struct s3 *___dst__P3ss3_2){
-        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))) /* ?{} */);
-    }
-    inline void ___constructor__F_P3ss33ss3_autogen___2(struct s3 *___dst__P3ss3_2, struct s3 ___src__3ss3_2){
-        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))=___src__3ss3_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_P3ss3_autogen___2(struct s3 *___dst__P3ss3_2){
-        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))) /* ^?{} */);
-    }
-    inline void ___constructor__F_P3ss3i_autogen___2(struct s3 *___dst__P3ss3_2, int __i__i_2){
-        ((void)((*((int *)(&(*___dst__P3ss3_2).__i__i_2)))=__i__i_2) /* ?{} */);
-    }
-    struct s3 __x1__3ss3_2;
-    ((void)___constructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
-    struct s3 __y1__3ss3_2;
-    ((void)___constructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
-    struct s4 {
-        int __i__i_2;
-    };
-    inline struct s4 ___operator_assign__F3ss4_P3ss43ss4_autogen___2(struct s4 *___dst__P3ss4_2, struct s4 ___src__3ss4_2){
-        ((void)((*___dst__P3ss4_2).__i__i_2=___src__3ss4_2.__i__i_2));
-        ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
-        ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
-        return ((struct s4 )___src__3ss4_2);
-    }
-    inline void ___constructor__F_P3ss4_autogen___2(struct s4 *___dst__P3ss4_2){
-        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))) /* ?{} */);
-    }
-    inline void ___constructor__F_P3ss43ss4_autogen___2(struct s4 *___dst__P3ss4_2, struct s4 ___src__3ss4_2){
-        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))=___src__3ss4_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_P3ss4_autogen___2(struct s4 *___dst__P3ss4_2){
-        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))) /* ^?{} */);
-    }
-    inline void ___constructor__F_P3ss4i_autogen___2(struct s4 *___dst__P3ss4_2, int __i__i_2){
-        ((void)((*((int *)(&(*___dst__P3ss4_2).__i__i_2)))=__i__i_2) /* ?{} */);
-    }
-    struct s4 __x2__3ss4_2;
-    ((void)___constructor__F_P3ss4_autogen___2(((struct s4 *)(&__x2__3ss4_2))));
-    struct s4 __y2__3ss4_2;
-    ((void)___constructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2))));
-    int __m1__A0i_2[((long unsigned int )10)];
-    int __m2__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
-    int __m3__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
-    int _retVal0 = { 0 };
-    ((void)(_retVal0=0) /* ?{} */);
-    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2))));
-    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__x2__3ss4_2))));
-    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
-    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
-    return ((int )_retVal0);
-    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2))));
-    ((void)___destructor__F_P3ss4_autogen___2(((struct s4 *)(&__x2__3ss4_2))));
-    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__y1__3ss3_2))));
-    ((void)___destructor__F_P3ss3_autogen___2(((struct s3 *)(&__x1__3ss3_2))));
-}
Index: src/tests/.expect/math.txt
===================================================================
--- src/tests/.expect/math.txt	(revision 9c791ddf2c2ea0de4b5c1338cd0581fa3dfaa4cc)
+++ 	(revision )
@@ -1,59 +1,0 @@
-fabs: 1 1 1 1.41421 1.41421356237309505 1.41421356237309505
-fmod: 1 1 1 1 1 1
-remainder: -1 -1 -1
-remquo: 7 0.0999999 7 0.1 7 0.0999999999999999999
-div: 7 0.0999999 7 0.1 7 0.0999999999999999999
-fma: -2 -2 -2
-fdim: 2 2 2
-nan: nan nan nan
-exp: 2.71828 2.71828182845905 2.71828182845904524 1.46869+2.28736i 1.46869393991589+2.28735528717884i 1.46869393991588516+2.28735528717884239i
-exp2: 2 2 2
-expm1: 1.71828 1.71828182845905 1.71828182845904524
-log: 0 0 0 0.346574+0.785398i 0.346573590279973+0.785398163397448i 0.346573590279972655+0.78539816339744831i
-log2: 3 3 3
-log10: 2 2 2
-log1p: 0.693147 0.693147180559945 0.693147180559945309
-ilogb: 0 0 0
-logb: 3 3 3
-sqrt: 1 1 1 1.09868+0.45509i 1.09868411346781+0.455089860562227i 1.09868411346780997+0.455089860562227341i
-cbrt: 3 3 3
-hypot: 1.41421 1.4142135623731 1.41421356237309505
-pow: 1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614628i
-sin: 0.841471 0.841470984807897 0.841470984807896507 1.29846+0.634964i 1.29845758141598+0.634963914784736i 1.29845758141597729+0.634963914784736108i
-cos: 0.540302 0.54030230586814 0.540302305868139717 0.83373-0.988898i 0.833730025131149-0.988897705762865i 0.833730025131149049-0.988897705762865096i
-tan: 1.55741 1.5574077246549 1.55740772465490223 0.271753+1.08392i 0.271752585319512+1.08392332733869i 0.271752585319511717+1.08392332733869454i
-asin: 1.5708 1.5707963267949 1.57079632679489662 0.666239+1.06128i 0.666239432492515+1.06127506190504i 0.666239432492515255+1.06127506190503565i
-acos: 0 0 0 0.904557-1.06128i 0.904556894302381-1.06127506190504i 0.904556894302381364-1.06127506190503565i
-atan: 0.785398 0.785398163397448 0.78539816339744831 1.01722+0.402359i 1.01722196789785+0.402359478108525i 1.01722196789785137+0.402359478108525094i
-atan2: 0.785398 0.785398163397448 0.78539816339744831 atan: 0.785398 0.785398163397448 0.78539816339744831 sinh: 1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i
-cosh: 1.54308 1.54308063481524 1.54308063481524378 0.83373+0.988898i 0.833730025131149+0.988897705762865i 0.833730025131149049+0.988897705762865096i
-tanh: 0.761594 0.761594155955765 0.761594155955764888 1.08392+0.271753i 1.08392332733869+0.271752585319512i 1.08392332733869454+0.271752585319511717i
-acosh: 0 0 0 1.06128+0.904557i 1.06127506190504+0.904556894302381i 1.06127506190503565+0.904556894302381364i
-asinh: 0.881374 0.881373587019543 0.881373587019543025 1.06128+0.666239i 1.06127506190504+0.666239432492515i 1.06127506190503565+0.666239432492515255i
-atanh: inf inf inf 0.402359+1.01722i 0.402359478108525+1.01722196789785i 0.402359478108525094+1.01722196789785137i
-erf: 0.842701 0.842700792949715 0.842700792949714869
-erfc: 0.157299 0.157299207050285 0.157299207050285131
-lgamma: 1.79176 1.79175946922805 1.791759469228055
-lgamma: 1.79176 1 1.79175946922805 1 1.791759469228055 1
-tgamma: 6 6 6
-floor: 1 1 1
-ceil: 2 2 2
-trunc: 3 3 3
-rint: 2 2 2
-rint: 2 2 2
-rint: 2 2 2
-lrint: 2 2 2
-llrint: 2 2 2
-nearbyint: 4 4 4
-round: 2 2 2
-round: 2 2 2
-round: 2 2 2
-lround: 2 2 2
-llround: 2 2 2
-copysign: -1 -1 -1
-frexp: 0.5 3 0.5 3 0.5 3
-ldexp: 8 8 8
-modf: 2 0.3 2 0.3 2 0.3 nextafter: 2 2 2
-nexttoward: 2 2 2
-scalbn: 16 16 16
-scalbln: 16 16 16
Index: src/tests/test.py
===================================================================
--- src/tests/test.py	(revision 9c791ddf2c2ea0de4b5c1338cd0581fa3dfaa4cc)
+++ src/tests/test.py	(revision f1231f247470e4cd4d6125bdf604b4c94bbed41a)
@@ -15,10 +15,29 @@
 #               help functions
 ################################################################################
+
+class Test:
+    def __init__(self, name, path):
+        self.name, self.path = name, path
+
+def getMachineType():
+	with open('Makefile') as file:
+		makefile = file.read()
+		m = re.search("CFA_FLAGS\s*=\s*-m(.*)", makefile)
+		return m.group(1)
+
 def listTests():
-	list = [splitext(f)[0] for f in listdir('./.expect')
+	machineType = getMachineType()
+
+	generic_list = map(lambda fname: Test(fname, fname),
+		[splitext(f)[0] for f in listdir('./.expect')
 		if not f.startswith('.') and f.endswith('.txt')
-		]
-
-	return list
+		])
+
+	typed_list = map(lambda fname: Test( fname, "%s/%s" % (machineType, fname) ),
+		[splitext(f)[0] for f in listdir("./.expect/%s" % machineType)
+		if not f.startswith('.') and f.endswith('.txt')
+		])
+
+	return generic_list + typed_list
 
 def sh(cmd, dry_run = False, print2stdout = True):
@@ -71,4 +90,8 @@
 		return False
 
+def filterTests(testname) :
+	found = [test for test in allTests if test.name == testname]
+	return (found[0] if len(found) == 1 else Test(testname, testname) )
+
 ################################################################################
 #               running test functions
@@ -76,22 +99,22 @@
 def run_test_instance(test, generate, dry_run):
 
-	out_file = (".out/%s.log" % test) if not generate else (".expect/%s.txt" % test)
+	out_file = (".out/%s.log" % test.name) if not generate else (".expect/%s.txt" % test.path)
 
 	sh("rm -f %s" % out_file, dry_run)
-	sh("rm -f %s > /dev/null 2>&1" % test, dry_run)
+	sh("rm -f %s > /dev/null 2>&1" % test.name, dry_run)
 
 	# build, skipping to next test on error
-	make_ret, _ = sh("%s %s 2> %s 1> /dev/null" % (make_cmd, test, out_file), dry_run)
+	make_ret, _ = sh("%s %s 2> %s 1> /dev/null" % (make_cmd, test.name, out_file), dry_run)
 
 	if make_ret == 0 :
 		# fetch optional input
-		stdinput = "< .in/%s.txt" % test if isfile(".in/%s.txt" % test) else ""
-
-		if fileIsExecutable(test) :
+		stdinput = "< .in/%s.txt" % test if isfile(".in/%s.txt" % test.path) else ""
+
+		if fileIsExecutable(test.name) :
 			# run test
-			sh("./%s %s > %s 2>&1" % (test, stdinput, out_file), dry_run)
+			sh("./%s %s > %s 2>&1" % (test.name, stdinput, out_file), dry_run)
 		else :
 			# simply cat the result into the output
-			sh("cat %s > %s" % (test, out_file), dry_run)
+			sh("cat %s > %s" % (test.name, out_file), dry_run)
 
 	retcode = 0
@@ -101,5 +124,5 @@
 
 	if generate :
-		if not dry_run and fileContainsOnly(out_file, "make: *** No rule to make target `%s'.  Stop." % test) :
+		if not dry_run and fileContainsOnly(out_file, "make: *** No rule to make target `%s'.  Stop." % test.name) :
 			retcode = 1;
 			error = "\t\tNo make target for test %s!" % test
@@ -122,8 +145,8 @@
 					".expect/%s.txt .out/%s.log")
 
-		retcode, error = sh(diff_cmd % (test, test), dry_run, False)
+		retcode, error = sh(diff_cmd % (test.path, test.name), dry_run, False)
 
 	# clean the executable
-	sh("rm -f %s > /dev/null 2>&1" % test, dry_run)
+	sh("rm -f %s > /dev/null 2>&1" % test.name, dry_run)
 
 	return retcode, error
@@ -138,5 +161,5 @@
 	failed = False;
 	for t in tests:
-		print("%20s  " % t, end="")
+		print("%20s  " % t.name, end="")
 		sys.stdout.flush()
 		test_failed, error = run_test_instance(t, generate, dry_run)
@@ -183,9 +206,16 @@
 else :
 	tests = []
-	for test in options.tests:
-		if test in allTests or options.regenerate_expected :
-			tests.append(test)
-		else :
-			print('ERROR: No expected file for test %s, ignoring it' % test, file=sys.stderr)
+
+	if options.regenerate_expected :
+		tests = map(filterTests, options.tests)
+
+	else :
+		for testname in options.tests:
+			test = [t for t in allTests if t.name == testname]
+
+			if len(test) != 0 :
+				tests.append( test[0] )
+			else :
+				print('ERROR: No expected file for test %s, ignoring it' % testname, file=sys.stderr)
 
 	if len(tests) == 0 :
@@ -193,10 +223,11 @@
 		sys.exit(1)
 
-tests.sort()
+tests.sort(key=lambda t: t.name)
+
 make_flags = environ.get('MAKEFLAGS')
 make_cmd = "make" if make_flags and "-j" in make_flags else "make -j8"
 
 if options.list :
-	print("\n".join(tests))
+	print("\n".join(map(lambda t: "%s (%s)" % (t.name, t.path), tests)))
 
 else :
