Index: src/tests/.expect/64/functions.txt
===================================================================
--- src/tests/.expect/64/functions.txt	(revision 481115fc1ffbb26c8743033726f427f34f1a1693)
+++ src/tests/.expect/64/functions.txt	(revision 481115fc1ffbb26c8743033726f427f34f1a1693)
@@ -0,0 +1,249 @@
+void __h__F___1(void){
+}
+signed int __f__Fi_PFi__PFi_i_PFi__PFi_i_PF____1(signed int (*__anonymous_object0)(void), signed int (*__anonymous_object1)(signed int __anonymous_object2), signed int (*__anonymous_object3)(void), signed int (*__anonymous_object4)(signed int __anonymous_object5), void (*__g__PF___1)(void)){
+    __attribute__ ((unused)) signed int ___retval_f__i_1;
+    ((void)(*__g__PF___1)());
+    ((void)__g__PF___1());
+    ((void)(__g__PF___1=__h__F___1));
+}
+signed int __f1__Fi___1(){
+    __attribute__ ((unused)) signed int ___retval_f1__i_1;
+}
+signed int __f2__Fi___1(){
+    __attribute__ ((unused)) signed int ___retval_f2__i_1;
+}
+signed int (*__f3__FPFi_____1())(){
+    __attribute__ ((unused)) signed int (*___retval_f3__PFi___1)();
+}
+signed int *__f4__FPi___1(){
+    __attribute__ ((unused)) signed int *___retval_f4__Pi_1;
+}
+signed int (*__f5__FPFi_____1())(){
+    __attribute__ ((unused)) signed int (*___retval_f5__PFi___1)();
+}
+signed int *__f6__FPi___1(){
+    __attribute__ ((unused)) signed int *___retval_f6__Pi_1;
+}
+signed int *__f7__FPi___1(){
+    __attribute__ ((unused)) signed int *___retval_f7__Pi_1;
+}
+signed int **__f8__FPPi___1(){
+    __attribute__ ((unused)) signed int **___retval_f8__PPi_1;
+}
+signed int *const *__f9__FPCPi___1(){
+    __attribute__ ((unused)) signed int *const *___retval_f9__PCPi_1;
+}
+signed int (*__f10__FPA0i___1())[]{
+    __attribute__ ((unused)) signed int (*___retval_f10__PA0i_1)[];
+}
+signed int (*__f11__FPA0A0i___1())[][((unsigned long int )3)]{
+    __attribute__ ((unused)) signed int (*___retval_f11__PA0A0i_1)[][((unsigned long int )3)];
+}
+signed int (*__f12__FPA0A0i___1())[][((unsigned long int )3)]{
+    __attribute__ ((unused)) signed int (*___retval_f12__PA0A0i_1)[][((unsigned long int )3)];
+}
+signed int __fII1__Fi_i__1(signed int __i__i_1){
+    __attribute__ ((unused)) signed int ___retval_fII1__i_1;
+}
+const signed int __fII2__FCi_i__1(signed int __i__i_1){
+    __attribute__ ((unused)) const signed int ___retval_fII2__Ci_1;
+}
+extern signed int __fII3__Fi_i__1(signed int __i__i_1){
+    __attribute__ ((unused)) signed int ___retval_fII3__i_1;
+}
+extern const signed int __fII4__FCi_i__1(signed int __i__i_1){
+    __attribute__ ((unused)) const signed int ___retval_fII4__Ci_1;
+}
+signed int *__fII5__FPi___1(){
+    __attribute__ ((unused)) signed int *___retval_fII5__Pi_1;
+}
+signed int *const __fII6__FCPi___1(){
+    __attribute__ ((unused)) signed int *const ___retval_fII6__CPi_1;
+}
+const signed long int *__fII7__FPCl___1(){
+    __attribute__ ((unused)) const signed long int *___retval_fII7__PCl_1;
+}
+static const signed long int *__fII8__FPCl___1(){
+    __attribute__ ((unused)) const signed long int *___retval_fII8__PCl_1;
+}
+static const signed long int *__fII9__FPCl___1(){
+    __attribute__ ((unused)) const signed long int *___retval_fII9__PCl_1;
+}
+signed int __fO1__Fi_i__1(signed int __i__i_1){
+    __attribute__ ((unused)) signed int ___retval_fO1__i_1;
+}
+signed int __fO2__Fi_i__1(signed int __i__i_1){
+    __attribute__ ((unused)) signed int ___retval_fO2__i_1;
+}
+const signed int __fO3__FCi_i__1(signed int __i__i_1){
+    __attribute__ ((unused)) const signed int ___retval_fO3__Ci_1;
+}
+extern signed int __fO4__Fi_i__1(signed int __i__i_1){
+    __attribute__ ((unused)) signed int ___retval_fO4__i_1;
+}
+extern const signed int __fO5__FCi_i__1(signed int __i__i_1){
+    __attribute__ ((unused)) const signed int ___retval_fO5__Ci_1;
+}
+signed int __f__Fi___1(void);
+signed int __f__Fi_i__1(signed int __anonymous_object6);
+signed int __f__Fi___1(void){
+    __attribute__ ((unused)) signed int ___retval_f__i_1;
+}
+signed int __f__Fi_i__1(signed int __anonymous_object7){
+    __attribute__ ((unused)) signed int ___retval_f__i_1;
+}
+signed int __f__Fi___1(void);
+struct _tuple2_ {
+};
+static inline void _layoutof__tuple2_(unsigned long int *_sizeof__tuple2_, unsigned long int *_alignof__tuple2_, unsigned long int *_offsetof__tuple2_, unsigned long int _sizeof_16ttuple_param_2_0, unsigned long int _alignof_16ttuple_param_2_0, unsigned long int _sizeof_16ttuple_param_2_1, unsigned long int _alignof_16ttuple_param_2_1){
+    ((void)((*_sizeof__tuple2_)=0));
+    ((void)((*_alignof__tuple2_)=1));
+    ((void)(_offsetof__tuple2_[0]=(*_sizeof__tuple2_)));
+    ((void)((*_sizeof__tuple2_)+=_sizeof_16ttuple_param_2_0));
+    if ( ((*_alignof__tuple2_)<_alignof_16ttuple_param_2_0) ) ((void)((*_alignof__tuple2_)=_alignof_16ttuple_param_2_0));
+
+    if ( ((*_sizeof__tuple2_)&(_alignof_16ttuple_param_2_1-1)) ) ((void)((*_sizeof__tuple2_)+=(_alignof_16ttuple_param_2_1-((*_sizeof__tuple2_)&(_alignof_16ttuple_param_2_1-1)))));
+
+    ((void)(_offsetof__tuple2_[1]=(*_sizeof__tuple2_)));
+    ((void)((*_sizeof__tuple2_)+=_sizeof_16ttuple_param_2_1));
+    if ( ((*_alignof__tuple2_)<_alignof_16ttuple_param_2_1) ) ((void)((*_alignof__tuple2_)=_alignof_16ttuple_param_2_1));
+
+    if ( ((*_sizeof__tuple2_)&((*_alignof__tuple2_)-1)) ) ((void)((*_sizeof__tuple2_)+=((*_alignof__tuple2_)-((*_sizeof__tuple2_)&((*_alignof__tuple2_)-1)))));
+
+}
+struct _conc__tuple2_0 {
+    signed int field_0;
+    signed int field_1;
+};
+struct _conc__tuple2_0 __f__FTii____1(void);
+struct _conc__tuple2_0 __f__FTii__ii__1(signed int __anonymous_object8, signed int __x__i_1);
+struct _conc__tuple2_0 __f__FTii____1(void){
+    __attribute__ ((unused)) struct _conc__tuple2_0 ___retval_f__Tii__1 = {  };
+}
+struct _conc__tuple2_0 __f__FTii__ii__1(signed int __anonymous_object9, signed int __x__i_1){
+    __attribute__ ((unused)) struct _conc__tuple2_0 ___retval_f__Tii__1 = {  };
+}
+struct _tuple3_ {
+};
+static inline void _layoutof__tuple3_(unsigned long int *_sizeof__tuple3_, unsigned long int *_alignof__tuple3_, unsigned long int *_offsetof__tuple3_, unsigned long int _sizeof_16ttuple_param_3_0, unsigned long int _alignof_16ttuple_param_3_0, unsigned long int _sizeof_16ttuple_param_3_1, unsigned long int _alignof_16ttuple_param_3_1, unsigned long int _sizeof_16ttuple_param_3_2, unsigned long int _alignof_16ttuple_param_3_2){
+    ((void)((*_sizeof__tuple3_)=0));
+    ((void)((*_alignof__tuple3_)=1));
+    ((void)(_offsetof__tuple3_[0]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_16ttuple_param_3_0));
+    if ( ((*_alignof__tuple3_)<_alignof_16ttuple_param_3_0) ) ((void)((*_alignof__tuple3_)=_alignof_16ttuple_param_3_0));
+
+    if ( ((*_sizeof__tuple3_)&(_alignof_16ttuple_param_3_1-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_16ttuple_param_3_1-((*_sizeof__tuple3_)&(_alignof_16ttuple_param_3_1-1)))));
+
+    ((void)(_offsetof__tuple3_[1]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_16ttuple_param_3_1));
+    if ( ((*_alignof__tuple3_)<_alignof_16ttuple_param_3_1) ) ((void)((*_alignof__tuple3_)=_alignof_16ttuple_param_3_1));
+
+    if ( ((*_sizeof__tuple3_)&(_alignof_16ttuple_param_3_2-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_16ttuple_param_3_2-((*_sizeof__tuple3_)&(_alignof_16ttuple_param_3_2-1)))));
+
+    ((void)(_offsetof__tuple3_[2]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_16ttuple_param_3_2));
+    if ( ((*_alignof__tuple3_)<_alignof_16ttuple_param_3_2) ) ((void)((*_alignof__tuple3_)=_alignof_16ttuple_param_3_2));
+
+    if ( ((*_sizeof__tuple3_)&((*_alignof__tuple3_)-1)) ) ((void)((*_sizeof__tuple3_)+=((*_alignof__tuple3_)-((*_sizeof__tuple3_)&((*_alignof__tuple3_)-1)))));
+
+}
+struct _conc__tuple3_1 {
+    signed int field_0;
+    signed int field_1;
+    signed int field_2;
+};
+struct _conc__tuple3_1 __f__FTiii____1(void);
+struct _conc__tuple3_1 __f__FTiii__iii__1(signed int __anonymous_object10, signed int __x__i_1, signed int __anonymous_object11);
+struct _conc__tuple3_1 __f__FTiii____1(void){
+    __attribute__ ((unused)) struct _conc__tuple3_1 ___retval_f__Tiii__1 = {  };
+}
+struct _conc__tuple3_1 __f__FTiii__iii__1(signed int __anonymous_object12, signed int __x__i_1, signed int __anonymous_object13){
+    __attribute__ ((unused)) struct _conc__tuple3_1 ___retval_f__Tiii__1 = {  };
+}
+struct _conc__tuple3_2 {
+    signed int field_0;
+    signed int field_1;
+    signed int *field_2;
+};
+struct _conc__tuple3_2 __f__FTiiPi____1(void);
+struct _conc__tuple3_2 __f__FTiiPi__iiPi__1(signed int __anonymous_object14, signed int __x__i_1, signed int *__y__Pi_1);
+struct _conc__tuple3_2 __f__FTiiPi____1(void){
+    __attribute__ ((unused)) struct _conc__tuple3_2 ___retval_f__TiiPi__1 = {  };
+}
+struct _conc__tuple3_2 __f__FTiiPi__iiPi__1(signed int __anonymous_object15, signed int __x__i_1, signed int *__y__Pi_1){
+    __attribute__ ((unused)) struct _conc__tuple3_2 ___retval_f__TiiPi__1 = {  };
+}
+signed int __f11__Fi_i__1(signed int __anonymous_object16);
+signed int __f12__Fi___1(void);
+const double __bar1__FCd___1();
+const double __bar2__FCd_i__1(signed int __anonymous_object17);
+const double __bar3__FCd_d__1(double __anonymous_object18);
+const double __foo__FCd___1(void);
+const double __foo__FCd_i__1(signed int __anonymous_object19);
+const double __foo__FCd_d__1(double __anonymous_object20){
+    __attribute__ ((unused)) const double ___retval_foo__Cd_1;
+    ((void)((*((double *)(&___retval_foo__Cd_1)))=3.0) /* ?{} */);
+    return ___retval_foo__Cd_1;
+}
+struct S {
+    signed int __i__i_1;
+};
+static inline void ___constructor__F_R2sS_autogen___1(struct S *___dst__R2sS_1);
+static inline void ___constructor__F_R2sS2sS_autogen___1(struct S *___dst__R2sS_1, struct S ___src__2sS_1);
+static inline void ___destructor__F_R2sS_autogen___1(struct S *___dst__R2sS_1);
+static inline struct S ___operator_assign__F2sS_R2sS2sS_autogen___1(struct S *___dst__R2sS_1, struct S ___src__2sS_1);
+static inline void ___constructor__F_R2sSi_autogen___1(struct S *___dst__R2sS_1, signed int __i__i_1);
+static inline void ___constructor__F_R2sS_autogen___1(struct S *___dst__R2sS_1){
+    ((void)((*___dst__R2sS_1).__i__i_1) /* ?{} */);
+}
+static inline void ___constructor__F_R2sS2sS_autogen___1(struct S *___dst__R2sS_1, struct S ___src__2sS_1){
+    ((void)((*___dst__R2sS_1).__i__i_1=___src__2sS_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_R2sS_autogen___1(struct S *___dst__R2sS_1){
+    ((void)((*___dst__R2sS_1).__i__i_1) /* ^?{} */);
+}
+static inline struct S ___operator_assign__F2sS_R2sS2sS_autogen___1(struct S *___dst__R2sS_1, struct S ___src__2sS_1){
+    struct S ___ret__2sS_1;
+    ((void)((*___dst__R2sS_1).__i__i_1=___src__2sS_1.__i__i_1));
+    ((void)___constructor__F_R2sS2sS_autogen___1((&___ret__2sS_1), (*___dst__R2sS_1)));
+    return ___ret__2sS_1;
+}
+static inline void ___constructor__F_R2sSi_autogen___1(struct S *___dst__R2sS_1, signed int __i__i_1){
+    ((void)((*___dst__R2sS_1).__i__i_1=__i__i_1) /* ?{} */);
+}
+struct S __rtn__F2sS_i__1(signed int __anonymous_object21){
+    __attribute__ ((unused)) struct S ___retval_rtn__2sS_1;
+}
+signed int __f__Fi_PFi_ii_PFi_i___1(signed int (*__anonymous_object22)(signed int __anonymous_object23, signed int __p__i_1), signed int (*__anonymous_object24)(signed int __anonymous_object25)){
+    __attribute__ ((unused)) signed int ___retval_f__i_1;
+    signed int (*(*__pc__PA0A0PA0A0i_2)[][((unsigned long int )10)])[][((unsigned long int )3)];
+    signed int (*(*__p__PA0A0PA0A0i_2)[][((unsigned long int )10)])[][((unsigned long int )3)];
+    signed int (*(*__p__PA0PFi_i__2)[])(signed int __anonymous_object26);
+}
+static const signed int *__f1__FPCi___1(){
+    __attribute__ ((unused)) const signed int *___retval_f1__PCi_1;
+}
+static const signed int __f2__FCi___1(void){
+    __attribute__ ((unused)) const signed int ___retval_f2__Ci_1;
+}
+static inline signed int *const __f3__FCPi___1(void){
+    __attribute__ ((unused)) signed int *const ___retval_f3__CPi_1;
+}
+struct _conc__tuple2_3 {
+    signed int *field_0;
+    signed int field_1;
+};
+static inline const struct _conc__tuple2_3 __f4__FCTPii____1(void){
+    __attribute__ ((unused)) const struct _conc__tuple2_3 ___retval_f4__CTPii__1;
+}
+static const struct _conc__tuple2_3 __f5__FCTPiCi____1(void){
+    __attribute__ ((unused)) const struct _conc__tuple2_3 ___retval_f5__CTPiCi__1;
+}
+signed int __f__Fi_PFi__PFPi__PFPPi__PFPCPi__PFCPCPi__PiPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPi__1(signed int (*__anonymous_object27)(), signed int *(*__anonymous_object28)(), signed int **(*__anonymous_object29)(), signed int *const *(*__anonymous_object30)(), signed int *const *const (*__anonymous_object31)(), signed int *__anonymous_object32, signed int __anonymous_object33[((unsigned long int )10)], signed int **__anonymous_object34, signed int *__anonymous_object35[((unsigned long int )10)], signed int ***__anonymous_object36, signed int **__anonymous_object37[((unsigned long int )10)], signed int *const **__anonymous_object38, signed int *const *__anonymous_object39[((unsigned long int )10)], signed int *const *const *__anonymous_object40, signed int *const *const __anonymous_object41[((unsigned long int )10)]);
+signed int __f__Fi_PFi__PFPi__PFPPi__PFPCPi__PFCPCPi__PiPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPi__1(signed int (*__anonymous_object42)(), signed int *(*__anonymous_object43)(), signed int **(*__anonymous_object44)(), signed int *const *(*__anonymous_object45)(), signed int *const *const (*__anonymous_object46)(), signed int *__anonymous_object47, signed int __anonymous_object48[((unsigned long int )10)], signed int **__anonymous_object49, signed int *__anonymous_object50[((unsigned long int )10)], signed int ***__anonymous_object51, signed int **__anonymous_object52[((unsigned long int )10)], signed int *const **__anonymous_object53, signed int *const *__anonymous_object54[((unsigned long int )10)], signed int *const *const *__anonymous_object55, signed int *const *const __anonymous_object56[((unsigned long int )10)]){
+    __attribute__ ((unused)) signed int ___retval_f__i_1;
+}
+signed int __f__Fi_Pii__1(signed int *__f__Pi_1, signed int __t__i_1){
+    __attribute__ ((unused)) signed int ___retval_f__i_1;
+    signed int __T__i_2;
+}
Index: src/tests/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision 1f37045134019dcc85ce9bbfe573c87275cfb714)
+++ src/tests/Makefile.am	(revision 481115fc1ffbb26c8743033726f427f34f1a1693)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 09:08:15 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Tue Oct 10 14:04:40 2017
-## Update Count     : 47
+## Last Modified On : Mon Nov 27 21:34:33 2017
+## Update Count     : 48
 ###############################################################################
 
@@ -118,4 +118,7 @@
 	${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
 
+functions: functions.c @CFA_BINDIR@/@CFA_NAME@
+	${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
+
 KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
Index: src/tests/Makefile.in
===================================================================
--- src/tests/Makefile.in	(revision 1f37045134019dcc85ce9bbfe573c87275cfb714)
+++ src/tests/Makefile.in	(revision 481115fc1ffbb26c8743033726f427f34f1a1693)
@@ -871,4 +871,7 @@
 	${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
 
+functions: functions.c @CFA_BINDIR@/@CFA_NAME@
+	${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
+
 KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@
 	${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
Index: src/tests/functions.c
===================================================================
--- src/tests/functions.c	(revision 1f37045134019dcc85ce9bbfe573c87275cfb714)
+++ src/tests/functions.c	(revision 481115fc1ffbb26c8743033726f427f34f1a1693)
@@ -10,6 +10,6 @@
 // Created On       : Wed Aug 17 08:39:58 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 17 08:40:52 2016
-// Update Count     : 1
+// Last Modified On : Mon Nov 27 18:08:54 2017
+// Update Count     : 11
 // 
 
@@ -66,42 +66,50 @@
 // Cforall extensions
 
-[] f( );
+// [] f( );
 [int] f( );
-[] f(int);
+// [] f(int);
 [int] f(int);
-[] f( ) {}
+// [] f( ) {}
 [int] f( ) {}
-[] f(int) {}
+// [] f(int) {}
 [int] f(int) {}
 
 [int x] f( );
-[] f(int x);
-[int x] f(int x);
-[int x] f( ) {}
-[] f(int x) {}
-[int x] f(int x) {}
+// [] f(int x);
+//[int x] f(int x);
+//[int x] f( ) {}
+// [] f(int x) {}
+//[int x] f(int x) {}
 
 [int, int x] f( );
-[] f(int, int x);
+// [] f(int, int x);
 [int, int x] f(int, int x);
 [int, int x] f( ) {}
-[] f(int, int x) {}
+// [] f(int, int x) {}
 [int, int x] f(int, int x) {}
 
 [int, int x, int] f( );
-[] f(int, int x, int);
+// [] f(int, int x, int);
 [int, int x, int] f(int, int x, int);
 [int, int x, int] f( ) {}
-[] f(int, int x, int) {}
+// [] f(int, int x, int) {}
 [int, int x, int] f(int, int x, int) {}
 
 [int, int x, * int y] f( );
-[] f(int, int x, * int y);
+// [] f(int, int x, * int y);
 [int, int x, * int y] f(int, int x, * int y);
 [int, int x, * int y] f( ) {}
-[] f(int, int x, * int y) {}
+// [] f(int, int x, * int y) {}
 [int, int x, * int y] f(int, int x, * int y) {}
 
-[ int ] f11( int ), f12;  // => int f11( int ), f12( int );
+// function prototypes
+
+[ int ] f11( int ), f12();  // => int f11( int ), f12( void );
+
+const double bar1(), bar2( int ), bar3( double );		// C version
+[const double] foo(), foo( int ), foo( double ) { return 3.0; } // CFA version
+struct S { int i; };
+[S] rtn( int ) {}
+
 
 [int] f(
@@ -109,5 +117,5 @@
 	[int](int)
 	) {
-	int (*(*p)[][10])[][3];
+	int (*(*pc)[][10])[][3];
 	* [][10] * [][3] int p;
 	* [] * [int](int) p;
