Index: doc/theses/andrew_beach_MMath/code/fixup-empty-f.cfa
===================================================================
--- doc/theses/andrew_beach_MMath/code/fixup-empty-f.cfa	(revision b1837175c674b641af684feebfc1950002b25fad)
+++ doc/theses/andrew_beach_MMath/code/fixup-empty-f.cfa	(revision 18783b45169d4a33a235b14266f919d65d7b5046)
@@ -4,14 +4,11 @@
 #include <stdlib.hfa>									// strto
 
-int nounwind_fixup(unsigned int frames, void (*raised_rtn)(int &)) {
+void nounwind_fixup(unsigned int frames, void (*raised_rtn)(int &)) {
 	if (frames) {
-		int rtn = nounwind_fixup(frames - 1, raised_rtn);
-		if ( rtn == 42 ) printf( "42" );				// make non-tail recursive
-		return rtn;
-
+		nounwind_fixup(frames - 1, raised_rtn);
+		if ( frames == -1 ) printf( "42" );				// prevent recursion optimizations
 	} else {
 		int fixup = 17;
 		raised_rtn(fixup);
-		return fixup;
 	}
 }
Index: doc/theses/andrew_beach_MMath/code/fixup-empty-r.cfa
===================================================================
--- doc/theses/andrew_beach_MMath/code/fixup-empty-r.cfa	(revision b1837175c674b641af684feebfc1950002b25fad)
+++ doc/theses/andrew_beach_MMath/code/fixup-empty-r.cfa	(revision 18783b45169d4a33a235b14266f919d65d7b5046)
@@ -10,13 +10,11 @@
 vtable(fixup_exception) fixup_vt;
 
-int nounwind_empty(unsigned int frames) {
+void nounwind_empty(unsigned int frames) {
 	if (frames) {
-		int rtn = nounwind_empty(frames - 1);
-		if ( rtn == 42 ) printf( "42" );				// make non-tail recursive
-		return rtn;
+		nounwind_empty(frames - 1);
+		if ( frames == -1 ) printf( "42" );				// prevent recursion optimizations
 	} else {
 		int fixup = 17;
 		throwResume (fixup_exception){&fixup_vt, fixup}; // change bad fixup
-		return fixup;
 	}
 }
Index: doc/theses/andrew_beach_MMath/code/fixup-other-f.cfa
===================================================================
--- doc/theses/andrew_beach_MMath/code/fixup-other-f.cfa	(revision b1837175c674b641af684feebfc1950002b25fad)
+++ doc/theses/andrew_beach_MMath/code/fixup-other-f.cfa	(revision 18783b45169d4a33a235b14266f919d65d7b5046)
@@ -14,4 +14,5 @@
 		frames -= 1;
 		nounwind_fixup(42, raised_rtn, not_raised);
+		if ( frames == -1 ) printf( "42" );				// prevent recursion optimizations
 	} else {
 		int fixup = dummy;
Index: doc/theses/andrew_beach_MMath/code/fixup-other-r.cfa
===================================================================
--- doc/theses/andrew_beach_MMath/code/fixup-other-r.cfa	(revision b1837175c674b641af684feebfc1950002b25fad)
+++ doc/theses/andrew_beach_MMath/code/fixup-other-r.cfa	(revision 18783b45169d4a33a235b14266f919d65d7b5046)
@@ -20,4 +20,5 @@
 		try {
 			nounwind_other(42);
+			if ( frames == -1 ) printf( "42" );			// prevent recursion optimizations
 		} catchResume (not_raised_exception * ex) {
 			ex->fixup = frames + 42;					// use local scope => lexical link
Index: doc/theses/andrew_beach_MMath/code/resume-empty.cfa
===================================================================
--- doc/theses/andrew_beach_MMath/code/resume-empty.cfa	(revision b1837175c674b641af684feebfc1950002b25fad)
+++ doc/theses/andrew_beach_MMath/code/resume-empty.cfa	(revision 18783b45169d4a33a235b14266f919d65d7b5046)
@@ -11,4 +11,5 @@
 	if (frames) {
 		nounwind_empty(frames - 1);
+		if ( frames == -1 ) printf( "42" );				// prevent recursion optimizations
 	} else {
 		throwResume (empty_exception){&empty_vt};
