Index: src/tests/.expect/32/literals.txt
===================================================================
--- src/tests/.expect/32/literals.txt	(revision ded5f0704499fef810d6055f5232685823fd56a8)
+++ src/tests/.expect/32/literals.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -150,4 +150,5 @@
 
     }
+
     {
         signed int _index1 = ((signed int )0);
@@ -157,4 +158,5 @@
 
     }
+
 }
 static inline void ___constructor__F_R9sofstream9sofstream_autogen___1(struct ofstream *___dst__R9sofstream_1, struct ofstream ___src__9sofstream_1){
@@ -171,4 +173,5 @@
 
     }
+
     {
         signed int _index3 = ((signed int )0);
@@ -178,4 +181,5 @@
 
     }
+
 }
 static inline void ___destructor__F_R9sofstream_autogen___1(struct ofstream *___dst__R9sofstream_1){
@@ -187,4 +191,5 @@
 
     }
+
     {
         signed int _index5 = ((signed int )(((signed int )__sepSize__C13e__anonymous0_1)-1));
@@ -194,4 +199,5 @@
 
     }
+
     ((void)((*___dst__R9sofstream_1).__sepCur__PCc_1) /* ^?{} */);
     ((void)((*___dst__R9sofstream_1).__sawNL__b_1) /* ^?{} */);
@@ -239,4 +245,5 @@
 
     }
+
     {
         signed int _index9 = ((signed int )0);
@@ -246,4 +253,5 @@
 
     }
+
 }
 static inline void ___constructor__F_R9sofstreamPvb_autogen___1(struct ofstream *___dst__R9sofstream_1, void *__file__Pv_1, _Bool __sepDefault__b_1){
@@ -260,4 +268,5 @@
 
     }
+
     {
         signed int _index11 = ((signed int )0);
@@ -267,4 +276,5 @@
 
     }
+
 }
 static inline void ___constructor__F_R9sofstreamPvbb_autogen___1(struct ofstream *___dst__R9sofstream_1, void *__file__Pv_1, _Bool __sepDefault__b_1, _Bool __sepOnOff__b_1){
@@ -281,4 +291,5 @@
 
     }
+
     {
         signed int _index13 = ((signed int )0);
@@ -288,4 +299,5 @@
 
     }
+
 }
 static inline void ___constructor__F_R9sofstreamPvbbb_autogen___1(struct ofstream *___dst__R9sofstream_1, void *__file__Pv_1, _Bool __sepDefault__b_1, _Bool __sepOnOff__b_1, _Bool __sawNL__b_1){
@@ -302,4 +314,5 @@
 
     }
+
     {
         signed int _index15 = ((signed int )0);
@@ -309,4 +322,5 @@
 
     }
+
 }
 static inline void ___constructor__F_R9sofstreamPvbbbPCc_autogen___1(struct ofstream *___dst__R9sofstream_1, void *__file__Pv_1, _Bool __sepDefault__b_1, _Bool __sepOnOff__b_1, _Bool __sawNL__b_1, const char *__sepCur__PCc_1){
@@ -323,4 +337,5 @@
 
     }
+
     {
         signed int _index17 = ((signed int )0);
@@ -330,4 +345,5 @@
 
     }
+
 }
 static inline void ___constructor__F_R9sofstreamPvbbbPCcA0c_autogen___1(struct ofstream *___dst__R9sofstream_1, void *__file__Pv_1, _Bool __sepDefault__b_1, _Bool __sepOnOff__b_1, _Bool __sawNL__b_1, const char *__sepCur__PCc_1, char __separator__A0c_1[((unsigned int )__sepSize__C13e__anonymous0_1)]){
@@ -344,4 +360,5 @@
 
     }
+
     {
         signed int _index19 = ((signed int )0);
@@ -351,4 +368,5 @@
 
     }
+
 }
 static inline void ___constructor__F_R9sofstreamPvbbbPCcA0cA0c_autogen___1(struct ofstream *___dst__R9sofstream_1, void *__file__Pv_1, _Bool __sepDefault__b_1, _Bool __sepOnOff__b_1, _Bool __sawNL__b_1, const char *__sepCur__PCc_1, char __separator__A0c_1[((unsigned int )__sepSize__C13e__anonymous0_1)], char __tupleSeparator__A0c_1[((unsigned int )__sepSize__C13e__anonymous0_1)]){
@@ -365,4 +383,5 @@
 
     }
+
     {
         signed int _index21 = ((signed int )0);
@@ -372,4 +391,5 @@
 
     }
+
 }
 _Bool __sepPrt__Fb_P9sofstream__1(struct ofstream *__anonymous_object1294);
@@ -708,10 +728,10 @@
     ((void)0123456789.e-09L);
     ((void)0123456789.e-09DL);
-    ((void)(-0123456789.e-09));
-    ((void)(-0123456789.e-09f));
-    ((void)(-0123456789.e-09l));
-    ((void)(-0123456789.e-09F));
-    ((void)(-0123456789.e-09L));
-    ((void)(-0123456789.e-09DL));
+    ((void)(+0123456789.e-09));
+    ((void)(+0123456789.e-09f));
+    ((void)(+0123456789.e-09l));
+    ((void)(+0123456789.e-09F));
+    ((void)(+0123456789.e-09L));
+    ((void)(+0123456789.e-09DL));
     ((void)(-0123456789.e-09));
     ((void)(-0123456789.e-09f));
@@ -852,10 +872,10 @@
     ((void)0123456789.0123456789E-09L);
     ((void)0123456789.0123456789E-09DL);
-    ((void)(-0123456789.0123456789E-09));
-    ((void)(-0123456789.0123456789E-09f));
-    ((void)(-0123456789.0123456789E-09l));
-    ((void)(-0123456789.0123456789E-09F));
-    ((void)(-0123456789.0123456789E-09L));
-    ((void)(-0123456789.0123456789E-09DL));
+    ((void)(+0123456789.0123456789E-09));
+    ((void)(+0123456789.0123456789E-09f));
+    ((void)(+0123456789.0123456789E-09l));
+    ((void)(+0123456789.0123456789E-09F));
+    ((void)(+0123456789.0123456789E-09L));
+    ((void)(+0123456789.0123456789E-09DL));
     ((void)(-0123456789.0123456789E-09));
     ((void)(-0123456789.0123456789E-09f));
@@ -899,9 +919,9 @@
     ((void)0x0123456789.p-09F);
     ((void)0x0123456789.p-09L);
-    ((void)(-0x0123456789.p-09));
-    ((void)(-0x0123456789.p-09f));
-    ((void)(-0x0123456789.p-09l));
-    ((void)(-0x0123456789.p-09F));
-    ((void)(-0x0123456789.p-09L));
+    ((void)(+0x0123456789.p-09));
+    ((void)(+0x0123456789.p-09f));
+    ((void)(+0x0123456789.p-09l));
+    ((void)(+0x0123456789.p-09F));
+    ((void)(+0x0123456789.p-09L));
     ((void)(-0x0123456789.p-09));
     ((void)(-0x0123456789.p-09f));
@@ -944,9 +964,9 @@
     ((void)0x.0123456789P-09F);
     ((void)0x.0123456789P-09L);
-    ((void)(-0x.0123456789P-09));
-    ((void)(-0x.0123456789P-09f));
-    ((void)(-0x.0123456789P-09l));
-    ((void)(-0x.0123456789P-09F));
-    ((void)(-0x.0123456789P-09L));
+    ((void)(+0x.0123456789P-09));
+    ((void)(+0x.0123456789P-09f));
+    ((void)(+0x.0123456789P-09l));
+    ((void)(+0x.0123456789P-09F));
+    ((void)(+0x.0123456789P-09L));
     ((void)(-0x.0123456789P-09));
     ((void)(-0x.0123456789P-09f));
@@ -989,4 +1009,9 @@
     ((void)0X0123456789.0123456789P-09F);
     ((void)0X0123456789.0123456789P-09L);
+    ((void)(+0X0123456789.0123456789P-09));
+    ((void)(+0X0123456789.0123456789P-09f));
+    ((void)(+0X0123456789.0123456789P-09l));
+    ((void)(+0X0123456789.0123456789P-09F));
+    ((void)(+0X0123456789.0123456789P-09L));
     ((void)(-0X0123456789.0123456789P-09));
     ((void)(-0X0123456789.0123456789P-09f));
@@ -994,9 +1019,236 @@
     ((void)(-0X0123456789.0123456789P-09F));
     ((void)(-0X0123456789.0123456789P-09L));
-    ((void)(-0X0123456789.0123456789P-09));
-    ((void)(-0X0123456789.0123456789P-09f));
-    ((void)(-0X0123456789.0123456789P-09l));
-    ((void)(-0X0123456789.0123456789P-09F));
-    ((void)(-0X0123456789.0123456789P-09L));
+    ((void)((signed char )01234567));
+    ((void)((signed short int )01234567));
+    ((void)((signed int )01234567));
+    ((void)((signed long long int )01234567));
+    ((void)((__int128 )01234567));
+    ((void)((unsigned char )01234567u));
+    ((void)((signed short int )01234567u));
+    ((void)((unsigned int )01234567u));
+    ((void)((signed long long int )01234567u));
+    ((void)((__int128 )01234567u));
+    ((void)(+((signed int )((signed char )01234567))));
+    ((void)(+((signed int )((signed short int )01234567))));
+    ((void)(+((signed int )01234567)));
+    ((void)(+((signed long long int )01234567)));
+    ((void)(+((float )((__int128 )01234567))));
+    ((void)(+((signed int )((unsigned char )01234567u))));
+    ((void)(+((signed int )((signed short int )01234567u))));
+    ((void)(+((unsigned int )01234567u)));
+    ((void)(+((signed long long int )01234567u)));
+    ((void)(+((float )((__int128 )01234567u))));
+    ((void)(-((signed int )((signed char )01234567))));
+    ((void)(-((signed int )((signed short int )01234567))));
+    ((void)(-((signed int )01234567)));
+    ((void)(-((signed long long int )01234567)));
+    ((void)(-((float )((__int128 )01234567))));
+    ((void)(-((signed int )((unsigned char )01234567u))));
+    ((void)(-((signed int )((signed short int )01234567u))));
+    ((void)(-((unsigned int )01234567u)));
+    ((void)(-((signed long long int )01234567u)));
+    ((void)(-((float )((__int128 )01234567u))));
+    ((void)((signed char )1234567890));
+    ((void)((signed short int )1234567890));
+    ((void)((signed int )1234567890));
+    ((void)((signed long long int )1234567890));
+    ((void)((__int128 )1234567890));
+    ((void)((signed char )1234567890U));
+    ((void)((unsigned short int )1234567890U));
+    ((void)((signed int )1234567890U));
+    ((void)((unsigned long long int )1234567890u));
+    ((void)((unsigned __int128 )1234567890u));
+    ((void)(+((signed int )((signed char )1234567890))));
+    ((void)(+((signed int )((signed short int )1234567890))));
+    ((void)(+((signed int )1234567890)));
+    ((void)(+((signed long long int )1234567890)));
+    ((void)(+((float )((__int128 )1234567890))));
+    ((void)(+((signed int )((signed char )1234567890U))));
+    ((void)(+((signed int )((unsigned short int )1234567890U))));
+    ((void)(+((signed int )1234567890U)));
+    ((void)(+((unsigned long long int )1234567890u)));
+    ((void)(+((float )((unsigned __int128 )1234567890u))));
+    ((void)(-((signed int )((signed char )1234567890))));
+    ((void)(-((signed int )((signed short int )1234567890))));
+    ((void)(-((signed int )1234567890)));
+    ((void)(-((signed long long int )1234567890)));
+    ((void)(-((float )((__int128 )1234567890))));
+    ((void)(-((signed int )((signed char )1234567890U))));
+    ((void)(-((signed int )((unsigned short int )1234567890U))));
+    ((void)(-((signed int )1234567890U)));
+    ((void)(-((unsigned long long int )1234567890u)));
+    ((void)(-((float )((unsigned __int128 )1234567890u))));
+    ((void)((signed char )0x0123456789abcdef));
+    ((void)((signed short int )0x0123456789abcdef));
+    ((void)((signed int )0x0123456789abcdef));
+    ((void)((signed long long int )0x0123456789abcdef));
+    ((void)((signed char )0x0123456789abcdefu));
+    ((void)((unsigned short int )0x0123456789abcdefu));
+    ((void)((signed int )0x0123456789abcdefu));
+    ((void)((unsigned long long int )0x0123456789abcdefu));
+    ((void)(+((signed int )((signed char )0x0123456789abcdef))));
+    ((void)(+((signed int )((signed short int )0x0123456789abcdef))));
+    ((void)(+((signed int )0x0123456789abcdef)));
+    ((void)(+((signed long long int )0x0123456789abcdef)));
+    ((void)(+((signed int )((signed char )0x0123456789abcdefu))));
+    ((void)(+((signed int )((unsigned short int )0x0123456789abcdefu))));
+    ((void)(+((signed int )0x0123456789abcdefu)));
+    ((void)(+((unsigned long long int )0x0123456789abcdefu)));
+    ((void)(-((signed int )((signed char )0x0123456789abcdef))));
+    ((void)(-((signed int )((signed short int )0x0123456789abcdef))));
+    ((void)(-((signed int )0x0123456789abcdef)));
+    ((void)(-((signed long long int )0x0123456789abcdef)));
+    ((void)(-((signed int )((signed char )0x0123456789abcdefu))));
+    ((void)(-((signed int )((unsigned short int )0x0123456789abcdefu))));
+    ((void)(-((signed int )0x0123456789abcdefu)));
+    ((void)(-((unsigned long long int )0x0123456789abcdefu)));
+    ((void)((signed char )0x0123456789ABCDEF));
+    ((void)((signed short int )0x0123456789ABCDEF));
+    ((void)((signed int )0x0123456789ABCDEF));
+    ((void)((signed long long int )0x0123456789ABCDEF));
+    ((void)((signed char )0x0123456789ABCDEFu));
+    ((void)((unsigned short int )0x0123456789ABCDEFu));
+    ((void)((signed int )0x0123456789ABCDEFu));
+    ((void)((unsigned long long int )0x0123456789ABCDEFu));
+    ((void)(+((signed int )((signed char )0x0123456789ABCDEF))));
+    ((void)(+((signed int )((signed short int )0x0123456789ABCDEF))));
+    ((void)(+((signed int )0x0123456789ABCDEF)));
+    ((void)(+((signed long long int )0x0123456789ABCDEF)));
+    ((void)(+((signed int )((signed char )0x0123456789ABCDEFu))));
+    ((void)(+((signed int )((unsigned short int )0x0123456789ABCDEFu))));
+    ((void)(+((signed int )0x0123456789ABCDEFu)));
+    ((void)(+((unsigned long long int )0x0123456789ABCDEFu)));
+    ((void)(-((signed int )((signed char )0x0123456789ABCDEF))));
+    ((void)(-((signed int )((signed short int )0x0123456789ABCDEF))));
+    ((void)(-((signed int )0x0123456789ABCDEF)));
+    ((void)(-((signed long long int )0x0123456789ABCDEF)));
+    ((void)(-((signed int )((signed char )0x0123456789ABCDEFu))));
+    ((void)(-((signed int )((unsigned short int )0x0123456789ABCDEFu))));
+    ((void)(-((signed int )0x0123456789ABCDEFu)));
+    ((void)(-((unsigned long long int )0x0123456789ABCDEFu)));
+    ((void)((signed char )0X0123456789abcdef));
+    ((void)((signed short int )0X0123456789abcdef));
+    ((void)((signed int )0X0123456789abcdef));
+    ((void)((signed long long int )0X0123456789abcdef));
+    ((void)((signed char )0X0123456789abcdefu));
+    ((void)((unsigned short int )0X0123456789abcdefu));
+    ((void)((signed int )0X0123456789abcdefu));
+    ((void)((unsigned long long int )0X0123456789abcdefu));
+    ((void)(+((signed int )((signed char )0X0123456789abcdef))));
+    ((void)(+((signed int )((signed short int )0X0123456789abcdef))));
+    ((void)(+((signed int )0X0123456789abcdef)));
+    ((void)(+((signed long long int )0X0123456789abcdef)));
+    ((void)(+((signed int )((signed char )0X0123456789abcdefu))));
+    ((void)(+((signed int )((unsigned short int )0X0123456789abcdefu))));
+    ((void)(+((signed int )0X0123456789abcdefu)));
+    ((void)(+((unsigned long long int )0X0123456789abcdefu)));
+    ((void)(-((signed int )((signed char )0X0123456789abcdef))));
+    ((void)(-((signed int )((signed short int )0X0123456789abcdef))));
+    ((void)(-((signed int )0X0123456789abcdef)));
+    ((void)(-((signed long long int )0X0123456789abcdef)));
+    ((void)(-((signed int )((signed char )0X0123456789abcdefu))));
+    ((void)(-((signed int )((unsigned short int )0X0123456789abcdefu))));
+    ((void)(-((signed int )0X0123456789abcdefu)));
+    ((void)(-((unsigned long long int )0X0123456789abcdefu)));
+    ((void)((signed char )0X0123456789ABCDEF));
+    ((void)((signed short int )0X0123456789ABCDEF));
+    ((void)((signed int )0X0123456789ABCDEF));
+    ((void)((signed long long int )0X0123456789ABCDEF));
+    ((void)((signed char )0X0123456789ABCDEFu));
+    ((void)((unsigned short int )0X0123456789ABCDEFu));
+    ((void)((signed int )0X0123456789ABCDEFu));
+    ((void)((unsigned long long int )0X0123456789ABCDEFu));
+    ((void)(+((signed int )((signed char )0X0123456789ABCDEF))));
+    ((void)(+((signed int )((signed short int )0X0123456789ABCDEF))));
+    ((void)(+((signed int )0X0123456789ABCDEF)));
+    ((void)(+((signed long long int )0X0123456789ABCDEF)));
+    ((void)(+((signed int )((signed char )0X0123456789ABCDEFu))));
+    ((void)(+((signed int )((unsigned short int )0X0123456789ABCDEFu))));
+    ((void)(+((signed int )0X0123456789ABCDEFu)));
+    ((void)(+((unsigned long long int )0X0123456789ABCDEFu)));
+    ((void)(-((signed int )((signed char )0X0123456789ABCDEF))));
+    ((void)(-((signed int )((signed short int )0X0123456789ABCDEF))));
+    ((void)(-((signed int )0X0123456789ABCDEF)));
+    ((void)(-((signed long long int )0X0123456789ABCDEF)));
+    ((void)(-((signed int )((signed char )0X0123456789ABCDEFu))));
+    ((void)(-((signed int )((unsigned short int )0X0123456789ABCDEFu))));
+    ((void)(-((signed int )0X0123456789ABCDEFu)));
+    ((void)(-((unsigned long long int )0X0123456789ABCDEFu)));
+    ((void)((float )0123456789.));
+    ((void)((double )0123456789.));
+    ((void)((long double )0123456789.));
+    ((void)((long double )0123456789.));
+    ((void)(+((float )0123456789.)));
+    ((void)(+((double )0123456789.)));
+    ((void)(+((long double )0123456789.)));
+    ((void)(+((long double )0123456789.)));
+    ((void)(-((float )0123456789.)));
+    ((void)(-((double )0123456789.)));
+    ((void)(-((long double )0123456789.)));
+    ((void)(-((long double )0123456789.)));
+    ((void)((float )0123456789.e09));
+    ((void)((double )0123456789.e09));
+    ((void)((long double )0123456789.e09));
+    ((void)((long double )0123456789.e09));
+    ((void)(+((float )0123456789.e+09)));
+    ((void)(+((double )0123456789.e+09)));
+    ((void)(+((long double )0123456789.e+09)));
+    ((void)(+((long double )0123456789.e+09)));
+    ((void)(-((float )0123456789.e-09)));
+    ((void)(-((double )0123456789.e-09)));
+    ((void)(-((long double )0123456789.e-09)));
+    ((void)(-((long double )0123456789.e-09)));
+    ((void)((float ).0123456789e09));
+    ((void)((double ).0123456789e09));
+    ((void)((long double ).0123456789e09));
+    ((void)((long double ).0123456789e09));
+    ((void)(+((float ).0123456789E+09)));
+    ((void)(+((double ).0123456789E+09)));
+    ((void)(+((long double ).0123456789E+09)));
+    ((void)(+((long double ).0123456789E+09)));
+    ((void)(-((float ).0123456789E-09)));
+    ((void)(-((double ).0123456789E-09)));
+    ((void)(-((long double ).0123456789E-09)));
+    ((void)(-((long double ).0123456789E-09)));
+    ((void)((float )0123456789.0123456789));
+    ((void)((double )0123456789.0123456789));
+    ((void)((long double )0123456789.0123456789));
+    ((void)((long double )0123456789.0123456789));
+    ((void)(+((float )0123456789.0123456789E09)));
+    ((void)(+((double )0123456789.0123456789E09)));
+    ((void)(+((long double )0123456789.0123456789E09)));
+    ((void)(+((long double )0123456789.0123456789E09)));
+    ((void)(-((float )0123456789.0123456789E+09)));
+    ((void)(-((double )0123456789.0123456789E+09)));
+    ((void)(-((long double )0123456789.0123456789E+09)));
+    ((void)(-((long double )0123456789.0123456789E+09)));
+    ((void)((float )0123456789.0123456789E-09));
+    ((void)((double )0123456789.0123456789E-09));
+    ((void)((long double )0123456789.0123456789E-09));
+    ((void)((long double )0123456789.0123456789E-09));
+    ((void)((float )0x0123456789.p09));
+    ((void)((double )0x0123456789.p09));
+    ((void)((long double )0x0123456789.p09));
+    ((void)((long double )0x0123456789.p09));
+    ((void)(+((float )0x0123456789.p09)));
+    ((void)(+((double )0x0123456789.p09)));
+    ((void)(+((long double )0x0123456789.p09)));
+    ((void)(+((long double )0x0123456789.p09)));
+    ((void)(-((float )0x0123456789.p09)));
+    ((void)(-((double )0x0123456789.p09)));
+    ((void)(-((long double )0x0123456789.p09)));
+    ((void)(-((long double )0x0123456789.p09)));
+    ((void)((float )0x0123456789.p+09));
+    ((void)((double )0x0123456789.p+09));
+    ((void)((long double )0x0123456789.p+09));
+    ((void)((long double )0x0123456789.p+09));
+    ((void)(+((float )0x0123456789.p-09)));
+    ((void)(+((double )0x0123456789.p-09)));
+    ((void)(+((long double )0x0123456789.p-09)));
+    ((void)(+((long double )0x0123456789.p-09)));
+    ((void)(-((float )0x.0123456789p09)));
+    ((void)(-((double )0x.0123456789p09)));
+    ((void)(-((long double )0x.0123456789p09)));
+    ((void)(-((long double )0x.0123456789p09)));
     ((void)__f__F_c__1('a'));
     ((void)__f__F_Sc__1(20));
Index: src/tests/.expect/boundedBuffer.txt
===================================================================
--- src/tests/.expect/boundedBuffer.txt	(revision ded5f0704499fef810d6055f5232685823fd56a8)
+++ 	(revision )
@@ -1,1 +1,0 @@
-total:500000
Index: src/tests/.expect/concurrent/boundedBuffer.txt
===================================================================
--- src/tests/.expect/concurrent/boundedBuffer.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
+++ src/tests/.expect/concurrent/boundedBuffer.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -0,0 +1,1 @@
+total:500000
Index: src/tests/.expect/concurrent/fmtLines.txt
===================================================================
--- src/tests/.expect/concurrent/fmtLines.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
+++ src/tests/.expect/concurrent/fmtLines.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -0,0 +1,78 @@
+// /  / Cf  oral  l Ve  rsio  
+n 1.  0.0   Copy  righ  t (C  
+) 20  17 U  nive  rsit  y of  
+ Wat  erlo  o///  / Th  e co  
+nten  ts o  f th  is f  ile   
+are   cove  red   unde  r th  
+e li  cenc  e ag  reem  ent   
+in t  he//   fil  e "L  ICEN  
+CE"   dist  ribu  ted   with  
+ Cfo  rall  .//   // f  mtLi  
+nes.  cc -  - //   //   Auth  
+or                 : P  eter  
+ A.   Buhr  // C  reat  ed O  
+n           : Su  n Se  p 17  
+ 21:  56:1  5 20  17//   Las  
+t Mo  difi  ed B  y :   Pete  
+r A.   Buh  r//   Last   Mod  
+ifie  d On   : M  on S  ep 1  
+8 11  :35:  57 2  017/  / Up  
+date   Cou  nt       :   31/  
+/ #i  nclu  de <  fstr  eam>  
+#inc  lude   <co  rout  ine>  
+coro  utin  e Fo  rmat   {	c  
+har   ch;	  				  				  		//  
+ use  d fo  r co  mmun  icat  
+ion	  int   g, b  ;			  				  
+				  // g  loba  l be  caus  
+e us  ed i  n de  stru  ctor  
+};vo  id ?  {}(   Form  at &  
+ fmt   ) {        resu  me(   
+fmt   );		  				  				  // s  
+tart   cor  outi  ne}v  oid   
+^?{}  ( Fo  rmat   & f  mt )  
+ {      if   ( f  mt.g   !=   
+0 ||   fmt  .b !  = 0   ) so  
+ut |   end  l;}v  oid   main  
+( Fo  rmat   & f  mt )   {	f  
+or (   ;;   ) {	  				  				  
+	//   for   as m  any   char  
+acte  rs		  for   ( fm  t.g   
+= 0;   fmt  .g <   5;   fmt.  
+g +=   1 )   {		  // g  roup  
+s of   5 b  lock  s			  for   
+( fm  t.b   = 0;   fmt  .b <  
+ 4;   fmt.  b +=   1 )   {	/  
+/ bl  ocks   of   4 ch  arac  
+ters  				  for   ( ;;   ) {  
+				  			/  / fo  r ne  wlin  
+e ch  arac  ters  				  	sus  
+pend  ();	  				  if (   fmt  
+.ch   != '  \n'   ) br  eak;  
+		//   ign  ore   newl  ine	  
+			}   //   for	  			s  out   
+| fm  t.ch  ;			  				  // p  
+rint   cha  ract  er		  	} /  
+/ fo  r			  sout   | "    ";  
+				  				  // p  rint   blo  
+ck s  epar  ator  		}   // f  
+or		  sout   | e  ndl;  				  
+				  	//   prin  t gr  oup   
+sepa  rato  r	}   // f  or}   
+// m  ainv  oid   prt(   For  
+mat   & fm  t, c  har   ch )  
+ {      fm  t.ch   = c  h;    
+  re  sume  ( fm  t );  } //  
+ prt  int   main  () {  	For  
+mat   fmt;  	cha  r ch  ;	fo  
+r (   ;; )   {		  sin   | ch  
+;			  				  			/  / re  ad o  
+ne c  hara  cter  	  i  f (   
+eof(   sin   ) )   bre  ak;	  
+				  		//   eof   ?		  prt(  
+ fmt  , ch   );	  } //   for  
+} //   mai  n//   Loca  l Va  
+riab  les:   ///  / ta  b-wi  
+dth:   4 /  ///   comp  ile-  
+comm  and:   "cf  a fm  tLin  
+es.c  " //  // E  nd:   //
Index: src/tests/.expect/concurrent/matrixSum.txt
===================================================================
--- src/tests/.expect/concurrent/matrixSum.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
+++ src/tests/.expect/concurrent/matrixSum.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -0,0 +1,1 @@
+10000
Index: src/tests/.expect/concurrent/pingpong.txt
===================================================================
--- src/tests/.expect/concurrent/pingpong.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
+++ src/tests/.expect/concurrent/pingpong.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -0,0 +1,40 @@
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
+ping
+pong
Index: src/tests/.expect/concurrent/prodcons.txt
===================================================================
--- src/tests/.expect/concurrent/prodcons.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
+++ src/tests/.expect/concurrent/prodcons.txt	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -0,0 +1,33 @@
+47 88
+47 88
+ $1
+ $1
+1
+68 24
+ # 1
+68 24
+ $2
+ $2
+2
+58 18
+ # 2
+58 18
+ $3
+ $3
+3
+55 82
+ # 3
+55 82
+ $4
+ $4
+4
+60 87
+ # 4
+60 87
+ $5
+ $5
+5
+ # 5
+cons stops
+prod stops
+main stops
Index: src/tests/.expect/fmtLines.txt
===================================================================
--- src/tests/.expect/fmtLines.txt	(revision ded5f0704499fef810d6055f5232685823fd56a8)
+++ 	(revision )
@@ -1,78 +1,0 @@
-// /  / Cf  oral  l Ve  rsio  
-n 1.  0.0   Copy  righ  t (C  
-) 20  17 U  nive  rsit  y of  
- Wat  erlo  o///  / Th  e co  
-nten  ts o  f th  is f  ile   
-are   cove  red   unde  r th  
-e li  cenc  e ag  reem  ent   
-in t  he//   fil  e "L  ICEN  
-CE"   dist  ribu  ted   with  
- Cfo  rall  .//   // f  mtLi  
-nes.  cc -  - //   //   Auth  
-or                 : P  eter  
- A.   Buhr  // C  reat  ed O  
-n           : Su  n Se  p 17  
- 21:  56:1  5 20  17//   Las  
-t Mo  difi  ed B  y :   Pete  
-r A.   Buh  r//   Last   Mod  
-ifie  d On   : M  on S  ep 1  
-8 11  :35:  57 2  017/  / Up  
-date   Cou  nt       :   31/  
-/ #i  nclu  de <  fstr  eam>  
-#inc  lude   <co  rout  ine>  
-coro  utin  e Fo  rmat   {	c  
-har   ch;	  				  				  		//  
- use  d fo  r co  mmun  icat  
-ion	  int   g, b  ;			  				  
-				  // g  loba  l be  caus  
-e us  ed i  n de  stru  ctor  
-};vo  id ?  {}(   Form  at &  
- fmt   ) {        resu  me(   
-fmt   );		  				  				  // s  
-tart   cor  outi  ne}v  oid   
-^?{}  ( Fo  rmat   & f  mt )  
- {      if   ( f  mt.g   !=   
-0 ||   fmt  .b !  = 0   ) so  
-ut |   end  l;}v  oid   main  
-( Fo  rmat   & f  mt )   {	f  
-or (   ;;   ) {	  				  				  
-	//   for   as m  any   char  
-acte  rs		  for   ( fm  t.g   
-= 0;   fmt  .g <   5;   fmt.  
-g +=   1 )   {		  // g  roup  
-s of   5 b  lock  s			  for   
-( fm  t.b   = 0;   fmt  .b <  
- 4;   fmt.  b +=   1 )   {	/  
-/ bl  ocks   of   4 ch  arac  
-ters  				  for   ( ;;   ) {  
-				  			/  / fo  r ne  wlin  
-e ch  arac  ters  				  	sus  
-pend  ();	  				  if (   fmt  
-.ch   != '  \n'   ) br  eak;  
-		//   ign  ore   newl  ine	  
-			}   //   for	  			s  out   
-| fm  t.ch  ;			  				  // p  
-rint   cha  ract  er		  	} /  
-/ fo  r			  sout   | "    ";  
-				  				  // p  rint   blo  
-ck s  epar  ator  		}   // f  
-or		  sout   | e  ndl;  				  
-				  	//   prin  t gr  oup   
-sepa  rato  r	}   // f  or}   
-// m  ainv  oid   prt(   For  
-mat   & fm  t, c  har   ch )  
- {      fm  t.ch   = c  h;    
-  re  sume  ( fm  t );  } //  
- prt  int   main  () {  	For  
-mat   fmt;  	cha  r ch  ;	fo  
-r (   ;; )   {		  sin   | ch  
-;			  				  			/  / re  ad o  
-ne c  hara  cter  	  i  f (   
-eof(   sin   ) )   bre  ak;	  
-				  		//   eof   ?		  prt(  
- fmt  , ch   );	  } //   for  
-} //   mai  n//   Loca  l Va  
-riab  les:   ///  / ta  b-wi  
-dth:   4 /  ///   comp  ile-  
-comm  and:   "cf  a fm  tLin  
-es.c  " //  // E  nd:   //
Index: src/tests/.expect/pingpong.txt
===================================================================
--- src/tests/.expect/pingpong.txt	(revision ded5f0704499fef810d6055f5232685823fd56a8)
+++ 	(revision )
@@ -1,40 +1,0 @@
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
-ping
-pong
Index: src/tests/.expect/prodcons.txt
===================================================================
--- src/tests/.expect/prodcons.txt	(revision ded5f0704499fef810d6055f5232685823fd56a8)
+++ 	(revision )
@@ -1,33 +1,0 @@
-47 88
-47 88
- $1
- $1
-1
-68 24
- # 1
-68 24
- $2
- $2
-2
-58 18
- # 2
-58 18
- $3
- $3
-3
-55 82
- # 3
-55 82
- $4
- $4
-4
-60 87
- # 4
-60 87
- $5
- $5
-5
- # 5
-cons stops
-prod stops
-main stops
Index: src/tests/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision ded5f0704499fef810d6055f5232685823fd56a8)
+++ src/tests/Makefile.am	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 09:08:15 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Mon Sep 11 16:17:16 2017
-## Update Count     : 45
+## Last Modified On : Tue Oct 10 14:04:40 2017
+## Update Count     : 47
 ###############################################################################
 
@@ -22,21 +22,25 @@
 concurrent = yes
 quick_test += coroutine thread monitor
-concurrent_test =        \
-	coroutine          \
-	thread             \
-	monitor            \
-	multi-monitor      \
-	preempt            \
-	sched-int-block    \
-	sched-int-disjoint \
-	sched-int-wait     \
-	sched-ext-barge    \
-	sched-ext-dtor     \
-	sched-ext-else     \
-	sched-ext-parse    \
-	sched-ext-recurse  \
-	sched-ext-statment \
+concurrent_test =		\
+	coroutine		\
+	fmtLines		\
+	pingpong		\
+	prodcons		\
+	thread			\
+	matrixSum		\
+	monitor			\
+	multi-monitor		\
+	boundedBuffer		\
+	preempt			\
+	sched-int-block		\
+	sched-int-disjoint	\
+	sched-int-wait		\
+	sched-ext-barge		\
+	sched-ext-dtor		\
+	sched-ext-else		\
+	sched-ext-parse		\
+	sched-ext-recurse	\
+	sched-ext-statment	\
 	sched-ext-when
-
 else
 concurrent=no
Index: src/tests/boundedBuffer.c
===================================================================
--- src/tests/boundedBuffer.c	(revision ded5f0704499fef810d6055f5232685823fd56a8)
+++ src/tests/boundedBuffer.c	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -67,10 +67,4 @@
 }
 
-forall(dtype T | sized(T) | { void ^?{}(T & mutex); })
-void delete( T * th ) {
-    ^(*th){};
-    free( th );
-}
-
 int main() {
     Buffer buffer;
Index: src/tests/fmtLines.c
===================================================================
--- src/tests/fmtLines.c	(revision ded5f0704499fef810d6055f5232685823fd56a8)
+++ src/tests/fmtLines.c	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -10,6 +10,6 @@
 // Created On       : Sun Sep 17 21:56:15 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Sep 18 11:35:57 2017
-// Update Count     : 31
+// Last Modified On : Sun Oct  1 11:57:19 2017
+// Update Count     : 34
 // 
 
@@ -23,9 +23,9 @@
 
 void ?{}( Format & fmt ) {
-    resume( fmt );										// start coroutine
+	resume( fmt );										// prime (start) coroutine
 }
 
 void ^?{}( Format & fmt ) {
-    if ( fmt.g != 0 || fmt.b != 0 ) sout | endl;
+	if ( fmt.g != 0 || fmt.b != 0 ) sout | endl;
 }
 
@@ -47,16 +47,16 @@
 
 void prt( Format & fmt, char ch ) {
-    fmt.ch = ch;
-    resume( fmt );
+	fmt.ch = ch;
+	resume( fmt );
 } // prt
 
 int main() {
-	Format fmt;
+	Format fmt;											// format characters into blocks of 4 and groups of 5 blocks per line
 	char ch;
 
-	for ( ;; ) {
+	Eof: for ( ;; ) {									// read until end of file
 		sin | ch;										// read one character
-	  if ( eof( sin ) ) break;							// eof ?
-		prt( fmt, ch );
+	  if ( eof( sin ) ) break Eof;						// eof ?
+		prt( fmt, ch );									// push character for formatting
 	} // for
 } // main
Index: src/tests/matrixSum.c
===================================================================
--- src/tests/matrixSum.c	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
+++ src/tests/matrixSum.c	(revision c366ec68d73cd23ab1a4b37dd84d4eb9ac2206be)
@@ -0,0 +1,63 @@
+//                               -*- Mode: C -*- 
+// 
+// Cforall Version 1.0.0 Copyright (C) 2017 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// matrixSum.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Oct  9 08:29:28 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Oct  9 08:30:08 2017
+// Update Count     : 1
+// 
+
+#include <fstream>
+#include <kernel>
+#include <thread>
+
+thread Adder {
+    int * row, cols, * subtotal;			// communication
+};
+
+void ?{}( Adder & adder, int row[], int cols, int & subtotal ) {
+    adder.row = row;
+    adder.cols = cols;
+    adder.subtotal = &subtotal;
+}
+
+void main( Adder & adder ) {
+    *adder.subtotal = 0;
+    for ( int c = 0; c < adder.cols; c += 1 ) {
+	*adder.subtotal += adder.row[c];
+    } // for
+}
+
+int main() {
+    const int rows = 10, cols = 1000;
+    int matrix[rows][cols], subtotals[rows], total = 0;
+    processor p;					// extra kernel thread
+
+    for ( int r = 0; r < rows; r += 1 ) {
+	for ( int c = 0; c < cols; c += 1 ) {
+	    matrix[r][c] = 1;
+	} // for
+    } // for
+    Adder * adders[rows];
+    for ( int r = 0; r < rows; r += 1 ) {		// start threads to sum rows
+	adders[r] = &(*malloc()){ matrix[r], cols, subtotals[r] };
+//	adders[r] = new( matrix[r], cols, &subtotals[r] );
+    } // for
+    for ( int r = 0; r < rows; r += 1 ) {		// wait for threads to finish
+	delete( adders[r] );
+	total += subtotals[r];				// total subtotals
+    } // for
+    sout | total | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa matrixSum.c" //
+// End: //
