Index: src/tests/.expect/gccExtensions.txt
===================================================================
--- src/tests/.expect/gccExtensions.txt	(revision ed0e67af84f24e07df5e60055abed88b8c7c24e4)
+++ src/tests/.expect/gccExtensions.txt	(revision fcf041c95d024529c8d7cda462578337731ba731)
@@ -0,0 +1,164 @@
+extern void abort(void);
+extern int atexit(void (*__func)(void));
+extern void exit(int __status);
+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)((*___dst__P2sS_2).__a__i_2) /* ?{} */);
+        ((void)((*___dst__P2sS_2).__b__i_2) /* ?{} */);
+        ((void)((*___dst__P2sS_2).__c__i_2) /* ?{} */);
+    }
+    inline void ___constructor__F_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) /* ?{} */);
+    }
+    inline void ___destructor__F_P2sS_autogen___2(struct S *___dst__P2sS_2){
+        ((void)((*___dst__P2sS_2).__c__i_2) /* ^?{} */);
+        ((void)((*___dst__P2sS_2).__b__i_2) /* ^?{} */);
+        ((void)((*___dst__P2sS_2).__a__i_2) /* ^?{} */);
+    }
+    inline void ___constructor__F_P2sSi_autogen___2(struct S *___dst__P2sS_2, int __a__i_2){
+        ((void)((*___dst__P2sS_2).__a__i_2=__a__i_2) /* ?{} */);
+        ((void)((*___dst__P2sS_2).__b__i_2) /* ?{} */);
+        ((void)((*___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)((*___dst__P2sS_2).__a__i_2=__a__i_2) /* ?{} */);
+        ((void)((*___dst__P2sS_2).__b__i_2=__b__i_2) /* ?{} */);
+        ((void)((*___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)((*___dst__P2sS_2).__a__i_2=__a__i_2) /* ?{} */);
+        ((void)((*___dst__P2sS_2).__b__i_2=__b__i_2) /* ?{} */);
+        ((void)((*___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)((*___dst__P3ss2_2).__i__i_2) /* ?{} */);
+    }
+    inline void ___constructor__F_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) /* ?{} */);
+    }
+    inline void ___destructor__F_P3ss2_autogen___2(struct s2 *___dst__P3ss2_2){
+        ((void)((*___dst__P3ss2_2).__i__i_2) /* ^?{} */);
+    }
+    inline void ___constructor__F_P3ss2i_autogen___2(struct s2 *___dst__P3ss2_2, int __i__i_2){
+        ((void)((*___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)((*___dst__P3ss3_2).__i__i_2) /* ?{} */);
+    }
+    inline void ___constructor__F_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) /* ?{} */);
+    }
+    inline void ___destructor__F_P3ss3_autogen___2(struct s3 *___dst__P3ss3_2){
+        ((void)((*___dst__P3ss3_2).__i__i_2) /* ^?{} */);
+    }
+    inline void ___constructor__F_P3ss3i_autogen___2(struct s3 *___dst__P3ss3_2, int __i__i_2){
+        ((void)((*___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)((*___dst__P3ss4_2).__i__i_2) /* ?{} */);
+    }
+    inline void ___constructor__F_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) /* ?{} */);
+    }
+    inline void ___destructor__F_P3ss4_autogen___2(struct s4 *___dst__P3ss4_2){
+        ((void)((*___dst__P3ss4_2).__i__i_2) /* ^?{} */);
+    }
+    inline void ___constructor__F_P3ss4i_autogen___2(struct s4 *___dst__P3ss4_2, int __i__i_2){
+        ((void)((*___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/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision ed0e67af84f24e07df5e60055abed88b8c7c24e4)
+++ src/tests/Makefile.am	(revision fcf041c95d024529c8d7cda462578337731ba731)
@@ -53,2 +53,4 @@
 	${CC} ${CFLAGS} -DERR2 ${<} -o ${@}
 
+gccExtensions : gccExtensions.c
+	${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
Index: src/tests/Makefile.in
===================================================================
--- src/tests/Makefile.in	(revision ed0e67af84f24e07df5e60055abed88b8c7c24e4)
+++ src/tests/Makefile.in	(revision fcf041c95d024529c8d7cda462578337731ba731)
@@ -660,4 +660,7 @@
 	${CC} ${CFLAGS} -DERR2 ${<} -o ${@}
 
+gccExtensions : gccExtensions.c
+	${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
