Index: .gitignore
===================================================================
--- .gitignore	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ .gitignore	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -11,6 +11,5 @@
 stamp-h1
 /Makefile
-src/**/Makefile
-tools/**/Makefile
+**/Makefile
 /version
 
@@ -29,16 +28,25 @@
 
 # src executables, for lib and bin
-src/driver/as
-src/driver/cfa
-src/driver/cfa-cpp
-src/driver/cc1
+driver/as
+driver/cfa
+driver/cfa-cpp
+driver/cc1
 
-src/prelude/bootloader.c
-src/prelude/builtins.cf
-src/prelude/extras.cf
-src/prelude/gcc-builtins.cf
-src/prelude/gcc-builtins.c
-src/prelude/prelude.cf
-src/libcfa/libcfa-prelude.c
+libcfa/prelude/bootloader.c
+libcfa/prelude/builtins.cf
+libcfa/prelude/extras.cf
+libcfa/prelude/gcc-builtins.cf
+libcfa/prelude/gcc-builtins.c
+libcfa/prelude/prelude.cf
+libcfa/x64-debug/
+libcfa/x64-nodebug/
+libcfa/x64-nolib/
+libcfa/x86-debug/
+libcfa/x86-nodebug/
+libcfa/x86-nolib/
+libcfa/arm-debug/
+libcfa/arm-nodebug/
+libcfa/arm-nolib/
+
 
 # generated by bison and lex from parser.yy and lex.ll
Index: Jenkins/FullBuild
===================================================================
--- Jenkins/FullBuild	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ Jenkins/FullBuild	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -61,23 +61,23 @@
 		parameters: [						\
 			[$class: 'StringParameterValue', 		\
-			  name: 'pCompiler', 				\
+			  name: 'Compiler', 				\
 			  value: cc],					\
 			[$class: 'StringParameterValue', 		\
-			  name: 'pArchitecture', 			\
+			  name: 'Architecture', 			\
 			  value: arch],					\
 			[$class: 'BooleanParameterValue', 		\
-			  name: 'pRunAllTests', 			\
+			  name: 'RunAllTests', 				\
 			  value: true], 					\
 			[$class: 'BooleanParameterValue', 		\
-			  name: 'pRunBenchmark', 			\
+			  name: 'RunBenchmark', 			\
 			  value: true], 					\
 			[$class: 'BooleanParameterValue', 		\
-			  name: 'pBuildDocumentation', 		\
+			  name: 'BuildDocumentation', 		\
 			  value: true], 					\
 			[$class: 'BooleanParameterValue', 		\
-			  name: 'pPublish', 				\
-			  value: publish], 					\
+			  name: 'Publish', 				\
+			  value: publish], 				\
 			[$class: 'BooleanParameterValue', 		\
-			  name: 'pSilent', 				\
+			  name: 'Silent', 				\
 			  value: true], 					\
 		],								\
Index: Jenkinsfile
===================================================================
--- Jenkinsfile	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ Jenkinsfile	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -6,22 +6,13 @@
 node ('master'){
 
-	boolean bIsSandbox = env.BRANCH_NAME == "jenkins-sandbox"
+	// Globals
+	BuildDir  = pwd tmp: true
+	SrcDir    = pwd tmp: false
+	Settings  = null
+	StageName = ''
+
+	// Local variables
 	def err = null
 	def log_needed = false
-
-	stage_name 		= ''
-
-	compiler 		= null
-	arch_name 		= ''
-	architecture 	= ''
-
-	do_alltests		= false
-	do_benchmark	= false
-	do_doc		= false
-	do_publish		= false
-	do_sendemail	= true
-
-	builddir = pwd tmp: true
-	srcdir   = pwd tmp: false
 
 	currentBuild.result = "SUCCESS"
@@ -33,5 +24,5 @@
 			notify_server(0)
 
-			prepare_build()
+			Settings = prepare_build()
 
 			clean()
@@ -61,16 +52,17 @@
 		err = caughtError
 
+		echo err.toString()
+
 		//An error has occured, the build log is relevent
 		log_needed = true
 
 		//Store the result of the build log
-		currentBuild.result = "${stage_name} FAILURE".trim()
+		currentBuild.result = "${StageName} FAILURE".trim()
 	}
 
 	finally {
 		//Send email with final results if this is not a full build
-		if( do_sendemail ) {
-			echo 'Notifying users of result'
-			email(currentBuild.result, log_needed, bIsSandbox)
+		if( Settings && !Settings.Silent ) {
+			email(log_needed, Settings.IsSandbox)
 		}
 
@@ -85,164 +77,4 @@
 
 //===========================================================================================================
-// Helper classes/variables/routines
-//===========================================================================================================
-//Helper routine to collect information about the git history
-def collect_git_info() {
-
-	checkout scm
-
-	//create the temporary output directory in case it doesn't already exist
-	def out_dir = pwd tmp: true
-	sh "mkdir -p ${out_dir}"
-
-	//parse git logs to find what changed
-	gitRefName = env.BRANCH_NAME
-	sh "git reflog > ${out_dir}/GIT_COMMIT"
-	git_reflog = readFile("${out_dir}/GIT_COMMIT")
-	gitRefOldValue = (git_reflog =~ /moving from (.+) to (.+)/)[0][1]
-	gitRefNewValue = (git_reflog =~ /moving from (.+) to (.+)/)[0][2]
-}
-
-def prepare_build() {
-	properties ([ 													\
-		[$class: 'ParametersDefinitionProperty', 								\
-			parameterDefinitions: [ 									\
-				[$class: 'ChoiceParameterDefinition',						\
-					description: 'Which compiler to use',					\
-					name: 'pCompiler',								\
-					choices: 'gcc-6\ngcc-5\ngcc-4.9\nclang',					\
-					defaultValue: 'gcc-6',								\
-				],												\
-				[$class: 'ChoiceParameterDefinition',						\
-					description: 'The target architecture',					\
-					name: 'pArchitecture',								\
-					choices: 'x64\nx86',								\
-					defaultValue: 'x64',								\
-				],												\
-				[$class: 'BooleanParameterDefinition',  						\
-					description: 'If false, only the quick test suite is ran', 		\
-					name: 'pRunAllTests', 								\
-					defaultValue: false,  								\
-				], 												\
-				[$class: 'BooleanParameterDefinition',  						\
-					description: 'If true, jenkins also runs benchmarks', 		\
-					name: 'pRunBenchmark', 								\
-					defaultValue: true,  								\
-				], 												\
-				[$class: 'BooleanParameterDefinition',  						\
-					description: 'If true, jenkins also builds documentation', 		\
-					name: 'pBuildDocumentation', 							\
-					defaultValue: true,  								\
-				],												\
-				[$class: 'BooleanParameterDefinition',  						\
-					description: 'If true, jenkins also publishes results', 		\
-					name: 'pPublish', 								\
-					defaultValue: false,  								\
-				],												\
-				[$class: 'BooleanParameterDefinition',  						\
-					description: 'If true, jenkins will not send emails', 		\
-					name: 'pSilent', 									\
-					defaultValue: false,  								\
-				],												\
-			],
-		]])
-
-	compiler 		= compiler_from_params( pCompiler )
-	arch_name		= pArchitecture
-	architecture 	= architecture_from_params( arch_name )
-
-	do_alltests		= (pRunAllTests == 'true')
-	do_benchmark	= (pRunBenchmark == 'true')
-	do_doc		= (pBuildDocumentation == 'true')
-	do_publish		= (pPublish == 'true')
-	do_sendemail	= ! (pSilent == 'true')
-
-	collect_git_info()
-
-	def full = do_alltests ? " (Full)" : ""
-	currentBuild.description = "${compiler.cc_name}:${arch_name}${full}"
-
-	echo """Compiler 	      : ${compiler.cc_name} (${compiler.cpp_cc}/${compiler.cfa_cc})
-Architecture            : ${arch_name}
-Arc Flags               : ${architecture}
-Run All Tests           : ${ pRunAllTests.toString() }
-Run Benchmark           : ${ pRunBenchmark.toString() }
-Build Documentation     : ${ pBuildDocumentation.toString() }
-Publish                 : ${ pPublish.toString() }
-Silent                  : ${ pSilent.toString() }
-"""
-}
-
-def build_stage(String name, Closure block ) {
-	stage_name = name
-	stage(name, block)
-}
-
-def notify_server(int wait) {
-	sh """curl --silent --show-error --data "wait=${wait}" -X POST https://cforall.uwaterloo.ca:8082/jenkins/notify > /dev/null || true"""
-	return
-}
-
-def make_doc() {
-	def err = null
-	try {
-		sh 'make clean > /dev/null'
-		sh 'make > /dev/null 2>&1'
-	}
-	catch (Exception caughtError) {
-		err = caughtError //rethrow error later
-		sh 'cat *.log'
-	}
-	finally {
-		if (err) throw err // Must re-throw exception to propagate error
-	}
-}
-
-//Description of a compiler (Must be serializable since pipelines are persistent)
-class CC_Desc implements Serializable {
-	public String cc_name
-	public String cpp_cc
-	public String cfa_cc
-
-	CC_Desc(String cc_name, String cpp_cc, String cfa_cc) {
-		this.cc_name = cc_name
-		this.cpp_cc = cpp_cc
-		this.cfa_cc = cfa_cc
-	}
-}
-
-def compiler_from_params(cc) {
-	switch( cc ) {
-		case 'gcc-6':
-			return new CC_Desc('gcc-6', 'g++-6', 'gcc-6')
-		break
-		case 'gcc-5':
-			return new CC_Desc('gcc-5', 'g++-5', 'gcc-5')
-		break
-		case 'gcc-4.9':
-			return new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9')
-		break
-		case 'clang':
-			return new CC_Desc('clang', 'clang++', 'gcc-6')
-		break
-		default :
-			error "Unhandled compiler : ${cc}"
-	}
-}
-
-def architecture_from_params( arch ) {
-	switch( arch ) {
-		case 'x64':
-			return '--host=x86_64'
-		break
-		case 'x86':
-			return '--host=i386'
-		break
-		default :
-			error "Unhandled architecture : ${arch}"
-	}
-}
-
-//===========================================================================================================
 // Main compilation routines
 //===========================================================================================================
@@ -250,13 +82,7 @@
 	build_stage('Cleanup') {
 		// clean the build by wipping the build directory
-		dir(builddir) {
+		dir(BuildDir) {
 			deleteDir()
 		}
-
-		//Clean all temporary files to make sure no artifacts of the previous build remain
-		sh 'git clean -fdqx'
-
-		//Reset the git repo so no local changes persist
-		sh 'git reset --hard'
 	}
 }
@@ -266,5 +92,9 @@
 	build_stage('Checkout') {
 		//checkout the source code and clean the repo
-		checkout scm
+		final scmVars = checkout scm
+		Settings.GitNewRef = scmVars.GIT_COMMIT
+		Settings.GitOldRef = scmVars.GIT_PREVIOUS_COMMIT
+
+		echo GitLogMessage()
 	}
 }
@@ -273,9 +103,16 @@
 	build_stage('Build') {
 		// Build outside of the src tree to ease cleaning
-		dir (builddir) {
+		dir (BuildDir) {
 			//Configure the conpilation (Output is not relevant)
 			//Use the current directory as the installation target so nothing escapes the sandbox
 			//Also specify the compiler by hand
-			sh "${srcdir}/configure CXX=${compiler.cpp_cc} ${architecture} --with-backend-compiler=${compiler.cfa_cc} --enable-silent-rules --quiet"
+			targets=""
+			if( Settings.RunAllTests ) {
+				targets="--with-target-hosts='host:debug,host:nodebug'"
+			} else {
+				targets="--with-target-hosts='host:debug'"
+			}
+
+			sh "${SrcDir}/configure CXX=${Settings.Compiler.cpp_cc} ${Settings.Architecture.flags} ${targets} --with-backend-compiler=${Settings.Compiler.cfa_cc} --quiet"
 
 			//Compile the project
@@ -288,12 +125,12 @@
 	build_stage('Test') {
 
-		dir (builddir) {
+		dir (BuildDir) {
 			//Run the tests from the tests directory
-			if ( do_alltests ) {
-				sh 'make --no-print-directory -C src/tests all-tests debug=yes'
-				sh 'make --no-print-directory -C src/tests all-tests debug=no '
+			if ( Settings.RunAllTests ) {
+				sh 'make --no-print-directory -C tests all-tests debug=yes'
+				sh 'make --no-print-directory -C tests all-tests debug=no '
 			}
 			else {
-				sh 'make --no-print-directory -C src/tests'
+				sh 'make --no-print-directory -C tests'
 			}
 		}
@@ -304,9 +141,9 @@
 	build_stage('Benchmark') {
 
-		if( !do_benchmark ) return
-
-		dir (builddir) {
+		if( !Settings.RunBenchmark ) return
+
+		dir (BuildDir) {
 			//Append bench results
-			sh "make --no-print-directory -C src/benchmark jenkins githash=${gitRefNewValue} arch=${arch_name} | tee ${srcdir}/bench.json"
+			sh "make --no-print-directory -C benchmark jenkins githash=${Settings.GitNewRef} arch=${Settings.Architecture} | tee ${SrcDir}/bench.json"
 		}
 	}
@@ -316,5 +153,5 @@
 	build_stage('Documentation') {
 
-		if( !do_doc ) return
+		if( !Settings.BuildDocumentation ) return
 
 		dir ('doc/user') {
@@ -331,5 +168,5 @@
 	build_stage('Publish') {
 
-		if( !do_publish ) return
+		if( !Settings.Publish ) return
 
 		//Then publish the results
@@ -341,32 +178,16 @@
 //Routine responsible of sending the email notification once the build is completed
 //===========================================================================================================
-//Standard build email notification
-def email(String status, boolean log, boolean bIsSandbox) {
-	//Since tokenizer doesn't work, figure stuff out from the environnement variables and command line
-	//Configurations for email format
-	def project_name = (env.JOB_NAME =~ /(.+)\/.+/)[0][1].toLowerCase()
-
-	def gitLog = 'Error retrieving git logs'
-	def gitDiff = 'Error retrieving git diff'
-
-	try {
-
-		sh "git rev-list --format=short ${gitRefOldValue}...${gitRefNewValue} > GIT_LOG"
-		gitLog = readFile('GIT_LOG')
-
-		sh "git diff --stat ${gitRefNewValue} ${gitRefOldValue} > GIT_DIFF"
-		gitDiff = readFile('GIT_DIFF')
-	}
-	catch (Exception error) {}
-
-	def email_subject = "[${project_name} git][BUILD# ${env.BUILD_NUMBER} - ${status}] - branch ${env.BRANCH_NAME}"
-	def email_body = """This is an automated email from the Jenkins build machine. It was
-generated because of a git hooks/post-receive script following
-a ref change was pushed to the repository containing
-the project "UNNAMED PROJECT".
-
+def GitLogMessage() {
+	if (!Settings || !Settings.GitOldRef || !Settings.GitNewRef) return "\nERROR retrieveing git information!\n"
+
+	sh "${SrcDir}/tools/PrettyGitLogs.sh ${BuildDir} ${Settings.GitOldRef} ${Settings.GitNewRef}"
+
+	def gitUpdate = readFile("${BuildDir}/GIT_UPDATE")
+	def gitLog    = readFile("${BuildDir}/GIT_LOG")
+	def gitDiff   = readFile("${BuildDir}/GIT_DIFF")
+
+	return """
 The branch ${env.BRANCH_NAME} has been updated.
-   via  ${gitRefOldValue} (commit)
-  from  ${gitRefNewValue} (commit)
+${gitUpdate}
 
 Check console output at ${env.BUILD_URL} to view the results.
@@ -374,5 +195,5 @@
 - Status --------------------------------------------------------------
 
-BUILD# ${env.BUILD_NUMBER} - ${status}
+BUILD# ${env.BUILD_NUMBER} - ${currentBuild.result}
 
 - Log -----------------------------------------------------------------
@@ -382,8 +203,22 @@
 ${gitDiff}
 """
+}
+
+//Standard build email notification
+def email(boolean log, boolean bIsSandbox) {
+	//Since tokenizer doesn't work, figure stuff out from the environnement variables and command line
+	//Configurations for email format
+	echo 'Notifying users of result'
+
+	def project_name = (env.JOB_NAME =~ /(.+)\/.+/)[0][1].toLowerCase()
+	def email_subject = "[${project_name} git][BUILD# ${env.BUILD_NUMBER} - ${currentBuild.result}] - branch ${env.BRANCH_NAME}"
+	def email_body = """This is an automated email from the Jenkins build machine. It was
+generated because of a git hooks/post-receive script following
+a ref change which was pushed to the Cforall repository.
+""" + GitLogMessage()
 
 	def email_to = "cforall@lists.uwaterloo.ca"
 
-	if( !bIsSandbox ) {
+	if( Settings && !Settings.IsSandbox ) {
 		//send email notification
 		emailext body: email_body, subject: email_subject, to: email_to, attachLog: log
@@ -394,2 +229,177 @@
 	}
 }
+
+//===========================================================================================================
+// Helper classes/variables/routines
+//===========================================================================================================
+//Description of a compiler (Must be serializable since pipelines are persistent)
+class CC_Desc implements Serializable {
+	public String cc_name
+	public String cpp_cc
+	public String cfa_cc
+
+	CC_Desc(String cc_name, String cpp_cc, String cfa_cc) {
+		this.cc_name = cc_name
+		this.cpp_cc = cpp_cc
+		this.cfa_cc = cfa_cc
+	}
+}
+
+//Description of an architecture (Must be serializable since pipelines are persistent)
+class Arch_Desc implements Serializable {
+	public String name
+	public String flags
+
+	Arch_Desc(String name, String flags) {
+		this.name  = name
+		this.flags = flags
+	}
+}
+
+class BuildSettings implements Serializable {
+	public final CC_Desc Compiler
+	public final Arch_Desc Architecture
+	public final Boolean RunAllTests
+	public final Boolean RunBenchmark
+	public final Boolean BuildDocumentation
+	public final Boolean Publish
+	public final Boolean Silent
+	public final Boolean IsSandbox
+	public final String DescLong
+	public final String DescShort
+
+	public String GitNewRef
+	public String GitOldRef
+
+	BuildSettings(java.util.Collections$UnmodifiableMap param, String branch) {
+		switch( param.Compiler ) {
+			case 'gcc-6':
+				this.Compiler = new CC_Desc('gcc-6', 'g++-6', 'gcc-6')
+			break
+			case 'gcc-5':
+				this.Compiler = new CC_Desc('gcc-5', 'g++-5', 'gcc-5')
+			break
+			case 'gcc-4.9':
+				this.Compiler = new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9')
+			break
+			case 'clang':
+				this.Compiler = new CC_Desc('clang', 'clang++', 'gcc-6')
+			break
+			default :
+				error "Unhandled compiler : ${cc}"
+		}
+
+		switch( param.Architecture ) {
+			case 'x64':
+				this.Architecture = new Arch_Desc('x64', '--host=x86_64')
+			break
+			case 'x86':
+				this.Architecture = new Arch_Desc('x86', '--host=i386')
+			break
+			default :
+				error "Unhandled architecture : ${arch}"
+		}
+
+		this.RunAllTests        = param.RunAllTests
+		this.RunBenchmark       = param.RunBenchmark
+		this.BuildDocumentation = param.BuildDocumentation
+		this.Publish            = param.Publish
+		this.Silent             = param.Silent
+		this.IsSandbox          = (branch == "jenkins-sandbox")
+
+		def full = param.RunAllTests ? " (Full)" : ""
+		this.DescShort = "${ this.Compiler.cc_name }:${ this.Architecture.name }${full}"
+
+		this.DescLong = """Compiler 	         : ${ this.Compiler.cc_name } (${ this.Compiler.cpp_cc }/${ this.Compiler.cfa_cc })
+Architecture            : ${ this.Architecture.name }
+Arc Flags               : ${ this.Architecture.flags }
+Run All Tests           : ${ this.RunAllTests.toString() }
+Run Benchmark           : ${ this.RunBenchmark.toString() }
+Build Documentation     : ${ this.BuildDocumentation.toString() }
+Publish                 : ${ this.Publish.toString() }
+Silent                  : ${ this.Silent.toString() }
+"""
+
+		this.GitNewRef = ''
+		this.GitOldRef = ''
+	}
+}
+
+def prepare_build() {
+	// prepare the properties
+	properties ([ 													\
+		[$class: 'ParametersDefinitionProperty', 								\
+			parameterDefinitions: [ 									\
+				[$class: 'ChoiceParameterDefinition',						\
+					description: 'Which compiler to use',					\
+					name: 'Compiler',									\
+					choices: 'gcc-6\ngcc-5\ngcc-4.9\nclang',					\
+					defaultValue: 'gcc-6',								\
+				],												\
+				[$class: 'ChoiceParameterDefinition',						\
+					description: 'The target architecture',					\
+					name: 'Architecture',								\
+					choices: 'x64\nx86',								\
+					defaultValue: 'x64',								\
+				],												\
+				[$class: 'BooleanParameterDefinition',  						\
+					description: 'If false, only the quick test suite is ran', 		\
+					name: 'RunAllTests', 								\
+					defaultValue: false,  								\
+				], 												\
+				[$class: 'BooleanParameterDefinition',  						\
+					description: 'If true, jenkins also runs benchmarks', 		\
+					name: 'RunBenchmark', 								\
+					defaultValue: false,  								\
+				], 												\
+				[$class: 'BooleanParameterDefinition',  						\
+					description: 'If true, jenkins also builds documentation', 		\
+					name: 'BuildDocumentation', 							\
+					defaultValue: true,  								\
+				],												\
+				[$class: 'BooleanParameterDefinition',  						\
+					description: 'If true, jenkins also publishes results', 		\
+					name: 'Publish', 									\
+					defaultValue: false,  								\
+				],												\
+				[$class: 'BooleanParameterDefinition',  						\
+					description: 'If true, jenkins will not send emails', 		\
+					name: 'Silent', 									\
+					defaultValue: false,  								\
+				],												\
+			],
+		]])
+
+	final settings = new BuildSettings(params, env.BRANCH_NAME)
+
+	currentBuild.description = settings.DescShort
+	echo                       settings.DescLong
+
+	return settings
+}
+
+def build_stage(String name, Closure block ) {
+	StageName = name
+	echo " -------- ${StageName} -------- "
+	stage(name, block)
+}
+
+def notify_server(int wait) {
+	sh """curl --silent --show-error --data "wait=${wait}" -X POST https://cforall.uwaterloo.ca:8082/jenkins/notify > /dev/null || true"""
+	return
+}
+
+def make_doc() {
+	def err = null
+	try {
+		sh 'make clean > /dev/null'
+		sh 'make > /dev/null 2>&1'
+	}
+	catch (Exception caughtError) {
+		err = caughtError //rethrow error later
+		sh 'cat *.log'
+	}
+	finally {
+		if (err) throw err // Must re-throw exception to propagate error
+	}
+}
Index: Makefile.am
===================================================================
--- Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -6,5 +6,5 @@
 ## file "LICENCE" distributed with Cforall.
 ##
-## Makefile.am -- 
+## Makefile.am --
 ##
 ## Author           : Peter A. Buhr
@@ -15,10 +15,32 @@
 ###############################################################################
 
-AUTOMAKE_OPTIONS = foreign		# do not require all the GNU file names
-SUBDIRS = src/driver src src/prelude src/libcfa # order important, src before prelude because cfa-cpp used to build prelude
-EXTRA_DIST = Docs			# non-source files
-BACKEND_CC = @BACKEND_CC@		# C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+BACKEND_CC = @BACKEND_CC@     # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
 
-MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
+MAINTAINERCLEANFILES = lib/* bin/* tests/.deps/* tests/.out/*
+ # order important
+
+SUBDIRS = driver src . @LIBCFA_TARGET_DIRS@
+
+@LIBCFA_TARGET_MAKEFILES@ : Makefile $(srcdir)/libcfa/configure
+	@$(eval config_file = $(dir $@)config.data)
+	@ls $(config_file) || (echo "Missing config.data, re-run configure script again" && false)
+	@$(eval config_data = $(shell cat $(config_file)))
+	@echo "Configuring libcfa with '$(config_data)''"
+	@cd $(dir $@) && $(abs_top_srcdir)/libcfa/configure $(config_data)
+
+noinst_DATA = @LIBCFA_TARGET_MAKEFILES@
 
 man1_MANS = doc/man/cfa.1
+
+debug=yes
+check:
+	$(MAKE) -C tests all-tests installed=no debug=${debug}
+
+installcheck:
+	$(MAKE) -C tests all-tests installed=yes debug=${debug}
+
+status: @LIBCFA_TARGET_MAKEFILES@
+	@echo -ne "translator\n\t"
+	@./config.status --config | sed "s/ /\n\t/g; s/\t'/\t/g; s/'\n/\n/g; s/^'//g; s/'$$//g"
+	@find libcfa -name config.status -printf "\n%h\n\t" -exec {} --config \; | sed "s/ /\n\t/g; s/\t'/\t/g; s/'\n/\n/g; s/^'//g; s/'$$//g"
Index: Makefile.in
===================================================================
--- Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -17,4 +17,5 @@
 ######################## -*- Mode: Makefile-Automake -*- ######################
 ###############################################################################
+
 VPATH = @srcdir@
 am__is_gnu_make = { \
@@ -93,5 +94,6 @@
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
@@ -162,4 +164,5 @@
 NROFF = nroff
 MANS = $(man1_MANS)
+DATA = $(noinst_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
@@ -249,7 +252,6 @@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BACKEND_CC = @BACKEND_CC@		# C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
+BACKEND_CC = @BACKEND_CC@     # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
 BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
 CC = @CC@
 CCAS = @CCAS@
@@ -282,4 +284,5 @@
 EXEEXT = @EXEEXT@
 GREP = @GREP@
+HOST_FLAGS = @HOST_FLAGS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -291,8 +294,9 @@
 LEXLIB = @LEXLIB@
 LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBCFA_TARGET_DIRS = @LIBCFA_TARGET_DIRS@
+LIBCFA_TARGET_MAKEFILES = @LIBCFA_TARGET_MAKEFILES@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
@@ -310,4 +314,5 @@
 SHELL = @SHELL@
 STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
 VERSION = @VERSION@
 YACC = @YACC@
@@ -365,9 +370,10 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign		# do not require all the GNU file names
-SUBDIRS = src/driver src src/prelude src/libcfa # order important, src before prelude because cfa-cpp used to build prelude
-EXTRA_DIST = Docs			# non-source files
-MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+MAINTAINERCLEANFILES = lib/* bin/* tests/.deps/* tests/.out/*
+SUBDIRS = driver src . @LIBCFA_TARGET_DIRS@
+noinst_DATA = @LIBCFA_TARGET_MAKEFILES@
 man1_MANS = doc/man/cfa.1
+debug = yes
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -760,5 +766,5 @@
 check-am: all-am
 check: check-recursive
-all-am: Makefile $(MANS) config.h
+all-am: Makefile $(MANS) $(DATA) config.h
 installdirs: installdirs-recursive
 installdirs-am:
@@ -773,6 +779,4 @@
 install-am: all-am
 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
 install-strip:
 	if test -z '$(STRIP)'; then \
@@ -888,4 +892,22 @@
 .PRECIOUS: Makefile
 
+ # order important
+
+@LIBCFA_TARGET_MAKEFILES@ : Makefile $(srcdir)/libcfa/configure
+	@$(eval config_file = $(dir $@)config.data)
+	@ls $(config_file) || (echo "Missing config.data, re-run configure script again" && false)
+	@$(eval config_data = $(shell cat $(config_file)))
+	@echo "Configuring libcfa with '$(config_data)''"
+	@cd $(dir $@) && $(abs_top_srcdir)/libcfa/configure $(config_data)
+check:
+	$(MAKE) -C tests all-tests installed=no debug=${debug}
+
+installcheck:
+	$(MAKE) -C tests all-tests installed=yes debug=${debug}
+
+status: @LIBCFA_TARGET_MAKEFILES@
+	@echo -ne "translator\n\t"
+	@./config.status --config | sed "s/ /\n\t/g; s/\t'/\t/g; s/'\n/\n/g; s/^'//g; s/'$$//g"
+	@find libcfa -name config.status -printf "\n%h\n\t" -exec {} --config \; | sed "s/ /\n\t/g; s/\t'/\t/g; s/'\n/\n/g; s/^'//g; s/'$$//g"
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
Index: aclocal.m4
===================================================================
--- aclocal.m4	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ aclocal.m4	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -127,41 +127,4 @@
 # Expand $ac_aux_dir to an absolute path.
 am_aux_dir=`cd "$ac_aux_dir" && pwd`
-])
-
-# AM_COND_IF                                            -*- Autoconf -*-
-
-# Copyright (C) 2008-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_COND_IF
-# _AM_COND_ELSE
-# _AM_COND_ENDIF
-# --------------
-# These macros are only used for tracing.
-m4_define([_AM_COND_IF])
-m4_define([_AM_COND_ELSE])
-m4_define([_AM_COND_ENDIF])
-
-# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
-# ---------------------------------------
-# If the shell condition COND is true, execute IF-TRUE, otherwise execute
-# IF-FALSE.  Allow automake to learn about conditional instantiating macros
-# (the AC_CONFIG_FOOS).
-AC_DEFUN([AM_COND_IF],
-[m4_ifndef([_AM_COND_VALUE_$1],
-	   [m4_fatal([$0: no such condition "$1"])])dnl
-_AM_COND_IF([$1])dnl
-if test -z "$$1_TRUE"; then :
-  m4_n([$2])[]dnl
-m4_ifval([$3],
-[_AM_COND_ELSE([$1])dnl
-else
-  $3
-])dnl
-_AM_COND_ENDIF([$1])dnl
-fi[]dnl
 ])
 
Index: automake/cfa.m4
===================================================================
--- automake/cfa.m4	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ automake/cfa.m4	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,80 @@
+
+m4_define([M4CFA_PARSE_PREFIX], [
+	if test "x$prefix" = "xNONE"; then
+		cfa_prefix=${ac_default_prefix}
+	else
+		cfa_prefix=${prefix}
+	fi
+	cfa_prefix="$(readlink -m ${cfa_prefix})/"
+	AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa install.])
+	AC_SUBST(CFA_PREFIX, ${cfa_prefix})
+
+	if test "$includedir" = '${prefix}/include'; then
+		cfa_incdir="${cfa_prefix}include/${cfa_name}"
+	else
+		cfa_incdir=${includedir}
+	fi
+	cfa_incdir="$(readlink -m ${cfa_incdir})/"
+	AC_DEFINE_UNQUOTED(CFA_INCDIR, "${cfa_incdir}", [Location of include files.])
+	AC_SUBST(CFA_INCDIR, ${cfa_incdir})
+
+	if test "$bindir" = '${exec_prefix}/bin'; then
+		cfa_bindir="${cfa_prefix}bin"
+	else
+		cfa_bindir=${bindir}
+	fi
+	cfa_bindir="$(readlink -m ${cfa_bindir})/"
+	AC_DEFINE_UNQUOTED(CFA_BINDIR, "${cfa_bindir}", [Location of cfa command.])
+	AC_SUBST(CFA_BINDIR, ${cfa_bindir})
+
+	if test "$libdir" = '${exec_prefix}/lib'; then
+		if test "${ARCHITECTURE}" != ""; then
+			cfa_libdir="${cfa_prefix}lib/${cfa_name}/${ARCHITECTURE}-${CONFIGURATION}/"
+		else
+			cfa_libdir="${cfa_prefix}lib/${cfa_name}/"
+		fi
+	else
+		cfa_libdir="${libdir}/${ARCHITECTURE}${CONFIGURATION}"
+	fi
+	cfa_libdir="$(readlink -m ${cfa_libdir})/"
+	AC_DEFINE_UNQUOTED(CFA_LIBDIR, "${cfa_libdir}", [Location of cc1 and cfa-cpp commands.])
+	AC_SUBST(CFA_LIBDIR, ${cfa_libdir})
+])
+
+m4_define([M4CFA_PROGRAM_NAME], [
+	if test "${program_transform_name}" = ""; then
+	AC_MSG_ERROR([Program transform not supported.
+			Use --with-cfa-name='[[Desired name here]]' instead])
+	fi
+
+	#Define the new name of the installed command
+	AC_ARG_WITH(cfa-name,
+		[  --with-cfa-name=NAME     NAME too which cfa will be installed],
+		cfa_name=$withval, cfa_name="cfa")
+
+	AC_SUBST(CFA_NAME, ${cfa_name})
+])
+
+AC_DEFUN([M4CFA_CANNON_CPU], [
+	case $arch_name in
+		"host") arch_name=${host_cpu};;
+		*) ;;
+	esac
+
+	case $arch_name in
+		"x64"        ) cannon_arch_name="x64";;
+		"x86-64"     ) cannon_arch_name="x64";;
+		"x86_64"     ) cannon_arch_name="x64";;
+		"x86"        ) cannon_arch_name="x86";;
+		"i386"       ) cannon_arch_name="x86";;
+		"i486"       ) cannon_arch_name="x86";;
+		"i686"       ) cannon_arch_name="x86";;
+		"Intel 80386") cannon_arch_name="x86";;
+		"arm"        ) cannon_arch_name="arm";;
+		"ARM"        ) cannon_arch_name="arm";;
+		*)
+		>&2 echo "Unkown architecture " $arch_name;
+		exit 1
+		;;
+	esac
+])
Index: automake/compile
===================================================================
--- automake/compile	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ automake/compile	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,347 +1,1 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand '-c -o'.
-
-scriptversion=2012-10-14.11; # UTC
-
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey@cygnus.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent tools from complaining about whitespace usage.
-IFS=" ""	$nl"
-
-file_conv=
-
-# func_file_conv build_file lazy
-# Convert a $build file to $host form and store it in $file
-# Currently only supports Windows hosts. If the determined conversion
-# type is listed in (the comma separated) LAZY, no conversion will
-# take place.
-func_file_conv ()
-{
-  file=$1
-  case $file in
-    / | /[!/]*) # absolute file, and not a UNC file
-      if test -z "$file_conv"; then
-	# lazily determine how to convert abs files
-	case `uname -s` in
-	  MINGW*)
-	    file_conv=mingw
-	    ;;
-	  CYGWIN*)
-	    file_conv=cygwin
-	    ;;
-	  *)
-	    file_conv=wine
-	    ;;
-	esac
-      fi
-      case $file_conv/,$2, in
-	*,$file_conv,*)
-	  ;;
-	mingw/*)
-	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
-	  ;;
-	cygwin/*)
-	  file=`cygpath -m "$file" || echo "$file"`
-	  ;;
-	wine/*)
-	  file=`winepath -w "$file" || echo "$file"`
-	  ;;
-      esac
-      ;;
-  esac
-}
-
-# func_cl_dashL linkdir
-# Make cl look for libraries in LINKDIR
-func_cl_dashL ()
-{
-  func_file_conv "$1"
-  if test -z "$lib_path"; then
-    lib_path=$file
-  else
-    lib_path="$lib_path;$file"
-  fi
-  linker_opts="$linker_opts -LIBPATH:$file"
-}
-
-# func_cl_dashl library
-# Do a library search-path lookup for cl
-func_cl_dashl ()
-{
-  lib=$1
-  found=no
-  save_IFS=$IFS
-  IFS=';'
-  for dir in $lib_path $LIB
-  do
-    IFS=$save_IFS
-    if $shared && test -f "$dir/$lib.dll.lib"; then
-      found=yes
-      lib=$dir/$lib.dll.lib
-      break
-    fi
-    if test -f "$dir/$lib.lib"; then
-      found=yes
-      lib=$dir/$lib.lib
-      break
-    fi
-    if test -f "$dir/lib$lib.a"; then
-      found=yes
-      lib=$dir/lib$lib.a
-      break
-    fi
-  done
-  IFS=$save_IFS
-
-  if test "$found" != yes; then
-    lib=$lib.lib
-  fi
-}
-
-# func_cl_wrapper cl arg...
-# Adjust compile command to suit cl
-func_cl_wrapper ()
-{
-  # Assume a capable shell
-  lib_path=
-  shared=:
-  linker_opts=
-  for arg
-  do
-    if test -n "$eat"; then
-      eat=
-    else
-      case $1 in
-	-o)
-	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
-	  eat=1
-	  case $2 in
-	    *.o | *.[oO][bB][jJ])
-	      func_file_conv "$2"
-	      set x "$@" -Fo"$file"
-	      shift
-	      ;;
-	    *)
-	      func_file_conv "$2"
-	      set x "$@" -Fe"$file"
-	      shift
-	      ;;
-	  esac
-	  ;;
-	-I)
-	  eat=1
-	  func_file_conv "$2" mingw
-	  set x "$@" -I"$file"
-	  shift
-	  ;;
-	-I*)
-	  func_file_conv "${1#-I}" mingw
-	  set x "$@" -I"$file"
-	  shift
-	  ;;
-	-l)
-	  eat=1
-	  func_cl_dashl "$2"
-	  set x "$@" "$lib"
-	  shift
-	  ;;
-	-l*)
-	  func_cl_dashl "${1#-l}"
-	  set x "$@" "$lib"
-	  shift
-	  ;;
-	-L)
-	  eat=1
-	  func_cl_dashL "$2"
-	  ;;
-	-L*)
-	  func_cl_dashL "${1#-L}"
-	  ;;
-	-static)
-	  shared=false
-	  ;;
-	-Wl,*)
-	  arg=${1#-Wl,}
-	  save_ifs="$IFS"; IFS=','
-	  for flag in $arg; do
-	    IFS="$save_ifs"
-	    linker_opts="$linker_opts $flag"
-	  done
-	  IFS="$save_ifs"
-	  ;;
-	-Xlinker)
-	  eat=1
-	  linker_opts="$linker_opts $2"
-	  ;;
-	-*)
-	  set x "$@" "$1"
-	  shift
-	  ;;
-	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
-	  func_file_conv "$1"
-	  set x "$@" -Tp"$file"
-	  shift
-	  ;;
-	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
-	  func_file_conv "$1" mingw
-	  set x "$@" "$file"
-	  shift
-	  ;;
-	*)
-	  set x "$@" "$1"
-	  shift
-	  ;;
-      esac
-    fi
-    shift
-  done
-  if test -n "$linker_opts"; then
-    linker_opts="-link$linker_opts"
-  fi
-  exec "$@" $linker_opts
-  exit 1
-}
-
-eat=
-
-case $1 in
-  '')
-     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
-
-Wrapper for compilers which do not understand '-c -o'.
-Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file 'INSTALL'.
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "compile $scriptversion"
-    exit $?
-    ;;
-  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
-    func_cl_wrapper "$@"      # Doesn't return...
-    ;;
-esac
-
-ofile=
-cfile=
-
-for arg
-do
-  if test -n "$eat"; then
-    eat=
-  else
-    case $1 in
-      -o)
-	# configure might choose to run compile as 'compile cc -o foo foo.c'.
-	# So we strip '-o arg' only if arg is an object.
-	eat=1
-	case $2 in
-	  *.o | *.obj)
-	    ofile=$2
-	    ;;
-	  *)
-	    set x "$@" -o "$2"
-	    shift
-	    ;;
-	esac
-	;;
-      *.c)
-	cfile=$1
-	set x "$@" "$1"
-	shift
-	;;
-      *)
-	set x "$@" "$1"
-	shift
-	;;
-    esac
-  fi
-  shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
-  # If no '-o' option was seen then we might have been invoked from a
-  # pattern rule where we don't need one.  That is ok -- this is a
-  # normal compilation that the losing compiler can handle.  If no
-  # '.c' file was seen then we are probably linking.  That is also
-  # ok.
-  exec "$@"
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use '[/\\:.-]' here to ensure that we don't use the same name
-# that we are using for the .o file.  Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
-while true; do
-  if mkdir "$lockdir" >/dev/null 2>&1; then
-    break
-  fi
-  sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
-
-# Run the compile.
-"$@"
-ret=$?
-
-if test -f "$cofile"; then
-  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
-  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
-fi
-
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
+/usr/share/automake-1.15/compile
Index: automake/config.guess
===================================================================
--- automake/config.guess	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ automake/config.guess	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,1441 +1,1 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2015 Free Software Foundation, Inc.
-
-timestamp='2015-08-20'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-#
-# Please send patches to <config-patches@gnu.org>.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2015 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
-	# If the system lacks a compiler, then just pick glibc.
-	# We could probably try harder.
-	LIBC=gnu
-
-	eval $set_cc_for_build
-	cat <<-EOF > $dummy.c
-	#include <features.h>
-	#if defined(__UCLIBC__)
-	LIBC=uclibc
-	#elif defined(__dietlibc__)
-	LIBC=dietlibc
-	#else
-	LIBC=gnu
-	#endif
-	EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
-	;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-	    /sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || \
-	    echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    armeb) machine=armeb-unknown ;;
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    sh5el) machine=sh5le-unknown ;;
-	    earmv*)
-		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
-		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
-		machine=${arch}${endian}-unknown
-		;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep -q __ELF__
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-		os=netbsd
-		;;
-	esac
-	# Determine ABI tags.
-	case "${UNAME_MACHINE_ARCH}" in
-	    earm*)
-		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
-		;;
-	esac
-	# The OS release
-	# Debian GNU/NetBSD machines have a different userland, and
-	# thus, need a distinct triplet. However, they do not need
-	# kernel version information, so it can be replaced with a
-	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
-	    Debian*)
-		release='-gnu'
-		;;
-	    *)
-		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
-		;;
-	esac
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}${abi}"
-	exit ;;
-    *:Bitrig:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-	exit ;;
-    *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:Sortix:*:*)
-	echo ${UNAME_MACHINE}-unknown-sortix
-	exit ;;
-    alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
-	# According to Compaq, /usr/sbin/psrinfo has been available on
-	# OSF/1 and Tru64 systems produced since 1995.  I hope that
-	# covers most systems running today.  This code pipes the CPU
-	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
-	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
-	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
-	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
-	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
-	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
-	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
-	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
-	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
-	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
-	esac
-	# A Pn.n version is a patched version.
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-	exitcode=$?
-	trap '' 0
-	exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
-	exit ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-	echo powerpc-ibm-os400
-	exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
-    DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
-    s390x:SunOS:*:*)
-	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-	echo i386-pc-auroraux${UNAME_RELEASE}
-	exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	eval $set_cc_for_build
-	SUN_ARCH="i386"
-	# If there is a compiler, see if it is configured for 64-bit objects.
-	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		SUN_ARCH="x86_64"
-	    fi
-	fi
-	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-	echo m68k-milan-mint${UNAME_RELEASE}
-	exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-	echo m68k-hades-mint${UNAME_RELEASE}
-	exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-	echo m68k-unknown-mint${UNAME_RELEASE}
-	exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
-    Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
-    AViiON:dgux:*:*)
-	# DG/UX returns AViiON for all architectures
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
-	exit ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit ;;
-    *:AIX:*:[4567])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/lslpp ] ; then
-		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
-			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-		    case "${sc_cpu_version}" in
-		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-		      532)                      # CPU_PA_RISC2_0
-			case "${sc_kernel_bits}" in
-			  32) HP_ARCH="hppa2.0n" ;;
-			  64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-			esac ;;
-		    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^		//' << EOF >$dummy.c
-
-		#define _HPUX_SOURCE
-		#include <stdlib.h>
-		#include <unistd.h>
-
-		int main ()
-		{
-		#if defined(_SC_KERNEL_BITS)
-		    long bits = sysconf(_SC_KERNEL_BITS);
-		#endif
-		    long cpu  = sysconf (_SC_CPU_VERSION);
-
-		    switch (cpu)
-			{
-			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-			case CPU_PA_RISC2_0:
-		#if defined(_SC_KERNEL_BITS)
-			    switch (bits)
-				{
-				case 64: puts ("hppa2.0w"); break;
-				case 32: puts ("hppa2.0n"); break;
-				default: puts ("hppa2.0"); break;
-				} break;
-		#else  /* !defined(_SC_KERNEL_BITS) */
-			    puts ("hppa2.0"); break;
-		#endif
-			default: puts ("hppa1.0"); break;
-			}
-		    exit (0);
-		}
-EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-		    test -z "$HP_ARCH" && HP_ARCH=hppa
-		fi ;;
-	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
-	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep -q __LP64__
-	    then
-		HP_ARCH="hppa2.0w"
-	    else
-		HP_ARCH="hppa64"
-	    fi
-	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
-	fi
-	exit ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-	exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-	exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-	exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-	exit ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    5000:UNIX_System_V:4.*:*)
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	case ${UNAME_PROCESSOR} in
-	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    *:MINGW64*:*)
-	echo ${UNAME_MACHINE}-pc-mingw64
-	exit ;;
-    *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    *:MSYS*:*)
-	echo ${UNAME_MACHINE}-pc-msys
-	exit ;;
-    i*:windows32*:*)
-	# uname -m includes "-pc" on this system.
-	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    *:Interix*:*)
-	case ${UNAME_MACHINE} in
-	    x86)
-		echo i586-pc-interix${UNAME_RELEASE}
-		exit ;;
-	    authenticamd | genuineintel | EM64T)
-		echo x86_64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	    IA64)
-		echo ia64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    8664:Windows_NT:*)
-	echo x86_64-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    *:GNU:*:*)
-	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
-    aarch64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    aarch64_be:Linux:*:*)
-	UNAME_MACHINE=aarch64_be
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-	esac
-	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    arm*:Linux:*:*)
-	eval $set_cc_for_build
-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-	    | grep -q __ARM_EABI__
-	then
-	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	else
-	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-		| grep -q __ARM_PCS_VFP
-	    then
-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
-	    else
-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
-	    fi
-	fi
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    cris:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-	exit ;;
-    crisv32:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-	exit ;;
-    e2k:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    frv:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    hexagon:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    i*86:Linux:*:*)
-	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef ${UNAME_MACHINE}
-	#undef ${UNAME_MACHINE}el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=${UNAME_MACHINE}el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=${UNAME_MACHINE}
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
-	;;
-    openrisc*:Linux:*:*)
-	echo or1k-unknown-linux-${LIBC}
-	exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    padre:Linux:*:*)
-	echo sparc-unknown-linux-${LIBC}
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-${LIBC}
-	exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-	  *)    echo hppa-unknown-linux-${LIBC} ;;
-	esac
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-${LIBC}
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-${LIBC}
-	exit ;;
-    ppc64le:Linux:*:*)
-	echo powerpc64le-unknown-linux-${LIBC}
-	exit ;;
-    ppcle:Linux:*:*)
-	echo powerpcle-unknown-linux-${LIBC}
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
-	exit ;;
-    sh64*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    tile*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
-	exit ;;
-    x86_64:Linux:*:*)
-	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
-	exit ;;
-    xtensa*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-	# Unixware is an offshoot of SVR4, but it has its own version
-	# number series starting with 2...
-	# I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-	# Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
-	exit ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit ;;
-    i*86:*:5:[678]*)
-	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-	# uname -m prints for DJGPP always 'pc', but it prints nothing about
-	# the processor, so we play safe by assuming i586.
-	# Note: whatever this is, it MUST be the same as what config.sub
-	# prints for the "djgpp" host, or else GDB configury will decide that
-	# this is a cross-build.
-	echo i586-pc-msdosdjgpp
-	exit ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
-    M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-	OS_REL='.3'
-	test -r /etc/.relid \
-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit ;;
-    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-			# says <Richard.M.Bartel@ccMail.Census.GOV>
-	echo i586-unisys-sysv4
-	exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes@openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf@swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-		echo mips-nec-sysv${UNAME_RELEASE}
-	else
-		echo mips-unknown-sysv${UNAME_RELEASE}
-	fi
-	exit ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
-    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-	echo i586-pc-haiku
-	exit ;;
-    x86_64:Haiku:*:*)
-	echo x86_64-unknown-haiku
-	exit ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux${UNAME_RELEASE}
-	exit ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	eval $set_cc_for_build
-	if test "$UNAME_PROCESSOR" = unknown ; then
-	    UNAME_PROCESSOR=powerpc
-	fi
-	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		    grep IS_64BIT_ARCH >/dev/null
-		then
-		    case $UNAME_PROCESSOR in
-			i386) UNAME_PROCESSOR=x86_64 ;;
-			powerpc) UNAME_PROCESSOR=powerpc64 ;;
-		    esac
-		fi
-	    fi
-	elif test "$UNAME_PROCESSOR" = i386 ; then
-	    # Avoid executing cc on OS X 10.9, as it ships with a stub
-	    # that puts up a graphical alert prompting to install
-	    # developer tools.  Any system running Mac OS X 10.7 or
-	    # later (Darwin 11 and later) is required to have a 64-bit
-	    # processor. This is not true of the ARM version of Darwin
-	    # that Apple uses in portable devices.
-	    UNAME_PROCESSOR=x86_64
-	fi
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-	echo neo-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
-	exit ;;
-    *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
-    *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
-    *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
-    *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
-    SEI:*:*:SEIUX)
-	echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-    i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
-	exit ;;
-    i*86:AROS:*:*)
-	echo ${UNAME_MACHINE}-pc-aros
-	exit ;;
-    x86_64:VMkernel:*:*)
-	echo ${UNAME_MACHINE}-unknown-esx
-	exit ;;
-esac
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
+/usr/share/automake-1.15/config.guess
Index: automake/config.sub
===================================================================
--- automake/config.sub	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ automake/config.sub	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,1813 +1,1 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2015 Free Software Foundation, Inc.
-
-timestamp='2015-08-20'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2015 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray | -microblaze*)
-		os=
-		basic_machine=$1
-		;;
-	-bluegene*)
-		os=-cnk
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
-	-chorusrdb)
-		os=-chorusrdb
-		basic_machine=$1
-		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*178)
-		os=-lynxos178
-		;;
-	-lynx*5)
-		os=-lynxos5
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| aarch64 | aarch64_be \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arceb \
-	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-	| avr | avr32 \
-	| ba \
-	| be32 | be64 \
-	| bfin \
-	| c4x | c8051 | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| e2k | epiphany \
-	| fido | fr30 | frv | ft32 \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| hexagon \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| k1om \
-	| le32 | le64 \
-	| lm32 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64octeon | mips64octeonel \
-	| mips64orion | mips64orionel \
-	| mips64r5900 | mips64r5900el \
-	| mips64vr | mips64vrel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa32r6 | mipsisa32r6el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64r6 | mipsisa64r6el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipsr5900 | mipsr5900el \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| moxie \
-	| mt \
-	| msp430 \
-	| nds32 | nds32le | nds32be \
-	| nios | nios2 | nios2eb | nios2el \
-	| ns16k | ns32k \
-	| open8 | or1k | or1knd | or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle \
-	| pyramid \
-	| riscv32 | riscv64 \
-	| rl78 | rx \
-	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu \
-	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-	| ubicom32 \
-	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-	| visium \
-	| we32k \
-	| x86 | xc16x | xstormy16 | xtensa \
-	| z8k | z80)
-		basic_machine=$basic_machine-unknown
-		;;
-	c54x)
-		basic_machine=tic54x-unknown
-		;;
-	c55x)
-		basic_machine=tic55x-unknown
-		;;
-	c6x)
-		basic_machine=tic6x-unknown
-		;;
-	leon|leon[3-9])
-		basic_machine=sparc-$basic_machine
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-	ms1)
-		basic_machine=mt-unknown
-		;;
-
-	strongarm | thumb | xscale)
-		basic_machine=arm-unknown
-		;;
-	xgate)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	xscaleeb)
-		basic_machine=armeb-unknown
-		;;
-
-	xscaleel)
-		basic_machine=armel-unknown
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| aarch64-* | aarch64_be-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| ba-* \
-	| be32-* | be64-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* \
-	| c8051-* | clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| e2k-* | elxsi-* \
-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| hexagon-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| k1om-* \
-	| le32-* | le64-* \
-	| lm32-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-	| microblaze-* | microblazeel-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64octeon-* | mips64octeonel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64r5900-* | mips64r5900el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa32r6-* | mipsisa32r6el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64r6-* | mipsisa64r6el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipsr5900-* | mipsr5900el-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nds32-* | nds32le-* | nds32be-* \
-	| nios-* | nios2-* | nios2eb-* | nios2el-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| open8-* \
-	| or1k*-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-	| pyramid-* \
-	| riscv32-* | riscv64-* \
-	| rl78-* | romp-* | rs6000-* | rx-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
-	| tahoe-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tile*-* \
-	| tron-* \
-	| ubicom32-* \
-	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-	| vax-* \
-	| visium-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* \
-	| xstormy16-* | xtensa*-* \
-	| ymp-* \
-	| z8k-* | z80-*)
-		;;
-	# Recognize the basic CPU types without company name, with glob match.
-	xtensa*)
-		basic_machine=$basic_machine-unknown
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aros)
-		basic_machine=i386-pc
-		os=-aros
-		;;
-        asmjs)
-		basic_machine=asmjs-unknown
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	blackfin)
-		basic_machine=bfin-unknown
-		os=-linux
-		;;
-	blackfin-*)
-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	bluegene*)
-		basic_machine=powerpc-ibm
-		os=-cnk
-		;;
-	c54x-*)
-		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c55x-*)
-		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c6x-*)
-		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-	cegcc)
-		basic_machine=arm-unknown
-		os=-cegcc
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16 | cr16-*)
-		basic_machine=cr16-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	dicos)
-		basic_machine=i686-pc
-		os=-dicos
-		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	leon-*|leon[3-9]-*)
-		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
-		;;
-	m68knommu)
-		basic_machine=m68k-unknown
-		os=-linux
-		;;
-	m68knommu-*)
-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	microblaze*)
-		basic_machine=microblaze-xilinx
-		;;
-	mingw64)
-		basic_machine=x86_64-pc
-		os=-mingw64
-		;;
-	mingw32)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	mingw32ce)
-		basic_machine=arm-unknown
-		os=-mingw32ce
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	moxiebox)
-		basic_machine=moxie-unknown
-		os=-moxiebox
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
-	msys)
-		basic_machine=i686-pc
-		os=-msys
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	nacl)
-		basic_machine=le32-unknown
-		os=-nacl
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	neo-tandem)
-		basic_machine=neo-tandem
-		;;
-	nse-tandem)
-		basic_machine=nse-tandem
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	parisc)
-		basic_machine=hppa-unknown
-		os=-linux
-		;;
-	parisc-*)
-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc | ppcbe)	basic_machine=powerpc-unknown
-		;;
-	ppc-* | ppcbe-*)
-		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rdos | rdos64)
-		basic_machine=x86_64-pc
-		os=-rdos
-		;;
-	rdos32)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
-		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
-		;;
-	sde)
-		basic_machine=mipsisa32-sde
-		os=-elf
-		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sh5el)
-		basic_machine=sh5le-unknown
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	strongarm-* | thumb-*)
-		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	tile*)
-		basic_machine=$basic_machine-unknown
-		os=-linux-gnu
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
-		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	xscale-* | xscalee[bl]-*)
-		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	z80-*-coff)
-		basic_machine=z80-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
-		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-		basic_machine=sparc-sun
-		;;
-	cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-	# First match some system type aliases
-	# that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-auroraux)
-		os=-auroraux
-		;;
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* | -plan9* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* | -cloudabi* | -sortix* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -bitrig* | -openbsd* | -solidbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto-qnx*)
-		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-	-os400*)
-		os=-os400
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-syllable*)
-		os=-syllable
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-		os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-	-tpf*)
-		os=-tpf
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
-		;;
-	-aros*)
-		os=-aros
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-dicos*)
-		os=-dicos
-		;;
-	-nacl*)
-		;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-	score-*)
-		os=-elf
-		;;
-	spu-*)
-		os=-elf
-		;;
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-	c4x-* | tic4x-*)
-		os=-coff
-		;;
-	c8051-*)
-		os=-elf
-		;;
-	hexagon-*)
-		os=-elf
-		;;
-	tic54x-*)
-		os=-coff
-		;;
-	tic55x-*)
-		os=-coff
-		;;
-	tic6x-*)
-		os=-coff
-		;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-	pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-	mep-*)
-		os=-elf
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-haiku)
-		os=-haiku
-		;;
-	*-ibm)
-		os=-aix
-		;;
-	*-knuth)
-		os=-mmixware
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-	*-gould)
-		os=-sysv
-		;;
-	*-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-	*-sgi)
-		os=-irix
-		;;
-	*-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-cnk*|-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-os400*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-tpf*)
-				vendor=ibm
-				;;
-			-vxsim* | -vxworks* | -windiss*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
+/usr/share/automake-1.15/config.sub
Index: automake/depcomp
===================================================================
--- automake/depcomp	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ automake/depcomp	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,791 +1,1 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2013-05-30.07; # UTC
-
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
-  '')
-    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-    exit 1;
-    ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by 'PROGRAMS ARGS'.
-  object      Object file output by 'PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputting dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-# Get the directory component of the given path, and save it in the
-# global variables '$dir'.  Note that this directory component will
-# be either empty or ending with a '/' character.  This is deliberate.
-set_dir_from ()
-{
-  case $1 in
-    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
-      *) dir=;;
-  esac
-}
-
-# Get the suffix-stripped basename of the given path, and save it the
-# global variable '$base'.
-set_base_from ()
-{
-  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
-}
-
-# If no dependency file was actually created by the compiler invocation,
-# we still have to create a dummy depfile, to avoid errors with the
-# Makefile "include basename.Plo" scheme.
-make_dummy_depfile ()
-{
-  echo "#dummy" > "$depfile"
-}
-
-# Factor out some common post-processing of the generated depfile.
-# Requires the auxiliary global variable '$tmpdepfile' to be set.
-aix_post_process_depfile ()
-{
-  # If the compiler actually managed to produce a dependency file,
-  # post-process it.
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form 'foo.o: dependency.h'.
-    # Do two passes, one to just change these to
-    #   $object: dependency.h
-    # and one to simply output
-    #   dependency.h:
-    # which is needed to avoid the deleted-header problem.
-    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
-      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
-    } > "$depfile"
-    rm -f "$tmpdepfile"
-  else
-    make_dummy_depfile
-  fi
-}
-
-# A tabulation character.
-tab='	'
-# A newline character.
-nl='
-'
-# Character ranges might be problematic outside the C locale.
-# These definitions help.
-upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
-lower=abcdefghijklmnopqrstuvwxyz
-digits=0123456789
-alpha=${upper}${lower}
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Avoid interferences from the environment.
-gccflag= dashmflag=
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-  # This is just like dashmstdout with a different argument.
-  dashmflag=-xM
-  depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
-  # This is just like msvisualcpp but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvisualcpp
-fi
-
-if test "$depmode" = msvc7msys; then
-  # This is just like msvc7 but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvc7
-fi
-
-if test "$depmode" = xlc; then
-  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
-  gccflag=-qmakedep=gcc,-MF
-  depmode=gcc
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am.  Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
-  for arg
-  do
-    case $arg in
-    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-    *)  set fnord "$@" "$arg" ;;
-    esac
-    shift # fnord
-    shift # $arg
-  done
-  "$@"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
-## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
-## (see the conditional assignment to $gccflag above).
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).  Also, it might not be
-##   supported by the other compilers which use the 'gcc' depmode.
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  # The second -e expression handles DOS-style file names with drive
-  # letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the "deleted header file" problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-## Some versions of gcc put a space before the ':'.  On the theory
-## that the space means something, we add a space to the output as
-## well.  hp depmode also adds that space, but also prefixes the VPATH
-## to the object.  Take care to not repeat it in the output.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like '#:fec' to the end of the
-    # dependency line.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
-      | tr "$nl" ' ' >> "$depfile"
-    echo >> "$depfile"
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-      >> "$depfile"
-  else
-    make_dummy_depfile
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-xlc)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts '$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  set_dir_from "$object"
-  set_base_from "$object"
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$base.u
-    tmpdepfile3=$dir.libs/$base.u
-    "$@" -Wc,-M
-  else
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$dir$base.u
-    tmpdepfile3=$dir$base.u
-    "$@" -M
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  aix_post_process_depfile
-  ;;
-
-tcc)
-  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
-  # FIXME: That version still under development at the moment of writing.
-  #        Make that this statement remains true also for stable, released
-  #        versions.
-  # It will wrap lines (doesn't matter whether long or short) with a
-  # trailing '\', as in:
-  #
-  #   foo.o : \
-  #    foo.c \
-  #    foo.h \
-  #
-  # It will put a trailing '\' even on the last line, and will use leading
-  # spaces rather than leading tabs (at least since its commit 0394caf7
-  # "Emit spaces for -MD").
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
-  # We have to change lines of the first kind to '$object: \'.
-  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
-  # And for each line of the second kind, we have to emit a 'dep.h:'
-  # dummy dependency, to avoid the deleted-header problem.
-  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-## The order of this option in the case statement is important, since the
-## shell code in configure will try each of these formats in the order
-## listed in this file.  A plain '-MD' option would be understood by many
-## compilers, so we must ensure this comes after the gcc and icc options.
-pgcc)
-  # Portland's C compiler understands '-MD'.
-  # Will always output deps to 'file.d' where file is the root name of the
-  # source file under compilation, even if file resides in a subdirectory.
-  # The object file name does not affect the name of the '.d' file.
-  # pgcc 10.2 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using '\' :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-  set_dir_from "$object"
-  # Use the source, not the object, to determine the base name, since
-  # that's sadly what pgcc will do too.
-  set_base_from "$source"
-  tmpdepfile=$base.d
-
-  # For projects that build the same source file twice into different object
-  # files, the pgcc approach of using the *source* file root name can cause
-  # problems in parallel builds.  Use a locking strategy to avoid stomping on
-  # the same $tmpdepfile.
-  lockdir=$base.d-lock
-  trap "
-    echo '$0: caught signal, cleaning up...' >&2
-    rmdir '$lockdir'
-    exit 1
-  " 1 2 13 15
-  numtries=100
-  i=$numtries
-  while test $i -gt 0; do
-    # mkdir is a portable test-and-set.
-    if mkdir "$lockdir" 2>/dev/null; then
-      # This process acquired the lock.
-      "$@" -MD
-      stat=$?
-      # Release the lock.
-      rmdir "$lockdir"
-      break
-    else
-      # If the lock is being held by a different process, wait
-      # until the winning process is done or we timeout.
-      while test -d "$lockdir" && test $i -gt 0; do
-        sleep 1
-        i=`expr $i - 1`
-      done
-    fi
-    i=`expr $i - 1`
-  done
-  trap - 1 2 13 15
-  if test $i -le 0; then
-    echo "$0: failed to acquire lock after $numtries attempts" >&2
-    echo "$0: check lockdir '$lockdir'" >&2
-    exit 1
-  fi
-
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp2)
-  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-  # compilers, which have integrated preprocessors.  The correct option
-  # to use with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  # Much of this is similar to the tru64 case; see comments there.
-  set_dir_from  "$object"
-  set_base_from "$object"
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir.libs/$base.d
-    "$@" -Wc,+Maked
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    "$@" +Maked
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-     rm -f "$tmpdepfile1" "$tmpdepfile2"
-     exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add 'dependent.h:' lines.
-    sed -ne '2,${
-               s/^ *//
-               s/ \\*$//
-               s/$/:/
-               p
-             }' "$tmpdepfile" >> "$depfile"
-  else
-    make_dummy_depfile
-  fi
-  rm -f "$tmpdepfile" "$tmpdepfile2"
-  ;;
-
-tru64)
-  # The Tru64 compiler uses -MD to generate dependencies as a side
-  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-  # dependencies in 'foo.d' instead, so we check for that too.
-  # Subdirectories are respected.
-  set_dir_from  "$object"
-  set_base_from "$object"
-
-  if test "$libtool" = yes; then
-    # Libtool generates 2 separate objects for the 2 libraries.  These
-    # two compilations output dependencies in $dir.libs/$base.o.d and
-    # in $dir$base.o.d.  We have to check for both files, because
-    # one of the two compilations can be disabled.  We should prefer
-    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-    # automatically cleaned when .libs/ is deleted, while ignoring
-    # the former would cause a distcleancheck panic.
-    tmpdepfile1=$dir$base.o.d          # libtool 1.5
-    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
-    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
-    "$@" -Wc,-MD
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    tmpdepfile3=$dir$base.d
-    "$@" -MD
-  fi
-
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  # Same post-processing that is required for AIX mode.
-  aix_post_process_depfile
-  ;;
-
-msvc7)
-  if test "$libtool" = yes; then
-    showIncludes=-Wc,-showIncludes
-  else
-    showIncludes=-showIncludes
-  fi
-  "$@" $showIncludes > "$tmpdepfile"
-  stat=$?
-  grep -v '^Note: including file: ' "$tmpdepfile"
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  # The first sed program below extracts the file names and escapes
-  # backslashes for cygpath.  The second sed program outputs the file
-  # name when reading, but also accumulates all include files in the
-  # hold buffer in order to output them again at the end.  This only
-  # works with sed implementations that can handle large buffers.
-  sed < "$tmpdepfile" -n '
-/^Note: including file:  *\(.*\)/ {
-  s//\1/
-  s/\\/\\\\/g
-  p
-}' | $cygpath_u | sort -u | sed -n '
-s/ /\\ /g
-s/\(.*\)/'"$tab"'\1 \\/p
-s/.\(.*\) \\/\1:/
-H
-$ {
-  s/.*/'"$tab"'/
-  G
-  p
-}' >> "$depfile"
-  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
-  rm -f "$tmpdepfile"
-  ;;
-
-msvc7msys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove '-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for ':'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
-  "$@" $dashmflag |
-    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this sed invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no eat=no
-  for arg
-  do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    if test $eat = yes; then
-      eat=no
-      continue
-    fi
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -arch)
-      eat=yes ;;
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix=`echo "$object" | sed 's/^.*\././'`
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  # makedepend may prepend the VPATH from the source file name to the object.
-  # No need to regex-escape $object, excess matching of '.' is harmless.
-  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process the last invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed '1,2d' "$tmpdepfile" \
-    | tr ' ' "$nl" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove '-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E \
-    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-    | sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-        set fnord "$@"
-        shift
-        shift
-        ;;
-    *)
-        set fnord "$@" "$arg"
-        shift
-        shift
-        ;;
-    esac
-  done
-  "$@" -E 2>/dev/null |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
-  echo "$tab" >> "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvcmsys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
+/usr/share/automake-1.15/depcomp
Index: automake/install-sh
===================================================================
--- automake/install-sh	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ automake/install-sh	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,508 +1,1 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2014-09-12.12; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# 'make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-tab='	'
-nl='
-'
-IFS=" $tab$nl"
-
-# Set DOITPROG to "echo" to test this script.
-
-doit=${DOITPROG-}
-doit_exec=${doit:-exec}
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-is_target_a_directory=possibly
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve the last data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -s            $stripprog installed files.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-        shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-        case $mode in
-          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
-            echo "$0: invalid mode: $mode" >&2
-            exit 1;;
-        esac
-        shift;;
-
-    -o) chowncmd="$chownprog $2"
-        shift;;
-
-    -s) stripcmd=$stripprog;;
-
-    -t)
-        is_target_a_directory=always
-        dst_arg=$2
-        # Protect names problematic for 'test' and other utilities.
-        case $dst_arg in
-          -* | [=\(\)!]) dst_arg=./$dst_arg;;
-        esac
-        shift;;
-
-    -T) is_target_a_directory=never;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --) shift
-        break;;
-
-    -*) echo "$0: invalid option: $1" >&2
-        exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-# We allow the use of options -d and -T together, by making -d
-# take the precedence; this is for compatibility with GNU install.
-
-if test -n "$dir_arg"; then
-  if test -n "$dst_arg"; then
-    echo "$0: target directory not allowed when installing a directory." >&2
-    exit 1
-  fi
-fi
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-    # Protect names problematic for 'test' and other utilities.
-    case $dst_arg in
-      -* | [=\(\)!]) dst_arg=./$dst_arg;;
-    esac
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call 'install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  if test $# -gt 1 || test "$is_target_a_directory" = always; then
-    if test ! -d "$dst_arg"; then
-      echo "$0: $dst_arg: Is not a directory." >&2
-      exit 1
-    fi
-  fi
-fi
-
-if test -z "$dir_arg"; then
-  do_exit='(exit $ret); exit $ret'
-  trap "ret=129; $do_exit" 1
-  trap "ret=130; $do_exit" 2
-  trap "ret=141; $do_exit" 13
-  trap "ret=143; $do_exit" 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-        u_plus_rw=
-      else
-        u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-        u_plus_rw=
-      else
-        u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names problematic for 'test' and other utilities.
-  case $src in
-    -* | [=\(\)!]) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-    dst=$dst_arg
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test "$is_target_a_directory" = never; then
-        echo "$0: $dst_arg: Is a directory" >&2
-        exit 1
-      fi
-      dstdir=$dst
-      dst=$dstdir/`basename "$src"`
-      dstdir_status=0
-    else
-      dstdir=`dirname "$dst"`
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-        # Create intermediate dirs using mode 755 as modified by the umask.
-        # This is like FreeBSD 'install' as of 1997-10-28.
-        umask=`umask`
-        case $stripcmd.$umask in
-          # Optimize common cases.
-          *[2367][2367]) mkdir_umask=$umask;;
-          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-          *[0-7])
-            mkdir_umask=`expr $umask + 22 \
-              - $umask % 100 % 40 + $umask % 20 \
-              - $umask % 10 % 4 + $umask % 2
-            `;;
-          *) mkdir_umask=$umask,go-w;;
-        esac
-
-        # With -d, create the new directory with the user-specified mode.
-        # Otherwise, rely on $mkdir_umask.
-        if test -n "$dir_arg"; then
-          mkdir_mode=-m$mode
-        else
-          mkdir_mode=
-        fi
-
-        posix_mkdir=false
-        case $umask in
-          *[123567][0-7][0-7])
-            # POSIX mkdir -p sets u+wx bits regardless of umask, which
-            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-            ;;
-          *)
-            # $RANDOM is not portable (e.g. dash);  use it when possible to
-            # lower collision chance
-            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-            # As "mkdir -p" follows symlinks and we work in /tmp possibly;  so
-            # create the $tmpdir first (and fail if unsuccessful) to make sure
-            # that nobody tries to guess the $tmpdir name.
-            if (umask $mkdir_umask &&
-                $mkdirprog $mkdir_mode "$tmpdir" &&
-                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
-            then
-              if test -z "$dir_arg" || {
-                   # Check for POSIX incompatibilities with -m.
-                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-                   # other-writable bit of parent directory when it shouldn't.
-                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-                   test_tmpdir="$tmpdir/a"
-                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
-                   case $ls_ld_tmpdir in
-                     d????-?r-*) different_mode=700;;
-                     d????-?--*) different_mode=755;;
-                     *) false;;
-                   esac &&
-                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
-                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
-                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-                   }
-                 }
-              then posix_mkdir=:
-              fi
-              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
-            else
-              # Remove any dirs left behind by ancient mkdir implementations.
-              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
-            fi
-            trap '' 0;;
-        esac;;
-    esac
-
-    if
-      $posix_mkdir && (
-        umask $mkdir_umask &&
-        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-        /*) prefix='/';;
-        [-=\(\)!]*) prefix='./';;
-        *)  prefix='';;
-      esac
-
-      oIFS=$IFS
-      IFS=/
-      set -f
-      set fnord $dstdir
-      shift
-      set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-        test X"$d" = X && continue
-
-        prefix=$prefix$d
-        if test -d "$prefix"; then
-          prefixes=
-        else
-          if $posix_mkdir; then
-            (umask=$mkdir_umask &&
-             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-            # Don't fail if two instances are running concurrently.
-            test -d "$prefix" || exit 1
-          else
-            case $prefix in
-              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-              *) qprefix=$prefix;;
-            esac
-            prefixes="$prefixes '$qprefix'"
-          fi
-        fi
-        prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-        # Don't fail if two instances are running concurrently.
-        (umask $mkdir_umask &&
-         eval "\$doit_exec \$mkdirprog $prefixes") ||
-          test -d "$dstdir" || exit 1
-        obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
-       set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       set +f &&
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-        # Now remove or move aside any old file at destination location.
-        # We try this two ways since rm can't unlink itself on some
-        # systems and the destination file might be busy for other
-        # reasons.  In this case, the final cleanup might fail but the new
-        # file should still install successfully.
-        {
-          test ! -f "$dst" ||
-          $doit $rmcmd -f "$dst" 2>/dev/null ||
-          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-          } ||
-          { echo "$0: cannot unlink or rename $dst" >&2
-            (exit 1); exit 1
-          }
-        } &&
-
-        # Now rename the file to the real destination.
-        $doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
+/usr/share/automake-1.15/install-sh
Index: automake/missing
===================================================================
--- automake/missing	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ automake/missing	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,215 +1,1 @@
-#! /bin/sh
-# Common wrapper for a few potentially missing GNU programs.
-
-scriptversion=2013-10-28.13; # UTC
-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
-# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try '$0 --help' for more information"
-  exit 1
-fi
-
-case $1 in
-
-  --is-lightweight)
-    # Used by our autoconf macros to check whether the available missing
-    # script is modern enough.
-    exit 0
-    ;;
-
-  --run)
-    # Back-compat with the calling convention used by older automake.
-    shift
-    ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
-to PROGRAM being missing or too old.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-
-Supported PROGRAM values:
-  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
-  bison     yacc      flex         lex       help2man
-
-Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
-'g' are ignored when checking the name.
-
-Send bug reports to <bug-automake@gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: unknown '$1' option"
-    echo 1>&2 "Try '$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# Run the given program, remember its exit status.
-"$@"; st=$?
-
-# If it succeeded, we are done.
-test $st -eq 0 && exit 0
-
-# Also exit now if we it failed (or wasn't found), and '--version' was
-# passed; such an option is passed most likely to detect whether the
-# program is present and works.
-case $2 in --version|--help) exit $st;; esac
-
-# Exit code 63 means version mismatch.  This often happens when the user
-# tries to use an ancient version of a tool on a file that requires a
-# minimum version.
-if test $st -eq 63; then
-  msg="probably too old"
-elif test $st -eq 127; then
-  # Program was missing.
-  msg="missing on your system"
-else
-  # Program was found and executed, but failed.  Give up.
-  exit $st
-fi
-
-perl_URL=http://www.perl.org/
-flex_URL=http://flex.sourceforge.net/
-gnu_software_URL=http://www.gnu.org/software
-
-program_details ()
-{
-  case $1 in
-    aclocal|automake)
-      echo "The '$1' program is part of the GNU Automake package:"
-      echo "<$gnu_software_URL/automake>"
-      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/autoconf>"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-    autoconf|autom4te|autoheader)
-      echo "The '$1' program is part of the GNU Autoconf package:"
-      echo "<$gnu_software_URL/autoconf/>"
-      echo "It also requires GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-  esac
-}
-
-give_advice ()
-{
-  # Normalize program name to check for.
-  normalized_program=`echo "$1" | sed '
-    s/^gnu-//; t
-    s/^gnu//; t
-    s/^g//; t'`
-
-  printf '%s\n' "'$1' is $msg."
-
-  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
-  case $normalized_program in
-    autoconf*)
-      echo "You should only need it if you modified 'configure.ac',"
-      echo "or m4 files included by it."
-      program_details 'autoconf'
-      ;;
-    autoheader*)
-      echo "You should only need it if you modified 'acconfig.h' or"
-      echo "$configure_deps."
-      program_details 'autoheader'
-      ;;
-    automake*)
-      echo "You should only need it if you modified 'Makefile.am' or"
-      echo "$configure_deps."
-      program_details 'automake'
-      ;;
-    aclocal*)
-      echo "You should only need it if you modified 'acinclude.m4' or"
-      echo "$configure_deps."
-      program_details 'aclocal'
-      ;;
-   autom4te*)
-      echo "You might have modified some maintainer files that require"
-      echo "the 'autom4te' program to be rebuilt."
-      program_details 'autom4te'
-      ;;
-    bison*|yacc*)
-      echo "You should only need it if you modified a '.y' file."
-      echo "You may want to install the GNU Bison package:"
-      echo "<$gnu_software_URL/bison/>"
-      ;;
-    lex*|flex*)
-      echo "You should only need it if you modified a '.l' file."
-      echo "You may want to install the Fast Lexical Analyzer package:"
-      echo "<$flex_URL>"
-      ;;
-    help2man*)
-      echo "You should only need it if you modified a dependency" \
-           "of a man page."
-      echo "You may want to install the GNU Help2man package:"
-      echo "<$gnu_software_URL/help2man/>"
-    ;;
-    makeinfo*)
-      echo "You should only need it if you modified a '.texi' file, or"
-      echo "any other file indirectly affecting the aspect of the manual."
-      echo "You might want to install the Texinfo package:"
-      echo "<$gnu_software_URL/texinfo/>"
-      echo "The spurious makeinfo call might also be the consequence of"
-      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
-      echo "want to install GNU make:"
-      echo "<$gnu_software_URL/make/>"
-      ;;
-    *)
-      echo "You might have modified some files without having the proper"
-      echo "tools for further handling them.  Check the 'README' file, it"
-      echo "often tells you about the needed prerequisites for installing"
-      echo "this package.  You may also peek at any GNU archive site, in"
-      echo "case some other package contains this missing '$1' program."
-      ;;
-  esac
-}
-
-give_advice "$1" | sed -e '1s/^/WARNING: /' \
-                       -e '2,$s/^/         /' >&2
-
-# Propagate the correct exit status (expected to be 127 for a program
-# not found, 63 for a program that failed due to version mismatch).
-exit $st
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
+/usr/share/automake-1.15/missing
Index: automake/test-driver
===================================================================
--- automake/test-driver	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ automake/test-driver	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,148 +1,1 @@
-#! /bin/sh
-# test-driver - basic testsuite driver script.
-
-scriptversion=2013-07-13.22; # UTC
-
-# Copyright (C) 2011-2014 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-# Make unconditional expansion of undefined variables an error.  This
-# helps a lot in preventing typo-related bugs.
-set -u
-
-usage_error ()
-{
-  echo "$0: $*" >&2
-  print_usage >&2
-  exit 2
-}
-
-print_usage ()
-{
-  cat <<END
-Usage:
-  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
-              [--expect-failure={yes|no}] [--color-tests={yes|no}]
-              [--enable-hard-errors={yes|no}] [--]
-              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
-The '--test-name', '--log-file' and '--trs-file' options are mandatory.
-END
-}
-
-test_name= # Used for reporting.
-log_file=  # Where to save the output of the test script.
-trs_file=  # Where to save the metadata of the test run.
-expect_failure=no
-color_tests=no
-enable_hard_errors=yes
-while test $# -gt 0; do
-  case $1 in
-  --help) print_usage; exit $?;;
-  --version) echo "test-driver $scriptversion"; exit $?;;
-  --test-name) test_name=$2; shift;;
-  --log-file) log_file=$2; shift;;
-  --trs-file) trs_file=$2; shift;;
-  --color-tests) color_tests=$2; shift;;
-  --expect-failure) expect_failure=$2; shift;;
-  --enable-hard-errors) enable_hard_errors=$2; shift;;
-  --) shift; break;;
-  -*) usage_error "invalid option: '$1'";;
-   *) break;;
-  esac
-  shift
-done
-
-missing_opts=
-test x"$test_name" = x && missing_opts="$missing_opts --test-name"
-test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
-test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
-if test x"$missing_opts" != x; then
-  usage_error "the following mandatory options are missing:$missing_opts"
-fi
-
-if test $# -eq 0; then
-  usage_error "missing argument"
-fi
-
-if test $color_tests = yes; then
-  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
-  red='[0;31m' # Red.
-  grn='[0;32m' # Green.
-  lgn='[1;32m' # Light green.
-  blu='[1;34m' # Blue.
-  mgn='[0;35m' # Magenta.
-  std='[m'     # No color.
-else
-  red= grn= lgn= blu= mgn= std=
-fi
-
-do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
-trap "st=129; $do_exit" 1
-trap "st=130; $do_exit" 2
-trap "st=141; $do_exit" 13
-trap "st=143; $do_exit" 15
-
-# Test script is run here.
-"$@" >$log_file 2>&1
-estatus=$?
-
-if test $enable_hard_errors = no && test $estatus -eq 99; then
-  tweaked_estatus=1
-else
-  tweaked_estatus=$estatus
-fi
-
-case $tweaked_estatus:$expect_failure in
-  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
-  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
-  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
-  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
-  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
-  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
-esac
-
-# Report the test outcome and exit status in the logs, so that one can
-# know whether the test passed or failed simply by looking at the '.log'
-# file, without the need of also peaking into the corresponding '.trs'
-# file (automake bug#11814).
-echo "$res $test_name (exit status: $estatus)" >>$log_file
-
-# Report outcome to console.
-echo "${col}${res}${std}: $test_name"
-
-# Register the test result, and other relevant metadata.
-echo ":test-result: $res" > $trs_file
-echo ":global-test-result: $res" >> $trs_file
-echo ":recheck: $recheck" >> $trs_file
-echo ":copy-in-global-log: $gcopy" >> $trs_file
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
+/usr/share/automake-1.15/test-driver
Index: automake/ylwrap
===================================================================
--- automake/ylwrap	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ automake/ylwrap	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,247 +1,1 @@
-#! /bin/sh
-# ylwrap - wrapper for lex/yacc invocations.
-
-scriptversion=2013-01-12.17; # UTC
-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
-#
-# Written by Tom Tromey <tromey@cygnus.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-get_dirname ()
-{
-  case $1 in
-    */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';;
-    # Otherwise,  we want the empty string (not ".").
-  esac
-}
-
-# guard FILE
-# ----------
-# The CPP macro used to guard inclusion of FILE.
-guard ()
-{
-  printf '%s\n' "$1"                                                    \
-    | sed                                                               \
-        -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'   \
-        -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'                        \
-        -e 's/__*/_/g'
-}
-
-# quote_for_sed [STRING]
-# ----------------------
-# Return STRING (or stdin) quoted to be used as a sed pattern.
-quote_for_sed ()
-{
-  case $# in
-    0) cat;;
-    1) printf '%s\n' "$1";;
-  esac \
-    | sed -e 's|[][\\.*]|\\&|g'
-}
-
-case "$1" in
-  '')
-    echo "$0: No files given.  Try '$0 --help' for more information." 1>&2
-    exit 1
-    ;;
-  --basedir)
-    basedir=$2
-    shift 2
-    ;;
-  -h|--h*)
-    cat <<\EOF
-Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
-
-Wrapper for lex/yacc invocations, renaming files as desired.
-
-  INPUT is the input file
-  OUTPUT is one file PROG generates
-  DESIRED is the file we actually want instead of OUTPUT
-  PROGRAM is program to run
-  ARGS are passed to PROG
-
-Any number of OUTPUT,DESIRED pairs may be used.
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v|--v*)
-    echo "ylwrap $scriptversion"
-    exit $?
-    ;;
-esac
-
-
-# The input.
-input=$1
-shift
-# We'll later need for a correct munging of "#line" directives.
-input_sub_rx=`get_dirname "$input" | quote_for_sed`
-case $input in
-  [\\/]* | ?:[\\/]*)
-    # Absolute path; do nothing.
-    ;;
-  *)
-    # Relative path.  Make it absolute.
-    input=`pwd`/$input
-    ;;
-esac
-input_rx=`get_dirname "$input" | quote_for_sed`
-
-# Since DOS filename conventions don't allow two dots,
-# the DOS version of Bison writes out y_tab.c instead of y.tab.c
-# and y_tab.h instead of y.tab.h. Test to see if this is the case.
-y_tab_nodot=false
-if test -f y_tab.c || test -f y_tab.h; then
-  y_tab_nodot=true
-fi
-
-# The parser itself, the first file, is the destination of the .y.c
-# rule in the Makefile.
-parser=$1
-
-# A sed program to s/FROM/TO/g for all the FROM/TO so that, for
-# instance, we rename #include "y.tab.h" into #include "parse.h"
-# during the conversion from y.tab.c to parse.c.
-sed_fix_filenames=
-
-# Also rename header guards, as Bison 2.7 for instance uses its header
-# guard in its implementation file.
-sed_fix_header_guards=
-
-while test $# -ne 0; do
-  if test x"$1" = x"--"; then
-    shift
-    break
-  fi
-  from=$1
-  # Handle y_tab.c and y_tab.h output by DOS
-  if $y_tab_nodot; then
-    case $from in
-      "y.tab.c") from=y_tab.c;;
-      "y.tab.h") from=y_tab.h;;
-    esac
-  fi
-  shift
-  to=$1
-  shift
-  sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;"
-  sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;"
-done
-
-# The program to run.
-prog=$1
-shift
-# Make any relative path in $prog absolute.
-case $prog in
-  [\\/]* | ?:[\\/]*) ;;
-  *[\\/]*) prog=`pwd`/$prog ;;
-esac
-
-dirname=ylwrap$$
-do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret'
-trap "ret=129; $do_exit" 1
-trap "ret=130; $do_exit" 2
-trap "ret=141; $do_exit" 13
-trap "ret=143; $do_exit" 15
-mkdir $dirname || exit 1
-
-cd $dirname
-
-case $# in
-  0) "$prog" "$input" ;;
-  *) "$prog" "$@" "$input" ;;
-esac
-ret=$?
-
-if test $ret -eq 0; then
-  for from in *
-  do
-    to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"`
-    if test -f "$from"; then
-      # If $2 is an absolute path name, then just use that,
-      # otherwise prepend '../'.
-      case $to in
-        [\\/]* | ?:[\\/]*) target=$to;;
-        *) target=../$to;;
-      esac
-
-      # Do not overwrite unchanged header files to avoid useless
-      # recompilations.  Always update the parser itself: it is the
-      # destination of the .y.c rule in the Makefile.  Divert the
-      # output of all other files to a temporary file so we can
-      # compare them to existing versions.
-      if test $from != $parser; then
-        realtarget=$target
-        target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'`
-      fi
-
-      # Munge "#line" or "#" directives.  Don't let the resulting
-      # debug information point at an absolute srcdir.  Use the real
-      # output file name, not yy.lex.c for instance.  Adjust the
-      # include guards too.
-      sed -e "/^#/!b"                           \
-          -e "s|$input_rx|$input_sub_rx|"       \
-          -e "$sed_fix_filenames"               \
-          -e "$sed_fix_header_guards"           \
-        "$from" >"$target" || ret=$?
-
-      # Check whether files must be updated.
-      if test "$from" != "$parser"; then
-        if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
-          echo "$to is unchanged"
-          rm -f "$target"
-        else
-          echo "updating $to"
-          mv -f "$target" "$realtarget"
-        fi
-      fi
-    else
-      # A missing file is only an error for the parser.  This is a
-      # blatant hack to let us support using "yacc -d".  If -d is not
-      # specified, don't fail when the header file is "missing".
-      if test "$from" = "$parser"; then
-        ret=1
-      fi
-    fi
-  done
-fi
-
-# Remove the directory.
-cd ..
-rm -rf $dirname
-
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
+/usr/share/automake-1.15/ylwrap
Index: benchmark/Makefile.am
===================================================================
--- benchmark/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,323 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am --
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 09:08:15 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jan 25 22:31:42 2016
+## Update Count     : 25
+###############################################################################
+
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+
+# applies to both programs
+include $(top_srcdir)/src/cfa.make
+
+UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+AM_CFLAGS = -O2 -Wall -I$(srcdir) -lrt -pthread
+AM_CFAFLAGS = -quiet -in-tree -nodebug
+AM_UPPFLAGS = -quiet -nodebug -multi
+
+TOOLSDIR = ${abs_top_srcdir}/tools/
+REPEAT   = ${TOOLSDIR}repeat
+STATS    = ${TOOLSDIR}stat.py
+repeats  = 30
+skipcompile = no
+TIME_FORMAT = "%E"
+PRINT_FORMAT = %20s: #Comments needed for spacing
+
+LIBFIBRE_DIR ?= /home/tdelisle/software/KOS/src/
+
+.NOTPARALLEL:
+
+noinst_PROGRAMS =
+
+all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
+
+%.run : %$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} ./a.out | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log
+
+%.runquiet :
+	@+make $(basename $@) CFLAGS="-w"
+	@taskset -c 1 ./a.out
+	@rm -f a.out
+
+%.make :
+	@printf "${PRINT_FORMAT}" $(basename $(subst compile-,,$@))
+	@+/usr/bin/time -f ${TIME_FORMAT} make $(basename $@) 2>&1
+
+${REPEAT} :
+	@+make -C ${TOOLSDIR} repeat
+
+## =========================================================================================================
+
+jenkins$(EXEEXT):
+	@echo "{"
+	@echo -e '\t"githash": "'${githash}'",'
+	@echo -e '\t"arch": "'   ${arch}   '",'
+@DOifskipcompile@
+	@echo -e '\t"compile": {'
+	@+make compile TIME_FORMAT='%e,' PRINT_FORMAT='\t\t\"%s\" :'
+	@echo -e '\t\t"dummy" : {}'
+	@echo -e '\t},'
+@DOendif@
+	@echo -e '\t"ctxswitch": {'
+	@echo -en '\t\t"coroutine":'
+	@+make ctxswitch-cfa_coroutine.runquiet
+	@echo -en '\t\t,"thread":'
+	@+make ctxswitch-cfa_thread.runquiet
+	@echo -e '\t},'
+	@echo -e '\t"mutex": ['
+	@echo -en '\t\t'
+	@+make mutex-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make mutex-cfa2.runquiet
+	@echo -e '\t],'
+	@echo -e '\t"scheduling": ['
+	@echo -en '\t\t'
+	@+make signal-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make signal-cfa2.runquiet
+	@echo -en '\t\t,'
+	@+make waitfor-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make waitfor-cfa2.runquiet
+	@echo -e '\n\t],'
+	@echo -e '\t"epoch": ' $(shell date +%s)
+	@echo "}"
+
+## =========================================================================================================
+loop$(EXEEXT):
+	$(COMPILE) -DBENCH_N=5000000000 loop.c
+
+function$(EXEEXT):
+	$(COMPILE) -DBENCH_N=5000000000 function.c
+
+fetch_add$(EXEEXT):
+	$(COMPILE) -DBENCH_N=500000000  fetch_add.c
+
+## =========================================================================================================
+ctxswitch$(EXEEXT): \
+	loop.run				\
+	function.run			\
+	fetch_add.run			\
+	ctxswitch-pthread.run		\
+	ctxswitch-cfa_coroutine.run	\
+	ctxswitch-cfa_thread.run	\
+	ctxswitch-cfa_thread2.run	\
+	ctxswitch-upp_coroutine.run	\
+	ctxswitch-upp_thread.run	\
+	-ctxswitch-kos_fibre.run	\
+	-ctxswitch-kos_fibre2.run	\
+	ctxswitch-goroutine.run		\
+	ctxswitch-java_thread.run
+
+ctxswitch-pthread$(EXEEXT):
+	@$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c
+
+ctxswitch-cfa_coroutine$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.c
+
+ctxswitch-cfa_thread$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.c
+
+ctxswitch-cfa_thread2$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.c
+
+ctxswitch-upp_coroutine$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_cor.cc
+
+ctxswitch-upp_thread$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc
+
+ctxswitch-kos_fibre$(EXEEXT):
+	@$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp  -I$(LIBFIBRE_DIR) -lfibre
+
+ctxswitch-kos_fibre2$(EXEEXT):
+	@$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
+
+ctxswitch-goroutine$(EXEEXT):
+	@go build -o a.out $(srcdir)/ctxswitch/goroutine.go
+
+ctxswitch-java_thread$(EXEEXT):
+	@javac $(srcdir)/ctxswitch/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd ctxswitch && java JavaThread" >> a.out
+	@chmod a+x a.out
+
+## =========================================================================================================
+mutex$(EXEEXT) :\
+	loop.run			\
+	function.run		\
+	fetch_add.run		\
+	mutex-pthread_lock.run	\
+	mutex-upp.run		\
+	mutex-cfa1.run		\
+	mutex-cfa2.run		\
+	mutex-cfa4.run		\
+	mutex-java_thread.run
+
+mutex-pthread_lock$(EXEEXT):
+	@$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
+
+mutex-upp$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/upp.cc
+
+mutex-cfa1$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.c
+
+mutex-cfa2$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.c
+
+mutex-cfa4$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.c
+
+mutex-java_thread$(EXEEXT):
+	@javac $(srcdir)/mutex/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd mutex && java JavaThread" >> a.out
+	@chmod a+x a.out
+
+## =========================================================================================================
+signal$(EXEEXT) :\
+	signal-pthread_cond.run \
+	signal-upp.run		\
+	signal-cfa1.run		\
+	signal-cfa2.run		\
+	signal-cfa4.run		\
+	signal-java_thread.run
+
+signal-pthread_cond$(EXEEXT):
+	@$(COMPILE)    -DBENCH_N=500000  $(srcdir)/schedint/pthreads.c
+
+signal-upp$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedint/upp.cc
+
+signal-cfa1$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.c
+
+signal-cfa2$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.c
+
+signal-cfa4$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.c
+
+signal-java_thread$(EXEEXT):
+	@javac $(srcdir)/schedint/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd schedint && java JavaThread" >> a.out
+	@chmod a+x a.out
+
+
+## =========================================================================================================
+waitfor$(EXEEXT) :\
+	waitfor-upp.run		\
+	waitfor-cfa1.run		\
+	waitfor-cfa2.run		\
+	waitfor-cfa4.run
+
+waitfor-upp$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedext/upp.cc
+
+waitfor-cfa1$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa1.c
+
+waitfor-cfa2$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa2.c
+
+waitfor-cfa4$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.c
+
+## =========================================================================================================
+creation$(EXEEXT) :\
+	creation-pthread.run			\
+	creation-cfa_coroutine.run		\
+	creation-cfa_coroutine_eager.run	\
+	creation-cfa_thread.run			\
+	creation-upp_coroutine.run		\
+	creation-upp_thread.run			\
+	creation-goroutine.run			\
+	creation-java_thread.run
+
+creation-cfa_coroutine$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.c
+
+creation-cfa_coroutine_eager$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.c
+
+creation-cfa_thread$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.c
+
+creation-upp_coroutine$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_cor.cc
+
+creation-upp_thread$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_thrd.cc
+
+creation-pthread$(EXEEXT):
+	@$(COMPILE)    -DBENCH_N=250000   $(srcdir)/creation/pthreads.c
+
+creation-goroutine$(EXEEXT):
+	@go build -o a.out $(srcdir)/creation/goroutine.go
+
+creation-java_thread$(EXEEXT):
+	@javac $(srcdir)/creation/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd creation && java JavaThread" >> a.out
+	@chmod a+x a.out
+
+## =========================================================================================================
+
+compile$(EXEEXT) :\
+	compile-array.make	\
+	compile-attributes.make	\
+	compile-empty.make  	\
+	compile-expression.make	\
+	compile-io.make		\
+	compile-monitor.make	\
+	compile-operators.make	\
+	compile-typeof.make
+
+
+testdir = $(top_srcdir)/tests
+
+compile-array$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.c
+
+compile-attributes$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/attributes.c
+
+compile-empty$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.c
+
+compile-expression$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.c
+
+compile-io$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.c
+
+compile-monitor$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.c
+
+compile-operators$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.c
+
+compile-thread$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.c
+
+compile-typeof$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.c
+
Index: benchmark/Makefile.in
===================================================================
--- benchmark/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,746 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+noinst_PROGRAMS =
+subdir = benchmark
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/src/cfa.make \
+	compile
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKEND_CC = @BACKEND_CC@
+BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFACC = @CFACC@
+CFACPP = @CFACPP@
+CFA_BACKEND_CC = @CFA_BACKEND_CC@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_FLAGS = @CFA_FLAGS@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_NAME = @CFA_NAME@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_DIR = @DRIVER_DIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+HOST_FLAGS = @HOST_FLAGS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBCFA_TARGET_DIRS = @LIBCFA_TARGET_DIRS@
+LIBCFA_TARGET_MAKEFILES = @LIBCFA_TARGET_MAKEFILES@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
+VERSION = @VERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+CFACOMPILE = $(CFACC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CFA = $(am__v_CFA_@AM_V@)
+am__v_CFA_ = $(am__v_CFA_@AM_DEFAULT_V@)
+am__v_CFA_0 = @echo "  CFA     " $@;
+am__v_CFA_1 = 
+
+# applies to both programs
+UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_CFLAGS = -O2 -Wall -I$(srcdir) -lrt -pthread
+AM_CFAFLAGS = -quiet -in-tree -nodebug
+AM_UPPFLAGS = -quiet -nodebug -multi
+TOOLSDIR = ${abs_top_srcdir}/tools/
+REPEAT = ${TOOLSDIR}repeat
+STATS = ${TOOLSDIR}stat.py
+repeats = 30
+skipcompile = no
+TIME_FORMAT = "%E"
+PRINT_FORMAT = %20s: #Comments needed for spacing
+testdir = $(top_srcdir)/tests
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cfa .o
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/src/cfa.make $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign benchmark/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign benchmark/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+$(top_srcdir)/src/cfa.make $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstPROGRAMS:
+	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic \
+	clean-noinstPROGRAMS cscopelist-am ctags-am distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
+	uninstall-am
+
+.PRECIOUS: Makefile
+
+
+.cfa.o: $(CFACC) $(CFACPP)
+	$(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+	$(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+
+LIBFIBRE_DIR ?= /home/tdelisle/software/KOS/src/
+
+.NOTPARALLEL:
+
+all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
+
+%.run : %$(EXEEXT) ${REPEAT}
+	@rm -f .result.log
+	@echo "------------------------------------------------------"
+	@echo $<
+	@${REPEAT} ${repeats} ./a.out | tee -a .result.log
+	@${STATS} .result.log
+	@echo "------------------------------------------------------"
+	@rm -f a.out .result.log
+
+%.runquiet :
+	@+make $(basename $@) CFLAGS="-w"
+	@taskset -c 1 ./a.out
+	@rm -f a.out
+
+%.make :
+	@printf "${PRINT_FORMAT}" $(basename $(subst compile-,,$@))
+	@+/usr/bin/time -f ${TIME_FORMAT} make $(basename $@) 2>&1
+
+${REPEAT} :
+	@+make -C ${TOOLSDIR} repeat
+
+jenkins$(EXEEXT):
+	@echo "{"
+	@echo -e '\t"githash": "'${githash}'",'
+	@echo -e '\t"arch": "'   ${arch}   '",'
+@DOifskipcompile@
+	@echo -e '\t"compile": {'
+	@+make compile TIME_FORMAT='%e,' PRINT_FORMAT='\t\t\"%s\" :'
+	@echo -e '\t\t"dummy" : {}'
+	@echo -e '\t},'
+@DOendif@
+	@echo -e '\t"ctxswitch": {'
+	@echo -en '\t\t"coroutine":'
+	@+make ctxswitch-cfa_coroutine.runquiet
+	@echo -en '\t\t,"thread":'
+	@+make ctxswitch-cfa_thread.runquiet
+	@echo -e '\t},'
+	@echo -e '\t"mutex": ['
+	@echo -en '\t\t'
+	@+make mutex-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make mutex-cfa2.runquiet
+	@echo -e '\t],'
+	@echo -e '\t"scheduling": ['
+	@echo -en '\t\t'
+	@+make signal-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make signal-cfa2.runquiet
+	@echo -en '\t\t,'
+	@+make waitfor-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make waitfor-cfa2.runquiet
+	@echo -e '\n\t],'
+	@echo -e '\t"epoch": ' $(shell date +%s)
+	@echo "}"
+
+loop$(EXEEXT):
+	$(COMPILE) -DBENCH_N=5000000000 loop.c
+
+function$(EXEEXT):
+	$(COMPILE) -DBENCH_N=5000000000 function.c
+
+fetch_add$(EXEEXT):
+	$(COMPILE) -DBENCH_N=500000000  fetch_add.c
+
+ctxswitch$(EXEEXT): \
+	loop.run				\
+	function.run			\
+	fetch_add.run			\
+	ctxswitch-pthread.run		\
+	ctxswitch-cfa_coroutine.run	\
+	ctxswitch-cfa_thread.run	\
+	ctxswitch-cfa_thread2.run	\
+	ctxswitch-upp_coroutine.run	\
+	ctxswitch-upp_thread.run	\
+	-ctxswitch-kos_fibre.run	\
+	-ctxswitch-kos_fibre2.run	\
+	ctxswitch-goroutine.run		\
+	ctxswitch-java_thread.run
+
+ctxswitch-pthread$(EXEEXT):
+	@$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c
+
+ctxswitch-cfa_coroutine$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.c
+
+ctxswitch-cfa_thread$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.c
+
+ctxswitch-cfa_thread2$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.c
+
+ctxswitch-upp_coroutine$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_cor.cc
+
+ctxswitch-upp_thread$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc
+
+ctxswitch-kos_fibre$(EXEEXT):
+	@$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp  -I$(LIBFIBRE_DIR) -lfibre
+
+ctxswitch-kos_fibre2$(EXEEXT):
+	@$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
+
+ctxswitch-goroutine$(EXEEXT):
+	@go build -o a.out $(srcdir)/ctxswitch/goroutine.go
+
+ctxswitch-java_thread$(EXEEXT):
+	@javac $(srcdir)/ctxswitch/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd ctxswitch && java JavaThread" >> a.out
+	@chmod a+x a.out
+
+mutex$(EXEEXT) :\
+	loop.run			\
+	function.run		\
+	fetch_add.run		\
+	mutex-pthread_lock.run	\
+	mutex-upp.run		\
+	mutex-cfa1.run		\
+	mutex-cfa2.run		\
+	mutex-cfa4.run		\
+	mutex-java_thread.run
+
+mutex-pthread_lock$(EXEEXT):
+	@$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c
+
+mutex-upp$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/upp.cc
+
+mutex-cfa1$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.c
+
+mutex-cfa2$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.c
+
+mutex-cfa4$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.c
+
+mutex-java_thread$(EXEEXT):
+	@javac $(srcdir)/mutex/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd mutex && java JavaThread" >> a.out
+	@chmod a+x a.out
+
+signal$(EXEEXT) :\
+	signal-pthread_cond.run \
+	signal-upp.run		\
+	signal-cfa1.run		\
+	signal-cfa2.run		\
+	signal-cfa4.run		\
+	signal-java_thread.run
+
+signal-pthread_cond$(EXEEXT):
+	@$(COMPILE)    -DBENCH_N=500000  $(srcdir)/schedint/pthreads.c
+
+signal-upp$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedint/upp.cc
+
+signal-cfa1$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.c
+
+signal-cfa2$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.c
+
+signal-cfa4$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.c
+
+signal-java_thread$(EXEEXT):
+	@javac $(srcdir)/schedint/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd schedint && java JavaThread" >> a.out
+	@chmod a+x a.out
+
+waitfor$(EXEEXT) :\
+	waitfor-upp.run		\
+	waitfor-cfa1.run		\
+	waitfor-cfa2.run		\
+	waitfor-cfa4.run
+
+waitfor-upp$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedext/upp.cc
+
+waitfor-cfa1$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa1.c
+
+waitfor-cfa2$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa2.c
+
+waitfor-cfa4$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.c
+
+creation$(EXEEXT) :\
+	creation-pthread.run			\
+	creation-cfa_coroutine.run		\
+	creation-cfa_coroutine_eager.run	\
+	creation-cfa_thread.run			\
+	creation-upp_coroutine.run		\
+	creation-upp_thread.run			\
+	creation-goroutine.run			\
+	creation-java_thread.run
+
+creation-cfa_coroutine$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.c
+
+creation-cfa_coroutine_eager$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.c
+
+creation-cfa_thread$(EXEEXT):
+	@$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.c
+
+creation-upp_coroutine$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_cor.cc
+
+creation-upp_thread$(EXEEXT):
+	@$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_thrd.cc
+
+creation-pthread$(EXEEXT):
+	@$(COMPILE)    -DBENCH_N=250000   $(srcdir)/creation/pthreads.c
+
+creation-goroutine$(EXEEXT):
+	@go build -o a.out $(srcdir)/creation/goroutine.go
+
+creation-java_thread$(EXEEXT):
+	@javac $(srcdir)/creation/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd creation && java JavaThread" >> a.out
+	@chmod a+x a.out
+
+compile$(EXEEXT) :\
+	compile-array.make	\
+	compile-attributes.make	\
+	compile-empty.make  	\
+	compile-expression.make	\
+	compile-io.make		\
+	compile-monitor.make	\
+	compile-operators.make	\
+	compile-typeof.make
+
+compile-array$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.c
+
+compile-attributes$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/attributes.c
+
+compile-empty$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.c
+
+compile-expression$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.c
+
+compile-io$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.c
+
+compile-monitor$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.c
+
+compile-operators$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.c
+
+compile-thread$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.c
+
+compile-typeof$(EXEEXT):
+	@$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.c
+
+# 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.
+.NOEXPORT:
Index: benchmark/Monitor.c
===================================================================
--- benchmark/Monitor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/Monitor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,32 @@
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include "bench.h"
+
+monitor mon_t {};
+
+mon_t mon1, mon2;
+
+void dummy( mon_t * mutex a ) {}
+void dummy( mon_t * mutex a, mon_t * mutex b ) {}
+
+int main() {
+	long long int StartTime, EndTime;
+
+	StartTime = Time();
+	for( int i = 0; i < N; i++ ) {
+		dummy( &mon1 );
+	}
+	EndTime = Time();
+
+	sout | ( EndTime - StartTime ) / N;
+
+	StartTime = Time();
+	for( int i = 0; i < N; i++ ) {
+		dummy( &mon1, &mon2 );
+	}
+	EndTime = Time();
+
+	sout | ( EndTime - StartTime ) / N | endl;
+}
Index: benchmark/bench.h
===================================================================
--- benchmark/bench.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/bench.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,54 @@
+#pragma once
+
+#if defined(__cforall)
+extern "C" {
+#endif
+	#include <stdlib.h>
+	#include <unistd.h>					// sysconf
+#if ! defined(__cforall)
+	#include <time.h>
+	#include <sys/time.h>
+#else
+}
+#include <time.hfa>
+#endif
+
+
+static inline unsigned long long int bench_time() {
+    struct timespec ts;
+    clock_gettime(
+#if defined( __linux__ )
+	 CLOCK_THREAD_CPUTIME_ID,
+#elif defined( __freebsd__ )
+	 CLOCK_PROF,
+#elif defined( __solaris__ )
+	 CLOCK_HIGHRES,
+#else
+    #error uC++ : internal error, unsupported architecture
+#endif
+	 &ts );
+    return 1000000000LL * ts.tv_sec + ts.tv_nsec;
+} // Time
+
+#ifndef BENCH_N
+#define BENCH_N 500 //10000000
+#endif
+
+#define BENCH(statement, output)		\
+	size_t n = BENCH_N;			\
+	if( argc > 2 ) return 1;		\
+	if( argc == 2 ) {				\
+		n = atoi(argv[1]);		\
+	}						\
+	long long int StartTime, EndTime;	\
+	StartTime = bench_time();		\
+	statement;					\
+	EndTime = bench_time();			\
+	unsigned long long int output = 	\
+	( EndTime - StartTime ) / n;
+
+#if defined(__cforall)
+Duration default_preemption() {
+	return 0;
+}
+#endif
Index: benchmark/compile/empty.c
===================================================================
--- benchmark/compile/empty.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/compile/empty.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,3 @@
+int main() {
+	return 0;
+}
Index: benchmark/creation/JavaThread.java
===================================================================
--- benchmark/creation/JavaThread.java	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/creation/JavaThread.java	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+public class JavaThread {
+	public static class MyThread extends Thread {
+		@Override
+		public void run() {}
+	}
+
+	public static void main(String[] args) throws InterruptedException {
+		int NoOfTimes = 50000;
+		long start = System.nanoTime();
+		for(int i = 1; i <= NoOfTimes; i += 1) {
+			JavaThread.MyThread m = new JavaThread.MyThread();
+        		m.start();
+			m.join();
+		}
+		long end = System.nanoTime();
+		System.out.println( (end - start) / NoOfTimes);
+	}
+}
Index: benchmark/creation/cfa_cor.c
===================================================================
--- benchmark/creation/cfa_cor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/creation/cfa_cor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <coroutine.hfa>
+
+#include "bench.h"
+
+coroutine MyCoroutine {};
+void ?{} (MyCoroutine & this) {
+#ifdef EAGER
+	prime(this);
+#endif
+}
+void main(MyCoroutine & this) {}
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			MyCoroutine m;
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/creation/cfa_thrd.c
===================================================================
--- benchmark/creation/cfa_thrd.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/creation/cfa_thrd.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <thread.hfa>
+
+#include "bench.h"
+
+thread MyThread {};
+void main(MyThread & this) {}
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			MyThread m;
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/creation/goroutine.go
===================================================================
--- benchmark/creation/goroutine.go	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/creation/goroutine.go	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,27 @@
+package main
+
+import (
+    "fmt"
+    "time"
+)
+
+var shake chan bool = make( chan bool )
+
+func noop() {
+	shake <- true   // indicate completion
+}
+
+//=======================================
+// benchmark driver
+//=======================================
+
+func main() {
+	const NoOfTimes = 500000
+	start := time.Now()
+	for i := 1; i <= NoOfTimes; i += 1 {
+		go noop()		// creation
+	}
+	end := time.Now()
+	fmt.Printf("%d\n", end.Sub(start) / time.Duration(NoOfTimes))
+	<- shake
+}
Index: benchmark/creation/pthreads.c
===================================================================
--- benchmark/creation/pthreads.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/creation/pthreads.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,28 @@
+#include <pthread.h>
+#include <stdio.h>
+
+#include "bench.h"
+
+static void *foo(void *arg) {
+    return arg;
+}
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			pthread_t thread;
+			if (pthread_create(&thread, NULL, foo, NULL) < 0) {
+				perror( "failure" );
+				return 1;
+			}
+
+			if (pthread_join( thread, NULL) < 0) {
+				perror( "failure" );
+				return 1;
+			}
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/creation/upp_cor.cc
===================================================================
--- benchmark/creation/upp_cor.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/creation/upp_cor.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+#include <cstdio>
+
+#include "bench.h"
+
+_Coroutine MyCor {
+	void main() {}
+};
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			MyCor m;
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/creation/upp_thrd.cc
===================================================================
--- benchmark/creation/upp_thrd.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/creation/upp_thrd.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+#include <cstdio>
+
+#include "bench.h"
+
+_Task MyThread {
+	void main() {}
+};
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			MyThread m;
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/ctxswitch/JavaThread.java
===================================================================
--- benchmark/ctxswitch/JavaThread.java	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/ctxswitch/JavaThread.java	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,11 @@
+public class JavaThread {
+	public static void main(String[] args) {
+		int NoOfTimes = 5000000;
+		long start = System.nanoTime();
+		for(int i = 1; i <= NoOfTimes; i += 1) {
+			Thread.yield();
+		}
+		long end = System.nanoTime();
+		System.out.println( (end - start) / NoOfTimes);
+	}
+}
Index: benchmark/ctxswitch/cfa_cor.c
===================================================================
--- benchmark/ctxswitch/cfa_cor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/ctxswitch/cfa_cor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <kernel.hfa>
+#include <thread.hfa>
+
+#include "bench.h"
+
+coroutine GreatSuspender {};
+
+void ?{}( GreatSuspender & this ) {
+	prime(this);
+}
+
+void main( GreatSuspender & this ) {
+	while( true ) {
+		suspend();
+	}
+}
+
+int main(int argc, char* argv[]) {
+	GreatSuspender s;
+
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			resume( s );
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/ctxswitch/cfa_thrd.c
===================================================================
--- benchmark/ctxswitch/cfa_thrd.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/ctxswitch/cfa_thrd.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include <thread.hfa>
+
+#include "bench.h"
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			yield();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/ctxswitch/cfa_thrd2.c
===================================================================
--- benchmark/ctxswitch/cfa_thrd2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/ctxswitch/cfa_thrd2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <thread.hfa>
+
+#include "bench.h"
+
+volatile bool done = false;
+
+thread Fibre {};
+
+void main(Fibre & this) {
+	while(!done) {
+		yield();
+	}
+}
+
+int main(int argc, char* argv[]) {
+	Fibre f1;
+  	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			yield();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	done = true;
+	return 0;
+}
Index: benchmark/ctxswitch/goroutine.go
===================================================================
--- benchmark/ctxswitch/goroutine.go	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/ctxswitch/goroutine.go	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,33 @@
+package main
+
+import (
+    "fmt"
+    "runtime"
+    "time"
+)
+
+//=======================================
+// time context switch
+//=======================================
+
+var shake chan bool = make( chan bool )
+
+func ContextSwitch(N int) {
+	start := time.Now()
+	for i := 1; i <= N; i += 1 {
+		runtime.Gosched()
+	}
+	end := time.Now()
+	fmt.Printf("%d\n", end.Sub(start) / time.Duration(N))
+	shake <- true   // indicate completion
+}
+
+//=======================================
+// benchmark driver
+//=======================================
+
+func main() {
+	const NoOfTimes = 10000000
+	go ContextSwitch( NoOfTimes )		// context switch
+	<- shake
+}
Index: benchmark/ctxswitch/kos_fibre.cpp
===================================================================
--- benchmark/ctxswitch/kos_fibre.cpp	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/ctxswitch/kos_fibre.cpp	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,14 @@
+#include <libfibre/fibre.h>
+
+#include "bench.h"
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			Fibre::yield();
+		},
+		result
+	)
+	printf("%llu\n", result);
+	return 0;
+}
Index: benchmark/ctxswitch/kos_fibre2.cpp
===================================================================
--- benchmark/ctxswitch/kos_fibre2.cpp	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/ctxswitch/kos_fibre2.cpp	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,26 @@
+#include <libfibre/fibre.h>
+
+#include "bench.h"
+
+volatile bool done = false;
+
+static void f1main() {
+	while(!done) {
+		Fibre::yield();
+	}
+}
+
+int main(int argc, char* argv[]) {
+	Fibre* f1 = (new Fibre)->run(f1main);
+  	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			Fibre::yield();
+		},
+		result
+	)
+	printf("%llu\n", result);
+	done = true;
+	Fibre::yield();
+	f1->join();
+	return 0;
+}
Index: benchmark/ctxswitch/pthreads.c
===================================================================
--- benchmark/ctxswitch/pthreads.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/ctxswitch/pthreads.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sched.h>
+
+#include "bench.h"
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			sched_yield();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/ctxswitch/upp_cor.cc
===================================================================
--- benchmark/ctxswitch/upp_cor.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/ctxswitch/upp_cor.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,33 @@
+#include <cstdio>
+
+#include "bench.h"
+
+_Coroutine GreatSuspender {
+public:
+	GreatSuspender() {
+		resume();
+	}
+
+	void do_resume() {
+		resume();
+	}
+private:
+	void main() {
+		while( true ) {
+			suspend();
+		}
+	}
+};
+
+int main(int argc, char* argv[]) {
+	GreatSuspender s;
+
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			s.do_resume();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/ctxswitch/upp_thrd.cc
===================================================================
--- benchmark/ctxswitch/upp_thrd.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/ctxswitch/upp_thrd.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,14 @@
+#include <cstdio>
+
+#include "bench.h"
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			uThisTask().yield();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/fetch_add.c
===================================================================
--- benchmark/fetch_add.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/fetch_add.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,22 @@
+#include <stdio.h>
+
+#include "bench.h"
+
+volatile int value;
+
+void __attribute__((noinline)) do_call() {
+	__atomic_add_fetch( &value, 1, __ATOMIC_SEQ_CST );
+	asm volatile ("");
+	__atomic_sub_fetch( &value, 1, __ATOMIC_SEQ_CST );
+}
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			do_call();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/function.c
===================================================================
--- benchmark/function.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/function.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+#include <stdio.h>
+
+#include "bench.h"
+
+void __attribute__((noinline)) do_call() {
+	asm volatile("" ::: "memory");
+}
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			do_call();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/interrupt_linux.c
===================================================================
--- benchmark/interrupt_linux.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/interrupt_linux.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,35 @@
+#include <pthread.h>
+#include <stdlib.h>
+#include <signal.h>
+
+#define __CFA_SIGCXT__ ucontext_t *
+#define __CFA_SIGPARMS__ __attribute__((unused)) int sig, __attribute__((unused)) siginfo_t *sfp, __attribute__((unused)) __CFA_SIGCXT__ cxt
+
+void sigHandler( __CFA_SIGPARMS__ ) {
+	sigset_t mask;
+	sigemptyset( &mask );
+	sigaddset( &mask, SIGUSR1 );
+
+	if ( sigprocmask( SIG_UNBLOCK, &mask, NULL ) == -1 ) {
+		abort();
+	} // if
+}
+
+int main() {
+
+	struct sigaction act;
+
+	act.sa_sigaction = (void (*)(int, siginfo_t *, void *))sigHandler;
+	sigemptyset( &act.sa_mask );
+	sigaddset( &act.sa_mask, SIGUSR1 );
+
+	act.sa_flags = SA_SIGINFO;
+
+	if ( sigaction( SIGUSR1, &act, NULL ) == -1 ) {
+		abort();
+	} // if
+
+	for( int i = 0; i < 50000000ul; i++ ) {
+		pthread_kill( pthread_self(), SIGUSR1 );
+	}
+}
Index: benchmark/loop.c
===================================================================
--- benchmark/loop.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/loop.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+#include "bench.h"
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			asm volatile("" ::: "memory");
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/mutex/JavaThread.java
===================================================================
--- benchmark/mutex/JavaThread.java	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/mutex/JavaThread.java	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,14 @@
+public class JavaThread {
+	public synchronized void noop() {}
+
+	public static void main(String[] args) {
+		int NoOfTimes = 5000000;
+		JavaThread j = new JavaThread();
+		long start = System.nanoTime();
+		for(int i = 1; i <= NoOfTimes; i += 1) {
+			j.noop();
+		}
+		long end = System.nanoTime();
+		System.out.println( (end - start) / NoOfTimes);
+	}
+}
Index: benchmark/mutex/cfa1.c
===================================================================
--- benchmark/mutex/cfa1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/mutex/cfa1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,19 @@
+#include <monitor.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+monitor M {};
+void __attribute__((noinline)) call( M & mutex m ) {}
+
+int main(int argc, char* argv[]) {
+	M m;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call(m);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/mutex/cfa2.c
===================================================================
--- benchmark/mutex/cfa2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/mutex/cfa2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,19 @@
+#include <monitor.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+monitor M {};
+void __attribute__((noinline)) call( M & mutex m1, M & mutex m2 ) {}
+
+int main(int argc, char* argv[]) {
+	M m1, m2;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call(m1, m2);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/mutex/cfa4.c
===================================================================
--- benchmark/mutex/cfa4.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/mutex/cfa4.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,20 @@
+#include <monitor.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+
+monitor M {};
+void __attribute__((noinline)) call( M & mutex m1, M & mutex m2, M & mutex m3, M & mutex m4 ) {}
+
+int main(int argc, char* argv[]) {
+	M m1, m2, m3, m4;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call(m1, m2, m3, m4);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/mutex/pthreads.c
===================================================================
--- benchmark/mutex/pthreads.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/mutex/pthreads.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,22 @@
+#include <pthread.h>
+#include <stdio.h>
+
+#include "bench.h"
+
+pthread_mutex_t mutex;
+
+void __attribute__((noinline)) call() {
+	 pthread_mutex_lock  (&mutex);
+	 pthread_mutex_unlock(&mutex);
+}
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/mutex/upp.cc
===================================================================
--- benchmark/mutex/upp.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/mutex/upp.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,20 @@
+#include <cstdio>
+
+#include "bench.h"
+
+_Monitor MyMonitor {
+public:
+	void __attribute__((noinline)) call() {}
+};
+
+int main(int argc, char* argv[]) {
+	MyMonitor m;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			m.call();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: benchmark/schedext/cfa1.c
===================================================================
--- benchmark/schedext/cfa1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/schedext/cfa1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,44 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+monitor M {};
+M m1;
+
+void __attribute__((noinline)) call( M & mutex a1 ) {}
+
+int  __attribute__((noinline)) wait( M & mutex a1 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			waitfor(call, a1);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1);
+}
Index: benchmark/schedext/cfa2.c
===================================================================
--- benchmark/schedext/cfa2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/schedext/cfa2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,44 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+monitor M {};
+M m1, m2;
+
+void __attribute__((noinline)) call( M & mutex a1, M & mutex a2 ) {}
+
+int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			waitfor(call, a1, a2);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1, m2); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1, m2);
+}
Index: benchmark/schedext/cfa4.c
===================================================================
--- benchmark/schedext/cfa4.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/schedext/cfa4.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,44 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+monitor M {};
+M m1, m2, m3, m4;
+
+void __attribute__((noinline)) call( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {}
+
+int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			waitfor(call, a1, a2, a3, a4);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1, m2, m3, m4); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1, m2, m3, m4);
+}
Index: benchmark/schedext/upp.cc
===================================================================
--- benchmark/schedext/upp.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/schedext/upp.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,43 @@
+#include <cstdio>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+_Monitor M {
+public:
+	void __attribute__((noinline)) call() {}
+
+	int __attribute__((noinline)) wait() {
+		go = 1;
+		BENCH(
+			for (size_t i = 0; i < n; i++) {
+				_Accept(call);
+			},
+			result
+		)
+
+		printf("%llu\n", result);
+		go = 0;
+		return 0;
+	}
+};
+
+M m;
+
+_Task T {
+	void main() {
+		while(go == 0) { yield(); }
+		while(go == 1) { m.call(); }
+
+	}
+};
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return m.wait();
+}
Index: benchmark/schedint/JavaThread.java
===================================================================
--- benchmark/schedint/JavaThread.java	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/schedint/JavaThread.java	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,42 @@
+class Monitor {
+	public static volatile Boolean go = false;
+}
+
+class Signaller extends Thread {
+	Monitor m;
+	Signaller(Monitor m) {
+		this.m = m;
+	}
+
+	public void run() {
+		Monitor.go = true;
+		while( Monitor.go ) {
+			synchronized(this.m) {
+				this.m.notify();
+			}
+		}
+	}
+}
+
+public class JavaThread {
+	public static void main(String[] args) throws InterruptedException {
+		int NoOfTimes = 50000;
+		Monitor m = new Monitor();
+		long start, end;
+		Signaller s = new Signaller(m);
+		synchronized(m) {
+			s.start();
+			while( !Monitor.go ) {
+				Thread.yield();
+			}
+			start = System.nanoTime();
+			for(int i = 1; i <= NoOfTimes; i += 1) {
+				m.wait();
+			}
+			end = System.nanoTime();
+		}
+		Monitor.go = false;
+		s.join();
+		System.out.println( (end - start) / NoOfTimes);
+	}
+}
Index: benchmark/schedint/cfa1.c
===================================================================
--- benchmark/schedint/cfa1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/schedint/cfa1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,47 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+condition c;
+monitor M {};
+M m1;
+
+void __attribute__((noinline)) call( M & mutex a1 ) {
+	signal(c);
+}
+
+int  __attribute__((noinline)) wait( M & mutex a1 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			wait(c);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1);
+}
Index: benchmark/schedint/cfa2.c
===================================================================
--- benchmark/schedint/cfa2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/schedint/cfa2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,47 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+condition c;
+monitor M {};
+M m1, m2;
+
+void __attribute__((noinline)) call( M & mutex a1, M & mutex a2 ) {
+	signal(c);
+}
+
+int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			wait(c);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1, m2); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1, m2);
+}
Index: benchmark/schedint/cfa4.c
===================================================================
--- benchmark/schedint/cfa4.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/schedint/cfa4.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,47 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+condition c;
+monitor M {};
+M m1, m2, m3, m4;
+
+void __attribute__((noinline)) call( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
+	signal(c);
+}
+
+int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			wait(c);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1, m2, m3, m4); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1, m2, m3, m4);
+}
Index: benchmark/schedint/pthreads.c
===================================================================
--- benchmark/schedint/pthreads.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/schedint/pthreads.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,55 @@
+#include <pthread.h>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+pthread_cond_t c;
+pthread_mutex_t m;
+
+void __attribute__((noinline)) call() {
+	pthread_mutex_lock(&m);
+	pthread_cond_signal(&c);
+	pthread_mutex_unlock(&m);
+}
+
+int  __attribute__((noinline)) wait() {
+	pthread_mutex_lock(&m);
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			pthread_cond_wait(&c, &m);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	pthread_mutex_unlock(&m);
+	return 0;
+}
+
+void* thread_main(void * a) {
+	while(go == 0) { sched_yield(); }
+	while(go == 1) { call(); }
+	return NULL;
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	pthread_t thread;
+	if (pthread_create(&thread, NULL, thread_main, NULL) < 0) {
+		perror( "failure" );
+		return 1;
+	}
+	wait();
+	if (pthread_join( thread, NULL) < 0) {
+		perror( "failure" );
+		return 1;
+	}
+	return 0;
+}
Index: benchmark/schedint/upp.cc
===================================================================
--- benchmark/schedint/upp.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ benchmark/schedint/upp.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,46 @@
+#include <cstdio>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+_Monitor M {
+	uCondition cond;
+public:
+	void __attribute__((noinline)) call() {
+		cond.signal();
+	}
+
+	int __attribute__((noinline)) wait() {
+		go = 1;
+		BENCH(
+			for (size_t i = 0; i < n; i++) {
+				cond.wait();
+			},
+			result
+		)
+
+		printf("%llu\n", result);
+		go = 0;
+		return 0;
+	}
+};
+
+M m;
+
+_Task T {
+	void main() {
+		while(go == 0) { yield(); }
+		while(go == 1) { m.call(); }
+
+	}
+};
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return m.wait();
+}
Index: configure
===================================================================
--- configure	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ configure	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -665,5 +665,8 @@
 CXX
 CFA_FLAGS
-MACHINE_TYPE
+LIBCFA_TARGET_MAKEFILES
+LIBCFA_TARGET_DIRS
+TARGET_HOSTS
+HOST_FLAGS
 host_os
 host_vendor
@@ -675,5 +678,4 @@
 build
 BUILD_IN_TREE_FLAGS
-BUILD_IN_TREE_FLAGS_NOLIB
 CFACPP
 CFACC
@@ -683,16 +685,8 @@
 CFA_INCDIR
 CFA_PREFIX
+CFA_BACKEND_CC
+BACKEND_CC
 DOendif
 DOifskipcompile
-BUILD_CONCURRENCY_FALSE
-BUILD_CONCURRENCY_TRUE
-BUILD_NO_LIB_FALSE
-BUILD_NO_LIB_TRUE
-BUILD_DEBUG_FALSE
-BUILD_DEBUG_TRUE
-BUILD_RELEASE_FALSE
-BUILD_RELEASE_TRUE
-CFA_BACKEND_CC
-BACKEND_CC
 CFA_NAME
 am__untar
@@ -768,7 +762,5 @@
 with_cfa_name
 with_backend_compiler
-enable_target_release
-enable_target_debug
-enable_threading
+with_target_hosts
 enable_dependency_tracking
 '
@@ -1420,8 +1412,4 @@
   --enable-silent-rules   less verbose build output (undo: "make V=1")
   --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-target-release Build and install the release target
-  --enable-target-debug   Build and install the debug target
-  --enable-threading      Build and install libcfa with threading support
-                          (Enabled by default)
   --enable-dependency-tracking
                           do not reject slow dependency extractors
@@ -1434,4 +1422,5 @@
   --with-cfa-name=NAME     NAME too which cfa will be installed
   --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible)
+  --with-target-hosts=HOSTS     HOSTS comma seperated list of hosts to build for, format ARCH:debug|nodebug|nolib
 
 Some influential environment variables:
@@ -2500,5 +2489,5 @@
   yes) AM_DEFAULT_VERBOSITY=0;;
    no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
 esac
 am_make=${MAKE-make}
@@ -2531,4 +2520,14 @@
 AM_BACKSLASH='\'
 
+
+
+
+
+
+
+
+
+# don't use the default CFLAGS as they unconditonnaly add -O2
+: ${CFLAGS=""}
 
 am__api_version='1.15'
@@ -3077,10 +3076,13 @@
 
 
+#==============================================================================
 #Trasforming cc1 will break compilation
-if test "${program_transform_name}" = ""; then
-    as_fn_error $? "Program transform not supported.
-		Use --with-cfa-name='[Desired name here]' instead" "$LINENO" 5
-fi
-
+
+	if test "${program_transform_name}" = ""; then
+	as_fn_error $? "Program transform not supported.
+			Use --with-cfa-name='[Desired name here]' instead" "$LINENO" 5
+	fi
+
+	#Define the new name of the installed command
 
 # Check whether --with-cfa-name was given.
@@ -3092,7 +3094,10 @@
 
 
-#Define the new name of the installed command
-CFA_NAME=${cfa_name}
-
+	CFA_NAME=${cfa_name}
+
+
+
+#==============================================================================
+# version information
 
 rm -f version
@@ -3146,6 +3151,17 @@
 
 
-# Installation paths
-
+#==============================================================================
+# HACK to be able to use conditionnals inside makefiles
+DOifskipcompile='ifeq ($(skipcompile),yes)
+else'
+
+
+
+DOendif='endif'
+
+
+
+#==============================================================================
+# backend compiler implementation
 
 # Check whether --with-backend-compiler was given.
@@ -3157,7 +3173,7 @@
 
 if test "x$backendcompiler" != "x"; then
-	BACKEND_CC=${backendcompiler}
-else
-	# Extract the first word of "gcc", so it can be a program name with args.
+       BACKEND_CC=${backendcompiler}
+else
+       # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -3198,9 +3214,9 @@
 fi
 
-	# check gcc installed
-	if test "x$BACKEND_CC" = "x"; then
-		as_fn_error $? "some version of gcc is needed. Get it at ftp://ftp.gnu.org" "$LINENO" 5
-		exit 1
-	fi
+       # check gcc installed
+       if test "x$BACKEND_CC" = "x"; then
+               as_fn_error $? "some version of gcc is needed. Get it at ftp://ftp.gnu.org" "$LINENO" 5
+               exit 1
+       fi
 fi
 
@@ -3211,126 +3227,13 @@
 
 
-
-
-# Check whether --enable-target-release was given.
-if test "${enable_target_release+set}" = set; then :
-  enableval=$enable_target_release;
-fi
-
-# Check whether --enable-target-debug was given.
-if test "${enable_target_debug+set}" = set; then :
-  enableval=$enable_target_debug;
-fi
-
-# Check whether --enable-threading was given.
-if test "${enable_threading+set}" = set; then :
-  enableval=$enable_threading; case "${enableval}" in
-  yes) build_threading="yes" ;;
-  no)  build_threading="no" ;;
-  *) as_fn_error $? "bad value ${enableval} for --enable-debug" "$LINENO" 5 ;;
-esac
-else
-  build_threading="yes"
-fi
-
-
-case "$enable_target_release" in
-	yes)
-		case "$enable_target_debug" in
-			yes)
-				build_release="yes"
-				build_debug="yes"
-				;;
-			no)
-				build_release="yes"
-				build_debug="no"
-				;;
-			*)
-				build_release="yes"
-				build_debug="no"
-				;;
-		esac
-		;;
-	no)
-		case "$enable_target_debug" in
-			yes)
-				build_release="no"
-				build_debug="yes"
-				;;
-			no)
-				build_release="no"
-				build_debug="no"
-				;;
-			*)
-				build_release="no"
-				build_debug="yes"
-				;;
-		esac
-		;;
-	*)
-		case "$enable_target_debug" in
-			yes)
-				build_release="no"
-				build_debug="yes"
-				;;
-			no)
-				build_release="yes"
-				build_debug="no"
-				;;
-			*)
-				build_release="yes"
-				build_debug="yes"
-				;;
-		esac
-		;;
-esac
-
- if test "x$build_release" = "xyes"; then
-  BUILD_RELEASE_TRUE=
-  BUILD_RELEASE_FALSE='#'
-else
-  BUILD_RELEASE_TRUE='#'
-  BUILD_RELEASE_FALSE=
-fi
-
- if test "x$build_debug" = "xyes"; then
-  BUILD_DEBUG_TRUE=
-  BUILD_DEBUG_FALSE='#'
-else
-  BUILD_DEBUG_TRUE='#'
-  BUILD_DEBUG_FALSE=
-fi
-
- if test "x$build_release$build_debug" = "xnono"; then
-  BUILD_NO_LIB_TRUE=
-  BUILD_NO_LIB_FALSE='#'
-else
-  BUILD_NO_LIB_TRUE='#'
-  BUILD_NO_LIB_FALSE=
-fi
-
- if test "x$build_threading" = "xyes"; then
-  BUILD_CONCURRENCY_TRUE=
-  BUILD_CONCURRENCY_FALSE='#'
-else
-  BUILD_CONCURRENCY_TRUE='#'
-  BUILD_CONCURRENCY_FALSE=
-fi
-
-
-DOifskipcompile='ifeq ($(skipcompile),yes)
-else'
-
-
-
-DOendif='endif'
-
-
-
-if test "x$prefix" = "xNONE"; then
-	cfa_prefix=${ac_default_prefix}
-else
-	cfa_prefix=${prefix}
-fi
+#==============================================================================
+# Installation paths
+
+	if test "x$prefix" = "xNONE"; then
+		cfa_prefix=${ac_default_prefix}
+	else
+		cfa_prefix=${prefix}
+	fi
+	cfa_prefix="$(readlink -m ${cfa_prefix})/"
 
 cat >>confdefs.h <<_ACEOF
@@ -3338,12 +3241,13 @@
 _ACEOF
 
-CFA_PREFIX=${cfa_prefix}
-
-
-if test "$includedir" = '${prefix}/include'; then
- 	cfa_incdir="${cfa_prefix}/include/${cfa_name}"
-else
- 	cfa_incdir=${includedir}
-fi
+	CFA_PREFIX=${cfa_prefix}
+
+
+	if test "$includedir" = '${prefix}/include'; then
+		cfa_incdir="${cfa_prefix}include/${cfa_name}"
+	else
+		cfa_incdir=${includedir}
+	fi
+	cfa_incdir="$(readlink -m ${cfa_incdir})/"
 
 cat >>confdefs.h <<_ACEOF
@@ -3351,12 +3255,13 @@
 _ACEOF
 
-CFA_INCDIR=${cfa_incdir}
-
-
-if test "$bindir" = '${exec_prefix}/bin'; then
- 	cfa_bindir="${cfa_prefix}/bin"
-else
- 	cfa_bindir=${bindir}
-fi
+	CFA_INCDIR=${cfa_incdir}
+
+
+	if test "$bindir" = '${exec_prefix}/bin'; then
+		cfa_bindir="${cfa_prefix}bin"
+	else
+		cfa_bindir=${bindir}
+	fi
+	cfa_bindir="$(readlink -m ${cfa_bindir})/"
 
 cat >>confdefs.h <<_ACEOF
@@ -3364,12 +3269,17 @@
 _ACEOF
 
-CFA_BINDIR=${cfa_bindir}
-
-
-if test "$libdir" = '${exec_prefix}/lib'; then
- 	cfa_libdir="${cfa_prefix}/lib/${cfa_name}"
-else
- 	cfa_libdir=${libdir}
-fi
+	CFA_BINDIR=${cfa_bindir}
+
+
+	if test "$libdir" = '${exec_prefix}/lib'; then
+		if test "${ARCHITECTURE}" != ""; then
+			cfa_libdir="${cfa_prefix}lib/${cfa_name}/${ARCHITECTURE}-${CONFIGURATION}/"
+		else
+			cfa_libdir="${cfa_prefix}lib/${cfa_name}/"
+		fi
+	else
+		cfa_libdir="${libdir}/${ARCHITECTURE}${CONFIGURATION}"
+	fi
+	cfa_libdir="$(readlink -m ${cfa_libdir})/"
 
 cat >>confdefs.h <<_ACEOF
@@ -3377,23 +3287,57 @@
 _ACEOF
 
-CFA_LIBDIR=${cfa_libdir}
-
-
+	CFA_LIBDIR=${cfa_libdir}
+
+
+
+#==============================================================================
 # Create variables for commonly used targets
-DRIVER_DIR='$(top_builddir)/src/driver'
-CFACC=${DRIVER_DIR}/cfa
-CFACPP=${DRIVER_DIR}/cfa-cpp
-
-
-
-
+
+TOP_SRCDIR="$(readlink -m $ac_confdir/)/"
+TOP_BUILDDIR="$(readlink -m $ac_pwd/)/"
+
+
+cat >>confdefs.h <<_ACEOF
+#define TOP_SRCDIR "$TOP_SRCDIR"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define TOP_BUILDDIR "$TOP_BUILDDIR"
+_ACEOF
+
+
+DRIVER_DIR=${TOP_BUILDDIR}driver/
+CFACC=${DRIVER_DIR}cfa
+CFACPP=${DRIVER_DIR}cfa-cpp
+
+
+
+
+#==============================================================================
 # Flag variables needed to build in tree
-LIBCFA_SRC='$(top_srcdir)/src/libcfa'
-LIBCFA_BUILD='$(top_builddir)/src/libcfa'
-BUILD_IN_TREE_FLAGS_NOLIB="-XCFA -t -B${DRIVER_DIR}"
-BUILD_IN_TREE_FLAGS="${BUILD_IN_TREE_FLAGS_NOLIB} -L${LIBCFA_BUILD} -I${LIBCFA_SRC} -I${LIBCFA_SRC}/containers -I${LIBCFA_SRC}/concurrency -I${LIBCFA_SRC}/stdhdr"
-
-
-
+LIBCFA_SRC='${TOP_SRCDIR}/libcfa/src'
+BUILD_IN_TREE_FLAGS="-XCFA -t -B${DRIVER_DIR}"
+
+
+#==============================================================================
+# handle the list of hosts to build for
+for var in $ac_configure_args
+do
+	#strip quotes surrouding values
+	case $var in
+		# skip cross compilation related arguments
+		\'--host=*) ;; \'host_alias=*) ;; \'--build=*) ;; \'build_alias=*) ;; \'--target=*) ;; \'target_alias=*) ;;
+
+		# skip the target hosts
+		\'--with-target-hosts=*) ;;
+
+		# append all other arguments to the sub configure arguments
+		*) LIBCFA_GENERAL_ARGS="${LIBCFA_GENERAL_ARGS} $var";;
+	esac
+done
+
+#==============================================================================
+# handle the list of hosts to build for
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
@@ -3467,26 +3411,15 @@
 
 
-MACHINE_TYPE=$host_cpu
-
 
 if ! test "$host_cpu" = "$build_cpu"; then
 	case $host_cpu in
 		i386)
-			CFLAGS+=" -m32 "
-			CXXFLAGS+=" -m32 "
-			CFAFLAGS+=" -m32 "
-			LDFLAGS+=" -m32 "
+			HOST_FLAGS="-m32"
 			;;
 		i686)
-			CFLAGS+=" -m32 "
-                  CXXFLAGS+=" -m32 "
-                  CFAFLAGS+=" -m32 "
-                  LDFLAGS+=" -m32 "
+			HOST_FLAGS="-m32"
 			;;
 		x86_64)
-			CFLAGS+=" -m64 "
-			CXXFLAGS+=" -m64 "
-			CFAFLAGS+=" -m64 "
-			LDFLAGS+=" -m64 "
+			HOST_FLAGS="-m64"
 			;;
 	esac
@@ -3494,4 +3427,116 @@
 
 
+default_target="${host_cpu}:debug, ${host_cpu}:nodebug"
+
+# Check whether --with-target-hosts was given.
+if test "${with_target_hosts+set}" = set; then :
+  withval=$with_target_hosts; target_hosts=$withval
+else
+  target_hosts=${default_target}
+fi
+
+
+TARGET_HOSTS=${target_hosts}
+
+
+LIBCFA_PATHS="DRIVER_DIR=${DRIVER_DIR}"
+
+for i in $(echo $target_hosts | sed "s/,/ /g")
+do
+	# call your procedure/other scripts here below
+	arch_name=$(echo $i | sed -r "s/:(.*)//g")
+	lib_config=$(echo $i | sed -r "s/(.*)://g")
+
+	case $lib_config in
+		"nodebug") ;;
+		"debug") ;;
+		"nolib") ;;
+		*)
+			>&2 echo "Configuration must be 'debug', 'nodebug' or 'nolib'"
+			exit 1
+		;;
+	esac
+
+
+	case $arch_name in
+		"host") arch_name=${host_cpu};;
+		*) ;;
+	esac
+
+	case $arch_name in
+		"x64"        ) cannon_arch_name="x64";;
+		"x86-64"     ) cannon_arch_name="x64";;
+		"x86_64"     ) cannon_arch_name="x64";;
+		"x86"        ) cannon_arch_name="x86";;
+		"i386"       ) cannon_arch_name="x86";;
+		"i486"       ) cannon_arch_name="x86";;
+		"i686"       ) cannon_arch_name="x86";;
+		"Intel 80386") cannon_arch_name="x86";;
+		"arm"        ) cannon_arch_name="arm";;
+		"ARM"        ) cannon_arch_name="arm";;
+		*)
+		>&2 echo "Unkown architecture " $arch_name;
+		exit 1
+		;;
+	esac
+
+	lib_arch=${cannon_arch_name}
+	lib_dir="libcfa/${lib_arch}-${lib_config}"
+
+	LIBCFA_TARGET_DIRS="${LIBCFA_TARGET_DIRS} ${lib_dir}"
+	LIBCFA_TARGET_MAKEFILES="${LIBCFA_TARGET_MAKEFILES} ${lib_dir}/Makefile"
+
+	mkdir -p ${lib_dir}
+	echo -n "${LIBCFA_GENERAL_ARGS} " > ${lib_dir}/config.data
+	echo -n "${LIBCFA_PATHS} " >> ${lib_dir}/config.data
+	echo -n "ARCHITECTURE=${lib_arch} " >> ${lib_dir}/config.data
+	echo -n "CONFIGURATION=${lib_config}" >> ${lib_dir}/config.data
+done
+
+
+
+
+
+	case $arch_name in
+		"host") arch_name=${host_cpu};;
+		*) ;;
+	esac
+
+	case $arch_name in
+		"x64"        ) cannon_arch_name="x64";;
+		"x86-64"     ) cannon_arch_name="x64";;
+		"x86_64"     ) cannon_arch_name="x64";;
+		"x86"        ) cannon_arch_name="x86";;
+		"i386"       ) cannon_arch_name="x86";;
+		"i486"       ) cannon_arch_name="x86";;
+		"i686"       ) cannon_arch_name="x86";;
+		"Intel 80386") cannon_arch_name="x86";;
+		"arm"        ) cannon_arch_name="arm";;
+		"ARM"        ) cannon_arch_name="arm";;
+		*)
+		>&2 echo "Unkown architecture " $arch_name;
+		exit 1
+		;;
+	esac
+
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_DEFAULT_CPU "$cannon_arch_name"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_64_CPU "x64"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_32_CPU "x86"
+_ACEOF
+
+
+#==============================================================================
+# CAFLAGS
+
 cat >>confdefs.h <<_ACEOF
 #define CFA_FLAGS "${CFAFLAGS}"
@@ -3501,4 +3546,5 @@
 
 
+#==============================================================================
 # Checks for programs.
 ac_ext=cpp
@@ -6283,11 +6329,12 @@
 
 
-ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/benchmark/Makefile src/examples/Makefile src/tests/Makefile src/tests/preempt_longrun/Makefile src/prelude/Makefile src/libcfa/Makefile tools/Makefile tools/prettyprinter/Makefile"
-
-
-ac_config_links="$ac_config_links src/tests/test.py:src/tests/test.py"
-
-
-ac_config_files="$ac_config_files src/tests/config.py"
+#==============================================================================
+ac_config_files="$ac_config_files Makefile driver/Makefile src/Makefile benchmark/Makefile tests/Makefile tests/preempt_longrun/Makefile tools/Makefile tools/prettyprinter/Makefile"
+
+
+ac_config_links="$ac_config_links tests/test.py:tests/test.py"
+
+
+ac_config_files="$ac_config_files tests/config.py"
 
 cat >confcache <<\_ACEOF
@@ -6416,20 +6463,4 @@
 fi
 
-if test -z "${BUILD_RELEASE_TRUE}" && test -z "${BUILD_RELEASE_FALSE}"; then
-  as_fn_error $? "conditional \"BUILD_RELEASE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${BUILD_DEBUG_TRUE}" && test -z "${BUILD_DEBUG_FALSE}"; then
-  as_fn_error $? "conditional \"BUILD_DEBUG\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${BUILD_NO_LIB_TRUE}" && test -z "${BUILD_NO_LIB_FALSE}"; then
-  as_fn_error $? "conditional \"BUILD_NO_LIB\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${BUILD_CONCURRENCY_TRUE}" && test -z "${BUILD_CONCURRENCY_FALSE}"; then
-  as_fn_error $? "conditional \"BUILD_CONCURRENCY\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
   as_fn_error $? "conditional \"AMDEP\" was never defined.
@@ -7047,16 +7078,13 @@
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "src/driver/Makefile") CONFIG_FILES="$CONFIG_FILES src/driver/Makefile" ;;
+    "driver/Makefile") CONFIG_FILES="$CONFIG_FILES driver/Makefile" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "src/benchmark/Makefile") CONFIG_FILES="$CONFIG_FILES src/benchmark/Makefile" ;;
-    "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;;
-    "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
-    "src/tests/preempt_longrun/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/preempt_longrun/Makefile" ;;
-    "src/prelude/Makefile") CONFIG_FILES="$CONFIG_FILES src/prelude/Makefile" ;;
-    "src/libcfa/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcfa/Makefile" ;;
+    "benchmark/Makefile") CONFIG_FILES="$CONFIG_FILES benchmark/Makefile" ;;
+    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+    "tests/preempt_longrun/Makefile") CONFIG_FILES="$CONFIG_FILES tests/preempt_longrun/Makefile" ;;
     "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
     "tools/prettyprinter/Makefile") CONFIG_FILES="$CONFIG_FILES tools/prettyprinter/Makefile" ;;
-    "src/tests/test.py") CONFIG_LINKS="$CONFIG_LINKS src/tests/test.py:src/tests/test.py" ;;
-    "src/tests/config.py") CONFIG_FILES="$CONFIG_FILES src/tests/config.py" ;;
+    "tests/test.py") CONFIG_LINKS="$CONFIG_LINKS tests/test.py:tests/test.py" ;;
+    "tests/config.py") CONFIG_FILES="$CONFIG_FILES tests/config.py" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
@@ -7818,22 +7846,4 @@
 
 
-if test -z "$BUILD_RELEASE_TRUE"; then :
-  if test -z "$BUILD_DEBUG_TRUE"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: Building libcfa for target: release & debug" >&5
-$as_echo "$as_me: Building libcfa for target: release & debug" >&6;}
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: Building libcfa for target: release" >&5
-$as_echo "$as_me: Building libcfa for target: release" >&6;}
-fi
-else
-  if test -z "$BUILD_DEBUG_TRUE"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: Building libcfa for target: debug" >&5
-$as_echo "$as_me: Building libcfa for target: debug" >&6;}
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: Running cfa without libcfa" >&5
-$as_echo "$as_me: Running cfa without libcfa" >&6;}
-fi
-fi
-
 # Final text
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: Cforall configuraton completed. Type \"make -j 8 install\"." >&5
Index: configure.ac
===================================================================
--- configure.ac	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ configure.ac	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -7,5 +7,10 @@
 #AC_CONFIG_SRCDIR([src/main.cc])
 AC_CONFIG_HEADERS([config.h:src/config.h.in])
-AM_SILENT_RULES([no])
+AM_SILENT_RULES([yes])
+
+m4_include([automake/cfa.m4])
+
+# don't use the default CFLAGS as they unconditonnaly add -O2
+: ${CFLAGS=""}
 
 AM_INIT_AUTOMAKE([subdir-objects])
@@ -15,16 +20,10 @@
 AC_ARG_PROGRAM
 
+#==============================================================================
 #Trasforming cc1 will break compilation
-if test "${program_transform_name}" = ""; then
-    AC_MSG_ERROR([Program transform not supported.
-		Use --with-cfa-name='[[Desired name here]]' instead])
-fi
-
-AC_ARG_WITH(cfa-name,
-	[  --with-cfa-name=NAME     NAME too which cfa will be installed],
-	cfa_name=$withval, cfa_name="cfa")
-
-#Define the new name of the installed command
-AC_SUBST(CFA_NAME, ${cfa_name})
+M4CFA_PROGRAM_NAME
+
+#==============================================================================
+# version information
 
 rm -f version
@@ -46,88 +45,6 @@
 AC_DEFINE_UNQUOTED(CFA_VERSION_FULL, ["${ver_major}.${ver_minor}.${ver_patch}.${ver_build}"], [Major.Minor.Patch.Build])
 
-# Installation paths
-
-AC_ARG_WITH(backend-compiler,
-	[  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
-	backendcompiler=$withval, backendcompiler="")
-if test "x$backendcompiler" != "x"; then
-	BACKEND_CC=${backendcompiler}
-else
-	AC_PATH_PROG(BACKEND_CC, gcc, [])	# check gcc installed
-	if test "x$BACKEND_CC" = "x"; then
-		AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
-		exit 1
-	fi
-fi
-AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${BACKEND_CC}", [Location of include files.])
-AC_SUBST(CFA_BACKEND_CC)
-
-
-
-AC_ARG_ENABLE(target-release, AS_HELP_STRING([--enable-target-release], [Build and install the release target]))
-AC_ARG_ENABLE(target-debug, AS_HELP_STRING([--enable-target-debug], [Build and install the debug target]))
-AC_ARG_ENABLE(threading, AS_HELP_STRING([--enable-threading], [Build and install libcfa with threading support (Enabled by default)]),
-[case "${enableval}" in
-  yes) build_threading="yes" ;;
-  no)  build_threading="no" ;;
-  *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
-esac],[build_threading="yes"])
-
-case "$enable_target_release" in
-	yes)
-		case "$enable_target_debug" in
-			yes)
-				build_release="yes"
-				build_debug="yes"
-				;;
-			no)
-				build_release="yes"
-				build_debug="no"
-				;;
-			*)
-				build_release="yes"
-				build_debug="no"
-				;;
-		esac
-		;;
-	no)
-		case "$enable_target_debug" in
-			yes)
-				build_release="no"
-				build_debug="yes"
-				;;
-			no)
-				build_release="no"
-				build_debug="no"
-				;;
-			*)
-				build_release="no"
-				build_debug="yes"
-				;;
-		esac
-		;;
-	*)
-		case "$enable_target_debug" in
-			yes)
-				build_release="no"
-				build_debug="yes"
-				;;
-			no)
-				build_release="yes"
-				build_debug="no"
-				;;
-			*)
-				build_release="yes"
-				build_debug="yes"
-				;;
-		esac
-		;;
-esac
-
-AM_CONDITIONAL([BUILD_RELEASE], [test "x$build_release" = "xyes"])
-AM_CONDITIONAL([BUILD_DEBUG], [test "x$build_debug" = "xyes"])
-AM_CONDITIONAL([BUILD_NO_LIB], [test "x$build_release$build_debug" = "xnono"])
-AM_CONDITIONAL([BUILD_CONCURRENCY], [test "x$build_threading" = "xyes"])
-
+#==============================================================================
+# HACK to be able to use conditionnals inside makefiles
 DOifskipcompile='ifeq ($(skipcompile),yes)
 else'
@@ -139,82 +56,137 @@
 AM_SUBST_NOTMAKE([DOendif])
 
-if test "x$prefix" = "xNONE"; then
-	cfa_prefix=${ac_default_prefix}
+#==============================================================================
+# backend compiler implementation
+AC_ARG_WITH(backend-compiler,
+       [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
+       backendcompiler=$withval, backendcompiler="")
+if test "x$backendcompiler" != "x"; then
+       BACKEND_CC=${backendcompiler}
 else
-	cfa_prefix=${prefix}
+       AC_PATH_PROG(BACKEND_CC, gcc, [])       # check gcc installed
+       if test "x$BACKEND_CC" = "x"; then
+               AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
+               exit 1
+       fi
 fi
-AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa install.])
-AC_SUBST(CFA_PREFIX, ${cfa_prefix})
-
-if test "$includedir" = '${prefix}/include'; then
- 	cfa_incdir="${cfa_prefix}/include/${cfa_name}"
-else
- 	cfa_incdir=${includedir}
-fi
-AC_DEFINE_UNQUOTED(CFA_INCDIR, "${cfa_incdir}", [Location of include files.])
-AC_SUBST(CFA_INCDIR, ${cfa_incdir})
-
-if test "$bindir" = '${exec_prefix}/bin'; then
- 	cfa_bindir="${cfa_prefix}/bin"
-else
- 	cfa_bindir=${bindir}
-fi
-AC_DEFINE_UNQUOTED(CFA_BINDIR, "${cfa_bindir}", [Location of cfa command.])
-AC_SUBST(CFA_BINDIR, ${cfa_bindir})
-
-if test "$libdir" = '${exec_prefix}/lib'; then
- 	cfa_libdir="${cfa_prefix}/lib/${cfa_name}"
-else
- 	cfa_libdir=${libdir}
-fi
-AC_DEFINE_UNQUOTED(CFA_LIBDIR, "${cfa_libdir}", [Location of cc1 and cfa-cpp commands.])
-AC_SUBST(CFA_LIBDIR, ${cfa_libdir})
-
+AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${BACKEND_CC}", [Location of include files.])
+AC_SUBST(CFA_BACKEND_CC)
+
+#==============================================================================
+# Installation paths
+M4CFA_PARSE_PREFIX
+
+#==============================================================================
 # Create variables for commonly used targets
-DRIVER_DIR='$(top_builddir)/src/driver'
-CFACC=${DRIVER_DIR}/cfa
-CFACPP=${DRIVER_DIR}/cfa-cpp
+
+TOP_SRCDIR="$(readlink -m $ac_confdir/)/"
+TOP_BUILDDIR="$(readlink -m $ac_pwd/)/"
+
+AC_DEFINE_UNQUOTED(TOP_SRCDIR, "$TOP_SRCDIR", [Top src directory])
+AC_DEFINE_UNQUOTED(TOP_BUILDDIR, "$TOP_BUILDDIR", [Top build directory])
+
+DRIVER_DIR=${TOP_BUILDDIR}driver/
+CFACC=${DRIVER_DIR}cfa
+CFACPP=${DRIVER_DIR}cfa-cpp
 AC_SUBST(DRIVER_DIR)
 AC_SUBST(CFACC)
 AC_SUBST(CFACPP)
 
+#==============================================================================
 # Flag variables needed to build in tree
-LIBCFA_SRC='$(top_srcdir)/src/libcfa'
-LIBCFA_BUILD='$(top_builddir)/src/libcfa'
-BUILD_IN_TREE_FLAGS_NOLIB="-XCFA -t -B${DRIVER_DIR}"
-BUILD_IN_TREE_FLAGS="${BUILD_IN_TREE_FLAGS_NOLIB} -L${LIBCFA_BUILD} -I${LIBCFA_SRC} -I${LIBCFA_SRC}/containers -I${LIBCFA_SRC}/concurrency -I${LIBCFA_SRC}/stdhdr"
-AC_SUBST(BUILD_IN_TREE_FLAGS_NOLIB)
+LIBCFA_SRC='${TOP_SRCDIR}/libcfa/src'
+BUILD_IN_TREE_FLAGS="-XCFA -t -B${DRIVER_DIR}"
 AC_SUBST(BUILD_IN_TREE_FLAGS)
 
+#==============================================================================
+# handle the list of hosts to build for
+for var in $ac_configure_args
+do
+	#strip quotes surrouding values
+	case $var in
+		# skip cross compilation related arguments
+		\'--host=*) ;; \'host_alias=*) ;; \'--build=*) ;; \'build_alias=*) ;; \'--target=*) ;; \'target_alias=*) ;;
+
+		# skip the target hosts
+		\'--with-target-hosts=*) ;;
+
+		# append all other arguments to the sub configure arguments
+		*) LIBCFA_GENERAL_ARGS="${LIBCFA_GENERAL_ARGS} $var";;
+	esac
+done
+
+#==============================================================================
+# handle the list of hosts to build for
 AC_CANONICAL_BUILD
 AC_CANONICAL_HOST
-AC_SUBST([MACHINE_TYPE],[$host_cpu])
 
 if ! test "$host_cpu" = "$build_cpu"; then
 	case $host_cpu in
 		i386)
-			CFLAGS+=" -m32 "
-			CXXFLAGS+=" -m32 "
-			CFAFLAGS+=" -m32 "
-			LDFLAGS+=" -m32 "
+			HOST_FLAGS="-m32"
 			;;
 		i686)
-			CFLAGS+=" -m32 "
-                  CXXFLAGS+=" -m32 "
-                  CFAFLAGS+=" -m32 "
-                  LDFLAGS+=" -m32 "
+			HOST_FLAGS="-m32"
 			;;
 		x86_64)
-			CFLAGS+=" -m64 "
-			CXXFLAGS+=" -m64 "
-			CFAFLAGS+=" -m64 "
-			LDFLAGS+=" -m64 "
+			HOST_FLAGS="-m64"
 			;;
 	esac
 fi
-
+AC_SUBST(HOST_FLAGS)
+
+default_target="${host_cpu}:debug, ${host_cpu}:nodebug"
+AC_ARG_WITH(target-hosts,
+	[  --with-target-hosts=HOSTS     HOSTS comma seperated list of hosts to build for, format ARCH:[debug|nodebug|nolib]],
+	target_hosts=$withval, target_hosts=${default_target})
+
+AC_SUBST(TARGET_HOSTS, ${target_hosts})
+
+LIBCFA_PATHS="DRIVER_DIR=${DRIVER_DIR}"
+
+for i in $(echo $target_hosts | sed "s/,/ /g")
+do
+	# call your procedure/other scripts here below
+	arch_name=$(echo $i | sed -r "s/:(.*)//g")
+	lib_config=$(echo $i | sed -r "s/(.*)://g")
+
+	case $lib_config in
+		"nodebug") ;;
+		"debug") ;;
+		"nolib") ;;
+		*)
+			>&2 echo "Configuration must be 'debug', 'nodebug' or 'nolib'"
+			exit 1
+		;;
+	esac
+
+	M4CFA_CANNON_CPU([${arch_name}])
+	lib_arch=${cannon_arch_name}
+	lib_dir="libcfa/${lib_arch}-${lib_config}"
+
+	LIBCFA_TARGET_DIRS="${LIBCFA_TARGET_DIRS} ${lib_dir}"
+	LIBCFA_TARGET_MAKEFILES="${LIBCFA_TARGET_MAKEFILES} ${lib_dir}/Makefile"
+
+	mkdir -p ${lib_dir}
+	echo -n "${LIBCFA_GENERAL_ARGS} " > ${lib_dir}/config.data
+	echo -n "${LIBCFA_PATHS} " >> ${lib_dir}/config.data
+	echo -n "ARCHITECTURE=${lib_arch} " >> ${lib_dir}/config.data
+	echo -n "CONFIGURATION=${lib_config}" >> ${lib_dir}/config.data
+done
+
+AC_SUBST(LIBCFA_TARGET_DIRS)
+AC_SUBST(LIBCFA_TARGET_MAKEFILES)
+
+M4CFA_CANNON_CPU([${host_cpu}])
+AC_DEFINE_UNQUOTED(CFA_DEFAULT_CPU, "$cannon_arch_name", [Default cpu to use if neither -m32 or -m64 are defined.])
+AC_DEFINE_UNQUOTED(CFA_64_CPU, "x64", [CPU to use if the -m64 flags is given.])
+AC_DEFINE_UNQUOTED(CFA_32_CPU, "x86", [CPU to use if the -m32 flags is given.])
+
+#==============================================================================
+# CAFLAGS
 AC_DEFINE_UNQUOTED(CFA_FLAGS, "${CFAFLAGS}", [compilation flags for cfa libraries and test programs.])
 AC_SUBST(CFA_FLAGS, ${CFAFLAGS})
 
+#==============================================================================
 # Checks for programs.
 AC_PROG_CXX
@@ -252,29 +224,19 @@
 AC_CHECK_FUNCS([memset putenv strchr strtol])
 
+#==============================================================================
 AC_CONFIG_FILES([
 	Makefile
-	src/driver/Makefile
+	driver/Makefile
 	src/Makefile
-	src/benchmark/Makefile
-	src/examples/Makefile
-	src/tests/Makefile
-	src/tests/preempt_longrun/Makefile
-	src/prelude/Makefile
-	src/libcfa/Makefile
+	benchmark/Makefile
+	tests/Makefile
+	tests/preempt_longrun/Makefile
 	tools/Makefile
 	tools/prettyprinter/Makefile
 	])
 
-AC_CONFIG_LINKS([src/tests/test.py:src/tests/test.py])
-
-AC_OUTPUT(src/tests/config.py)
-
-AM_COND_IF([BUILD_RELEASE],
-	[AM_COND_IF([BUILD_DEBUG],
-		[AC_MSG_NOTICE(Building libcfa for target: release & debug)],
-		[AC_MSG_NOTICE(Building libcfa for target: release)])],
-	[AM_COND_IF([BUILD_DEBUG],
-		[AC_MSG_NOTICE(Building libcfa for target: debug)],
-		[AC_MSG_NOTICE(Running cfa without libcfa)])])
+AC_CONFIG_LINKS([tests/test.py:tests/test.py])
+
+AC_OUTPUT(tests/config.py)
 
 # Final text
Index: doc/bibliography/pl.bib
===================================================================
--- doc/bibliography/pl.bib	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ doc/bibliography/pl.bib	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -929,5 +929,5 @@
     title	= {\textsf{C}$\mathbf{\forall}$ Stack Evaluation Programs},
     year	= 2018,
-    howpublished= {\href{https://plg.uwaterloo.ca/~cforall/evaluation.zip}{https://plg.uwaterloo.ca/\-\-$\sim$cforall/\-StackEvaluation.zip}},
+    howpublished= {\href{https://cforall.uwaterloo.ca/CFAStackEvaluation.zip}{https://cforall.uwaterloo.ca/\-CFAStackEvaluation.zip}},
     optnote	= {[Accessed May 2018]},
 }
Index: doc/papers/AMA/AMA-stix/ama/WileyNJD-v2.cls
===================================================================
--- doc/papers/AMA/AMA-stix/ama/WileyNJD-v2.cls	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ doc/papers/AMA/AMA-stix/ama/WileyNJD-v2.cls	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1854,5 +1854,5 @@
     \vspace*{8.5\p@}%
     \rightskip0pt\raggedright\hspace*{7\p@}\hbox{\reset@font\abstractfont{\absheadfont#1}}\par\vskip3pt% LN20feb2016
-    {\abstractfont\baselineskip15pt\ifFWabstract\hsize\textwidth\fi#2\par\vspace*{0\p@}}%
+    {\abstractfont\baselineskip15pt\ifFWabstract\hsize\textwidth\fi\hsize0.68\textwidth#2\par\vspace*{0\p@}}%
     \addcontentsline{toc}{section}{\abstractname}%
 }}%\abstract{}%
@@ -1882,5 +1882,5 @@
 }%
 %
-\def\fundinginfohead#1{\gdef\@fundinginfo@head{#1}}\fundinginfohead{Funding Information}%
+\def\fundinginfohead#1{\gdef\@fundinginfo@head{#1}}\fundinginfohead{Funding information}%
 \def\fundinginfoheadtext#1{\gdef\@fundinginfo@head@text{#1}}\fundinginfoheadtext{}%
 \gdef\@fundinginfo{{%
@@ -2319,5 +2319,5 @@
 %% Keywords %%
 
-\def\keywords#1{\def\@keywords{{\keywordsheadfont\textbf{KEYWORDS:}\par\removelastskip\nointerlineskip\vskip6pt \keywordsfont#1\par}}}\def\@keywords{}%
+\def\keywords#1{\def\@keywords{{\keywordsheadfont\textbf{KEYWORDS}\par\removelastskip\nointerlineskip\vskip6pt \keywordsfont#1\par}}}\def\@keywords{}%
 
 \def\@fnsymbol#1{\ifcase#1\or \dagger\or \ddagger\or
Index: doc/papers/general/Makefile
===================================================================
--- doc/papers/general/Makefile	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ doc/papers/general/Makefile	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -60,5 +60,5 @@
 	dvips ${Build}/$< -o $@
 
-${BASE}.dvi : Makefile ${BASE}.out.ps WileyNJD-AMA.bst ${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} \
+${BASE}.dvi : Makefile ${BASE}.out.ps ${Macros}/WileyNJD-v2.cls WileyNJD-AMA.bst ${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} \
 		../../bibliography/pl.bib | ${Build}
 	# Must have *.aux file containing citations for bibtex
Index: doc/papers/general/Paper.tex
===================================================================
--- doc/papers/general/Paper.tex	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ doc/papers/general/Paper.tex	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,10 +1,14 @@
 \documentclass[AMA,STIX1COL]{WileyNJD-v2}
+\setlength\typewidth{170mm}
+\setlength\textwidth{170mm}
 
 \articletype{RESEARCH ARTICLE}%
 
-\received{26 April 2016}
-\revised{6 June 2016}
-\accepted{6 June 2016}
-
+\received{12 March 2018}
+\revised{8 May 2018}
+\accepted{28 June 2018}
+
+\setlength\typewidth{168mm}
+\setlength\textwidth{168mm}
 \raggedbottom
 
@@ -187,51 +191,52 @@
 }
 
-\title{\texorpdfstring{\protect\CFA : Adding Modern Programming Language Features to C}{Cforall : Adding Modern Programming Language Features to C}}
+\title{\texorpdfstring{\protect\CFA : Adding modern programming language features to C}{Cforall : Adding modern programming language features to C}}
 
 \author[1]{Aaron Moss}
 \author[1]{Robert Schluntz}
-\author[1]{Peter A. Buhr*}
+\author[1]{Peter A. Buhr}
 \authormark{MOSS \textsc{et al}}
 
-\address[1]{\orgdiv{Cheriton School of Computer Science}, \orgname{University of Waterloo}, \orgaddress{\state{Waterloo, ON}, \country{Canada}}}
-
-\corres{*Peter A. Buhr, Cheriton School of Computer Science, University of Waterloo, 200 University Avenue West, Waterloo, ON, N2L 3G1, Canada. \email{pabuhr{\char`\@}uwaterloo.ca}}
+\address[1]{\orgdiv{Cheriton School of Computer Science}, \orgname{University of Waterloo}, \orgaddress{\state{Waterloo, Ontario}, \country{Canada}}}
+
+\corres{Peter A. Buhr, Cheriton School of Computer Science, University of Waterloo, 200 University Avenue West, Waterloo, ON N2L 3G1, Canada. \email{pabuhr{\char`\@}uwaterloo.ca}}
 
 \fundingInfo{Natural Sciences and Engineering Research Council of Canada}
 
 \abstract[Summary]{
-The C programming language is a foundational technology for modern computing with millions of lines of code implementing everything from hobby projects to commercial operating-systems.
-This installation base and the programmers producing it represent a massive software-engineering investment spanning decades and likely to continue for decades more.
-Nevertheless, C, first standardized almost thirty years ago, lacks many features that make programming in more modern languages safer and more productive.
-
-The goal of the \CFA project (pronounced ``C-for-all'') is to create an extension of C that provides modern safety and productivity features while still ensuring strong backwards compatibility with C and its programmers.
-Prior projects have attempted similar goals but failed to honour C programming-style;
-for instance, adding object-oriented or functional programming with garbage collection is a non-starter for many C developers.
-Specifically, \CFA is designed to have an orthogonal feature-set based closely on the C programming paradigm, so that \CFA features can be added \emph{incrementally} to existing C code-bases, and C programmers can learn \CFA extensions on an as-needed basis, preserving investment in existing code and programmers.
-This paper presents a quick tour of \CFA features showing how their design avoids shortcomings of similar features in C and other C-like languages.
+The C programming language is a foundational technology for modern computing with millions of lines of code implementing everything from hobby projects to commercial operating systems.
+This installation base and the programmers producing it represent a massive software engineering investment spanning decades and likely to continue for decades more.
+Nevertheless, C, which was first standardized almost 30 years ago, lacks many features that make programming in more modern languages safer and more productive.
+The goal of the \CFA project (pronounced ``C for all'') is to create an extension of C that provides modern safety and productivity features while still ensuring strong backward compatibility with C and its programmers.
+Prior projects have attempted similar goals but failed to honor the C programming style;
+for instance, adding object-oriented or functional programming with garbage collection is a nonstarter for many C developers.
+Specifically, \CFA is designed to have an orthogonal feature set based closely on the C programming paradigm, so that \CFA features can be added \emph{incrementally} to existing C code bases, and C programmers can learn \CFA extensions on an as-needed basis, preserving investment in existing code and programmers.
+This paper presents a quick tour of \CFA features, showing how their design avoids shortcomings of similar features in C and other C-like languages.
 Experimental results are presented to validate several of the new features.
 }%
 
-\keywords{generic types, tuple types, variadic types, polymorphic functions, C, Cforall}
+\keywords{C, Cforall, generic types, polymorphic functions, tuple types, variadic types}
 
 
 \begin{document}
-\linenumbers                                            % comment out to turn off line numbering
+%\linenumbers                                            % comment out to turn off line numbering
 
 \maketitle
 
 
+\vspace*{-10pt}
 \section{Introduction}
 
-The C programming language is a foundational technology for modern computing with millions of lines of code implementing everything from hobby projects to commercial operating-systems.
-This installation base and the programmers producing it represent a massive software-engineering investment spanning decades and likely to continue for decades more.
-The TIOBE index~\cite{TIOBE} ranks the top 5 most \emph{popular} programming languages as: Java 15\%, \Textbf{C 12\%}, \Textbf{\CC 5.5\%}, Python 5\%, \Csharp 4.5\% = 42\%, where the next 50 languages are less than 4\% each, with a long tail.
-The top 3 rankings over the past 30 years are:
+The C programming language is a foundational technology for modern computing with millions of lines of code implementing everything from hobby projects to commercial operating systems.
+This installation base and the programmers producing it represent a massive software engineering investment spanning decades and likely to continue for decades more.
+The TIOBE index~\cite{TIOBE} ranks the top five most \emph{popular} programming languages as Java 15\%, \Textbf{C 12\%}, \Textbf{\CC 5.5\%}, and Python 5\%, \Csharp 4.5\% = 42\%, where the next 50 languages are less than 4\% each with a long tail.
+The top three rankings over the past 30 years are as follows.
 \begin{center}
 \setlength{\tabcolsep}{10pt}
-\lstDeleteShortInline@%
-\begin{tabular}{@{}rccccccc@{}}
-		& 2018	& 2013	& 2008	& 2003	& 1998	& 1993	& 1988	\\ \hline
-Java	& 1		& 2		& 1		& 1		& 18	& -		& -		\\
+\fontsize{9bp}{11bp}\selectfont
+\lstDeleteShortInline@%
+\begin{tabular}{@{}cccccccc@{}}
+		& 2018	& 2013	& 2008	& 2003	& 1998	& 1993	& 1988	\\
+Java	& 1		& 2		& 1		& 1		& 18	& --	& --	\\
 \Textbf{C}& \Textbf{2} & \Textbf{1} & \Textbf{2} & \Textbf{2} & \Textbf{1} & \Textbf{1} & \Textbf{1} \\
 \CC		& 3		& 4		& 3		& 3		& 2		& 2		& 5		\\
@@ -241,17 +246,17 @@
 Love it or hate it, C is extremely popular, highly used, and one of the few systems languages.
 In many cases, \CC is often used solely as a better C.
-Nevertheless, C, first standardized almost forty years ago~\cite{ANSI89:C}, lacks many features that make programming in more modern languages safer and more productive.
-
-\CFA (pronounced ``C-for-all'', and written \CFA or Cforall) is an evolutionary extension of the C programming language that adds modern language-features to C, while maintaining source and runtime compatibility in the familiar C programming model.
-The four key design goals for \CFA~\cite{Bilson03} are:
-(1) The behaviour of standard C code must remain the same when translated by a \CFA compiler as when translated by a C compiler;
-(2) Standard C code must be as fast and as small when translated by a \CFA compiler as when translated by a C compiler;
-(3) \CFA code must be at least as portable as standard C code;
-(4) Extensions introduced by \CFA must be translated in the most efficient way possible.
-These goals ensure existing C code-bases can be converted to \CFA incrementally with minimal effort, and C programmers can productively generate \CFA code without training beyond the features being used.
-\CC is used similarly, but has the disadvantages of multiple legacy design-choices that cannot be updated, and active divergence of the language model from C, requiring significant effort and training to incrementally add \CC to a C-based project.
-
-All languages features discussed in this paper are working, except some advanced exception-handling features.
-Not discussed in this paper are the integrated concurrency-constructs and user-level threading-library~\cite{Delisle18}.
+Nevertheless, C, which was first standardized almost 30 years ago~\cite{ANSI89:C}, lacks many features that make programming in more modern languages safer and more productive.
+
+\CFA (pronounced ``C for all'' and written \CFA or Cforall) is an evolutionary extension of the C programming language that adds modern language features to C, while maintaining source and runtime compatibility in the familiar C programming model.
+The four key design goals for \CFA~\cite{Bilson03} are as follows:
+(1) the behavior of standard C code must remain the same when translated by a \CFA compiler as when translated by a C compiler;
+(2) the standard C code must be as fast and as small when translated by a \CFA compiler as when translated by a C compiler;
+(3) the \CFA code must be at least as portable as standard C code;
+(4) extensions introduced by \CFA must be translated in the most efficient way possible.
+These goals ensure that the existing C code bases can be converted into \CFA incrementally with minimal effort, and C programmers can productively generate \CFA code without training beyond the features being used.
+\CC is used similarly but has the disadvantages of multiple legacy design choices that cannot be updated and active divergence of the language model from C, requiring significant effort and training to incrementally add \CC to a C-based project.
+
+All language features discussed in this paper are working, except some advanced exception-handling features.
+Not discussed in this paper are the integrated concurrency constructs and user-level threading library~\cite{Delisle18}.
 \CFA is an \emph{open-source} project implemented as a source-to-source translator from \CFA to the gcc-dialect of C~\cite{GCCExtensions}, allowing it to leverage the portability and code optimizations provided by gcc, meeting goals (1)--(3).
 % @plg2[9]% cd cfa-cc/src; cloc ArgTweak CodeGen CodeTools Common Concurrency ControlStruct Designators GenPoly InitTweak MakeLibCfa.cc MakeLibCfa.h Parser ResolvExpr SymTab SynTree Tuples driver prelude main.cc 
@@ -269,10 +274,10 @@
 % SUM:                           223           8203           8263          46479
 % -------------------------------------------------------------------------------
-The \CFA translator is 200+ files and 46,000+ lines of code written in C/\CC.
-A translator versus a compiler makes it easier and faster to generate and debug C object-code rather than intermediate, assembler or machine code;
+The \CFA translator is 200+ files and 46\,000+ lines of code written in C/\CC.
+A translator versus a compiler makes it easier and faster to generate and debug the C object code rather than the intermediate, assembler, or machine code;
 ultimately, a compiler is necessary for advanced features and optimal performance.
 % The translator design is based on the \emph{visitor pattern}, allowing multiple passes over the abstract code-tree, which works well for incrementally adding new feature through additional visitor passes.
-Two key translator components are expression analysis, determining expression validity and what operations are required for its implementation, and code generation, dealing with multiple forms of overloading, polymorphism, and multiple return values by converting them into C code for a C compiler that supports none of these features.
-Details of these components are available in Bilson~\cite{Bilson03} Chapters 2 and 3, and form the base for the current \CFA translator.
+Two key translator components are expression analysis, determining expression validity and what operations are required for its implementation, and code generation, dealing with multiple forms of overloading, polymorphism, and multiple return values by converting them into the C code for a C compiler that supports none of these features.
+Details of these components are available in chapters 2 and 3 in the work of Bilson~\cite{Bilson03} and form the base for the current \CFA translator.
 % @plg2[8]% cd cfa-cc/src; cloc libcfa
 % -------------------------------------------------------------------------------
@@ -289,5 +294,5 @@
 % SUM:                           100           1895           2785          11763
 % -------------------------------------------------------------------------------
-The \CFA runtime system is 100+ files and 11,000+ lines of code, written in \CFA.
+The \CFA runtime system is 100+ files and 11\,000+ lines of code, written in \CFA.
 Currently, the \CFA runtime is the largest \emph{user} of \CFA providing a vehicle to test the language features and implementation.
 % @plg2[6]% cd cfa-cc/src; cloc tests examples benchmark
@@ -316,24 +321,27 @@
 
 
+\vspace*{-6pt}
 \section{Polymorphic Functions}
 
-\CFA introduces both ad-hoc and parametric polymorphism to C, with a design originally formalized by Ditchfield~\cite{Ditchfield92}, and first implemented by Bilson~\cite{Bilson03}.
-Shortcomings are identified in existing approaches to generic and variadic data types in C-like languages and how these shortcomings are avoided in \CFA.
-Specifically, the solution is both reusable and type-checked, as well as conforming to the design goals of \CFA with ergonomic use of existing C abstractions.
+\CFA introduces both ad hoc and parametric polymorphism to C, with a design originally formalized by Ditchfield~\cite{Ditchfield92} and first implemented by Bilson~\cite{Bilson03}.
+Shortcomings are identified in the existing approaches to generic and variadic data types in C-like languages and how these shortcomings are avoided in \CFA.
+Specifically, the solution is both reusable and type checked, as well as conforming to the design goals of \CFA with ergonomic use of existing C abstractions.
 The new constructs are empirically compared with C and \CC approaches via performance experiments in Section~\ref{sec:eval}.
 
 
-\subsection{Name Overloading}
+\vspace*{-6pt}
+\subsection{Name overloading}
 \label{s:NameOverloading}
 
 \begin{quote}
-There are only two hard things in Computer Science: cache invalidation and \emph{naming things} -- Phil Karlton
+``There are only two hard things in Computer Science: cache invalidation and \emph{naming things}.''---Phil Karlton
 \end{quote}
 \vspace{-9pt}
-C already has a limited form of ad-hoc polymorphism in its basic arithmetic operators, which apply to a variety of different types using identical syntax. 
+C already has a limited form of ad hoc polymorphism in its basic arithmetic operators, which apply to a variety of different types using identical syntax. 
 \CFA extends the built-in operator overloading by allowing users to define overloads for any function, not just operators, and even any variable;
 Section~\ref{sec:libraries} includes a number of examples of how this overloading simplifies \CFA programming relative to C. 
 Code generation for these overloaded functions and variables is implemented by the usual approach of mangling the identifier names to include a representation of their type, while \CFA decides which overload to apply based on the same ``usual arithmetic conversions'' used in C to disambiguate operator overloads.
-As an example:
+
+\newpage
 \begin{cfa}
 int max = 2147483647;						$\C[4in]{// (1)}$
@@ -341,8 +349,8 @@
 int max( int a, int b ) { return a < b ? b : a; }  $\C{// (3)}$
 double max( double a, double b ) { return a < b ? b : a; }  $\C{// (4)}\CRT$
-max( 7, -max );						$\C{// uses (3) and (1), by matching int from constant 7}$
+max( 7, -max );						$\C[3in]{// uses (3) and (1), by matching int from constant 7}$
 max( max, 3.14 );					$\C{// uses (4) and (2), by matching double from constant 3.14}$
 max( max, -max );					$\C{// ERROR, ambiguous}$
-int m = max( max, -max );			$\C{// uses (3) and (1) twice, by matching return type}$
+int m = max( max, -max );			$\C{// uses (3) and (1) twice, by matching return type}\CRT$
 \end{cfa}
 
@@ -350,13 +358,12 @@
 In some cases, hundreds of names can be reduced to tens, resulting in a significant cognitive reduction.
 In the above, the name @max@ has a consistent meaning, and a programmer only needs to remember the single concept: maximum.
-To prevent significant ambiguities, \CFA uses the return type in selecting overloads, \eg in the assignment to @m@, the compiler use @m@'s type to unambiguously select the most appropriate call to function @max@ (as does Ada).
+To prevent significant ambiguities, \CFA uses the return type in selecting overloads, \eg in the assignment to @m@, the compiler uses @m@'s type to unambiguously select the most appropriate call to function @max@ (as does Ada).
 As is shown later, there are a number of situations where \CFA takes advantage of available type information to disambiguate, where other programming languages generate ambiguities.
 
-\Celeven added @_Generic@ expressions~\cite[\S~6.5.1.1]{C11}, which is used with preprocessor macros to provide ad-hoc polymorphism;
+\Celeven added @_Generic@ expressions (see section~6.5.1.1 of the ISO/IEC 9899~\cite{C11}), which is used with preprocessor macros to provide ad hoc polymorphism;
 however, this polymorphism is both functionally and ergonomically inferior to \CFA name overloading. 
-The macro wrapping the generic expression imposes some limitations;
-\eg, it cannot implement the example above, because the variables @max@ are ambiguous with the functions @max@. 
+The macro wrapping the generic expression imposes some limitations, for instance, it cannot implement the example above, because the variables @max@ are ambiguous with the functions @max@. 
 Ergonomic limitations of @_Generic@ include the necessity to put a fixed list of supported types in a single place and manually dispatch to appropriate overloads, as well as possible namespace pollution from the dispatch functions, which must all have distinct names.
-\CFA supports @_Generic@ expressions for backwards compatibility, but it is an unnecessary mechanism. \TODO{actually implement that}
+\CFA supports @_Generic@ expressions for backward compatibility, but it is an unnecessary mechanism.
 
 % http://fanf.livejournal.com/144696.html
@@ -365,8 +372,9 @@
 
 
-\subsection{\texorpdfstring{\protect\lstinline{forall} Functions}{forall Functions}}
+\vspace*{-10pt}
+\subsection{\texorpdfstring{\protect\lstinline{forall} functions}{forall functions}}
 \label{sec:poly-fns}
 
-The signature feature of \CFA is parametric-polymorphic functions~\cite{forceone:impl,Cormack90,Duggan96} with functions generalized using a @forall@ clause (giving the language its name):
+The signature feature of \CFA is parametric-polymorphic functions~\cite{forceone:impl,Cormack90,Duggan96} with functions generalized using a @forall@ clause (giving the language its name).
 \begin{cfa}
 `forall( otype T )` T identity( T val ) { return val; }
@@ -375,26 +383,27 @@
 This @identity@ function can be applied to any complete \newterm{object type} (or @otype@).
 The type variable @T@ is transformed into a set of additional implicit parameters encoding sufficient information about @T@ to create and return a variable of that type.
-The \CFA implementation passes the size and alignment of the type represented by an @otype@ parameter, as well as an assignment operator, constructor, copy constructor and destructor.
-If this extra information is not needed, \eg for a pointer, the type parameter can be declared as a \newterm{data type} (or @dtype@).
-
-In \CFA, the polymorphic runtime-cost is spread over each polymorphic call, because more arguments are passed to polymorphic functions;
-the experiments in Section~\ref{sec:eval} show this overhead is similar to \CC virtual-function calls.
-A design advantage is that, unlike \CC template-functions, \CFA polymorphic-functions are compatible with C \emph{separate compilation}, preventing compilation and code bloat.
-
-Since bare polymorphic-types provide a restricted set of available operations, \CFA provides a \newterm{type assertion}~\cite[pp.~37-44]{Alphard} mechanism to provide further type information, where type assertions may be variable or function declarations that depend on a polymorphic type-variable.
-For example, the function @twice@ can be defined using the \CFA syntax for operator overloading:
+The \CFA implementation passes the size and alignment of the type represented by an @otype@ parameter, as well as an assignment operator, constructor, copy constructor, and destructor.
+If this extra information is not needed, for instance, for a pointer, the type parameter can be declared as a \newterm{data type} (or @dtype@).
+
+In \CFA, the polymorphic runtime cost is spread over each polymorphic call, because more arguments are passed to polymorphic functions;
+the experiments in Section~\ref{sec:eval} show this overhead is similar to \CC virtual function calls.
+A design advantage is that, unlike \CC template functions, \CFA polymorphic functions are compatible with C \emph{separate compilation}, preventing compilation and code bloat.
+
+Since bare polymorphic types provide a restricted set of available operations, \CFA provides a \newterm{type assertion}~\cite[pp.~37-44]{Alphard} mechanism to provide further type information, where type assertions may be variable or function declarations that depend on a polymorphic type variable.
+For example, the function @twice@ can be defined using the \CFA syntax for operator overloading.
 \begin{cfa}
 forall( otype T `| { T ?+?(T, T); }` ) T twice( T x ) { return x `+` x; }  $\C{// ? denotes operands}$
 int val = twice( twice( 3.7 ) );  $\C{// val == 14}$
 \end{cfa}
-which works for any type @T@ with a matching addition operator.
-The polymorphism is achieved by creating a wrapper function for calling @+@ with @T@ bound to @double@, then passing this function to the first call of @twice@.
-There is now the option of using the same @twice@ and converting the result to @int@ on assignment, or creating another @twice@ with type parameter @T@ bound to @int@ because \CFA uses the return type~\cite{Cormack81,Baker82,Ada} in its type analysis.
-The first approach has a late conversion from @double@ to @int@ on the final assignment, while the second has an early conversion to @int@.
-\CFA minimizes the number of conversions and their potential to lose information, so it selects the first approach, which corresponds with C-programmer intuition.
+This works for any type @T@ with a matching addition operator.
+The polymorphism is achieved by creating a wrapper function for calling @+@ with the @T@ bound to @double@ and then passing this function to the first call of @twice@.
+There is now the option of using the same @twice@ and converting the result into @int@ on assignment or creating another @twice@ with the type parameter @T@ bound to @int@ because \CFA uses the return type~\cite{Cormack81,Baker82,Ada} in its type analysis.
+The first approach has a late conversion from @double@ to @int@ on the final assignment, whereas the second has an early conversion to @int@.
+\CFA minimizes the number of conversions and their potential to lose information;
+hence, it selects the first approach, which corresponds with C programmer intuition.
 
 Crucial to the design of a new programming language are the libraries to access thousands of external software features.
-Like \CC, \CFA inherits a massive compatible library-base, where other programming languages must rewrite or provide fragile inter-language communication with C.
-A simple example is leveraging the existing type-unsafe (@void *@) C @bsearch@ to binary search a sorted float array:
+Like \CC, \CFA inherits a massive compatible library base, where other programming languages must rewrite or provide fragile interlanguage communication with C.
+A simple example is leveraging the existing type-unsafe (@void *@) C @bsearch@ to binary search a sorted float array.
 \begin{cfa}
 void * bsearch( const void * key, const void * base, size_t nmemb, size_t size,
@@ -406,5 +415,5 @@
 double * val = (double *)bsearch( &key, vals, 10, sizeof(vals[0]), comp ); $\C{// search sorted array}$
 \end{cfa}
-which can be augmented simply with generalized, type-safe, \CFA-overloaded wrappers:
+This can be augmented simply with generalized, type-safe, \CFA-overloaded wrappers.
 \begin{cfa}
 forall( otype T | { int ?<?( T, T ); } ) T * bsearch( T key, const T * arr, size_t size ) {
@@ -420,7 +429,8 @@
 \end{cfa}
 The nested function @comp@ provides the hidden interface from typed \CFA to untyped (@void *@) C, plus the cast of the result.
-Providing a hidden @comp@ function in \CC is awkward as lambdas do not use C calling-conventions and template declarations cannot appear at block scope.
-As well, an alternate kind of return is made available: position versus pointer to found element.
-\CC's type-system cannot disambiguate between the two versions of @bsearch@ because it does not use the return type in overload resolution, nor can \CC separately compile a template @bsearch@.
+% FIX
+Providing a hidden @comp@ function in \CC is awkward as lambdas do not use C calling conventions and template declarations cannot appear in block scope.
+In addition, an alternate kind of return is made available: position versus pointer to found element.
+\CC's type system cannot disambiguate between the two versions of @bsearch@ because it does not use the return type in overload resolution, nor can \CC separately compile a template @bsearch@.
 
 \CFA has replacement libraries condensing hundreds of existing C functions into tens of \CFA overloaded functions, all without rewriting the actual computations (see Section~\ref{sec:libraries}).
@@ -432,18 +442,18 @@
 \end{cfa}
 
-Call-site inferencing and nested functions provide a localized form of inheritance.
+Call site inferencing and nested functions provide a localized form of inheritance.
 For example, the \CFA @qsort@ only sorts in ascending order using @<@.
-However, it is trivial to locally change this behaviour:
+However, it is trivial to locally change this behavior.
 \begin{cfa}
 forall( otype T | { int ?<?( T, T ); } ) void qsort( const T * arr, size_t size ) { /* use C qsort */ }
 int main() {
-	int ?<?( double x, double y ) { return x `>` y; } $\C{// locally override behaviour}$
+	int ?<?( double x, double y ) { return x `>` y; } $\C{// locally override behavior}$
 	qsort( vals, 10 );							$\C{// descending sort}$
 }
 \end{cfa}
 The local version of @?<?@ performs @?>?@ overriding the built-in @?<?@ so it is passed to @qsort@.
-Hence, programmers can easily form local environments, adding and modifying appropriate functions, to maximize reuse of other existing functions and types.
-
-To reduce duplication, it is possible to distribute a group of @forall@ (and storage-class qualifiers) over functions/types, so each block declaration is prefixed by the group (see example in Appendix~\ref{s:CforallStack}).
+Therefore, programmers can easily form local environments, adding and modifying appropriate functions, to maximize the reuse of other existing functions and types.
+
+To reduce duplication, it is possible to distribute a group of @forall@ (and storage-class qualifiers) over functions/types, such that each block declaration is prefixed by the group (see the example in Appendix~\ref{s:CforallStack}).
 \begin{cfa}
 forall( otype `T` ) {							$\C{// distribution block, add forall qualifier to declarations}$
@@ -456,9 +466,7 @@
 
 
-\vspace*{-2pt}
 \subsection{Traits}
 
-\CFA provides \newterm{traits} to name a group of type assertions, where the trait name allows specifying the same set of assertions in multiple locations, preventing repetition mistakes at each function declaration:
-
+\CFA provides \newterm{traits} to name a group of type assertions, where the trait name allows specifying the same set of assertions in multiple locations, preventing repetition mistakes at each function declaration.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -487,6 +495,6 @@
 \end{cquote}
 
-Note, the @sumable@ trait does not include a copy constructor needed for the right side of @?+=?@ and return;
-it is provided by @otype@, which is syntactic sugar for the following trait:
+Note that the @sumable@ trait does not include a copy constructor needed for the right side of @?+=?@ and return;
+it is provided by @otype@, which is syntactic sugar for the following trait.
 \begin{cfa}
 trait otype( dtype T | sized(T) ) {  // sized is a pseudo-trait for types with known size and alignment
@@ -497,13 +505,13 @@
 };
 \end{cfa}
-Given the information provided for an @otype@, variables of polymorphic type can be treated as if they were a complete type: stack-allocatable, default or copy-initialized, assigned, and deleted.
-
-In summation, the \CFA type-system uses \newterm{nominal typing} for concrete types, matching with the C type-system, and \newterm{structural typing} for polymorphic types.
+Given the information provided for an @otype@, variables of polymorphic type can be treated as if they were a complete type: stack allocatable, default or copy initialized, assigned, and deleted.
+
+In summation, the \CFA type system uses \newterm{nominal typing} for concrete types, matching with the C type system, and \newterm{structural typing} for polymorphic types.
 Hence, trait names play no part in type equivalence;
 the names are simply macros for a list of polymorphic assertions, which are expanded at usage sites.
-Nevertheless, trait names form a logical subtype-hierarchy with @dtype@ at the top, where traits often contain overlapping assertions, \eg operator @+@.
-Traits are used like interfaces in Java or abstract base-classes in \CC, but without the nominal inheritance-relationships.
-Instead, each polymorphic function (or generic type) defines the structural type needed for its execution (polymorphic type-key), and this key is fulfilled at each call site from the lexical environment, which is similar to Go~\cite{Go} interfaces.
-Hence, new lexical scopes and nested functions are used extensively to create local subtypes, as in the @qsort@ example, without having to manage a nominal-inheritance hierarchy.
+Nevertheless, trait names form a logical subtype hierarchy with @dtype@ at the top, where traits often contain overlapping assertions, \eg operator @+@.
+Traits are used like interfaces in Java or abstract base classes in \CC, but without the nominal inheritance relationships.
+Instead, each polymorphic function (or generic type) defines the structural type needed for its execution (polymorphic type key), and this key is fulfilled at each call site from the lexical environment, which is similar to the Go~\cite{Go} interfaces.
+Hence, new lexical scopes and nested functions are used extensively to create local subtypes, as in the @qsort@ example, without having to manage a nominal inheritance hierarchy.
 % (Nominal inheritance can be approximated with traits using marker variables or functions, as is done in Go.)
 
@@ -536,17 +544,17 @@
 
 A significant shortcoming of standard C is the lack of reusable type-safe abstractions for generic data structures and algorithms.
-Broadly speaking, there are three approaches to implement abstract data-structures in C.
-One approach is to write bespoke data-structures for each context in which they are needed.
-While this approach is flexible and supports integration with the C type-checker and tooling, it is also tedious and error-prone, especially for more complex data structures.
-A second approach is to use @void *@-based polymorphism, \eg the C standard-library functions @bsearch@ and @qsort@, which allow reuse of code with common functionality.
-However, basing all polymorphism on @void *@ eliminates the type-checker's ability to ensure that argument types are properly matched, often requiring a number of extra function parameters, pointer indirection, and dynamic allocation that is not otherwise needed.
-A third approach to generic code is to use preprocessor macros, which does allow the generated code to be both generic and type-checked, but errors may be difficult to interpret.
+Broadly speaking, there are three approaches to implement abstract data structures in C.
+One approach is to write bespoke data structures for each context in which they are needed.
+While this approach is flexible and supports integration with the C type checker and tooling, it is also tedious and error prone, especially for more complex data structures.
+A second approach is to use @void *@-based polymorphism, \eg the C standard library functions @bsearch@ and @qsort@, which allow for the reuse of code with common functionality.
+However, basing all polymorphism on @void *@ eliminates the type checker's ability to ensure that argument types are properly matched, often requiring a number of extra function parameters, pointer indirection, and dynamic allocation that is otherwise not needed.
+A third approach to generic code is to use preprocessor macros, which does allow the generated code to be both generic and type checked, but errors may be difficult to interpret.
 Furthermore, writing and using preprocessor macros is unnatural and inflexible.
 
-\CC, Java, and other languages use \newterm{generic types} to produce type-safe abstract data-types.
-\CFA generic types integrate efficiently and naturally with the existing polymorphic functions, while retaining backwards compatibility with C and providing separate compilation.
+\CC, Java, and other languages use \newterm{generic types} to produce type-safe abstract data types.
+\CFA generic types integrate efficiently and naturally with the existing polymorphic functions, while retaining backward compatibility with C and providing separate compilation.
 However, for known concrete parameters, the generic-type definition can be inlined, like \CC templates.
 
-A generic type can be declared by placing a @forall@ specifier on a @struct@ or @union@ declaration, and instantiated using a parenthesized list of types after the type name:
+A generic type can be declared by placing a @forall@ specifier on a @struct@ or @union@ declaration and instantiated using a parenthesized list of types after the type name.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -576,11 +584,11 @@
 
 \CFA classifies generic types as either \newterm{concrete} or \newterm{dynamic}.
-Concrete types have a fixed memory layout regardless of type parameters, while dynamic types vary in memory layout depending on their type parameters.
+Concrete types have a fixed memory layout regardless of type parameters, whereas dynamic types vary in memory layout depending on their type parameters.
 A \newterm{dtype-static} type has polymorphic parameters but is still concrete.
 Polymorphic pointers are an example of dtype-static types;
-given some type variable @T@, @T@ is a polymorphic type, as is @T *@, but @T *@ has a fixed size and can therefore be represented by @void *@ in code generation.
-
-\CFA generic types also allow checked argument-constraints.
-For example, the following declaration of a sorted set-type ensures the set key supports equality and relational comparison:
+given some type variable @T@, @T@ is a polymorphic type, as is @T *@, but @T *@ has a fixed size and can, therefore, be represented by @void *@ in code generation.
+
+\CFA generic types also allow checked argument constraints.
+For example, the following declaration of a sorted set type ensures the set key supports equality and relational comparison.
 \begin{cfa}
 forall( otype Key | { _Bool ?==?(Key, Key); _Bool ?<?(Key, Key); } ) struct sorted_set;
@@ -588,10 +596,10 @@
 
 
-\subsection{Concrete Generic-Types}
-
-The \CFA translator template-expands concrete generic-types into new structure types, affording maximal inlining.
-To enable inter-operation among equivalent instantiations of a generic type, the translator saves the set of instantiations currently in scope and reuses the generated structure declarations where appropriate.
-A function declaration that accepts or returns a concrete generic-type produces a declaration for the instantiated structure in the same scope, which all callers may reuse.
-For example, the concrete instantiation for @pair( const char *, int )@ is:
+\subsection{Concrete generic types}
+
+The \CFA translator template expands concrete generic types into new structure types, affording maximal inlining.
+To enable interoperation among equivalent instantiations of a generic type, the translator saves the set of instantiations currently in scope and reuses the generated structure declarations where appropriate.
+A function declaration that accepts or returns a concrete generic type produces a declaration for the instantiated structure in the same scope, which all callers may reuse.
+For example, the concrete instantiation for @pair( const char *, int )@ is
 \begin{cfa}
 struct _pair_conc0 {
@@ -600,6 +608,6 @@
 \end{cfa}
 
-A concrete generic-type with dtype-static parameters is also expanded to a structure type, but this type is used for all matching instantiations.
-In the above example, the @pair( F *, T * )@ parameter to @value@ is such a type; its expansion is below and it is used as the type of the variables @q@ and @r@ as well, with casts for member access where appropriate:
+A concrete generic type with dtype-static parameters is also expanded to a structure type, but this type is used for all matching instantiations.
+In the above example, the @pair( F *, T * )@ parameter to @value@ is such a type; its expansion is below, and it is used as the type of the variables @q@ and @r@ as well, with casts for member access where appropriate.
 \begin{cfa}
 struct _pair_conc1 {
@@ -609,28 +617,33 @@
 
 
-\subsection{Dynamic Generic-Types}
-
-Though \CFA implements concrete generic-types efficiently, it also has a fully general system for dynamic generic types.
-As mentioned in Section~\ref{sec:poly-fns}, @otype@ function parameters (in fact all @sized@ polymorphic parameters) come with implicit size and alignment parameters provided by the caller.
-Dynamic generic-types also have an \newterm{offset array} containing structure-member offsets.
-A dynamic generic-@union@ needs no such offset array, as all members are at offset 0, but size and alignment are still necessary.
-Access to members of a dynamic structure is provided at runtime via base-displacement addressing with the structure pointer and the member offset (similar to the @offsetof@ macro), moving a compile-time offset calculation to runtime.
+\subsection{Dynamic generic types}
+
+Though \CFA implements concrete generic types efficiently, it also has a fully general system for dynamic generic types.
+As mentioned in Section~\ref{sec:poly-fns}, @otype@ function parameters (in fact, all @sized@ polymorphic parameters) come with implicit size and alignment parameters provided by the caller.
+Dynamic generic types also have an \newterm{offset array} containing structure-member offsets.
+A dynamic generic @union@ needs no such offset array, as all members are at offset 0, but size and alignment are still necessary.
+Access to members of a dynamic structure is provided at runtime via base displacement addressing
+% FIX
+using the structure pointer and the member offset (similar to the @offsetof@ macro), moving a compile-time offset calculation to runtime.
 
 The offset arrays are statically generated where possible.
-If a dynamic generic-type is declared to be passed or returned by value from a polymorphic function, the translator can safely assume the generic type is complete (\ie has a known layout) at any call-site, and the offset array is passed from the caller;
+If a dynamic generic type is declared to be passed or returned by value from a polymorphic function, the translator can safely assume that the generic type is complete (\ie has a known layout) at any call site, and the offset array is passed from the caller;
 if the generic type is concrete at the call site, the elements of this offset array can even be statically generated using the C @offsetof@ macro.
-As an example, the body of the second @value@ function is implemented as:
+As an example, the body of the second @value@ function is implemented as
 \begin{cfa}
 _assign_T( _retval, p + _offsetof_pair[1] ); $\C{// return *p.second}$
 \end{cfa}
-@_assign_T@ is passed in as an implicit parameter from @otype T@, and takes two @T *@ (@void *@ in the generated code), a destination and a source; @_retval@ is the pointer to a caller-allocated buffer for the return value, the usual \CFA method to handle dynamically-sized return types.
-@_offsetof_pair@ is the offset array passed into @value@; this array is generated at the call site as:
+\newpage
+\noindent
+Here, @_assign_T@ is passed in as an implicit parameter from @otype T@, and takes two @T *@ (@void *@ in the generated code), a destination and a source, and @_retval@ is the pointer to a caller-allocated buffer for the return value, the usual \CFA method to handle dynamically sized return types.
+@_offsetof_pair@ is the offset array passed into @value@;
+this array is generated at the call site as
 \begin{cfa}
 size_t _offsetof_pair[] = { offsetof( _pair_conc0, first ), offsetof( _pair_conc0, second ) }
 \end{cfa}
 
-In some cases the offset arrays cannot be statically generated.
-For instance, modularity is generally provided in C by including an opaque forward-declaration of a structure and associated accessor and mutator functions in a header file, with the actual implementations in a separately-compiled @.c@ file.
-\CFA supports this pattern for generic types, but the caller does not know the actual layout or size of the dynamic generic-type, and only holds it by a pointer.
+In some cases, the offset arrays cannot be statically generated.
+For instance, modularity is generally provided in C by including an opaque forward declaration of a structure and associated accessor and mutator functions in a header file, with the actual implementations in a separately compiled @.c@ file.
+\CFA supports this pattern for generic types, but the caller does not know the actual layout or size of the dynamic generic type and only holds it by a pointer.
 The \CFA translator automatically generates \newterm{layout functions} for cases where the size, alignment, and offset array of a generic struct cannot be passed into a function from that function's caller.
 These layout functions take as arguments pointers to size and alignment variables and a caller-allocated array of member offsets, as well as the size and alignment of all @sized@ parameters to the generic structure (un@sized@ parameters are forbidden from being used in a context that affects layout).
@@ -642,5 +655,6 @@
 Whether a type is concrete, dtype-static, or dynamic is decided solely on the @forall@'s type parameters.
 This design allows opaque forward declarations of generic types, \eg @forall(otype T)@ @struct Box@ -- like in C, all uses of @Box(T)@ can be separately compiled, and callers from other translation units know the proper calling conventions to use.
-If the definition of a structure type is included in deciding whether a generic type is dynamic or concrete, some further types may be recognized as dtype-static (\eg @forall(otype T)@ @struct unique_ptr { T * p }@ does not depend on @T@ for its layout, but the existence of an @otype@ parameter means that it \emph{could}.), but preserving separate compilation (and the associated C compatibility) in the existing design is judged to be an appropriate trade-off.
+If the definition of a structure type is included in deciding whether a generic type is dynamic or concrete, some further types may be recognized as dtype-static (\eg @forall(otype T)@ @struct unique_ptr { T * p }@ does not depend on @T@ for its layout, but the existence of an @otype@ parameter means that it \emph{could}.);
+however, preserving separate compilation (and the associated C compatibility) in the existing design is judged to be an appropriate trade-off.
 
 
@@ -655,8 +669,9 @@
 }
 \end{cfa}
-Since @pair( T *, T * )@ is a concrete type, there are no implicit parameters passed to @lexcmp@, so the generated code is identical to a function written in standard C using @void *@, yet the \CFA version is type-checked to ensure the members of both pairs and the arguments to the comparison function match in type.
-
-Another useful pattern enabled by reused dtype-static type instantiations is zero-cost \newterm{tag-structures}.
-Sometimes information is only used for type-checking and can be omitted at runtime, \eg:
+Since @pair( T *, T * )@ is a concrete type, there are no implicit parameters passed to @lexcmp@;
+hence, the generated code is identical to a function written in standard C using @void *@, yet the \CFA version is type checked to ensure members of both pairs and arguments to the comparison function match in type.
+
+Another useful pattern enabled by reused dtype-static type instantiations is zero-cost \newterm{tag structures}.
+Sometimes, information is only used for type checking and can be omitted at runtime.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -677,12 +692,13 @@
 							half_marathon;
 scalar(litres) two_pools = pool + pool;
-`marathon + pool;`	// ERROR, mismatched types
+`marathon + pool;` // ERROR, mismatched types
 \end{cfa}
 \end{tabular}
 \lstMakeShortInline@%
 \end{cquote}
-@scalar@ is a dtype-static type, so all uses have a single structure definition, containing @unsigned long@, and can share the same implementations of common functions like @?+?@.
+Here, @scalar@ is a dtype-static type;
+hence, all uses have a single structure definition, containing @unsigned long@, and can share the same implementations of common functions like @?+?@.
 These implementations may even be separately compiled, unlike \CC template functions.
-However, the \CFA type-checker ensures matching types are used by all calls to @?+?@, preventing nonsensical computations like adding a length to a volume.
+However, the \CFA type checker ensures matching types are used by all calls to @?+?@, preventing nonsensical computations like adding a length to a volume.
 
 
@@ -690,5 +706,5 @@
 \label{sec:tuples}
 
-In many languages, functions can return at most one value;
+In many languages, functions can return, at most, one value;
 however, many operations have multiple outcomes, some exceptional.
 Consider C's @div@ and @remquo@ functions, which return the quotient and remainder for a division of integer and float values, respectively.
@@ -701,7 +717,8 @@
 double r = remquo( 13.5, 5.2, &q );			$\C{// return remainder, alias quotient}$
 \end{cfa}
-@div@ aggregates the quotient/remainder in a structure, while @remquo@ aliases a parameter to an argument.
+Here, @div@ aggregates the quotient/remainder in a structure, whereas @remquo@ aliases a parameter to an argument.
 Both approaches are awkward.
-Alternatively, a programming language can directly support returning multiple values, \eg in \CFA:
+% FIX
+Alternatively, a programming language can directly support returning multiple values, \eg \CFA provides the following.
 \begin{cfa}
 [ int, int ] div( int num, int den );		$\C{// return two integers}$
@@ -714,20 +731,20 @@
 This approach is straightforward to understand and use;
 therefore, why do few programming languages support this obvious feature or provide it awkwardly?
-To answer, there are complex consequences that cascade through multiple aspects of the language, especially the type-system.
-This section show these consequences and how \CFA handles them.
+To answer, there are complex consequences that cascade through multiple aspects of the language, especially the type system.
+This section shows these consequences and how \CFA handles them.
 
 
 \subsection{Tuple Expressions}
 
-The addition of multiple-return-value functions (MRVF) are \emph{useless} without a syntax for accepting multiple values at the call-site.
+The addition of multiple-return-value functions (MRVFs) is \emph{useless} without a syntax for accepting multiple values at the call site.
 The simplest mechanism for capturing the return values is variable assignment, allowing the values to be retrieved directly.
 As such, \CFA allows assigning multiple values from a function into multiple variables, using a square-bracketed list of lvalue expressions (as above), called a \newterm{tuple}.
 
-However, functions also use \newterm{composition} (nested calls), with the direct consequence that MRVFs must also support composition to be orthogonal with single-returning-value functions (SRVF), \eg:
+However, functions also use \newterm{composition} (nested calls), with the direct consequence that MRVFs must also support composition to be orthogonal with single-returning-value functions (SRVFs), \eg, \CFA provides the following.
 \begin{cfa}
 printf( "%d %d\n", div( 13, 5 ) );			$\C{// return values seperated into arguments}$
 \end{cfa}
 Here, the values returned by @div@ are composed with the call to @printf@ by flattening the tuple into separate arguments.
-However, the \CFA type-system must support significantly more complex composition:
+However, the \CFA type-system must support significantly more complex composition.
 \begin{cfa}
 [ int, int ] foo$\(_1\)$( int );			$\C{// overloaded foo functions}$
@@ -736,26 +753,29 @@
 `bar`( foo( 3 ), foo( 3 ) );
 \end{cfa}
-The type-resolver only has the tuple return-types to resolve the call to @bar@ as the @foo@ parameters are identical, which involves unifying the possible @foo@ functions with @bar@'s parameter list.
-No combination of @foo@s are an exact match with @bar@'s parameters, so the resolver applies C conversions.
+The type resolver only has the tuple return types to resolve the call to @bar@ as the @foo@ parameters are identical, which involves unifying the possible @foo@ functions with @bar@'s parameter list.
+No combination of @foo@s is an exact match with @bar@'s parameters;
+thus, the resolver applies C conversions.
+% FIX
 The minimal cost is @bar( foo@$_1$@( 3 ), foo@$_2$@( 3 ) )@, giving (@int@, {\color{ForestGreen}@int@}, @double@) to (@int@, {\color{ForestGreen}@double@}, @double@) with one {\color{ForestGreen}safe} (widening) conversion from @int@ to @double@ versus ({\color{red}@double@}, {\color{ForestGreen}@int@}, {\color{ForestGreen}@int@}) to ({\color{red}@int@}, {\color{ForestGreen}@double@}, {\color{ForestGreen}@double@}) with one {\color{red}unsafe} (narrowing) conversion from @double@ to @int@ and two safe conversions.
 
 
-\subsection{Tuple Variables}
+\subsection{Tuple variables}
 
 An important observation from function composition is that new variable names are not required to initialize parameters from an MRVF.
-\CFA also allows declaration of tuple variables that can be initialized from an MRVF, since it can be awkward to declare multiple variables of different types, \eg:
+\CFA also allows declaration of tuple variables that can be initialized from an MRVF, since it can be awkward to declare multiple variables of different types.
+\newpage
 \begin{cfa}
 [ int, int ] qr = div( 13, 5 );				$\C{// tuple-variable declaration and initialization}$
 [ double, double ] qr = div( 13.5, 5.2 );
 \end{cfa}
-where the tuple variable-name serves the same purpose as the parameter name(s).
+Here, the tuple variable name serves the same purpose as the parameter name(s).
 Tuple variables can be composed of any types, except for array types, since array sizes are generally unknown in C.
 
-One way to access the tuple-variable components is with assignment or composition:
+One way to access the tuple variable components is with assignment or composition.
 \begin{cfa}
 [ q, r ] = qr;								$\C{// access tuple-variable components}$
 printf( "%d %d\n", qr );
 \end{cfa}
-\CFA also supports \newterm{tuple indexing} to access single components of a tuple expression:
+\CFA also supports \newterm{tuple indexing} to access single components of a tuple expression.
 \begin{cfa}
 [int, int] * p = &qr;						$\C{// tuple pointer}$
@@ -768,9 +788,9 @@
 
 
-\subsection{Flattening and Restructuring}
+\subsection{Flattening and restructuring}
 
 In function call contexts, tuples support implicit flattening and restructuring conversions.
 Tuple flattening recursively expands a tuple into the list of its basic components.
-Tuple structuring packages a list of expressions into a value of tuple type, \eg:
+Tuple structuring packages a list of expressions into a value of tuple type.
 \begin{cfa}
 int f( int, int );
@@ -783,14 +803,15 @@
 h( x, y );									$\C{// flatten and structure}$
 \end{cfa}
-In the call to @f@, @x@ is implicitly flattened so the components of @x@ are passed as the two arguments.
+In the call to @f@, @x@ is implicitly flattened so the components of @x@ are passed as two arguments.
 In the call to @g@, the values @y@ and @10@ are structured into a single argument of type @[int, int]@ to match the parameter type of @g@.
 Finally, in the call to @h@, @x@ is flattened to yield an argument list of length 3, of which the first component of @x@ is passed as the first parameter of @h@, and the second component of @x@ and @y@ are structured into the second argument of type @[int, int]@.
-The flexible structure of tuples permits a simple and expressive function call syntax to work seamlessly with both SRVF and MRVF, and with any number of arguments of arbitrarily complex structure.
-
-
-\subsection{Tuple Assignment}
-
+The flexible structure of tuples permits a simple and expressive function call syntax to work seamlessly with both SRVFs and MRVFs with any number of arguments of arbitrarily complex structure.
+
+
+\subsection{Tuple assignment}
+
+\enlargethispage{-10pt}
 An assignment where the left side is a tuple type is called \newterm{tuple assignment}.
-There are two kinds of tuple assignment depending on whether the right side of the assignment operator has a tuple type or a non-tuple type, called \newterm{multiple} and \newterm{mass assignment}, respectively.
+There are two kinds of tuple assignment depending on whether the right side of the assignment operator has a tuple type or a nontuple type, called \newterm{multiple} and \newterm{mass assignment}, respectively.
 \begin{cfa}
 int x = 10;
@@ -802,11 +823,10 @@
 [y, x] = 3.14;								$\C{// mass assignment}$
 \end{cfa}
-Both kinds of tuple assignment have parallel semantics, so that each value on the left and right side is evaluated before any assignments occur.
+Both kinds of tuple assignment have parallel semantics, so that each value on the left and right sides is evaluated before any assignments occur.
 As a result, it is possible to swap the values in two variables without explicitly creating any temporary variables or calling a function, \eg, @[x, y] = [y, x]@.
 This semantics means mass assignment differs from C cascading assignment (\eg @a = b = c@) in that conversions are applied in each individual assignment, which prevents data loss from the chain of conversions that can happen during a cascading assignment.
-For example, @[y, x] = 3.14@ performs the assignments @y = 3.14@ and @x = 3.14@, yielding @y == 3.14@ and @x == 3@;
-whereas, C cascading assignment @y = x = 3.14@ performs the assignments @x = 3.14@ and @y = x@, yielding @3@ in @y@ and @x@.
+For example, @[y, x] = 3.14@ performs the assignments @y = 3.14@ and @x = 3.14@, yielding @y == 3.14@ and @x == 3@, whereas C cascading assignment @y = x = 3.14@ performs the assignments @x = 3.14@ and @y = x@, yielding @3@ in @y@ and @x@.
 Finally, tuple assignment is an expression where the result type is the type of the left-hand side of the assignment, just like all other assignment expressions in C.
-This example shows mass, multiple, and cascading assignment used in one expression:
+This example shows mass, multiple, and cascading assignment used in one expression.
 \begin{cfa}
 [void] f( [int, int] );
@@ -815,8 +835,8 @@
 
 
-\subsection{Member Access}
-
-It is also possible to access multiple members from a single expression using a \newterm{member-access}.
-The result is a single tuple-valued expression whose type is the tuple of the types of the members, \eg:
+\subsection{Member access}
+
+It is also possible to access multiple members from a single expression using a \newterm{member access}.
+The result is a single tuple-valued expression whose type is the tuple of the types of the members.
 \begin{cfa}
 struct S { int x; double y; char * z; } s;
@@ -832,5 +852,5 @@
 [int, int, int] y = x.[2, 0, 2];			$\C{// duplicate: [y.0, y.1, y.2] = [x.2, x.0.x.2]}$
 \end{cfa}
-It is also possible for a member access to contain other member accesses, \eg:
+It is also possible for a member access to contain other member accesses.
 \begin{cfa}
 struct A { double i; int j; };
@@ -899,10 +919,10 @@
 
 Tuples also integrate with \CFA polymorphism as a kind of generic type.
-Due to the implicit flattening and structuring conversions involved in argument passing, @otype@ and @dtype@ parameters are restricted to matching only with non-tuple types, \eg:
+Due to the implicit flattening and structuring conversions involved in argument passing, @otype@ and @dtype@ parameters are restricted to matching only with nontuple types.
 \begin{cfa}
 forall( otype T, dtype U ) void f( T x, U * y );
 f( [5, "hello"] );
 \end{cfa}
-where @[5, "hello"]@ is flattened, giving argument list @5, "hello"@, and @T@ binds to @int@ and @U@ binds to @const char@.
+Here, @[5, "hello"]@ is flattened, giving argument list @5, "hello"@, and @T@ binds to @int@ and @U@ binds to @const char@.
 Tuples, however, may contain polymorphic components.
 For example, a plus operator can be written to sum two triples.
@@ -922,4 +942,5 @@
 g( 5, 10.21 );
 \end{cfa}
+\newpage
 Hence, function parameter and return lists are flattened for the purposes of type unification allowing the example to pass expression resolution.
 This relaxation is possible by extending the thunk scheme described by Bilson~\cite{Bilson03}.
@@ -932,10 +953,10 @@
 
 
-\subsection{Variadic Tuples}
+\subsection{Variadic tuples}
 \label{sec:variadic-tuples}
 
-To define variadic functions, \CFA adds a new kind of type parameter, @ttype@ (tuple type).
-Matching against a @ttype@ parameter consumes all remaining argument components and packages them into a tuple, binding to the resulting tuple of types.
-In a given parameter list, there must be at most one @ttype@ parameter that occurs last, which matches normal variadic semantics, with a strong feeling of similarity to \CCeleven variadic templates.
+To define variadic functions, \CFA adds a new kind of type parameter, \ie @ttype@ (tuple type).
+Matching against a @ttype@ parameter consumes all the remaining argument components and packages them into a tuple, binding to the resulting tuple of types.
+In a given parameter list, there must be, at most, one @ttype@ parameter that occurs last, which matches normal variadic semantics, with a strong feeling of similarity to \CCeleven variadic templates.
 As such, @ttype@ variables are also called \newterm{argument packs}.
 
@@ -943,5 +964,5 @@
 Since nothing is known about a parameter pack by default, assertion parameters are key to doing anything meaningful.
 Unlike variadic templates, @ttype@ polymorphic functions can be separately compiled.
-For example, a generalized @sum@ function:
+For example, the following is a generalized @sum@ function. 
 \begin{cfa}
 int sum$\(_0\)$() { return 0; }
@@ -952,9 +973,9 @@
 \end{cfa}
 Since @sum@\(_0\) does not accept any arguments, it is not a valid candidate function for the call @sum(10, 20, 30)@.
-In order to call @sum@\(_1\), @10@ is matched with @x@, and the argument resolution moves on to the argument pack @rest@, which consumes the remainder of the argument list and @Params@ is bound to @[20, 30]@.
+In order to call @sum@\(_1\), @10@ is matched with @x@, and the argument resolution moves on to the argument pack @rest@, which consumes the remainder of the argument list, and @Params@ is bound to @[20, 30]@.
 The process continues until @Params@ is bound to @[]@, requiring an assertion @int sum()@, which matches @sum@\(_0\) and terminates the recursion.
 Effectively, this algorithm traces as @sum(10, 20, 30)@ $\rightarrow$ @10 + sum(20, 30)@ $\rightarrow$ @10 + (20 + sum(30))@ $\rightarrow$ @10 + (20 + (30 + sum()))@ $\rightarrow$ @10 + (20 + (30 + 0))@.
 
-It is reasonable to take the @sum@ function a step further to enforce a minimum number of arguments:
+It is reasonable to take the @sum@ function a step further to enforce a minimum number of arguments.
 \begin{cfa}
 int sum( int x, int y ) { return x + y; }
@@ -963,5 +984,5 @@
 }
 \end{cfa}
-One more step permits the summation of any sumable type with all arguments of the same type:
+One more step permits the summation of any sumable type with all arguments of the same type.
 \begin{cfa}
 trait sumable( otype T ) {
@@ -992,10 +1013,10 @@
 This example showcases a variadic-template-like decomposition of the provided argument list.
 The individual @print@ functions allow printing a single element of a type.
-The polymorphic @print@ allows printing any list of types, where as each individual type has a @print@ function.
+The polymorphic @print@ allows printing any list of types, where each individual type has a @print@ function.
 The individual print functions can be used to build up more complicated @print@ functions, such as @S@, which cannot be done with @printf@ in C.
 This mechanism is used to seamlessly print tuples in the \CFA I/O library (see Section~\ref{s:IOLibrary}).
 
 Finally, it is possible to use @ttype@ polymorphism to provide arbitrary argument forwarding functions.
-For example, it is possible to write @new@ as a library function:
+For example, it is possible to write @new@ as a library function.
 \begin{cfa}
 forall( otype R, otype S ) void ?{}( pair(R, S) *, R, S );
@@ -1006,5 +1027,5 @@
 \end{cfa}
 The @new@ function provides the combination of type-safe @malloc@ with a \CFA constructor call, making it impossible to forget constructing dynamically allocated objects.
-This function provides the type-safety of @new@ in \CC, without the need to specify the allocated type again, thanks to return-type inference.
+This function provides the type safety of @new@ in \CC, without the need to specify the allocated type again, due to return-type inference.
 
 
@@ -1012,5 +1033,6 @@
 
 Tuples are implemented in the \CFA translator via a transformation into \newterm{generic types}.
-For each $N$, the first time an $N$-tuple is seen in a scope a generic type with $N$ type parameters is generated, \eg:
+For each $N$, the first time an $N$-tuple is seen in a scope, a generic type with $N$ type parameters is generated.
+For example, the following
 \begin{cfa}
 [int, int] f() {
@@ -1019,5 +1041,5 @@
 }
 \end{cfa}
-is transformed into:
+is transformed into
 \begin{cfa}
 forall( dtype T0, dtype T1 | sized(T0) | sized(T1) ) struct _tuple2 {
@@ -1085,5 +1107,5 @@
 
 The various kinds of tuple assignment, constructors, and destructors generate GNU C statement expressions.
-A variable is generated to store the value produced by a statement expression, since its members may need to be constructed with a non-trivial constructor and it may need to be referred to multiple time, \eg in a unique expression.
+A variable is generated to store the value produced by a statement expression, since its members may need to be constructed with a nontrivial constructor and it may need to be referred to multiple time, \eg in a unique expression.
 The use of statement expressions allows the translator to arbitrarily generate additional temporary variables as needed, but binds the implementation to a non-standard extension of the C language.
 However, there are other places where the \CFA translator makes use of GNU C extensions, such as its use of nested functions, so this restriction is not new.
@@ -1093,10 +1115,10 @@
 \section{Control Structures}
 
-\CFA identifies inconsistent, problematic, and missing control structures in C, and extends, modifies, and adds control structures to increase functionality and safety.
-
-
-\subsection{\texorpdfstring{\protect\lstinline@if@ Statement}{if Statement}}
-
-The @if@ expression allows declarations, similar to @for@ declaration expression:
+\CFA identifies inconsistent, problematic, and missing control structures in C, as well as extends, modifies, and adds control structures to increase functionality and safety.
+
+
+\subsection{\texorpdfstring{\protect\lstinline@if@ statement}{if statement}}
+
+The @if@ expression allows declarations, similar to the @for@ declaration expression.
 \begin{cfa}
 if ( int x = f() ) ...						$\C{// x != 0}$
@@ -1105,13 +1127,13 @@
 \end{cfa}
 Unless a relational expression is specified, each variable is compared not equal to 0, which is the standard semantics for the @if@ expression, and the results are combined using the logical @&&@ operator.\footnote{\CC only provides a single declaration always compared not equal to 0.}
-The scope of the declaration(s) is local to the @if@ statement but exist within both the ``then'' and ``else'' clauses.
-
-
-\subsection{\texorpdfstring{\protect\lstinline@switch@ Statement}{switch Statement}}
+The scope of the declaration(s) is local to the @if@ statement but exists within both the ``then'' and ``else'' clauses.
+
+
+\subsection{\texorpdfstring{\protect\lstinline@switch@ statement}{switch statement}}
 
 There are a number of deficiencies with the C @switch@ statements: enumerating @case@ lists, placement of @case@ clauses, scope of the switch body, and fall through between case clauses.
 
-C has no shorthand for specifying a list of case values, whether the list is non-contiguous or contiguous\footnote{C provides this mechanism via fall through.}.
-\CFA provides a shorthand for a non-contiguous list:
+C has no shorthand for specifying a list of case values, whether the list is noncontiguous or contiguous\footnote{C provides this mechanism via fall through.}.
+\CFA provides a shorthand for a noncontiguous list:
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -1128,5 +1150,6 @@
 \lstMakeShortInline@%
 \end{cquote}
-for a contiguous list:\footnote{gcc has the same mechanism but awkward syntax, \lstinline@2 ...42@, as a space is required after a number, otherwise the first period is a decimal point.}
+for a contiguous list:\footnote{gcc has the same mechanism but awkward syntax, \lstinline@2 ...42@, as a space is required after a number;
+otherwise, the first period is a decimal point.}
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -1159,7 +1182,7 @@
 }
 \end{cfa}
-\CFA precludes this form of transfer \emph{into} a control structure because it causes undefined behaviour, especially with respect to missed initialization, and provides very limited functionality.
-
-C allows placement of declaration within the @switch@ body and unreachable code at the start, resulting in undefined behaviour:
+\CFA precludes this form of transfer \emph{into} a control structure because it causes an undefined behavior, especially with respect to missed initialization, and provides very limited functionality.
+
+C allows placement of declaration within the @switch@ body and unreachable code at the start, resulting in an undefined behavior.
 \begin{cfa}
 switch ( x ) {
@@ -1178,10 +1201,14 @@
 
 C @switch@ provides multiple entry points into the statement body, but once an entry point is selected, control continues across \emph{all} @case@ clauses until the end of the @switch@ body, called \newterm{fall through};
-@case@ clauses are made disjoint by the @break@ statement.
+@case@ clauses are made disjoint by the @break@
+\newpage
+\noindent
+statement.
 While fall through \emph{is} a useful form of control flow, it does not match well with programmer intuition, resulting in errors from missing @break@ statements.
-For backwards compatibility, \CFA provides a \emph{new} control structure, @choose@, which mimics @switch@, but reverses the meaning of fall through (see Figure~\ref{f:ChooseSwitchStatements}), similar to Go.
+For backward compatibility, \CFA provides a \emph{new} control structure, \ie @choose@, which mimics @switch@, but reverses the meaning of fall through (see Figure~\ref{f:ChooseSwitchStatements}), similar to Go.
 
 \begin{figure}
 \centering
+\fontsize{9bp}{11bp}\selectfont
 \lstDeleteShortInline@%
 \begin{tabular}{@{}l|@{\hspace{\parindentlnth}}l@{}}
@@ -1220,9 +1247,10 @@
 \end{tabular}
 \lstMakeShortInline@%
-\caption{\lstinline|choose| versus \lstinline|switch| Statements}
+\caption{\lstinline|choose| versus \lstinline|switch| statements}
 \label{f:ChooseSwitchStatements}
+\vspace*{-11pt}
 \end{figure}
 
-Finally, Figure~\ref{f:FallthroughStatement} shows @fallthrough@ may appear in contexts other than terminating a @case@ clause, and have an explicit transfer label allowing separate cases but common final-code for a set of cases.
+Finally, Figure~\ref{f:FallthroughStatement} shows @fallthrough@ may appear in contexts other than terminating a @case@ clause and have an explicit transfer label allowing separate cases but common final code for a set of cases.
 The target label must be below the @fallthrough@ and may not be nested in a control structure, \ie @fallthrough@ cannot form a loop, and the target label must be at the same or higher level as the containing @case@ clause and located at the same level as a @case@ clause;
 the target label may be case @default@, but only associated with the current @switch@/@choose@ statement.
@@ -1230,4 +1258,5 @@
 \begin{figure}
 \centering
+\fontsize{9bp}{11bp}\selectfont
 \lstDeleteShortInline@%
 \begin{tabular}{@{}l|@{\hspace{\parindentlnth}}l@{}}
@@ -1258,20 +1287,23 @@
 \end{tabular}
 \lstMakeShortInline@%
-\caption{\lstinline|fallthrough| Statement}
+\caption{\lstinline|fallthrough| statement}
 \label{f:FallthroughStatement}
+\vspace*{-11pt}
 \end{figure}
 
 
-\subsection{\texorpdfstring{Labelled \protect\lstinline@continue@ / \protect\lstinline@break@}{Labelled continue / break}}
+\vspace*{-8pt}
+\subsection{\texorpdfstring{Labeled \protect\lstinline@continue@ / \protect\lstinline@break@}{Labeled continue / break}}
 
 While C provides @continue@ and @break@ statements for altering control flow, both are restricted to one level of nesting for a particular control structure.
-Unfortunately, this restriction forces programmers to use @goto@ to achieve the equivalent control-flow for more than one level of nesting.
-To prevent having to switch to the @goto@, \CFA extends the @continue@ and @break@ with a target label to support static multi-level exit~\cite{Buhr85}, as in Java.
+Unfortunately, this restriction forces programmers to use @goto@ to achieve the equivalent control flow for more than one level of nesting.
+To prevent having to switch to the @goto@, \CFA extends @continue@ and @break@ with a target label to support static multilevel exit~\cite{Buhr85}, as in Java.
 For both @continue@ and @break@, the target label must be directly associated with a @for@, @while@ or @do@ statement;
 for @break@, the target label can also be associated with a @switch@, @if@ or compound (@{}@) statement.
-Figure~\ref{f:MultiLevelExit} shows @continue@ and @break@ indicating the specific control structure, and the corresponding C program using only @goto@ and labels.
-The innermost loop has 7 exit points, which cause continuation or termination of one or more of the 7 nested control-structures.
+Figure~\ref{f:MultiLevelExit} shows @continue@ and @break@ indicating the specific control structure and the corresponding C program using only @goto@ and labels.
+The innermost loop has seven exit points, which cause a continuation or termination of one or more of the seven nested control structures.
 
 \begin{figure}
+\fontsize{9bp}{11bp}\selectfont
 \lstDeleteShortInline@%
 \begin{tabular}{@{\hspace{\parindentlnth}}l|@{\hspace{\parindentlnth}}l@{\hspace{\parindentlnth}}l@{}}
@@ -1338,10 +1370,11 @@
 \end{tabular}
 \lstMakeShortInline@%
-\caption{Multi-level Exit}
+\caption{Multilevel exit}
 \label{f:MultiLevelExit}
+\vspace*{-5pt}
 \end{figure}
 
-With respect to safety, both labelled @continue@ and @break@ are a @goto@ restricted in the following ways:
-\begin{itemize}
+With respect to safety, both labeled @continue@ and @break@ are @goto@ restricted in the following ways.
+\begin{list}{$\bullet$}{\topsep=4pt\itemsep=0pt\parsep=0pt}
 \item
 They cannot create a loop, which means only the looping constructs cause looping.
@@ -1349,26 +1382,29 @@
 \item
 They cannot branch into a control structure.
-This restriction prevents missing declarations and/or initializations at the start of a control structure resulting in undefined behaviour.
-\end{itemize}
-The advantage of the labelled @continue@/@break@ is allowing static multi-level exits without having to use the @goto@ statement, and tying control flow to the target control structure rather than an arbitrary point in a program.
-Furthermore, the location of the label at the \emph{beginning} of the target control structure informs the reader (eye candy) that complex control-flow is occurring in the body of the control structure.
+This restriction prevents missing declarations and/or initializations at the start of a control structure resulting in an undefined behavior.
+\end{list}
+The advantage of the labeled @continue@/@break@ is allowing static multilevel exits without having to use the @goto@ statement and tying control flow to the target control structure rather than an arbitrary point in a program.
+Furthermore, the location of the label at the \emph{beginning} of the target control structure informs the reader (eye candy) that complex control flow is
+occurring in the body of the control structure.
 With @goto@, the label is at the end of the control structure, which fails to convey this important clue early enough to the reader.
-Finally, using an explicit target for the transfer instead of an implicit target allows new constructs to be added or removed without affecting existing constructs.
+Finally, using an explicit target for the transfer instead of an implicit target allows new constructs to be added or removed without affecting the existing constructs.
 Otherwise, the implicit targets of the current @continue@ and @break@, \ie the closest enclosing loop or @switch@, change as certain constructs are added or removed.
 
 
-\subsection{Exception Handling}
-
-The following framework for \CFA exception-handling is in place, excluding some runtime type-information and virtual functions.
+\vspace*{-5pt}
+\subsection{Exception handling}
+
+The following framework for \CFA exception handling is in place, excluding some runtime type information and virtual functions.
 \CFA provides two forms of exception handling: \newterm{fix-up} and \newterm{recovery} (see Figure~\ref{f:CFAExceptionHandling})~\cite{Buhr92b,Buhr00a}.
-Both mechanisms provide dynamic call to a handler using dynamic name-lookup, where fix-up has dynamic return and recovery has static return from the handler.
+Both mechanisms provide dynamic call to a handler using dynamic name lookup, where fix-up has dynamic return and recovery has static return from the handler.
 \CFA restricts exception types to those defined by aggregate type @exception@.
 The form of the raise dictates the set of handlers examined during propagation: \newterm{resumption propagation} (@resume@) only examines resumption handlers (@catchResume@); \newterm{terminating propagation} (@throw@) only examines termination handlers (@catch@).
-If @resume@ or @throw@ have no exception type, it is a reresume/rethrow, meaning the currently exception continues propagation.
+If @resume@ or @throw@ has no exception type, it is a reresume/rethrow, which means that the current exception continues propagation.
 If there is no current exception, the reresume/rethrow results in a runtime error.
 
 \begin{figure}
+\fontsize{9bp}{11bp}\selectfont
+\lstDeleteShortInline@%
 \begin{cquote}
-\lstDeleteShortInline@%
 \begin{tabular}{@{}l|@{\hspace{\parindentlnth}}l@{}}
 \multicolumn{1}{@{}c|@{\hspace{\parindentlnth}}}{\textbf{Resumption}}	& \multicolumn{1}{c@{}}{\textbf{Termination}}	\\
@@ -1401,11 +1437,12 @@
 \end{cfa}
 \end{tabular}
-\lstMakeShortInline@%
 \end{cquote}
-\caption{\CFA Exception Handling}
+\lstMakeShortInline@%
+\caption{\CFA exception handling}
 \label{f:CFAExceptionHandling}
+\vspace*{-5pt}
 \end{figure}
 
-The set of exception types in a list of catch clause may include both a resumption and termination handler:
+The set of exception types in a list of catch clauses may include both a resumption and a termination handler.
 \begin{cfa}
 try {
@@ -1421,5 +1458,5 @@
 The termination handler is available because the resumption propagation did not unwind the stack.
 
-An additional feature is conditional matching in a catch clause:
+An additional feature is conditional matching in a catch clause.
 \begin{cfa}
 try {
@@ -1430,8 +1467,8 @@
    catch ( IOError err ) { ... }			$\C{// handler error from other files}$
 \end{cfa}
-where the throw inserts the failing file-handle into the I/O exception.
-Conditional catch cannot be trivially mimicked by other mechanisms because once an exception is caught, handler clauses in that @try@ statement are no longer eligible..
-
-The resumption raise can specify an alternate stack on which to raise an exception, called a \newterm{nonlocal raise}:
+Here, the throw inserts the failing file handle into the I/O exception.
+Conditional catch cannot be trivially mimicked by other mechanisms because once an exception is caught, handler clauses in that @try@ statement are no longer eligible.
+
+The resumption raise can specify an alternate stack on which to raise an exception, called a \newterm{nonlocal raise}.
 \begin{cfa}
 resume( $\emph{exception-type}$, $\emph{alternate-stack}$ )
@@ -1441,6 +1478,6 @@
 Nonlocal raise is restricted to resumption to provide the exception handler the greatest flexibility because processing the exception does not unwind its stack, allowing it to continue after the handler returns.
 
-To facilitate nonlocal raise, \CFA provides dynamic enabling and disabling of nonlocal exception-propagation.
-The constructs for controlling propagation of nonlocal exceptions are the @enable@ and the @disable@ blocks:
+To facilitate nonlocal raise, \CFA provides dynamic enabling and disabling of nonlocal exception propagation.
+The constructs for controlling propagation of nonlocal exceptions are the @enable@ and @disable@ blocks.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -1448,5 +1485,5 @@
 \begin{cfa}
 enable $\emph{exception-type-list}$ {
-	// allow non-local raise
+	// allow nonlocal raise
 }
 \end{cfa}
@@ -1454,5 +1491,5 @@
 \begin{cfa}
 disable $\emph{exception-type-list}$ {
-	// disallow non-local raise
+	// disallow nonlocal raise
 }
 \end{cfa}
@@ -1462,11 +1499,12 @@
 The arguments for @enable@/@disable@ specify the exception types allowed to be propagated or postponed, respectively.
 Specifying no exception type is shorthand for specifying all exception types.
-Both @enable@ and @disable@ blocks can be nested, turning propagation on/off on entry, and on exit, the specified exception types are restored to their prior state.
-Coroutines and tasks start with non-local exceptions disabled, allowing handlers to be put in place, before non-local exceptions are explicitly enabled.
+Both @enable@ and @disable@ blocks can be nested;
+turning propagation on/off on entry and on exit, the specified exception types are restored to their prior state.
+Coroutines and tasks start with nonlocal exceptions disabled, allowing handlers to be put in place, before nonlocal exceptions are explicitly enabled.
 \begin{cfa}
 void main( mytask & t ) {					$\C{// thread starts here}$
-	// non-local exceptions disabled
-	try {									$\C{// establish handles for non-local exceptions}$
-		enable {							$\C{// allow non-local exception delivery}$
+	// nonlocal exceptions disabled
+	try {									$\C{// establish handles for nonlocal exceptions}$
+		enable {							$\C{// allow nonlocal exception delivery}$
 			// task body
 		}
@@ -1476,5 +1514,5 @@
 \end{cfa}
 
-Finally, \CFA provides a Java like  @finally@ clause after the catch clauses:
+Finally, \CFA provides a Java-like  @finally@ clause after the catch clauses.
 \begin{cfa}
 try {
@@ -1485,15 +1523,15 @@
 }
 \end{cfa}
-The finally clause is always executed, i.e., if the try block ends normally or if an exception is raised.
+The finally clause is always executed, \ie, if the try block ends normally or if an exception is raised.
 If an exception is raised and caught, the handler is run before the finally clause.
 Like a destructor (see Section~\ref{s:ConstructorsDestructors}), a finally clause can raise an exception but not if there is an exception being propagated.
-Mimicking the @finally@ clause with mechanisms like RAII is non-trivial when there are multiple types and local accesses.
-
-
-\subsection{\texorpdfstring{\protect\lstinline{with} Statement}{with Statement}}
+Mimicking the @finally@ clause with mechanisms like Resource Aquisition Is Initialization (RAII) is nontrivial when there are multiple types and local accesses.
+
+
+\subsection{\texorpdfstring{\protect\lstinline{with} statement}{with statement}}
 \label{s:WithStatement}
 
-Heterogeneous data is often aggregated into a structure/union.
-To reduce syntactic noise, \CFA provides a @with@ statement (see Pascal~\cite[\S~4.F]{Pascal}) to elide aggregate member-qualification by opening a scope containing the member identifiers.
+Heterogeneous data are often aggregated into a structure/union.
+To reduce syntactic noise, \CFA provides a @with@ statement (see section~4.F in the Pascal User Manual and Report~\cite{Pascal}) to elide aggregate member qualification by opening a scope containing the member identifiers.
 \begin{cquote}
 \vspace*{-\baselineskip}%???
@@ -1523,5 +1561,5 @@
 Object-oriented programming languages only provide implicit qualification for the receiver.
 
-In detail, the @with@ statement has the form:
+In detail, the @with@ statement has the form
 \begin{cfa}
 $\emph{with-statement}$:
@@ -1529,11 +1567,11 @@
 \end{cfa}
 and may appear as the body of a function or nested within a function body.
-Each expression in the expression-list provides a type and object.
+Each expression in the expression list provides a type and object.
 The type must be an aggregate type.
 (Enumerations are already opened.)
-The object is the implicit qualifier for the open structure-members.
+The object is the implicit qualifier for the open structure members.
 
 All expressions in the expression list are open in parallel within the compound statement, which is different from Pascal, which nests the openings from left to right.
-The difference between parallel and nesting occurs for members with the same name and type:
+The difference between parallel and nesting occurs for members with the same name and type.
 \begin{cfa}
 struct S { int `i`; int j; double m; } s, w;	$\C{// member i has same type in structure types S and T}$
@@ -1549,10 +1587,10 @@
 }
 \end{cfa}
-For parallel semantics, both @s.i@ and @t.i@ are visible, so @i@ is ambiguous without qualification;
-for nested semantics, @t.i@ hides @s.i@, so @i@ implies @t.i@.
+For parallel semantics, both @s.i@ and @t.i@ are visible and, therefore, @i@ is ambiguous without qualification;
+for nested semantics, @t.i@ hides @s.i@ and, therefore, @i@ implies @t.i@.
 \CFA's ability to overload variables means members with the same name but different types are automatically disambiguated, eliminating most qualification when opening multiple aggregates.
 Qualification or a cast is used to disambiguate.
 
-There is an interesting problem between parameters and the function-body @with@, \eg:
+There is an interesting problem between parameters and the function body @with@.
 \begin{cfa}
 void ?{}( S & s, int i ) with ( s ) {		$\C{// constructor}$
@@ -1560,6 +1598,6 @@
 }
 \end{cfa}
-Here, the assignment @s.i = i@ means @s.i = s.i@, which is meaningless, and there is no mechanism to qualify the parameter @i@, making the assignment impossible using the function-body @with@.
-To solve this problem, parameters are treated like an initialized aggregate:
+Here, the assignment @s.i = i@ means @s.i = s.i@, which is meaningless, and there is no mechanism to qualify the parameter @i@, making the assignment impossible using the function body @with@.
+To solve this problem, parameters are treated like an initialized aggregate
 \begin{cfa}
 struct Params {
@@ -1568,5 +1606,6 @@
 } params;
 \end{cfa}
-and implicitly opened \emph{after} a function-body open, to give them higher priority:
+\newpage
+and implicitly opened \emph{after} a function body open, to give them higher priority
 \begin{cfa}
 void ?{}( S & s, int `i` ) with ( s ) `{` `with( $\emph{\color{red}params}$ )` {
@@ -1574,10 +1613,10 @@
 } `}`
 \end{cfa}
-Finally, a cast may be used to disambiguate among overload variables in a @with@ expression:
+Finally, a cast may be used to disambiguate among overload variables in a @with@ expression
 \begin{cfa}
 with ( w ) { ... }							$\C{// ambiguous, same name and no context}$
 with ( (S)w ) { ... }						$\C{// unambiguous, cast}$
 \end{cfa}
-and @with@ expressions may be complex expressions with type reference (see Section~\ref{s:References}) to aggregate:
+and @with@ expressions may be complex expressions with type reference (see Section~\ref{s:References}) to aggregate
 \begin{cfa}
 struct S { int i, j; } sv;
@@ -1603,13 +1642,13 @@
 \CFA attempts to correct and add to C declarations, while ensuring \CFA subjectively ``feels like'' C.
 An important part of this subjective feel is maintaining C's syntax and procedural paradigm, as opposed to functional and object-oriented approaches in other systems languages such as \CC and Rust.
-Maintaining the C approach means that C coding-patterns remain not only useable but idiomatic in \CFA, reducing the mental burden of retraining C programmers and switching between C and \CFA development.
+Maintaining the C approach means that C coding patterns remain not only useable but idiomatic in \CFA, reducing the mental burden of retraining C programmers and switching between C and \CFA development.
 Nevertheless, some features from other approaches are undeniably convenient;
 \CFA attempts to adapt these features to the C paradigm.
 
 
-\subsection{Alternative Declaration Syntax}
+\subsection{Alternative declaration syntax}
 
 C declaration syntax is notoriously confusing and error prone.
-For example, many C programmers are confused by a declaration as simple as:
+For example, many C programmers are confused by a declaration as simple as the following.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -1623,8 +1662,8 @@
 \lstMakeShortInline@%
 \end{cquote}
-Is this an array of 5 pointers to integers or a pointer to an array of 5 integers?
+Is this an array of five pointers to integers or a pointer to an array of five integers?
 If there is any doubt, it implies productivity and safety issues even for basic programs.
 Another example of confusion results from the fact that a function name and its parameters are embedded within the return type, mimicking the way the return value is used at the function's call site.
-For example, a function returning a pointer to an array of integers is defined and used in the following way:
+For example, a function returning a pointer to an array of integers is defined and used in the following way.
 \begin{cfa}
 int `(*`f`())[`5`]` {...};					$\C{// definition}$
@@ -1634,6 +1673,7 @@
 While attempting to make the two contexts consistent is a laudable goal, it has not worked out in practice.
 
-\CFA provides its own type, variable and function declarations, using a different syntax~\cite[pp.~856--859]{Buhr94a}.
-The new declarations place qualifiers to the left of the base type, while C declarations place qualifiers to the right.
+\newpage
+\CFA provides its own type, variable, and function declarations, using a different syntax~\cite[pp.~856--859]{Buhr94a}.
+The new declarations place qualifiers to the left of the base type, whereas C declarations place qualifiers to the right.
 The qualifiers have the same meaning but are ordered left to right to specify a variable's type.
 \begin{cquote}
@@ -1661,8 +1701,8 @@
 \lstMakeShortInline@%
 \end{cquote}
-The only exception is bit-field specification, which always appear to the right of the base type.
+The only exception is bit-field specification, which always appears to the right of the base type.
 % Specifically, the character @*@ is used to indicate a pointer, square brackets @[@\,@]@ are used to represent an array or function return value, and parentheses @()@ are used to indicate a function parameter.
 However, unlike C, \CFA type declaration tokens are distributed across all variables in the declaration list.
-For instance, variables @x@ and @y@ of type pointer to integer are defined in \CFA as follows:
+For instance, variables @x@ and @y@ of type pointer to integer are defined in \CFA as
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -1727,20 +1767,20 @@
 \end{comment}
 
-All specifiers (@extern@, @static@, \etc) and qualifiers (@const@, @volatile@, \etc) are used in the normal way with the new declarations and also appear left to right, \eg:
+All specifiers (@extern@, @static@, \etc) and qualifiers (@const@, @volatile@, \etc) are used in the normal way with the new declarations and also appear left to right.
 \begin{cquote}
 \lstDeleteShortInline@%
 \begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{}}
 \multicolumn{1}{@{}c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{C}}	\\
-\begin{cfa}
+\begin{cfa}[basicstyle=\linespread{0.9}\fontsize{9bp}{12bp}\selectfont\sf]
 extern const * const int x;
 static const * [5] const int y;
 \end{cfa}
 &
-\begin{cfa}
+\begin{cfa}[basicstyle=\linespread{0.9}\fontsize{9bp}{12bp}\selectfont\sf]
 int extern const * const x;
 static const int (* const y)[5]
 \end{cfa}
 &
-\begin{cfa}
+\begin{cfa}[basicstyle=\linespread{0.9}\fontsize{9bp}{12bp}\selectfont\sf]
 // external const pointer to const int
 // internal const pointer to array of 5 const int
@@ -1750,5 +1790,5 @@
 \end{cquote}
 Specifiers must appear at the start of a \CFA function declaration\footnote{\label{StorageClassSpecifier}
-The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature.~\cite[\S~6.11.5(1)]{C11}}.
+The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature (see section~6.11.5(1) in ISO/IEC 9899~\cite{C11}).}.
 
 The new declaration syntax can be used in other contexts where types are required, \eg casts and the pseudo-function @sizeof@:
@@ -1771,5 +1811,5 @@
 
 The syntax of the new function-prototype declaration follows directly from the new function-definition syntax;
-as well, parameter names are optional, \eg:
+also, parameter names are optional.
 \begin{cfa}
 [ int x ] f ( /* void */ );		$\C[2.5in]{// returning int with no parameters}$
@@ -1779,6 +1819,6 @@
 [ * int, int ] j ( int );		$\C{// returning pointer to int and int with int parameter}$
 \end{cfa}
-This syntax allows a prototype declaration to be created by cutting and pasting source text from the function-definition header (or vice versa).
-Like C, it is possible to declare multiple function-prototypes in a single declaration, where the return type is distributed across \emph{all} function names in the declaration list, \eg:
+This syntax allows a prototype declaration to be created by cutting and pasting the source text from the function-definition header (or vice versa).
+Like C, it is possible to declare multiple function prototypes in a single declaration, where the return type is distributed across \emph{all} function names in the declaration list.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -1795,7 +1835,7 @@
 \lstMakeShortInline@%
 \end{cquote}
-where \CFA allows the last function in the list to define its body.
-
-The syntax for pointers to \CFA functions specifies the pointer name on the right, \eg:
+Here, \CFA allows the last function in the list to define its body.
+
+The syntax for pointers to \CFA functions specifies the pointer name on the right.
 \begin{cfa}
 * [ int x ] () fp;				$\C{// pointer to function returning int with no parameters}$
@@ -1804,9 +1844,11 @@
 * [ * int, int ] ( int ) jp;	$\C{// pointer to function returning pointer to int and int with int parameter}\CRT$
 \end{cfa}
-Note, the name of the function pointer is specified last, as for other variable declarations.
-
-Finally, new \CFA declarations may appear together with C declarations in the same program block, but cannot be mixed within a specific declaration.
-Therefore, a programmer has the option of either continuing to use traditional C declarations or take advantage of the new style.
-Clearly, both styles need to be supported for some time due to existing C-style header-files, particularly for UNIX-like systems.
+\newpage
+\noindent
+Note that the name of the function pointer is specified last, as for other variable declarations.
+
+Finally, new \CFA declarations may appear together with C declarations in the same program block but cannot be mixed within a specific declaration.
+Therefore, a programmer has the option of either continuing to use traditional C declarations or taking advantage of the new style.
+Clearly, both styles need to be supported for some time due to existing C-style header files, particularly for UNIX-like systems.
 
 
@@ -1816,15 +1858,14 @@
 All variables in C have an \newterm{address}, a \newterm{value}, and a \newterm{type};
 at the position in the program's memory denoted by the address, there exists a sequence of bits (the value), with the length and semantic meaning of this bit sequence defined by the type.
-The C type-system does not always track the relationship between a value and its address;
-a value that does not have a corresponding address is called a \newterm{rvalue} (for ``right-hand value''), while a value that does have an address is called a \newterm{lvalue} (for ``left-hand value'').
-For example, in @int x; x = 42;@ the variable expression @x@ on the left-hand-side of the assignment is a lvalue, while the constant expression @42@ on the right-hand-side of the assignment is a rvalue.
-Despite the nomenclature of ``left-hand'' and ``right-hand'', an expression's classification as lvalue or rvalue is entirely dependent on whether it has an address or not; in imperative programming, the address of a value is used for both reading and writing (mutating) a value, and as such, lvalues can be converted to rvalues and read from, but rvalues cannot be mutated because they lack a location to store the updated value.
+The C type system does not always track the relationship between a value and its address;
+a value that does not have a corresponding address is called an \newterm{rvalue} (for ``right-hand value''), whereas a value that does have an address is called an \newterm{lvalue} (for ``left-hand value'').
+For example, in @int x; x = 42;@ the variable expression @x@ on the left-hand side of the assignment is an lvalue, whereas the constant expression @42@ on the right-hand side of the assignment is an rvalue.
+Despite the nomenclature of ``left-hand'' and ``right-hand'', an expression's classification as an lvalue or an rvalue is entirely dependent on whether it has an address or not; in imperative programming, the address of a value is used for both reading and writing (mutating) a value, and as such, lvalues can be converted into rvalues and read from, but rvalues cannot be mutated because they lack a location to store the updated value.
 
 Within a lexical scope, lvalue expressions have an \newterm{address interpretation} for writing a value or a \newterm{value interpretation} to read a value.
-For example, in @x = y@, @x@ has an address interpretation, while @y@ has a value interpretation.
+For example, in @x = y@, @x@ has an address interpretation, whereas @y@ has a value interpretation.
 While this duality of interpretation is useful, C lacks a direct mechanism to pass lvalues between contexts, instead relying on \newterm{pointer types} to serve a similar purpose.
 In C, for any type @T@ there is a pointer type @T *@, the value of which is the address of a value of type @T@.
-A pointer rvalue can be explicitly \newterm{dereferenced} to the pointed-to lvalue with the dereference operator @*?@, while the rvalue representing the address of a lvalue can be obtained with the address-of operator @&?@.
-
+A pointer rvalue can be explicitly \newterm{dereferenced} to the pointed-to lvalue with the dereference operator @*?@, whereas the rvalue representing the address of an lvalue can be obtained with the address-of operator @&?@.
 \begin{cfa}
 int x = 1, y = 2, * p1, * p2, ** p3;
@@ -1834,11 +1875,9 @@
 *p2 = ((*p1 + *p2) * (**p3 - *p1)) / (**p3 - 15);
 \end{cfa}
-
 Unfortunately, the dereference and address-of operators introduce a great deal of syntactic noise when dealing with pointed-to values rather than pointers, as well as the potential for subtle bugs because of pointer arithmetic.
 For both brevity and clarity, it is desirable for the compiler to figure out how to elide the dereference operators in a complex expression such as the assignment to @*p2@ above.
-However, since C defines a number of forms of \newterm{pointer arithmetic}, two similar expressions involving pointers to arithmetic types (\eg @*p1 + x@ and @p1 + x@) may each have well-defined but distinct semantics, introducing the possibility that a programmer may write one when they mean the other, and precluding any simple algorithm for elision of dereference operators.
+However, since C defines a number of forms of \newterm{pointer arithmetic}, two similar expressions involving pointers to arithmetic types (\eg @*p1 + x@ and @p1 + x@) may each have well-defined but distinct semantics, introducing the possibility that a programmer may write one when they mean the other and precluding any simple algorithm for elision of dereference operators.
 To solve these problems, \CFA introduces reference types @T &@;
-a @T &@ has exactly the same value as a @T *@, but where the @T *@ takes the address interpretation by default, a @T &@ takes the value interpretation by default, as below:
-
+a @T &@ has exactly the same value as a @T *@, but where the @T *@ takes the address interpretation by default, a @T &@ takes the value interpretation by default, as below.
 \begin{cfa}
 int x = 1, y = 2, & r1, & r2, && r3;
@@ -1848,35 +1887,34 @@
 r2 = ((r1 + r2) * (r3 - r1)) / (r3 - 15);	$\C{// implicit dereferencing}$
 \end{cfa}
-
 Except for auto-dereferencing by the compiler, this reference example is exactly the same as the previous pointer example.
-Hence, a reference behaves like a variable name -- an lvalue expression which is interpreted as a value -- but also has the type system track the address of that value.
-One way to conceptualize a reference is via a rewrite rule, where the compiler inserts a dereference operator before the reference variable for each reference qualifier in the reference variable declaration, so the previous example implicitly acts like:
-
+Hence, a reference behaves like a variable name---an lvalue expression that is interpreted as a value---but also has the type system track the address of that value.
+One way to conceptualize a reference is via a rewrite rule, where the compiler inserts a dereference operator before the reference variable for each reference qualifier in the reference variable declaration;
+thus, the previous example implicitly acts like the following.
 \begin{cfa}
 `*`r2 = ((`*`r1 + `*`r2) * (`**`r3 - `*`r1)) / (`**`r3 - 15);
 \end{cfa}
-
 References in \CFA are similar to those in \CC, with important improvements, which can be seen in the example above.
 Firstly, \CFA does not forbid references to references.
-This provides a much more orthogonal design for library implementors, obviating the need for workarounds such as @std::reference_wrapper@.
+This provides a much more orthogonal design for library \mbox{implementors}, obviating the need for workarounds such as @std::reference_wrapper@.
 Secondly, \CFA references are rebindable, whereas \CC references have a fixed address.
-Rebinding allows \CFA references to be default-initialized (\eg to a null pointer\footnote{
-While effort has been made into non-null reference checking in \CC and Java, the exercise seems moot for any non-managed languages (C/\CC), given that it only handles one of many different error situations, \eg using a pointer after its storage is deleted.}) and point to different addresses throughout their lifetime, like pointers.
+Rebinding allows \CFA references to be default initialized (\eg to a null pointer\footnote{
+While effort has been made into non-null reference checking in \CC and Java, the exercise seems moot for any nonmanaged languages (C/\CC), given that it only handles one of many different error situations, \eg using a pointer after its storage is deleted.}) and point to different addresses throughout their lifetime, like pointers.
 Rebinding is accomplished by extending the existing syntax and semantics of the address-of operator in C.
 
-In C, the address of a lvalue is always a rvalue, as in general that address is not stored anywhere in memory, and does not itself have an address.
-In \CFA, the address of a @T &@ is a lvalue @T *@, as the address of the underlying @T@ is stored in the reference, and can thus be mutated there.
+In C, the address of an lvalue is always an rvalue, as, in general, that address is not stored anywhere in memory and does not itself have an address.
+In \CFA, the address of a @T &@ is an lvalue @T *@, as the address of the underlying @T@ is stored in the reference and can thus be mutated there.
 The result of this rule is that any reference can be rebound using the existing pointer assignment semantics by assigning a compatible pointer into the address of the reference, \eg @&r1 = &x;@ above.
 This rebinding occurs to an arbitrary depth of reference nesting;
 loosely speaking, nested address-of operators produce a nested lvalue pointer up to the depth of the reference. 
 These explicit address-of operators can be thought of as ``cancelling out'' the implicit dereference operators, \eg @(&`*`)r1 = &x@ or @(&(&`*`)`*`)r3 = &(&`*`)r1@ or even @(&`*`)r2 = (&`*`)`*`r3@ for @&r2 = &r3@.
-More precisely:
+The precise rules are
 \begin{itemize}
 \item
-if @R@ is an rvalue of type @T &@$_1\cdots$ @&@$_r$, where $r \ge 1$ references (@&@ symbols), than @&R@ has type @T `*`&@$_{\color{red}2}\cdots$ @&@$_{\color{red}r}$, \ie @T@ pointer with $r-1$ references (@&@ symbols).
+If @R@ is an rvalue of type @T &@$_1\cdots$ @&@$_r$, where $r \ge 1$ references (@&@ symbols), than @&R@ has type @T `*`&@$_{\color{red}2}\cdots$ @&@$_{\color{red}r}$, \ie @T@ pointer with $r-1$ references (@&@ symbols).
 \item
-if @L@ is an lvalue of type @T &@$_1\cdots$ @&@$_l$, where $l \ge 0$ references (@&@ symbols), than @&L@ has type @T `*`&@$_{\color{red}1}\cdots$ @&@$_{\color{red}l}$, \ie @T@ pointer with $l$ references (@&@ symbols).
+If @L@ is an lvalue of type @T &@$_1\cdots$ @&@$_l$, where $l \ge 0$ references (@&@ symbols), than @&L@ has type @T `*`&@$_{\color{red}1}\cdots$ @&@$_{\color{red}l}$, \ie @T@ pointer with $l$ references (@&@ symbols).
 \end{itemize}
-Since pointers and references share the same internal representation, code using either is equally performant; in fact the \CFA compiler converts references to pointers internally, and the choice between them is made solely on convenience, \eg many pointer or value accesses.
+Since pointers and references share the same internal representation, code using either is equally performant;
+in fact, the \CFA compiler converts references into pointers internally, and the choice between them is made solely on convenience, \eg many pointer or value accesses.
 
 By analogy to pointers, \CFA references also allow cv-qualifiers such as @const@:
@@ -1893,10 +1931,10 @@
 There are three initialization contexts in \CFA: declaration initialization, argument/parameter binding, and return/temporary binding.
 In each of these contexts, the address-of operator on the target lvalue is elided.
-The syntactic motivation is clearest when considering overloaded operator-assignment, \eg @int ?+=?(int &, int)@; given @int x, y@, the expected call syntax is @x += y@, not @&x += y@.
-
-More generally, this initialization of references from lvalues rather than pointers is an instance of a ``lvalue-to-reference'' conversion rather than an elision of the address-of operator;
+The syntactic motivation is clearest when considering overloaded operator assignment, \eg @int ?+=?(int &, int)@; given @int x, y@, the expected call syntax is @x += y@, not @&x += y@.
+
+More generally, this initialization of references from lvalues rather than pointers is an instance of an ``lvalue-to-reference'' conversion rather than an elision of the address-of operator;
 this conversion is used in any context in \CFA where an implicit conversion is allowed.
-Similarly, use of a the value pointed to by a reference in an rvalue context can be thought of as a ``reference-to-rvalue'' conversion, and \CFA also includes a qualifier-adding ``reference-to-reference'' conversion, analogous to the @T *@ to @const T *@ conversion in standard C.
-The final reference conversion included in \CFA is ``rvalue-to-reference'' conversion, implemented by means of an implicit temporary.
+Similarly, use of the value pointed to by a reference in an rvalue context can be thought of as a ``reference-to-rvalue'' conversion, and \CFA also includes a qualifier-adding ``reference-to-reference'' conversion, analogous to the @T *@ to @const T *@ conversion in standard C.
+The final reference conversion included in \CFA is an ``rvalue-to-reference'' conversion, implemented by means of an implicit temporary.
 When an rvalue is used to initialize a reference, it is instead used to initialize a hidden temporary value with the same lexical scope as the reference, and the reference is initialized to the address of this temporary.
 \begin{cfa}
@@ -1906,16 +1944,20 @@
 f( 3, x + y, (S){ 1.0, 7.0 }, (int [3]){ 1, 2, 3 } ); $\C{// pass rvalue to lvalue \(\Rightarrow\) implicit temporary}$
 \end{cfa}
-This allows complex values to be succinctly and efficiently passed to functions, without the syntactic overhead of explicit definition of a temporary variable or the runtime cost of pass-by-value.
-\CC allows a similar binding, but only for @const@ references; the more general semantics of \CFA are an attempt to avoid the \newterm{const poisoning} problem~\cite{Taylor10}, in which addition of a @const@ qualifier to one reference requires a cascading chain of added qualifiers.
-
-
-\subsection{Type Nesting}
-
-Nested types provide a mechanism to organize associated types and refactor a subset of members into a named aggregate (\eg sub-aggregates @name@, @address@, @department@, within aggregate @employe@).
-Java nested types are dynamic (apply to objects), \CC are static (apply to the \lstinline[language=C++]@class@), and C hoists (refactors) nested types into the enclosing scope, meaning there is no need for type qualification.
-Since \CFA in not object-oriented, adopting dynamic scoping does not make sense;
-instead \CFA adopts \CC static nesting, using the member-selection operator ``@.@'' for type qualification, as does Java, rather than the \CC type-selection operator ``@::@'' (see Figure~\ref{f:TypeNestingQualification}).
+This allows complex values to be succinctly and efficiently passed to functions, without the syntactic overhead of the explicit definition of a temporary variable or the runtime cost of pass-by-value.
+\CC allows a similar binding, but only for @const@ references; the more general semantics of \CFA are an attempt to avoid the \newterm{const poisoning} problem~\cite{Taylor10}, in which the addition of a @const@ qualifier to one reference requires a cascading chain of added qualifiers.
+
+
+\subsection{Type nesting}
+
+Nested types provide a mechanism to organize associated types and refactor a subset of members into a named aggregate (\eg subaggregates @name@, @address@, @department@, within aggregate @employe@).
+Java nested types are dynamic (apply to objects), \CC are static (apply to the \lstinline[language=C++]@class@), and C hoists (refactors) nested types into the enclosing scope, which means there is no need for type qualification.
+Since \CFA in not object oriented, adopting dynamic scoping does not make sense;
+instead, \CFA adopts \CC static nesting, using the member-selection operator ``@.@'' for type qualification, as does Java, rather than the \CC type-selection operator ``@::@'' (see Figure~\ref{f:TypeNestingQualification}).
+In the C left example, types @C@, @U@ and @T@ are implicitly hoisted outside of type @S@ into the containing block scope.
+In the \CFA right example, the types are not hoisted and accessible.
+
 \begin{figure}
 \centering
+\fontsize{9bp}{11bp}\selectfont\sf
 \lstDeleteShortInline@%
 \begin{tabular}{@{}l@{\hspace{3em}}l|l@{}}
@@ -1979,20 +2021,20 @@
 \end{tabular}
 \lstMakeShortInline@%
-\caption{Type Nesting / Qualification}
+\caption{Type nesting / qualification}
 \label{f:TypeNestingQualification}
+\vspace*{-8pt}
 \end{figure}
-In the C left example, types @C@, @U@ and @T@ are implicitly hoisted outside of type @S@ into the containing block scope.
-In the \CFA right example, the types are not hoisted and accessible.
-
-
-\subsection{Constructors and Destructors}
+
+
+\vspace*{-8pt}
+\subsection{Constructors and destructors}
 \label{s:ConstructorsDestructors}
 
-One of the strengths (and weaknesses) of C is memory-management control, allowing resource release to be precisely specified versus unknown release with garbage-collected memory-management.
+One of the strengths (and weaknesses) of C is memory-management control, allowing resource release to be precisely specified versus unknown release with garbage-collected memory management.
 However, this manual approach is verbose, and it is useful to manage resources other than memory (\eg file handles) using the same mechanism as memory.
-\CC addresses these issues using Resource Aquisition Is Initialization (RAII), implemented by means of \newterm{constructor} and \newterm{destructor} functions;
+\CC addresses these issues using RAII, implemented by means of \newterm{constructor} and \newterm{destructor} functions;
 \CFA adopts constructors and destructors (and @finally@) to facilitate RAII.
-While constructors and destructors are a common feature of object-oriented programming-languages, they are an independent capability allowing \CFA to adopt them while retaining a procedural paradigm.
-Specifically, \CFA constructors and destructors are denoted by name and first parameter-type versus name and nesting in an aggregate type.
+While constructors and destructors are a common feature of object-oriented programming languages, they are an independent capability allowing \CFA to adopt them while retaining a procedural paradigm.
+Specifically, \CFA constructors and destructors are denoted by name and first parameter type versus name and nesting in an aggregate type.
 Constructor calls seamlessly integrate with existing C initialization syntax, providing a simple and familiar syntax to C programmers and allowing constructor calls to be inserted into legacy C code with minimal code changes.
 
@@ -2003,7 +2045,7 @@
 The constructor and destructor have return type @void@, and the first parameter is a reference to the object type to be constructed or destructed.
 While the first parameter is informally called the @this@ parameter, as in object-oriented languages, any variable name may be used.
-Both constructors and destructors allow additional parameters after the @this@ parameter for specifying values for initialization/de-initialization\footnote{
-Destruction parameters are useful for specifying storage-management actions, such as de-initialize but not deallocate.}.
-\begin{cfa}
+Both constructors and destructors allow additional parameters after the @this@ parameter for specifying values for initialization/deinitialization\footnote{
+Destruction parameters are useful for specifying storage-management actions, such as deinitialize but not deallocate.}.
+\begin{cfa}[basicstyle=\linespread{0.9}\fontsize{9bp}{11bp}\selectfont\sf]
 struct VLA { int size, * data; };			$\C{// variable length array of integers}$
 void ?{}( VLA & vla ) with ( vla ) { size = 10;  data = alloc( size ); }  $\C{// default constructor}$
@@ -2014,9 +2056,9 @@
 \end{cfa}
 @VLA@ is a \newterm{managed type}\footnote{
-A managed type affects the runtime environment versus a self-contained type.}: a type requiring a non-trivial constructor or destructor, or with a member of a managed type. 
+A managed type affects the runtime environment versus a self-contained type.}: a type requiring a nontrivial constructor or destructor, or with a member of a managed type. 
 A managed type is implicitly constructed at allocation and destructed at deallocation to ensure proper interaction with runtime resources, in this case, the @data@ array in the heap. 
-For details of the code-generation placement of implicit constructor and destructor calls among complex executable statements see~\cite[\S~2.2]{Schluntz17}.
-
-\CFA also provides syntax for \newterm{initialization} and \newterm{copy}:
+For details of the code-generation placement of implicit constructor and destructor calls among complex executable statements, see section~2.2 in the work of Schlintz~\cite{Schluntz17}.
+
+\CFA also provides syntax for \newterm{initialization} and \newterm{copy}.
 \begin{cfa}
 void ?{}( VLA & vla, int size, char fill = '\0' ) {  $\C{// initialization}$
@@ -2027,10 +2069,10 @@
 }
 \end{cfa}
-(Note, the example is purposely simplified using shallow-copy semantics.)
-An initialization constructor-call has the same syntax as a C initializer, except the initialization values are passed as arguments to a matching constructor (number and type of paremeters).
+(Note that the example is purposely simplified using shallow-copy semantics.)
+An initialization constructor call has the same syntax as a C initializer, except that the initialization values are passed as arguments to a matching constructor (number and type of parameters).
 \begin{cfa}
 VLA va = `{` 20, 0 `}`,  * arr = alloc()`{` 5, 0 `}`; 
 \end{cfa}
-Note, the use of a \newterm{constructor expression} to initialize the storage from the dynamic storage-allocation.
+Note the use of a \newterm{constructor expression} to initialize the storage from the dynamic storage allocation.
 Like \CC, the copy constructor has two parameters, the second of which is a value parameter with the same type as the first parameter;
 appropriate care is taken to not recursively call the copy constructor when initializing the second parameter.
@@ -2038,5 +2080,5 @@
 \CFA constructors may be explicitly called, like Java, and destructors may be explicitly called, like \CC.
 Explicit calls to constructors double as a \CC-style \emph{placement syntax}, useful for construction of members in user-defined constructors and reuse of existing storage allocations.
-Like the other operators in \CFA, there is a concise syntax for constructor/destructor function calls:
+Like the other operators in \CFA, there is a concise syntax for constructor/destructor function calls.
 \begin{cfa}
 {
@@ -2054,21 +2096,22 @@
 To provide a uniform type interface for @otype@ polymorphism, the \CFA compiler automatically generates a default constructor, copy constructor, assignment operator, and destructor for all types. 
 These default functions can be overridden by user-generated versions. 
-For compatibility with the standard behaviour of C, the default constructor and destructor for all basic, pointer, and reference types do nothing, while the copy constructor and assignment operator are bitwise copies;
-if default zero-initialization is desired, the default constructors can be overridden. 
+For compatibility with the standard behavior of C, the default constructor and destructor for all basic, pointer, and reference types do nothing, whereas the copy constructor and assignment operator are bitwise copies;
+if default zero initialization is desired, the default constructors can be overridden. 
 For user-generated types, the four functions are also automatically generated. 
 @enum@ types are handled the same as their underlying integral type, and unions are also bitwise copied and no-op initialized and destructed. 
 For compatibility with C, a copy constructor from the first union member type is also defined.
-For @struct@ types, each of the four functions are implicitly defined to call their corresponding functions on each member of the struct. 
-To better simulate the behaviour of C initializers, a set of \newterm{member constructors} is also generated for structures. 
-A constructor is generated for each non-empty prefix of a structure's member-list to copy-construct the members passed as parameters and default-construct the remaining members.
+For @struct@ types, each of the four functions is implicitly defined to call their corresponding functions on each member of the struct. 
+To better simulate the behavior of C initializers, a set of \newterm{member constructors} is also generated for structures. 
+A constructor is generated for each nonempty prefix of a structure's member list to copy-construct the members passed as parameters and default-construct the remaining members.
 To allow users to limit the set of constructors available for a type, when a user declares any constructor or destructor, the corresponding generated function and all member constructors for that type are hidden from expression resolution;
-similarly, the generated default constructor is hidden upon declaration of any constructor. 
+similarly, the generated default constructor is hidden upon the declaration of any constructor. 
 These semantics closely mirror the rule for implicit declaration of constructors in \CC\cite[p.~186]{ANSI98:C++}.
 
-In some circumstance programmers may not wish to have implicit constructor and destructor generation and calls.
-In these cases, \CFA provides the initialization syntax \lstinline|S x `@=` {}|, and the object becomes unmanaged, so implicit constructor and destructor calls are not generated. 
+In some circumstance, programmers may not wish to have implicit constructor and destructor generation and calls.
+In these cases, \CFA provides the initialization syntax \lstinline|S x `@=` {}|, and the object becomes unmanaged;
+hence, implicit \mbox{constructor} and destructor calls are not generated. 
 Any C initializer can be the right-hand side of an \lstinline|@=| initializer, \eg \lstinline|VLA a @= { 0, 0x0 }|, with the usual C initialization semantics.
 The same syntax can be used in a compound literal, \eg \lstinline|a = (VLA)`@`{ 0, 0x0 }|, to create a C-style literal.
-The point of \lstinline|@=| is to provide a migration path from legacy C code to \CFA, by providing a mechanism to incrementally convert to implicit initialization.
+The point of \lstinline|@=| is to provide a migration path from legacy C code to \CFA, by providing a mechanism to incrementally convert into implicit initialization.
 
 
@@ -2078,9 +2121,9 @@
 \section{Literals}
 
-C already includes limited polymorphism for literals -- @0@ can be either an integer or a pointer literal, depending on context, while the syntactic forms of literals of the various integer and float types are very similar, differing from each other only in suffix.
-In keeping with the general \CFA approach of adding features while respecting the ``C-style'' of doing things, C's polymorphic constants and typed literal syntax are extended to interoperate with user-defined types, while maintaining a backwards-compatible semantics.
+C already includes limited polymorphism for literals---@0@ can be either an integer or a pointer literal, depending on context, whereas the syntactic forms of literals of the various integer and float types are very similar, differing from each other only in suffix.
+In keeping with the general \CFA approach of adding features while respecting the ``C style'' of doing things, C's polymorphic constants and typed literal syntax are extended to interoperate with user-defined types, while maintaining a backward-compatible semantics.
 
 A simple example is allowing the underscore, as in Ada, to separate prefixes, digits, and suffixes in all \CFA constants, \eg @0x`_`1.ffff`_`ffff`_`p`_`128`_`l@, where the underscore is also the standard separator in C identifiers.
-\CC uses a single quote as a separator but it is restricted among digits, precluding its use in the literal prefix or suffix, \eg @0x1.ffff@@`'@@ffffp128l@, and causes problems with most IDEs, which must be extended to deal with this alternate use of the single quote.
+\CC uses a single quote as a separator, but it is restricted among digits, precluding its use in the literal prefix or suffix, \eg @0x1.ffff@@`'@@ffffp128l@, and causes problems with most integrated development environments (IDEs), which must be extended to deal with this alternate use of the single quote.
 
 
@@ -2125,6 +2168,6 @@
 
 In C, @0@ has the special property that it is the only ``false'' value;
-by the standard, any value that compares equal to @0@ is false, while any value that compares unequal to @0@ is true. 
-As such, an expression @x@ in any boolean context (such as the condition of an @if@ or @while@ statement, or the arguments to @&&@, @||@, or @?:@\,) can be rewritten as @x != 0@ without changing its semantics.
+by the standard, any value that compares equal to @0@ is false, whereas any value that compares unequal to @0@ is true. 
+As such, an expression @x@ in any Boolean context (such as the condition of an @if@ or @while@ statement, or the arguments to @&&@, @||@, or @?:@\,) can be rewritten as @x != 0@ without changing its semantics.
 Operator overloading in \CFA provides a natural means to implement this truth-value comparison for arbitrary types, but the C type system is not precise enough to distinguish an equality comparison with @0@ from an equality comparison with an arbitrary integer or pointer. 
 To provide this precision, \CFA introduces a new type @zero_t@ as the type of literal @0@ (somewhat analagous to @nullptr_t@ and @nullptr@ in \CCeleven);
@@ -2132,5 +2175,5 @@
 With this addition, \CFA rewrites @if (x)@ and similar expressions to @if ( (x) != 0 )@ or the appropriate analogue, and any type @T@ is ``truthy'' by defining an operator overload @int ?!=?( T, zero_t )@.
 \CC makes types truthy by adding a conversion to @bool@;
-prior to the addition of explicit cast operators in \CCeleven, this approach had the pitfall of making truthy types transitively convertable to any numeric type;
+prior to the addition of explicit cast operators in \CCeleven, this approach had the pitfall of making truthy types transitively convertible into any numeric type;
 \CFA avoids this issue.
 
@@ -2143,10 +2186,10 @@
 
 
-\subsection{User Literals}
+\subsection{User literals}
 
 For readability, it is useful to associate units to scale literals, \eg weight (stone, pound, kilogram) or time (seconds, minutes, hours).
-The left of Figure~\ref{f:UserLiteral} shows the \CFA alternative call-syntax (postfix: literal argument before function name), using the backquote, to convert basic literals into user literals.
+The left of Figure~\ref{f:UserLiteral} shows the \CFA alternative call syntax (postfix: literal argument before function name), using the backquote, to convert basic literals into user literals.
 The backquote is a small character, making the unit (function name) predominate.
-For examples, the multi-precision integer-type in Section~\ref{s:MultiPrecisionIntegers} has user literals:
+For examples, the multiprecision integer type in Section~\ref{s:MultiPrecisionIntegers} has the following user literals.
 {\lstset{language=CFA,moredelim=**[is][\color{red}]{|}{|},deletedelim=**[is][]{`}{`}}
 \begin{cfa}
@@ -2154,5 +2197,5 @@
 y = "12345678901234567890123456789"|`mp| + "12345678901234567890123456789"|`mp|;
 \end{cfa}
-Because \CFA uses a standard function, all types and literals are applicable, as well as overloading and conversions, where @?`@ denotes a postfix-function name and @`@ denotes a postfix-function call.
+Because \CFA uses a standard function, all types and literals are applicable, as well as overloading and conversions, where @?`@ denotes a postfix-function name and @`@  denotes a postfix-function call.
 }%
 \begin{cquote}
@@ -2196,5 +2239,5 @@
 \end{cquote}
 
-The right of Figure~\ref{f:UserLiteral} shows the equivalent \CC version using the underscore for the call-syntax.
+The right of Figure~\ref{f:UserLiteral} shows the equivalent \CC version using the underscore for the call syntax.
 However, \CC restricts the types, \eg @unsigned long long int@ and @long double@ to represent integral and floating literals.
 After which, user literals must match (no conversions);
@@ -2203,4 +2246,5 @@
 \begin{figure}
 \centering
+\fontsize{9bp}{11bp}\selectfont
 \lstset{language=CFA,moredelim=**[is][\color{red}]{|}{|},deletedelim=**[is][]{`}{`}}
 \lstDeleteShortInline@%
@@ -2258,5 +2302,5 @@
 \end{tabular}
 \lstMakeShortInline@%
-\caption{User Literal}
+\caption{User literal}
 \label{f:UserLiteral}
 \end{figure}
@@ -2266,7 +2310,7 @@
 \label{sec:libraries}
 
-As stated in Section~\ref{sec:poly-fns}, \CFA inherits a large corpus of library code, where other programming languages must rewrite or provide fragile inter-language communication with C.
+As stated in Section~\ref{sec:poly-fns}, \CFA inherits a large corpus of library code, where other programming languages must rewrite or provide fragile interlanguage communication with C.
 \CFA has replacement libraries condensing hundreds of existing C names into tens of \CFA overloaded names, all without rewriting the actual computations.
-In many cases, the interface is an inline wrapper providing overloading during compilation but zero cost at runtime.
+In many cases, the interface is an inline wrapper providing overloading during compilation but of zero cost at runtime.
 The following sections give a glimpse of the interface reduction to many C libraries.
 In many cases, @signed@/@unsigned@ @char@, @short@, and @_Complex@ functions are available (but not shown) to ensure expression computations remain in a single type, as conversions can distort results.
@@ -2276,5 +2320,5 @@
 
 C library @limits.h@ provides lower and upper bound constants for the basic types.
-\CFA name overloading is used to condense these typed constants, \eg:
+\CFA name overloading is used to condense these typed constants.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -2295,5 +2339,5 @@
 \lstMakeShortInline@%
 \end{cquote}
-The result is a significant reduction in names to access typed constants, \eg:
+The result is a significant reduction in names to access typed constants.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -2321,5 +2365,5 @@
 
 C library @math.h@ provides many mathematical functions.
-\CFA function overloading is used to condense these mathematical functions, \eg:
+\CFA function overloading is used to condense these mathematical functions.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -2340,5 +2384,5 @@
 \lstMakeShortInline@%
 \end{cquote}
-The result is a significant reduction in names to access math functions, \eg:
+The result is a significant reduction in names to access math functions.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -2359,8 +2403,8 @@
 \lstMakeShortInline@%
 \end{cquote}
-While \Celeven has type-generic math~\cite[\S~7.25]{C11} in @tgmath.h@ to provide a similar mechanism, these macros are limited, matching a function name with a single set of floating type(s).
+While \Celeven has type-generic math (see section~7.25 of the ISO/IEC 9899\cite{C11}) in @tgmath.h@ to provide a similar mechanism, these macros are limited, matching a function name with a single set of floating type(s).
 For example, it is impossible to overload @atan@ for both one and two arguments;
-instead the names @atan@ and @atan2@ are required (see Section~\ref{s:NameOverloading}).
-The key observation is that only a restricted set of type-generic macros are provided for a limited set of function names, which do not generalize across the type system, as in \CFA.
+instead, the names @atan@ and @atan2@ are required (see Section~\ref{s:NameOverloading}).
+The key observation is that only a restricted set of type-generic macros is provided for a limited set of function names, which do not generalize across the type system, as in \CFA.
 
 
@@ -2368,5 +2412,5 @@
 
 C library @stdlib.h@ provides many general functions.
-\CFA function overloading is used to condense these utility functions, \eg:
+\CFA function overloading is used to condense these utility functions.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -2387,5 +2431,5 @@
 \lstMakeShortInline@%
 \end{cquote}
-The result is a significant reduction in names to access utility functions, \eg:
+The result is a significant reduction in names to access the utility functions.
 \begin{cquote}
 \lstDeleteShortInline@%
@@ -2406,15 +2450,16 @@
 \lstMakeShortInline@%
 \end{cquote}
-In additon, there are polymorphic functions, like @min@ and @max@, that work on any type with operators @?<?@ or @?>?@.
+In addition, there are polymorphic functions, like @min@ and @max@, that work on any type with operator @?<?@ or @?>?@.
 
 The following shows one example where \CFA \emph{extends} an existing standard C interface to reduce complexity and provide safety.
-C/\Celeven provide a number of complex and overlapping storage-management operation to support the following capabilities:
-\begin{description}%[topsep=3pt,itemsep=2pt,parsep=0pt]
+C/\Celeven provide a number of complex and overlapping storage-management operations to support the following capabilities.
+\begin{list}{}{\itemsep=0pt\parsep=0pt\labelwidth=0pt\leftmargin\parindent\itemindent-\leftmargin\let\makelabel\descriptionlabel}
 \item[fill]
 an allocation with a specified character.
 \item[resize]
 an existing allocation to decrease or increase its size.
-In either case, new storage may or may not be allocated and, if there is a new allocation, as much data from the existing allocation is copied.
+In either case, new storage may or may not be allocated, and if there is a new allocation, as much data from the existing allocation are copied.
 For an increase in storage size, new storage after the copied data may be filled.
+\newpage
 \item[align]
 an allocation on a specified memory boundary, \eg, an address multiple of 64 or 128 for cache-line purposes.
@@ -2422,18 +2467,17 @@
 allocation with a specified number of elements.
 An array may be filled, resized, or aligned.
-\end{description}
-Table~\ref{t:StorageManagementOperations} shows the capabilities provided by C/\Celeven allocation-functions and how all the capabilities can be combined into two \CFA functions.
-\CFA storage-management functions extend the C equivalents by overloading, providing shallow type-safety, and removing the need to specify the base allocation-size.
-Figure~\ref{f:StorageAllocation} contrasts \CFA and C storage-allocation performing the same operations with the same type safety.
+\end{list}
+Table~\ref{t:StorageManagementOperations} shows the capabilities provided by C/\Celeven allocation functions and how all the capabilities can be combined into two \CFA functions.
+\CFA storage-management functions extend the C equivalents by overloading, providing shallow type safety, and removing the need to specify the base allocation size.
+Figure~\ref{f:StorageAllocation} contrasts \CFA and C storage allocation performing the same operations with the same type safety.
 
 \begin{table}
-\caption{Storage-Management Operations}
+\caption{Storage-management operations}
 \label{t:StorageManagementOperations}
 \centering
 \lstDeleteShortInline@%
 \lstMakeShortInline~%
-\begin{tabular}{@{}r|r|l|l|l|l@{}}
-\multicolumn{1}{c}{}&		& \multicolumn{1}{c|}{fill}	& resize	& align	& array	\\
-\hline
+\begin{tabular}{@{}rrllll@{}}
+\multicolumn{1}{c}{}&		& \multicolumn{1}{c}{fill}	& resize	& align	& array	\\
 C		& ~malloc~			& no			& no		& no		& no	\\
 		& ~calloc~			& yes (0 only)	& no		& no		& yes	\\
@@ -2441,7 +2485,5 @@
 		& ~memalign~		& no			& no		& yes		& no	\\
 		& ~posix_memalign~	& no			& no		& yes		& no	\\
-\hline
 C11		& ~aligned_alloc~	& no			& no		& yes		& no	\\
-\hline
 \CFA	& ~alloc~			& yes/copy		& no/yes	& no		& yes	\\
 		& ~align_alloc~		& yes			& no		& yes		& yes	\\
@@ -2453,4 +2495,5 @@
 \begin{figure}
 \centering
+\fontsize{9bp}{11bp}\selectfont
 \begin{cfa}[aboveskip=0pt,xleftmargin=0pt]
 size_t  dim = 10;							$\C{// array dimension}$
@@ -2490,10 +2533,10 @@
 \end{tabular}
 \lstMakeShortInline@%
-\caption{\CFA versus C Storage-Allocation}
+\caption{\CFA versus C storage allocation}
 \label{f:StorageAllocation}
 \end{figure}
 
 Variadic @new@ (see Section~\ref{sec:variadic-tuples}) cannot support the same overloading because extra parameters are for initialization.
-Hence, there are @new@ and @anew@ functions for single and array variables, and the fill value is the arguments to the constructor, \eg:
+Hence, there are @new@ and @anew@ functions for single and array variables, and the fill value is the arguments to the constructor.
 \begin{cfa}
 struct S { int i, j; };
@@ -2502,7 +2545,7 @@
 S * as = anew( dim, 2, 3 );					$\C{// each array element initialized to 2, 3}$
 \end{cfa}
-Note, \CC can only initialize array elements via the default constructor.
-
-Finally, the \CFA memory-allocator has \newterm{sticky properties} for dynamic storage: fill and alignment are remembered with an object's storage in the heap.
+Note that \CC can only initialize array elements via the default constructor.
+
+Finally, the \CFA memory allocator has \newterm{sticky properties} for dynamic storage: fill and alignment are remembered with an object's storage in the heap.
 When a @realloc@ is performed, the sticky properties are respected, so that new storage is correctly aligned and initialized with the fill character.
 
@@ -2511,5 +2554,5 @@
 \label{s:IOLibrary}
 
-The goal of \CFA I/O is to simplify the common cases, while fully supporting polymorphism and user defined types in a consistent way.
+The goal of \CFA I/O is to simplify the common cases, while fully supporting polymorphism and user-defined types in a consistent way.
 The approach combines ideas from \CC and Python.
 The \CFA header file for the I/O library is @fstream@.
@@ -2540,5 +2583,5 @@
 \lstMakeShortInline@%
 \end{cquote}
-The \CFA form has half the characters of the \CC form, and is similar to Python I/O with respect to implicit separators.
+The \CFA form has half the characters of the \CC form and is similar to Python I/O with respect to implicit separators.
 Similar simplification occurs for tuple I/O, which prints all tuple values separated by ``\lstinline[showspaces=true]@, @''.
 \begin{cfa}
@@ -2573,5 +2616,5 @@
 \lstMakeShortInline@%
 \end{cquote}
-There is a weak similarity between the \CFA logical-or operator and the Shell pipe-operator for moving data, where data flows in the correct direction for input but the opposite direction for output.
+There is a weak similarity between the \CFA logical-or operator and the Shell pipe operator for moving data, where data flow in the correct direction for input but in the opposite direction for output.
 \begin{comment}
 The implicit separator character (space/blank) is a separator not a terminator.
@@ -2594,17 +2637,18 @@
 \end{itemize}
 \end{comment}
-There are functions to set and get the separator string, and manipulators to toggle separation on and off in the middle of output.
-
-
-\subsection{Multi-precision Integers}
+There are functions to set and get the separator string and manipulators to toggle separation on and off in the middle of output.
+
+
+\subsection{Multiprecision integers}
 \label{s:MultiPrecisionIntegers}
 
-\CFA has an interface to the GMP multi-precision signed-integers~\cite{GMP}, similar to the \CC interface provided by GMP.
-The \CFA interface wraps GMP functions into operator functions to make programming with multi-precision integers identical to using fixed-sized integers.
-The \CFA type name for multi-precision signed-integers is @Int@ and the header file is @gmp@.
-Figure~\ref{f:GMPInterface} shows a multi-precision factorial-program contrasting the GMP interface in \CFA and C.
-
-\begin{figure}
+\CFA has an interface to the GNU multiple precision (GMP) signed integers~\cite{GMP}, similar to the \CC interface provided by GMP.
+The \CFA interface wraps GMP functions into operator functions to make programming with multiprecision integers identical to using fixed-sized integers.
+The \CFA type name for multiprecision signed integers is @Int@ and the header file is @gmp@.
+Figure~\ref{f:GMPInterface} shows a multiprecision factorial program contrasting the GMP interface in \CFA and C.
+
+\begin{figure}[b]
 \centering
+\fontsize{9bp}{11bp}\selectfont
 \lstDeleteShortInline@%
 \begin{tabular}{@{}l@{\hspace{3\parindentlnth}}l@{}}
@@ -2637,9 +2681,10 @@
 \end{tabular}
 \lstMakeShortInline@%
-\caption{GMP Interface \CFA versus C}
+\caption{GMP interface \CFA versus C}
 \label{f:GMPInterface}
 \end{figure}
 
 
+\vspace{-4pt}
 \section{Polymorphism Evaluation}
 \label{sec:eval}
@@ -2650,12 +2695,13 @@
 % Though \CFA provides significant added functionality over C, these features have a low runtime penalty.
 % In fact, it is shown that \CFA's generic programming can enable faster runtime execution than idiomatic @void *@-based C code.
-The experiment is a set of generic-stack micro-benchmarks~\cite{CFAStackEvaluation} in C, \CFA, and \CC (see implementations in Appendix~\ref{sec:BenchmarkStackImplementations}).
+The experiment is a set of generic-stack microbenchmarks~\cite{CFAStackEvaluation} in C, \CFA, and \CC (see implementations in Appendix~\ref{sec:BenchmarkStackImplementations}).
 Since all these languages share a subset essentially comprising standard C, maximal-performance benchmarks should show little runtime variance, differing only in length and clarity of source code.
 A more illustrative comparison measures the costs of idiomatic usage of each language's features.
-Figure~\ref{fig:BenchmarkTest} shows the \CFA benchmark tests for a generic stack based on a singly linked-list.
+Figure~\ref{fig:BenchmarkTest} shows the \CFA benchmark tests for a generic stack based on a singly linked list.
 The benchmark test is similar for the other languages.
 The experiment uses element types @int@ and @pair(short, char)@, and pushes $N=40M$ elements on a generic stack, copies the stack, clears one of the stacks, and finds the maximum value in the other stack.
 
 \begin{figure}
+\fontsize{9bp}{11bp}\selectfont
 \begin{cfa}[xleftmargin=3\parindentlnth,aboveskip=0pt,belowskip=0pt]
 int main() {
@@ -2677,16 +2723,17 @@
 }
 \end{cfa}
-\caption{\protect\CFA Benchmark Test}
+\caption{\protect\CFA benchmark test}
 \label{fig:BenchmarkTest}
+\vspace*{-10pt}
 \end{figure}
 
-The structure of each benchmark implemented is: C with @void *@-based polymorphism, \CFA with parametric polymorphism, \CC with templates, and \CC using only class inheritance for polymorphism, called \CCV.
+The structure of each benchmark implemented is C with @void *@-based polymorphism, \CFA with parametric polymorphism, \CC with templates, and \CC using only class inheritance for polymorphism, called \CCV.
 The \CCV variant illustrates an alternative object-oriented idiom where all objects inherit from a base @object@ class, mimicking a Java-like interface;
-hence runtime checks are necessary to safely down-cast objects.
-The most notable difference among the implementations is in memory layout of generic types: \CFA and \CC inline the stack and pair elements into corresponding list and pair nodes, while C and \CCV lack such a capability and instead must store generic objects via pointers to separately-allocated objects.
-Note, the C benchmark uses unchecked casts as C has no runtime mechanism to perform such checks, while \CFA and \CC provide type-safety statically.
+hence, runtime checks are necessary to safely downcast objects.
+The most notable difference among the implementations is in memory layout of generic types: \CFA and \CC inline the stack and pair elements into corresponding list and pair nodes, whereas C and \CCV lack such capability and, instead, must store generic objects via pointers to separately allocated objects.
+Note that the C benchmark uses unchecked casts as C has no runtime mechanism to perform such checks, whereas \CFA and \CC provide type safety statically.
 
 Figure~\ref{fig:eval} and Table~\ref{tab:eval} show the results of running the benchmark in Figure~\ref{fig:BenchmarkTest} and its C, \CC, and \CCV equivalents.
-The graph plots the median of 5 consecutive runs of each program, with an initial warm-up run omitted.
+The graph plots the median of five consecutive runs of each program, with an initial warm-up run omitted.
 All code is compiled at \texttt{-O2} by gcc or g++ 6.4.0, with all \CC code compiled as \CCfourteen.
 The benchmarks are run on an Ubuntu 16.04 workstation with 16 GB of RAM and a 6-core AMD FX-6300 CPU with 3.5 GHz maximum clock frequency.
@@ -2694,27 +2741,32 @@
 \begin{figure}
 \centering
-\input{timing}
-\caption{Benchmark Timing Results (smaller is better)}
+\resizebox{0.7\textwidth}{!}{\input{timing}}
+\caption{Benchmark timing results (smaller is better)}
 \label{fig:eval}
+\vspace*{-10pt}
 \end{figure}
 
 \begin{table}
+\vspace*{-10pt}
 \caption{Properties of benchmark code}
 \label{tab:eval}
 \centering
+\vspace*{-4pt}
 \newcommand{\CT}[1]{\multicolumn{1}{c}{#1}}
-\begin{tabular}{rrrrr}
-									& \CT{C}	& \CT{\CFA}	& \CT{\CC}	& \CT{\CCV}		\\ \hline
-maximum memory usage (MB)			& 10,001	& 2,502		& 2,503		& 11,253		\\
+\begin{tabular}{lrrrr}
+									& \CT{C}	& \CT{\CFA}	& \CT{\CC}	& \CT{\CCV}		\\
+maximum memory usage (MB)			& 10\,001	& 2\,502	& 2\,503	& 11\,253		\\
 source code size (lines)			& 201		& 191		& 125		& 294			\\
 redundant type annotations (lines)	& 27		& 0			& 2			& 16			\\
 binary size (KB)					& 14		& 257		& 14		& 37			\\
 \end{tabular}
+\vspace*{-16pt}
 \end{table}
 
-The C and \CCV variants are generally the slowest with the largest memory footprint, because of their less-efficient memory layout and the pointer-indirection necessary to implement generic types;
+\enlargethispage{-10pt}
+The C and \CCV variants are generally the slowest with the largest memory footprint, due to their less-efficient memory layout and the pointer indirection necessary to implement generic types;
 this inefficiency is exacerbated by the second level of generic types in the pair benchmarks.
-By contrast, the \CFA and \CC variants run in roughly equivalent time for both the integer and pair because of equivalent storage layout, with the inlined libraries (\ie no separate compilation) and greater maturity of the \CC compiler contributing to its lead.
-\CCV is slower than C largely due to the cost of runtime type-checking of down-casts (implemented with @dynamic_cast@);
+By contrast, the \CFA and \CC variants run in roughly equivalent time for both the integer and pair because of the equivalent storage layout, with the inlined libraries (\ie no separate compilation) and greater maturity of the \CC compiler contributing to its lead.
+\CCV is slower than C largely due to the cost of runtime type checking of downcasts (implemented with @dynamic_cast@).
 The outlier for \CFA, pop @pair@, results from the complexity of the generated-C polymorphic code.
 The gcc compiler is unable to optimize some dead code and condense nested calls;
@@ -2722,21 +2774,22 @@
 Finally, the binary size for \CFA is larger because of static linking with the \CFA libraries.
 
-\CFA is also competitive in terms of source code size, measured as a proxy for programmer effort. The line counts in Table~\ref{tab:eval} include implementations of @pair@ and @stack@ types for all four languages for purposes of direct comparison, though it should be noted that \CFA and \CC have pre-written data structures in their standard libraries that programmers would generally use instead. Use of these standard library types has minimal impact on the performance benchmarks, but shrinks the \CFA and \CC benchmarks to 39 and 42 lines, respectively.
+\CFA is also competitive in terms of source code size, measured as a proxy for programmer effort. The line counts in Table~\ref{tab:eval} include implementations of @pair@ and @stack@ types for all four languages for purposes of direct comparison, although it should be noted that \CFA and \CC have prewritten data structures in their standard libraries that programmers would generally use instead. Use of these standard library types has minimal impact on the performance benchmarks, but shrinks the \CFA and \CC benchmarks to 39 and 42 lines, respectively.
 The difference between the \CFA and \CC line counts is primarily declaration duplication to implement separate compilation; a header-only \CFA library would be similar in length to the \CC version.
-On the other hand, C does not have a generic collections-library in its standard distribution, resulting in frequent reimplementation of such collection types by C programmers.
-\CCV does not use the \CC standard template library by construction, and in fact includes the definition of @object@ and wrapper classes for @char@, @short@, and @int@ in its line count, which inflates this count somewhat, as an actual object-oriented language would include these in the standard library;
+On the other hand, C does not have a generic collections library in its standard distribution, resulting in frequent reimplementation of such collection types by C programmers.
+\CCV does not use the \CC standard template library by construction and, in fact, includes the definition of @object@ and wrapper classes for @char@, @short@, and @int@ in its line count, which inflates this count somewhat, as an actual object-oriented language would include these in the standard library;
 with their omission, the \CCV line count is similar to C.
 We justify the given line count by noting that many object-oriented languages do not allow implementing new interfaces on library types without subclassing or wrapper types, which may be similarly verbose.
 
-Line-count is a fairly rough measure of code complexity;
-another important factor is how much type information the programmer must specify manually, especially where that information is not compiler-checked.
-Such unchecked type information produces a heavier documentation burden and increased potential for runtime bugs, and is much less common in \CFA than C, with its manually specified function pointer arguments and format codes, or \CCV, with its extensive use of un-type-checked downcasts, \eg @object@ to @integer@ when popping a stack.
+Line count is a fairly rough measure of code complexity;
+another important factor is how much type information the programmer must specify manually, especially where that information is not compiler checked.
+Such unchecked type information produces a heavier documentation burden and increased potential for runtime bugs and is much less common in \CFA than C, with its manually specified function pointer arguments and format codes, or \CCV, with its extensive use of un-type-checked downcasts, \eg @object@ to @integer@ when popping a stack.
 To quantify this manual typing, the ``redundant type annotations'' line in Table~\ref{tab:eval} counts the number of lines on which the type of a known variable is respecified, either as a format specifier, explicit downcast, type-specific function, or by name in a @sizeof@, struct literal, or @new@ expression.
-The \CC benchmark uses two redundant type annotations to create a new stack nodes, while the C and \CCV benchmarks have several such annotations spread throughout their code.
+The \CC benchmark uses two redundant type annotations to create a new stack nodes, whereas the C and \CCV benchmarks have several such annotations spread throughout their code.
 The \CFA benchmark is able to eliminate all redundant type annotations through use of the polymorphic @alloc@ function discussed in Section~\ref{sec:libraries}.
 
-We conjecture these results scale across most generic data-types as the underlying polymorphism implement is constant.
-
-
+We conjecture that these results scale across most generic data types as the underlying polymorphism implement is constant.
+
+
+\vspace*{-8pt}
 \section{Related Work}
 \label{s:RelatedWork}
@@ -2754,99 +2807,105 @@
 \CC provides three disjoint polymorphic extensions to C: overloading, inheritance, and templates.
 The overloading is restricted because resolution does not use the return type, inheritance requires learning object-oriented programming and coping with a restricted nominal-inheritance hierarchy, templates cannot be separately compiled resulting in compilation/code bloat and poor error messages, and determining how these mechanisms interact and which to use is confusing.
-In contrast, \CFA has a single facility for polymorphic code supporting type-safe separate-compilation of polymorphic functions and generic (opaque) types, which uniformly leverage the C procedural paradigm.
+In contrast, \CFA has a single facility for polymorphic code supporting type-safe separate compilation of polymorphic functions and generic (opaque) types, which uniformly leverage the C procedural paradigm.
 The key mechanism to support separate compilation is \CFA's \emph{explicit} use of assumed type properties.
-Until \CC concepts~\cite{C++Concepts} are standardized (anticipated for \CCtwenty), \CC provides no way to specify the requirements of a generic function beyond compilation errors during template expansion;
+Until \CC concepts~\cite{C++Concepts} are standardized (anticipated for \CCtwenty), \CC provides no way of specifying the requirements of a generic function beyond compilation errors during template expansion;
 furthermore, \CC concepts are restricted to template polymorphism.
 
 Cyclone~\cite{Grossman06} also provides capabilities for polymorphic functions and existential types, similar to \CFA's @forall@ functions and generic types.
-Cyclone existential types can include function pointers in a construct similar to a virtual function-table, but these pointers must be explicitly initialized at some point in the code, a tedious and potentially error-prone process.
+Cyclone existential types can include function pointers in a construct similar to a virtual function table, but these pointers must be explicitly initialized at some point in the code, which is a tedious and potentially error-prone process.
 Furthermore, Cyclone's polymorphic functions and types are restricted to abstraction over types with the same layout and calling convention as @void *@, \ie only pointer types and @int@.
 In \CFA terms, all Cyclone polymorphism must be dtype-static.
 While the Cyclone design provides the efficiency benefits discussed in Section~\ref{sec:generic-apps} for dtype-static polymorphism, it is more restrictive than \CFA's general model.
-Smith and Volpano~\cite{Smith98} present Polymorphic C, an ML dialect with polymorphic functions, C-like syntax, and pointer types; it lacks many of C's features, however, most notably structure types, and so is not a practical C replacement.
+Smith and Volpano~\cite{Smith98} present Polymorphic C, an ML dialect with polymorphic functions, C-like syntax, and pointer types;
+it lacks many of C's features, most notably structure types, and hence, is not a practical C replacement.
 
 Objective-C~\cite{obj-c-book} is an industrially successful extension to C.
-However, Objective-C is a radical departure from C, using an object-oriented model with message-passing.
+However, Objective-C is a radical departure from C, using an object-oriented model with message passing.
 Objective-C did not support type-checked generics until recently \cite{xcode7}, historically using less-efficient runtime checking of object types.
-The GObject~\cite{GObject} framework also adds object-oriented programming with runtime type-checking and reference-counting garbage-collection to C;
-these features are more intrusive additions than those provided by \CFA, in addition to the runtime overhead of reference-counting.
-Vala~\cite{Vala} compiles to GObject-based C, adding the burden of learning a separate language syntax to the aforementioned demerits of GObject as a modernization path for existing C code-bases.
-Java~\cite{Java8} included generic types in Java~5, which are type-checked at compilation and type-erased at runtime, similar to \CFA's.
-However, in Java, each object carries its own table of method pointers, while \CFA passes the method pointers separately to maintain a C-compatible layout.
+The GObject~\cite{GObject} framework also adds object-oriented programming with runtime type-checking and reference-counting garbage collection to C;
+these features are more intrusive additions than those provided by \CFA, in addition to the runtime overhead of reference counting.
+Vala~\cite{Vala} compiles to GObject-based C, adding the burden of learning a separate language syntax to the aforementioned demerits of GObject as a modernization path for existing C code bases.
+Java~\cite{Java8} included generic types in Java~5, which are type checked at compilation and type erased at runtime, similar to \CFA's.
+However, in Java, each object carries its own table of method pointers, whereas \CFA passes the method pointers separately to maintain a C-compatible layout.
 Java is also a garbage-collected, object-oriented language, with the associated resource usage and C-interoperability burdens.
 
-D~\cite{D}, Go, and Rust~\cite{Rust} are modern, compiled languages with abstraction features similar to \CFA traits, \emph{interfaces} in D and Go and \emph{traits} in Rust.
+D~\cite{D}, Go, and Rust~\cite{Rust} are modern compiled languages with abstraction features similar to \CFA traits, \emph{interfaces} in D and Go, and \emph{traits} in Rust.
 However, each language represents a significant departure from C in terms of language model, and none has the same level of compatibility with C as \CFA.
 D and Go are garbage-collected languages, imposing the associated runtime overhead.
 The necessity of accounting for data transfer between managed runtimes and the unmanaged C runtime complicates foreign-function interfaces to C.
 Furthermore, while generic types and functions are available in Go, they are limited to a small fixed set provided by the compiler, with no language facility to define more.
-D restricts garbage collection to its own heap by default, while Rust is not garbage-collected, and thus has a lighter-weight runtime more interoperable with C.
+D restricts garbage collection to its own heap by default, whereas Rust is not garbage collected and, thus, has a lighter-weight runtime more interoperable with C.
 Rust also possesses much more powerful abstraction capabilities for writing generic code than Go.
-On the other hand, Rust's borrow-checker provides strong safety guarantees but is complex and difficult to learn and imposes a distinctly idiomatic programming style.
+On the other hand, Rust's borrow checker provides strong safety guarantees but is complex and difficult to learn and imposes a distinctly idiomatic programming style.
 \CFA, with its more modest safety features, allows direct ports of C code while maintaining the idiomatic style of the original source.
 
 
-\subsection{Tuples/Variadics}
-
+\vspace*{-18pt}
+\subsection{Tuples/variadics}
+
+\vspace*{-5pt}
 Many programming languages have some form of tuple construct and/or variadic functions, \eg SETL, C, KW-C, \CC, D, Go, Java, ML, and Scala.
 SETL~\cite{SETL} is a high-level mathematical programming language, with tuples being one of the primary data types.
 Tuples in SETL allow subscripting, dynamic expansion, and multiple assignment.
-C provides variadic functions through @va_list@ objects, but the programmer is responsible for managing the number of arguments and their types, so the mechanism is type unsafe.
+C provides variadic functions through @va_list@ objects, but the programmer is responsible for managing the number of arguments and their types;
+thus, the mechanism is type unsafe.
 KW-C~\cite{Buhr94a}, a predecessor of \CFA, introduced tuples to C as an extension of the C syntax, taking much of its inspiration from SETL.
 The main contributions of that work were adding MRVF, tuple mass and multiple assignment, and record-member access.
-\CCeleven introduced @std::tuple@ as a library variadic template structure.
+\CCeleven introduced @std::tuple@ as a library variadic-template structure.
 Tuples are a generalization of @std::pair@, in that they allow for arbitrary length, fixed-size aggregation of heterogeneous values.
 Operations include @std::get<N>@ to extract values, @std::tie@ to create a tuple of references used for assignment, and lexicographic comparisons.
-\CCseventeen proposes \emph{structured bindings}~\cite{Sutter15} to eliminate pre-declaring variables and use of @std::tie@ for binding the results.
-This extension requires the use of @auto@ to infer the types of the new variables, so complicated expressions with a non-obvious type must be documented with some other mechanism.
+\CCseventeen proposes \emph{structured bindings}~\cite{Sutter15} to eliminate predeclaring variables and the use of @std::tie@ for binding the results.
+This extension requires the use of @auto@ to infer the types of the new variables; hence, complicated expressions with a nonobvious type must be documented with some other mechanism.
 Furthermore, structured bindings are not a full replacement for @std::tie@, as it always declares new variables.
 Like \CC, D provides tuples through a library variadic-template structure.
 Go does not have tuples but supports MRVF.
-Java's variadic functions appear similar to C's but are type-safe using homogeneous arrays, which are less useful than \CFA's heterogeneously-typed variadic functions.
+Java's variadic functions appear similar to C's but are type safe using homogeneous arrays, which are less useful than \CFA's heterogeneously typed variadic functions.
 Tuples are a fundamental abstraction in most functional programming languages, such as Standard ML~\cite{sml}, Haskell, and Scala~\cite{Scala}, which decompose tuples using pattern matching.
 
 
+\vspace*{-18pt}
 \subsection{C Extensions}
 
-\CC is the best known C-based language, and is similar to \CFA in that both are extensions to C with source and runtime backwards compatibility.
-Specific difference between \CFA and \CC have been identified in prior sections, with a final observation that \CFA has equal or fewer tokens to express the same notion in many cases.
+\vspace*{-5pt}
+\CC is the best known C-based language and is similar to \CFA in that both are extensions to C with source and runtime backward compatibility.
+Specific differences between \CFA and \CC have been identified in prior sections, with a final observation that \CFA has equal or fewer tokens to express the same notion in many cases.
 The key difference in design philosophies is that \CFA is easier for C programmers to understand by maintaining a procedural paradigm and avoiding complex interactions among extensions.
 \CC, on the other hand, has multiple overlapping features (such as the three forms of polymorphism), many of which have complex interactions with its object-oriented design. 
-As a result, \CC has a steep learning curve for even experienced C programmers, especially when attempting to maintain performance equivalent to C legacy-code.
-
-There are several other C extension-languages with less usage and even more dramatic changes than \CC. 
-Objective-C and Cyclone are two other extensions to C with different design goals than \CFA, as discussed above. 
+As a result, \CC has a steep learning curve for even experienced C programmers, especially when attempting to maintain performance equivalent to C legacy code.
+
+There are several other C extension languages with less usage and even more dramatic changes than \CC. 
+\mbox{Objective-C} and Cyclone are two other extensions to C with different design goals than \CFA, as discussed above. 
 Other languages extend C with more focused features. 
 $\mu$\CC~\cite{uC++book}, CUDA~\cite{Nickolls08}, ispc~\cite{Pharr12}, and Sierra~\cite{Leissa14} add concurrent or data-parallel primitives to C or \CC;
-data-parallel features have not yet been added to \CFA, but are easily incorporated within its design, while concurrency primitives similar to those in $\mu$\CC have already been added~\cite{Delisle18}.
-Finally, CCured~\cite{Necula02} and Ironclad \CC~\cite{DeLozier13} attempt to provide a more memory-safe C by annotating pointer types with garbage collection information; type-checked polymorphism in \CFA covers several of C's memory-safety issues, but more aggressive approaches such as annotating all pointer types with their nullability or requiring runtime garbage collection are contradictory to \CFA's backwards compatibility goals.
+data-parallel features have not yet been added to \CFA, but are easily incorporated within its design, whereas concurrency primitives similar to those in $\mu$\CC have already been added~\cite{Delisle18}.
+Finally, CCured~\cite{Necula02} and Ironclad \CC~\cite{DeLozier13} attempt to provide a more memory-safe C by annotating pointer types with garbage collection information; type-checked polymorphism in \CFA covers several of C's memory-safety issues, but more aggressive approaches such as annotating all pointer types with their nullability or requiring runtime garbage collection are contradictory to \CFA's backward compatibility goals.
 
 
 \section{Conclusion and Future Work}
 
-The goal of \CFA is to provide an evolutionary pathway for large C development-environments to be more productive and safer, while respecting the talent and skill of C programmers.
-While other programming languages purport to be a better C, they are in fact new and interesting languages in their own right, but not C extensions.
-The purpose of this paper is to introduce \CFA, and showcase language features that illustrate the \CFA type-system and approaches taken to achieve the goal of evolutionary C extension.
-The contributions are a powerful type-system using parametric polymorphism and overloading, generic types, tuples, advanced control structures, and extended declarations, which all have complex interactions.
+The goal of \CFA is to provide an evolutionary pathway for large C development environments to be more productive and safer, while respecting the talent and skill of C programmers.
+While other programming languages purport to be a better C, they are, in fact, new and interesting languages in their own right, but not C extensions.
+The purpose of this paper is to introduce \CFA, and showcase language features that illustrate the \CFA type system and approaches taken to achieve the goal of evolutionary C extension.
+The contributions are a powerful type system using parametric polymorphism and overloading, generic types, tuples, advanced control structures, and extended declarations, which all have complex interactions.
 The work is a challenging design, engineering, and implementation exercise.
 On the surface, the project may appear as a rehash of similar mechanisms in \CC.
 However, every \CFA feature is different than its \CC counterpart, often with extended functionality, better integration with C and its programmers, and always supporting separate compilation.
-All of these new features are being used by the \CFA development-team to build the \CFA runtime-system.
+All of these new features are being used by the \CFA development team to build the \CFA runtime system.
 Finally, we demonstrate that \CFA performance for some idiomatic cases is better than C and close to \CC, showing the design is practically applicable.
 
 While all examples in the paper compile and run, there are ongoing efforts to reduce compilation time, provide better debugging, and add more libraries;
 when this work is complete in early 2019, a public beta release will be available at \url{https://github.com/cforall/cforall}.
-There is also new work on a number of \CFA features, including arrays with size, runtime type-information, virtual functions, user-defined conversions, and modules.
-While \CFA polymorphic functions use dynamic virtual-dispatch with low runtime overhead (see Section~\ref{sec:eval}), it is not as low as \CC template-inlining.
-Hence it may be beneficial to provide a mechanism for performance-sensitive code.
-Two promising approaches are an @inline@ annotation at polymorphic function call sites to create a template-specialization of the function (provided the code is visible) or placing an @inline@ annotation on polymorphic function-definitions to instantiate a specialized version for some set of types (\CC template specialization).
- These approaches are not mutually exclusive and allow performance optimizations to be applied only when necessary, without suffering global code-bloat.
-In general, we believe separate compilation, producing smaller code, works well with loaded hardware-caches, which may offset the benefit of larger inlined-code.
+There is also new work on a number of \CFA features, including arrays with size, runtime type information, virtual functions, user-defined conversions, and modules.
+While \CFA polymorphic functions use dynamic virtual dispatch with low runtime overhead (see Section~\ref{sec:eval}), it is not as low as \CC template inlining.
+Hence, it may be beneficial to provide a mechanism for performance-sensitive code.
+Two promising approaches are an @inline@ annotation at polymorphic function call sites to create a template specialization of the function (provided the code is visible) or placing an @inline@ annotation on polymorphic function definitions to instantiate a specialized version for some set of types (\CC template specialization).
+ These approaches are not mutually exclusive and allow performance optimizations to be applied only when necessary, without suffering global code bloat.
+In general, we believe separate compilation, producing smaller code, works well with loaded hardware caches, which may offset the benefit of larger inlined code.
 
 
 \section{Acknowledgments}
 
-The authors would like to recognize the design assistance of Glen Ditchfield, Richard Bilson, Thierry Delisle, Andrew Beach and Brice Dobry on the features described in this paper, and thank Magnus Madsen for feedback on the writing.
-Funding for this project has been provided by Huawei Ltd.\ (\url{http://www.huawei.com}), and Aaron Moss and Peter Buhr are partially funded by the Natural Sciences and Engineering Research Council of Canada.
+The authors would like to recognize the design assistance of Glen Ditchfield, Richard Bilson, Thierry Delisle, Andrew Beach, and Brice Dobry on the features described in this paper and thank Magnus Madsen for feedback on the writing.
+Funding for this project was provided by Huawei Ltd (\url{http://www.huawei.com}), and Aaron Moss and Peter Buhr were partially funded by the Natural Sciences and Engineering Research Council of Canada.
 
 {%
@@ -2931,4 +2990,5 @@
 
 
+\enlargethispage{1000pt}
 \subsection{\CFA}
 \label{s:CforallStack}
@@ -2997,4 +3057,5 @@
 
 
+\newpage
 \subsection{\CC}
 
Index: driver/Makefile.am
===================================================================
--- driver/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ driver/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,43 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am --
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 08:49:31 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Thu Aug  2 12:18:25 2018
+## Update Count     : 14
+###############################################################################
+
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+
+# applies to both programs
+AM_CXXFLAGS = @HOST_FLAGS@ -Wall -O2 -g -std=c++14 -I${abs_top_srcdir}/src
+
+# don't install cfa directly
+noinst_PROGRAMS = cfa
+
+# use
+install-exec-hook:
+	@test -z "$(CFA_BINDIR)" || $(MKDIR_P) "$(CFA_BINDIR)"
+	@echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) cfa '$(CFA_BINDIR)/$(CFA_NAME)'"; \
+	$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) cfa $(CFA_BINDIR)/$(CFA_NAME) || exit $$?
+
+uninstall-hook:
+	@echo " ( cd '$(CFA_BINDIR)' && rm -f $(CFA_NAME) )"; \
+	cd "$(CFA_BINDIR)" && rm -f $(CFA_NAME)
+
+cfa_SOURCES = cfa.cc
+
+# put into lib for now
+cc1libdir = ${CFA_LIBDIR}
+cc1lib_PROGRAMS = as cc1
+as_SOURCES = as.cc
+cc1_SOURCES = cc1.cc
+
+MAINTAINERCLEANFILES = $(CFA_BINDIR)/$(CFA_NAME) @CFA_PREFIX@/lib/${cc1lib_PROGRAMS}
Index: driver/Makefile.in
===================================================================
--- driver/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ driver/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,653 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+noinst_PROGRAMS = cfa$(EXEEXT)
+cc1lib_PROGRAMS = as$(EXEEXT) cc1$(EXEEXT)
+subdir = driver
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(cc1libdir)"
+PROGRAMS = $(cc1lib_PROGRAMS) $(noinst_PROGRAMS)
+am_as_OBJECTS = as.$(OBJEXT)
+as_OBJECTS = $(am_as_OBJECTS)
+as_LDADD = $(LDADD)
+am_cc1_OBJECTS = cc1.$(OBJEXT)
+cc1_OBJECTS = $(am_cc1_OBJECTS)
+cc1_LDADD = $(LDADD)
+am_cfa_OBJECTS = cfa.$(OBJEXT)
+cfa_OBJECTS = $(am_cfa_OBJECTS)
+cfa_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(as_SOURCES) $(cc1_SOURCES) $(cfa_SOURCES)
+DIST_SOURCES = $(as_SOURCES) $(cc1_SOURCES) $(cfa_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKEND_CC = @BACKEND_CC@
+BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFACC = @CFACC@
+CFACPP = @CFACPP@
+CFA_BACKEND_CC = @CFA_BACKEND_CC@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_FLAGS = @CFA_FLAGS@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_NAME = @CFA_NAME@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_DIR = @DRIVER_DIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+HOST_FLAGS = @HOST_FLAGS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBCFA_TARGET_DIRS = @LIBCFA_TARGET_DIRS@
+LIBCFA_TARGET_MAKEFILES = @LIBCFA_TARGET_MAKEFILES@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
+VERSION = @VERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+
+# applies to both programs
+AM_CXXFLAGS = @HOST_FLAGS@ -Wall -O2 -g -std=c++14 -I${abs_top_srcdir}/src
+cfa_SOURCES = cfa.cc
+
+# put into lib for now
+cc1libdir = ${CFA_LIBDIR}
+as_SOURCES = as.cc
+cc1_SOURCES = cc1.cc
+MAINTAINERCLEANFILES = $(CFA_BINDIR)/$(CFA_NAME) @CFA_PREFIX@/lib/${cc1lib_PROGRAMS}
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign driver/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign driver/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-cc1libPROGRAMS: $(cc1lib_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	@list='$(cc1lib_PROGRAMS)'; test -n "$(cc1libdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(cc1libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(cc1libdir)" || exit 1; \
+	fi; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(cc1libdir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(cc1libdir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-cc1libPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cc1lib_PROGRAMS)'; test -n "$(cc1libdir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(cc1libdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(cc1libdir)" && rm -f $$files
+
+clean-cc1libPROGRAMS:
+	-test -z "$(cc1lib_PROGRAMS)" || rm -f $(cc1lib_PROGRAMS)
+
+clean-noinstPROGRAMS:
+	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+
+as$(EXEEXT): $(as_OBJECTS) $(as_DEPENDENCIES) $(EXTRA_as_DEPENDENCIES) 
+	@rm -f as$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(as_OBJECTS) $(as_LDADD) $(LIBS)
+
+cc1$(EXEEXT): $(cc1_OBJECTS) $(cc1_DEPENDENCIES) $(EXTRA_cc1_DEPENDENCIES) 
+	@rm -f cc1$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
+
+cfa$(EXEEXT): $(cfa_OBJECTS) $(cfa_DEPENDENCIES) $(EXTRA_cfa_DEPENDENCIES) 
+	@rm -f cfa$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/as.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cc1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfa.Po@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(cc1libdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-cc1libPROGRAMS clean-generic clean-noinstPROGRAMS \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cc1libPROGRAMS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+	@$(NORMAL_INSTALL)
+	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-cc1libPROGRAMS
+	@$(NORMAL_INSTALL)
+	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
+.MAKE: install-am install-exec-am install-strip uninstall-am
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-cc1libPROGRAMS clean-generic clean-noinstPROGRAMS \
+	cscopelist-am ctags ctags-am distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-cc1libPROGRAMS \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-exec-hook install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-cc1libPROGRAMS \
+	uninstall-hook
+
+.PRECIOUS: Makefile
+
+
+# use
+install-exec-hook:
+	@test -z "$(CFA_BINDIR)" || $(MKDIR_P) "$(CFA_BINDIR)"
+	@echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) cfa '$(CFA_BINDIR)/$(CFA_NAME)'"; \
+	$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) cfa $(CFA_BINDIR)/$(CFA_NAME) || exit $$?
+
+uninstall-hook:
+	@echo " ( cd '$(CFA_BINDIR)' && rm -f $(CFA_NAME) )"; \
+	cd "$(CFA_BINDIR)" && rm -f $(CFA_NAME)
+
+# 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.
+.NOEXPORT:
Index: driver/as.cc
===================================================================
--- driver/as.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ driver/as.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,72 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// as.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug  1 10:49:42 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug  2 17:50:09 2018
+// Update Count     : 90
+// 
+
+#include <cstdio>										// perror
+#include <cstdlib>										// exit
+#include <fcntl.h>										// open
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/mman.h>									// mmap
+#include <string.h>
+
+//#define __DEBUG_H__
+
+int main( const int argc, const char * argv[] ) {
+	#ifdef __DEBUG_H__
+	for ( int i = 0; i < argc; i += 1 ) {
+		cerr << argv[i] << endl;
+	} // for
+	#endif // __DEBUG_H__
+
+	int fd = open( argv[argc - 1], O_RDWR );
+	if ( fd < 0 ) { perror( "open" ); exit( EXIT_FAILURE ); };
+
+	struct stat mystat = {};
+	if ( fstat( fd, &mystat ) ) { perror( "fstat" ); exit( EXIT_FAILURE ); };
+	off_t size = mystat.st_size;
+
+	char * start = (char *)mmap( NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
+	if ( start == (void *)-1 ) { perror( "mmap" ); exit( EXIT_FAILURE ); };
+
+	if ( char * cursor = strstr( start, ".Ldebug_info0:" ) ) { // debug information ?
+		// Expand file by one byte to hold 2 character Cforall language code.
+		if ( ftruncate( fd, size + 1 ) ) { perror( "ftruncate" ); exit( EXIT_FAILURE ); };
+
+		for ( int i = 0; i < 8; i += 1 ) {				// move N (magic) lines forward
+			cursor = strstr( cursor, "\n" ) + 1;
+		} // for
+
+		cursor -= 2;									// backup over "c\n" language value
+		if ( *(cursor - 1) != 'x' ) { fprintf( stderr, "invalid C language code\n" ); exit( EXIT_FAILURE ); };
+
+		memmove( cursor + 2, cursor + 1, start + size - cursor - 1 ); // move remaining text 1 character right
+
+		*(cursor) = '2';								// replace C language value with CFA
+		*(cursor + 1) = '5';
+	} // if
+
+	if ( munmap( start, size ) ) { perror( "munmap" ); exit( EXIT_FAILURE ); }; // update on disk
+
+	argv[0] = "as";
+	execvp( argv[0], (char * const *)argv );			// should not return
+	perror( "CFA Translator error: cpp level, execvp" );
+	exit( EXIT_FAILURE );								// tell gcc not to go any further
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "g++ -Wall -Wextra as.c -o as" //
+// End: //
Index: driver/cc1.cc
===================================================================
--- driver/cc1.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ driver/cc1.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,529 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// cc1.cc -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Fri Aug 26 14:23:51 2005
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 19 10:46:11 2018
+// Update Count     : 111
+//
+
+#include <iostream>
+using std::cerr;
+using std::endl;
+#include <string>
+using std::string;
+#include <cstdio>										// stderr, stdout, perror, fprintf
+#include <cstdlib>										// getenv, exit, mkstemp
+#include <unistd.h>										// execvp, fork, unlink
+#include <sys/wait.h>									// wait
+
+#include "config.h"										// configure info
+
+
+//#define __DEBUG_H__
+
+
+string compiler_name( CFA_BACKEND_CC );					// path/name of C compiler
+
+string D__GCC_X__( "-D__GCC_X__=" );
+string D__GCC_BPREFIX__( "-D__GCC_BPREFIX__=" );
+string D__CFA_FLAGPREFIX__( "-D__CFA_FLAG__=" );
+
+char tmpname[] = P_tmpdir "/CFAXXXXXX";
+int tmpfilefd = -1;
+
+
+bool prefix( string arg, string pre ) {
+	return arg.substr( 0, pre.size() ) == pre;
+} // prefix
+
+enum { NumSuffixes = 2 };
+const string suffixes[NumSuffixes] = { "cfa", "hfa", };
+
+bool suffix( string arg ) {
+	//std::cerr << arg << std::endl;
+	size_t dot = arg.find_last_of( "." );
+	//std::cerr << dot << " " << (dot != string::npos ? arg.substr( dot + 1 ) : "fred" ) << std::endl;
+	if ( dot == string::npos ) return false;
+	string sx = arg.substr( dot + 1 );
+	for ( int i = 0; i < NumSuffixes; i += 1 ) {
+		if ( sx == suffixes[i] ) return true;
+	} // for
+	return false;
+} // suffix
+
+
+void checkEnv( const char *args[], int &nargs ) {
+	char *value;
+
+	value = getenv( "__COMPILER__" );
+	if ( value != NULL ) {
+		compiler_name = value;
+		#ifdef __DEBUG_H__
+		cerr << "env arg:\"" << compiler_name << "\"" << endl;
+		#endif // __DEBUG_H__
+	} // if
+
+	value = getenv( "__GCC_MACHINE__" );
+	if ( value != NULL ) {
+		args[nargs] = ( *new string( value ) ).c_str(); // pass the argument along
+		#ifdef __DEBUG_H__
+		cerr << "env arg:\"" << args[nargs] << "\"" << endl;
+		#endif // __DEBUG_H__
+		nargs += 1;
+	} // if
+
+	value = getenv( "__GCC_VERSION__" );
+	if ( value != NULL ) {
+		args[nargs] = ( *new string( value ) ).c_str(); // pass the argument along
+		#ifdef __DEBUG_H__
+		cerr << "env arg:\"" << args[nargs] << "\"" << endl;
+		#endif // __DEBUG_H__
+		nargs += 1;
+	} // if
+} // checkEnv
+
+
+void rmtmpfile() {
+	if ( unlink( tmpname ) == -1 ) {					// remove tmpname
+		perror ( "CFA Translator error: cpp failed" );
+		exit( EXIT_FAILURE );
+	} // if
+	tmpfilefd = -1;										// mark closed
+} // rmtmpfile
+
+
+void sigTermHandler( __attribute__((unused)) int signal ) {
+	if ( tmpfilefd != -1 ) {							// RACE, file created ?
+		rmtmpfile();									// remove
+		exit( EXIT_FAILURE );							// terminate 
+	} // if
+} // sigTermHandler
+
+
+void Stage1( const int argc, const char * const argv[] ) {
+	int code;
+	int i;
+
+	string arg;
+	string bprefix;
+
+	const char *cpp_in = NULL;
+	const char *cpp_out = NULL;
+
+	bool CFA_flag = false;
+	bool cpp_flag = false;
+	const char *o_name = NULL;
+
+	const char *args[argc + 100];						// leave space for 100 additional cpp command line values
+	int nargs = 1;										// number of arguments in args list; 0 => command name
+	const char *cargs[20];								// leave space for 20 additional cfa-cpp command line values
+	int ncargs = 1;										// 0 => command name
+
+	signal( SIGINT,  sigTermHandler );
+	signal( SIGTERM, sigTermHandler );
+
+	#ifdef __DEBUG_H__
+	cerr << "Stage1" << endl;
+	#endif // __DEBUG_H__
+
+	// process all the arguments
+
+	checkEnv( args, nargs );							// arguments passed via environment variables
+
+	for ( i = 1; i < argc; i += 1 ) {
+		#ifdef __DEBUG_H__
+		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
+		#endif // __DEBUG_H__
+		arg = argv[i];
+		#ifdef __DEBUG_H__
+		cerr << "arg:\"" << arg << "\"" << endl;
+		#endif // __DEBUG_H__
+		if ( prefix( arg, "-" ) ) {
+			// strip g++ flags that are inappropriate or cause duplicates in subsequent passes
+
+			if ( arg == "-quiet" ) {
+			} else if ( arg == "-imultilib" || arg == "-imultiarch" ) {
+				i += 1;									// and the argument
+			} else if ( prefix( arg, "-A" ) ) {
+			} else if ( prefix( arg, "-D__GNU" ) ) {
+				//********
+				// GCC 5.6.0 SEPARATED THE -D FROM THE ARGUMENT!
+				//********
+			} else if ( arg == "-D" && prefix( argv[i + 1], "__GNU" ) ) {
+				i += 1;									// and the argument
+
+				// strip flags controlling cpp step
+
+			} else if ( arg == "-D__CPP__" ) {
+				cpp_flag = true;
+			} else if ( arg == "-D" && string( argv[i + 1] ) == "__CPP__" ) {
+				i += 1;									// and the argument
+				cpp_flag = true;
+			} else if ( arg == "-D__CFA_PREPROCESS__" ) {
+				CFA_flag = true;
+			} else if ( arg == "-D" && string( argv[i + 1] ) == "__CFA_PREPROCESS__" ) {
+				i += 1;									// and the argument
+				CFA_flag = true;
+			} else if ( prefix( arg, D__CFA_FLAGPREFIX__ ) ) {
+				cargs[ncargs] = ( *new string( arg.substr( D__CFA_FLAGPREFIX__.size() ) ) ).c_str();
+				ncargs += 1;
+			} else if ( arg == "-D" && prefix( argv[i + 1], D__CFA_FLAGPREFIX__.substr(2) ) ) {
+				cargs[ncargs] = ( *new string( string( argv[i + 1] ).substr( D__CFA_FLAGPREFIX__.size() - 2 ) ) ).c_str();
+				ncargs += 1;
+				i += 1;									// and the argument
+			// } else if ( prefix( arg, D__GCC_X__ ) ) {
+			// 	args[nargs] = "-x";
+			// 	nargs += 1;
+			// 	args[nargs] = ( *new string( arg.substr( D__GCC_X__.size() ) ) ).c_str(); // pass the flag along
+			// 	nargs += 1;
+			// } else if ( arg == "-D" && prefix( argv[i + 1], D__GCC_X__.substr(2) ) ) {
+			// 	args[nargs] = "-x";
+			// 	nargs += 1;
+			// 	args[nargs] = ( *new string( string( argv[i + 1] ).substr( D__GCC_X__.size() - 2 ) ) ).c_str(); // pass the flag along
+			// 	nargs += 1;
+			// 	i += 1;									// and the argument
+			} else if ( prefix( arg, D__GCC_BPREFIX__ ) ) {
+				bprefix = arg.substr( D__GCC_BPREFIX__.size() );
+			} else if ( arg == "-D" && prefix( argv[i + 1], D__GCC_BPREFIX__.substr(2) ) ) {
+				bprefix = string( argv[i + 1] ).substr( D__GCC_BPREFIX__.size() - 2 );
+				i += 1;									// and the argument
+
+			// all other flags
+
+			} else if ( arg == "-o" ) {
+				i += 1;
+				o_name = argv[i];
+			} else {
+				args[nargs] = argv[i];					// pass the flag along
+				nargs += 1;
+				// CPP flags with an argument
+				if ( arg == "-D" || arg == "-U" || arg == "-I" || arg == "-MF" || arg == "-MT" || arg == "-MQ" ||
+					 arg == "-include" || arg == "-imacros" || arg == "-idirafter" || arg == "-iprefix" ||
+					 arg == "-iwithprefix" || arg == "-iwithprefixbefore" || arg == "-isystem" || arg == "-isysroot" ) {
+					i += 1;
+					args[nargs] = argv[i];				// pass the argument along
+					nargs += 1;
+					#ifdef __DEBUG_H__
+					cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
+					#endif // __DEBUG_H__
+				} else if ( arg == "-MD" || arg == "-MMD" ) {
+					args[nargs] = "-MF";				// insert before file
+					nargs += 1;
+					i += 1;
+					args[nargs] = argv[i];				// pass the argument along
+					nargs += 1;
+					#ifdef __DEBUG_H__
+					cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
+					#endif // __DEBUG_H__
+				} // if
+			} // if
+		} else {										// obtain input and possibly output files
+			if ( cpp_in == NULL ) {
+				cpp_in = argv[i];
+				#ifdef __DEBUG_H__
+				cerr << "cpp_in:\"" << cpp_in << "\"" << endl;
+				#endif // __DEBUG_H__
+			} else if ( cpp_out == NULL ) {
+				cpp_out = argv[i];
+				#ifdef __DEBUG_H__
+				cerr << "cpp_out:\"" << cpp_out << "\""<< endl;
+				#endif // __DEBUG_H__
+			} else {
+				cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
+				exit( EXIT_FAILURE );
+			} // if
+		} // if
+	} // for
+
+	#ifdef __DEBUG_H__
+	cerr << "args:";
+	for ( i = 1; i < nargs; i += 1 ) {
+		cerr << " " << args[i];
+	} // for
+	if ( cpp_in != NULL ) cerr << " " << cpp_in;
+	if ( cpp_out != NULL ) cerr << " " << cpp_out;
+	cerr << endl;
+	#endif // __DEBUG_H__
+
+	if ( cpp_in == NULL ) {
+		cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	if ( cpp_flag ) {
+		// The -E flag is specified on the cfa command so only run the preprocessor and output is written to standard
+		// output or -o. The call to cfa has a -E so it does not have to be added to the argument list.
+
+		args[0] = compiler_name.c_str();
+		args[nargs] = cpp_in;
+		nargs += 1;
+		if ( o_name != NULL ) {							// location for output
+			args[nargs] = "-o";
+			nargs += 1;
+			args[nargs] = o_name;
+			nargs += 1;
+		} // if
+		args[nargs] = NULL;								// terminate argument list
+
+		#ifdef __DEBUG_H__
+		cerr << "nargs: " << nargs << endl;
+		for ( i = 0; args[i] != NULL; i += 1 ) {
+			cerr << args[i] << " ";
+		} // for
+		cerr << endl;
+		#endif // __DEBUG_H__
+
+		execvp( args[0], (char *const *)args );			// should not return
+		perror( "CFA Translator error: cpp level, execvp" );
+		exit( EXIT_FAILURE );
+	} // if
+
+	// Create a temporary file to store output of the C preprocessor.
+
+	tmpfilefd = mkstemp( tmpname );
+	if ( tmpfilefd == -1 ) {
+		perror( "CFA Translator error: cpp level, mkstemp" );
+		exit( EXIT_FAILURE );
+	} // if
+
+	#ifdef __DEBUG_H__
+	cerr << "tmpname:" << tmpname << " tmpfilefd:" << tmpfilefd << endl;
+	#endif // __DEBUG_H__
+
+	// Run the C preprocessor and save the output in tmpfile.
+
+	if ( fork() == 0 ) {								 // child process ?
+		// -o xxx.ii cannot be used to write the output file from cpp because no output file is created if cpp detects
+		// an error (e.g., cannot find include file). Whereas, output is always generated, even when there is an error,
+		// when cpp writes to stdout. Hence, stdout is redirected into the temporary file.
+		if ( freopen( tmpname, "w", stdout ) == NULL ) { // redirect stdout to tmpname
+			perror( "CFA Translator error: cpp level, freopen" );
+			exit( EXIT_FAILURE );
+		} // if
+
+		args[0] = compiler_name.c_str();
+		if ( suffix( cpp_in ) ) {
+			args[nargs] = "-x";
+			nargs += 1;
+			args[nargs] = "c";
+			nargs += 1;
+		} // if
+		args[nargs] = cpp_in;							// input to cpp
+		nargs += 1;
+		args[nargs] = NULL;								// terminate argument list
+
+		#ifdef __DEBUG_H__
+		cerr << "cpp nargs: " << nargs << endl;
+		for ( i = 0; args[i] != NULL; i += 1 ) {
+			cerr << args[i] << " ";
+		} // for
+		cerr << endl;
+		#endif // __DEBUG_H__
+
+		execvp( args[0], (char *const *)args );			// should not return
+		perror( "CFA Translator error: cpp level, execvp" );
+		exit( EXIT_FAILURE );
+	} // if
+
+	wait( &code );										// wait for child to finish
+
+	#ifdef __DEBUG_H__
+	cerr << "return code from cpp:" << WEXITSTATUS(code) << endl;
+	#endif // __DEBUG_H__
+
+	if ( WIFSIGNALED(code) != 0 ) {						// child failed ?
+		rmtmpfile();									// remove tmpname
+		cerr << "CFA Translator error: cpp failed with signal " << WTERMSIG(code) << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	if ( WEXITSTATUS(code) != 0 ) {						// child error ?
+		rmtmpfile();									// remove tmpname
+		exit( WEXITSTATUS( code ) );					// do not continue
+	} // if
+
+	// If -CFA flag specified, run the cfa-cpp preprocessor on the temporary file, and output is written to standard
+	// output.  Otherwise, run the cfa-cpp preprocessor on the temporary file and save the result into the output file.
+
+	if ( fork() == 0 ) {								// child runs CFA
+		cargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
+
+		// Source file-name used to generate routine names containing global initializations for TU.
+		cargs[ncargs] = ( *new string( "-F" ) ).c_str();
+		ncargs += 1;
+		cargs[ncargs] = ( *new string( string( cpp_in ) ) ).c_str();
+		ncargs += 1;
+
+		cargs[ncargs] = tmpname;
+		ncargs += 1;
+		if ( o_name != NULL ) {
+			cargs[ncargs] = o_name;
+			ncargs += 1;
+		} else if ( ! CFA_flag ) {						// run cfa-cpp ?
+			cargs[ncargs] = cpp_out;
+			ncargs += 1;
+		} // if
+		cargs[ncargs] = NULL;							// terminate argument list
+
+		#ifdef __DEBUG_H__
+		cerr << "cfa-cpp ncargs: " << o_name << " " << CFA_flag << " " << ncargs << endl;
+		for ( i = 0; cargs[i] != NULL; i += 1 ) {
+			cerr << cargs[i] << " ";
+		} // for
+		cerr << endl;
+		#endif // __DEBUG_H__
+
+		execvp( cargs[0], (char * const *)cargs );		// should not return
+		perror( "CFA Translator error: cpp level, execvp" );
+		exit( EXIT_FAILURE );
+	} // if
+
+	wait( &code );										// wait for child to finish
+
+	#ifdef __DEBUG_H__
+	cerr << "return code from cfa-cpp:" << WEXITSTATUS(code) << endl;
+	#endif // __DEBUG_H__
+
+	// Must unlink here because file must exist across execvp.
+	rmtmpfile();										// remove tmpname
+
+	if ( WIFSIGNALED(code) ) {							// child failed ?
+		cerr << "CFA Translator error: cfa-cpp failed with signal " << WTERMSIG(code) << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	exit( WEXITSTATUS(code) );
+} // Stage1
+
+
+void Stage2( const int argc, const char * const * argv ) {
+	int i;
+
+	string arg;
+
+	const char *cpp_in = NULL;
+
+	const char *args[argc + 100];						// leave space for 100 additional cfa command line values
+	int nargs = 1;										// number of arguments in args list; 0 => command name
+
+	#ifdef __DEBUG_H__
+	cerr << "Stage2" << endl;
+	#endif // __DEBUG_H__
+
+	// process all the arguments
+
+	checkEnv( args, nargs );							// arguments passed via environment variables
+
+	for ( i = 1; i < argc; i += 1 ) {
+		#ifdef __DEBUG_H__
+		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
+		#endif // __DEBUG_H__
+		arg = argv[i];
+		#ifdef __DEBUG_H__
+		cerr << "arg:\"" << arg << "\"" << endl;
+		#endif // __DEBUG_H__
+		if ( prefix( arg, "-" ) ) {
+			// strip inappropriate flags
+
+			if ( arg == "-quiet" || arg == "-version" || arg == "-fpreprocessed" ||
+				// Currently CFA does not suppose precompiled .h files.
+				prefix( arg, "--output-pch" ) ) {
+
+				// strip inappropriate flags with an argument
+
+			} else if ( arg == "-auxbase" || arg == "-auxbase-strip" || arg == "-dumpbase" ) {
+				i += 1;
+				#ifdef __DEBUG_H__
+				cerr << "arg:\"" << argv[i] << "\"" << endl;
+				#endif // __DEBUG_H__
+
+				// all other flags
+
+			} else {
+				args[nargs] = argv[i];					// pass the flag along
+				nargs += 1;
+				if ( arg == "-o" ) {
+					i += 1;
+					args[nargs] = argv[i];				// pass the argument along
+					nargs += 1;
+					#ifdef __DEBUG_H__
+					cerr << "arg:\"" << argv[i] << "\"" << endl;
+					#endif // __DEBUG_H__
+				} // if
+			} // if
+		} else {										// obtain input and possibly output files
+			if ( cpp_in == NULL ) {
+				cpp_in = argv[i];
+				#ifdef __DEBUG_H__
+				cerr << "cpp_in:\"" << cpp_in << "\"" << endl;
+				#endif // __DEBUG_H__
+			} else {
+				cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
+				exit( EXIT_FAILURE );
+			} // if
+		} // if
+	} // for
+
+	#ifdef __DEBUG_H__
+	cerr << "args:";
+	for ( i = 1; i < nargs; i += 1 ) {
+		cerr << " " << args[i];
+	} // for
+	cerr << endl;
+	if ( cpp_in != NULL ) cerr << " " << cpp_in;
+	#endif // __DEBUG_H__
+
+	args[0] = compiler_name.c_str();
+	args[nargs] = "-S";									// only compile and put assembler output in specified file
+	nargs += 1;
+	args[nargs] = cpp_in;
+	nargs += 1;
+	args[nargs] = NULL;									// terminate argument list
+
+	#ifdef __DEBUG_H__
+	cerr << "stage2 nargs: " << nargs << endl;
+	for ( i = 0; args[i] != NULL; i += 1 ) {
+		cerr << args[i] << " ";
+	} // for
+	cerr << endl;
+	#endif // __DEBUG_H__
+
+	execvp( args[0], (char * const *)args );			// should not return
+	perror( "CFA Translator error: cpp level, execvp" );
+	exit( EXIT_FAILURE );								// tell gcc not to go any further
+} // Stage2
+
+
+int main( const int argc, const char * const argv[], __attribute__((unused)) const char * const env[] ) {
+	#ifdef __DEBUG_H__
+	for ( int i = 0; env[i] != NULL; i += 1 ) {
+		cerr << env[i] << endl;
+	} // for
+	#endif // __DEBUG_H__
+
+	string arg = argv[1];
+
+	// Currently, stage 1 starts with flag -E and stage 2 with flag -fpreprocessed.
+
+	if ( arg == "-E" ) {
+		Stage1( argc, argv );
+	} else if ( arg == "-fpreprocessed" ) {
+		Stage2( argc, argv );
+	} else {
+		cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
+		exit( EXIT_FAILURE );
+	} // if
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: driver/cfa.cc
===================================================================
--- driver/cfa.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ driver/cfa.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,569 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// cfa.cc --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Aug 20 13:44:49 2002
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Aug 10 18:17:58 2018
+// Update Count     : 259
+//
+
+#include <iostream>
+#include <cstdio>										// perror
+#include <cstdlib>										// putenv, exit
+#include <unistd.h>										// execvp
+#include <string>										// STL version
+#include <string.h>										// strcmp
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "Common/SemanticError.h"
+#include "config.h"										// configure info
+
+using std::cerr;
+using std::endl;
+using std::string;
+using std::to_string;
+
+
+//#define __DEBUG_H__
+
+
+bool prefix( string arg, string pre ) {
+	return arg.substr( 0, pre.size() ) == pre;
+} // prefix
+
+enum { NumSuffixes = 2 };
+const string suffixes[NumSuffixes] = { "cfa", "hfa", };
+
+bool suffix( string arg ) {
+	//std::cerr << arg << std::endl;
+	size_t dot = arg.find_last_of( "." );
+	//std::cerr << dot << " " << (dot != string::npos ? arg.substr( dot + 1 ) : "fred" ) << std::endl;
+	if ( dot == string::npos ) return false;
+	string sx = arg.substr( dot + 1 );
+	for ( int i = 0; i < NumSuffixes; i += 1 ) {
+		if ( sx == suffixes[i] ) return true;
+	} // for
+	return false;
+} // suffix
+
+
+void shuffle( const char *args[], int S, int E, int N ) {
+	// S & E index 1 passed the end so adjust with -1
+	#ifdef __DEBUG_H__
+	cerr << "shuffle:" << S << " " << E << " " << N << endl;
+	#endif // __DEBUG_H__
+	for ( int j = E-1 + N; j > S-1 + N; j -=1 ) {
+		#ifdef __DEBUG_H__
+		cerr << "\t" << j << " " << j-N << endl;
+		#endif // __DEBUG_H__
+		args[j] = args[j-N];
+	} // for
+} // shuffle
+
+static inline bool dirExists(const string & path) {
+    struct stat info;
+    if(stat( path.c_str(), &info ) != 0)
+        return false;
+    else if(info.st_mode & S_IFDIR)
+        return true;
+    else
+        return false;
+} //dirExists
+
+
+#define str(s) #s
+
+int main( int argc, char *argv[] ) {
+	string Version( CFA_VERSION_LONG );					// current version number from CONFIG
+	string Major( str( CFA_VERSION_MAJOR ) ), Minor( str( CFA_VERSION_MINOR ) ), Patch( str( CFA_VERSION_PATCH ) );
+
+	string installincdir( CFA_INCDIR );                         // fixed location of include files
+	string installlibdir( CFA_LIBDIR );                         // fixed location of cc1 and cfa-cpp commands when installed
+	string srcdriverdir ( TOP_BUILDDIR "driver");                // fixed location of cc1 and cfa-cpp commands when in tree
+
+	string heading;										// banner printed at start of cfa compilation
+	string arg;											// current command-line argument during command-line parsing
+	string Bprefix;										// path where gcc looks for compiler command steps
+	string langstd;										// language standard
+
+	string compiler_path( CFA_BACKEND_CC );				// path/name of C compiler
+	string compiler_name;								// name of C compiler
+
+	bool nonoptarg = false;								// indicates non-option argument specified
+	bool link = true;									// linking as well as compiling
+	bool verbose = false;								// -v flag
+	bool quiet = false;									// -quiet flag
+	bool debug = true;									// -debug flag
+	bool help = false;									// -help flag
+	bool CFA_flag = false;								// -CFA flag
+	bool cpp_flag = false;								// -E or -M flag, preprocessor only
+	bool std_flag = false;								// -std= flag
+	bool noincstd_flag = false;							// -no-include-stdhdr= flag
+	bool xflag = false;									// user supplied -x flag
+	bool debugging __attribute(( unused )) = false;		// -g flag
+	bool m32 = false;                                    // -m32 flag
+	bool m64 = false;                                    // -m64 flag
+	bool intree = false;
+
+	const char *args[argc + 100];						// cfa command line values, plus some space for additional flags
+	int sargs = 1;										// starting location for arguments in args list
+	int nargs = sargs;									// number of arguments in args list; 0 => command name
+
+	const char *libs[argc + 20];						// non-user libraries must come separately, plus some added libraries and flags
+	int nlibs = 0;
+
+	#ifdef __DEBUG_H__
+	cerr << "CFA:" << endl;
+	#endif // __DEBUG_H__
+
+	// process command-line arguments
+
+	for ( int i = 1; i < argc; i += 1 ) {
+		#ifdef __DEBUG_H__
+		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
+		#endif // __DEBUG_H__
+		arg = argv[i];									// convert to string value
+		#ifdef __DEBUG_H__
+		cerr << "arg:\"" << arg << "\"" << endl;
+		#endif // __DEBUG_H__
+		if ( prefix( arg, "-" ) ) {
+			// pass through arguments
+
+			if ( arg == "-Xlinker" || arg == "-o" ) {
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+				i += 1;
+				if ( i == argc ) continue;				// next argument available ?
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+			} else if ( arg == "-XCFA" ) {				// CFA pass through
+				i += 1;
+				args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + argv[i] ) ).c_str();
+				nargs += 1;
+
+				// CFA specific arguments
+
+			} else if ( arg == "-CFA" ) {
+				CFA_flag = true;						// strip the -CFA flag
+				link = false;
+				args[nargs] = "-E";						// replace the argument with -E
+				nargs += 1;
+			} else if ( arg == "-debug" ) {
+				debug = true;							// strip the debug flag
+			} else if ( arg == "-nodebug" ) {
+				debug = false;							// strip the nodebug flag
+			} else if ( arg == "-quiet" ) {
+				quiet = true;							// strip the quiet flag
+			} else if ( arg == "-noquiet" ) {
+				quiet = false;							// strip the noquiet flag
+			} else if ( arg == "-help" ) {
+				help = true;							// strip the help flag
+			} else if ( arg == "-nohelp" ) {
+				help = false;							// strip the nohelp flag
+			} else if ( arg == "-no-include-stdhdr" ) {
+				noincstd_flag = true;					// strip the no-include-stdhdr flag
+			} else if ( arg == "-in-tree" ) {
+				intree = true;
+			} else if ( arg == "-compiler" ) {
+				// use the user specified compiler
+				i += 1;
+				if ( i == argc ) continue;				// next argument available ?
+				compiler_path = argv[i];
+				if ( putenv( (char *)( *new string( string( "__U_COMPILER__=" ) + argv[i]) ).c_str() ) != 0 ) {
+					cerr << argv[0] << " error, cannot set environment variable." << endl;
+					exit( EXIT_FAILURE );
+				} // if
+
+				// C specific arguments
+
+			} else if ( arg == "-v" ) {
+				verbose = true;							// verbosity required
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+			} else if ( arg == "-g" ) {
+				debugging = true;						// symbolic debugging required
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+			} else if ( prefix( arg, "-std=" ) || prefix( arg, "--std=" ) ) {
+				std_flag = true;						// -std=XX provided
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+			} else if ( arg == "-x" ) {
+				xflag = true;
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+				i += 1;									// advance to argument
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+				// args[nargs] = ( *new string( string("-D__GCC_X__=") + argv[i] ) ).c_str(); // add the argument for -x
+				// nargs += 1;
+			} else if ( prefix( arg, "-x" ) ) {
+				xflag = true;
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+				// args[nargs] = ( *new string( string("-D__GCC_X__=") + arg.substr(2) ) ).c_str(); // add the argument for -x
+				// nargs += 1;
+			} else if ( arg == "-w" ) {
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+				args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str(); // add the argument for cfa-cpp
+				nargs += 1;
+			} else if ( prefix( arg, "-W" ) ) {			// check before next tests
+				if ( arg == "-Werror" || arg == "-Wall" ) {
+					args[nargs] = argv[i];				// pass the argument along
+					nargs += 1;
+					args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str(); // add the argument for cfa-cpp
+					nargs += 1;
+				} else {
+					unsigned int adv = prefix( arg, "-Wno-" ) ? 5 : 2;
+					args[nargs] = argv[i];				// conditionally pass the argument along
+					const char * warning = argv[i] + adv;	  // extract warning
+					if ( SemanticWarning_Exist( warning ) ) { // replace the argument for cfa-cpp
+						args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str();
+					} // if
+					nargs += 1;
+				} // if
+			} else if ( prefix( arg, "-B" ) ) {
+				Bprefix = arg.substr(2);				// strip the -B flag
+				args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
+				nargs += 1;
+			} else if ( prefix( arg, "-b" ) ) {
+				if ( arg.length() == 2 ) {				// separate argument ?
+					i += 1;
+					if ( i == argc ) continue;			// next argument available ?
+					arg += argv[i];						// concatenate argument
+				} // if
+				// later versions of gcc require the -b option to appear at the start of the command line
+				shuffle( args, sargs, nargs, 1 );		// make room at front of argument list
+				args[sargs] = ( *new string( arg ) ).c_str(); // pass the argument along
+				if ( putenv( (char *)( *new string( string( "__GCC_MACHINE__=" ) + arg ) ).c_str() ) != 0 ) {
+					cerr << argv[0] << " error, cannot set environment variable." << endl;
+					exit( EXIT_FAILURE );
+				} // if
+				sargs += 1;
+				nargs += 1;
+			} else if ( prefix( arg, "-V" ) ) {
+				if ( arg.length() == 2 ) {				// separate argument ?
+					i += 1;
+					if ( i == argc ) continue;			// next argument available ?
+					arg += argv[i];						// concatenate argument
+				} // if
+				// later versions of gcc require the -V option to appear at the start of the command line
+				shuffle( args, sargs, nargs, 1 );		// make room at front of argument list
+				args[sargs] = ( *new string( arg ) ).c_str(); // pass the argument along
+				if ( putenv( (char *)( *new string( string( "__GCC_VERSION__=" ) + arg ) ).c_str() ) != 0 ) {
+					cerr << argv[0] << " error, cannot set environment variable." << endl;
+					exit( EXIT_FAILURE );
+				} // if
+				sargs += 1;
+				nargs += 1;
+			} else if ( arg == "-c" || arg == "-S" || arg == "-E" || arg == "-M" || arg == "-MM" ) {
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+				if ( arg == "-E" || arg == "-M" || arg == "-MM" ) {
+					cpp_flag = true;					// cpp only
+				} // if
+				link = false;                           // no linkage required
+			} else if ( arg[1] == 'l' ) {
+				// if the user specifies a library, load it after user code
+				libs[nlibs] = argv[i];
+				nlibs += 1;
+			} else if ( arg == "-m32" ) {
+				m32 = true;
+				m64 = false;
+				args[nargs] = argv[i];
+				nargs += 1;
+			} else if ( arg == "-m64" ) {
+				m64 = true;
+				m32 = false;
+				args[nargs] = argv[i];
+				nargs += 1;
+			} else {
+				// concatenate any other arguments
+				args[nargs] = argv[i];
+				nargs += 1;
+			} // if
+		} else {
+			bool opt = false;
+			if ( ! xflag && suffix( arg ) ) {
+				args[nargs] = "-x";
+				nargs += 1;
+				args[nargs] = "c";
+				nargs += 1;
+				// args[nargs] = ( *new string( string("-D__GCC_X__=c") ) ).c_str(); // add the argument for -x
+				// nargs += 1;
+				opt = true;
+			} // if
+			// concatenate other arguments
+			args[nargs] = argv[i];
+			nargs += 1;
+			if ( opt ) {
+				args[nargs] = "-x";
+				nargs += 1;
+				args[nargs] = "none";
+				nargs += 1;
+				// args[nargs] = ( *new string( string("-D__GCC_X__=none") ) ).c_str(); // add the argument for -x
+				// nargs += 1;
+			} // if
+			nonoptarg = true;
+			xflag = false;
+		} // if
+	} // for
+
+	#ifdef __x86_64__
+	args[nargs] = "-mcx16";								// allow double-wide CAA
+	nargs += 1;
+	#endif // __x86_64__
+
+	#ifdef __DEBUG_H__
+	cerr << "args:";
+	for ( int i = 1; i < nargs; i += 1 ) {
+		cerr << " " << args[i];
+	} // for
+	cerr << endl;
+	#endif // __DEBUG_H__
+
+	if ( cpp_flag && CFA_flag ) {
+		cerr << argv[0] << " error, cannot use -E and -CFA flags together." << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	// add the CFA include-library paths, which allow direct access to header files without directory qualification
+	if( !intree ) {
+		args[nargs] = "-I" CFA_INCDIR;
+		nargs += 1;
+		if ( ! noincstd_flag ) {							// do not use during build
+			args[nargs] = "-I" CFA_INCDIR "/stdhdr";
+			nargs += 1;
+		} // if
+		args[nargs] = "-I" CFA_INCDIR "/concurrency";
+		nargs += 1;
+		args[nargs] = "-I" CFA_INCDIR "/containers";
+		nargs += 1;
+	} else {
+		args[nargs] = "-I" TOP_SRCDIR "libcfa/src";
+		nargs += 1;
+		if ( ! noincstd_flag ) {							// do not use during build
+			args[nargs] = "-I" TOP_SRCDIR "libcfa/src" "/stdhdr";
+			nargs += 1;
+		} // if
+		args[nargs] = "-I" TOP_SRCDIR "libcfa/src" "/concurrency";
+		nargs += 1;
+		args[nargs] = "-I" TOP_SRCDIR "libcfa/src" "/containers";
+		nargs += 1;
+	}
+
+	// add stdbool to get defines for bool/true/false
+	args[nargs] = "-imacros";
+	nargs += 1;
+	args[nargs] = "stdbool.h";
+	nargs += 1;
+
+	string libbase;
+	if( !intree ) {
+		libbase = CFA_LIBDIR;
+	} else {
+		libbase = TOP_BUILDDIR "libcfa/";
+		args[nargs] = "-D__CFA_FLAG__=-t";
+		nargs += 1;
+	}
+
+	const char * const arch = m32 ? CFA_32_CPU : (m64 ? CFA_64_CPU : CFA_DEFAULT_CPU);
+	const char * config = debug ? "debug": "nodebug";
+	string libdir = libbase + arch + "-" + config;
+	if( !dirExists(libdir) ) {
+		cerr << argv[0] << " internal error, configuration " << config << " not installed." << endl;
+		cerr << "Was looking for " << libdir << endl;
+		libdir = libbase + arch + "-" + "nolib";
+	}
+
+	if( !dirExists(libdir) ) {
+		cerr << argv[0] << " internal error, cannot find prelude directory." << endl;
+		cerr << "Was looking for " << libdir << endl;
+		exit( EXIT_FAILURE );
+	}
+
+	args[nargs] = ( *new string( string("-D__CFA_FLAG__=--prelude-dir=" ) + libdir + (intree ? "/prelude" : "")) ).c_str();
+	nargs += 1;
+
+	if ( link ) {
+		args[nargs] = "-Xlinker";
+		nargs += 1;
+		args[nargs] = "--undefined=__cfaabi_dbg_bits_write";
+		nargs += 1;
+		args[nargs] = "-Xlinker";
+		nargs += 1;
+		args[nargs] = "--undefined=__cfaabi_interpose_startup";
+		nargs += 1;
+		args[nargs] = "-Xlinker";
+		nargs += 1;
+		args[nargs] = "--undefined=__cfaabi_appready_startup";
+		nargs += 1;
+		args[nargs] = "-Xlinker";
+		nargs += 1;
+		args[nargs] = "--undefined=__cfaabi_dbg_record";
+		nargs += 1;
+
+		// include the cfa library in case it's needed
+		args[nargs] = ( *new string( string("-L" ) + libdir + (intree ? "/src" : "")) ).c_str();
+		nargs += 1;
+		args[nargs] = "-lcfa";
+		nargs += 1;
+		args[nargs] = "-lpthread";
+		nargs += 1;
+		args[nargs] = "-ldl";
+		nargs += 1;
+		args[nargs] = "-lrt";
+		nargs += 1;
+	} // if
+
+	// Add exception flags (unconditionally)
+	args[nargs] = "-fexceptions";
+	nargs += 1;
+
+	// add the correct set of flags based on the type of compile this is
+
+	args[nargs] = ( *new string( string("-D__CFA_MAJOR__=") + Major ) ).c_str();
+	nargs += 1;
+	args[nargs] = ( *new string( string("-D__CFA_MINOR__=") + Minor ) ).c_str();
+	nargs += 1;
+	args[nargs] = ( *new string( string("-D__CFA_PATCH__=") + Patch ) ).c_str();
+	nargs += 1;
+	args[nargs] = "-D__CFA__";
+	nargs += 1;
+	args[nargs] = "-D__CFORALL__";
+	nargs += 1;
+	args[nargs] = "-D__cforall";
+	nargs += 1;
+
+	if ( cpp_flag ) {
+		args[nargs] = "-D__CPP__";
+		nargs += 1;
+	} // if
+
+	shuffle( args, sargs, nargs, 1 );					// make room at front of argument list
+	nargs += 1;
+	if ( CFA_flag ) {
+		args[sargs] = "-D__CFA_FLAG__=-N";
+		args[nargs] = "-D__CFA_PREPROCESS_";
+		nargs += 1;
+	} else {
+		args[sargs] = "-D__CFA_FLAG__=-L";
+	} // if
+	sargs += 1;
+
+	if ( debug ) {
+		heading += " (debug)";
+		args[nargs] = "-D__CFA_DEBUG__";
+		nargs += 1;
+	} else {
+		heading += " (no debug)";
+	} // if
+
+	if ( Bprefix.length() == 0 ) {
+		Bprefix = !intree ? installlibdir : srcdriverdir;
+		args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
+		nargs += 1;
+	} // if
+
+	args[nargs] = "-Xlinker";							// used by backtrace
+	nargs += 1;
+	args[nargs] = "-export-dynamic";
+	nargs += 1;
+
+	// execute the compilation command
+
+	args[0] = compiler_path.c_str();					// set compiler command for exec
+	// find actual name of the compiler independent of the path to it
+	int p = compiler_path.find_last_of( '/' );			// scan r -> l for first '/'
+	if ( p == -1 ) {
+		compiler_name = compiler_path;
+	} else {
+		compiler_name = *new string( compiler_path.substr( p + 1 ) );
+	} // if
+
+	if ( prefix( compiler_name, "gcc" ) ) {				// allow suffix on gcc name
+		args[nargs] = "-no-integrated-cpp";
+		nargs += 1;
+		args[nargs] = "-Wno-deprecated";
+		nargs += 1;
+		if ( ! std_flag ) {								// default c11, if none specified
+			args[nargs] = "-std=gnu11";
+			nargs += 1;
+		} // if
+		args[nargs] = "-fgnu89-inline";
+		nargs += 1;
+		args[nargs] = "-D__int8_t_defined";				// prevent gcc type-size attributes
+		nargs += 1;
+		args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
+		nargs += 1;
+		args[nargs] = "-lm";
+		nargs += 1;
+	} else {
+		cerr << argv[0] << " error, compiler \"" << compiler_name << "\" unsupported." << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	for ( int i = 0; i < nlibs; i += 1 ) {				// copy non-user libraries after all user libraries
+		args[nargs] = libs[i];
+		nargs += 1;
+	} // for
+
+	args[nargs] = NULL;									// terminate with NULL
+
+	#ifdef __DEBUG_H__
+	cerr << "nargs: " << nargs << endl;
+	cerr << "args:" << endl;
+	for ( int i = 0; args[i] != NULL; i += 1 ) {
+		cerr << " \"" << args[i] << "\"" << endl;
+	} // for
+	#endif // __DEBUG_H__
+
+	if ( ! quiet ) {
+		cerr << "CFA " << "Version " << Version << heading << endl;
+
+		if ( help ) {
+			cerr <<
+				"-debug\t\t\t: use cfa runtime with debug checking" << endl <<
+				"-help\t\t\t: print this help message" << endl <<
+				"-quiet\t\t\t: print no messages from the cfa command" << endl <<
+				"-CFA\t\t\t: run the cpp preprocessor and the cfa-cpp translator" << endl <<
+				"-XCFA -cfa-cpp-flag\t: pass next flag as-is to the cfa-cpp translator" << endl <<
+				"...\t\t\t: any other " << compiler_name << " flags" << endl;
+		} // if
+	} // if
+
+	if ( verbose ) {
+		if ( argc == 2 ) exit( EXIT_SUCCESS );			// if only the -v flag is specified, do not invoke gcc
+
+		for ( int i = 0; args[i] != NULL; i += 1 ) {
+			cerr << args[i] << " ";
+		} // for
+		cerr << endl;
+	} // if
+
+	if ( ! nonoptarg ) {
+		cerr << argv[0] << " error, no input files" << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	// execute the command and return the result
+
+	execvp( args[0], (char *const *)args );				// should not return
+	perror( "CFA Translator error: cfa level, execvp" );
+	exit( EXIT_FAILURE );
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: examples/ArrayN.c
===================================================================
--- examples/ArrayN.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/ArrayN.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+#include <fstream.hfa>
+
+// [unsigned, unsigned] offset_to_index(unsigned offset, unsigned sx, unsigned sy)
+// {
+//     return [offset / sx, offset % sy];
+// }
+
+forall(otype index_t)
+index_t offset_to_index(unsigned offset, index_t size)
+{
+    return [offset / size.0, offset % size.1];
+}
+
+int main(int argc, char* argv[])
+{
+    unsigned x = 0, y = 0, i = 0;
+    unsigned sx = 4, sy = 4;
+
+    i = 6;
+    [x, y] = offset_to_index(6, [sx, sy]);
+
+    sout | x | ' ' | y | endl;
+
+    return 0;
+}
Index: examples/Attributes.c
===================================================================
--- examples/Attributes.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/Attributes.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,92 @@
+// I Compile-time resolution
+// =========================
+// 
+// 1. an isolated name, where the argument is implicitly determined by the result context
+// 
+//    @max
+// 
+// 2. a direct application to a manifest otype
+// 
+//    @max( int )
+// 
+// 3. constraining a otype variable; the application is implicitly performed at the call site as in (2)
+// 
+//    forall( otype T | { T @max( T ); } ) T x( T t );
+// 
+// 
+// II Run-time resolution
+// ======================
+// 
+// 1. an indirect reference, where the argument is implicitly determined by the result context
+// 
+//    attr_var = &@max;
+//    x = (*attr_var);
+// 
+// 2. an indirect application to a manifest otype
+// 
+//    (*attr_var)( int )
+// 
+// 3. a direct application to a otype variable
+// 
+//    @max( T )
+// 
+// Under what circumstances can this be done at compile/link time?
+// 
+// 
+// III Declaration forms
+// =====================
+// 
+// 1. monomorphic with implicit argument
+// 
+//    int @max;
+// 
+// 2. monomorphic with explicit argument
+// 
+//    int @max( int );
+// 
+// 3. polymorphic
+// 
+//    forall( otype T | constraint( T ) ) int @attr( T );
+
+int @max = 3;
+
+int main() {
+    int x;
+    otype @otype(otype t);									// compiler intrinsic
+    otype @widest(otype t);
+    @otype(x) *y;										// gcc: otypeof(x) *y;
+//    const @widest(double) *w;							// gcc: const otypeof(x) *w;
+//    * @otype(3 + 4) z;									// cfa declaration syntax
+    y = @max;		
+    z = @max(x) + @size(int);
+    y = @min(3 + 4);
+    if ( @const(x) ) { }
+    if ( @volatile(y) ) { }
+    if ( @extern(y) ) { }
+    if ( @static(y) ) { }
+    @max;
+}
+
+int @foo(int) {
+    return 7;
+}
+
+int @voon;
+double @voon;
+
+int @bort(int);
+int @bort(double);
+
+void g( int );
+
+void f() {
+	float x;
+	double x;
+	@bort(x);
+	@bort(int);
+	g( @voon );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: examples/Initialization.c
===================================================================
--- examples/Initialization.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/Initialization.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,41 @@
+// Cforall extensions
+
+int * x11 = 0, x12 = 0;
+int * x21 = 0, x22 = 0;
+
+[20] int y1, y2 = { 1, 2, 3 };
+
+// designators
+
+struct {
+	[int] w;
+} a = { .w : [2] };
+
+struct { int a[3], b; } w [] = { [0].a : {1}, [0].b : 3, [1].a[0] : 2 };
+
+struct {
+	int f1, f2, f3;
+	struct { int g1, g2, g3; } f4[4];
+} v7 = {
+  .f1 : 4,
+  f2 : 3,
+  .f4[2] : {
+	  .g1 : 3,
+	  g3 : 0,
+	},
+  .f4[3].g3 : 7,
+};
+
+struct point { int x; int z; struct {int y1, y2, y3;} y; int w;};
+struct quintet { int v, w, x, y, z;};
+
+int main() {
+	struct point p1 = { x : 3 };
+	struct point p2 = { 3, 4 };
+	struct point p3 = { .[x,z] : 5, y : { .[y3,y1] : 6, 17 } };
+	struct point p4 = { w : 5, 4 };
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: examples/Initialization2.c
===================================================================
--- examples/Initialization2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/Initialization2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,15 @@
+int a = 3;
+struct { int x; int y; } z = { 3, 7 };      /* OK */
+struct { int x; int y; } z1 = { .[x,y]:3 }; /* OK */
+struct { int x; int y; } z2 = { y:3, x:4 }; /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { x:3, y:{y1:4, y2:5} };  /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { y:{y2:9, y1:8}, x:7 };  /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { x:7, {y2:9, y1:8} };  /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { 3, {4, 5} };   /* OK */
+//struct { int x; struct { int y1; int y2; } } z3 = {4, {5,6}};
+//struct { int x; struct { int y1; int y2; } y; } z4 = { y:{4,5}, a:3 };
+//struct { int x; struct { int y1; int y2; } y; } z5 = { a:3, {4,5}};
+//int x[20] = { [10]: 4 };
+struct t { int a, b; };
+struct t x = { b:4, a:3 };
+struct { int x; int y; } z6= {5,6,4};  /* (should be an) error */
Index: examples/Makefile.example
===================================================================
--- examples/Makefile.example	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/Makefile.example	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,42 @@
+CFA ?= ../driver/cfa-cpp
+CFAOPT ?= -a
+OUTPUT ?= Output
+EXPECT ?= Expect
+OUTPUTDIR ?= ${OUTPUT}${CFAOPT}
+EXPECTDIR ?= ${EXPECT}${CFAOPT}
+EXAMPLES = ${wildcard *.c}
+OUTPUTS = ${addprefix ${OUTPUTDIR}/,${EXAMPLES:.c=.txt}}
+
+#.SILENT :
+
+all :
+	+for opt in -a -e -f -r -s -v ; do \
+	    make test CFAOPT=$${opt} ; \
+	done ; \
+	rm -f core
+
+test : ${OUTPUTS} ${OUTPUTDIR}/report
+
+${OUTPUTDIR}/%.txt : %.c ${CFA} Makefile
+	-${CFA} -n ${CFAOPT} $< > $@ 2>&1
+
+${OUTPUTDIR}/report : ${OUTPUTS} ${EXPECTDIR}
+	rm -f $@
+	echo "===== regression test using cfa-cpp flag ${CFAOPT} ====="
+	@for i in ${OUTPUTS} ; do \
+	     echo "---"`basename $$i`"---" | tee -a $@; \
+	     diff -B -w ${EXPECTDIR}/`basename $$i` $$i | tee -a $@; \
+	done
+
+${OUTPUTS} : | ${OUTPUTDIR}		# order only prerequisite
+
+${OUTPUTDIR} :
+	mkdir -p $@
+
+# remove the expected results directories to generate new ones from the current output
+
+${EXPECTDIR} : | ${OUTPUTS}		# new Expected results ?
+	cp -pr ${OUTPUTDIR} $@
+
+clean :
+	rm -rf ${OUTPUT}-* core
Index: examples/Members.c
===================================================================
--- examples/Members.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/Members.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,72 @@
+char ?=?( char*, char );
+int ?=?( int*, int );
+float ?=?( float*, float );
+forall( dtype DT ) DT * ?=?( DT**, DT* );
+forall(otype T) lvalue T *?( T* );
+char *__builtin_memcpy();
+
+void a( char );
+void b( int );
+void c( int* );
+void d( float* );
+
+struct a_struct {
+	int a;
+	char a;
+	float a;
+};
+
+union b_struct {
+	int *a;
+	char *a;
+	float *a;
+};
+
+void f() {
+	struct a_struct the_struct;
+	union b_struct the_struct;
+  
+	a( the_struct.a );
+	b( the_struct.a );
+	c( the_struct.a );
+	d( the_struct.a );
+}
+
+struct c_struct {
+	int;
+	char;
+	float;
+};
+
+union d_struct {
+	int*;
+	char*;
+	float*;
+};
+
+void g() {
+	unsigned short x;
+	struct c_struct x;
+	union d_struct x;
+  
+	a( x );	// the 'a' and 'b' calls resolve to the ushort
+	b( x );	// it's debatable whether this is good
+	c( x );
+	d( x );
+}
+
+// make sure that forward declarations work
+
+struct forward;
+
+struct forward *q;
+
+struct forward { int y; };
+
+void h() {
+	q->y;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: examples/Misc.c
===================================================================
--- examples/Misc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/Misc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,19 @@
+// interesting corner cases
+
+int a;
+int b;
+float b;
+
+void g( int );
+void g( unsigned );
+
+void f( void ) {
+	g( (a, b) );
+	g( (a, a, b) );
+	g( sizeof a );
+	g( sizeof( int ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: examples/MiscError.c
===================================================================
--- examples/MiscError.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/MiscError.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,16 @@
+int a;
+int b;
+float b;
+
+void g( int );
+
+void f( void ) {
+	g( (b, a) );
+	g( (b, a, b) );
+	g( (a, b, b) );
+	sizeof b;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: examples/Rank2.c
===================================================================
--- examples/Rank2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/Rank2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,20 @@
+int ?=?( int *, int );
+forall(dtype DT) DT * ?=?( DT **, DT * );
+
+void a() {
+	forall( otype T ) void f( T );
+	void g( forall( otype U ) void p( U ) );
+	g( f );
+}
+
+void g() {
+	void h( int *null );
+	forall( otype T ) T id( T );
+	forall( dtype T ) T *0;
+	int 0;
+	h( id( id( id( 0 ) ) ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: examples/Tuple.c
===================================================================
--- examples/Tuple.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/Tuple.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,73 @@
+int f( int, int );
+int g( int, int, int );
+static
+[ int, int *, * int, int ] h( int a, int b, * int c, [] char d );
+
+struct inner {
+	int f2, f3;
+};
+
+struct outer {
+	int f1;
+	struct inner i;
+	double f4;
+} s, *sp;
+
+const volatile [ int, int ] t1;
+static const [ int, int ] t2;
+const static [ int, const int ] t3;
+
+[ int rc ] printf( * char fmt, ... );
+int printf( char *fmt, ... );
+
+[ short x, unsigned y ] f1( int w ) {
+// 	return [ y, x ] = [ x, y ] = [ w, 23 ];
+}
+
+[ [ int, char, long, int ] r ] g1() {
+	short int x, p;
+	unsigned int y;
+	[ int, int ] z;
+
+	[ x, y, z ] = [ p, f( 17, 18 ), 4, 3 ];
+//	[ x, y, z ] = ([short, unsigned int, [int, int]])([ p, f( 17, 18 ), 4, 3 ]);
+	r = [ x, y, z ];
+}
+
+[ int rc ] main( int argc, ** char argv ) {
+	int a, b, c, d;
+//	struct outer t = { .[ f1, f4 ] : [ 1, 7.0 ] };
+	f( [ 3,5 ] );
+	g( [ 3,5 ], 3 );
+	f( t1 );
+	g( t1, 3 );
+
+//	[ , , , ];						/* empty tuple */
+	[ 3, 5 ];
+	[ a, b ] = 3;
+//	[ a, b ] = [ 4.6 ];
+	[ a, b ] = 4.6;
+	[ a, b ] = [ c, d ] = [ 3, 5 ];
+//	[ a, b, [ c ] ] = [ 2, [ a, b ] ];
+	[ a, b, c ] = [ 2, [ a, b ] ];
+	[ a, b ] = 3 > 4 ? [ b, 6 ] : [ 7, 8 ];
+
+	t1 = [ a, b ];
+	t1 = t2 = [ a, b ];
+	[ a, b ] = [ c, d ] = d += c += 1;
+	[ a, b ] = [ c, d ] = t1;
+	[ a, b ] = t1 = [ c, d ];
+	[ a, b ] = t1 = t2 = [ c, d ];
+//	t1 = [ 3, 4 ] = [ 3, 4 ] = t1 = [ 3, 4 ];
+
+	s.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
+//	s.[ f1, i.[ f2, f3 ], f4 ] = h( 3, 3, (* int)0, "abc" );
+//	[ a, , b, ] = h( 3, 3, 0, "abc" );			/* ignore some results */
+	sp->[ f4, f1 ] = sp->[ f1, f4 ];
+	printf( "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n", s.[ f4, i.[ f3, f2 ], f1 ] );
+	rc = 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: examples/abstype.c
===================================================================
--- examples/abstype.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/abstype.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,43 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// abstype.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jun 14 14:27:48 2016
+// Update Count     : 9
+//
+
+otype T | { T x( T ); };
+
+T y( T t ) {
+	T t_instance;
+	return x( t );
+}
+
+forall( otype T ) lvalue T *?( T * );
+int ?++( int * );
+int ?=?( int *, int );
+forall( dtype DT ) DT * ?=?( DT **, DT * );
+
+otype U = int *;
+
+U x( U u ) {
+	U u_instance = u;
+	(*u)++;
+	return u;
+}
+
+int *break_abstraction( U u ) {
+	return u;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa abstype.c" //
+// End: //
Index: examples/constructors.c
===================================================================
--- examples/constructors.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/constructors.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,61 @@
+int fred() {
+    // initialize basic structure
+    struct S {
+	int i, j, k;
+    };
+    void ?{}( S *s ) { s->i = 1, s->k = 2; }		// default constructor
+    void ?{}( S *s, int i, int k ) { s->i = i, s->k = k; } // 2 parameter constructor
+    void ?{}( S *s, S c ) { *s = c; }			// copy constructor
+    void ^?{}( S *s ) { s->i = 0, s->k = 0; }		// default destructor
+    void ^?{}( S *s, int i ) { s->i = i, s->k = i; }	// 1 parameter destructor
+    {
+	S s1;			// default constructor
+	S s2 = { 3, 7 };	// 2 parameter constructor
+	S s3 @= { .k:3, .i:7 };	// 2 parameter C initialization
+	?{}( &s3, 2, 5 );	// explicit 2 parameter constructor
+	^?{}( &s1 );		// explicit call to default destructor
+    } // implicit call to default destructor for s2, explicit call s1, no call for s3
+    S s4 @= {};			// no default construction
+    (&s4){ 2, 5 };		// explicit 2 parameter constructor
+    ^s4{ 3 };			// explicit call to 1 parameter destructor
+
+    // initialize pointer to a basic structure
+
+    void ?{}( S **s ) { *s = malloc(); (*s)->i = 1, (*s)->k = 2; } // default constructor
+    void ?{}( S **s, int i, int k ) { *s = malloc(); (*s)->i = i, (*s)->k = k; } // 2 parameter constructor
+    void ^?{}( S **s ) { (*s)->i = 0, (*s)->k = 0; free( *s ); *s = 0; } // default destructor
+    {
+	S *ps1;			// default constructor
+	S *ps2 = { 3, 7 };	// 2 parameter constructor
+	S *ps3 @= 0;		// C initialization
+	S *ps4 @= {};		// no default construction
+    } // implicit call to default destructor for ps2 and ps1, checks ordering of explicit destructor calls
+
+    ?{}( &ps3, 2, 5 );		// explicit 2 parameter constructor
+    (&ps4){ 2, 5 };		// explicit 2 parameter constructor
+    
+    ^?{}( &ps3 );		// explicit call to default destructor
+    ^ps4{};			// explicit call to default destructor
+
+    // initialize complex structure
+
+    struct T {
+	struct S s;
+    };
+
+    void ?{}( T *t ) {}					// default constructor => implicitly call constructor for field s
+    void ?{}( T *t, int i, int k ) { (&t->s){ i, k }; }	// 2 parameter constructor => explicitly call constructor for field s
+    void ?{}( T *t, S c ) { (&t->s){ c }; }		// 1 parameter constructor => explicitly call copy constructor for field s
+    void ^?{}( T *s, int i ) {}				// destructor => implicitly call destructor for field s
+    {
+	S s;			// default constructor
+	T t1;			// default constructor
+	T t2 = { s };		// 1 parameter constructor
+	^?{}( &t1 );		// explicit call to default destructor => implicit call to t1.s's destructor
+    } // implicit call to default destructor for t2 and implicit call for s;
+    T t3;			// default constructor
+    T t4 @= { { 1, 3 } };	// C initialization
+    (&t4){ 2, 5 };		// explicit 2 parameter constructor
+
+    T *pt = malloc(){ 3, 4 };	// common usage
+} // implicit call to default destructor for t3
Index: examples/forward.c
===================================================================
--- examples/forward.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/forward.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,29 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// forward.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:11:57 2015
+// Update Count     : 2
+//
+
+forall(type T) lvalue T *?( T* );
+int ?=?( int*, int );
+
+struct q { int y; };
+struct q *x;
+
+void f() {
+	*x;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa forward.c" //
+// End: //
Index: examples/gc_no_raii/.gitignore
===================================================================
--- examples/gc_no_raii/.gitignore	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/.gitignore	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,4 @@
+.tags
+.tags*
+gc-test
+build/
Index: examples/gc_no_raii/bug-repro/assert.c
===================================================================
--- examples/gc_no_raii/bug-repro/assert.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/assert.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,16 @@
+struct gc_object_header{
+ int size;
+};
+
+struct gc_state;
+
+inline _Bool needs_collect(gc_state* state) {
+ return state->used_space > 0;
+}
+
+struct gc_object_header* gc_get_object_for_ref();
+
+inline gc_object_header* gc_get_object_ptr(void* ptr)
+{
+ return 0;
+}
Index: examples/gc_no_raii/bug-repro/blockers/explicit_cast.c
===================================================================
--- examples/gc_no_raii/bug-repro/blockers/explicit_cast.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/blockers/explicit_cast.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,22 @@
+
+#include <stdbool.h>
+#include <stdint.h>
+
+struct gcpointer_t
+{
+	intptr_t ptr;
+	struct gcpointer_t* next;
+};
+
+forall(otype T)
+struct gcpointer
+{
+	gcpointer_t internal;
+};
+
+forall(otype T)
+static inline gcpointer(T) gcmalloc()
+{
+    gcpointer(T) test;
+    return test;
+}
Index: examples/gc_no_raii/bug-repro/blockers/file_scope.c
===================================================================
--- examples/gc_no_raii/bug-repro/blockers/file_scope.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/blockers/file_scope.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+
+#include <stdbool.h>
+#include <stdlib.hfa>
+
+#define POOL_SIZE_EXP 24
+#define POOL_SIZE_BYTES 0x1 << POOL_SIZE_EXP
+#define POOL_PTR_MASK ~(POOL_SIZE_BYTES - 1)
+
+#define CARDS_SIZE_EXP 12
+#define CARDS_SIZE_BYTES 0x1 << CARDS_SIZE_EXP
+#define CARDS_OFFSET_MASK (~(CARDS_SIZE_BYTES - 1)) & (POOL_SIZE_BYTES - 1)
+#define CARDS_COUNT POOL_SIZE_BYTES / CARDS_SIZE_BYTES
+
+struct card_table_t
+{
+	size_t count;
+	void* cards_start[CARDS_COUNT];
+};
Index: examples/gc_no_raii/bug-repro/blockers/recursive_realloc.c
===================================================================
--- examples/gc_no_raii/bug-repro/blockers/recursive_realloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/blockers/recursive_realloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,21 @@
+
+#include <stdbool.h>
+#include <stdlib.hfa>
+
+trait allocator_c(otype T, otype allocator_t)
+{
+	void realloc(allocator_t* const, size_t);
+};
+
+forall(otype T)
+struct heap_allocator
+{
+	T* storage;
+	size_t capacity;
+};
+
+forall(otype T)
+inline void realloc(heap_allocator(T) *const this, size_t size)
+{
+	this->storage = (T*)realloc((void*)this->storage, this->capacity);
+}
Index: examples/gc_no_raii/bug-repro/crash.c
===================================================================
--- examples/gc_no_raii/bug-repro/crash.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/crash.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,6 @@
+
+void f()
+{
+ void* obj;
+ (void)obj;
+}
Index: examples/gc_no_raii/bug-repro/deref.c
===================================================================
--- examples/gc_no_raii/bug-repro/deref.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/deref.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,19 @@
+    forall(otype T)
+    struct wrap
+    {
+        T val;
+    };
+
+    forall(otype T)
+    T *? (wrap(T) rhs)
+    {
+        return rhs.val;
+    }
+
+    int main(int argc, char const *argv[])
+    {
+        wrap(int) test;
+        test.val = 3;
+        int i = *test;
+        return 0;
+    }
Index: examples/gc_no_raii/bug-repro/field.c
===================================================================
--- examples/gc_no_raii/bug-repro/field.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/field.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,130 @@
+extern "C" {
+#include <stdbool.h>
+#include <stdint.h>
+}
+
+#include <stdlib.hfa>
+
+//------------------------------------------------------------------------------
+//Declaration
+trait allocator_c(otype T, otype allocator_t)
+{
+	void ctor(allocator_t* const);
+	void dtor(allocator_t* const);
+	void realloc(allocator_t* const, size_t);
+	T* data(allocator_t* const);
+};
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+struct vector
+{
+	allocator_t storage;
+	size_t size;
+};
+
+int global = 3;
+
+struct card_table_t
+{
+	size_t count;
+	void* cards_start[100];
+};
+
+static inline void ctor(card_table_t* const this)
+{
+	this->count = 0;
+}
+
+struct gc_memory_pool
+{
+	struct memory_pool* mirror;
+	struct memory_pool* next;
+
+	uint8_t type_code;
+
+	card_table_t* cards;
+
+	uint8_t* end_p;
+	uint8_t* free_p;
+	uint8_t start_p[1];
+};
+
+void ctor(	gc_memory_pool *const this,
+		size_t size,
+		gc_memory_pool* next,
+		gc_memory_pool* mirror,
+		uint8_t type
+	);
+
+void dtor(gc_memory_pool *const this);
+
+struct gc_pool_object_iterator
+{
+	struct gc_object_header* object;
+	#ifndef NDEBUG
+		intptr_t lower_limit;
+		intptr_t upper_limit;
+	#endif
+};
+
+void ctor(
+		gc_pool_object_iterator* const this,
+		void* start_object
+		#ifndef NDEBUG
+			, intptr_t pool_start
+			, intptr_t pool_end
+		#endif
+	);
+
+bool ?!=?(const gc_pool_object_iterator lhs, const gc_pool_object_iterator rhs);
+
+gc_pool_object_iterator begin(gc_memory_pool* const this);
+gc_pool_object_iterator end(gc_memory_pool* const);
+
+gc_pool_object_iterator* ++?(gc_pool_object_iterator* it);
+
+const void* *?(const gc_pool_object_iterator it);
+void* *?(gc_pool_object_iterator it);
+
+static inline bool gc_pool_is_from_space(const gc_memory_pool* pool)
+{
+	return false;
+}
+
+void gc_reset_pool(gc_memory_pool* const pool);
+
+static inline size_t gc_pool_size_used(const gc_memory_pool* pool)
+{
+	return pool->free_p - pool->start_p;
+}
+
+static inline size_t gc_pool_size_total(const gc_memory_pool* pool)
+{
+	return pool->end_p - pool->start_p;
+}
+
+static inline size_t gc_pool_size_left(const gc_memory_pool* pool)
+{
+	return pool->end_p - pool->free_p;
+}
+
+void* gc_pool_allocate(gc_memory_pool* const pool, size_t size, bool zero);
+
+gc_pool_object_iterator gc_pool_iterator_for(gc_memory_pool* const pool, void* member);
+
+void ctor(gc_memory_pool *const this, size_t size, gc_memory_pool* next, gc_memory_pool* mirror, uint8_t type)
+{
+	this->mirror = mirror;
+	this->next = next;
+	this->type_code = type;
+
+	this->cards = malloc();
+	ctor(this->cards);
+
+	this->end_p = ((uint8_t*)this) + size;
+	this->free_p = this->start_p;
+
+	// check(gc_pool_of(this) == this);
+	// check(this->cards);
+	// gc_reset_pool(this);
+}
Index: examples/gc_no_raii/bug-repro/find.c
===================================================================
--- examples/gc_no_raii/bug-repro/find.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/find.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,10 @@
+
+void main()
+{
+	int a[3] = {1, 2, 3};
+	int* begin = a;
+	int *const end = begin + 3;
+
+	int* f = find(begin, &end, 2);
+
+}
Index: examples/gc_no_raii/bug-repro/inline.c
===================================================================
--- examples/gc_no_raii/bug-repro/inline.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/inline.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,8 @@
+inline _Bool test(int t){
+	return t == 3;
+}
+
+int main()
+{
+	test(6);
+}
Index: examples/gc_no_raii/bug-repro/malloc.c
===================================================================
--- examples/gc_no_raii/bug-repro/malloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/malloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,33 @@
+forall(otype T)
+struct wrapper
+{
+    T val;
+};
+
+forall(otype T)
+void ctor(wrapper(T)* this)
+{
+    this->val = 0;
+}
+
+forall(otype T)
+wrapper(T) gcmalloc()
+{
+    wrapper(T) w;
+    ctor(&w);
+    return w;
+}
+
+forall(otype T)
+wrapper(T)* ?=? (wrapper(T)* lhs, wrapper(T)* rhs)
+{
+    lhs->val = rhs->val;
+    return lhs;
+}
+
+int main(int argc, char *argv[])
+{
+    wrapper(int) test;
+    test = gcmalloc();
+    return 0;
+}
Index: examples/gc_no_raii/bug-repro/not_equal.c
===================================================================
--- examples/gc_no_raii/bug-repro/not_equal.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/not_equal.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,10 @@
+
+struct pointer_t
+{
+	void* p;
+};
+
+_Bool operator_not_equal_p(pointer_t* lhs, pointer_t* rhs)
+{
+	return lhs->p == rhs->p;
+}
Index: examples/gc_no_raii/bug-repro/oddtype.c
===================================================================
--- examples/gc_no_raii/bug-repro/oddtype.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/oddtype.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,13 @@
+forall(dtype T)
+struct wrap {
+	int i;
+};
+
+forall(otype T) void ?{}(wrap(T)* this) {}
+forall(otype T) void ?=?(wrap(T)* this) {}
+forall(otype T) void ^?{}(wrap(T)* this) {}
+
+struct List_t {
+	int val;
+	wrap(List_t) next;
+};
Index: examples/gc_no_raii/bug-repro/push_back.c
===================================================================
--- examples/gc_no_raii/bug-repro/push_back.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/push_back.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,16 @@
+#include <stddef.h>
+#include <stdint.h>
+
+#include "push_back.h"
+
+typedef vector(intptr_t*, heap_allocator(intptr_t*)) worklist_t;
+
+void test()
+{
+	worklist_t w;
+	if(!empty(&w))
+	{
+		intptr_t zero = 0;
+		push_back(&w, &zero);
+	}
+}
Index: examples/gc_no_raii/bug-repro/push_back.h
===================================================================
--- examples/gc_no_raii/bug-repro/push_back.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/push_back.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,72 @@
+//------------------------------------------------------------------------------
+//Declaration
+trait allocator_c(otype T, otype allocator_t) {
+	void ctor(allocator_t* const);
+	void dtor(allocator_t* const);
+	void realloc(allocator_t* const, size_t);
+	T* data(allocator_t* const);
+};
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+struct vector
+{
+	allocator_t storage;
+	size_t size;
+};
+
+//------------------------------------------------------------------------------
+//Initialization
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void vector_ctor(vector(T, allocator_t) *const this);
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void dtor(vector(T, allocator_t) *const this);
+
+//------------------------------------------------------------------------------
+//Allocator
+forall(otype T)
+struct heap_allocator
+{
+	T* storage;
+	size_t capacity;
+};
+
+forall(otype T)
+void ctor(heap_allocator(T) *const this);
+
+forall(otype T)
+void dtor(heap_allocator(T) *const this);
+
+forall(otype T)
+void realloc(heap_allocator(T) *const this, size_t size);
+
+forall(otype T)
+inline T* data(heap_allocator(T) *const this)
+{
+	return this->storage;
+}
+
+//------------------------------------------------------------------------------
+//Capacity
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+inline bool empty(vector(T, allocator_t) *const this)
+{
+	return this->size == 0;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+inline bool size(vector(T, allocator_t) *const this)
+{
+	return this->size;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+inline void reserve(vector(T, allocator_t) *const this, size_t size)
+{
+	realloc(&this->storage, this->size+1);
+}
+
+//------------------------------------------------------------------------------
+//Modifiers
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void push_back(vector(T, allocator_t) *const this, T value);
Index: examples/gc_no_raii/bug-repro/realloc.c
===================================================================
--- examples/gc_no_raii/bug-repro/realloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/realloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,13 @@
+void* realloc(void*, unsigned long int);
+
+forall(otype T)
+struct wrap
+{
+	T* val;
+};
+
+forall(otype T)
+static inline void realloc(wrap(T) *const this, unsigned long int size)
+{
+	this->val = (T*)realloc((void*)this->val, size);
+}
Index: examples/gc_no_raii/bug-repro/return.c
===================================================================
--- examples/gc_no_raii/bug-repro/return.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/return.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,27 @@
+forall(otype T)
+struct wrapper
+{
+	T value;
+};
+
+forall(otype T)
+wrapper(T) create()
+{
+	wrapper(T) test;
+	return test;
+}
+
+forall(otype T)
+wrapper(T)* ?=?(wrapper(T)* lhs, wrapper(T)* rhs)
+{
+	lhs->value = rhs->value;
+	return lhs;
+}
+
+
+int main(int argc, char const *argv[])
+{
+	wrapper(int) test;
+	test = create();
+	return 0;
+}
Index: examples/gc_no_raii/bug-repro/return_template.c
===================================================================
--- examples/gc_no_raii/bug-repro/return_template.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/return_template.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,17 @@
+forall(otype T)
+struct wrap
+{
+	T value;
+};
+
+forall(otype T) void ?{}(wrap(T)* this);
+forall(otype T) void ?{}(wrap(T)* this, wrap(T)* rhs);
+forall(otype T) void ^?{}(wrap(T)* this);
+forall(otype T) void ?=?(wrap(T)* this, wrap(T)* rhs);
+
+forall(otype T)
+wrap(T) test()
+{
+	wrap(T) tester;
+	return tester;
+}
Index: examples/gc_no_raii/bug-repro/slow_malloc.c
===================================================================
--- examples/gc_no_raii/bug-repro/slow_malloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/slow_malloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,20 @@
+#include <stdlib.hfa>
+
+forall(otype T)
+struct heap_allocator
+{
+	T* storage;
+	size_t capacity;
+};
+
+struct card_table_t
+{
+	unsigned long int count;
+	void* cards_start[1000];
+};
+
+int main(int argc, char const *argv[])
+{
+	card_table_t* t = (card_table_t*)malloc(sizeof(card_table_t));
+	return 0;
+}
Index: examples/gc_no_raii/bug-repro/static_const_local.c
===================================================================
--- examples/gc_no_raii/bug-repro/static_const_local.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/static_const_local.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,6 @@
+typedef unsigned long long size_t;
+
+int main(int argc, char const *argv[]) {
+	static const size_t GROWTH_RATE = 2;
+	return 0;
+}
Index: examples/gc_no_raii/bug-repro/test-assert.cpp
===================================================================
--- examples/gc_no_raii/bug-repro/test-assert.cpp	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/test-assert.cpp	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,9 @@
+#include <cassert>
+#include "../src/tools/checks.h"
+
+int main(int argc, char* argv[])
+{
+	//check(false);
+	assert(false);
+	return 0;
+}
Index: examples/gc_no_raii/bug-repro/void_pointer.c
===================================================================
--- examples/gc_no_raii/bug-repro/void_pointer.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/void_pointer.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+#include <stddef.h>
+#include <stdint.h>
+
+inline void* test(intptr_t address)
+{
+	return (void*)address;
+}
+
+//inline void* test2(void* address)
+//{
+//	return address & 0xFF;
+//}
+
+// inline int test()
+// {
+// 	void* d = 0;
+// 	return (int)d;
+// }
Index: examples/gc_no_raii/bug-repro/while.c
===================================================================
--- examples/gc_no_raii/bug-repro/while.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/while.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,14 @@
+extern void* get_member();
+extern void* get_next();
+
+void main()
+{
+	void* member = get_member();
+	void* start_obj = get_next();
+
+	do
+	{
+		start_obj = (void*) ( ((unsigned long int)start_obj) + sizeof(void*) );
+	}
+	while(start_obj > member || !(start_obj) );
+}
Index: examples/gc_no_raii/bug-repro/zero.c
===================================================================
--- examples/gc_no_raii/bug-repro/zero.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/bug-repro/zero.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+forall(otype T)
+struct wrap
+{
+    T val;
+};
+
+forall(otype T)
+int ?==? (wrap(T) lhs, wrap(T) rhs)
+{
+    return 0;
+}
+
+/*
+struct wrap(int) 0;
+/*/
+forall(otype T)
+struct wrap(T) 0;
+//*/
+
+int main(int argc, char const *argv[])
+{
+    wrap(int) test;
+    if(test == 0) { return 1; }
+    return 0;
+}
Index: examples/gc_no_raii/pool-alloc/allocate-malign.c
===================================================================
--- examples/gc_no_raii/pool-alloc/allocate-malign.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/pool-alloc/allocate-malign.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,30 @@
+/*
+ * Allocation functions (posix_malign)
+ *
+ * Copyright (c) 2014, 2015 Gregor Richards
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+static void *allocPool(size_t size, int mustSucceed)
+{
+    void *ret;
+    if ((errno = posix_memalign(&ret, size, size))) {
+        if (mustSucceed) {
+            perror("posix_memalign");
+            abort();
+        }
+        return NULL;
+    }
+    return ret;
+}
Index: examples/gc_no_raii/pool-alloc/allocate-malloc.c
===================================================================
--- examples/gc_no_raii/pool-alloc/allocate-malloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/pool-alloc/allocate-malloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,53 @@
+/*
+ * Allocation functions (malloc)
+ *
+ * Copyright (c) 2014, 2015 Gregor Richards
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+static void *allocPool(int mustSucceed)
+{
+    static ggc_mutex_t poolLock = GGC_MUTEX_INITIALIZER;
+    static unsigned char *space = NULL, *spaceEnd = NULL;
+    void *ret;
+
+    /* do we already have some available space? */
+    ggc_mutex_lock_raw(&poolLock);
+    if (!space || space + GGGGC_POOL_BYTES > spaceEnd) {
+        ggc_size_t i;
+
+        /* since we can't pre-align, align by getting as much as we can manage */
+        for (i = 16; i >= 2; i /= 2) {
+            space = malloc(GGGGC_POOL_BYTES * i);
+            if (space) break;
+        }
+        if (!space) {
+            if (mustSucceed) {
+                perror("malloc");
+                abort();
+            }
+            return NULL;
+        }
+        spaceEnd = space + GGGGC_POOL_BYTES * i;
+
+        /* align it */
+        space = (unsigned char *) GGGGC_POOL_OF(space + GGGGC_POOL_BYTES - 1);
+    }
+
+    ret = (struct GGGGC_Pool *) space;
+    space += GGGGC_POOL_BYTES;
+    ggc_mutex_unlock(&poolLock);
+
+    return ret;
+}
Index: examples/gc_no_raii/pool-alloc/allocate-mmap.c
===================================================================
--- examples/gc_no_raii/pool-alloc/allocate-mmap.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/pool-alloc/allocate-mmap.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,44 @@
+/*
+ * Allocation functions (mmap)
+ *
+ * Copyright (c) 2014, 2015 Gregor Richards
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+static void *allocPool(int mustSucceed)
+{
+    unsigned char *space, *aspace;
+    struct GGGGC_Pool *ret;
+
+    /* allocate enough space that we can align it later */
+    space = mmap(NULL, GGGGC_POOL_BYTES*2, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0);
+    if (space == NULL) {
+        if (mustSucceed) {
+            perror("mmap");
+            abort();
+        }
+        return NULL;
+    }
+
+    /* align it */
+    ret = GGGGC_POOL_OF(space + GGGGC_POOL_BYTES - 1);
+    aspace = (unsigned char *) ret;
+
+    /* free unused space */
+    if (aspace > space)
+        munmap(space, aspace - space);
+    munmap(aspace + GGGGC_POOL_BYTES, space + GGGGC_POOL_BYTES - aspace);
+
+    return ret;
+}
Index: examples/gc_no_raii/pool-alloc/allocate-win-valloc.c
===================================================================
--- examples/gc_no_raii/pool-alloc/allocate-win-valloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/pool-alloc/allocate-win-valloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,45 @@
+/*
+ * Allocation functions (mmap)
+ *
+ * Copyright (c) 2014, 2015 Gregor Richards
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+static void *allocPool(int mustSucceed)
+{
+    unsigned char *space, *aspace;
+    struct GGGGC_Pool *ret;
+
+    /* allocate enough space that we can align it later */
+    space = (unsigned char *)
+        VirtualAlloc(NULL, GGGGC_POOL_BYTES*2, MEM_COMMIT|MEM_RESERVE, PAGE_READWRITE);
+    if (space == NULL) {
+        if (mustSucceed) {
+            perror("mmap");
+            abort();
+        }
+        return NULL;
+    }
+
+    /* align it */
+    ret = GGGGC_POOL_OF(space + GGGGC_POOL_BYTES - 1);
+    aspace = (unsigned char *) ret;
+
+    /* free unused space */
+    if (aspace > space)
+        VirtualFree(space, aspace - space, MEM_RELEASE);
+    VirtualFree(aspace + GGGGC_POOL_BYTES, space + GGGGC_POOL_BYTES - aspace, MEM_RELEASE);
+
+    return ret;
+}
Index: examples/gc_no_raii/premake4.lua
===================================================================
--- examples/gc_no_raii/premake4.lua	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/premake4.lua	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,82 @@
+#!lua
+
+-- Additional Linux libs: "X11", "Xxf86vm", "Xi", "Xrandr", "stdc++"
+
+includeDirList = {
+	"src/",
+	"../"
+}
+
+libDirectories = {
+
+}
+
+
+if os.get() == "linux" then
+    linkLibs = {
+
+    }
+end
+
+-- Build Options:
+buildOptions = {
+      "-g",
+	"-DTEST_FILE=${test}",
+      "\n  test = gctest",
+	"\n  CC = cfa\n  CXX = cfa", }
+
+solution "GC-no-RAII"
+	configurations  { "debug", "release",
+				"cproc-debug", "cproc-release",
+				"cfa-debug", "cfa-release" }
+
+	project "gc-test"
+		kind "ConsoleApp"
+		language "C"
+		location "build"
+		objdir "build"
+		targetdir "."
+		buildoptions (buildOptions)
+		defines {	"bool=_Bool",
+				"\"true=((_Bool)(const signed int)1)\"",
+				"\"false=((_Bool)(const signed int)0)\"",
+				"_GNU_SOURCE",
+				"__cforall"
+			}
+		libdirs (libDirectories)
+		links (linkLibs)
+		linkoptions (linkOptionList)
+		includedirs (includeDirList)
+		files { "src/**.c", "containers/**.c" }
+
+	configuration "debug"
+		defines { "DEBUG" }
+		flags { "Symbols" }
+
+	configuration "release"
+		defines { "NDEBUG" }
+		flags { "Optimize" }
+
+	configuration "cproc-debug"
+		buildoptions ({"-E"})
+		linkoptions ({"-E"})
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
+
+	configuration "cproc-release"
+		buildoptions ({"-E"})
+		linkoptions ({"-E"})
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
+
+	configuration "cfa-debug"
+		linkoptions ({"-E"})
+		files { "build/cproc-debug/*.o" }
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
+
+	configuration "cfa-release"
+		linkoptions ({"-E"})
+		files { "build/cproc-debug/*.o" }
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
Index: examples/gc_no_raii/src/allocate-pool.c
===================================================================
--- examples/gc_no_raii/src/allocate-pool.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/allocate-pool.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,64 @@
+#define _BSD_SOURCE /* for MAP_ANON */
+#define _DARWIN_C_SOURCE /* for MAP_ANON on OS X */
+
+#ifdef __cforall
+extern "C"{
+#else
+#error missing cfa define
+#endif
+
+/* for standards info */
+#if defined(unix) || defined(__unix) || defined(__unix__) || \
+    (defined(__APPLE__) && defined(__MACH__))
+#include <unistd.h>
+#endif
+
+#if defined(_WIN32)
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+#endif
+
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+
+#if _POSIX_VERSION
+#include <sys/mman.h>
+#endif
+
+/* figure out which allocator to use */
+#if defined(GGGGC_USE_MALLOC)
+#define GGGGC_ALLOCATOR_MALLOC 1
+#include "../pool-alloc/allocate-malloc.c"
+
+#elif _POSIX_ADVISORY_INFO >= 200112L
+#define GGGGC_ALLOCATOR_POSIX_MEMALIGN 1
+#include "../pool-alloc/allocate-malign.c"
+
+#elif defined(MAP_ANON)
+#define GGGGC_ALLOCATOR_MMAP 1
+#include "../pool-alloc/allocate-mmap.c"
+
+#elif defined(_WIN32)
+#define GGGGC_ALLOCATOR_VIRTUALALLOC 1
+#include "../pool-alloc/allocate-win-valloc.c"
+
+#else
+#warning GGGGC: No allocator available other than malloc!
+#define GGGGC_ALLOCATOR_MALLOC 1
+#include "../pool-alloc/allocate-malloc.c"
+
+#endif
+
+void* pal_allocPool(size_t size, int mustSucceed)
+{
+      return allocPool(size, mustSucceed);
+}
+
+#ifdef __cforall
+}
+#endif
Index: examples/gc_no_raii/src/allocate-pool.h
===================================================================
--- examples/gc_no_raii/src/allocate-pool.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/allocate-pool.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,14 @@
+#ifndef _GGGGC_ALlOCATE_POOL_H_
+#define _GGGGC_ALlOCATE_POOL_H_
+
+#ifdef __cforall
+extern "C" {
+#endif
+
+void* pal_allocPool(size_t size, int mustSucceed);
+
+#ifdef __cforall
+}
+#endif
+
+#endif
Index: examples/gc_no_raii/src/gc.h
===================================================================
--- examples/gc_no_raii/src/gc.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/gc.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "gcpointers.h"
+#include "internal/collector.h"
+
+// forall(otype T)
+// static inline gcpointer(T) gcmalloc()
+// {
+//     gcpointer(T) ptr = { gc_allocate(sizeof(T)) };
+//     ptr{};
+//     gc_conditional_collect();
+//     return ptr;
+// }
+
+forall(otype T)
+static inline void gcmalloc(gcpointer(T)* ptr)
+{
+	ptr { gc_allocate(sizeof(T)) };
+	get(ptr) {};
+      gc_conditional_collect();
+}
Index: examples/gc_no_raii/src/gcpointers.c
===================================================================
--- examples/gc_no_raii/src/gcpointers.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/gcpointers.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,147 @@
+#include "gcpointers.h"
+
+// #include "gc.h"
+#include "internal/collector.h"
+#include "internal/object_header.h"
+#include "internal/state.h"
+
+void register_ptr(gcpointer_t* this)
+{
+	if(gcpointer_null(this)) return;
+
+	if(gc_is_managed(this))
+	{
+		gc_object_header* obj = gc_get_object_for_ref(gc_get_state(), (void*)this);
+		check(obj);
+		check(is_valid(obj));
+		check(gc_is_managed(this) == gc_is_managed(obj->type_chain) || !obj->type_chain);
+		this->next = obj->type_chain;
+		obj->type_chain = this;
+		check(is_valid(obj));
+	}
+	else
+	{
+		gc_object_header* obj = gc_get_object_ptr((void*)this->ptr);
+		check(obj);
+		check(is_valid(obj));
+		check(!obj->root_chain || this->ptr == obj->root_chain->ptr);
+		check(!obj->root_chain || gc_is_managed(this) == gc_is_managed(obj->root_chain));
+		this->next = obj->root_chain;
+		obj->root_chain = this;
+		check(is_valid(obj));
+	}
+}
+
+void unregister_ptr(gcpointer_t* this)
+{
+	if(gcpointer_null(this)) return;
+
+	gcpointer_t** prev_next_ptr = gc_find_previous_ref(this);
+	check((*prev_next_ptr) == this);
+
+	(*prev_next_ptr) = this->next;
+}
+
+void ?{}(gcpointer_t* this)
+{
+	this->ptr = (intptr_t)NULL;
+	this->next = NULL;
+}
+
+void ?{}(gcpointer_t* this, void* address)
+{
+	this->ptr = (intptr_t)address;
+	this->next = NULL;
+
+	register_ptr(this);
+}
+
+void ?{}(gcpointer_t* this, gcpointer_t other)
+{
+	this->ptr = other.ptr;
+	this->next = NULL;
+
+	register_ptr(this);
+}
+
+void ^?{}(gcpointer_t* this)
+{
+	unregister_ptr(this);
+}
+
+gcpointer_t ?=?(gcpointer_t* this, gcpointer_t rhs)
+{
+	unregister_ptr(this);
+	this->ptr = rhs.ptr;
+	register_ptr(this);
+
+	return *this;
+}
+
+//Logical operators
+bool gcpointer_equal(const gcpointer_t* this, const gcpointer_t* rhs)
+{
+	return this->ptr == rhs->ptr;
+}
+
+bool gcpointer_not_equal(const gcpointer_t* this, const gcpointer_t* rhs)
+{
+	return this->ptr != rhs->ptr;
+}
+
+bool gcpointer_null(const gcpointer_t* this)
+{
+	return this->ptr == (intptr_t)NULL;
+}
+
+#ifndef NDEBUG
+	bool is_valid(const gcpointer_t* this) {
+		if(gcpointer_null(this)) return true;
+
+		gc_object_header* obj = gc_get_object_ptr((void*)this->ptr);
+		check(obj);
+		check(is_valid(obj));
+		check(!obj->root_chain || this->ptr == obj->root_chain->ptr);
+
+		if( !gc_is_managed(this))
+		{
+			check( !(this->next) || this->ptr == this->next->ptr );
+		}
+
+		return true;
+	}
+#endif
+
+forall(otype T) void ?{}(gcpointer(T)* this) {
+	(&this->internal) {};
+}
+
+forall(otype T) void ?{}(gcpointer(T)* this, void* address) {
+	(&this->internal) { address };
+}
+
+forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T) other) {
+	(&this->internal) { other.internal };
+}
+
+forall(otype T) void ^?{}(gcpointer(T)* this) {
+	^?{}(&this->internal);
+}
+
+forall(otype T) gcpointer(T) ?=?(gcpointer(T)* this, gcpointer(T) rhs) {
+	this->internal = rhs.internal;
+	return *this;
+}
+//
+// forall(otype T) T *?(gcpointer(T) this);
+
+forall(otype T) T* get(gcpointer(T)* this) {
+	return (T*)this->internal.ptr;
+}
+//
+// //Logical operators
+forall(otype T) int ?!=?(gcpointer(T) this, int zero) {
+	return this.internal.ptr != 0;
+}
+// forall(otype T) int ?!=?(gcpointer(T) this, gcpointer(T) rhs);
+// forall(otype T) int ?==?(gcpointer(T) this, gcpointer(T) rhs);
Index: examples/gc_no_raii/src/gcpointers.h
===================================================================
--- examples/gc_no_raii/src/gcpointers.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/gcpointers.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,51 @@
+#pragma once
+
+#include <stdbool.h>
+#include <stdint.h>
+
+forall(dtype T)
+struct gcpointer;
+
+struct gcpointer_t
+{
+	intptr_t ptr;
+	struct gcpointer_t* next;
+};
+
+void ?{}(gcpointer_t* this);
+void ?{}(gcpointer_t* this, void* address);
+void ?{}(gcpointer_t* this, gcpointer_t other);
+void ^?{}(gcpointer_t* this);
+gcpointer_t ?=?(gcpointer_t* this, gcpointer_t rhs);
+
+//Logical operators
+bool gcpointer_equal(gcpointer_t* this, gcpointer_t* rhs);
+bool gcpointer_not_equal(gcpointer_t* this, gcpointer_t* rhs);
+bool gcpointer_null(const gcpointer_t* this);
+
+
+#ifndef NDEBUG
+	bool is_valid(const gcpointer_t* this);
+#endif
+
+forall(dtype T)
+struct gcpointer
+{
+	gcpointer_t internal;
+};
+
+//
+forall(otype T) void ?{}(gcpointer(T)* this);
+forall(otype T) void ?{}(gcpointer(T)* this, void* address);
+forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T) other);
+forall(otype T) void ^?{}(gcpointer(T)* this);
+forall(otype T) gcpointer(T) ?=?(gcpointer(T)* this, gcpointer(T) rhs);
+
+
+// forall(otype T) T *?(gcpointer(T) this);
+forall(otype T) T* get(gcpointer(T)* this);
+
+//Logical operators
+forall(otype T) int ?!=?(gcpointer(T) this, int zero);
+forall(otype T) int ?!=?(gcpointer(T) this, gcpointer(T) rhs);
+forall(otype T) int ?==?(gcpointer(T) this, gcpointer(T) rhs);
Index: examples/gc_no_raii/src/internal/card_table.h
===================================================================
--- examples/gc_no_raii/src/internal/card_table.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/card_table.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,62 @@
+#pragma once
+
+#include "globals.h"
+#include "tools.h"
+
+static inline size_t card_of(void* address)
+{
+	size_t card = ( ((intptr_t)address) & CARDS_OFFSET_MASK ) >> CARDS_SIZE_EXP;
+	checkf(card < CARDS_COUNT, (const char*)"%lu %lu = (%lx & %lx) >> %lu\n", (size_t)CARDS_COUNT, (size_t)card, (size_t)address, (size_t)CARDS_OFFSET_MASK, (size_t)CARDS_SIZE_EXP);
+	check(card < CARDS_COUNT);
+	return card;
+}
+
+struct card_table_t
+{
+	size_t count;
+	void* cards_start[CARDS_COUNT];
+};
+
+static inline void ?{}(card_table_t* this)
+{
+	this->count = 0;
+}
+
+static inline void ^?{}(card_table_t* this)
+{
+
+}
+
+static inline void* object_at(card_table_t* const this, size_t card_number)
+{
+	return card_number < this->count ? this->cards_start[card_number] : NULL;
+}
+
+static inline void register_object(card_table_t* const this, void* object)
+{
+	size_t card = card_of(object);
+	if(card < this->count)
+	{
+		intptr_t card_obj_add = (intptr_t)object_at(this, card);
+		intptr_t obj_add = (intptr_t)object;
+		if(card_obj_add > obj_add)
+		{
+			this->cards_start[card] = object;
+		}
+	}
+	else
+	{
+		check(card == this->count);
+		this->count++;
+		this->cards_start[card] = object;
+	}
+}
+
+static inline void reset(card_table_t* const this)
+{
+	for(size_t i = 0; i < this->count; i++)
+	{
+		this->cards_start[i] = NULL;
+	}
+	this->count = 0;
+}
Index: examples/gc_no_raii/src/internal/collector.c
===================================================================
--- examples/gc_no_raii/src/internal/collector.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/collector.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,152 @@
+#include "collector.h"
+
+#ifdef __cforall
+extern "C" {
+#endif
+#include <string.h>
+#ifdef __cforall
+}
+#endif
+
+#include <fstream.hfa>
+
+#include "state.h"
+#include "gcpointers.h"
+#include "memory_pool.h"
+
+void* gc_finish_alloc_block(void* block, size_t actual_size, size_t target_size);
+void gc_assign_reference(void** ref, gc_object_header* ptr);
+
+gcpointer_t** gc_find_previous_ref(gcpointer_t* target)
+{
+	if(!(target)) return NULL;
+
+	bool managed = gc_is_managed(target);
+	gc_object_header* obj = gc_get_object_ptr((void*)target->ptr);
+
+	check(is_valid(obj));
+
+	gcpointer_t** prev_next_ptr = managed ? &obj->type_chain : &obj->root_chain;
+	while((*prev_next_ptr) && (*prev_next_ptr) != target)
+	{
+		prev_next_ptr = &(*prev_next_ptr)->next;
+	}
+
+	return prev_next_ptr;
+}
+
+void* gc_allocate(size_t target_size)
+{
+	// sout | "Allocating " | target_size | " bytes" | endl;
+
+	size_t size = gc_compute_size(target_size + sizeof(gc_object_header));
+
+	// sout | "Object header size: " | sizeof(gc_object_header) | " bytes" | endl;
+	// sout | "Actual allocation size: " | size | " bytes" | endl;
+
+	check(size < POOL_SIZE_BYTES);
+
+	void* block = NULL;
+	gc_state* gc = gc_get_state();
+
+	if((intptr_t)(block = gc_try_allocate(gc, size))) return gc_finish_alloc_block(block, size, target_size);
+
+	gc_collect(gc);
+
+	if((intptr_t)(block = gc_try_allocate(gc, size))) return gc_finish_alloc_block(block, size, target_size);
+
+	gc_allocate_pool(gc);
+
+	if((intptr_t)(block = gc_try_allocate(gc, size))) return gc_finish_alloc_block(block, size, target_size);
+
+	checkf( (int) 0, "ERROR: allocation in new pool failed");
+
+	return NULL;
+}
+
+void* gc_finish_alloc_block(void* block, size_t actual_size, size_t target_size)
+{
+	intptr_t data = ((intptr_t)block) + sizeof(gc_object_header);
+	void* header = block;
+
+	check( data > ((intptr_t)block));
+	check( data >= ((intptr_t)header));
+	check( gc_is_aligned( (void*)data ) );
+	check( data + target_size <= ((intptr_t)block) + actual_size );
+
+	gc_object_header* obj = placement_ctor(header, actual_size);
+
+	(void)obj; //remove unsused warning since this is for debug
+	check(obj == gc_get_object_ptr( (void*)data ));
+
+	gc_register_allocation(gc_get_state(), actual_size);
+
+	return (void*)data;
+}
+
+void gc_process_reference(void** ref, worklist_t* worklist)
+{
+	check(!gc_is_in_heap(gc_get_state(), ref));
+
+	gc_object_header* ptr = gc_get_object_ptr(*ref);
+	if(ptr)
+	{
+		if(!ptr->is_forwarded)
+		{
+			gc_copy_object(ptr);
+
+			gc_scan_object(ptr->forward, worklist);
+
+			gc_assign_reference(ref, ptr->forward);
+		}
+		else
+		{
+			//duplication to help debug
+			gc_assign_reference(ref, ptr->forward);
+		}
+	}
+}
+
+void gc_assign_reference(void** ref, gc_object_header* ptr)
+{
+	void* address = (void*)(((intptr_t)ptr) + sizeof(gc_object_header));
+
+	gc_write_aligned_ptr(ref, address);
+}
+
+gc_object_header* gc_copy_object(gc_object_header* ptr)
+{
+	check(!ptr->forward);
+	check(!ptr->is_forwarded);
+	check(gc_pool_is_from_space(gc_pool_of(ptr)));
+
+	gc_memory_pool* pool = gc_pool_of(ptr)->mirror;
+
+	void* new_block = gc_pool_allocate(pool, ptr->size, true);
+
+	memcpy(new_block, ptr, ptr->size);
+
+	gc_object_header* fwd_ptr = placement_copy_ctor(new_block, ptr);
+
+	ptr->forward = fwd_ptr;
+	ptr->is_forwarded = true;
+
+	return fwd_ptr;
+}
+
+void gc_scan_object(gc_object_header* object, worklist_t* worklist)
+{
+	gcpointer_t* field = object->type_chain;
+	while(field)
+	{
+		check(((intptr_t)field) > ((intptr_t)object));
+		check(((intptr_t)field) < ((intptr_t)((intptr_t)object) + object->size));
+
+		check(gc_is_in_to_space(gc_get_state(), &field->ptr));
+
+		intptr_t* ref = &field->ptr;
+		push_back(worklist, ref);
+
+		field = field->next;
+	}
+}
Index: examples/gc_no_raii/src/internal/collector.h
===================================================================
--- examples/gc_no_raii/src/internal/collector.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/collector.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,47 @@
+#pragma once
+
+#include <stdlib.h>
+
+#include "tools.h"
+//
+#include "gcpointers.h"
+#include "state.h"
+#include "internal/gc_tools.h"
+#include "internal/globals.h"
+#include "internal/object_header.h"
+#include "internal/state.h"
+#include "tools/worklist.h"
+
+static inline bool gc_is_managed(void* address)
+{
+	return gc_is_in_heap(gc_get_state(), address);
+}
+
+static inline gc_object_header* gc_get_object_ptr(void* ptr)
+{
+	void* clean = gc_get_aligned_ptr(ptr);
+	return ((gc_object_header*)clean) - 1;
+}
+
+static inline struct gc_memory_pool* gc_pool_of(void* address)
+{
+	return (struct gc_memory_pool*)(((intptr_t)address) & POOL_PTR_MASK);
+}
+
+static inline void gc_conditional_collect()
+{
+	if(gc_needs_collect(gc_get_state()))
+	{
+		gc_collect(gc_get_state());
+	}
+}
+
+gcpointer_t** gc_find_previous_ref(gcpointer_t* target);
+
+void* gc_allocate(size_t size);
+
+void gc_process_reference(void** ref, worklist_t* worklist);
+
+struct gc_object_header* gc_copy_object(struct gc_object_header* ptr);
+
+void gc_scan_object(struct gc_object_header* object, worklist_t* worklist);
Index: examples/gc_no_raii/src/internal/gc_tools.h
===================================================================
--- examples/gc_no_raii/src/internal/gc_tools.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/gc_tools.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,40 @@
+#pragma once
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "tools.h"
+#include "globals.h"
+
+static inline bool gc_is_aligned(void* address)
+{
+	return (((intptr_t)address) & (~OBJECT_PTR_MASK)) == 0;
+}
+
+static inline void* gc_get_aligned_ptr(void* address)
+{
+	return (void*)(((intptr_t)address) & (OBJECT_PTR_MASK));
+}
+
+static inline void* gc_write_aligned_ptr(void** reference, void* address)
+{
+	size_t ref_last_bits = ((intptr_t)*reference) & (~OBJECT_PTR_MASK);
+
+      size_t new_val = ((intptr_t)address) & OBJECT_PTR_MASK;
+
+      (*reference) = (void*)(new_val | ref_last_bits);
+
+	return *reference;
+}
+
+static inline size_t gc_compute_size(size_t size)
+{
+	size_t word_size = ((size - 1) / OBJECT_ALLIGNMENT) + 1;
+	size_t ret = word_size * OBJECT_ALLIGNMENT;
+
+	check(ret >= size);
+	check((ret % OBJECT_ALLIGNMENT) == 0);
+	check( ((size % OBJECT_ALLIGNMENT) != 0) || (ret == size) );
+
+	return ret;
+}
Index: examples/gc_no_raii/src/internal/globals.h
===================================================================
--- examples/gc_no_raii/src/internal/globals.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/globals.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,30 @@
+#pragma once
+
+// #include <stddef.h>
+// #include <stdint.h>
+//
+// static const size_t POOL_SIZE_EXP = 24;
+// static const size_t POOL_SIZE_BYTES = 0x1 << POOL_SIZE_EXP;
+// static const size_t POOL_PTR_MASK = ~(POOL_SIZE_BYTES - 1);
+//
+// static const size_t CARDS_SIZE_EXP = 12;
+// static const size_t CARDS_SIZE_BYTES = 0x1 << CARDS_SIZE_EXP;
+// static const size_t CARDS_OFFSET_MASK = (~(CARDS_SIZE_BYTES - 1)) & (POOL_SIZE_BYTES - 1);
+// static const size_t CARDS_COUNT = POOL_SIZE_BYTES / CARDS_SIZE_BYTES;
+//
+// static const size_t OBJECT_ALLIGNMENT = sizeof(size_t);
+// static const size_t OBJECT_PTR_MASK = ~(OBJECT_ALLIGNMENT - 1);
+
+enum {
+	POOL_SIZE_EXP 	= 24,
+	POOL_SIZE_BYTES 	= 0x1 << POOL_SIZE_EXP,
+	POOL_PTR_MASK 	= ~(POOL_SIZE_BYTES - 1),
+
+	CARDS_SIZE_EXP 	= 12,
+	CARDS_SIZE_BYTES 	= 0x1 << CARDS_SIZE_EXP,
+	CARDS_OFFSET_MASK	= (~(CARDS_SIZE_BYTES - 1)) & (POOL_SIZE_BYTES - 1),
+	CARDS_COUNT 	= POOL_SIZE_BYTES / CARDS_SIZE_BYTES,
+
+	OBJECT_ALLIGNMENT	= sizeof(size_t),
+	OBJECT_PTR_MASK 	= ~(OBJECT_ALLIGNMENT - 1),
+};
Index: examples/gc_no_raii/src/internal/memory_pool.c
===================================================================
--- examples/gc_no_raii/src/internal/memory_pool.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/memory_pool.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,160 @@
+#include "memory_pool.h"
+
+extern "C" {
+	#include <stdlib.h>
+	#include <string.h>
+}
+
+#include "collector.h"
+#include "object_header.h"
+
+const size_t gc_pool_header_size = (size_t)(  &(((gc_memory_pool*)NULL)->start_p) );
+
+void ?{}(gc_memory_pool* this, size_t size, gc_memory_pool* next, gc_memory_pool* mirror, uint8_t type)
+{
+	this->mirror = mirror;
+	this->next = next;
+	this->type_code = type;
+
+	this->cards = ( (card_table_t*)malloc(sizeof(card_table_t)) ){};
+
+	this->end_p = ((uint8_t*)this) + size;
+	this->free_p = this->start_p;
+
+	check( gc_pool_of( (void*)this ) == this);
+	check(this->cards);
+	gc_reset_pool(this);
+}
+
+void ^?{}(gc_memory_pool* this)
+{
+	^(&this->cards){};
+	free(this->cards);
+}
+
+void gc_reset_pool(gc_memory_pool *const this)
+{
+	this->free_p = this->start_p;
+	#ifndef NDEBUG
+		memset(this->start_p, 0xCD, gc_pool_size_total(this));
+	#endif
+
+	check(this->cards);
+	reset(this->cards);
+
+	check(gc_pool_size_left(this) == gc_pool_size_total(this));
+}
+
+void* gc_pool_allocate(gc_memory_pool *const this, size_t size, bool zero)
+{
+	void* ret = this->free_p;
+
+	this->free_p += size;
+
+	if (zero) memset(ret, 0x00, size);
+
+	check(this->cards);
+	register_object(this->cards, ret);
+
+	return ret;
+}
+
+void ?{}(	gc_pool_object_iterator* this,
+		struct gc_object_header* start_object
+		#ifndef NDEBUG
+			, intptr_t pool_start
+			, intptr_t pool_end
+		#endif
+	)
+{
+	this->object = start_object;
+	#ifndef NDEBUG
+		this->lower_limit = pool_start;
+		this->upper_limit = pool_end;
+	#endif
+
+	check( ((intptr_t)start_object) >= this->lower_limit );
+	check( ((intptr_t)start_object) <= this->upper_limit );
+}
+
+void ^?{}( gc_pool_object_iterator* this ) {}
+
+gc_pool_object_iterator gc_pool_iterator_for(gc_memory_pool* const this, void* member)
+{
+	size_t card = card_of(member);
+	intptr_t member_add = (intptr_t)member;
+	intptr_t start_obj;
+
+	do
+	{
+		check(card < CARDS_COUNT);
+		start_obj = (intptr_t)object_at(this->cards, card);
+		check(card != 0 || start_obj);
+		card--;
+	}
+	while(start_obj > member_add || !(start_obj));
+
+	check( start_obj );
+
+	struct gc_object_header* start_obj_typed = (struct gc_object_header*)start_obj;
+
+	return (gc_pool_object_iterator) {
+		start_obj_typed
+		#ifndef NDEBUG
+			, (intptr_t)this->start_p
+			, (intptr_t)this->free_p
+		#endif
+	};
+}
+
+bool ?!=?(const gc_pool_object_iterator lhs, const gc_pool_object_iterator rhs)
+{
+	return lhs.object != rhs.object;
+}
+
+gc_pool_object_iterator begin(gc_memory_pool* const this)
+{
+	struct gc_object_header* start_obj = (struct gc_object_header*)this->start_p;
+	return (gc_pool_object_iterator) {
+		start_obj
+		#ifndef NDEBUG
+			, (intptr_t)this->start_p
+			, (intptr_t)this->free_p
+		#endif
+	};
+}
+
+gc_pool_object_iterator end(gc_memory_pool* const this)
+{
+	return (gc_pool_object_iterator) {
+		(struct gc_object_header*)this->free_p
+		#ifndef NDEBUG
+			, (intptr_t)this->start_p
+			, (intptr_t)this->free_p
+		#endif
+	};
+}
+
+gc_pool_object_iterator* ++?(gc_pool_object_iterator* it)
+{
+	struct gc_object_header* object = it->object;
+	intptr_t next_ptr = ((intptr_t)object) + object->size;
+	check(next_ptr > it->lower_limit);
+	check(next_ptr <= it->upper_limit);
+
+	struct gc_object_header* next_obj = ((struct gc_object_header*)next_ptr);
+	check(next_ptr == it->upper_limit || is_valid(next_obj));
+
+	it->object = next_obj;
+	return it;
+}
+
+const struct gc_object_header* *?(const gc_pool_object_iterator it)
+{
+	return it.object;
+}
+
+struct gc_object_header* *?(gc_pool_object_iterator it)
+{
+	return it.object;
+}
Index: examples/gc_no_raii/src/internal/memory_pool.h
===================================================================
--- examples/gc_no_raii/src/internal/memory_pool.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/memory_pool.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,92 @@
+#pragma once
+
+extern "C" {
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+}
+
+#include "tools.h"
+
+#include "card_table.h"
+#include "globals.h"
+#include "state.h"
+
+struct gc_memory_pool
+{
+	struct memory_pool* mirror;
+	struct memory_pool* next;
+
+	uint8_t type_code;
+
+	card_table_t* cards;
+
+	uint8_t* end_p;
+	uint8_t* free_p;
+	uint8_t start_p[1];
+};
+
+void ?{}(	gc_memory_pool* this,
+		size_t size,
+		gc_memory_pool* next,
+		gc_memory_pool* mirror,
+		uint8_t type
+	);
+
+void ^?{}(gc_memory_pool* this);
+
+struct gc_pool_object_iterator
+{
+	struct gc_object_header* object;
+	#ifndef NDEBUG
+		intptr_t lower_limit;
+		intptr_t upper_limit;
+	#endif
+};
+
+
+void ?{}( 	gc_pool_object_iterator* this,
+		struct gc_object_header* start_object
+		#ifndef NDEBUG
+			, intptr_t pool_start
+			, intptr_t pool_end
+		#endif
+	);
+
+void ^?{}( gc_pool_object_iterator* this );
+
+bool ?!=?(const gc_pool_object_iterator lhs, const gc_pool_object_iterator rhs);
+
+gc_pool_object_iterator begin(gc_memory_pool* const this);
+gc_pool_object_iterator end(gc_memory_pool* const);
+
+gc_pool_object_iterator* ++?(gc_pool_object_iterator* it);
+
+const struct gc_object_header* *?(const gc_pool_object_iterator it);
+struct gc_object_header* *?(gc_pool_object_iterator it);
+
+static inline bool gc_pool_is_from_space(const gc_memory_pool* pool)
+{
+	return gc_from_space_code(gc_get_state()) == pool->type_code;
+}
+
+void gc_reset_pool(gc_memory_pool* const pool);
+
+static inline size_t gc_pool_size_used(const gc_memory_pool* pool)
+{
+	return pool->free_p - pool->start_p;
+}
+
+static inline size_t gc_pool_size_total(const gc_memory_pool* pool)
+{
+	return pool->end_p - pool->start_p;
+}
+
+static inline size_t gc_pool_size_left(const gc_memory_pool* pool)
+{
+	return pool->end_p - pool->free_p;
+}
+
+void* gc_pool_allocate(gc_memory_pool* const pool, size_t size, bool zero);
+
+gc_pool_object_iterator gc_pool_iterator_for(gc_memory_pool* const pool, void* member);
Index: examples/gc_no_raii/src/internal/object_header.c
===================================================================
--- examples/gc_no_raii/src/internal/object_header.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/object_header.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,110 @@
+#include "object_header.h"
+
+#include <stdint.h>
+
+#include "collector.h"
+#include "globals.h"
+#include "gcpointers.h"
+
+void ctor(gc_object_header* const this, size_t inSize)
+{
+	#ifndef NDEBUG
+		this->canary_start = CANARY_VALUE;
+	#endif
+
+	this->size = inSize;
+	this->root_chain = NULL;
+	this->type_chain = NULL;
+	this->forward = NULL;
+	this->is_forwarded = false;
+
+	#ifndef NDEBUG
+		this->canary_end = CANARY_VALUE;
+	#endif
+}
+
+void copy_ctor(gc_object_header* const this, const gc_object_header* const other)
+{
+	#ifndef NDEBUG
+		this->canary_start = CANARY_VALUE;
+	#endif
+
+	this->size = other->size;
+	this->root_chain = other->root_chain;
+	this->type_chain = NULL;
+	this->forward = NULL;
+	this->is_forwarded = false;
+
+	#ifndef NDEBUG
+		this->canary_end = CANARY_VALUE;
+	#endif
+
+	gcpointer_t* root = this->root_chain;
+	while(root)
+	{
+		check(gc_get_object_ptr( (void*)root->ptr ) == other);
+		root->ptr = ((intptr_t)this) + sizeof(gc_object_header);
+
+		check(gc_get_object_ptr( (void*)root->ptr ) == this);
+		root = root->next;
+	}
+
+	gcpointer_t* type = other->type_chain;
+
+	while(type)
+	{
+		check((intptr_t)type < (intptr_t)((intptr_t)other + other->size));
+
+		size_t offset = (intptr_t)type - (intptr_t)other;
+		check(offset < this->size);
+
+		gcpointer_t* member_ptr = (gcpointer_t*)( (intptr_t)this + offset );
+
+		if(!this->type_chain) this->type_chain = member_ptr;
+
+		size_t next_offset = type->next ? (intptr_t)type->next - (intptr_t)other : 0;
+		check(next_offset < this->size);
+
+		gcpointer_t* next_ptr = type->next ? (gcpointer_t*)((intptr_t)this + next_offset) : NULL;
+
+		member_ptr->ptr = type->ptr;
+		member_ptr->next = next_ptr;
+
+		type = type->next;
+	}
+
+	check(is_valid(this));
+}
+
+#ifndef NDEBUG
+	bool is_valid(const gc_object_header* const this)
+	{
+		check((intptr_t)this->canary_start == (intptr_t)CANARY_VALUE);
+		check((intptr_t)this->canary_end == (intptr_t)CANARY_VALUE);
+
+		check(this->is_forwarded == ( (intptr_t)this->forward != (intptr_t)NULL));
+
+		check(this->size < POOL_SIZE_BYTES);
+
+		gcpointer_t* root = this->root_chain;
+		while(root)
+		{
+			checkf(gc_get_object_ptr( (void*)root->ptr ) == this, (const char*)"Expected %lX got %lX\n", gc_get_object_ptr( (void*)root->ptr ), this);
+
+			root = root->next;
+		}
+
+		gcpointer_t* type = this->type_chain;
+		while(type)
+		{
+			check((intptr_t)type > (intptr_t)this);
+			check((intptr_t)type < (intptr_t)(((intptr_t)this) + this->size));
+
+			type = type->next;
+		}
+
+		return true;
+	}
+	#else
+	#error blarg
+#endif
Index: examples/gc_no_raii/src/internal/object_header.h
===================================================================
--- examples/gc_no_raii/src/internal/object_header.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/object_header.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,52 @@
+#pragma once
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include "tools.h"
+
+#ifndef NDEBUG
+	static void* const CANARY_VALUE = (void*)0xCAFEBABACAFEBABA;
+#endif
+
+struct gcpointer_t;
+struct gc_object_header;
+
+struct gc_object_header
+{
+	#ifndef NDEBUG
+		void* canary_start;
+	#endif
+
+	size_t		size;
+	gcpointer_t* 	root_chain;
+	gcpointer_t*	type_chain;
+	gc_object_header*	forward;
+	bool			is_forwarded;
+
+	#ifndef NDEBUG
+		void* canary_end;
+	#endif
+};
+
+void ctor(gc_object_header* const this, size_t size);
+void copy_ctor(gc_object_header* const this, const gc_object_header* const other);
+
+static inline gc_object_header* placement_ctor(void* address, size_t size)
+{
+	gc_object_header* const this = (gc_object_header* const) address;
+	ctor(this, size);
+	return this;
+}
+
+static inline gc_object_header* placement_copy_ctor(void* address, const gc_object_header* const other)
+{
+	gc_object_header* const this = (gc_object_header* const) address;
+	copy_ctor(this, other);
+	return this;
+}
+
+#ifndef NDEBUG
+	bool is_valid(const gc_object_header* const this);
+#endif
Index: examples/gc_no_raii/src/internal/state.c
===================================================================
--- examples/gc_no_raii/src/internal/state.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/state.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,312 @@
+#include "state.h"
+
+#include <stdlib.hfa>
+
+//general purpouse includes
+#include "tools.h"
+
+//platform abstraction includes
+#include "allocate-pool.h"
+
+//gc internal includes
+#include "collector.h"
+#include "globals.h"
+#include "memory_pool.h"
+#include "object_header.h"
+#include "tools/worklist.h"
+
+void gc_state_swap(gc_state *const this);
+void gc_state_sweep_roots(gc_state *const this, worklist_t* worklist);
+void gc_state_clear(gc_state *const this);
+void gc_state_calc_usage(gc_state *const this);
+
+#ifndef NDEBUG
+	bool gc_state_roots_match(gc_state *const this);
+	bool gc_state_no_from_space_ref(gc_state *const this);
+#endif
+
+static gc_state s;
+
+gc_state* gc_get_state()
+{
+	if(!s.is_initialized) ctor(&s);
+	return &s;
+}
+
+void ctor(gc_state *const this)
+{
+	this->from_code = 0;
+	this->to_space = NULL;
+	this->from_space = NULL;
+	this->total_space = 0;
+	this->used_space = 0;
+	ctor(&this->pools_table);
+
+	gc_allocate_pool(this);
+
+	this->is_initialized = true;
+}
+
+void dtor(gc_state *const this)
+{
+	dtor(&this->pools_table);
+	this->is_initialized = false;
+}
+
+bool gc_is_in_heap(const gc_state* const this, const void* const address)
+{
+	gc_memory_pool* target_pool = gc_pool_of(address);
+
+	gc_memory_pool** first = cbegin(&this->pools_table);
+	gc_memory_pool** last = cend(&this->pools_table);
+	gc_memory_pool** result = find(first, &last, target_pool);
+	return result != last && gc_pool_is_from_space(*result);
+}
+
+bool gc_is_in_to_space(const gc_state* const this, const void* const address)
+{
+	gc_memory_pool* target_pool = gc_pool_of(address);
+
+	gc_memory_pool** first = cbegin(&this->pools_table);
+	gc_memory_pool** last = cend(&this->pools_table);
+	gc_memory_pool** result = find(first, &last, target_pool);
+	return result != last && !gc_pool_is_from_space(*result);
+}
+
+gc_object_header* gc_get_object_for_ref(gc_state* state, void* member)
+{
+	volatile int stage = 0;
+	intptr_t target = ((intptr_t)member);
+	if(!gc_is_in_heap(state, member)) return NULL;
+	stage++;
+
+	gc_memory_pool* pool = gc_pool_of(member);
+	stage++;
+	gc_pool_object_iterator it = gc_pool_iterator_for(pool, member);
+	stage++;
+	gc_pool_object_iterator end = end(pool);
+	stage++;
+
+	while(it != end)
+	{
+		gc_object_header* object = *it;
+		check(object);
+		check( is_valid(object) );
+		{
+			intptr_t start = ((intptr_t)object);
+			intptr_t end = ((intptr_t)start + object->size);
+			if(start < target && end > target)
+			{
+				return object;
+			}
+		}
+		stage++;
+		++it;
+	}
+
+	checkf( (int) 0, "is_in_heap() and iterator_for() return inconsistent data");
+	abort();
+	return NULL;
+}
+
+void* gc_try_allocate(gc_state* const this, size_t size)
+{
+	gc_memory_pool* pool = this->from_space;
+	while(pool != (gc_memory_pool*)0)
+	{
+		if(gc_pool_size_left(pool) > size)
+		{
+			return gc_pool_allocate(pool, size, true);
+		}
+		pool = pool->next;
+	}
+
+	return (void*)0;
+}
+
+void gc_allocate_pool(gc_state *const this)
+{
+	gc_memory_pool* old_from_space = this->from_space;
+      gc_memory_pool* old_to_space = this->to_space;
+
+      this->from_space = (gc_memory_pool*)(pal_allocPool(POOL_SIZE_BYTES, 1));
+      this->to_space   = (gc_memory_pool*)(pal_allocPool(POOL_SIZE_BYTES, 1));
+
+      this->from_space{ POOL_SIZE_BYTES, old_from_space, this->to_space,   this->from_code };
+      this->to_space  { POOL_SIZE_BYTES, old_to_space,   this->from_space, (~this->from_code) & 0x01 };
+
+	this->total_space += gc_pool_size_used(this->from_space);
+
+	push_back(&this->pools_table, this->from_space);
+	push_back(&this->pools_table, this->to_space);
+}
+
+void gc_collect(gc_state* const this)
+{
+	// DEBUG("collecting");
+	// DEBUG("previous usage " << this->used_space << " / " << this->total_space);
+
+	worklist_t worklist;
+	ctor(&worklist);
+	gc_state_sweep_roots(this, &worklist);
+
+	while(!empty(&worklist))
+	{
+		intptr_t* ref = back(&worklist);
+		pop_back(&worklist);
+		gc_process_reference((void**)ref, &worklist);
+	}
+
+	check(gc_state_roots_match(this));
+	check(gc_state_no_from_space_ref(this));
+
+	gc_state_swap(this);
+
+	gc_state_calc_usage(this);
+
+	if(gc_needs_collect(this)) gc_allocate_pool(this);
+
+	// DEBUG("done");
+	dtor(&worklist);
+}
+
+void gc_state_swap(gc_state* const this)
+{
+	swap(&this->from_space, &this->to_space);
+
+	gc_memory_pool* pool = this->to_space;
+	while(pool)
+	{
+		gc_reset_pool(pool);
+		pool = pool->next;
+	}
+
+	this->from_code = (~this->from_code) & 0x01;
+
+	#ifndef NDEBUG
+		{
+			gc_memory_pool* pool = this->from_space;
+			while(pool)
+			{
+				check(gc_pool_is_from_space(pool));
+				pool = pool->next;
+			}
+
+			pool = this->to_space;
+			while(pool)
+			{
+				check(!gc_pool_is_from_space(pool));
+				pool = pool->next;
+			}
+		}
+	#endif
+}
+
+void gc_state_sweep_roots(gc_state* const this, worklist_t* worklist)
+{
+	gc_memory_pool* pool = this->from_space;
+	while(pool)
+	{
+		gc_pool_object_iterator it = begin(pool);
+		gc_pool_object_iterator end = end(pool);
+		for(;it != end; ++it)
+		{
+			gc_object_header* object = *it;
+			if(!object->root_chain) continue;
+
+			gc_copy_object(object);
+
+			gc_scan_object(object->forward, worklist);
+		}
+
+		pool = pool->next;
+	}
+}
+
+void gc_state_clear(gc_state* const this)
+{
+	gc_memory_pool* pool = this->from_space;
+	while(pool)
+	{
+		gc_reset_pool(pool);
+		pool = pool->next;
+	}
+
+	pool = this->to_space;
+	while(pool)
+	{
+		gc_reset_pool(pool);
+		pool = pool->next;
+	}
+}
+
+void gc_state_calc_usage(gc_state* const this)
+{
+	this->total_space = 0;
+	this->used_space = 0;
+
+	gc_memory_pool* pool = this->from_space;
+	while(pool)
+	{
+		size_t size = gc_pool_size_total(pool);
+		size_t used = gc_pool_size_used(pool);
+		check(used <= size);
+		this->total_space += size;
+		this->used_space += used;
+
+		pool = pool->next;
+	}
+}
+
+#ifndef NDEBUG
+	bool gc_state_roots_match(gc_state* const this)
+	{
+		gc_memory_pool* pool = this->to_space;
+		while(pool)
+		{
+			size_t size = 0;
+			gc_pool_object_iterator it = begin(pool);
+			gc_pool_object_iterator end = end(pool);
+			for(;it != end; ++it)
+			{
+				gc_object_header* object = *it;
+				size += object->size;
+
+				gcpointer_t* ptr = object->root_chain;
+				while(ptr)
+				{
+					check(gc_get_object_ptr( (void*)ptr->ptr ) == object);
+					ptr = ptr->next;
+				}
+			}
+
+			checkf(size + gc_pool_size_left(pool) == gc_pool_size_total(pool),
+				(const char*)"expected %lu + %lu == %lu\n",
+				(size_t)size,
+				(size_t)gc_pool_size_left(pool),
+				(size_t)gc_pool_size_total(pool));
+
+			pool = pool->next;
+		}
+
+		return true;
+	}
+
+	bool gc_state_no_from_space_ref(gc_state* const this)
+	{
+		gc_memory_pool* pool = this->to_space;
+		while(pool)
+		{
+			void** potential_ref = (void**)pool->start_p;
+			while(potential_ref < (void**)pool->free_p)
+			{
+				check(!gc_is_in_heap(this, *potential_ref));
+				potential_ref++;
+			}
+
+			pool = pool->next;
+		}
+
+		return true;
+	}
+#endif
Index: examples/gc_no_raii/src/internal/state.h
===================================================================
--- examples/gc_no_raii/src/internal/state.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/internal/state.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,64 @@
+#pragma once
+
+#ifdef __cforall
+extern "C" {
+#endif
+#include <stddef.h>
+#include <stdint.h>
+#ifdef __cforall
+}
+#endif
+#include <fstream.hfa>
+#include <vector>
+
+#include "tools.h"
+
+typedef vector(struct gc_memory_pool*, heap_allocator(struct gc_memory_pool*)) pools_table_t;
+
+struct gc_state
+{
+	bool is_initialized;
+	uint8_t from_code;
+	struct gc_memory_pool* to_space;
+	struct gc_memory_pool* from_space;
+
+	size_t total_space;
+	size_t used_space;
+
+	pools_table_t 	pools_table;
+	size_t 		pools_table_count;
+};
+
+void ctor(gc_state* const state);
+
+void dtor(gc_state* const state);
+
+gc_state* gc_get_state();
+
+static inline bool gc_needs_collect(gc_state* state)
+{
+	// sout | "Used Space: " | state->used_space | " bytes" | endl;
+	return state->used_space * 2 > state->total_space;
+}
+
+void gc_collect(gc_state* const this);
+
+void* gc_try_allocate(gc_state* const this, size_t size);
+
+void gc_allocate_pool(gc_state* const state);
+
+bool gc_is_in_heap(const gc_state* const state, const void* const address);
+
+bool gc_is_in_to_space(const gc_state* const state, const void* const address);
+
+static inline uint8_t gc_from_space_code(const gc_state *const this)
+{
+	return this->from_code;
+}
+
+struct gc_object_header* gc_get_object_for_ref(gc_state* state, void*);
+
+static inline void gc_register_allocation(gc_state* state, size_t size)
+{
+	state->used_space += size;
+}
Index: examples/gc_no_raii/src/test_include.c
===================================================================
--- examples/gc_no_raii/src/test_include.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/test_include.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,4 @@
+/* definition to expand macro for string conversion*/
+#define xstr(s) sstr(s)
+#define sstr(s) #s
+#include xstr(../test/TEST_FILE.c)
Index: examples/gc_no_raii/src/tools.h
===================================================================
--- examples/gc_no_raii/src/tools.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/tools.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,37 @@
+#pragma once
+
+#include "tools/checks.h"
+#include "tools/print.h"
+
+// forall(otype T)
+// inline void swap(T* const a, T* const b)
+// {
+// 	T* temp = a;
+// 	*a = *b;
+// 	*b = *temp;
+// }
+
+trait has_equal(otype T)
+{
+	signed int ?==?(T a, T b);
+};
+
+trait InputIterator_t(otype T, otype InputIterator)
+{
+	signed int ?==?(InputIterator a, InputIterator b);
+	signed int ?!=?(InputIterator a, InputIterator b);
+	T *?(InputIterator a);
+	InputIterator ++?(InputIterator* a);
+	InputIterator ?++(InputIterator* a);
+};
+
+forall(otype T | has_equal(T), otype InputIterator | InputIterator_t(T, InputIterator))
+static inline InputIterator find( InputIterator first, const InputIterator* const last, T val)
+{
+	while ( first != *last)
+	{
+		if(*first == val) return first;
+		++first;
+	}
+	return *last;
+}
Index: examples/gc_no_raii/src/tools/checks.h
===================================================================
--- examples/gc_no_raii/src/tools/checks.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/tools/checks.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,29 @@
+#pragma once
+
+#ifdef NDEBUG
+
+#define check(x)
+
+#define checkf(x, format, ...)
+
+#warning no debug checks
+
+#else
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#define check(x) do {\
+	if(!(x)) {\
+		printf("CHECK failed : %s at %s:%i\n", #x, __FILE__, __LINE__);\
+		abort();\
+	}}while( (int)0 )\
+
+#define checkf(x, ...) do {\
+	if(!(x)) {\
+		printf("CHECK failed : %s at %s:%i\n", #x, __FILE__, __LINE__);\
+		printf(__VA_ARGS__);\
+		abort();\
+	}}while( (int)0 )\
+
+#endif //NO_CHECKS
Index: examples/gc_no_raii/src/tools/print.c
===================================================================
--- examples/gc_no_raii/src/tools/print.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/tools/print.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,5 @@
+#include "tools.h"
+
+#ifndef NDEBUG
+	// ofstream *sout = ofstream_stdout();
+#endif
Index: examples/gc_no_raii/src/tools/print.h
===================================================================
--- examples/gc_no_raii/src/tools/print.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/tools/print.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,13 @@
+#pragma once
+
+// #ifndef NDEBUG
+//
+// #include <fstream.hfa>
+//
+// #define DEBUG_OUT(x) sout | x | endl;
+//
+// #else
+
+#define DEBUG_OUT(x)
+
+// #endif //NO_CHECKS
Index: examples/gc_no_raii/src/tools/worklist.h
===================================================================
--- examples/gc_no_raii/src/tools/worklist.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/src/tools/worklist.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,14 @@
+#pragma once
+
+#ifdef __cforall
+extern "C" {
+#endif
+#include <stddef.h>
+#include <stdint.h>
+#ifdef __cforall
+}
+#endif
+
+#include <vector.hfa>
+
+typedef vector(intptr_t*, heap_allocator(intptr_t*)) worklist_t;
Index: examples/gc_no_raii/test/badlll.c
===================================================================
--- examples/gc_no_raii/test/badlll.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/test/badlll.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,71 @@
+#include "gc.h"
+
+#include <stdio.h>
+
+struct List_t
+{
+	gcpointer(List_t) next;
+	int val;
+};
+
+typedef gcpointer(List_t) LLL;
+
+#define MAX (1024 * 1)
+
+LLL buildLLL(int sz)
+{
+	int i = 0;
+	LLL ll0;
+
+	gcmalloc( &ll0 );
+	List_t* ll0_ptr = get( &ll0 );
+	ll0_ptr->val = i;
+	LLL lll = ll0;
+
+	for (i = 1; i < sz; i++)
+	{
+		LLL llc;
+		gcmalloc( &llc );
+		List_t* llc_ptr = get( &llc );
+		llc_ptr->val = i;
+		List_t* lll_ptr = get( &lll );
+		lll_ptr->next = llc;
+
+		lll = llc;
+	}
+
+	check(is_valid( &ll0.internal ));
+
+	return ll0;
+}
+
+void testLLL(LLL lll)
+{
+	unsigned char *counted;
+
+	counted = (unsigned char *) calloc(MAX, sizeof(unsigned char));
+	while (lll)
+	{
+		List_t* lll_ptr = get( &lll );
+		counted[lll_ptr->val]++;
+		if (counted[lll_ptr->val] > 1)
+		{
+			fprintf(stderr, "ERROR! Encountered %d twice!\n", lll_ptr->val);
+			exit(1);
+		}
+		lll = lll_ptr->next;
+	}
+
+	return;
+}
+
+int main(void)
+{
+	LLL mylll;
+
+	mylll = buildLLL(MAX);
+
+	testLLL(mylll);
+
+	return 0;
+}
Index: examples/gc_no_raii/test/gctest.c
===================================================================
--- examples/gc_no_raii/test/gctest.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/test/gctest.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+#include <fstream.hfa>
+
+#include "gc.h"
+#include "internal/collector.h"
+
+#warning default test
+
+int main() {
+	sout | "Bonjour au monde!\n";
+
+	gcpointer(int) theInt;
+	gcmalloc(&theInt);
+
+	for(int i = 0; i < 10; i++) {
+		int a;
+		{
+			gcpointer(int) anInt;
+			gcmalloc(&anInt);
+		}
+		int p;
+	}
+
+	gc_collect(gc_get_state());
+	gc_conditional_collect();
+}
Index: examples/gc_no_raii/test/operators.c
===================================================================
--- examples/gc_no_raii/test/operators.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/gc_no_raii/test/operators.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,22 @@
+#include "gc.h"
+
+#include <assert.h>
+
+int main(int argc, char *argv[])
+{
+	gcpointer(int) test, test1;
+
+	if(test != test1) { return 1; }
+	if(test == test1) { return 1; }
+	// if(test == 0)  { return 1; }
+	// if(test != 0)  { return 1; }
+	// if(test) { return 1; }
+
+	// *test.internal.ptr = 3;
+	// int i = *test;
+
+	gcmalloc();
+	// test = gcmalloc();
+
+	return 0;
+}
Index: examples/huge.c
===================================================================
--- examples/huge.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/huge.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,26 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// huge.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Mar  8 22:16:32 2016
+// Update Count     : 2
+//
+
+int huge( int n, forall( otype T ) T (*f)( T ) ) {
+	if ( n <= 0 )
+		return f( 0 );
+	else
+		return huge( n - 1, f( f ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa huge.c" //
+// End: //
Index: examples/includes.c
===================================================================
--- examples/includes.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/includes.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,248 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// includes.c -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Nov 15 23:06:24 2017
+// Update Count     : 597
+//
+
+// ***********************************************
+// USE -std=c99 WITH gxx TO GET SAME OUTPUT AS cfa
+// ***********************************************
+
+#ifdef __CFA__
+extern "C" {
+#endif // __CFA__
+
+#if 1
+#define _GNU_SOURCE
+#include <a.out.h>
+#include <aio.h>
+#include <aliases.h>
+#include <alloca.h>
+#include <ansidecl.h>
+#include <ar.h>
+#include <argp.h>
+#include <argz.h>
+#include <assert.h>
+//#include <bfd.h>
+// #include <bfdlink.h>				// keyword with
+#include <byteswap.h>
+#include <bzlib.h>
+#include <cblas.h>
+#include <cblas_f77.h>
+#include <complex.h>
+#include <com_err.h>
+#include <cpio.h>
+#include <crypt.h>
+#include <ctype.h>
+#include <curses.h>
+#include <dialog.h>
+#include <dirent.h>
+#include <dis-asm.h>
+#include <dlfcn.h>
+#include <dlg_colors.h>
+#include <dlg_config.h>
+#include <dlg_keys.h>
+#include <elf.h>
+#include <endian.h>
+#include <envz.h>
+#include <err.h>
+#include <errno.h>
+#include <error.h>
+#include <eti.h>
+#include <evdns.h>
+#include <event.h>
+
+// #include <evhttp.h>
+// #include <sys/queue.h>
+// #include <evrpc.h>					// evrpc.h depends on sys/queue.h
+// #include <evutil.h>
+// #include <execinfo.h>
+// #include <expat.h>
+// #include <expat_config.h>
+// #include <expat_external.h>
+// #include <fcntl.h>
+// #include <features.h>
+// #include <fenv.h>
+// #include <fmtmsg.h>
+// #include <fnmatch.h>
+// #include <form.h>
+// #include <fpu_control.h>
+// #include <fstab.h>
+// #include <fts.h>
+// #include <ftw.h>
+// #include <gconv.h>
+// #include <getopt.h>
+// #include <gettext-po.h>
+// #include <glob.h>
+// #include <gmp.h>
+// #include <gnu-versions.h>
+// #include <grp.h>
+// #include <gshadow.h>
+// #include <gssapi.h>
+// #include <hwloc.h>					// keyword thread (setjmp)
+// #include <iconv.h>
+// #include <idna.h>
+// #include <idn-free.h>
+// #include <idn-int.h>
+// #include <idn-int.h>
+// #include <ifaddrs.h>
+// #include <inttypes.h>
+// #include <jerror.h>
+
+//#include <jmorecfg.h>
+//#include <jpegint.h>
+// #include <jpeglib.h>
+// #include <kdb.h>
+// #include <krb5.h>					// keyword enable
+// #include <langinfo.h>
+// #include <lastlog.h>
+// #include <lber.h>
+// #include <lber_types.h>
+// #include <ldap.h>
+// #include <ldap_cdefs.h>
+// #include <ldap_features.h>
+// #include <ldap_schema.h>
+// #include <ldap_utf8.h>
+// #include <ldif.h>
+// #include <libgen.h>
+// #include <libintl.h>
+// #include <libio.h>
+// #include <libtasn1.h>
+// #include <libudev.h>
+// #include <limits.h>
+// #include <link.h>
+// #include <locale.h>
+// #include <ltdl.h>
+// #include <lzma.h>
+// #include <malloc.h>
+// #include <math.h>
+// #include <mcheck.h>
+// #include <memory.h>
+// #include <menu.h>
+// #include <mntent.h>
+// #include <monetary.h>
+// #include <mqueue.h>
+// #include <ncurses.h>
+// #include <ncurses_dll.h>
+// #include <nc_tparm.h>
+// #include <netdb.h>
+// #include <nl_types.h>
+// #include <nss.h>
+// #include <numa.h>
+// #include <numacompat1.h>
+// #include <numaif.h>
+// #include <obstack.h>
+// #include <panel.h>
+// #include <paths.h>
+// #include <pciaccess.h>
+// #include <pcre.h>
+// //#include <pcreposix.h>			// conflicts with regex.h
+// #include <plugin-api.h>
+// #include <png.h>										// setjmp
+// #include <pngconf.h>									// setjmp
+// #include <poll.h>
+// #include <pr29.h>
+// #include <printf.h>
+// #include <profile.h>
+// #include <pthread.h>									// setjmp
+// #include <pty.h>
+// #include <punycode.h>
+// #include <pwd.h>
+// #define INIT ;						// needed for regex.h
+// #define GETC() 'a'
+// #define PEEKC() 'a'
+// #define UNGETC( c ) ;
+// #define RETURN( ptr ) ;
+// #define ERROR( val ) ;
+// #include <regex.h>
+// //#include <regexp.h>				// GNU C Library no longer implements
+// #include <resolv.h>
+// #include <re_comp.h>
+// #include <sched.h>
+// #include <search.h>
+// #include <semaphore.h>
+// #include <setjmp.h>
+// #include <sgtty.h>
+// #include <shadow.h>
+// #include <signal.h>
+// #include <spawn.h>
+// #include <stab.h>
+// #include <stdatomic.h>
+// #include <stdarg.h>
+// #include <stdbool.h>
+// #include <stdint.h>
+// #include <stddef.h>
+// #include <stdio.h>
+// #include <stdio_ext.h>
+// #include <stdlib.h>
+// #include <string.h>
+// #include <stringprep.h>
+// #include <strings.h>
+// #include <stropts.h>
+// #include <sudo_plugin.h>
+// #include <symcat.h>
+// #include <syscall.h>
+// #include <sysexits.h>
+// #include <syslog.h>
+// #include <tar.h>
+// #include <term.h>
+// #include <termcap.h>
+// #include <termio.h>
+// #include <termios.h>
+// //#include <term_entry.h>
+// #include <tgmath.h>
+// #include <thread_db.h>			// CFA bug
+// #include <tic.h>
+// #include <time.h>
+// #include <tld.h>
+// #include <ttyent.h>
+// #include <turbojpeg.h>
+// #include <ucontext.h>
+// #include <ulimit.h>
+// #include <unctrl.h>
+// #include <unistd.h>
+// #include <ustat.h>
+// #include <utime.h>
+// #include <utmp.h>
+// #include <utmpx.h>
+// #include <wait.h>
+// #include <wchar.h>
+// #include <wctype.h>
+// #include <wordexp.h>
+// #include <xlocale.h>
+// #include <values.h>
+// #include <zconf.h>
+// #include <zlib.h>
+// #include <_G_config.h>
+
+// #include <jpeglib.h>				// after stdlib.h/stdio.h
+// #include <jpegint.h>
+// #include <jmorecfg.h>
+#if 0
+#endif // 0
+
+#else
+
+#define _GNU_SOURCE
+
+#include <setjmp.h>
+
+#endif // 0
+
+#ifdef __CFA__
+} // extern "C"
+#endif // __CFA__
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa includes.c" //
+// End: //
Index: examples/index.h
===================================================================
--- examples/index.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/index.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// index.h -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Mar  2 18:10:46 2016
+// Update Count     : 2
+//
+
+trait index( type T ) {
+	T ?+?( T, T );
+	T ?-?( T, T );
+	const T 0, 1;
+};
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa index.c" //
+// End: //
Index: examples/it_out.c
===================================================================
--- examples/it_out.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/it_out.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,69 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// it_out.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Mar  8 22:14:39 2016
+// Update Count     : 8
+//
+
+typedef unsigned long streamsize_type;
+
+trait ostream( dtype os_type ) {
+	os_type *write( os_type *, const char *, streamsize_type );
+	int fail( os_type * );
+};
+
+trait writeable( otype T ) {
+	forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, T );
+};
+
+forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, char );
+forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, int );
+forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, const char * );
+
+trait istream( dtype is_type ) {
+	is_type *read( is_type *, char *, streamsize_type );
+	is_type *unread( is_type *, char );
+	int fail( is_type * );
+	int eof( is_type * );
+};
+
+trait readable( otype T ) {
+	forall( dtype is_type | istream( is_type ) ) is_type * ?<<?( is_type *, T );
+};
+
+forall( dtype is_type | istream( is_type ) ) is_type * ?>>?( is_type *, char* );
+forall( dtype is_type | istream( is_type ) ) is_type * ?>>?( is_type *, int* );
+
+trait iterator( otype iterator_type, otype elt_type ) {
+	iterator_type ?++( iterator_type* );
+	iterator_type ++?( iterator_type* );
+	int ?==?( iterator_type, iterator_type );
+	int ?!=?( iterator_type, iterator_type );
+
+	lvalue elt_type *?( iterator_type );
+};
+
+forall( otype elt_type | writeable( elt_type ),
+		otype iterator_type | iterator( iterator_type, elt_type ),
+		dtype os_type | ostream( os_type ) )
+void write_all( iterator_type begin, iterator_type end, os_type *os );
+
+forall( otype elt_type | writeable( elt_type ),
+		otype iterator_type | iterator( iterator_type, elt_type ),
+		dtype os_type | ostream( os_type ) )
+void write_all( elt_type begin, iterator_type end, os_type *os ) {
+	os << begin;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa it_out.c" //
+// End: //
Index: examples/multicore.c
===================================================================
--- examples/multicore.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/multicore.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+#include <kernel.hfa>
+#include <thread.hfa>
+
+struct MyThread { thread_desc __thrd; };
+
+DECL_THREAD(MyThread);
+
+void ?{}( MyThread * this ) {}
+
+void main( MyThread* this ) {
+	for(int i = 0; i < 1000000; i++) {
+		yield();
+	}
+}
+
+int main(int argc, char* argv[]) {
+	// sout | "User main begin" | endl;
+	{
+		processor p;
+		{
+			scoped(MyThread) f[4];
+		}
+	}
+	// sout | "User main end" | endl;
+}
Index: examples/new.c
===================================================================
--- examples/new.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/new.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,32 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// new.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Mar  8 22:13:20 2016
+// Update Count     : 4
+//
+
+forall( otype T )
+void f( T *t ) {
+	t--;
+	*t;
+	++t;
+	t += 2;
+	t + 2;
+	--t;
+	t -= 2;
+	t - 4;
+	t[7];
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa new.c" //
+// End: //
Index: examples/poly-bench.c
===================================================================
--- examples/poly-bench.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/poly-bench.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,207 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// poly-bench.cc -- 
+//
+// Author           : Aaron Moss
+// Created On       : Sat May 16 07:26:30 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:25:19 2015
+// Update Count     : 5
+//
+
+extern "C" {
+#include <stdio.h>
+//#include "my_time.h"
+}
+
+#define N 200000000
+
+struct ipoint {
+	int x;
+	int y;
+};
+
+struct ipoint ?+?(struct ipoint a, struct ipoint b) {
+	struct ipoint r;
+	r.x = a.x + b.x;
+	r.y = a.y + b.y;
+	return r;
+}
+
+struct ipoint ?-?(struct ipoint a, struct ipoint b) {
+	struct ipoint r;
+	r.x = a.x - b.x;
+	r.y = a.y - b.y;
+	return r;
+}
+
+struct ipoint ?*?(struct ipoint a, struct ipoint b) {
+	struct ipoint r;
+	r.x = a.x * b.x;
+	r.y = a.y * b.y;
+	return r;
+}
+
+struct dpoint {
+	double x;
+	double y;
+};
+
+struct dpoint ?+?(struct dpoint a, struct dpoint b) {
+	struct dpoint r;
+	r.x = a.x + b.x;
+	r.y = a.y + b.y;
+	return r;
+}
+
+struct dpoint ?-?(struct dpoint a, struct dpoint b) {
+	struct dpoint r;
+	r.x = a.x - b.x;
+	r.y = a.y - b.y;
+	return r;
+}
+
+struct dpoint ?*?(struct dpoint a, struct dpoint b) {
+	struct dpoint r;
+	r.x = a.x * b.x;
+	r.y = a.y * b.y;
+	return r;
+}
+
+int a2b2_mono_int(int a, int b) {
+	return (a - b)*(a + b);
+}
+
+double a2b2_mono_double(double a, double b) {
+	return (a - b)*(a + b);
+}
+
+struct ipoint a2b2_mono_ipoint(struct ipoint a, struct ipoint b) {
+	return (a - b)*(a + b);
+}
+
+struct dpoint a2b2_mono_dpoint(struct dpoint a, struct dpoint b) {
+	return (a - b)*(a + b);
+}
+
+forall(type T | { T ?+?(T,T); T ?-?(T,T); T ?*?(T,T); })
+T a2b2_poly(T a, T b) {
+	return (a - b)*(a + b);
+}
+
+typedef int clock_t;
+long ms_between(clock_t start, clock_t end) {
+//	return (end - start) / (CLOCKS_PER_SEC / 1000);
+	return 0;
+}
+int clock() { return 3; }
+
+int main(int argc, char** argv) {
+	clock_t start, end;
+	int i;
+	
+	int a, b;
+	double c, d;
+	struct ipoint p, q;
+	struct dpoint r, s;
+	
+	printf("\n## a^2-b^2 ##\n");
+	
+	a = 5, b = 3;
+	start = clock();
+	for (i = 0; i < N/2; ++i) {
+		a = a2b2_mono_int(a, b);
+		b = a2b2_mono_int(b, a);
+	}
+	end = clock();
+	printf("mono_int:   %7ld  [%d,%d]\n", ms_between(start, end), a, b);
+	
+	a = 5, b = 3;
+	start = clock();
+	for (i = 0; i < N/2; ++i) {
+		a = a2b2_poly(a, b);
+		b = a2b2_poly(b, a);
+	}
+	end = clock();
+	printf("poly_int:   %7ld  [%d,%d]\n", ms_between(start, end), a, b);
+	
+/*	{
+	a = 5, b = 3;
+	// below doesn't actually work; a2b2_poly isn't actually assigned, just declared
+	* [int] (int, int) a2b2_poly = a2b2_mono_int;
+	start = clock();
+	for (i = 0; i < N/2; ++i) {
+//			printf("\t[%d,%d]\n", a, b);
+a = a2b2_poly(a, b);
+//			printf("\t[%d,%d]\n", a, b);
+b = a2b2_poly(b, a);
+}
+end = clock();
+printf("spec_int:   %7ld  [%d,%d]\n", ms_between(start, end), a, b);
+}
+*/	
+	c = 5.0, d = 3.0;
+	start = clock();
+	for (i = 0; i < N/2; ++i) {
+		c = a2b2_mono_double(c, d);
+		d = a2b2_mono_double(d, c);
+	}
+	end = clock();
+	printf("mono_double:%7ld  [%f,%f]\n", ms_between(start, end), c, d);
+		
+	c = 5.0, d = 3.0;
+	start = clock();
+	for (i = 0; i < N/2; ++i) {
+		c = a2b2_poly(c, d);
+		d = a2b2_poly(d, c);
+	}
+	end = clock();
+	printf("poly_double:%7ld  [%f,%f]\n", ms_between(start, end), c, d);
+	
+	p.x = 5, p.y = 5, q.x = 3, q.y = 3;
+	start = clock();
+	for (i = 0; i < N/2; ++i) {
+		p = a2b2_mono_ipoint(p, q);
+		q = a2b2_mono_ipoint(q, p);
+	}
+	end = clock();
+	printf("mono_ipoint:%7ld  [(%d,%d),(%d,%d)]\n", ms_between(start, end), p.x, p.y, q.x, q.y);
+		
+	p.x = 5, p.y = 5, q.x = 3, q.y = 3;
+	start = clock();
+	for (i = 0; i < N/2; ++i) {
+		p = a2b2_poly(p, q);
+		q = a2b2_poly(q, p);
+	}
+	end = clock();
+	printf("poly_ipoint:%7ld  [(%d,%d),(%d,%d)]\n", ms_between(start, end), p.x, p.y, q.x, q.y);
+	
+	r.x = 5.0, r.y = 5.0, s.x = 3.0, s.y = 3.0;
+	start = clock();
+	for (i = 0; i < N/2; ++i) {
+		r = a2b2_mono_dpoint(r, s);
+		s = a2b2_mono_dpoint(s, r);
+	}
+	end = clock();
+	printf("mono_dpoint:%7ld  [(%f,%f),(%f,%f)]\n", ms_between(start, end), r.x, r.y, s.x, s.y);
+		
+	r.x = 5.0, r.y = 5.0, s.x = 3.0, s.y = 3.0;
+	start = clock();
+	for (i = 0; i < N/2; ++i) {
+		r = a2b2_poly(r, s);
+		s = a2b2_poly(s, r);
+	}
+	end = clock();
+	printf("poly_dpoint:%7ld  [(%f,%f),(%f,%f)]\n", ms_between(start, end), r.x, r.y, s.x, s.y);
+
+	return 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa poly-bench.c" //
+// End: //
Index: examples/prolog.c
===================================================================
--- examples/prolog.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/prolog.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,50 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// prolog.c --
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Mar  8 22:09:39 2016
+// Update Count     : 5
+//
+
+#include <fstream.hfa>
+
+void printResult( int x ) { sout | "int" | endl; }
+void printResult( double x ) { sout | "double" | endl; }
+void printResult( char * x ) { sout | "char*" | endl; }
+
+void is_arithmetic( int x ) {}
+void is_arithmetic( double x ) {}
+
+void is_integer( int x ) {}
+
+trait ArithmeticType( otype T ) {
+	void is_arithmetic( T );
+};
+
+trait IntegralType( otype T | ArithmeticType( T ) ) {
+	void is_integer( T );
+};
+
+forall( otype T | IntegralType( T ) | { void printResult( T ); } )
+void hornclause( T param ) {
+	printResult( param );
+}
+
+int main() {
+	int x;
+	double x;
+	char * x;
+	hornclause( x );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa prolog.c" //
+// End: //
Index: examples/quad.c
===================================================================
--- examples/quad.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/quad.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,36 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// quad.c --
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Mar  8 22:07:02 2016
+// Update Count     : 8
+//
+
+#include <fstream.hfa>
+
+forall( otype T | { T ?*?( T, T ); } )
+T square( T t ) {
+	return t * t;
+}
+
+forall( otype U | { U square( U ); } )
+U quad( U u ) {
+	return square( square( u ) );
+}
+
+int main() {
+	int N = 2;
+	sout | "result of quad of" | N | "is" | quad( N ) | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa quad.c" //
+// End: //
Index: examples/s.c
===================================================================
--- examples/s.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/s.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,28 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// s.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Jan  3 22:38:45 2016
+// Update Count     : 3
+//
+
+//int ?!=?( int, int );
+
+void f() {
+	int a;
+	a ? 4 : 5;
+	1 ? 4 : 5;
+	0 ? 4 : 5;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa s.c" //
+// End: //
Index: examples/simplePoly.c
===================================================================
--- examples/simplePoly.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/simplePoly.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,34 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// simplePoly.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Mar  8 22:06:41 2016
+// Update Count     : 3
+//
+
+forall( otype T, otype U | { T f( T, U ); } )
+T q( T t, U u ) {
+	return f( t, u );
+//  return t;
+}
+
+int f( int, double* );
+
+void g( void ) {
+	int y;
+	double x;
+//  if ( y )
+	q( 3, &x );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa simplePoly.c" //
+// End: //
Index: examples/simpler.c
===================================================================
--- examples/simpler.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/simpler.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// simpler.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Mar  8 22:06:30 2016
+// Update Count     : 2
+//
+
+forall( otype T ) T id( T, T );
+
+int main() {
+	id( 0, 7 );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa simpler.c" //
+// End: //
Index: examples/specialize.c
===================================================================
--- examples/specialize.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/specialize.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,59 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// specialize.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Mar  8 22:06:17 2016
+// Update Count     : 3
+//
+
+/// void f( const int * );
+/// 
+/// void m()
+/// {
+///   f( 0 );
+/// }
+
+/// forall( dtype T ) T* f( T* );
+/// void g( int* (*)(int*) );
+/// 
+/// int m() {
+///   g( f );
+/// }
+
+/// void f1( void (*q)( forall( dtype U ) U* (*p)( U* ) ) );
+/// void g1( int* (*)(int*) );
+/// 
+/// int m1() {
+///   f1( g1 );
+/// }
+
+extern "C" {
+	int printf( const char*, ... );
+}
+
+forall( otype T ) T f( T t )
+{
+	printf( "in f; sizeof T is %d\n", sizeof( T ) );
+	return t;
+}
+
+void g( int (*p)(int) )
+{
+	printf( "g: f(7) returned %d\n", f(7) );
+}
+
+int main() {
+	g( f );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa specialize.c" //
+// End: //
Index: examples/square.c
===================================================================
--- examples/square.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/square.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,71 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// square.c --
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Mar  8 22:05:48 2016
+// Update Count     : 27
+//
+
+#include <fstream.hfa>
+
+forall( otype T | { T ?*?( T, T ); } )
+T square( T t ) {
+	return t * t;
+} // square
+
+int main() {
+#if 0
+	sout | "result of squaring 9 is " | endl;
+
+	// char does not have multiplication.
+	char ?*?( char a1, char a2 ) {
+		return (char)((int)a1 * (int)a2);
+	} // ?*?
+	char c = 9;
+	sout | "char\t\t\t" | square( c ) | endl;
+
+	sout | square( s ) | endl;
+#endif
+	short s = 9;
+	square( s );
+#if 0
+	signed int i = 9;
+	sout | "signed int\t\t" | square( i ) | endl;
+
+	unsigned int ui = 9;
+	sout | "unsigned int\t\t" | square( ui ) | endl;
+
+	long int li = 9;
+	sout | "signed long int\t\t" | square( li ) | endl;
+
+	unsigned long int uli = 9;
+	sout | "unsigned long int\t" | square( uli ) | endl;
+
+	signed long long int lli = 9;
+	sout | "signed long long int\t" | square( lli ) | endl;
+
+	unsigned long long int ulli = 9;
+	sout | "unsigned long long int\t" | square( ulli ) | endl;
+
+	float f = 9.0;
+	sout | "float\t\t\t" | square( f ) | endl;
+
+	double d = 9.0;
+	sout | "double\t\t\t" | square( d ) | endl;
+
+	long double ld = 9.0;
+	sout | "long double\t\t" | square( ld ) | endl;
+#endif
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa square.c" //
+// End: //
Index: examples/twice.c
===================================================================
--- examples/twice.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/twice.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,36 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// twice.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Oct 19 21:52:57 2017
+// Update Count     : 46
+//
+
+#include <fstream.hfa>
+
+forall( otype T | { T ?+?( T, T ); } )
+T twice( const T t ) {
+	return t + t;
+}
+
+// char does not have addition
+char ?+?( char op1, char op2 ) { return (int)op1 + op2; } // cast forces integer addition or recursion
+
+// signed char does not have addition
+signed char ?+?( signed char op1, signed char op2 ) { return (int)op1 + op2; } // cast forces integer addition or recursion
+
+int main( void ) {
+	sout | twice( ' ' ) | ' ' | twice( (signed char)0 ) | twice( (int)1 ) | twice( 3.2 ) | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa twice.c" //
+// End: //
Index: examples/wrapper/.gitignore
===================================================================
--- examples/wrapper/.gitignore	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/wrapper/.gitignore	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,3 @@
+.tags
+build/
+test
Index: examples/wrapper/premake4.lua
===================================================================
--- examples/wrapper/premake4.lua	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/wrapper/premake4.lua	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,79 @@
+#!lua
+
+-- Additional Linux libs: "X11", "Xxf86vm", "Xi", "Xrandr", "stdc++"
+
+includeDirList = {
+	"src/",
+	"../",
+}
+
+libDirectories = {
+
+}
+
+
+if os.get() == "linux" then
+    linkLibs = {
+	"bsd"
+    }
+end
+
+-- Build Options:
+buildOptions = {"\n  CC = cfa\n  CXX = cfa"}
+
+solution "strings"
+	configurations  { "debug", "release",
+				"cproc-debug", "cproc-release",
+				"cfa-debug", "cfa-release" }
+
+	project "test"
+		kind "ConsoleApp"
+		language "C"
+		location "build"
+		objdir "build"
+		targetdir "."
+		buildoptions (buildOptions)
+		defines {	"bool=_Bool",
+				"\"true=((_Bool)(const signed int)1)\"",
+				"\"false=((_Bool)(const signed int)0)\"",
+				"_GNU_SOURCE",
+				"__cforall",
+				"USE_BSD_LIB"
+			}
+		libdirs (libDirectories)
+		links (linkLibs)
+		linkoptions (linkOptionList)
+		includedirs (includeDirList)
+		files { "src/**.c" }
+
+	configuration "debug"
+		defines { "DEBUG" }
+		flags { "Symbols" }
+
+	configuration "release"
+		defines { "NDEBUG" }
+		flags { "Optimize" }
+
+	configuration "cproc-debug"
+		buildoptions ({"-E"})
+		linkoptions ({"-E"})
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
+
+	configuration "cproc-release"
+		buildoptions ({"-E"})
+		linkoptions ({"-E"})
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
+
+	configuration "cfa-debug"
+		linkoptions ({"-E"})
+		files { "build/cproc-debug/*.o" }
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
+
+	configuration "cfa-release"
+		linkoptions ({"-E"})
+		files { "build/cproc-debug/*.o" }
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
Index: examples/wrapper/src/main.c
===================================================================
--- examples/wrapper/src/main.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/wrapper/src/main.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+#include "pointer.h"
+
+wrapper_t make_copy(wrapper_t copy)
+{
+	return copy;
+}
+
+int main(int argc, char const *argv[])
+{
+	wrapper_t p = wrap(6);
+
+	sout | endl | "test started" | endl;
+
+	wrapper_t p2 = p;
+
+	clear(&p);
+
+	p = p2;
+
+	wrapper_t p3 = make_copy(p2);
+
+	sout | endl | "test ended" | endl;
+
+	return 0;
+}
Index: examples/wrapper/src/pointer.h
===================================================================
--- examples/wrapper/src/pointer.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/wrapper/src/pointer.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,122 @@
+#pragma once
+
+#include <fstream.hfa>
+#include <stddef.h>
+#include <stdlib.hfa>
+
+//==============================================================================
+// type safe malloc / free
+
+forall(otype T)
+T* new()
+{
+	T* p = malloc();
+	p{};
+	return p;
+}
+
+forall(otype T)
+void delete(T* p)
+{
+	^p{};
+	free(p);
+}
+
+//==============================================================================
+// ref counter content
+
+struct content_t
+{
+	int value;
+	size_t count;
+};
+
+void ?{}(content_t* this)
+{
+	sout | "Constructing content" | endl;
+	this->count = 0;
+}
+
+void ^?{}(content_t* this)
+{
+	sout | "Destroying content" | endl;
+}
+
+//==============================================================================
+// ref counter wrapper
+
+struct wrapper_t
+{
+	content_t* ptr;
+};
+
+void ?{}(wrapper_t* this)
+{
+	sout | "Constructing empty ref pointer" | endl | endl;
+	this->ptr = NULL;
+}
+
+void ?{}(wrapper_t* this, wrapper_t rhs)
+{
+	sout | "Constructing ref pointer from copy" | endl;
+	this->ptr = rhs.ptr;
+	this->ptr->count++;
+	sout | "Reference is " | this->ptr->count | endl | endl;
+}
+
+void ^?{}(wrapper_t* this)
+{
+	if(this->ptr)
+	{
+		sout | "Destroying ref pointer" | endl;
+		this->ptr->count--;
+		sout | "Reference is " | this->ptr->count | endl | endl;
+		if(!this->ptr->count) delete(this->ptr);
+	}
+	else
+	{
+		sout | "Destroying empty ref pointer" | endl | endl;
+	}
+}
+
+wrapper_t ?=?(wrapper_t* this, wrapper_t rhs)
+{
+	sout | "Setting ref pointer" | endl;
+	if(this->ptr)
+	{
+		this->ptr->count--;
+		sout | "Reference is " | this->ptr->count | endl | endl;
+		if(!this->ptr->count) delete(this->ptr);
+	}
+	this->ptr = rhs.ptr;
+	this->ptr->count++;
+	sout | "Reference is " | this->ptr->count | endl | endl;
+}
+
+void set(wrapper_t* this, content_t* c)
+{
+	this->ptr = c;
+	this->ptr->count++;
+	sout | "Setting ref pointer" | endl;
+	sout | "Reference is " | this->ptr->count | endl | endl;
+}
+
+void clear(wrapper_t* this)
+{
+	sout | "Clearing ref pointer" | endl;
+	this->ptr->count--;
+	sout | "Reference is " | this->ptr->count | endl | endl;
+	if(!this->ptr->count) delete(this->ptr);
+	this->ptr = NULL;
+}
+
+
+wrapper_t wrap(int val)
+{
+	wrapper_t w;
+	content_t* c = malloc();
+	c{};
+	c->value = val;
+	set(&w, c);
+	return w;
+}
Index: examples/zero_one.c
===================================================================
--- examples/zero_one.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ examples/zero_one.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+#include <fstream.hfa>
+
+void foo(zero_t o)
+{
+	sout | "It's a Zero!" | endl;
+}
+
+void foo(one_t o)
+{
+	sout | "It's a One!" | endl;
+}
+
+void foo(int o)
+{
+	sout | "It's a Number!" | endl;
+}
+
+int main()
+{
+	foo(0);
+	foo(1);
+	foo(2);
+	return 0;
+}
Index: libcfa/.autom4te.cfg
===================================================================
--- libcfa/.autom4te.cfg	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/.autom4te.cfg	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,15 @@
+
+
+# M4sugar
+# M4sh
+# Autotest
+# Autoconf-without-aclocal-m4
+# Autoconf
+
+begin-language: "Autoconf-without-aclocal-m4"
+args: --cache=automake/autom4te.cache
+end-language: "Autoconf-without-aclocal-m4"
+
+begin-language: "Autoconf"
+args: --cache=automake/autom4te.cache
+end-language: "Autoconf"
Index: libcfa/Makefile.am
===================================================================
--- libcfa/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am --
+##
+## Author           : Thierry Delisle
+## Created On       : Thu Aug 02 15:29:11 2018
+## Last Modified By :
+## Last Modified On :
+## Update Count     :
+###############################################################################
+
+AUTOMAKE_OPTIONS = foreign # do not require all the GNU file names
+SUBDIRS = prelude src      # order important
Index: libcfa/Makefile.in
===================================================================
--- libcfa/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,773 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+	$(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/./automake/compile \
+	$(top_srcdir)/./automake/install-sh \
+	$(top_srcdir)/./automake/missing ./automake/compile \
+	./automake/config.guess ./automake/config.sub \
+	./automake/depcomp ./automake/install-sh ./automake/missing
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ARCHITECTURE = @ARCHITECTURE@
+ARCH_FLAGS = @ARCH_FLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFACC = @CFACC@
+CFACPP = @CFACPP@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_NAME = @CFA_NAME@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = @CFLAGS@
+CONFIGURATION = @CONFIGURATION@
+CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@
+CONFIG_CFLAGS = @CONFIG_CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_DIR = @DRIVER_DIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign # do not require all the GNU file names
+SUBDIRS = prelude src      # order important
+all: all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+	test ! -s cscope.files \
+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+	-rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__post_remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
+
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
+
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
+
+dist-tarZ: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__post_remove_distdir)
+
+dist-shar: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__post_remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__post_remove_distdir)
+
+dist dist-all:
+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+	$(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir)
+	chmod u+w $(distdir)
+	mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build/sub \
+	  && ../../configure \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=../.. --prefix="$$dc_install_base" \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
+	$(am__post_remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+	am--refresh check check-am clean clean-cscope clean-generic \
+	cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+	dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
+	distcheck distclean distclean-generic distclean-tags \
+	distcleancheck distdir distuninstallcheck dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# 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.
+.NOEXPORT:
Index: libcfa/aclocal.m4
===================================================================
--- libcfa/aclocal.m4	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/aclocal.m4	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1172 @@
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.15'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.15], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.15])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# Figure out how to run the assembler.                      -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_AS
+# ----------
+AC_DEFUN([AM_PROG_AS],
+[# By default we simply use the C compiler to build assembly code.
+AC_REQUIRE([AC_PROG_CC])
+test "${CCAS+set}" = set || CCAS=$CC
+test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
+AC_ARG_VAR([CCAS],      [assembler compiler command (defaults to CC)])
+AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
+_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
+])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each '.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
Index: libcfa/automake/compile
===================================================================
--- libcfa/automake/compile	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/automake/compile	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/compile
Index: libcfa/automake/config.guess
===================================================================
--- libcfa/automake/config.guess	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/automake/config.guess	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/config.guess
Index: libcfa/automake/config.sub
===================================================================
--- libcfa/automake/config.sub	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/automake/config.sub	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/config.sub
Index: libcfa/automake/depcomp
===================================================================
--- libcfa/automake/depcomp	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/automake/depcomp	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/depcomp
Index: libcfa/automake/install-sh
===================================================================
--- libcfa/automake/install-sh	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/automake/install-sh	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/install-sh
Index: libcfa/automake/missing
===================================================================
--- libcfa/automake/missing	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/automake/missing	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/missing
Index: libcfa/configure
===================================================================
--- libcfa/configure	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/configure	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,5634 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for cfa-cc 1.0.0.0.
+#
+# Report bugs to <cforall@plg.uwaterloo.ca>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: cforall@plg.uwaterloo.ca about your system, including
+$0: any error possibly output before this message. Then
+$0: install a modern shell, or manually run the script
+$0: under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='cfa-cc'
+PACKAGE_TARNAME='cfa-cc'
+PACKAGE_VERSION='1.0.0.0'
+PACKAGE_STRING='cfa-cc 1.0.0.0'
+PACKAGE_BUGREPORT='cforall@plg.uwaterloo.ca'
+PACKAGE_URL=''
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+RANLIB
+am__fastdepCCAS_FALSE
+am__fastdepCCAS_TRUE
+CCASDEPMODE
+CCASFLAGS
+CCAS
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+ac_ct_CC
+CFLAGS
+CC
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CXX
+CPPFLAGS
+LDFLAGS
+CXXFLAGS
+CXX
+CFA_LIBDIR
+CFA_BINDIR
+CFA_INCDIR
+CFA_PREFIX
+CFA_NAME
+CONFIG_CFAFLAGS
+CONFIG_CFLAGS
+ARCH_FLAGS
+CFACPP
+CFACC
+DRIVER_DIR
+CONFIGURATION
+ARCHITECTURE
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+runstatedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+with_cfa_name
+enable_dependency_tracking
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+ARCHITECTURE
+CONFIGURATION
+DRIVER_DIR
+CXX
+CXXFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CCC
+CC
+CFLAGS
+CCAS
+CCASFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir runstatedir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures cfa-cc 1.0.0.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/cfa-cc]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of cfa-cc 1.0.0.0:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-cfa-name=NAME     NAME too which cfa will be installed
+
+Some influential environment variables:
+  ARCHITECTURE
+              The architecture to use when building libcfa
+  CONFIGURATION
+              The configuration to use when building libcfa, options are:
+              deubg, nodebug, nolib (prelude-only)
+  DRIVER_DIR  The path to the cforall driver directory
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  CCAS        assembler compiler command (defaults to CC)
+  CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <cforall@plg.uwaterloo.ca>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+cfa-cc configure 1.0.0.0
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by cfa-cc $as_me 1.0.0.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_aux_dir=
+for ac_dir in ./automake "$srcdir"/./automake; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in ./automake \"$srcdir\"/./automake" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+
+
+
+
+
+
+
+
+am__api_version='1.15'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='cfa-cc'
+ VERSION='1.0.0.0'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
+
+# don't use the default CFLAGS as they unconditonnaly add -O2
+: ${CFLAGS=""}
+
+# Allow program name tansformation
+# will fill program_transform_name with appropriate sed regex
+
+
+
+
+
+
+CFACC=${DRIVER_DIR}cfa
+CFACPP=${DRIVER_DIR}cfa-cpp
+
+
+
+#==============================================================================
+#Handle specific flags
+case $ARCHITECTURE in
+	"x64"        ) ARCH_FLAGS="-m64";;
+	"x86"        ) ARCH_FLAGS="-m32";;
+	"arm"        ) ARCH_FLAGS="";;
+esac
+
+
+
+case $CONFIGURATION in
+	"debug"   )
+		CONFIG_CFLAGS="-O0 -g"
+		CONFIG_CFAFLAGS="-debug"
+	;;
+	"nodebug" )
+		CONFIG_CFLAGS="-O2 -s"
+		CONFIG_CFAFLAGS="-nodebug"
+	;;
+	"nolib"   )
+		CONFIG_CFLAGS=""
+		CONFIG_CFAFLAGS=""
+	;;
+esac
+
+
+
+
+#==============================================================================
+#Trasforming cc1 will break compilation
+
+	if test "${program_transform_name}" = ""; then
+	as_fn_error $? "Program transform not supported.
+			Use --with-cfa-name='[Desired name here]' instead" "$LINENO" 5
+	fi
+
+	#Define the new name of the installed command
+
+# Check whether --with-cfa-name was given.
+if test "${with_cfa_name+set}" = set; then :
+  withval=$with_cfa_name; cfa_name=$withval
+else
+  cfa_name="cfa"
+fi
+
+
+	CFA_NAME=${cfa_name}
+
+
+
+#==============================================================================
+# Installation paths
+
+	if test "x$prefix" = "xNONE"; then
+		cfa_prefix=${ac_default_prefix}
+	else
+		cfa_prefix=${prefix}
+	fi
+	cfa_prefix="$(readlink -m ${cfa_prefix})/"
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_PREFIX "${cfa_prefix}"
+_ACEOF
+
+	CFA_PREFIX=${cfa_prefix}
+
+
+	if test "$includedir" = '${prefix}/include'; then
+		cfa_incdir="${cfa_prefix}include/${cfa_name}"
+	else
+		cfa_incdir=${includedir}
+	fi
+	cfa_incdir="$(readlink -m ${cfa_incdir})/"
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_INCDIR "${cfa_incdir}"
+_ACEOF
+
+	CFA_INCDIR=${cfa_incdir}
+
+
+	if test "$bindir" = '${exec_prefix}/bin'; then
+		cfa_bindir="${cfa_prefix}bin"
+	else
+		cfa_bindir=${bindir}
+	fi
+	cfa_bindir="$(readlink -m ${cfa_bindir})/"
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_BINDIR "${cfa_bindir}"
+_ACEOF
+
+	CFA_BINDIR=${cfa_bindir}
+
+
+	if test "$libdir" = '${exec_prefix}/lib'; then
+		if test "${ARCHITECTURE}" != ""; then
+			cfa_libdir="${cfa_prefix}lib/${cfa_name}/${ARCHITECTURE}-${CONFIGURATION}/"
+		else
+			cfa_libdir="${cfa_prefix}lib/${cfa_name}/"
+		fi
+	else
+		cfa_libdir="${libdir}/${ARCHITECTURE}${CONFIGURATION}"
+	fi
+	cfa_libdir="$(readlink -m ${cfa_libdir})/"
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_LIBDIR "${cfa_libdir}"
+_ACEOF
+
+	CFA_LIBDIR=${cfa_libdir}
+
+
+
+# Checks for programs.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
+$as_echo_n "checking whether the C++ compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C++ compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
+$as_echo_n "checking for C++ compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+depcc="$CXX"  am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+# By default we simply use the C compiler to build assembly code.
+
+test "${CCAS+set}" = set || CCAS=$CC
+test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
+
+
+
+depcc="$CCAS"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CCAS_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CCAS_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CCAS_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CCAS_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; }
+CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then
+  am__fastdepCCAS_TRUE=
+  am__fastdepCCAS_FALSE='#'
+else
+  am__fastdepCCAS_TRUE='#'
+  am__fastdepCCAS_FALSE=
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+ac_config_files="$ac_config_files Makefile src/Makefile prelude/Makefile"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+	g
+	s/^\n//
+	s/\n/ /g
+	p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by cfa-cc $as_me 1.0.0.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration commands:
+$config_commands
+
+Report bugs to <cforall@plg.uwaterloo.ca>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+cfa-cc config.status 1.0.0.0
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "prelude/Makefile") CONFIG_FILES="$CONFIG_FILES prelude/Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES      :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+# Final text
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Cforall library configuraton completed. Type \"make -j 8 install\"." >&5
+$as_echo "Cforall library configuraton completed. Type \"make -j 8 install\"." >&6; }
Index: libcfa/configure.ac
===================================================================
--- libcfa/configure.ac	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/configure.ac	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,82 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.68])
+AC_INIT([cfa-cc],[1.0.0.0],[cforall@plg.uwaterloo.ca])
+AC_CONFIG_AUX_DIR([./automake])
+AM_SILENT_RULES([yes])
+
+m4_include([../automake/cfa.m4])
+
+AM_INIT_AUTOMAKE([subdir-objects])
+
+# don't use the default CFLAGS as they unconditonnaly add -O2
+: ${CFLAGS=""}
+
+# Allow program name tansformation
+# will fill program_transform_name with appropriate sed regex
+AC_ARG_PROGRAM
+
+AC_ARG_VAR(ARCHITECTURE,  [The architecture  to use when building libcfa])
+AC_ARG_VAR(CONFIGURATION, [The configuration to use when building libcfa, options are: deubg, nodebug, nolib (prelude-only)])
+AC_ARG_VAR(DRIVER_DIR, [The path to the cforall driver directory])
+
+CFACC=${DRIVER_DIR}cfa
+CFACPP=${DRIVER_DIR}cfa-cpp
+AC_SUBST(CFACC)
+AC_SUBST(CFACPP)
+
+#==============================================================================
+#Handle specific flags
+case $ARCHITECTURE in
+	"x64"        ) ARCH_FLAGS="-m64";;
+	"x86"        ) ARCH_FLAGS="-m32";;
+	"arm"        ) ARCH_FLAGS="";;
+esac
+
+AC_SUBST(ARCH_FLAGS)
+
+case $CONFIGURATION in
+	"debug"   )
+		CONFIG_CFLAGS="-O0 -g"
+		CONFIG_CFAFLAGS="-debug"
+	;;
+	"nodebug" )
+		CONFIG_CFLAGS="-O2 -s"
+		CONFIG_CFAFLAGS="-nodebug"
+	;;
+	"nolib"   )
+		CONFIG_CFLAGS=""
+		CONFIG_CFAFLAGS=""
+	;;
+esac
+
+AC_SUBST(CONFIG_CFLAGS)
+AC_SUBST(CONFIG_CFAFLAGS)
+
+#==============================================================================
+#Trasforming cc1 will break compilation
+M4CFA_PROGRAM_NAME
+
+#==============================================================================
+# Installation paths
+M4CFA_PARSE_PREFIX
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+AM_PROG_AS
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+AC_PROG_RANLIB
+
+AC_CONFIG_FILES([
+	Makefile
+	src/Makefile
+	prelude/Makefile
+	])
+
+AC_OUTPUT()
+
+# Final text
+AC_MSG_RESULT(Cforall library configuraton completed. Type "make -j 8 install".)
Index: libcfa/prelude/Makefile.am
===================================================================
--- libcfa/prelude/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,72 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am --
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 08:54:01 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Wed Dec 14 15:00:35 2016
+## Update Count     : 205
+###############################################################################
+
+# create object files in directory with source files
+AUTOMAKE_OPTIONS = foreign subdir-objects
+
+# put into lib for now
+cfalibdir = ${CFA_LIBDIR}
+cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cf bootloader.c
+noinst_DATA = ../src/prelude.c
+
+CC = @CFACC@
+AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+AM_CFAFLAGS = @CONFIG_CFAFLAGS@
+
+$(DEPDIR) :
+	mkdir $(DEPDIR)
+
+$(DEPDIR)/builtins.Po : $(DEPDIR)
+	touch ${@}
+
+# create extra forward types/declarations to reduce inclusion of library files
+extras.cf : ${srcdir}/extras.regx ${srcdir}/extras.c
+	${AM_V_GEN}gcc ${AM_CFLAGS} -E ${srcdir}/extras.c | grep -f ${srcdir}/extras.regx > extras.cf
+
+# create forward declarations for gcc builtins
+gcc-builtins.cf : gcc-builtins.c ${srcdir}/prototypes.sed
+	${AM_V_GEN}gcc -I${srcdir} -E -P $< | sed -r -f ${srcdir}/prototypes.sed > $@
+
+gcc-builtins.c : ${srcdir}/builtins.def ${srcdir}/prototypes.awk ${srcdir}/sync-builtins.cf ${srcdir}/prototypes.c
+	${AM_V_GEN}gcc -I${srcdir} -E ${srcdir}/prototypes.c | awk -f ${srcdir}/prototypes.awk > $@
+
+prelude.cf : prelude-gen.cc
+	${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${AM_CFLAGS} ${<} -o prelude-gen -Wall -Wextra -O2 -g -std=c++14
+	@./prelude-gen > $@
+	@rm ./prelude-gen
+
+builtins.def :
+
+prototypes.awk :
+
+# create forward declarations for cfa builtins
+builtins.cf : builtins.c ${CC}
+	${AM_V_GEN}gcc ${AM_CFLAGS} -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po
+	${AM_V_at}sed -i 's/builtins.o/builtins.cf/g' $(DEPDIR)/builtins.Po
+
+include $(DEPDIR)/builtins.Po
+
+../src/prelude.c : prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
+	${AM_V_GEN}@CFACPP@ --prelude-dir=${builddir} -l prelude.cf $@  # use src/cfa-cpp as not in lib until after install
+
+bootloader.c : ${srcdir}/bootloader.cf prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
+	${AM_V_GEN}@CFACPP@ --prelude-dir=${builddir} -tpm ${srcdir}/bootloader.cf $@  # use src/cfa-cpp as not in lib until after install
+
+maintainer-clean-local :
+	rm -rf $(DEPDIR)
+
+MOSTLYCLEANFILES = bootloader.c builtins.cf extras.cf gcc-builtins.c gcc-builtins.cf prelude.cf
+MAINTAINERCLEANFILES = ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
Index: libcfa/prelude/Makefile.in
===================================================================
--- libcfa/prelude/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,528 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = prelude
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(cfalibdir)"
+DATA = $(cfalib_DATA) $(noinst_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ARCHITECTURE = @ARCHITECTURE@
+ARCH_FLAGS = @ARCH_FLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CFACC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFACC = @CFACC@
+CFACPP = @CFACPP@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_NAME = @CFA_NAME@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = @CFLAGS@
+CONFIGURATION = @CONFIGURATION@
+CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@
+CONFIG_CFLAGS = @CONFIG_CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_DIR = @DRIVER_DIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# create object files in directory with source files
+AUTOMAKE_OPTIONS = foreign subdir-objects
+
+# put into lib for now
+cfalibdir = ${CFA_LIBDIR}
+cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cf bootloader.c
+noinst_DATA = ../src/prelude.c
+AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+AM_CFAFLAGS = @CONFIG_CFAFLAGS@
+MOSTLYCLEANFILES = bootloader.c builtins.cf extras.cf gcc-builtins.c gcc-builtins.cf prelude.cf
+MAINTAINERCLEANFILES = ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign prelude/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign prelude/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-cfalibDATA: $(cfalib_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(cfalibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(cfalibdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cfalibdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(cfalibdir)" || exit $$?; \
+	done
+
+uninstall-cfalibDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(cfalibdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cfalibDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+	maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-cfalibDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+	ctags-am distclean distclean-generic distdir dvi dvi-am html \
+	html-am info info-am install install-am install-cfalibDATA \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic maintainer-clean-local mostlyclean \
+	mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
+	uninstall-am uninstall-cfalibDATA
+
+.PRECIOUS: Makefile
+
+
+$(DEPDIR) :
+	mkdir $(DEPDIR)
+
+$(DEPDIR)/builtins.Po : $(DEPDIR)
+	touch ${@}
+
+# create extra forward types/declarations to reduce inclusion of library files
+extras.cf : ${srcdir}/extras.regx ${srcdir}/extras.c
+	${AM_V_GEN}gcc ${AM_CFLAGS} -E ${srcdir}/extras.c | grep -f ${srcdir}/extras.regx > extras.cf
+
+# create forward declarations for gcc builtins
+gcc-builtins.cf : gcc-builtins.c ${srcdir}/prototypes.sed
+	${AM_V_GEN}gcc -I${srcdir} -E -P $< | sed -r -f ${srcdir}/prototypes.sed > $@
+
+gcc-builtins.c : ${srcdir}/builtins.def ${srcdir}/prototypes.awk ${srcdir}/sync-builtins.cf ${srcdir}/prototypes.c
+	${AM_V_GEN}gcc -I${srcdir} -E ${srcdir}/prototypes.c | awk -f ${srcdir}/prototypes.awk > $@
+
+prelude.cf : prelude-gen.cc
+	${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${AM_CFLAGS} ${<} -o prelude-gen -Wall -Wextra -O2 -g -std=c++14
+	@./prelude-gen > $@
+	@rm ./prelude-gen
+
+builtins.def :
+
+prototypes.awk :
+
+# create forward declarations for cfa builtins
+builtins.cf : builtins.c ${CC}
+	${AM_V_GEN}gcc ${AM_CFLAGS} -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po
+	${AM_V_at}sed -i 's/builtins.o/builtins.cf/g' $(DEPDIR)/builtins.Po
+
+include $(DEPDIR)/builtins.Po
+
+../src/prelude.c : prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
+	${AM_V_GEN}@CFACPP@ --prelude-dir=${builddir} -l prelude.cf $@  # use src/cfa-cpp as not in lib until after install
+
+bootloader.c : ${srcdir}/bootloader.cf prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
+	${AM_V_GEN}@CFACPP@ --prelude-dir=${builddir} -tpm ${srcdir}/bootloader.cf $@  # use src/cfa-cpp as not in lib until after install
+
+maintainer-clean-local :
+	rm -rf $(DEPDIR)
+
+# 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.
+.NOEXPORT:
Index: libcfa/prelude/bootloader.cf
===================================================================
--- libcfa/prelude/bootloader.cf	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/bootloader.cf	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,5 @@
+extern "C" { static inline int invoke_main(int argc, char* argv[], char* envp[]); }
+
+int main(int argc, char* argv[], char* envp[]) {
+	return invoke_main(argc, argv, envp);
+}
Index: libcfa/prelude/builtins.c
===================================================================
--- libcfa/prelude/builtins.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/builtins.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,116 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// builtins.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Fri Jul 21 16:21:03 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Aug  5 21:40:38 2018
+// Update Count     : 20
+//
+
+// exception implementation
+
+typedef unsigned long long __cfaabi_abi_exception_type_t;
+
+#include "../src/virtual.h"
+#include "../src/exception.h"
+
+void exit( int status, const char fmt[], ... ) __attribute__ (( format(printf, 2, 3), __nothrow__, __leaf__, __noreturn__ ));
+void abort( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
+
+// increment/decrement unification
+
+static inline forall( dtype T | { T& ?+=?( T&, one_t ); } )
+T& ++? ( T& x ) { return x += 1; }
+
+static inline forall( dtype T | sized(T) | { void ?{}( T&, T ); void ^?{}( T& ); T& ?+=?( T&, one_t ); } )
+T& ?++ ( T& x ) { T tmp = x; x += 1; return tmp; }
+
+static inline forall( dtype T | { T& ?-=?( T&, one_t ); } )
+T& --? ( T& x ) { return x -= 1; }
+
+static inline forall( dtype T | sized(T) | { void ?{}( T&, T ); void ^?{}( T& ); T& ?-=?( T&, one_t ); } )
+T& ?-- ( T& x ) { T tmp = x; x -= 1; return tmp; }
+
+// exponentiation operator implementation
+
+extern "C" {
+	float powf( float x, float y );
+	double pow( double x, double y );
+	long double powl( long double x, long double y );
+	float _Complex cpowf( float _Complex x, _Complex float z );
+	double _Complex cpow( double _Complex x, _Complex double z );
+	long double _Complex cpowl( long double _Complex x, _Complex long double z );
+} // extern "C"
+
+static inline float ?\?( float x, float y ) { return powf( x, y ); }
+static inline double ?\?( double x, double y ) { return pow( x, y ); }
+static inline long double ?\?( long double x, long double y ) { return powl( x, y ); }
+static inline float _Complex ?\?( float _Complex x, _Complex float y ) { return cpowf(x, y ); }
+static inline double _Complex ?\?( double _Complex x, _Complex double y ) { return cpow( x, y ); }
+static inline long double _Complex ?\?( long double _Complex x, _Complex long double y ) { return cpowl( x, y ); }
+
+static inline long int ?\?( long int ep, unsigned long int y ) { // disallow negative exponent
+	if ( y == 0 ) return 1;								// base case
+	if ( ep == 2 ) return ep << (y - 1);				// special case, positive shifting only
+	typeof( ep ) op = 1;								// accumulate odd product
+	for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
+		if ( (y & 1) == 1 ) op *= ep;					// odd ?
+		ep *= ep;
+	} // for
+	return ep * op;
+} // ?\?
+
+static inline forall( otype T | { void ?{}( T & this, one_t ); T ?*?( T, T ); } )
+T ?\?( T ep, unsigned long int y ) {
+	if ( y == 0 ) return 1;
+	T op = 1;
+	for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
+		if ( (y & 1) == 1 ) op = op * ep;				// odd ?
+		ep = ep * ep;
+	} // for
+	return ep * op;
+} // ?\?
+
+// unsigned computation may be faster and larger
+static inline unsigned long int ?\?( unsigned long int ep, unsigned long int y ) { // disallow negative exponent
+	if ( y == 0 ) return 1;								// base case
+	if ( ep == 2 ) return ep << (y - 1);				// special case, positive shifting only
+	typeof( ep ) op = 1;								// accumulate odd product
+	for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
+		if ( (y & 1) == 1 ) op *= ep;					// odd ?
+		ep *= ep;
+	} // for
+	return ep * op;
+} // ?\?
+
+static inline double ?\?( long int x, signed long int y ) {	// allow negative exponent
+	if ( y >=  0 ) return (double)(x \ (unsigned long int)y);
+	else return 1.0 / x \ (unsigned int)(-y);
+} // ?\?
+
+// FIXME (x \ (unsigned long int)y) relies on X ?\?(T, unsigned long) a function that is neither
+// defined, nor passed as an assertion parameter. Without user-defined conversions, cannot specify
+// X as a type that casts to double, yet it doesn't make sense to write functions with that type
+// signature where X is double.
+
+// static inline forall( otype T | { void ?{}( T & this, one_t ); T ?*?( T, T ); double ?/?( double, T ); } )
+// double ?\?( T x, signed long int y ) {
+//     if ( y >=  0 ) return (double)(x \ (unsigned long int)y);
+//     else return 1.0 / x \ (unsigned long int)(-y);
+// } // ?\?
+
+static inline long int ?\=?( long int & x, unsigned long int y ) { x = x \ y; return x; }
+static inline unsigned long int ?\=?( unsigned long int & x, unsigned long int y ) { x = x \ y; return x; }
+static inline int ?\=?( int & x, unsigned long int y ) { x = x \ y; return x; }
+static inline unsigned int ?\=?( unsigned int & x, unsigned long int y ) { x = x \ y; return x; }
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/prelude/builtins.def
===================================================================
--- libcfa/prelude/builtins.def	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/builtins.def	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,953 @@
+/* This file contains the definitions and documentation for the
+   builtins used in the GNU compiler.
+   Copyright (C) 2000-2016 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Before including this file, you should define a macro:
+
+     DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,
+                  FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND)
+
+   This macro will be called once for each builtin function.  The
+   ENUM will be of type `enum built_in_function', and will indicate
+   which builtin function is being processed.  The NAME of the builtin
+   function (which will always start with `__builtin_') is a string
+   literal.  The CLASS is of type `enum built_in_class' and indicates
+   what kind of builtin is being processed.
+
+   Some builtins are actually two separate functions.  For example,
+   for `strcmp' there are two builtin functions; `__builtin_strcmp'
+   and `strcmp' itself.  Both behave identically.  Other builtins
+   define only the `__builtin' variant.  If BOTH_P is TRUE, then this
+   builtin has both variants; otherwise, it is has only the first
+   variant.
+
+   TYPE indicates the type of the function.  The symbols correspond to
+   enumerals from builtin-types.def.  If BOTH_P is true, then LIBTYPE
+   is the type of the non-`__builtin_' variant.  Otherwise, LIBTYPE
+   should be ignored.
+
+   If FALLBACK_P is true then, if for some reason, the compiler cannot
+   expand the builtin function directly, it will call the
+   corresponding library function (which does not have the
+   `__builtin_' prefix.
+
+   If NONANSI_P is true, then the non-`__builtin_' variant is not an
+   ANSI/ISO library function, and so we should pretend it does not
+   exist when compiling in ANSI conformant mode.
+
+   ATTRs is an attribute list as defined in builtin-attrs.def that
+   describes the attributes of this builtin function.
+
+   IMPLICIT specifies condition when the builtin can be produced by
+   compiler.  For instance C90 reserves floorf function, but does not
+   define it's meaning.  When user uses floorf we may assume that the
+   floorf has the meaning we expect, but we can't produce floorf by
+   simplifying floor((double)float) since the runtime need not implement
+   it.
+
+   The builtins is registered only if COND is true.  */
+
+/* A macro for builtins where the
+   BUILT_IN_*_CHKP = BUILT_IN_* + BEGIN_CHKP_BUILTINS + 1
+   enums should be defined too.  */
+#ifndef DEF_BUILTIN_CHKP
+#define DEF_BUILTIN_CHKP(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,	\
+			 FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND)	\
+  DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P,	\
+	      NONANSI_P, ATTRS, IMPLICIT, COND)
+#endif
+
+/* A GCC builtin (like __builtin_saveregs) is provided by the
+   compiler, but does not correspond to a function in the standard
+   library.  */
+#undef DEF_GCC_BUILTIN
+#define DEF_GCC_BUILTIN(ENUM, NAME, TYPE, ATTRS)		\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,	\
+	       false, false, false, ATTRS, true, true)
+
+/* Like DEF_GCC_BUILTIN, except we don't prepend "__builtin_".  */
+#undef DEF_SYNC_BUILTIN
+#define DEF_SYNC_BUILTIN(ENUM, NAME, TYPE, ATTRS)		\
+  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,	\
+	       false, false, false, ATTRS, true, true)
+
+/* A library builtin (like __builtin_strchr) is a builtin equivalent
+   of an ANSI/ISO standard library function.  In addition to the
+   `__builtin' version, we will create an ordinary version (e.g,
+   `strchr') as well.  If we cannot compute the answer using the
+   builtin function, we will fall back to the standard library
+   version.  */
+#undef DEF_LIB_BUILTIN
+#define DEF_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, false, ATTRS, true, true)
+#undef DEF_LIB_BUILTIN_CHKP
+#define DEF_LIB_BUILTIN_CHKP(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE,	\
+		    TYPE, true, true, false, ATTRS, true, true)
+
+/* Like DEF_LIB_BUILTIN, except that the function is not one that is
+   specified by ANSI/ISO C.  So, when we're being fully conformant we
+   ignore the version of these builtins that does not begin with
+   __builtin.  */
+#undef DEF_EXT_LIB_BUILTIN
+#define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, true, ATTRS, false, true)
+#undef DEF_EXT_LIB_BUILTIN_CHKP
+#define DEF_EXT_LIB_BUILTIN_CHKP(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE,	\
+		    TYPE, true, true, true, ATTRS, false, true)
+
+/* Like DEF_LIB_BUILTIN, except that the function is only a part of
+   the standard in C94 or above.  */
+#undef DEF_C94_BUILTIN
+#define DEF_C94_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, !flag_isoc94, ATTRS, targetm.libc_has_function (function_c94), true)
+
+/* Like DEF_LIB_BUILTIN, except that the function is only a part of
+   the standard in C99 or above.  */
+#undef DEF_C99_BUILTIN
+#define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
+
+/* Like DEF_LIB_BUILTIN, except that the function is only a part of
+   the standard in C11 or above.  */
+#undef DEF_C11_BUILTIN
+#define DEF_C11_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, !flag_isoc11, ATTRS, targetm.libc_has_function (function_c11_misc), true)
+
+/* Like DEF_C99_BUILTIN, but for complex math functions.  */
+#undef DEF_C99_COMPL_BUILTIN
+#define DEF_C99_COMPL_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_math_complex), true)
+
+/* Builtin that is specified by C99 and C90 reserve the name for future use.
+   We can still recognize the builtin in C90 mode but we can't produce it
+   implicitly.  */
+#undef DEF_C99_C90RES_BUILTIN
+#define DEF_C99_C90RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
+	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
+
+/* Builtin that C99 reserve the name for future use. We can still recognize
+   the builtin in C99 mode but we can't produce it implicitly.  */
+#undef DEF_EXT_C99RES_BUILTIN
+#define DEF_EXT_C99RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
+	      true, true, true, ATTRS, false, true)
+
+/* Allocate the enum and the name for a builtin, but do not actually
+   define it here at all.  */
+#undef DEF_BUILTIN_STUB
+#define DEF_BUILTIN_STUB(ENUM, NAME) \
+  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_LAST, BT_LAST, false, false, \
+	       false, ATTR_LAST, false, false)
+
+/* Builtin used by the implementation of OpenACC and OpenMP.  Few of these are
+   actually implemented in the compiler; most are in libgomp.  */
+/* These builtins also need to be enabled in offloading compilers invoked from
+   mkoffload; for that purpose, we're checking the -foffload-abi flag here.  */
+#undef DEF_GOACC_BUILTIN
+#define DEF_GOACC_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
+	       false, true, true, ATTRS, false, \
+	       (flag_openacc \
+		|| flag_offload_abi != OFFLOAD_ABI_UNSET))
+#undef DEF_GOACC_BUILTIN_COMPILER
+#define DEF_GOACC_BUILTIN_COMPILER(ENUM, NAME, TYPE, ATTRS) \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
+	       flag_openacc, true, true, ATTRS, false, true)
+#undef DEF_GOMP_BUILTIN
+#define DEF_GOMP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
+               false, true, true, ATTRS, false, \
+	       (flag_openacc \
+		|| flag_openmp \
+		|| flag_tree_parallelize_loops > 1 \
+		|| flag_cilkplus \
+		|| flag_offload_abi != OFFLOAD_ABI_UNSET))
+
+/* Builtin used by implementation of Cilk Plus.  Most of these are decomposed
+   by the compiler but a few are implemented in libcilkrts.  */
+#undef DEF_CILK_BUILTIN_STUB
+#define DEF_CILK_BUILTIN_STUB(ENUM, NAME) \
+  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_LAST, BT_LAST, false, false, \
+	       false, ATTR_LAST, false, false)
+
+/* Builtin used by the implementation of GNU TM.  These
+   functions are mapped to the actual implementation of the STM library. */
+#undef DEF_TM_BUILTIN
+#define DEF_TM_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
+	       true, true, true, ATTRS, false, flag_tm)
+
+/* Builtin used by the implementation of libsanitizer. These
+   functions are mapped to the actual implementation of the
+   libtsan library. */
+#undef DEF_SANITIZER_BUILTIN
+#define DEF_SANITIZER_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
+  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
+	       true, true, true, ATTRS, true, \
+	      (flag_sanitize & (SANITIZE_ADDRESS | SANITIZE_THREAD \
+				| SANITIZE_UNDEFINED | SANITIZE_NONDEFAULT) \
+	       || flag_sanitize_coverage))
+
+#undef DEF_CILKPLUS_BUILTIN
+#define DEF_CILKPLUS_BUILTIN(ENUM, NAME, TYPE, ATTRS)  \
+  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_FN_INT_VAR, BT_LAST, \
+  	       false, false, false, ATTRS, false, flag_cilkplus)
+
+/* Builtin used by the implementation of Pointer Bounds Checker.  */
+#undef DEF_CHKP_BUILTIN
+#define DEF_CHKP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
+  DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE,	\
+		    TYPE, true, true, false, ATTRS, true, true)
+
+/* Define an attribute list for math functions that are normally
+   "impure" because some of them may write into global memory for
+   `errno'.  If !flag_errno_math they are instead "const".  */
+#undef ATTR_MATHFN_ERRNO
+#define ATTR_MATHFN_ERRNO (flag_errno_math ? \
+	ATTR_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
+
+/* Define an attribute list for math functions that are normally
+   "const" but if flag_rounding_math is set they are instead "pure".
+   This distinction accounts for the fact that some math functions
+   check the rounding mode which is akin to examining global
+   memory.  */
+#undef ATTR_MATHFN_FPROUNDING
+#define ATTR_MATHFN_FPROUNDING (flag_rounding_math ? \
+	ATTR_PURE_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
+
+/* Define an attribute list for math functions that are normally
+   "impure" because some of them may write into global memory for
+   `errno'.  If !flag_errno_math, we can possibly use "pure" or
+   "const" depending on whether we care about FP rounding.  */
+#undef ATTR_MATHFN_FPROUNDING_ERRNO
+#define ATTR_MATHFN_FPROUNDING_ERRNO (flag_errno_math ? \
+	ATTR_NOTHROW_LEAF_LIST : ATTR_MATHFN_FPROUNDING)
+
+/* Define an attribute list for math functions that need to mind FP
+   rounding, but because they store into memory they are never "const"
+   or "pure".  Use of this macro is mainly for documentation and
+   maintenance purposes.  */
+#undef ATTR_MATHFN_FPROUNDING_STORE
+#define ATTR_MATHFN_FPROUNDING_STORE ATTR_NOTHROW_LEAF_LIST
+
+/* Define an attribute list for leaf functions that do not throw
+   exceptions normally, but may throw exceptions when using
+   -fnon-call-exceptions.  */
+#define ATTR_NOTHROWCALL_LEAF_LIST (flag_non_call_exceptions ? \
+	ATTR_LEAF_LIST : ATTR_NOTHROW_LEAF_LIST)
+
+/* Make sure 0 is not a legitimate builtin.  */
+DEF_BUILTIN_STUB(BUILT_IN_NONE, (const char *)0)
+
+/* Category: math builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_ACOS, "acos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSF, "acosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ACOSH, "acosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ACOSHF, "acoshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ACOSHL, "acoshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, "acosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C11_BUILTIN        (BUILT_IN_ALIGNED_ALLOC, "aligned_alloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ASIN, "asin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, "asinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ASINH, "asinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ASINHF, "asinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ASINHL, "asinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINL, "asinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_ATAN, "atan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_ATAN2, "atan2", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2F, "atan2f", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2L, "atan2l", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANF, "atanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ATANH, "atanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ATANHF, "atanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ATANHL, "atanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANL, "atanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CBRT, "cbrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CBRTF, "cbrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_CBRTL, "cbrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_CEIL, "ceil", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILF, "ceilf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILL, "ceill", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_COPYSIGN, "copysign", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNF, "copysignf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNL, "copysignl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_COS, "cos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSF, "cosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_COSH, "cosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHF, "coshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHL, "coshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_COSL, "cosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREM, "drem", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREMF, "dremf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREML, "dreml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERF, "erf", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ERFC, "erfc", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERFCF, "erfcf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERFCL, "erfcl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ERFF, "erff", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ERFL, "erfl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_EXP, "exp", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10, "exp10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10F, "exp10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10L, "exp10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXP2, "exp2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXP2F, "exp2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXP2L, "exp2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPF, "expf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPL, "expl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXPM1, "expm1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXPM1F, "expm1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_EXPM1L, "expm1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_FABS, "fabs", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSF, "fabsf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSL, "fabsl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FABSD32, "fabsd32", BT_FN_DFLOAT32_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FABSD64, "fabsd64", BT_FN_DFLOAT64_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FABSD128, "fabsd128", BT_FN_DFLOAT128_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FDIM, "fdim", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_FDIMF, "fdimf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_FDIML, "fdiml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_FLOOR, "floor", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORF, "floorf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORL, "floorl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMA, "fma", BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_FMAF, "fmaf", BT_FN_FLOAT_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_FMAL, "fmal", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_FMAX, "fmax", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMAXF, "fmaxf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMAXL, "fmaxl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMIN, "fmin", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMINF, "fminf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_FMINL, "fminl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FMOD, "fmod", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODF, "fmodf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODL, "fmodl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_FREXP, "frexp", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPF, "frexpf", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPL, "frexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA, "gamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF, "gammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL, "gammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA_R, "gamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF_R, "gammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL_R, "gammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VAL, "huge_val", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALF, "huge_valf", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALL, "huge_vall", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_HYPOT, "hypot", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_HYPOTF, "hypotf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_HYPOTL, "hypotl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_ICEIL, "iceil", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_ICEILF, "iceilf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_ICEILL, "iceill", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_IFLOOR, "ifloor", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_IFLOORF, "ifloorf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_IFLOORL, "ifloorl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ILOGB, "ilogb", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ILOGBF, "ilogbf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_ILOGBL, "ilogbl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_INF, "inf", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFF, "inff", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFL, "infl", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN	       (BUILT_IN_INFD32, "infd32", BT_FN_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFD64, "infd64", BT_FN_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INFD128, "infd128", BT_FN_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_IRINT, "irint", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_IRINTF, "irintf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_IRINTL, "irintl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_IROUND, "iround", BT_FN_INT_DOUBLE, ATTR_MATHFN_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_IROUNDF, "iroundf", BT_FN_INT_FLOAT, ATTR_MATHFN_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_IROUNDL, "iroundl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0, "j0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0F, "j0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0L, "j0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1, "j1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1F, "j1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1L, "j1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_JN, "jn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNF, "jnf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNL, "jnl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_LCEIL, "lceil", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LCEILF, "lceilf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LCEILL, "lceill", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_LDEXP, "ldexp", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPF, "ldexpf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPL, "ldexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_LFLOOR, "lfloor", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LFLOORF, "lfloorf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LFLOORL, "lfloorl", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_LGAMMA, "lgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_LGAMMAF, "lgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_LGAMMAL, "lgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMA_R, "lgamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAF_R, "lgammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAL_R, "lgammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_GCC_BUILTIN        (BUILT_IN_LLCEIL, "llceil", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLCEILF, "llceilf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLCEILL, "llceill", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLFLOOR, "llfloor", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORF, "llfloorf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORL, "llfloorl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_LLRINT, "llrint", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLRINTF, "llrintf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLRINTL, "llrintl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLROUND, "llround", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLROUNDF, "llroundf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LLROUNDL, "llroundl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_LOG, "log", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_LOG10, "log10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10F, "log10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10L, "log10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG1P, "log1p", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG1PF, "log1pf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG1PL, "log1pl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG2, "log2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG2F, "log2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOG2L, "log2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOGB, "logb", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOGBF, "logbf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LOGBL, "logbl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGF, "logf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGL, "logl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LRINT, "lrint", BT_FN_LONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LRINTF, "lrintf", BT_FN_LONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LRINTL, "lrintl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LROUND, "lround", BT_FN_LONG_DOUBLE, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LROUNDF, "lroundf", BT_FN_LONG_FLOAT, ATTR_MATHFN_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_LROUNDL, "lroundl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_MODF, "modf", BT_FN_DOUBLE_DOUBLE_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFF, "modff", BT_FN_FLOAT_FLOAT_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFL, "modfl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NAND32, "nand32", BT_FN_DFLOAT32_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NAND64, "nand64", BT_FN_DFLOAT64_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NAND128, "nand128", BT_FN_DFLOAT128_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NANS, "nans", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NANSF, "nansf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_GCC_BUILTIN        (BUILT_IN_NANSL, "nansl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NEARBYINT, "nearbyint", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTF, "nearbyintf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTL, "nearbyintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTER, "nextafter", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERF, "nextafterf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERL, "nextafterl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARD, "nexttoward", BT_FN_DOUBLE_DOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDF, "nexttowardf", BT_FN_FLOAT_FLOAT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDL, "nexttowardl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_POW, "pow", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10, "pow10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10F, "pow10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10L, "pow10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_POWF, "powf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_GCC_BUILTIN        (BUILT_IN_POWI, "powi", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_POWIF, "powif", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_POWIL, "powil", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_POWL, "powl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMAINDER, "remainder", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMAINDERF, "remainderf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMAINDERL, "remainderl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_REMQUO, "remquo", BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_REMQUOF, "remquof", BT_FN_FLOAT_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_REMQUOL, "remquol", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_BUILTIN        (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_ROUND, "round", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ROUNDF, "roundf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ROUNDL, "roundl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALB, "scalb", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBF, "scalbf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBL, "scalbl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBLN, "scalbln", BT_FN_DOUBLE_DOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBLNF, "scalblnf", BT_FN_FLOAT_FLOAT_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBLNL, "scalblnl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBN, "scalbn", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBNF, "scalbnf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_SCALBNL, "scalbnl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITF, "signbitf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITL, "signbitl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD32, "signbitd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD64, "signbitd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD128, "signbitd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICAND, "significand", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDF, "significandf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDL, "significandl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_SIN, "sin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOS, "sincos", BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSF, "sincosf", BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSL, "sincosl", BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINF, "sinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_SINH, "sinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHF, "sinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHL, "sinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SINL, "sinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_SQRT, "sqrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTF, "sqrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTL, "sqrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_LIB_BUILTIN        (BUILT_IN_TAN, "tan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANF, "tanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_LIB_BUILTIN        (BUILT_IN_TANH, "tanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHF, "tanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHL, "tanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_TANL, "tanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_BUILTIN        (BUILT_IN_TGAMMA, "tgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_TGAMMAF, "tgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_TGAMMAL, "tgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_C99_BUILTIN        (BUILT_IN_TRUNC, "trunc", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_TRUNCF, "truncf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_TRUNCL, "truncl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0, "y0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0F, "y0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0L, "y0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1, "y1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1F, "y1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1L, "y1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_YN, "yn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNF, "ynf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNL, "ynl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+
+/* Category: _Complex math builtins.  */
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABS, "cabs", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSF, "cabsf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSL, "cabsl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOS, "cacos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSF, "cacosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSH, "cacosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHF, "cacoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHL, "cacoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSL, "cacosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARG, "carg", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGF, "cargf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGL, "cargl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASIN, "casin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINF, "casinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINH, "casinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHF, "casinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHL, "casinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINL, "casinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATAN, "catan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANF, "catanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANH, "catanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHF, "catanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHL, "catanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANL, "catanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOS, "ccos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSF, "ccosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSH, "ccosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHF, "ccoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHL, "ccoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSL, "ccosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXP, "cexp", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPF, "cexpf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPL, "cexpl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_CEXPI, "cexpi", BT_FN_COMPLEX_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_CEXPIF, "cexpif", BT_FN_COMPLEX_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_GCC_BUILTIN        (BUILT_IN_CEXPIL, "cexpil", BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAG, "cimag", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAGF, "cimagf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAGL, "cimagl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOG, "clog", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGF, "clogf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGL, "clogl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10, "clog10", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10F, "clog10f", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10L, "clog10l", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJ, "conj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJF, "conjf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJL, "conjl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOW, "cpow", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWF, "cpowf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWL, "cpowl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJ, "cproj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJF, "cprojf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJL, "cprojl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREAL, "creal", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALF, "crealf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALL, "creall", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSIN, "csin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINF, "csinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINH, "csinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHF, "csinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHL, "csinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINL, "csinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRT, "csqrt", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTF, "csqrtf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTL, "csqrtl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTAN, "ctan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANF, "ctanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANH, "ctanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHF, "ctanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHL, "ctanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANL, "ctanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+
+/* Category: string/memory builtins.  */
+/* bcmp, bcopy and bzero have traditionally accepted NULL pointers
+   when the length parameter is zero, so don't apply attribute "nonnull".  */
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCMP, "bcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCOPY, "bcopy", BT_FN_VOID_CONST_PTR_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_BZERO, "bzero", BT_FN_VOID_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_INDEX, "index", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMCHR, "memchr", BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_MEMCMP, "memcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN_CHKP   (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN_CHKP   (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN_CHKP   (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_RINDEX, "rindex", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY, "stpncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCASECMP, "strcasecmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCMP, "strcmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRCSPN, "strcspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRDUP, "strdup", BT_FN_STRING_CONST_STRING, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNDUP, "strndup", BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCASECMP, "strncasecmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRNCAT, "strncat", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRNCMP, "strncmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRNCPY, "strncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRPBRK, "strpbrk", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRRCHR, "strrchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRSPN, "strspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_STRSTR, "strstr", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
+
+/* Category: stdio builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_FPRINTF, "fprintf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_UNLOCKED, "fprintf_unlocked", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_PUTC, "putc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTC_UNLOCKED, "putc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FPUTC, "fputc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTC_UNLOCKED, "fputc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FPUTS, "fputs", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTS_UNLOCKED, "fputs_unlocked", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_FSCANF, "fscanf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_SCANF_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_FWRITE, "fwrite", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FWRITE_UNLOCKED, "fwrite_unlocked", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_PRINTF, "printf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_UNLOCKED, "printf_unlocked", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
+DEF_LIB_BUILTIN        (BUILT_IN_PUTCHAR, "putchar", BT_FN_INT_INT, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTCHAR_UNLOCKED, "putchar_unlocked", BT_FN_INT_INT, ATTR_NULL)
+DEF_LIB_BUILTIN        (BUILT_IN_PUTS, "puts", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTS_UNLOCKED, "puts_unlocked", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_SCANF, "scanf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_SCANF_1_2)
+DEF_C99_BUILTIN        (BUILT_IN_SNPRINTF, "snprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_3_4)
+DEF_LIB_BUILTIN        (BUILT_IN_SPRINTF, "sprintf", BT_FN_INT_STRING_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_SSCANF, "sscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_FORMAT_SCANF_NOTHROW_2_3)
+DEF_LIB_BUILTIN        (BUILT_IN_VFPRINTF, "vfprintf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
+DEF_C99_BUILTIN        (BUILT_IN_VFSCANF, "vfscanf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_2_0)
+DEF_LIB_BUILTIN        (BUILT_IN_VPRINTF, "vprintf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_1_0)
+DEF_C99_BUILTIN        (BUILT_IN_VSCANF, "vscanf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_1_0)
+DEF_C99_BUILTIN        (BUILT_IN_VSNPRINTF, "vsnprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_3_0)
+DEF_LIB_BUILTIN        (BUILT_IN_VSPRINTF, "vsprintf", BT_FN_INT_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_2_0)
+DEF_C99_BUILTIN        (BUILT_IN_VSSCANF, "vsscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_NOTHROW_2_0)
+
+/* Category: ctype builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_ISALNUM, "isalnum", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISALPHA, "isalpha", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISASCII, "isascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ISBLANK, "isblank", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISCNTRL, "iscntrl", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISDIGIT, "isdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISGRAPH, "isgraph", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISLOWER, "islower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISPRINT, "isprint", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISPUNCT, "ispunct", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISSPACE, "isspace", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISUPPER, "isupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ISXDIGIT, "isxdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_TOASCII, "toascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_TOLOWER, "tolower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_TOUPPER, "toupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+
+/* Category: wctype builtins.  */
+DEF_C94_BUILTIN        (BUILT_IN_ISWALNUM, "iswalnum", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWALPHA, "iswalpha", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_ISWBLANK, "iswblank", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWCNTRL, "iswcntrl", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWDIGIT, "iswdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWGRAPH, "iswgraph", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWLOWER, "iswlower", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWPRINT, "iswprint", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWPUNCT, "iswpunct", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWSPACE, "iswspace", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWUPPER, "iswupper", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_ISWXDIGIT, "iswxdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_TOWLOWER, "towlower", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_C94_BUILTIN        (BUILT_IN_TOWUPPER, "towupper", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
+
+/* Category: integer overflow checking builtins.  */
+DEF_GCC_BUILTIN        (BUILT_IN_ADD_OVERFLOW, "add_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_SUB_OVERFLOW, "sub_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_MUL_OVERFLOW, "mul_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)
+/* Clang compatibility.  */
+DEF_GCC_BUILTIN        (BUILT_IN_SADD_OVERFLOW, "sadd_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_SADDL_OVERFLOW, "saddl_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_SADDLL_OVERFLOW, "saddll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_SSUB_OVERFLOW, "ssub_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_SSUBL_OVERFLOW, "ssubl_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_SSUBLL_OVERFLOW, "ssubll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_SMUL_OVERFLOW, "smul_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_SMULL_OVERFLOW, "smull_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_SMULLL_OVERFLOW, "smulll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UADD_OVERFLOW, "uadd_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UADDL_OVERFLOW, "uaddl_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UADDLL_OVERFLOW, "uaddll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_USUB_OVERFLOW, "usub_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_USUBL_OVERFLOW, "usubl_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_USUBLL_OVERFLOW, "usubll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UMUL_OVERFLOW, "umul_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UMULL_OVERFLOW, "umull_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UMULLL_OVERFLOW, "umulll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
+
+/* Category: miscellaneous builtins.  */
+DEF_LIB_BUILTIN        (BUILT_IN_ABORT, "abort", BT_FN_VOID, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_ABS, "abs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_AGGREGATE_INCOMING_ADDRESS, "aggregate_incoming_address", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ALLOCA, "alloca", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_APPLY, "apply", BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_APPLY_ARGS, "apply_args", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_BSWAP16, "bswap16", BT_FN_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_BSWAP32, "bswap32", BT_FN_UINT32_UINT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_BSWAP64, "bswap64", BT_FN_UINT64_UINT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_CLEAR_CACHE, "__clear_cache", BT_FN_VOID_PTR_PTR, ATTR_NOTHROW_LEAF_LIST)
+/* [trans-mem]: Adjust BUILT_IN_TM_CALLOC if BUILT_IN_CALLOC is changed.  */
+DEF_LIB_BUILTIN        (BUILT_IN_CALLOC, "calloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLASSIFY_TYPE, "classify_type", BT_FN_INT_VAR, ATTR_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZ, "clz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZIMAX, "clzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZL, "clzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLZLL, "clzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CONSTANT_P, "constant_p", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZ, "ctz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZIMAX, "ctzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZL, "ctzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CTZLL, "ctzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLRSB, "clrsb", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLRSBIMAX, "clrsbimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLRSBL, "clrsbl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_CLRSBLL, "clrsbll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DCGETTEXT, "dcgettext", BT_FN_STRING_CONST_STRING_CONST_STRING_INT, ATTR_FORMAT_ARG_2)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_DGETTEXT, "dgettext", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_FORMAT_ARG_2)
+DEF_GCC_BUILTIN        (BUILT_IN_DWARF_CFA, "dwarf_cfa", BT_FN_PTR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_DWARF_SP_COLUMN, "dwarf_sp_column", BT_FN_UINT, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN, "eh_return", BT_FN_VOID_PTRMODE_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN_DATA_REGNO, "eh_return_data_regno", BT_FN_INT_INT, ATTR_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECL, "execl", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLP, "execlp", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLE, "execle", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_NOTHROW_SENTINEL_1)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECV, "execv", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVP, "execvp", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVE, "execve", BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_EXIT, "exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EXPECT, "expect", BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_ASSUME_ALIGNED, "assume_aligned", BT_FN_PTR_CONST_PTR_SIZE_VAR, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EXTEND_POINTER, "extend_pointer", BT_FN_UNWINDWORD_PTR, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_EXTRACT_RETURN_ADDR, "extract_return_addr", BT_FN_PTR_PTR, ATTR_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFS, "ffs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSIMAX, "ffsimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSL, "ffsl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSLL, "ffsll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN        (BUILT_IN_FORK, "fork", BT_FN_PID, ATTR_NOTHROW_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FRAME_ADDRESS, "frame_address", BT_FN_PTR_UINT, ATTR_NULL)
+/* [trans-mem]: Adjust BUILT_IN_TM_FREE if BUILT_IN_FREE is changed.  */
+DEF_LIB_BUILTIN        (BUILT_IN_FREE, "free", BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FROB_RETURN_ADDR, "frob_return_addr", BT_FN_PTR_PTR, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_GETTEXT, "gettext", BT_FN_STRING_CONST_STRING, ATTR_FORMAT_ARG_1)
+DEF_C99_BUILTIN        (BUILT_IN_IMAXABS, "imaxabs", BT_FN_INTMAX_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_INIT_DWARF_REG_SIZES, "init_dwarf_reg_size_table", BT_FN_VOID_PTR, ATTR_NULL)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITE, "finite", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEF, "finitef", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEL, "finitel", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED32, "finited32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED64, "finited64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED128, "finited128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_FPCLASSIFY, "fpclassify", BT_FN_INT_INT_INT_INT_INT_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISFINITE, "isfinite", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISINF_SIGN, "isinf_sign", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ISINF, "isinf", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFF, "isinff", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFL, "isinfl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD32, "isinfd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD64, "isinfd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD128, "isinfd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_C90RES_BUILTIN (BUILT_IN_ISNAN, "isnan", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANF, "isnanf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANL, "isnanl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND32, "isnand32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND64, "isnand64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND128, "isnand128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_ISNORMAL, "isnormal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISGREATER, "isgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISGREATEREQUAL, "isgreaterequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISLESS, "isless", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISLESSEQUAL, "islessequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISLESSGREATER, "islessgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_ISUNORDERED, "isunordered", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+DEF_LIB_BUILTIN        (BUILT_IN_LABS, "labs", BT_FN_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN_LLABS, "llabs", BT_FN_LONGLONG_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_LONGJMP, "longjmp", BT_FN_VOID_PTR_INT, ATTR_NORETURN_NOTHROW_LIST)
+/* [trans-mem]: Adjust BUILT_IN_TM_MALLOC if BUILT_IN_MALLOC is changed.  */
+DEF_LIB_BUILTIN        (BUILT_IN_MALLOC, "malloc", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_NEXT_ARG, "next_arg", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITY, "parity", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITYIMAX, "parityimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITYL, "parityl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_PARITYLL, "parityll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNT, "popcount", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTIMAX, "popcountimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTL, "popcountl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTLL, "popcountll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_POSIX_MEMALIGN, "posix_memalign", BT_FN_INT_PTRPTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_GCC_BUILTIN        (BUILT_IN_PREFETCH, "prefetch", BT_FN_VOID_CONST_PTR_VAR, ATTR_NOVOPS_LEAF_LIST)
+DEF_LIB_BUILTIN        (BUILT_IN_REALLOC, "realloc", BT_FN_PTR_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_RETURN, "return", BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_RETURN_ADDRESS, "return_address", BT_FN_PTR_UINT, ATTR_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_SAVEREGS, "saveregs", BT_FN_PTR_VAR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_SETJMP, "setjmp", BT_FN_INT_PTR, ATTR_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRFMON, "strfmon", BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_STRFMON_NOTHROW_3_4)
+DEF_LIB_BUILTIN        (BUILT_IN_STRFTIME, "strftime", BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR, ATTR_FORMAT_STRFTIME_NOTHROW_3_0)
+DEF_GCC_BUILTIN        (BUILT_IN_TRAP, "trap", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UNREACHABLE, "unreachable", BT_FN_VOID, ATTR_CONST_NORETURN_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_UNWIND_INIT, "unwind_init", BT_FN_VOID, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_UPDATE_SETJMP_BUF, "update_setjmp_buf", BT_FN_VOID_PTR_INT, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_END, "va_end", BT_FN_VOID_VALIST_REF, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_START, "va_start", BT_FN_VOID_VALIST_REF_VAR, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK, "va_arg_pack", BT_FN_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK_LEN, "va_arg_pack_len", BT_FN_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN__EXIT, "_exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+DEF_C99_BUILTIN        (BUILT_IN__EXIT2, "_Exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LEAF_LIST)
+
+/* Implementing nested functions.  */
+DEF_BUILTIN_STUB (BUILT_IN_INIT_TRAMPOLINE, "__builtin_init_trampoline")
+DEF_BUILTIN_STUB (BUILT_IN_INIT_HEAP_TRAMPOLINE, "__builtin_init_heap_trampoline")
+DEF_BUILTIN_STUB (BUILT_IN_ADJUST_TRAMPOLINE, "__builtin_adjust_trampoline")
+DEF_BUILTIN_STUB (BUILT_IN_NONLOCAL_GOTO, "__builtin_nonlocal_goto")
+
+/* Implementing __builtin_setjmp.  */
+DEF_BUILTIN_STUB (BUILT_IN_SETJMP_SETUP, "__builtin_setjmp_setup")
+DEF_BUILTIN_STUB (BUILT_IN_SETJMP_RECEIVER, "__builtin_setjmp_receiver")
+
+/* Implementing variable sized local variables.  */
+DEF_BUILTIN_STUB (BUILT_IN_STACK_SAVE, "__builtin_stack_save")
+DEF_BUILTIN_STUB (BUILT_IN_STACK_RESTORE, "__builtin_stack_restore")
+DEF_BUILTIN_STUB (BUILT_IN_ALLOCA_WITH_ALIGN, "__builtin_alloca_with_align")
+
+/* Object size checking builtins.  */
+DEF_GCC_BUILTIN	       (BUILT_IN_OBJECT_SIZE, "object_size", BT_FN_SIZE_CONST_PTR_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
+DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY_CHK, "__stpncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCAT_CHK, "__strncat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCPY_CHK, "__strncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SNPRINTF_CHK, "__snprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_5_6)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_SPRINTF_CHK, "__sprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_4_5)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSNPRINTF_CHK, "__vsnprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_5_0)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSPRINTF_CHK, "__vsprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_4_0)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_CHK, "__fprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_3_4)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_CHK, "__printf_chk", BT_FN_INT_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VFPRINTF_CHK, "__vfprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_3_0)
+DEF_EXT_LIB_BUILTIN    (BUILT_IN_VPRINTF_CHK, "__vprintf_chk", BT_FN_INT_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
+
+/* Profiling hooks.  */
+DEF_BUILTIN (BUILT_IN_PROFILE_FUNC_ENTER, "__cyg_profile_func_enter", BUILT_IN_NORMAL, BT_FN_VOID_PTR_PTR, BT_LAST,
+	     false, false, false, ATTR_NULL, true, true)
+DEF_BUILTIN (BUILT_IN_PROFILE_FUNC_EXIT, "__cyg_profile_func_exit", BUILT_IN_NORMAL, BT_FN_VOID_PTR_PTR, BT_LAST,
+	     false, false, false, ATTR_NULL, true, true)
+
+/* TLS thread pointer related builtins.  */
+DEF_BUILTIN (BUILT_IN_THREAD_POINTER, "__builtin_thread_pointer",
+	     BUILT_IN_NORMAL, BT_FN_PTR, BT_LAST,
+	     false, false, true, ATTR_CONST_NOTHROW_LIST, true,
+	     targetm.have_tls)
+
+DEF_BUILTIN (BUILT_IN_SET_THREAD_POINTER, "__builtin_set_thread_pointer",
+	     BUILT_IN_NORMAL, BT_FN_VOID_PTR, BT_LAST,
+	     false, false, true, ATTR_NOTHROW_LIST, true,
+	     targetm.have_tls)
+
+/* TLS emulation.  */
+DEF_BUILTIN (BUILT_IN_EMUTLS_GET_ADDRESS, targetm.emutls.get_address,
+	     BUILT_IN_NORMAL,
+	     BT_FN_PTR_PTR,  BT_FN_PTR_PTR,
+	     true, true, true, ATTR_CONST_NOTHROW_NONNULL_LEAF, false,
+	     !targetm.have_tls)
+DEF_BUILTIN (BUILT_IN_EMUTLS_REGISTER_COMMON,
+	     targetm.emutls.register_common, BUILT_IN_NORMAL,
+	     BT_FN_VOID_PTR_WORD_WORD_PTR, BT_FN_VOID_PTR_WORD_WORD_PTR,
+	     true, true, true, ATTR_NOTHROW_LEAF_LIST, false,
+	     !targetm.have_tls)
+
+/* Exception support.  */
+DEF_BUILTIN_STUB (BUILT_IN_UNWIND_RESUME, "__builtin_unwind_resume")
+DEF_BUILTIN_STUB (BUILT_IN_CXA_END_CLEANUP, "__builtin_cxa_end_cleanup")
+DEF_BUILTIN_STUB (BUILT_IN_EH_POINTER, "__builtin_eh_pointer")
+DEF_BUILTIN_STUB (BUILT_IN_EH_FILTER, "__builtin_eh_filter")
+DEF_BUILTIN_STUB (BUILT_IN_EH_COPY_VALUES, "__builtin_eh_copy_values")
+
+/* __FILE__, __LINE__, __FUNCTION__ as builtins.  */
+DEF_GCC_BUILTIN (BUILT_IN_FILE, "FILE", BT_FN_CONST_STRING, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN (BUILT_IN_FUNCTION, "FUNCTION", BT_FN_CONST_STRING, ATTR_NOTHROW_LEAF_LIST)
+DEF_GCC_BUILTIN (BUILT_IN_LINE, "LINE", BT_FN_INT, ATTR_NOTHROW_LEAF_LIST)
+
+#if 0 //Ifdefed out because we hard-coded the proper overloadings of the atomic built-ins
+/* Synchronization Primitives.  */
+#include "sync-builtins.def"
+
+/* Offloading and Multi Processing builtins.  */
+#include "omp-builtins.def"
+
+/* Cilk keywords builtins.  */
+#include "cilk-builtins.def"
+
+/* GTM builtins. */
+#include "gtm-builtins.def"
+
+/* Sanitizer builtins. */
+#include "sanitizer.def"
+
+/* Cilk Plus builtins.  */
+#include "cilkplus.def"
+
+/* Pointer Bounds Checker builtins.  */
+#include "chkp-builtins.def"
+#endif
+
+#undef DEF_BUILTIN_CHKP
+#undef DEF_BUILTIN
Index: libcfa/prelude/extras.c
===================================================================
--- libcfa/prelude/extras.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/extras.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,6 @@
+#include <stddef.h>					// size_t, ptrdiff_t
+#include <stdint.h>					// intX_t, uintX_t, where X is 8, 16, 32, 64
+#include <uchar.h>					// char16_t, char32_t
+#include <wchar.h>					// wchar_t
+#include <stdlib.h>					// malloc, free, exit, atexit, abort
+#include <stdio.h>					// printf
Index: libcfa/prelude/extras.regx
===================================================================
--- libcfa/prelude/extras.regx	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/extras.regx	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,27 @@
+typedef.* size_t;
+typedef.* ptrdiff_t;
+typedef.* __int8_t;
+typedef.* __int16_t;
+typedef.* __int32_t;
+typedef.* __int64_t;
+typedef.* __uint8_t;
+typedef.* __uint16_t;
+typedef.* __uint32_t;
+typedef.* __uint64_t;
+typedef.* int8_t;
+typedef.* int16_t;
+typedef.* int32_t;
+typedef.* int64_t;
+typedef.* uint8_t;
+typedef.* uint16_t;
+typedef.* uint32_t;
+typedef.* uint64_t;
+typedef.* char16_t;
+typedef.* char32_t;
+typedef.* wchar_t;
+extern.*\*malloc\(.*\).*
+extern.* free\(.*\).*
+extern.* exit\(.*\).*
+extern.* atexit\(.*\).*
+extern.* abort\(.*\).*
+extern.* printf\(.*\).*
Index: libcfa/prelude/prelude-gen.cc
===================================================================
--- libcfa/prelude/prelude-gen.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/prelude-gen.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,388 @@
+#include <algorithm>
+#include <array>
+#include <iostream>
+#include <string>
+#include <vector>
+using namespace std;
+
+static struct{
+	const string name;
+	bool isFloat;
+	bool hasComparison;
+} basicTypes[] = {
+	// { "char"                  , false, true , },
+	// { "signed char"           , false, true , },
+	// { "unsigned char"         , false, true , },
+	{ "signed short"          , false, true , },
+	{ "unsigned short"        , false, true , },
+	{ "signed int"            , false, true , },
+	{ "unsigned int"          , false, true , },
+	{ "signed long int"       , false, true , },
+	{ "unsigned long int"     , false, true , },
+	{ "signed long long int"  , false, true , },
+	{ "unsigned long long int", false, true , },
+	{ "float"                 , true , true , },
+	{ "double"                , true , true , },
+	{ "long double"           , true , true , },
+	{ "float _Complex"        , true , false, },
+	{ "double _Complex"       , true , false, },
+	{ "long double _Complex"  , true , false, },
+#if defined(__SIZEOF_INT128__)
+	{ "__int128"              , false, true , },
+	{ "unsigned __int128"     , false, true , },
+#endif
+#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
+	{ "__float80"             , true , true , },
+	{ "_Float128"             , true , true , },
+#endif
+};
+
+struct {
+	const string name;
+	bool assignment = false;
+	bool floatCompat = true;
+	bool isComparison = false;
+	bool isEqual = false;
+} arithmeticOperators[] = {
+	{ "?++"  , true , true, false, false },
+	{ "?--"  , true , true, false, false },
+	{ "++?"  , true , true, false, false },
+	{ "--?"  , true , true, false, false },
+	{ "+?"   , false, true , false, false },
+	{ "-?"   , false, true , false, false },
+	{ "~?"   , false, false, false, false },
+	{ "!?"   , false, true , false, true  },
+	{ "?*?"  , false, true , false, false },
+	{ "?/?"  , false, true , false, false },
+	{ "?%?"  , false, false, false, false },
+	{ "?+?"  , false, true , false, false },
+	{ "?-?"  , false, true , false, false },
+	{ "?<<?" , false, false, false, false },
+	{ "?>>?" , false, false, false, false },
+	{ "?<?"  , false, true , true , false },
+	{ "?<=?" , false, true , true , true  },
+	{ "?>?"  , false, true , true , false },
+	{ "?>=?" , false, true , true , true  },
+	{ "?==?" , false, true , false, true  },
+	{ "?!=?" , false, true , false, true  },
+	{ "?&?"  , false, false, false, false },
+	{ "?^?"  , false, false, false, false },
+	{ "?|?"  , false, false, false, false },
+	{ "?=?"  , true , true , false, false },
+	{ "?+=?" , true , true , false, false },
+	{ "?-=?" , true , true , false, false },
+	{ "?*=?" , true , true , false, false },
+	{ "?/=?" , true , true , false, false },
+	{ "?%=?" , true , false, false, false },
+	{ "?<<=?", true , false, false, false },
+	{ "?>>=?", true , false, false, false },
+	{ "?&=?" , true , false, false, false },
+	{ "?|=?" , true , false, false, false },
+	{ "?^=?" , true , false, false, false },
+};
+
+enum ArgType { Normal, PtrDiff, CommPtrDiff };
+
+struct {
+	const string name;
+	bool assignment = false;
+	string diffReturn;
+	ArgType diffArg2 = Normal;
+	string sized;
+} pointerOperators[] = {
+	{ "?++", true, "", Normal, " | sized(DT)" },
+	{ "?--", true, "", Normal, " | sized(DT)" },
+	{ "++?", true, "", Normal, " | sized(DT)" },
+	{ "--?", true, "", Normal, " | sized(DT)" },
+	{ "!?" , false, "int", Normal, "" },
+	{ "?<?", false, "signed int", Normal, "" },
+	{ "?<=?", false, "signed int", Normal, "" },
+	{ "?>?", false, "signed int", Normal, "" },
+	{ "?>=?", false, "signed int", Normal, "" },
+	{ "?==?", false, "signed int", Normal, "" },
+	{ "?!=?", false, "signed int", Normal, "" },
+	{ "?=?", true, "", Normal, "" }, // void * LHS, zero_t RHS ???
+	{ "*?", false, "&", Normal, " | sized(DT)" }, // & ???
+
+	{ "?-?", false, "ptrdiff_t", Normal, " | sized(DT)" },
+	{ "?-?", false, "", PtrDiff, " | sized(DT)" },
+	{ "?-=?", true, "", PtrDiff, " | sized(DT)" },
+
+	{ "?+?", false, "", CommPtrDiff, " | sized(DT)" },
+	{ "?[?]", false, "&", CommPtrDiff, " | sized(DT)" }, // & ???
+	{ "?+=?" , true, "", PtrDiff, " | sized(DT)" },
+};
+
+template<size_t N>
+string mask2string(unsigned int mask, array<string, N> names) {
+	string result = "";
+	int i = 0;
+	for(auto name : names) {
+		if(mask & (1 << i)) {
+			result += name;
+		} else {
+			result.append(name.size(), ' ');
+		}
+		i++;
+	}
+	return result;
+}
+
+template <typename... T>
+constexpr auto make_array(T&&... values) ->
+    std::array<
+        typename std::decay<typename std::common_type<T...>::type>::type,
+        sizeof...(T)>
+{
+    return std::array<
+        typename std::decay<
+            typename std::common_type<T...>::type>::type,
+        sizeof...(T)>{{std::forward<T>(values)...}};
+}
+
+int main() {
+	cout << "# 2 \"prelude.cf\"  // needed for error messages from this file" << endl;
+	cout << "trait sized(dtype T) {};" << endl;
+
+	cout << "//////////////////////////" << endl;
+	cout << "// Arithmetic Operators //" << endl;
+	cout << "//////////////////////////" << endl;
+	cout << endl;
+
+	cout << "signed int ?==?( zero_t, zero_t ),							?!=?( zero_t, zero_t );" << endl;
+	cout << "signed int ?==?( one_t, one_t ),							?!=?( one_t, one_t );" << endl;
+	cout << "signed int ?==?( _Bool, _Bool ),							?!=?( _Bool, _Bool );" << endl;
+	cout << "signed int	!?( _Bool );" << endl;
+
+	for (auto op : arithmeticOperators) {
+		for (auto type : basicTypes ) {
+			auto operands = count(op.name.begin(), op.name.end(), '?');
+			if (! op.floatCompat && type.isFloat) continue;
+			if (op.isComparison && ! type.hasComparison) continue;
+			if (op.assignment) {
+				const char * qualifiers[] = { "", "volatile " };
+				for (auto q : qualifiers){
+					cout << type.name << " " << op.name << "(";
+					cout << q << type.name << " &";
+					for (int i = 1; i < operands; ++i) {
+						cout << ", " << type.name;
+					}
+					cout << ");" << endl;
+				}
+			} else {
+				if (op.isComparison || op.isEqual) cout << "signed int";
+				else cout << type.name;
+				cout << " " << op.name << "(";
+				for (int i = 0; i < operands; ++i) {
+					cout << type.name;
+					if ((i+1) != operands) cout << ", ";
+				}
+				cout << ");" << endl;
+			}
+		}
+		cout << endl;
+	}
+	cout << endl;
+
+	cout << "/////////////////////////////" << endl;
+	cout << "// Arithmetic Constructors //" << endl;
+	cout << "/////////////////////////////" << endl;
+	auto otype = [](const std::string & type, bool do_volatile = false) {
+		cout << "void \t?{} ( " << type << " & );" << endl;
+		cout << "void \t?{} ( " << type << " &, " << type << " );" << endl;
+		cout << type << " \t?=? ( " << type << " &, " << type << " )";
+		if( do_volatile ) {
+			cout << ", \t?=?( volatile " << type << " &, " << type << " )";
+		}
+		cout << ";" << endl;
+		cout << "void \t^?{}( " << type << " & );" << endl;
+	};
+
+	otype("zero_t");
+	otype("one_t");
+	otype("_Bool", true);
+	otype("char", true);
+	otype("signed char", true);
+	otype("unsigned char", true);
+
+	for (auto type : basicTypes) {
+		cout << "void  ?{}(" << type.name << " &);" << endl;
+		cout << "void  ?{}(" << type.name << " &, " << type.name << ");" << endl;
+		cout << "void ^?{}(" << type.name << " &);" << endl;
+		cout << endl;
+	}
+	cout << endl;
+
+	cout << "//////////////////////////" << endl;
+	cout << "// Pointer Constructors //" << endl;
+	cout << "//////////////////////////" << endl;
+	cout << "forall(ftype FT) void  ?{}( FT *&, FT * );" << endl;
+	cout << "forall(ftype FT) void  ?{}( FT * volatile &, FT * );" << endl;
+
+	// generate qualifiers
+	vector<string> qualifiersSingle;
+	vector<pair<const string, const string>> qualifiersPair;
+	const unsigned int NQ = 2;
+	for(unsigned int lhs = 0; lhs < (1<<NQ); lhs++) {
+		// for parameter of default constructor and destructor
+		qualifiersSingle.push_back(mask2string(lhs, make_array("const "s, "volatile "s)));
+
+		// for first and second parameters of copy constructors
+		for(unsigned int rhs = 0; rhs < (1<<NQ); rhs++) {
+			if((lhs & rhs) == rhs) {
+				qualifiersPair.push_back({
+					mask2string(lhs, make_array("const "s, "volatile "s)),
+					mask2string(rhs, make_array("const "s, "volatile "s))
+				});
+			}
+		}
+	}
+
+	for (auto type : { "  DT", "void" }) {
+		for (auto cvq : qualifiersPair) {
+			for (auto is_vol : { "        ", "volatile" }) {
+				cout << "forall(dtype DT) void  ?{}(" << cvq.first << type << " * " << is_vol << " &, " << cvq.second << "DT *);" << endl;
+			}
+		}
+		for (auto cvq : qualifiersSingle) {
+			for (auto is_vol : { "        ", "volatile" }) {
+				cout << "forall(dtype DT) void  ?{}(" << cvq << type << " * " << is_vol << " &);" << endl;
+			}
+			for (auto is_vol : { "        ", "volatile" }) {
+				cout << "forall(dtype DT) void ^?{}(" << cvq << type << " * " << is_vol << " &);" << endl;
+			}
+		}
+	}
+
+	{
+		auto type = "  DT";
+		for (auto is_vol : { "        ", "volatile" }) {
+			for (auto cvq : qualifiersSingle) {
+				cout << "forall(dtype DT) void ?{}( " << cvq << type << " * " << is_vol << " &, zero_t);" << endl;
+			}
+		}
+	}
+
+	cout << endl;
+
+	cout << "forall(ftype FT) void	?{}( FT *	   &, zero_t );	" << endl;
+	cout << "forall(ftype FT) FT *			?=?( FT *	   &, zero_t );" << endl;
+	cout << "forall(ftype FT) FT *			?=?( FT * volatile &, zero_t );" << endl;
+	cout << "forall( ftype FT ) void	?{}( FT *	   & );" << endl;
+	cout << "forall( ftype FT ) void	^?{}( FT *	   & );" << endl;
+	cout << endl;
+
+	cout << "///////////////////////" << endl;
+	cout << "// Pointer Operators //" << endl;
+	cout << "///////////////////////" << endl;
+
+	cout << "forall( ftype FT ) FT *			?=?( FT *&, FT * );" << endl;
+	cout << "forall( ftype FT ) FT *			?=?( FT * volatile &, FT * );" << endl;
+	cout << "forall( ftype FT ) int !?( FT * );" << endl;
+	cout << "forall( ftype FT ) signed int ?==?( FT *, FT * );" << endl;
+	cout << "forall( ftype FT ) signed int ?!=?( FT *, FT * );" << endl;
+	cout << "forall( ftype FT ) FT &		 *?( FT * );" << endl;
+
+
+	for (auto op : pointerOperators) {
+		auto forall = [&op]() {
+			cout << "forall(dtype DT" << op.sized << ") ";
+		};
+		for (auto type : { "DT"/*, "void"*/ } ) {
+			auto operands = count(op.name.begin(), op.name.end(), '?');
+			if (op.assignment) {
+				// const char * qualifiers[] = { "", "volatile ", "const ", "const volatile " };
+				switch(op.diffArg2) {
+					case Normal:
+						if (operands == 1) {
+							for (auto q : qualifiersSingle){
+								for (auto q2 : { "        ", "volatile" }) {
+									forall();
+									cout << q << type << " * " << op.name << "(";
+									cout << q << type << " * " << q2 << " &";
+									cout << ");" << endl;
+								}
+							}
+						} else {
+							for (auto q : qualifiersPair){
+								for (auto q2 : { "        ", "volatile" }) {
+									forall();
+									cout << q.first << type << " * " << op.name << "(";
+									cout << q.first << type << " * " << q2 << " &";
+
+									for (int i = 1; i < operands; ++i) {
+										cout << ", " << q.second << type << " *";
+									}
+									cout << ");" << endl;
+								}
+							}
+						}
+						break;
+					case PtrDiff:
+						for (auto q : qualifiersSingle){
+							for (auto q2 : { "        ", "volatile" }) {
+								forall();
+								cout << q << type << " * " << op.name << "(";
+								cout << q << type << " * " << q2 << " &";
+
+								for (int i = 1; i < operands; ++i) {
+									cout << ", ptrdiff_t";
+								}
+								cout << ");" << endl;
+							}
+						}
+						break;
+					default:
+						abort();
+					}
+			} else {
+				auto name_and_arg1 = [&op, &type](const std::string & q) {
+					if (op.diffReturn == "&") cout << q << type << " &"; // -- qualifiers
+					else if (op.diffReturn != "") cout << op.diffReturn;
+					else cout << q << type << " *";
+					cout << " " << op.name << "(";
+				};
+				switch(op.diffArg2) {
+					case Normal:
+						for (auto q : qualifiersSingle) {
+							forall();
+							name_and_arg1( q );
+							for (int i = 0; i < operands; ++i) {
+								cout << q << type << " *";
+								if ((i+1) != operands) cout << ", ";
+							}
+							cout << ");" << endl;
+						}
+						break;
+					case CommPtrDiff:
+						for (auto q : qualifiersSingle) {
+							forall();
+							name_and_arg1( q );
+							cout << "ptrdiff_t, " << q << type << " *);" << endl;
+						}
+						// fallthrough
+					case PtrDiff:
+						for (auto q : qualifiersSingle) {
+							forall();
+							name_and_arg1( q );
+							cout << q << type << " *, ptrdiff_t);" << endl;
+						}
+						break;
+				}
+			}
+		}
+		cout << endl;
+	}
+	cout << endl;
+
+	for (auto is_vol : { "        ", "volatile" }) {
+		for (auto cvq : qualifiersPair) {
+				cout << "forall(dtype DT) " << cvq.first << "void * ?=?( " << cvq.first << "void * " << is_vol << " &, " << cvq.second << "DT *);" << endl;
+		}
+		for (auto cvq : qualifiersSingle) {
+			cout << "forall(dtype DT) " << cvq <<   "  DT * ?=?( " << cvq << "  DT * " << is_vol << " &, zero_t);" << endl;
+		}
+	}
+	cout << endl;
+}
+
Index: libcfa/prelude/prelude.old.cf
===================================================================
--- libcfa/prelude/prelude.old.cf	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/prelude.old.cf	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,783 @@
+//
+// Copyright (C) Glen Ditchfield 1994, 1999
+//
+// prelude.cf -- Standard Cforall Preample for C99
+//
+// Author           : Glen Ditchfield
+// Created On       : Sat Nov 29 07:23:41 2014
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Apr 22 13:21:47 2018
+// Update Count     : 103
+//
+
+# 2 "prelude.cf"  // needed for error messages from this file
+
+// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
+
+// ------------------------------------------------------------
+//
+// Section 6.7.11 Trait Declarations
+// Note: the sized trait is used in declarations later in this
+// file, so it must be out of order.
+//
+// ------------------------------------------------------------
+
+trait sized(dtype T) {};
+
+// ------------------------------------------------------------
+//
+// Section 4.1 Primary Expressions
+//
+// ------------------------------------------------------------
+
+//We have none
+
+// ------------------------------------------------------------
+//
+// Section 4.2 Postfix Operators
+//
+// ------------------------------------------------------------
+
+signed short		?++( signed short & ),			?++( volatile signed short & );
+signed short		?--( signed short & ),			?--( volatile signed short & );
+unsigned short		?++( unsigned short & ),		?++( volatile unsigned short & );
+unsigned short		?--( unsigned short & ),		?--( volatile unsigned short & );
+signed int		?++( signed int & ),			?++( volatile signed int & );
+signed int		?--( signed int & ),			?--( volatile signed int & );
+unsigned int		?++( unsigned int & ),			?++( volatile unsigned int & );
+unsigned int		?--( unsigned int & ),			?--( volatile unsigned int & );
+signed long int		?++( signed long int & ),		?++( volatile signed long int & );
+signed long int		?--( signed long int & ),		?--( volatile signed long int & );
+unsigned long int	?++( unsigned long int & ),		?++( volatile unsigned long int & );
+unsigned long int	?--( unsigned long int & ),		?--( volatile unsigned long int & );
+signed long long int	?++( signed long long int & ),		?++( volatile signed long long int & );
+signed long long int	?--( signed long long int & ),		?--( volatile signed long long int & );
+unsigned long long int	?++( unsigned long long int & ),	?++( volatile unsigned long long int & );
+unsigned long long int	?--( unsigned long long int & ),	?--( volatile unsigned long long int & );
+float			?++( float & ),				?++( volatile float & );
+float			?--( float & ),				?--( volatile float & );
+double			?++( double & ),			?++( volatile double & );
+double			?--( double & ),			?--( volatile double & );
+long double		?++( long double & ),			?++( volatile long double & );
+long double		?--( long double & ),			?--( volatile long double & );
+float _Complex		?++( float _Complex & ),		?++( volatile float _Complex & );
+float _Complex		?--( float _Complex & ),		?--( volatile float _Complex & );
+double _Complex		?++( double _Complex & ),		?++( volatile double _Complex & );
+double _Complex		?--( double _Complex & ),		?--( volatile double _Complex & );
+long double _Complex	?++( long double _Complex & ),		?++( volatile long double _Complex & );
+long double _Complex	?--( long double _Complex & ),		?--( volatile long double _Complex & );
+
+forall( dtype T | sized(T) ) T *			 ?++(		     T *& );
+forall( dtype T | sized(T) ) const T *		 ?++( const	     T *& );
+forall( dtype T | sized(T) ) volatile T *		 ?++(	    volatile T *& );
+forall( dtype T | sized(T) ) const volatile T *	 ?++( const volatile T *& );
+forall( dtype T | sized(T) ) T *			 ?--(		     T *& );
+forall( dtype T | sized(T) ) const T *		 ?--( const	     T *& );
+forall( dtype T | sized(T) ) volatile T *		 ?--(	    volatile T *& );
+forall( dtype T | sized(T) ) const volatile T *	 ?--( const volatile T *& );
+
+forall( dtype T | sized(T) ) T &		 ?[?](		      T *,	    ptrdiff_t );
+forall( dtype T | sized(T) ) const T &	 ?[?]( const	      T *,	    ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T &	 ?[?](       volatile T *,	    ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T & ?[?]( const volatile T *,	    ptrdiff_t );
+forall( dtype T | sized(T) ) T &		 ?[?](		ptrdiff_t,		  T * );
+forall( dtype T | sized(T) ) const T &	 ?[?](		ptrdiff_t, const	  T * );
+forall( dtype T | sized(T) ) volatile T &	 ?[?](		ptrdiff_t,	 volatile T * );
+forall( dtype T | sized(T) ) const volatile T & ?[?](		ptrdiff_t, const volatile T * );
+
+// ------------------------------------------------------------
+//
+// Section 4.3 Unary Operators
+//
+// ------------------------------------------------------------
+
+signed short	++?( signed short & ),			--?( signed short & );
+signed int		++?( signed int & ),			--?( signed int & );
+unsigned short		++?( unsigned int & ),			--?( unsigned int & );
+unsigned int		++?( unsigned short & ),		--?( unsigned short & );
+signed long int		++?( signed long int & ),		--?( signed long int & );
+unsigned long int	++?( unsigned long int & ),		--?( unsigned long int & );
+signed long long int	++?( signed long long int & ),		--?( signed long long int & );
+unsigned long long int	++?( unsigned long long int & ),	--?( unsigned long long int & );
+float			++?( float & ),				--?( float & );
+double			++?( double & ),			--?( double & );
+long double		++?( long double & ),			--?( long double & );
+float _Complex		++?( float _Complex & ),		--?( float _Complex & );
+double _Complex		++?( double _Complex & ),		--?( double _Complex & );
+long double _Complex	++?( long double _Complex & ),		--?( long double _Complex & );
+
+forall( dtype T | sized(T) ) T *			 ++?(		     T *& );
+forall( dtype T | sized(T) ) const T *		 ++?( const	     T *& );
+forall( dtype T | sized(T) ) volatile T *		 ++?(	    volatile T *& );
+forall( dtype T | sized(T) ) const volatile T *	 ++?( const volatile T *& );
+forall( dtype T | sized(T) ) T *			 --?(		     T *& );
+forall( dtype T | sized(T) ) const T *		 --?( const	     T *& );
+forall( dtype T | sized(T) ) volatile T *		 --?(	    volatile T *& );
+forall( dtype T | sized(T) ) const volatile T *	 --?( const volatile T *& );
+
+forall( dtype T | sized(T) ) T &		 *?(		     T * );
+forall( dtype T | sized(T) ) const T &		 *?( const	     T * );
+forall( dtype T | sized(T) ) volatile T &	 *?(       volatile  T * );
+forall( dtype T | sized(T) ) const volatile T & *?( const volatile  T * );
+forall( ftype FT ) FT &		 *?( FT * );
+
+_Bool			+?( _Bool ),			-?( _Bool );
+signed int		+?( signed int ),		-?( signed int ),		~?( signed int );
+unsigned int		+?( unsigned int ),		-?( unsigned int ),		~?( unsigned int );
+signed long int		+?( signed long int ),		-?( signed long int ),		~?( signed long int );
+unsigned long int	+?( unsigned long int ),	-?( unsigned long int ),	~?( unsigned long int );
+signed long long int	+?( signed long long int ),	-?( signed long long int ),	~?( signed long long int );
+unsigned long long int	+?( unsigned long long int ),	-?( unsigned long long int ),	~?( unsigned long long int );
+float			+?( float ),			-?( float );
+double			+?( double ),			-?( double );
+long double		+?( long double ),		-?( long double );
+float _Complex		+?( float _Complex ),		-?( float _Complex );
+double _Complex		+?( double _Complex ),		-?( double _Complex );
+long double _Complex	+?( long double _Complex ),	-?( long double _Complex );
+
+signed int	!?( signed int ),		!?( unsigned int ),
+		!?( long int ),			!?( unsigned long int ),
+		!?( long long int ),		!?( unsigned long long int ),
+		!?( float ),			!?( double ),			!?( long double ),
+		!?( float _Complex ),		!?( double _Complex ),		!?( long double _Complex );
+
+forall( dtype DT ) int !?(                DT * );
+forall( dtype DT ) int !?( const          DT * );
+forall( dtype DT ) int !?(       volatile DT * );
+forall( dtype DT ) int !?( const volatile DT * );
+forall( ftype FT ) int !?( FT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.5 Multiplicative Operators
+//
+// ------------------------------------------------------------
+
+signed int		?*?( signed int, signed int ),				?/?( signed int, signed int ),			?%?( signed int, signed int );
+unsigned int		?*?( unsigned int, unsigned int ),			?/?( unsigned int, unsigned int ),		?%?( unsigned int, unsigned int );
+signed long int		?*?( signed long int, signed long int ),		?/?( signed long int, signed long int ),	?%?( signed long int, signed long int );
+unsigned long int	?*?( unsigned long int, unsigned long int ),		?/?( unsigned long int, unsigned long int ),	?%?( unsigned long int, unsigned long int );
+signed long long int	?*?( signed long long int, signed long long int ),	?/?( signed long long int, signed long long int ), ?%?( signed long long int, signed long long int );
+unsigned long long int	?*?( unsigned long long int, unsigned long long int ),	?/?( unsigned long long int, unsigned long long int ), ?%?( unsigned long long int, unsigned long long int );
+float			?*?( float, float ),					?/?( float, float );
+double			?*?( double, double ),					?/?( double, double );
+long double		?*?( long double, long double ),			?/?( long double, long double );
+// gcc does not support _Imaginary
+//float _Imaginary	?*?( float _Imaginary, float _Imaginary),		?/?( float _Imaginary, float _Imaginary );
+//double _Imaginary	?*?( double _Imaginary, double _Imaginary),		?/?( double _Imaginary, double _Imaginary );
+//long double _Imaginary	?*?( long double _Imaginary, long double _Imaginary),	?/?( long double _Imaginary, long double _Imaginary );
+float _Complex		?*?( float _Complex, float _Complex ),			?/?( float _Complex, float _Complex );
+double _Complex		?*?( double _Complex, double _Complex ),		?/?( double _Complex, double _Complex );
+long double _Complex	?*?( long double _Complex, long double _Complex ),	?/?( long double _Complex, long double _Complex );
+
+// ------------------------------------------------------------
+//
+// Section 4.6 Additive Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?+?( _Bool, _Bool ),					?-?( _Bool, _Bool );
+signed int		?+?( signed int, signed int ),				?-?( signed int, signed int );
+unsigned int		?+?( unsigned int, unsigned int ),			?-?( unsigned int, unsigned int );
+signed long int		?+?( signed long int, signed long int ),		?-?( signed long int, signed long int );
+unsigned long int	?+?( unsigned long int, unsigned long int ),		?-?( unsigned long int, unsigned long int );
+signed long long int	?+?( signed long long int, long long int  signed),	?-?( signed long long int, signed long long int );
+unsigned long long int	?+?( unsigned long long int, unsigned long long int ),	?-?( unsigned long long int, unsigned long long int );
+float			?+?( float, float ),					?-?( float, float );
+double			?+?( double, double ),					?-?( double, double );
+long double		?+?( long double, long double ),			?-?( long double, long double );
+float _Complex		?+?( float _Complex, float _Complex ),			?-?( float _Complex, float _Complex );
+double _Complex		?+?( double _Complex, double _Complex ),		?-?( double _Complex, double _Complex );
+long double _Complex	?+?( long double _Complex, long double _Complex ),	?-?( long double _Complex, long double _Complex );
+
+forall( dtype T | sized(T) ) T *		?+?(		    T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) T *		?+?(	      ptrdiff_t,		T * );
+forall( dtype T | sized(T) ) const T *		?+?( const	    T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?+?(	      ptrdiff_t, const		T * );
+forall( dtype T | sized(T) ) volatile T *	?+?(	   volatile T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?+?(	      ptrdiff_t,       volatile T * );
+forall( dtype T | sized(T) ) const volatile T *	?+?( const volatile T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?+?(	      ptrdiff_t, const volatile T * );
+forall( dtype T | sized(T) ) T *		?-?(		    T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?-?( const	    T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?-?(	   volatile T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?-?( const volatile T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) ptrdiff_t		?-?( const volatile T *, const volatile T * );
+
+// ------------------------------------------------------------
+//
+// Section 4.7 Bitwise Shift Operators
+//
+// ------------------------------------------------------------
+
+signed int		?<<?( signed int, signed int ),				?>>?( signed int, signed int );
+unsigned int		?<<?( unsigned int, unsigned int ),			?>>?( unsigned int, unsigned int );
+signed long int		?<<?( signed long int, signed long int ),		?>>?( signed long int, signed long int );
+unsigned long int	?<<?( unsigned long int, unsigned long int ),		?>>?( unsigned long int, unsigned long int );
+signed long long int	?<<?( signed long long int, signed long long int ),	?>>?( signed long long int, signed long long int );
+unsigned long long int	?<<?( unsigned long long int, unsigned long long int ),	?>>?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.8 Relational Operators
+//
+// ------------------------------------------------------------
+
+signed int ?<?( _Bool, _Bool ),						?<=?( _Bool, _Bool ),
+	   ?>?( _Bool, _Bool ),						?>=?( _Bool, _Bool );
+signed int ?<?( char, char ),						?<=?( char, char ),
+	   ?>?( char, char ),						?>=?( char, char );
+signed int ?<?( signed char, signed char ),				?<=?( signed char, signed char ),
+	   ?>?( signed char, signed char ),				?>=?( signed char, signed char );
+signed int ?<?( unsigned char, unsigned char ),				?<=?( unsigned char, unsigned char ),
+	   ?>?( unsigned char, unsigned char ),				?>=?( unsigned char, unsigned char );
+signed int ?<?( signed short, signed short ),				?<=?( signed short, signed short ),
+	   ?>?( signed short, signed short ),				?>=?( signed short, signed short );
+signed int ?<?( unsigned short, unsigned short ),			?<=?( unsigned short, unsigned short ),
+	   ?>?( unsigned short, unsigned short ),			?>=?( unsigned short, unsigned short );
+signed int ?<?( signed int, signed int ),				?<=?( signed int, signed int ),
+	   ?>?( signed int, signed int ),				?>=?( signed int, signed int );
+signed int ?<?( unsigned int, unsigned int ),				?<=?( unsigned int, unsigned int ),
+	   ?>?( unsigned int, unsigned int ),				?>=?( unsigned int, unsigned int );
+signed int ?<?( signed long int, signed long int ),			?<=?( signed long int, signed long int ),
+	   ?>?( signed long int, signed long int ),			?>=?( signed long int, signed long int );
+signed int ?<?( unsigned long int, unsigned long int ),			?<=?( unsigned long int, unsigned long int ),
+	   ?>?( unsigned long int, unsigned long int ),			?>=?( unsigned long int, unsigned long int );
+signed int ?<?( signed long long int, signed long long int ),		?<=?( signed long long int, signed long long int ),
+	   ?>?( signed long long int, signed long long int ),		?>=?( signed long long int, signed long long int );
+signed int ?<?( unsigned long long int, unsigned long long int ),	?<=?( unsigned long long int, unsigned long long int ),
+	   ?>?( unsigned long long int, unsigned long long int ),	?>=?( unsigned long long int, unsigned long long int );
+signed int ?<?( float, float ),						?<=?( float, float ),
+	   ?>?( float, float ),						?>=?( float, float );
+signed int ?<?( double, double ),					?<=?( double, double ),
+	   ?>?( double, double ),					?>=?( double, double );
+signed int ?<?( long double, long double ),				?<=?( long double, long double ),
+	   ?>?( long double, long double ),				?>=?( long double, long double );
+
+forall( dtype DT ) signed int ?<?(                 DT *,                DT * );
+forall( dtype DT ) signed int ?<?(  const          DT *, const          DT * );
+forall( dtype DT ) signed int ?<?(        volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
+
+forall( dtype DT ) signed int ?>?(                 DT *,                DT * );
+forall( dtype DT ) signed int ?>?(  const          DT *, const          DT * );
+forall( dtype DT ) signed int ?>?(        volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
+
+forall( dtype DT ) signed int ?<=?(                 DT *,                DT * );
+forall( dtype DT ) signed int ?<=?(  const          DT *, const          DT * );
+forall( dtype DT ) signed int ?<=?(        volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
+
+forall( dtype DT ) signed int ?>=?(                 DT *,                DT * );
+forall( dtype DT ) signed int ?>=?(  const          DT *, const          DT * );
+forall( dtype DT ) signed int ?>=?(        volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.9 Equality Operators
+//
+// ------------------------------------------------------------
+
+signed int ?==?( _Bool, _Bool ),							?!=?( _Bool, _Bool );
+signed int ?==?( char, char ),								?!=?( char, char );
+signed int ?==?( signed char, signed char ),				?!=?( signed char, signed char );
+signed int ?==?( unsigned char, unsigned char ),			?!=?( unsigned char, unsigned char );
+signed int ?==?( signed short, signed short ),				?!=?( signed short, signed short );
+signed int ?==?( unsigned short, unsigned short ),			?!=?( unsigned short, unsigned short );
+signed int ?==?( signed int, signed int ),					?!=?( signed int, signed int );
+signed int ?==?( unsigned int, unsigned int ),					?!=?( unsigned int, unsigned int );
+signed int ?==?( signed long int, signed long int ),				?!=?( signed long int, signed long int );
+signed int ?==?( unsigned long int, unsigned long int ),			?!=?( unsigned long int, unsigned long int );
+signed int ?==?( signed long long int, long long int  signed),		?!=?( signed long long int, signed long long int );
+signed int ?==?( unsigned long long int, unsigned long long int ),	?!=?( unsigned long long int, unsigned long long int );
+signed int ?==?( float, float ),							?!=?( float, float );
+signed int ?==?( double, double ),							?!=?( double, double );
+signed int ?==?( long double, long double ),					?!=?( long double, long double );
+signed int ?==?( float _Complex, float _Complex ),				?!=?( float _Complex, float _Complex );
+signed int ?==?( double _Complex, double _Complex ),				?!=?( double _Complex, double _Complex );
+signed int ?==?( long double _Complex, long double _Complex ),		?!=?( long double _Complex, long double _Complex );
+signed int ?==?( zero_t, zero_t ),							?!=?( zero_t, zero_t );
+signed int ?==?( one_t, one_t ),							?!=?( one_t, one_t );
+
+forall( dtype DT ) signed int ?==?(		   DT *,		DT * );
+forall( dtype DT ) signed int ?==?( const	   DT *, const		DT * );
+forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
+forall( ftype FT ) signed int ?==?( FT *, FT * );
+forall( dtype DT ) signed int ?!=?(		   DT *,		DT * );
+forall( dtype DT ) signed int ?!=?( const	   DT *, const		DT * );
+forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
+forall( ftype FT ) signed int ?!=?( FT *, FT * );
+
+// forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
+// forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
+// forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
+// forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
+
+// forall( dtype DT ) signed int ?==?( const volatile DT *, zero_t );
+// forall( dtype DT ) signed int ?==?( zero_t, const volatile DT * );
+// forall( ftype FT ) signed int ?==?( FT *, zero_t );
+// forall( ftype FT ) signed int ?==?( zero_t, FT * );
+// forall( dtype DT ) signed int ?!=?( const volatile DT *, zero_t );
+// forall( dtype DT ) signed int ?!=?( zero_t, const volatile DT * );
+// forall( ftype FT ) signed int ?!=?( FT *, zero_t );
+// forall( ftype FT ) signed int ?!=?( zero_t, FT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.10 Bitwise AND Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?&?( _Bool, _Bool );
+signed int		?&?( signed int, signed int );
+unsigned int		?&?( unsigned int, unsigned int );
+signed long int		?&?( signed long int, signed long int );
+unsigned long int	?&?( unsigned long int, unsigned long int );
+signed long long int	?&?( signed long long int, signed long long int );
+unsigned long long int	?&?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.11 Bitwise XOR Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?^?( _Bool, _Bool );
+signed int		?^?( signed int, signed int );
+unsigned int		?^?( unsigned int, unsigned int );
+signed long int		?^?( signed long int, signed long int );
+unsigned long int	?^?( unsigned long int, unsigned long int );
+signed long long int	?^?( signed long long int, signed long long int );
+unsigned long long int	?^?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.12 Bitwise OR Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?|?( _Bool, _Bool );
+signed int		?|?( signed int, signed int );
+unsigned int		?|?( unsigned int, unsigned int );
+signed long int		?|?( signed long int, signed long int );
+unsigned long int	?|?( unsigned long int, unsigned long int );
+signed long long int	?|?( signed long long int, signed long long int );
+unsigned long long int	?|?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.16 Assignment Operator
+//
+// ------------------------------------------------------------
+
+forall( ftype FT ) FT *			?=?( FT *&, FT * );
+forall( ftype FT ) FT *			?=?( FT * volatile &, FT * );
+
+forall( dtype DT ) DT *			?=?(		     DT *	   &,			DT * );
+forall( dtype DT ) DT *			?=?(		     DT * volatile &,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   &,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile &,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   &, const		DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile &, const		DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   &,			DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile &,			DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   &,	    volatile	DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile &,	    volatile	DT * );
+
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   &,			DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &,			DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &, const		DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &, const		DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &,	    volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &,	    volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &, const volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &, const volatile	DT * );
+
+forall( dtype DT ) void *		 ?=?(		     void *	     &,			DT * );
+forall( dtype DT ) void *		 ?=?(		     void * volatile &,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void *	     &,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void * volatile &,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void *	     &, const		DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void * volatile &, const		DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     &,			DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile &,			DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     &,	      volatile	DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile &,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &,			DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,			DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &, const		DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const		DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &, const volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const volatile	DT * );
+
+//forall( dtype DT ) DT *			?=?(		    DT *	  &, zero_t );
+//forall( dtype DT ) DT *			?=?(		    DT * volatile &, zero_t );
+forall( dtype DT ) const DT *		?=?( const	    DT *	  &, zero_t );
+forall( dtype DT ) const DT *		?=?( const	    DT * volatile &, zero_t );
+//forall( dtype DT ) volatile DT *	?=?( volatile	    DT *	  &, zero_t );
+//forall( dtype DT ) volatile DT *	?=?( volatile	    DT * volatile &, zero_t );
+forall( dtype DT ) const volatile DT *	?=?( const volatile DT *	  &, zero_t );
+forall( dtype DT ) const volatile DT *	?=?( const volatile DT * volatile &, zero_t );
+
+forall( ftype FT ) FT *			?=?( FT *	   &, zero_t );
+forall( ftype FT ) FT *			?=?( FT * volatile &, zero_t );
+
+forall( dtype T | sized(T) ) T *		?+=?(		     T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) T *		?+=?(		     T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?+=?( const	     T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?+=?( const	     T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?+=?(	    volatile T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?+=?(	    volatile T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?+=?( const volatile T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?+=?( const volatile T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) T *		?-=?(		     T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) T *		?-=?(		     T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?-=?( const	     T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?-=?( const	     T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?-=?(	    volatile T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?-=?(	    volatile T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?-=?( const volatile T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?-=?( const volatile T * volatile &, ptrdiff_t );
+
+_Bool			?=?( _Bool &, _Bool ),					?=?( volatile _Bool &, _Bool );
+char			?=?( char &, char ),					?=?( volatile char &, char );
+char signed		?=?( char signed &, char signed ),			?=?( volatile char signed &, char signed );
+char unsigned		?=?( char unsigned &, char unsigned ),			?=?( volatile char unsigned &, char unsigned );
+int short		?=?( int short &, int short ),				?=?( volatile int short &, int short );
+int short unsigned	?=?( int short unsigned &, int short unsigned ),	?=?( volatile int short unsigned &, int short unsigned );
+signed int		?=?( signed int &, signed int ),			?=?( volatile signed int &, signed int );
+unsigned int		?=?( unsigned &, unsigned ),				?=?( volatile unsigned &, unsigned );
+signed long int		?=?( signed long int &, signed long int ),		?=?( volatile signed long int &, signed long int );
+unsigned long int	?=?( unsigned long int &, unsigned long int ),		?=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?=?( signed long long int &, signed long long int ),	?=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?=?( unsigned long long int &, unsigned long long int ), ?=?( volatile unsigned long long int &, unsigned long long int );
+zero_t			?=?( zero_t &, zero_t );
+one_t			?=?( one_t &, one_t );
+
+
+char			?*=?( char &, char ),					?*=?( volatile char &, char );
+char signed		?*=?( char signed &, char signed ),			?*=?( volatile char signed &, char signed );
+char unsigned		?*=?( char unsigned &, char unsigned ),			?*=?( volatile char unsigned &, char unsigned );
+int short		?*=?( int short &, int short ),				?*=?( volatile int short &, int short );
+int short unsigned	?*=?( int short unsigned &, int short unsigned ),	?*=?( volatile int short unsigned &, int short unsigned );
+signed int		?*=?( signed int &, signed int ),			?*=?( volatile signed int &, signed int );
+unsigned int		?*=?( unsigned &, unsigned ),				?*=?( volatile unsigned &, unsigned );
+signed long int		?*=?( signed long int &, signed long int ),		?*=?( volatile signed long int &, signed long int );
+unsigned long int	?*=?( unsigned long int &, unsigned long int ),		?*=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?*=?( signed long long int &, signed long long int ),	?*=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?*=?( unsigned long long int &, unsigned long long int ), ?*=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?/=?( _Bool &, _Bool ),					?/=?( volatile _Bool &, _Bool );
+char			?/=?( char &, char ),					?/=?( volatile char &, char );
+char signed		?/=?( char signed &, char signed ),			?/=?( volatile char signed &, char signed );
+char unsigned		?/=?( char unsigned &, char unsigned ),			?/=?( volatile char unsigned &, char unsigned );
+int short		?/=?( int short &, int short ),				?/=?( volatile int short &, int short );
+int short unsigned	?/=?( int short unsigned &, int short unsigned ),	?/=?( volatile int short unsigned &, int short unsigned );
+signed int		?/=?( signed int &, signed int ),			?/=?( volatile signed int &, signed int );
+unsigned int		?/=?( unsigned &, unsigned ),				?/=?( volatile unsigned &, unsigned );
+signed long int		?/=?( signed long int &, signed long int ),		?/=?( volatile signed long int &, signed long int );
+unsigned long int	?/=?( unsigned long int &, unsigned long int ),		?/=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?/=?( signed long long int &, signed long long int ),	?/=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?/=?( unsigned long long int &, unsigned long long int ), ?/=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?%=?( _Bool &, _Bool ),					?%=?( volatile _Bool &, _Bool );
+char			?%=?( char &, char ),					?%=?( volatile char &, char );
+char signed		?%=?( char signed &, char signed ),			?%=?( volatile char signed &, char signed );
+char unsigned		?%=?( char unsigned &, char unsigned ),			?%=?( volatile char unsigned &, char unsigned );
+int short		?%=?( int short &, int short ),				?%=?( volatile int short &, int short );
+int short unsigned	?%=?( int short unsigned &, int short unsigned ),	?%=?( volatile int short unsigned &, int short unsigned );
+signed int		?%=?( signed int &, signed int ),			?%=?( volatile signed int &, signed int );
+unsigned int		?%=?( unsigned &, unsigned ),				?%=?( volatile unsigned &, unsigned );
+signed long int		?%=?( signed long int &, signed long int ),		?%=?( volatile signed long int &, signed long int );
+unsigned long int	?%=?( unsigned long int &, unsigned long int ),		?%=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?%=?( signed long long int &, signed long long int ),	?%=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?%=?( unsigned long long int &, unsigned long long int ), ?%=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?+=?( _Bool &, _Bool ),					?+=?( volatile _Bool &, _Bool );
+char			?+=?( char &, char ),					?+=?( volatile char &, char );
+char signed		?+=?( char signed &, char signed ),			?+=?( volatile char signed &, char signed );
+char unsigned		?+=?( char unsigned &, char unsigned ),			?+=?( volatile char unsigned &, char unsigned );
+int short		?+=?( int short &, int short ),				?+=?( volatile int short &, int short );
+int short unsigned	?+=?( int short unsigned &, int short unsigned ),	?+=?( volatile int short unsigned &, int short unsigned );
+signed int		?+=?( signed int &, signed int ),			?+=?( volatile signed int &, signed int );
+unsigned int		?+=?( unsigned &, unsigned ),				?+=?( volatile unsigned &, unsigned );
+signed long int		?+=?( signed long int &, signed long int ),		?+=?( volatile signed long int &, signed long int );
+unsigned long int	?+=?( unsigned long int &, unsigned long int ),		?+=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?+=?( signed long long int &, signed long long int ),	?+=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?+=?( unsigned long long int &, unsigned long long int ), ?+=?( volatile unsigned long long int &, unsigned long long int );
+//signed int128		?+=?( signed int128 &, signed int128 ),			?+=?( volatile signed int128 &, signed int128 );
+//unsigned int128		?+=?( unsigned int128 &, unsigned int128 ),		?+=?( volatile unsigned int128 &, unsigned int128 );
+
+_Bool			?-=?( _Bool &, _Bool ),					?-=?( volatile _Bool &, _Bool );
+char			?-=?( char &, char ),					?-=?( volatile char &, char );
+char signed		?-=?( char signed &, char signed ),			?-=?( volatile char signed &, char signed );
+char unsigned		?-=?( char unsigned &, char unsigned ),			?-=?( volatile char unsigned &, char unsigned );
+int short		?-=?( int short &, int short ),				?-=?( volatile int short &, int short );
+int short unsigned	?-=?( int short unsigned &, int short unsigned ),	?-=?( volatile int short unsigned &, int short unsigned );
+signed int		?-=?( signed int &, signed int ),			?-=?( volatile signed int &, signed int );
+unsigned int		?-=?( unsigned &, unsigned ),				?-=?( volatile unsigned &, unsigned );
+signed long int		?-=?( signed long int &, signed long int ),		?-=?( volatile signed long int &, signed long int );
+unsigned long int	?-=?( unsigned long int &, unsigned long int ),		?-=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?-=?( signed long long int &, signed long long int ),	?-=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?-=?( unsigned long long int &, unsigned long long int ), ?-=?( volatile unsigned long long int &, unsigned long long int );
+
+char			?<<=?( char &, char ),					?<<=?( volatile char &, char );
+char signed		?<<=?( char signed &, char signed ),			?<<=?( volatile char signed &, char signed );
+char unsigned		?<<=?( char unsigned &, char unsigned ),		?<<=?( volatile char unsigned &, char unsigned );
+int short		?<<=?( int short &, int short ),			?<<=?( volatile int short &, int short );
+int short unsigned	?<<=?( int short unsigned &, int short unsigned ),	?<<=?( volatile int short unsigned &, int short unsigned );
+signed int		?<<=?( signed int &, signed int ),			?<<=?( volatile signed int &, signed int );
+unsigned int		?<<=?( unsigned &, unsigned ),				?<<=?( volatile unsigned &, unsigned );
+signed long int		?<<=?( signed long int &, signed long int ),		?<<=?( volatile signed long int &, signed long int );
+unsigned long int	?<<=?( unsigned long int &, unsigned long int ),	?<<=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?<<=?( signed long long int &, signed long long int ),	?<<=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?<<=?( unsigned long long int &, unsigned long long int ), ?<<=?( volatile unsigned long long int &, unsigned long long int );
+
+char			?>>=?( char &, char ),					?>>=?( volatile char &, char );
+char signed		?>>=?( char signed &, char signed ),			?>>=?( volatile char signed &, char signed );
+char unsigned		?>>=?( char unsigned &, char unsigned ),		?>>=?( volatile char unsigned &, char unsigned );
+int short		?>>=?( int short &, int short ),			?>>=?( volatile int short &, int short );
+int short unsigned	?>>=?( int short unsigned &, int short unsigned ),	?>>=?( volatile int short unsigned &, int short unsigned );
+signed int		?>>=?( signed int &, signed int ),			?>>=?( volatile signed int &, signed int );
+unsigned int		?>>=?( unsigned &, unsigned ),				?>>=?( volatile unsigned &, unsigned );
+signed long int		?>>=?( signed long int &, signed long int ),		?>>=?( volatile signed long int &, signed long int );
+unsigned long int	?>>=?( unsigned long int &, unsigned long int ),	?>>=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?>>=?( signed long long int &, signed long long int ),	?>>=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?>>=?( unsigned long long int &, unsigned long long int ), ?>>=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?&=?( _Bool &, _Bool ),					?&=?( volatile _Bool &, _Bool );
+char			?&=?( char &, char ),					?&=?( volatile char &, char );
+char signed		?&=?( char signed &, char signed ),			?&=?( volatile char signed &, char signed );
+char unsigned		?&=?( char unsigned &, char unsigned ),			?&=?( volatile char unsigned &, char unsigned );
+int short		?&=?( int short &, int short ),				?&=?( volatile int short &, int short );
+int short unsigned	?&=?( int short unsigned &, int short unsigned ),	?&=?( volatile int short unsigned &, int short unsigned );
+signed int		?&=?( signed int &, signed int ),			?&=?( volatile signed int &, signed int );
+unsigned int		?&=?( unsigned &, unsigned ),				?&=?( volatile unsigned &, unsigned );
+signed long int		?&=?( signed long int &, signed long int ),		?&=?( volatile signed long int &, signed long int );
+unsigned long int	?&=?( unsigned long int &, unsigned long int ),		?&=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?&=?( signed long long int &, signed long long int ),	?&=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?&=?( unsigned long long int &, unsigned long long int ), ?&=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?|=?( _Bool &, _Bool ),					?|=?( volatile _Bool &, _Bool );
+char			?|=?( char &, char ),					?|=?( volatile char &, char );
+char signed		?|=?( char signed &, char signed ),			?|=?( volatile char signed &, char signed );
+char unsigned		?|=?( char unsigned &, char unsigned ),			?|=?( volatile char unsigned &, char unsigned );
+int short		?|=?( int short &, int short ),				?|=?( volatile int short &, int short );
+int short unsigned	?|=?( int short unsigned &, int short unsigned ),	?|=?( volatile int short unsigned &, int short unsigned );
+signed int		?|=?( signed int &, signed int ),			?|=?( volatile signed int &, signed int );
+unsigned int		?|=?( unsigned &, unsigned ),				?|=?( volatile unsigned &, unsigned );
+signed long int		?|=?( signed long int &, signed long int ),		?|=?( volatile signed long int &, signed long int );
+unsigned long int	?|=?( unsigned long int &, unsigned long int ),		?|=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?|=?( signed long long int &, signed long long int ),	?|=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?|=?( unsigned long long int &, unsigned long long int ), ?|=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?^=?( _Bool &, _Bool ),					?^=?( volatile _Bool &, _Bool );
+char			?^=?( char &, char ),					?^=?( volatile char &, char );
+char signed		?^=?( char signed &, char signed ),			?^=?( volatile char signed &, char signed );
+char unsigned		?^=?( char unsigned &, char unsigned ),			?^=?( volatile char unsigned &, char unsigned );
+int short		?^=?( int short &, int short ),				?^=?( volatile int short &, int short );
+int short unsigned	?^=?( int short unsigned &, int short unsigned ),	?^=?( volatile int short unsigned &, int short unsigned );
+signed int		?^=?( signed int &, signed int ),			?^=?( volatile signed int &, signed int );
+unsigned int		?^=?( unsigned &, unsigned ),				?^=?( volatile unsigned &, unsigned );
+signed long int		?^=?( signed long int &, signed long int ),		?^=?( volatile signed long int &, signed long int );
+unsigned long int	?^=?( unsigned long int &, unsigned long int ),		?^=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?^=?( signed long long int &, signed long long int ),	?^=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?^=?( unsigned long long int &, unsigned long long int ), ?^=?( volatile unsigned long long int &, unsigned long long int );
+
+float			?=?(  float &, float ), ?=?(  volatile float &, float ),
+			?*=?( float &, float ), ?*=?( volatile float &, float ),
+			?/=?( float &, float ), ?/=?( volatile float &, float ),
+			?+=?( float &, float ), ?+=?( volatile float &, float ),
+			?-=?( float &, float ), ?-=?( volatile float &, float );
+
+double			?=?(  double &, double ), ?=?(  volatile double &, double ),
+			?*=?( double &, double ), ?*=?( volatile double &, double ),
+			?/=?( double &, double ), ?/=?( volatile double &, double ),
+			?+=?( double &, double ), ?+=?( volatile double &, double ),
+			?-=?( double &, double ), ?-=?( volatile double &, double );
+
+long double		?=?(  long double &, long double ), ?=?(  volatile long double &, long double ),
+			?*=?( long double &, long double ), ?*=?( volatile long double &, long double ),
+			?/=?( long double &, long double ), ?/=?( volatile long double &, long double ),
+			?+=?( long double &, long double ), ?+=?( volatile long double &, long double ),
+			?-=?( long double &, long double ), ?-=?( volatile long double &, long double );
+
+float _Complex		?=?(  float _Complex &, float _Complex ), ?=?(  volatile float _Complex &, float _Complex ),
+			?*=?( float _Complex &, float _Complex ), ?*=?( volatile float _Complex &, float _Complex ),
+			?/=?( float _Complex &, float _Complex ), ?/=?( volatile float _Complex &, float _Complex ),
+			?+=?( float _Complex &, float _Complex ), ?+=?( volatile float _Complex &, float _Complex ),
+			?-=?( float _Complex &, float _Complex ), ?-=?( volatile float _Complex &, float _Complex );
+
+double _Complex		?=?(  double _Complex &, double _Complex ), ?=?(  volatile double _Complex &, double _Complex ),
+			?*=?( double _Complex &, double _Complex ), ?*=?( volatile double _Complex &, double _Complex ),
+			?/=?( double _Complex &, double _Complex ), ?/=?( volatile double _Complex &, double _Complex ),
+			?+=?( double _Complex &, double _Complex ), ?+=?( volatile double _Complex &, double _Complex ),
+			?-=?( double _Complex &, double _Complex ), ?-=?( volatile double _Complex &, double _Complex );
+
+long double _Complex	?=?(  long double _Complex &, long double _Complex ), ?=?(  volatile long double _Complex &, long double _Complex ),
+			?*=?( long double _Complex &, long double _Complex ), ?*=?( volatile long double _Complex &, long double _Complex ),
+			?/=?( long double _Complex &, long double _Complex ), ?/=?( volatile long double _Complex &, long double _Complex ),
+			?+=?( long double _Complex &, long double _Complex ), ?+=?( volatile long double _Complex &, long double _Complex ),
+			?-=?( long double _Complex &, long double _Complex ), ?-=?( volatile long double _Complex &, long double _Complex );
+
+
+// ------------------------------------------------------------
+//
+// Section ??? Constructors and Destructors
+//
+// ------------------------------------------------------------
+
+// default ctor
+void	?{}( _Bool & );
+void	?{}( char & );
+void	?{}( unsigned char & );
+void	?{}( char signed & );
+void	?{}( int short & );
+void	?{}( int short unsigned & );
+void	?{}( signed int & );
+void	?{}( unsigned int & );
+void	?{}( signed long int & );
+void	?{}( unsigned long int & );
+void	?{}( signed long long int & );
+void	?{}( unsigned long long int & );
+void	?{}( float & );
+void	?{}( double & );
+void	?{}( long double & );
+void	?{}( float _Complex & );
+void	?{}( double _Complex & );
+void	?{}( long double _Complex & );
+void	?{}( zero_t & );
+void	?{}( one_t & );
+
+// copy ctor
+void	?{}( _Bool &, _Bool );
+void	?{}( char &, char );
+void	?{}( unsigned char &, unsigned char );
+void	?{}( char signed &, char signed );
+void	?{}( int short &, int short );
+void	?{}( int short unsigned &, int short unsigned );
+void	?{}( signed int &, signed int);
+void	?{}( unsigned int &, unsigned int);
+void	?{}( signed long int &, signed long int);
+void	?{}( unsigned long int &, unsigned long int);
+void	?{}( signed long long int &, signed long long int);
+void	?{}( unsigned long long int &, unsigned long long int);
+void	?{}( float &, float);
+void	?{}( double &, double);
+void	?{}( long double &, long double);
+void	?{}( float _Complex &, float _Complex);
+void	?{}( double _Complex &, double _Complex);
+void	?{}( long double _Complex &, long double _Complex);
+void	?{}( zero_t &, zero_t );
+void	?{}( one_t &, one_t );
+
+// dtor
+void	^?{}( _Bool & );
+void	^?{}( char & );
+void	^?{}( char unsigned & );
+void	^?{}( char signed & );
+void	^?{}( int short & );
+void	^?{}( int short unsigned & );
+void	^?{}( signed int & );
+void	^?{}( unsigned int & );
+void	^?{}( signed long int & );
+void	^?{}( unsigned long int & );
+void	^?{}( signed long long int & );
+void	^?{}( unsigned long long int & );
+void	^?{}( float & );
+void	^?{}( double & );
+void	^?{}( long double & );
+void	^?{}( float _Complex & );
+void	^?{}( double _Complex & );
+void	^?{}( long double _Complex & );
+void	^?{}( zero_t & );
+void	^?{}( one_t & );
+
+// // default ctor
+// forall( dtype DT ) void	 ?{}(		     DT ** );
+// forall( dtype DT ) void	 ?{}( const	     DT ** );
+// forall( dtype DT ) void	 ?{}(	    volatile DT ** );
+// forall( dtype DT ) void	 ?{}( const volatile DT ** );
+
+// // copy ctor
+// forall( dtype DT ) void	 ?{}(		     DT **, DT* );
+// forall( dtype DT ) void	 ?{}( const	     DT **, DT* );
+// forall( dtype DT ) void	 ?{}(	    volatile DT **, DT* );
+// forall( dtype DT ) void	 ?{}( const volatile DT **, DT* );
+
+// // dtor
+// forall( dtype DT ) void	^?{}(		     DT ** );
+// forall( dtype DT ) void	^?{}( const	     DT ** );
+// forall( dtype DT ) void	^?{}(	    volatile DT ** );
+// forall( dtype DT ) void	^?{}( const volatile DT ** );
+
+// copied from assignment section
+// copy constructors
+forall( ftype FT ) void ?{}( FT *&, FT * );
+forall( ftype FT ) void ?{}( FT * volatile &, FT * );
+
+forall( dtype DT ) void ?{}(		     DT *	   &,			DT * );
+forall( dtype DT ) void ?{}( const	     DT *	   &,			DT * );
+forall( dtype DT ) void ?{}( const	     DT *	   &, const		DT * );
+forall( dtype DT ) void ?{}(	   volatile  DT *	   &,			DT * );
+forall( dtype DT ) void ?{}(	   volatile  DT *	   &,	    volatile	DT * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   &,			DT * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   &, const		DT * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   &,	    volatile	DT * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   &, const volatile	DT * );
+
+forall( dtype DT ) void ?{}(		     void *	     &,			DT * );
+forall( dtype DT ) void ?{}( const	     void *	     &,			DT * );
+forall( dtype DT ) void ?{}( const	     void *	     &, const		DT * );
+forall( dtype DT ) void ?{}(	    volatile void *	     &,			DT * );
+forall( dtype DT ) void ?{}(	    volatile void *	     &,	      volatile	DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     &,			DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     &, const		DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     &,	      volatile	DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     &, const volatile	DT * );
+
+//forall( dtype DT ) void ?{}(		    DT *	  &, zero_t );
+//forall( dtype DT ) void ?{}(		    DT * volatile &, zero_t );
+forall( dtype DT ) void ?{}( const	    DT *	  &, zero_t );
+//forall( dtype DT ) void ?{}( volatile	    DT *	  &, zero_t );
+//forall( dtype DT ) void ?{}( volatile	    DT * volatile &, zero_t );
+forall( dtype DT ) void ?{}( const volatile DT *	  &, zero_t );
+
+forall( ftype FT ) void	?{}( FT *	   &, zero_t );
+
+// default ctors
+forall( ftype FT ) void	?{}( FT *	   & );
+
+forall( dtype DT ) void	?{}(		     DT *	   &);
+forall( dtype DT ) void	?{}( const	     DT *	   &);
+forall( dtype DT ) void	?{}(	   volatile  DT *	   &);
+forall( dtype DT ) void ?{}( const volatile  DT *	   &);
+
+void 	?{}(		    void *	    &);
+void 	?{}( const	    void *	    &);
+void 	?{}(	   volatile void *	    &);
+void 	?{}( const volatile void *	    &);
+
+// dtors
+forall( ftype FT ) void	^?{}( FT *	   & );
+
+forall( dtype DT ) void	^?{}(		     DT *	   &);
+forall( dtype DT ) void	^?{}( const	     DT *	   &);
+forall( dtype DT ) void	^?{}(	   volatile  DT *	   &);
+forall( dtype DT ) void ^?{}( const volatile  DT *	   &);
+
+void ^?{}(		    void *	    &);
+void ^?{}( const	    void *	    &);
+void ^?{}(	   volatile void *	    &);
+void ^?{}( const   volatile void *	    &);
+
+// Local Variables: //
+// mode: c //
+// tab-width: 8 //
+// End: //
Index: libcfa/prelude/prototypes.awk
===================================================================
--- libcfa/prelude/prototypes.awk	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/prototypes.awk	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,160 @@
+#
+# Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+#
+# The contents of this file are covered under the licence agreement in the
+# file "LICENCE" distributed with Cforall.
+#
+# prototypes.awk --
+#
+# Author           : Peter A. Buhr
+# Created On       : Sat May 16 07:57:37 2015
+# Last Modified By : Peter A. Buhr
+# Last Modified On : Tue Jul  5 14:32:52 2016
+# Update Count     : 32
+#
+
+# http://llvm.org/svn/llvm-project/cfe/trunk/include/clang/Basic/Builtins.def
+
+BEGIN {
+  FS = "[( )]"
+    # order so string search is longest string
+    i=-1
+    types[i+=1] = "BOOL";						          vtypes[i] = "_Bool"
+    types[i+=1] = "UINTMAX";					        vtypes[i] = "unsigned long int"
+    types[i+=1] = "UINT16";					          vtypes[i] = "short int"
+    types[i+=1] = "UINT32";					          vtypes[i] = "int"
+    types[i+=1] = "UINT64";					          vtypes[i] = "long long int"
+    types[i+=1] = "UINT";						          vtypes[i] = "unsigned int"
+    types[i+=1] = "INTMAX";					          vtypes[i] = "long int"
+    types[i+=1] = "INTPTR";					          vtypes[i] = "int *"
+    types[i+=1] = "WINT";						          vtypes[i] = "unsigned int"
+    types[i+=1] = "INT";						          vtypes[i] = "int"
+    types[i+=1] = "ULONGLONG";				        vtypes[i] = "unsigned long long"
+    types[i+=1] = "ULONG";					          vtypes[i] = "unsigned long"
+    types[i+=1] = "UNSIGNED";					        vtypes[i] = "unsigned"
+    types[i+=1] = "COMPLEX_LONGDOUBLE";		    vtypes[i] = "_Complex long double"
+    types[i+=1] = "COMPLEX_DOUBLE";			      vtypes[i] = "_Complex double"
+    types[i+=1] = "COMPLEX_FLOAT";			      vtypes[i] = "_Complex float"
+    types[i+=1] = "LONGDOUBLEPTR";			      vtypes[i] = "long double *"
+    types[i+=1] = "LONGDOUBLE";				        vtypes[i] = "long double"
+    types[i+=1] = "LONGLONG";					        vtypes[i] = "long long"
+    types[i+=1] = "LONG";						          vtypes[i] = "long"
+    types[i+=1] = "DFLOAT32";					        vtypes[i] = "__Unsupported"
+    types[i+=1] = "DFLOAT64";					        vtypes[i] = "__Unsupported"
+    types[i+=1] = "DFLOAT128";				        vtypes[i] = "__Unsupported"
+    types[i+=1] = "DOUBLEPTR";			    	    vtypes[i] = "double *"
+    types[i+=1] = "DOUBLE";					          vtypes[i] = "double"
+    types[i+=1] = "FLOATPTR";					        vtypes[i] = "float *"
+    types[i+=1] = "FLOAT128X";						    vtypes[i] = "__Unsupported"
+    types[i+=1] = "FLOAT128";						      vtypes[i] = "__Unsupported"
+    types[i+=1] = "FLOAT64X";						      vtypes[i] = "__Unsupported"
+    types[i+=1] = "FLOAT64";						      vtypes[i] = "__Unsupported"
+    types[i+=1] = "FLOAT32X";						      vtypes[i] = "__Unsupported"
+    types[i+=1] = "FLOAT32";						      vtypes[i] = "__Unsupported"
+    types[i+=1] = "FLOAT16";						      vtypes[i] = "__Unsupported"
+    types[i+=1] = "FLOAT";					          vtypes[i] = "float"
+    types[i+=1] = "CONST_VPTR";					      vtypes[i] = "const volatile void *"
+    types[i+=1] = "CONST_PTR";				        vtypes[i] = "const void *"
+    types[i+=1] = "CONST_STRING";				      vtypes[i] = "const char *"
+    types[i+=1] = "CONST_TM_PTR";			        vtypes[i] = "const struct tm *"
+    types[i+=1] = "PTR_FN_VOID_VAR_PTR_SIZE";	vtypes[i] = ""
+    types[i+=1] = "PTR_CONST_STRING";			    vtypes[i] = "char *const"
+    types[i+=1] = "PTRMODE_PTR";				      vtypes[i] = ""
+    types[i+=1] = "PTRPTR";					          vtypes[i] = "void **"
+    types[i+=1] = "VPTR";					            vtypes[i] = "volatile void *"
+    types[i+=1] = "PTR";						          vtypes[i] = "void *"
+    types[i+=1] = "VOID";						          vtypes[i] = "void"
+    types[i+=1] = "STRING";					          vtypes[i] = "char *"
+    types[i+=1] = "FILEPTR";					        vtypes[i] = "struct _IO_FILE *"
+    types[i+=1] = "SIZE";						          vtypes[i] = "unsigned long"
+    types[i+=1] = "VAR";						          vtypes[i] = "..."
+    types[i+=1] = "VALIST_ARG";				        vtypes[i] = "__builtin_va_list"
+    types[i+=1] = "VALIST_REF";				        vtypes[i] = "__builtin_va_list"
+    types[i+=1] = "UNWINDWORD";				        vtypes[i] = "void *"
+    types[i+=1] = "WORD";						          vtypes[i] = ""
+    types[i+=1] = "SSIZE";					          vtypes[i] = "long int"
+    types[i+=1] = "PID";						          vtypes[i] = "int"
+    types[i+=1] = "I16";						          vtypes[i] = "__int128"
+    types[i+=1] = "I8";						            vtypes[i] = "long long int"
+    types[i+=1] = "I4";						            vtypes[i] = "int"
+    types[i+=1] = "I2";						            vtypes[i] = "short"
+    types[i+=1] = "I1";						            vtypes[i] = "char"
+    N = i + 1
+} # BEGIN
+
+/BT_FN/ {
+    for (i = 1; i <= NF; i++) {
+      if( match($i, "BT_FN") != 0 ) {
+        prototypes[$i] = $i
+      }
+    }
+  }
+
+END {
+    printf( "#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)\n" );
+    printf( "#define FUNC_SIMPLE(RETURN, NAME, ARGS...) RETURN NAME(ARGS);\n" );
+    printf( "#define BT_LAST(NAME) FUNC_SIMPLE(void, NAME)\n\n" );
+
+    # generate C types for macros names
+    for ( i = 0; i < N; i += 1 ) {
+		printf( "#define BT_%s %s\n", types[i], vtypes[i] )
+    } # for
+    printf( "\n" )
+
+    for ( prototype in prototypes ) {
+      # printf( "//\"%s\"\n", prototype )
+      if ( index( "BT_LAST", prototype ) == 1 ) {
+        continue
+      } # if
+
+      printf( "#define %s(NAME) FUNC_SIMPLE(", prototype )
+
+      if ( sub( "BT_FN_", "", prototype ) == 0 ) {
+        printf( "\n********** BAD MACRO NAME \"%s\" **********\n", prototype )
+        exit 0
+      } # if
+
+      # generate function return type as macro
+      for ( t = 0; t < N; t += 1 ) {					# find longest match
+        type = types[t];
+        if ( index( prototype, type ) == 1 ) {		# found match
+          printf( "BT_%s, NAME", type )
+          sub( type, "", prototype )
+          break;
+        } # if
+      } # for
+
+      # generate function parameter types as macro
+      if ( index( prototype, "VAR" ) != 2 ) {			# C-style empty parameters ?
+        for ( p = 0; length( prototype ) > 0; p += 1 ) { # until all parameters types are removed
+          sub( "_", "", prototype)				# remove "_"
+          printf( ", ", type )
+          temp = prototype
+          for ( t = 0; t < N; t += 1 ) {			# find longest match
+            type = types[t];
+            if ( index( prototype, type ) == 1 ) { # found match
+              printf( "BT_%s", type )
+              sub( type, "", prototype )
+              break;
+            } # if
+          } # for
+          if ( temp == prototype ) {				# no match found for parameter in macro table
+            printf( "\n********** MISSING TYPE \"%s\" **********\n", prototype )
+            exit 0
+          } # if
+        } # for
+      } # if
+      printf( ")\n" )
+    } # for
+
+	# extras
+	printf( "\n#include \"builtins.def\"\n\n" );
+	printf( "\n#include \"sync-builtins.cf\"\n\n" );
+	printf( "extern const char *__PRETTY_FUNCTION__;\n" );
+} # END
+
+# Local Variables: #
+# tab-width: 4 #
+# mode: awk #
+# compile-command: "make install" #
+# End: #
Index: libcfa/prelude/prototypes.c
===================================================================
--- libcfa/prelude/prototypes.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/prototypes.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,2 @@
+#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)
+#include "builtins.def"
Index: libcfa/prelude/prototypes.sed
===================================================================
--- libcfa/prelude/prototypes.sed	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/prototypes.sed	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,22 @@
+s/; /;\n/g  				#Make multi declaration lines into multiple lines
+/targetm/s/.*//				#Remove targetm declarations
+/__Unsupported/s/.*//			#Remove Unsupported types declarations
+s/void \(const char \*\)0\(\);//	#Remove void (const char \*)0();
+s/\"//g 					#Remove extraenous quotes in declarations
+/__builtin_/s/_ /_/g			#Remove extraenous spaces in declarations
+
+#Fix gcc overloading
+# various sed rules for the gcc sync builtins which are overloaded
+# kept here because they generate an acceptable approximate of the correct prototypes
+
+#/__sync_/s/_[0-9][0-9]*\(.*\)/\(\);/g	#hack since it will accept any parameters
+#/__atomic_/s/_[0-9][0-9]*\(.*\)/\(\);/g	#hack since it will accept any parameters
+
+#/_16/s/void \*/__int128 \*/g
+#/_8/s/void \*/long long int \*/g
+#/_4/s/void \*/int \*/g
+#/_2/s/void \*/short \*/g
+#/_1/s/void \*/char \*/g
+
+#s/([a-zA-Z0-9_ ]+)\s+__sync([a-z_]+)_([0-9]+)\((.*)\);/\1 __sync\2\(\4\,...); \1 __sync\2_\3\(\4\,...);/
+#s/([a-zA-Z0-9_ ]+)\s+__atomic([a-z_]+)_([0-9]+)\((.*)\);/\1 __atomic\2\(\4\); \1 __atomic\2_\3\(\4\);/
Index: libcfa/prelude/sync-builtins.cf
===================================================================
--- libcfa/prelude/sync-builtins.cf	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/sync-builtins.cf	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,889 @@
+char __sync_fetch_and_add(volatile char *, char,...);
+char __sync_fetch_and_add_1(volatile char *, char,...);
+signed char __sync_fetch_and_add(volatile signed char *, signed char,...);
+signed char __sync_fetch_and_add_1(volatile signed char *, signed char,...);
+unsigned char __sync_fetch_and_add(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_fetch_and_add_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_fetch_and_add(volatile signed short *, signed short,...);
+signed short __sync_fetch_and_add_2(volatile signed short *, signed short,...);
+unsigned short __sync_fetch_and_add(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_fetch_and_add_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_fetch_and_add(volatile signed int *, signed int,...);
+signed int __sync_fetch_and_add_4(volatile signed int *, signed int,...);
+unsigned int __sync_fetch_and_add(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_fetch_and_add_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_fetch_and_add(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_fetch_and_add_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_fetch_and_add(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_fetch_and_add_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_fetch_and_add(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_fetch_and_add_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_fetch_and_add(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_fetch_and_add_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_fetch_and_sub(volatile char *, char,...);
+char __sync_fetch_and_sub_1(volatile char *, char,...);
+signed char __sync_fetch_and_sub(volatile signed char *, signed char,...);
+signed char __sync_fetch_and_sub_1(volatile signed char *, signed char,...);
+unsigned char __sync_fetch_and_sub(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_fetch_and_sub_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_fetch_and_sub(volatile signed short *, signed short,...);
+signed short __sync_fetch_and_sub_2(volatile signed short *, signed short,...);
+unsigned short __sync_fetch_and_sub(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_fetch_and_sub_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_fetch_and_sub(volatile signed int *, signed int,...);
+signed int __sync_fetch_and_sub_4(volatile signed int *, signed int,...);
+unsigned int __sync_fetch_and_sub(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_fetch_and_sub_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_fetch_and_sub(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_fetch_and_sub_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_fetch_and_sub(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_fetch_and_sub_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_fetch_and_sub(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_fetch_and_sub_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_fetch_and_sub(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_fetch_and_sub_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_fetch_and_or(volatile char *, char,...);
+char __sync_fetch_and_or_1(volatile char *, char,...);
+signed char __sync_fetch_and_or(volatile signed char *, signed char,...);
+signed char __sync_fetch_and_or_1(volatile signed char *, signed char,...);
+unsigned char __sync_fetch_and_or(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_fetch_and_or_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_fetch_and_or(volatile signed short *, signed short,...);
+signed short __sync_fetch_and_or_2(volatile signed short *, signed short,...);
+unsigned short __sync_fetch_and_or(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_fetch_and_or_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_fetch_and_or(volatile signed int *, signed int,...);
+signed int __sync_fetch_and_or_4(volatile signed int *, signed int,...);
+unsigned int __sync_fetch_and_or(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_fetch_and_or_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_fetch_and_or(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_fetch_and_or_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_fetch_and_or(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_fetch_and_or_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_fetch_and_or(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_fetch_and_or_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_fetch_and_or(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_fetch_and_or_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_fetch_and_and(volatile char *, char,...);
+char __sync_fetch_and_and_1(volatile char *, char,...);
+signed char __sync_fetch_and_and(volatile signed char *, signed char,...);
+signed char __sync_fetch_and_and_1(volatile signed char *, signed char,...);
+unsigned char __sync_fetch_and_and(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_fetch_and_and_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_fetch_and_and(volatile signed short *, signed short,...);
+signed short __sync_fetch_and_and_2(volatile signed short *, signed short,...);
+unsigned short __sync_fetch_and_and(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_fetch_and_and_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_fetch_and_and(volatile signed int *, signed int,...);
+signed int __sync_fetch_and_and_4(volatile signed int *, signed int,...);
+unsigned int __sync_fetch_and_and(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_fetch_and_and_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_fetch_and_and(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_fetch_and_and_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_fetch_and_and(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_fetch_and_and_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_fetch_and_and(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_fetch_and_and_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_fetch_and_and(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_fetch_and_and_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_fetch_and_xor(volatile char *, char,...);
+char __sync_fetch_and_xor_1(volatile char *, char,...);
+signed char __sync_fetch_and_xor(volatile signed char *, signed char,...);
+signed char __sync_fetch_and_xor_1(volatile signed char *, signed char,...);
+unsigned char __sync_fetch_and_xor(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_fetch_and_xor_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_fetch_and_xor(volatile signed short *, signed short,...);
+signed short __sync_fetch_and_xor_2(volatile signed short *, signed short,...);
+unsigned short __sync_fetch_and_xor(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_fetch_and_xor_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_fetch_and_xor(volatile signed int *, signed int,...);
+signed int __sync_fetch_and_xor_4(volatile signed int *, signed int,...);
+unsigned int __sync_fetch_and_xor(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_fetch_and_xor_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_fetch_and_xor(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_fetch_and_xor_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_fetch_and_xor(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_fetch_and_xor_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_fetch_and_xor(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_fetch_and_xor_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_fetch_and_xor(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_fetch_and_xor_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_fetch_and_nand(volatile char *, char,...);
+char __sync_fetch_and_nand_1(volatile char *, char,...);
+signed char __sync_fetch_and_nand(volatile signed char *, signed char,...);
+signed char __sync_fetch_and_nand_1(volatile signed char *, signed char,...);
+unsigned char __sync_fetch_and_nand(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_fetch_and_nand_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_fetch_and_nand(volatile signed short *, signed short,...);
+signed short __sync_fetch_and_nand_2(volatile signed short *, signed short,...);
+unsigned short __sync_fetch_and_nand(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_fetch_and_nand_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_fetch_and_nand(volatile signed int *, signed int,...);
+signed int __sync_fetch_and_nand_4(volatile signed int *, signed int,...);
+unsigned int __sync_fetch_and_nand(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_fetch_and_nand_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_fetch_and_nand(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_fetch_and_nand_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_fetch_and_nand(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_fetch_and_nand_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_fetch_and_nand(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_fetch_and_nand_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_fetch_and_nand(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_fetch_and_nand_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_add_and_fetch(volatile char *, char,...);
+char __sync_add_and_fetch_1(volatile char *, char,...);
+signed char __sync_add_and_fetch(volatile signed char *, signed char,...);
+signed char __sync_add_and_fetch_1(volatile signed char *, signed char,...);
+unsigned char __sync_add_and_fetch(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_add_and_fetch_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_add_and_fetch(volatile signed short *, signed short,...);
+signed short __sync_add_and_fetch_2(volatile signed short *, signed short,...);
+unsigned short __sync_add_and_fetch(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_add_and_fetch_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_add_and_fetch(volatile signed int *, signed int,...);
+signed int __sync_add_and_fetch_4(volatile signed int *, signed int,...);
+signed int __sync_add_and_fetch(volatile signed int *, signed int,...);
+signed int __sync_add_and_fetch_4(volatile signed int *, signed int,...);
+signed long long int __sync_add_and_fetch(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_add_and_fetch_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_add_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_add_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_add_and_fetch(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_add_and_fetch_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_add_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_add_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_sub_and_fetch(volatile char *, char,...);
+char __sync_sub_and_fetch_1(volatile char *, char,...);
+signed char __sync_sub_and_fetch(volatile signed char *, signed char,...);
+signed char __sync_sub_and_fetch_1(volatile signed char *, signed char,...);
+unsigned char __sync_sub_and_fetch(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_sub_and_fetch_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_sub_and_fetch(volatile signed short *, signed short,...);
+signed short __sync_sub_and_fetch_2(volatile signed short *, signed short,...);
+unsigned short __sync_sub_and_fetch(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_sub_and_fetch_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_sub_and_fetch(volatile signed int *, signed int,...);
+signed int __sync_sub_and_fetch_4(volatile signed int *, signed int,...);
+unsigned int __sync_sub_and_fetch(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_sub_and_fetch_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_sub_and_fetch(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_sub_and_fetch_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_sub_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_sub_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_sub_and_fetch(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_sub_and_fetch_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_sub_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_sub_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_or_and_fetch(volatile char *, char,...);
+char __sync_or_and_fetch_1(volatile char *, char,...);
+signed char __sync_or_and_fetch(volatile signed char *, signed char,...);
+signed char __sync_or_and_fetch_1(volatile signed char *, signed char,...);
+unsigned char __sync_or_and_fetch(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_or_and_fetch_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_or_and_fetch(volatile signed short *, signed short,...);
+signed short __sync_or_and_fetch_2(volatile signed short *, signed short,...);
+unsigned short __sync_or_and_fetch(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_or_and_fetch_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_or_and_fetch(volatile signed int *, signed int,...);
+signed int __sync_or_and_fetch_4(volatile signed int *, signed int,...);
+unsigned int __sync_or_and_fetch(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_or_and_fetch_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_or_and_fetch(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_or_and_fetch_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_or_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_or_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_or_and_fetch(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_or_and_fetch_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_or_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_or_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_and_and_fetch(volatile char *, char,...);
+char __sync_and_and_fetch_1(volatile char *, char,...);
+signed char __sync_and_and_fetch(volatile signed char *, signed char,...);
+signed char __sync_and_and_fetch_1(volatile signed char *, signed char,...);
+unsigned char __sync_and_and_fetch(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_and_and_fetch_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_and_and_fetch(volatile signed short *, signed short,...);
+signed short __sync_and_and_fetch_2(volatile signed short *, signed short,...);
+unsigned short __sync_and_and_fetch(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_and_and_fetch_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_and_and_fetch(volatile signed int *, signed int,...);
+signed int __sync_and_and_fetch_4(volatile signed int *, signed int,...);
+unsigned int __sync_and_and_fetch(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_and_and_fetch_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_and_and_fetch(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_and_and_fetch_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_and_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_and_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_and_and_fetch(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_and_and_fetch_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_and_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_and_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_xor_and_fetch(volatile char *, char,...);
+char __sync_xor_and_fetch_1(volatile char *, char,...);
+signed char __sync_xor_and_fetch(volatile signed char *, signed char,...);
+signed char __sync_xor_and_fetch_1(volatile signed char *, signed char,...);
+unsigned char __sync_xor_and_fetch(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_xor_and_fetch_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_xor_and_fetch(volatile signed short *, signed short,...);
+signed short __sync_xor_and_fetch_2(volatile signed short *, signed short,...);
+unsigned short __sync_xor_and_fetch(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_xor_and_fetch_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_xor_and_fetch(volatile signed int *, signed int,...);
+signed int __sync_xor_and_fetch_4(volatile signed int *, signed int,...);
+unsigned int __sync_xor_and_fetch(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_xor_and_fetch_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_xor_and_fetch(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_xor_and_fetch_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_xor_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_xor_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_xor_and_fetch(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_xor_and_fetch_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_xor_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_xor_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+char __sync_nand_and_fetch(volatile char *, char,...);
+char __sync_nand_and_fetch_1(volatile char *, char,...);
+signed char __sync_nand_and_fetch(volatile signed char *, signed char,...);
+signed char __sync_nand_and_fetch_1(volatile signed char *, signed char,...);
+unsigned char __sync_nand_and_fetch(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_nand_and_fetch_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_nand_and_fetch(volatile signed short *, signed short,...);
+signed short __sync_nand_and_fetch_2(volatile signed short *, signed short,...);
+unsigned short __sync_nand_and_fetch(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_nand_and_fetch_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_nand_and_fetch(volatile signed int *, signed int,...);
+signed int __sync_nand_and_fetch_4(volatile signed int *, signed int,...);
+unsigned int __sync_nand_and_fetch(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_nand_and_fetch_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_nand_and_fetch(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_nand_and_fetch_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_nand_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_nand_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_nand_and_fetch(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_nand_and_fetch_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_nand_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_nand_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+_Bool __sync_bool_compare_and_swap(volatile char *, char, char,...);
+_Bool __sync_bool_compare_and_swap_1(volatile char *, char, char,...);
+_Bool __sync_bool_compare_and_swap(volatile signed char *, signed char, signed char,...);
+_Bool __sync_bool_compare_and_swap_1(volatile signed char *, signed char, signed char,...);
+_Bool __sync_bool_compare_and_swap(volatile unsigned char *, unsigned char, unsigned char,...);
+_Bool __sync_bool_compare_and_swap_1(volatile unsigned char *, unsigned char, unsigned char,...);
+_Bool __sync_bool_compare_and_swap(volatile short *, signed short, signed short,...);
+_Bool __sync_bool_compare_and_swap_2(volatile short *, signed short, signed short,...);
+_Bool __sync_bool_compare_and_swap(volatile short *, unsigned short, unsigned short,...);
+_Bool __sync_bool_compare_and_swap_2(volatile short *, unsigned short, unsigned short,...);
+_Bool __sync_bool_compare_and_swap(volatile signed int *, signed int, signed int,...);
+_Bool __sync_bool_compare_and_swap_4(volatile signed int *, signed int, signed int,...);
+_Bool __sync_bool_compare_and_swap(volatile unsigned int *, unsigned int, unsigned int,...);
+_Bool __sync_bool_compare_and_swap_4(volatile unsigned int *, unsigned int, unsigned int,...);
+_Bool __sync_bool_compare_and_swap(volatile signed long long int *, signed long long int, signed long long int,...);
+_Bool __sync_bool_compare_and_swap_8(volatile signed long long int *, signed long long int, signed long long int,...);
+_Bool __sync_bool_compare_and_swap(volatile unsigned long long int *, unsigned long long int, unsigned long long int,...);
+_Bool __sync_bool_compare_and_swap_8(volatile unsigned long long int *, unsigned long long int, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+_Bool __sync_bool_compare_and_swap(volatile signed __int128 *, signed __int128, signed __int128,...);
+_Bool __sync_bool_compare_and_swap_16(volatile signed __int128 *, signed __int128, signed __int128,...);
+_Bool __sync_bool_compare_and_swap(volatile unsigned __int128 *, unsigned __int128, unsigned __int128,...);
+_Bool __sync_bool_compare_and_swap_16(volatile unsigned __int128 *, unsigned __int128, unsigned __int128,...);
+#endif
+
+char __sync_val_compare_and_swap(volatile char *, char, char,...);
+char __sync_val_compare_and_swap_1(volatile char *, char, char,...);
+signed char __sync_val_compare_and_swap(volatile signed char *, signed char, signed char,...);
+signed char __sync_val_compare_and_swap_1(volatile signed char *, signed char, signed char,...);
+unsigned char __sync_val_compare_and_swap(volatile unsigned char *, unsigned char, unsigned char,...);
+unsigned char __sync_val_compare_and_swap_1(volatile unsigned char *, unsigned char, unsigned char,...);
+signed short __sync_val_compare_and_swap(volatile signed short *, signed short, signed short,...);
+signed short __sync_val_compare_and_swap_2(volatile signed short *, signed short, signed short,...);
+unsigned short __sync_val_compare_and_swap(volatile unsigned short *, unsigned short, unsigned short,...);
+unsigned short __sync_val_compare_and_swap_2(volatile unsigned short *, unsigned short, unsigned short,...);
+signed int __sync_val_compare_and_swap(volatile signed int *, signed int, signed int,...);
+signed int __sync_val_compare_and_swap_4(volatile signed int *, signed int, signed int,...);
+unsigned int __sync_val_compare_and_swap(volatile unsigned int *, unsigned int, unsigned int,...);
+unsigned int __sync_val_compare_and_swap_4(volatile unsigned int *, unsigned int, unsigned int,...);
+signed long long int __sync_val_compare_and_swap(volatile signed long long int *, signed long long int, signed long long int,...);
+signed long long int __sync_val_compare_and_swap_8(volatile signed long long int *, signed long long int, signed long long int,...);
+unsigned long long int __sync_val_compare_and_swap(volatile unsigned long long int *, unsigned long long int, unsigned long long int,...);
+unsigned long long int __sync_val_compare_and_swap_8(volatile unsigned long long int *, unsigned long long int, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_val_compare_and_swap(volatile signed __int128 *, signed __int128, signed __int128,...);
+signed __int128 __sync_val_compare_and_swap_16(volatile signed __int128 *, signed __int128, signed __int128,...);
+unsigned __int128 __sync_val_compare_and_swap(volatile unsigned __int128 *, unsigned __int128, unsigned __int128,...);
+unsigned __int128 __sync_val_compare_and_swap_16(volatile unsigned __int128 *, unsigned __int128, unsigned __int128,...);
+#endif
+
+char __sync_lock_test_and_set(volatile char *, char,...);
+char __sync_lock_test_and_set_1(volatile char *, char,...);
+signed char __sync_lock_test_and_set(volatile signed char *, signed char,...);
+signed char __sync_lock_test_and_set_1(volatile signed char *, signed char,...);
+unsigned char __sync_lock_test_and_set(volatile unsigned char *, unsigned char,...);
+unsigned char __sync_lock_test_and_set_1(volatile unsigned char *, unsigned char,...);
+signed short __sync_lock_test_and_set(volatile signed short *, signed short,...);
+signed short __sync_lock_test_and_set_2(volatile signed short *, signed short,...);
+unsigned short __sync_lock_test_and_set(volatile unsigned short *, unsigned short,...);
+unsigned short __sync_lock_test_and_set_2(volatile unsigned short *, unsigned short,...);
+signed int __sync_lock_test_and_set(volatile signed int *, signed int,...);
+signed int __sync_lock_test_and_set_4(volatile signed int *, signed int,...);
+unsigned int __sync_lock_test_and_set(volatile unsigned int *, unsigned int,...);
+unsigned int __sync_lock_test_and_set_4(volatile unsigned int *, unsigned int,...);
+signed long long int __sync_lock_test_and_set(volatile signed long long int *, signed long long int,...);
+signed long long int __sync_lock_test_and_set_8(volatile signed long long int *, signed long long int,...);
+unsigned long long int __sync_lock_test_and_set(volatile unsigned long long int *, unsigned long long int,...);
+unsigned long long int __sync_lock_test_and_set_8(volatile unsigned long long int *, unsigned long long int,...);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __sync_lock_test_and_set(volatile signed __int128 *, signed __int128,...);
+signed __int128 __sync_lock_test_and_set_16(volatile signed __int128 *, signed __int128,...);
+unsigned __int128 __sync_lock_test_and_set(volatile unsigned __int128 *, unsigned __int128,...);
+unsigned __int128 __sync_lock_test_and_set_16(volatile unsigned __int128 *, unsigned __int128,...);
+#endif
+
+void __sync_lock_release(volatile char *,...);
+void __sync_lock_release_1(volatile char *,...);
+void __sync_lock_release(volatile signed char *,...);
+void __sync_lock_release_1(volatile signed char *,...);
+void __sync_lock_release(volatile unsigned char *,...);
+void __sync_lock_release_1(volatile unsigned char *,...);
+void __sync_lock_release(volatile signed short *,...);
+void __sync_lock_release_2(volatile signed short *,...);
+void __sync_lock_release(volatile unsigned short *,...);
+void __sync_lock_release_2(volatile unsigned short *,...);
+void __sync_lock_release(volatile signed int *,...);
+void __sync_lock_release_4(volatile signed int *,...);
+void __sync_lock_release(volatile unsigned int *,...);
+void __sync_lock_release_4(volatile unsigned int *,...);
+void __sync_lock_release(volatile signed long long int *,...);
+void __sync_lock_release_8(volatile signed long long int *,...);
+void __sync_lock_release(volatile unsigned long long int *,...);
+void __sync_lock_release_8(volatile unsigned long long int *,...);
+#if defined(__SIZEOF_INT128__)
+void __sync_lock_release(volatile signed __int128 *,...);
+void __sync_lock_release_16(volatile signed __int128 *,...);
+void __sync_lock_release(volatile unsigned __int128 *,...);
+void __sync_lock_release_16(volatile unsigned __int128 *,...);
+#endif
+
+void __sync_synchronize();
+
+
+
+
+_Bool __atomic_test_and_set(volatile _Bool *, int);
+_Bool __atomic_test_and_set(volatile char *, int);
+_Bool __atomic_test_and_set(volatile signed char *, int);
+_Bool __atomic_test_and_set(volatile unsigned char *, int);
+_Bool __atomic_test_and_set(volatile signed short *, int);
+_Bool __atomic_test_and_set(volatile unsigned short *, int);
+_Bool __atomic_test_and_set(volatile signed int *, int);
+_Bool __atomic_test_and_set(volatile unsigned int *, int);
+_Bool __atomic_test_and_set(volatile signed long long int *, int);
+_Bool __atomic_test_and_set(volatile unsigned long long int *, int);
+#if defined(__SIZEOF_INT128__)
+_Bool __atomic_test_and_set(volatile signed __int128 *, int);
+_Bool __atomic_test_and_set(volatile unsigned __int128 *, int);
+#endif
+
+void __atomic_clear(volatile _Bool *, int);
+void __atomic_clear(volatile char *, int);
+void __atomic_clear(volatile signed char *, int);
+void __atomic_clear(volatile unsigned char *, int);
+void __atomic_clear(volatile signed short *, int);
+void __atomic_clear(volatile unsigned short *, int);
+void __atomic_clear(volatile signed int *, int);
+void __atomic_clear(volatile unsigned int *, int);
+void __atomic_clear(volatile signed long long int *, int);
+void __atomic_clear(volatile unsigned long long int *, int);
+#if defined(__SIZEOF_INT128__)
+void __atomic_clear(volatile signed __int128 *, int);
+void __atomic_clear(volatile unsigned __int128 *, int);
+#endif
+
+char __atomic_exchange_n(volatile char *, volatile char *, int);
+char __atomic_exchange_1(volatile char *, char, int);
+void __atomic_exchange(volatile char *, volatile char *, volatile char *, int);
+signed char __atomic_exchange_n(volatile signed char *, volatile signed char *, int);
+signed char __atomic_exchange_1(volatile signed char *, signed char, int);
+void __atomic_exchange(volatile signed char *, volatile signed char *, volatile signed char *, int);
+unsigned char __atomic_exchange_n(volatile unsigned char *, volatile unsigned char *, int);
+unsigned char __atomic_exchange_1(volatile unsigned char *, unsigned char, int);
+void __atomic_exchange(volatile unsigned char *, volatile unsigned char *, volatile unsigned char *, int);
+signed short __atomic_exchange_n(volatile signed short *, volatile signed short *, int);
+signed short __atomic_exchange_2(volatile signed short *, signed short, int);
+void __atomic_exchange(volatile signed short *, volatile signed short *, volatile signed short *, int);
+unsigned short __atomic_exchange_n(volatile unsigned short *, volatile unsigned short *, int);
+unsigned short __atomic_exchange_2(volatile unsigned short *, unsigned short, int);
+void __atomic_exchange(volatile unsigned short *, volatile unsigned short *, volatile unsigned short *, int);
+signed int __atomic_exchange_n(volatile signed int *, volatile signed int *, int);
+signed int __atomic_exchange_4(volatile signed int *, signed int, int);
+void __atomic_exchange(volatile signed int *, volatile signed int *, volatile signed int *, int);
+unsigned int __atomic_exchange_n(volatile unsigned int *, volatile unsigned int *, int);
+unsigned int __atomic_exchange_4(volatile unsigned int *, unsigned int, int);
+void __atomic_exchange(volatile unsigned int *, volatile unsigned int *, volatile unsigned int *, int);
+signed long long int __atomic_exchange_n(volatile signed long long int *, volatile signed long long int *, int);
+signed long long int __atomic_exchange_8(volatile signed long long int *, signed long long int, int);
+void __atomic_exchange(volatile signed long long int *, volatile signed long long int *, volatile signed long long int *, int);
+unsigned long long int __atomic_exchange_n(volatile unsigned long long int *, volatile unsigned long long int *, int);
+unsigned long long int __atomic_exchange_8(volatile unsigned long long int *, unsigned long long int, int);
+void __atomic_exchange(volatile unsigned long long int *, volatile unsigned long long int *, volatile unsigned long long int *, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_exchange_n(volatile signed __int128 *, volatile signed __int128 *, int);
+signed __int128 __atomic_exchange_16(volatile signed __int128 *, signed __int128, int);
+void __atomic_exchange(volatile signed __int128 *, volatile signed __int128 *, volatile signed __int128 *, int);
+unsigned __int128 __atomic_exchange_n(volatile unsigned __int128 *, volatile unsigned __int128 *, int);
+unsigned __int128 __atomic_exchange_16(volatile unsigned __int128 *, unsigned __int128, int);
+void __atomic_exchange(volatile unsigned __int128 *, volatile unsigned __int128 *, volatile unsigned __int128 *, int);
+#endif
+
+_Bool __atomic_load_n(const volatile _Bool *, int);
+void __atomic_load(const volatile _Bool *, volatile _Bool *, int);
+char __atomic_load_n(const volatile char *, int);
+char __atomic_load_1(const volatile char *, int);
+void __atomic_load(const volatile char *, volatile char *, int);
+signed char __atomic_load_n(const volatile signed char *, int);
+signed char __atomic_load_1(const volatile signed char *, int);
+void __atomic_load(const volatile signed char *, volatile signed char *, int);
+unsigned char __atomic_load_n(const volatile unsigned char *, int);
+unsigned char __atomic_load_1(const volatile unsigned char *, int);
+void __atomic_load(const volatile unsigned char *, volatile unsigned char *, int);
+signed short __atomic_load_n(const volatile signed short *, int);
+signed short __atomic_load_2(const volatile signed short *, int);
+void __atomic_load(const volatile signed short *, volatile signed short *, int);
+unsigned short __atomic_load_n(const volatile unsigned short *, int);
+unsigned short __atomic_load_2(const volatile unsigned short *, int);
+void __atomic_load(const volatile unsigned short *, volatile unsigned short *, int);
+signed int __atomic_load_n(const volatile signed int *, int);
+signed int __atomic_load_4(const volatile signed int *, int);
+void __atomic_load(const volatile signed int *, volatile signed int *, int);
+unsigned int __atomic_load_n(const volatile unsigned int *, int);
+unsigned int __atomic_load_4(const volatile unsigned int *, int);
+void __atomic_load(const volatile unsigned int *, volatile unsigned int *, int);
+signed long long int __atomic_load_n(const volatile signed long long int *, int);
+signed long long int __atomic_load_8(const volatile signed long long int *, int);
+void __atomic_load(const volatile signed long long int *, volatile signed long long int *, int);
+unsigned long long int __atomic_load_n(const volatile unsigned long long int *, int);
+unsigned long long int __atomic_load_8(const volatile unsigned long long int *, int);
+void __atomic_load(const volatile unsigned long long int *, volatile unsigned long long int *, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_load_n(const volatile signed __int128 *, int);
+signed __int128 __atomic_load_16(const volatile signed __int128 *, int);
+void __atomic_load(const volatile signed __int128 *, volatile signed __int128 *, int);
+unsigned __int128 __atomic_load_n(const volatile unsigned __int128 *, int);
+unsigned __int128 __atomic_load_16(const volatile unsigned __int128 *, int);
+void __atomic_load(const volatile unsigned __int128 *, volatile unsigned __int128 *, int);
+#endif
+
+_Bool __atomic_compare_exchange_n(volatile char *, char *, char, _Bool, int, int);
+_Bool __atomic_compare_exchange_1(volatile char *, char *, char, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile char *, char *, char *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile signed char *, signed char *, signed char, _Bool, int, int);
+_Bool __atomic_compare_exchange_1(volatile signed char *, signed char *, signed char, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile signed char *, signed char *, signed char *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile unsigned char *, unsigned char *, unsigned char, _Bool, int, int);
+_Bool __atomic_compare_exchange_1(volatile unsigned char *, unsigned char *, unsigned char, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile unsigned char *, unsigned char *, unsigned char *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile signed short *, signed short *, signed short, _Bool, int, int);
+_Bool __atomic_compare_exchange_2(volatile signed short *, signed short *, signed short, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile signed short *, signed short *, signed short *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile unsigned short *, unsigned short *, unsigned short, _Bool, int, int);
+_Bool __atomic_compare_exchange_2(volatile unsigned short *, unsigned short *, unsigned short, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile unsigned short *, unsigned short *, unsigned short *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile signed int *, signed int *, signed int, _Bool, int, int);
+_Bool __atomic_compare_exchange_4(volatile signed int *, signed int *, signed int, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile signed int *, signed int *, signed int *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile unsigned int *, unsigned int *, unsigned int, _Bool, int, int);
+_Bool __atomic_compare_exchange_4(volatile unsigned int *, unsigned int *, unsigned int, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile unsigned int *, unsigned int *, unsigned int *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile signed long long int *, signed long long int *, signed long long int, _Bool, int, int);
+_Bool __atomic_compare_exchange_8(volatile signed long long int *, signed long long int *, signed long long int, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile signed long long int *, signed long long int *, signed long long int *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile unsigned long long int *, unsigned long long int *, unsigned long long int, _Bool, int, int);
+_Bool __atomic_compare_exchange_8(volatile unsigned long long int *, unsigned long long int *, unsigned long long int, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile unsigned long long int *, unsigned long long int *, unsigned long long int *, _Bool, int, int);
+#if defined(__SIZEOF_INT128__)
+_Bool __atomic_compare_exchange_n (volatile signed __int128 *, signed __int128 *, signed __int128, _Bool, int, int);
+_Bool __atomic_compare_exchange_16(volatile signed __int128 *, signed __int128 *, signed __int128, _Bool, int, int);
+_Bool __atomic_compare_exchange   (volatile signed __int128 *, signed __int128 *, signed __int128 *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n (volatile unsigned __int128 *, unsigned __int128 *, unsigned __int128, _Bool, int, int);
+_Bool __atomic_compare_exchange_16(volatile unsigned __int128 *, unsigned __int128 *, unsigned __int128, _Bool, int, int);
+_Bool __atomic_compare_exchange   (volatile unsigned __int128 *, unsigned __int128 *, unsigned __int128 *, _Bool, int, int);
+#endif
+
+void __atomic_store_n(volatile _Bool *, _Bool, int);
+void __atomic_store(volatile _Bool *, _Bool *, int);
+void __atomic_store_n(volatile char *, char, int);
+void __atomic_store_1(volatile char *, char, int);
+void __atomic_store(volatile char *, char *, int);
+void __atomic_store_n(volatile signed char *, signed char, int);
+void __atomic_store_1(volatile signed char *, signed char, int);
+void __atomic_store(volatile signed char *, signed char *, int);
+void __atomic_store_n(volatile unsigned char *, unsigned char, int);
+void __atomic_store_1(volatile unsigned char *, unsigned char, int);
+void __atomic_store(volatile unsigned char *, unsigned char *, int);
+void __atomic_store_n(volatile signed short *, signed short, int);
+void __atomic_store_2(volatile signed short *, signed short, int);
+void __atomic_store(volatile signed short *, signed short *, int);
+void __atomic_store_n(volatile unsigned short *, unsigned short, int);
+void __atomic_store_2(volatile unsigned short *, unsigned short, int);
+void __atomic_store(volatile unsigned short *, unsigned short *, int);
+void __atomic_store_n(volatile signed int *, signed int, int);
+void __atomic_store_4(volatile signed int *, signed int, int);
+void __atomic_store(volatile signed int *, signed int *, int);
+void __atomic_store_n(volatile unsigned int *, unsigned int, int);
+void __atomic_store_4(volatile unsigned int *, unsigned int, int);
+void __atomic_store(volatile unsigned int *, unsigned int *, int);
+void __atomic_store_n(volatile signed long long int *, signed long long int, int);
+void __atomic_store_8(volatile signed long long int *, signed long long int, int);
+void __atomic_store(volatile signed long long int *, signed long long int *, int);
+void __atomic_store_n(volatile unsigned long long int *, unsigned long long int, int);
+void __atomic_store_8(volatile unsigned long long int *, unsigned long long int, int);
+void __atomic_store(volatile unsigned long long int *, unsigned long long int *, int);
+#if defined(__SIZEOF_INT128__)
+void __atomic_store_n(volatile signed __int128 *, signed __int128, int);
+void __atomic_store_16(volatile signed __int128 *, signed __int128, int);
+void __atomic_store(volatile signed __int128 *, signed __int128 *, int);
+void __atomic_store_n(volatile unsigned __int128 *, unsigned __int128, int);
+void __atomic_store_16(volatile unsigned __int128 *, unsigned __int128, int);
+void __atomic_store(volatile unsigned __int128 *, unsigned __int128 *, int);
+#endif
+
+char __atomic_add_fetch  (volatile char *, char, int);
+char __atomic_add_fetch_1(volatile char *, char, int);
+signed char __atomic_add_fetch  (volatile signed char *, signed char, int);
+signed char __atomic_add_fetch_1(volatile signed char *, signed char, int);
+unsigned char __atomic_add_fetch  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_add_fetch_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_add_fetch  (volatile signed short *, signed short, int);
+signed short __atomic_add_fetch_2(volatile signed short *, signed short, int);
+unsigned short __atomic_add_fetch  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_add_fetch_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_add_fetch  (volatile signed int *, signed int, int);
+signed int __atomic_add_fetch_4(volatile signed int *, signed int, int);
+unsigned int __atomic_add_fetch  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_add_fetch_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_add_fetch  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_add_fetch_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_add_fetch  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_add_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_add_fetch   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_add_fetch_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_add_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_add_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_sub_fetch  (volatile char *, char, int);
+char __atomic_sub_fetch_1(volatile char *, char, int);
+signed char __atomic_sub_fetch  (volatile signed char *, signed char, int);
+signed char __atomic_sub_fetch_1(volatile signed char *, signed char, int);
+unsigned char __atomic_sub_fetch  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_sub_fetch_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_sub_fetch  (volatile signed short *, signed short, int);
+signed short __atomic_sub_fetch_2(volatile signed short *, signed short, int);
+unsigned short __atomic_sub_fetch  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_sub_fetch_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_sub_fetch  (volatile signed int *, signed int, int);
+signed int __atomic_sub_fetch_4(volatile signed int *, signed int, int);
+unsigned int __atomic_sub_fetch  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_sub_fetch_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_sub_fetch  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_sub_fetch_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_sub_fetch  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_sub_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_sub_fetch   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_sub_fetch_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_sub_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_sub_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_and_fetch  (volatile char *, char, int);
+char __atomic_and_fetch_1(volatile char *, char, int);
+signed char __atomic_and_fetch  (volatile signed char *, signed char, int);
+signed char __atomic_and_fetch_1(volatile signed char *, signed char, int);
+unsigned char __atomic_and_fetch  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_and_fetch_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_and_fetch  (volatile signed short *, signed short, int);
+signed short __atomic_and_fetch_2(volatile signed short *, signed short, int);
+unsigned short __atomic_and_fetch  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_and_fetch_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_and_fetch  (volatile signed int *, signed int, int);
+signed int __atomic_and_fetch_4(volatile signed int *, signed int, int);
+unsigned int __atomic_and_fetch  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_and_fetch_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_and_fetch  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_and_fetch_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_and_fetch  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_and_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_and_fetch   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_and_fetch_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_and_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_and_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_nand_fetch  (volatile char *, char, int);
+char __atomic_nand_fetch_1(volatile char *, char, int);
+signed char __atomic_nand_fetch  (volatile signed char *, signed char, int);
+signed char __atomic_nand_fetch_1(volatile signed char *, signed char, int);
+unsigned char __atomic_nand_fetch  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_nand_fetch_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_nand_fetch  (volatile signed short *, signed short, int);
+signed short __atomic_nand_fetch_2(volatile signed short *, signed short, int);
+unsigned short __atomic_nand_fetch  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_nand_fetch_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_nand_fetch  (volatile signed int *, signed int, int);
+signed int __atomic_nand_fetch_4(volatile signed int *, signed int, int);
+unsigned int __atomic_nand_fetch  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_nand_fetch_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_nand_fetch  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_nand_fetch_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_nand_fetch  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_nand_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_nand_fetch   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_nand_fetch_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_nand_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_nand_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_xor_fetch  (volatile char *, char, int);
+char __atomic_xor_fetch_1(volatile char *, char, int);
+signed char __atomic_xor_fetch  (volatile signed char *, signed char, int);
+signed char __atomic_xor_fetch_1(volatile signed char *, signed char, int);
+unsigned char __atomic_xor_fetch  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_xor_fetch_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_xor_fetch  (volatile signed short *, signed short, int);
+signed short __atomic_xor_fetch_2(volatile signed short *, signed short, int);
+unsigned short __atomic_xor_fetch  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_xor_fetch_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_xor_fetch  (volatile signed int *, signed int, int);
+signed int __atomic_xor_fetch_4(volatile signed int *, signed int, int);
+unsigned int __atomic_xor_fetch  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_xor_fetch_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_xor_fetch  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_xor_fetch_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_xor_fetch  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_xor_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_xor_fetch   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_xor_fetch_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_xor_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_xor_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_or_fetch  (volatile char *, char, int);
+char __atomic_or_fetch_1(volatile char *, char, int);
+signed char __atomic_or_fetch  (volatile signed char *, signed char, int);
+signed char __atomic_or_fetch_1(volatile signed char *, signed char, int);
+unsigned char __atomic_or_fetch  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_or_fetch_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_or_fetch  (volatile signed short *, signed short, int);
+signed short __atomic_or_fetch_2(volatile signed short *, signed short, int);
+unsigned short __atomic_or_fetch  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_or_fetch_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_or_fetch  (volatile signed int *, signed int, int);
+signed int __atomic_or_fetch_4(volatile signed int *, signed int, int);
+unsigned int __atomic_or_fetch  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_or_fetch_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_or_fetch  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_or_fetch_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_or_fetch  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_or_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_or_fetch   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_or_fetch_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_or_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_or_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_fetch_add  (volatile char *, char, int);
+char __atomic_fetch_add_1(volatile char *, char, int);
+signed char __atomic_fetch_add  (volatile signed char *, signed char, int);
+signed char __atomic_fetch_add_1(volatile signed char *, signed char, int);
+unsigned char __atomic_fetch_add  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_fetch_add_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_fetch_add  (volatile signed short *, signed short, int);
+signed short __atomic_fetch_add_2(volatile signed short *, signed short, int);
+unsigned short __atomic_fetch_add  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_fetch_add_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_fetch_add  (volatile signed int *, signed int, int);
+signed int __atomic_fetch_add_4(volatile signed int *, signed int, int);
+unsigned int __atomic_fetch_add  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_fetch_add_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_fetch_add  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_fetch_add_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_fetch_add  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_fetch_add_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_fetch_add   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_fetch_add_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_fetch_add   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_fetch_add_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_fetch_sub  (volatile char *, char, int);
+char __atomic_fetch_sub_1(volatile char *, char, int);
+signed char __atomic_fetch_sub  (volatile signed char *, signed char, int);
+signed char __atomic_fetch_sub_1(volatile signed char *, signed char, int);
+unsigned char __atomic_fetch_sub  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_fetch_sub_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_fetch_sub  (volatile signed short *, signed short, int);
+signed short __atomic_fetch_sub_2(volatile signed short *, signed short, int);
+unsigned short __atomic_fetch_sub  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_fetch_sub_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_fetch_sub  (volatile signed int *, signed int, int);
+signed int __atomic_fetch_sub_4(volatile signed int *, signed int, int);
+unsigned int __atomic_fetch_sub  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_fetch_sub_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_fetch_sub  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_fetch_sub_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_fetch_sub  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_fetch_sub_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_fetch_sub   (volatile signed  __int128 *, signed __int128, int);
+signed __int128 __atomic_fetch_sub_16(volatile signed  __int128 *, signed __int128, int);
+unsigned __int128 __atomic_fetch_sub   (volatile unsigned  __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_fetch_sub_16(volatile unsigned  __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_fetch_and  (volatile char *, char, int);
+char __atomic_fetch_and_1(volatile char *, char, int);
+signed char __atomic_fetch_and  (volatile signed char *, signed char, int);
+signed char __atomic_fetch_and_1(volatile signed char *, signed char, int);
+unsigned char __atomic_fetch_and  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_fetch_and_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_fetch_and  (volatile signed short *, signed short, int);
+signed short __atomic_fetch_and_2(volatile signed short *, signed short, int);
+unsigned short __atomic_fetch_and  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_fetch_and_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_fetch_and  (volatile signed int *, signed int, int);
+signed int __atomic_fetch_and_4(volatile signed int *, signed int, int);
+unsigned int __atomic_fetch_and  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_fetch_and_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_fetch_and  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_fetch_and_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_fetch_and  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_fetch_and_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_fetch_and   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_fetch_and_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_fetch_and   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_fetch_and_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_fetch_nand  (volatile char *, char, int);
+char __atomic_fetch_nand_1(volatile char *, char, int);
+signed char __atomic_fetch_nand  (volatile signed char *, signed char, int);
+signed char __atomic_fetch_nand_1(volatile signed char *, signed char, int);
+unsigned char __atomic_fetch_nand  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_fetch_nand_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_fetch_nand  (volatile signed short *, signed short, int);
+signed short __atomic_fetch_nand_2(volatile signed short *, signed short, int);
+unsigned short __atomic_fetch_nand  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_fetch_nand_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_fetch_nand  (volatile signed int *, signed int, int);
+signed int __atomic_fetch_nand_4(volatile signed int *, signed int, int);
+unsigned int __atomic_fetch_nand  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_fetch_nand_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_fetch_nand  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_fetch_nand_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_fetch_nand  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_fetch_nand_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_fetch_nand   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_fetch_nand_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_fetch_nand   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_fetch_nand_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_fetch_xor  (volatile char *, char, int);
+char __atomic_fetch_xor_1(volatile char *, char, int);
+signed char __atomic_fetch_xor  (volatile signed char *, signed char, int);
+signed char __atomic_fetch_xor_1(volatile signed char *, signed char, int);
+unsigned char __atomic_fetch_xor  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_fetch_xor_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_fetch_xor  (volatile signed short *, signed short, int);
+signed short __atomic_fetch_xor_2(volatile signed short *, signed short, int);
+unsigned short __atomic_fetch_xor  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_fetch_xor_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_fetch_xor  (volatile signed int *, signed int, int);
+signed int __atomic_fetch_xor_4(volatile signed int *, signed int, int);
+unsigned int __atomic_fetch_xor  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_fetch_xor_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_fetch_xor  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_fetch_xor_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_fetch_xor  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_fetch_xor_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_fetch_xor   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_fetch_xor_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_fetch_xor   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_fetch_xor_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+char __atomic_fetch_or  (volatile char *, char, int);
+char __atomic_fetch_or_1(volatile char *, char, int);
+signed char __atomic_fetch_or  (volatile signed char *, signed char, int);
+signed char __atomic_fetch_or_1(volatile signed char *, signed char, int);
+unsigned char __atomic_fetch_or  (volatile unsigned char *, unsigned char, int);
+unsigned char __atomic_fetch_or_1(volatile unsigned char *, unsigned char, int);
+signed short __atomic_fetch_or  (volatile signed short *, signed short, int);
+signed short __atomic_fetch_or_2(volatile signed short *, signed short, int);
+unsigned short __atomic_fetch_or  (volatile unsigned short *, unsigned short, int);
+unsigned short __atomic_fetch_or_2(volatile unsigned short *, unsigned short, int);
+signed int __atomic_fetch_or  (volatile signed int *, signed int, int);
+signed int __atomic_fetch_or_4(volatile signed int *, signed int, int);
+unsigned int __atomic_fetch_or  (volatile unsigned int *, unsigned int, int);
+unsigned int __atomic_fetch_or_4(volatile unsigned int *, unsigned int, int);
+signed long long int __atomic_fetch_or  (volatile signed long long int *, signed long long int, int);
+signed long long int __atomic_fetch_or_8(volatile signed long long int *, signed long long int, int);
+unsigned long long int __atomic_fetch_or  (volatile unsigned long long int *, unsigned long long int, int);
+unsigned long long int __atomic_fetch_or_8(volatile unsigned long long int *, unsigned long long int, int);
+#if defined(__SIZEOF_INT128__)
+signed __int128 __atomic_fetch_or   (volatile signed __int128 *, signed __int128, int);
+signed __int128 __atomic_fetch_or_16(volatile signed __int128 *, signed __int128, int);
+unsigned __int128 __atomic_fetch_or   (volatile unsigned __int128 *, unsigned __int128, int);
+unsigned __int128 __atomic_fetch_or_16(volatile unsigned __int128 *, unsigned __int128, int);
+#endif
+
+_Bool __atomic_always_lock_free(unsigned long, const volatile void *);
+_Bool __atomic_is_lock_free(unsigned long, const volatile void *);
+
+void __atomic_thread_fence (int);
+void __atomic_signal_fence (int);
+void __atomic_feraiseexcept(int);
Index: libcfa/prelude/sync-builtins.def
===================================================================
--- libcfa/prelude/sync-builtins.def	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/prelude/sync-builtins.def	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,614 @@
+/* This file contains the definitions and documentation for the
+   synchronization builtins used in the GNU compiler.
+   Copyright (C) 2005-2016 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Before including this file, you should define a macro:
+
+     DEF_SYNC_BUILTIN (ENUM, NAME, TYPE, ATTRS)
+
+   See builtins.def for details.  */
+
+/* Synchronization Primitives.  The "_N" version is the one that the user
+   is supposed to be using.  It's overloaded, and is resolved to one of the
+   "_1" through "_16" versions, plus some extra casts.  */
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_N, "__sync_fetch_and_add",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_1, "__sync_fetch_and_add_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_2, "__sync_fetch_and_add_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_4, "__sync_fetch_and_add_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_8, "__sync_fetch_and_add_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_16, "__sync_fetch_and_add_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_N, "__sync_fetch_and_sub",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_1, "__sync_fetch_and_sub_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_2, "__sync_fetch_and_sub_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_4, "__sync_fetch_and_sub_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_8, "__sync_fetch_and_sub_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_16, "__sync_fetch_and_sub_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_N, "__sync_fetch_and_or",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_1, "__sync_fetch_and_or_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_2, "__sync_fetch_and_or_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_4, "__sync_fetch_and_or_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_8, "__sync_fetch_and_or_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_16, "__sync_fetch_and_or_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_N, "__sync_fetch_and_and",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_1, "__sync_fetch_and_and_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_2, "__sync_fetch_and_and_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_4, "__sync_fetch_and_and_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_8, "__sync_fetch_and_and_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_16, "__sync_fetch_and_and_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_N, "__sync_fetch_and_xor",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_1, "__sync_fetch_and_xor_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_2, "__sync_fetch_and_xor_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_4, "__sync_fetch_and_xor_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_8, "__sync_fetch_and_xor_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_16, "__sync_fetch_and_xor_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_N, "__sync_fetch_and_nand",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_1, "__sync_fetch_and_nand_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_2, "__sync_fetch_and_nand_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_4, "__sync_fetch_and_nand_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_8, "__sync_fetch_and_nand_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_16, "__sync_fetch_and_nand_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_N, "__sync_add_and_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_1, "__sync_add_and_fetch_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_2, "__sync_add_and_fetch_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_4, "__sync_add_and_fetch_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_8, "__sync_add_and_fetch_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_16, "__sync_add_and_fetch_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_N, "__sync_sub_and_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_1, "__sync_sub_and_fetch_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_2, "__sync_sub_and_fetch_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_4, "__sync_sub_and_fetch_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_8, "__sync_sub_and_fetch_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_16, "__sync_sub_and_fetch_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_N, "__sync_or_and_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_1, "__sync_or_and_fetch_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_2, "__sync_or_and_fetch_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_4, "__sync_or_and_fetch_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_8, "__sync_or_and_fetch_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_16, "__sync_or_and_fetch_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_N, "__sync_and_and_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_1, "__sync_and_and_fetch_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_2, "__sync_and_and_fetch_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_4, "__sync_and_and_fetch_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_8, "__sync_and_and_fetch_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_16, "__sync_and_and_fetch_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_N, "__sync_xor_and_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_1, "__sync_xor_and_fetch_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_2, "__sync_xor_and_fetch_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_4, "__sync_xor_and_fetch_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_8, "__sync_xor_and_fetch_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_16, "__sync_xor_and_fetch_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_N, "__sync_nand_and_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_1, "__sync_nand_and_fetch_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_2, "__sync_nand_and_fetch_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_4, "__sync_nand_and_fetch_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_8, "__sync_nand_and_fetch_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_16, "__sync_nand_and_fetch_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_N,
+		  "__sync_bool_compare_and_swap",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1,
+		  "__sync_bool_compare_and_swap_1",
+		  BT_FN_BOOL_VPTR_I1_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2,
+		  "__sync_bool_compare_and_swap_2",
+		  BT_FN_BOOL_VPTR_I2_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4,
+		  "__sync_bool_compare_and_swap_4",
+		  BT_FN_BOOL_VPTR_I4_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8,
+		  "__sync_bool_compare_and_swap_8",
+		  BT_FN_BOOL_VPTR_I8_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_16,
+		  "__sync_bool_compare_and_swap_16",
+		  BT_FN_BOOL_VPTR_I16_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_N,
+		  "__sync_val_compare_and_swap",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1,
+		  "__sync_val_compare_and_swap_1",
+		  BT_FN_I1_VPTR_I1_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2,
+		  "__sync_val_compare_and_swap_2",
+		  BT_FN_I2_VPTR_I2_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4,
+		  "__sync_val_compare_and_swap_4",
+		  BT_FN_I4_VPTR_I4_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8,
+		  "__sync_val_compare_and_swap_8",
+		  BT_FN_I8_VPTR_I8_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_16,
+		  "__sync_val_compare_and_swap_16",
+		  BT_FN_I16_VPTR_I16_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_N,
+		  "__sync_lock_test_and_set",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_1,
+		  "__sync_lock_test_and_set_1",
+		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_2,
+		  "__sync_lock_test_and_set_2",
+		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_4,
+		  "__sync_lock_test_and_set_4",
+		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_8,
+		  "__sync_lock_test_and_set_8",
+		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_16,
+		  "__sync_lock_test_and_set_16",
+		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_N, "__sync_lock_release",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_1, "__sync_lock_release_1",
+		  BT_FN_VOID_VPTR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_2, "__sync_lock_release_2",
+		  BT_FN_VOID_VPTR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_4, "__sync_lock_release_4",
+		  BT_FN_VOID_VPTR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_8, "__sync_lock_release_8",
+		  BT_FN_VOID_VPTR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_16, "__sync_lock_release_16",
+		  BT_FN_VOID_VPTR, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SYNCHRONIZE, "__sync_synchronize",
+		  BT_FN_VOID, ATTR_NOTHROWCALL_LEAF_LIST)
+
+/* __sync* builtins for the C++ memory model.  */
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_TEST_AND_SET, "__atomic_test_and_set",
+		  BT_FN_BOOL_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_CLEAR, "__atomic_clear", BT_FN_VOID_VPTR_INT,
+		  ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE,
+		  "__atomic_exchange",
+		  BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_N,
+		  "__atomic_exchange_n",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_1,
+		  "__atomic_exchange_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_2,
+		  "__atomic_exchange_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_4,
+		  "__atomic_exchange_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_8,
+		  "__atomic_exchange_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_16,
+		  "__atomic_exchange_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD,
+		  "__atomic_load",
+		  BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT,
+		  ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_N,
+		  "__atomic_load_n",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_1,
+		  "__atomic_load_1",
+		  BT_FN_I1_CONST_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_2,
+		  "__atomic_load_2",
+		  BT_FN_I2_CONST_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_4,
+		  "__atomic_load_4",
+		  BT_FN_I4_CONST_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_8,
+		  "__atomic_load_8",
+		  BT_FN_I8_CONST_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_16,
+		  "__atomic_load_16",
+		  BT_FN_I16_CONST_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE,
+		  "__atomic_compare_exchange",
+		  BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT,
+		  ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_N,
+		  "__atomic_compare_exchange_n",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1,
+		  "__atomic_compare_exchange_1",
+		  BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT,
+		  ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2,
+		  "__atomic_compare_exchange_2",
+		  BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT,
+		  ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4,
+		  "__atomic_compare_exchange_4",
+		  BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT,
+		  ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8,
+		  "__atomic_compare_exchange_8",
+		  BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT,
+		  ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16,
+		  "__atomic_compare_exchange_16",
+		  BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT,
+		  ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE,
+		  "__atomic_store",
+		  BT_FN_VOID_SIZE_VPTR_PTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_N,
+		  "__atomic_store_n",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_1,
+		  "__atomic_store_1",
+		  BT_FN_VOID_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_2,
+		  "__atomic_store_2",
+		  BT_FN_VOID_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_4,
+		  "__atomic_store_4",
+		  BT_FN_VOID_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_8,
+		  "__atomic_store_8",
+		  BT_FN_VOID_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_16,
+		  "__atomic_store_16",
+		  BT_FN_VOID_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_N,
+		  "__atomic_add_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_1,
+		  "__atomic_add_fetch_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_2,
+		  "__atomic_add_fetch_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_4,
+		  "__atomic_add_fetch_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_8,
+		  "__atomic_add_fetch_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_16,
+		  "__atomic_add_fetch_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_N,
+		  "__atomic_sub_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_1,
+		  "__atomic_sub_fetch_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_2,
+		  "__atomic_sub_fetch_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_4,
+		  "__atomic_sub_fetch_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_8,
+		  "__atomic_sub_fetch_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_16,
+		  "__atomic_sub_fetch_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_N,
+		  "__atomic_and_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_1,
+		  "__atomic_and_fetch_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_2,
+		  "__atomic_and_fetch_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_4,
+		  "__atomic_and_fetch_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_8,
+		  "__atomic_and_fetch_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_16,
+		  "__atomic_and_fetch_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_N,
+		  "__atomic_nand_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_1,
+		  "__atomic_nand_fetch_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_2,
+		  "__atomic_nand_fetch_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_4,
+		  "__atomic_nand_fetch_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_8,
+		  "__atomic_nand_fetch_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_16,
+		  "__atomic_nand_fetch_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_N,
+		  "__atomic_xor_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_1,
+		  "__atomic_xor_fetch_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_2,
+		  "__atomic_xor_fetch_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_4,
+		  "__atomic_xor_fetch_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_8,
+		  "__atomic_xor_fetch_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_16,
+		  "__atomic_xor_fetch_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_N,
+		  "__atomic_or_fetch",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_1,
+		  "__atomic_or_fetch_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_2,
+		  "__atomic_or_fetch_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_4,
+		  "__atomic_or_fetch_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_8,
+		  "__atomic_or_fetch_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_16,
+		  "__atomic_or_fetch_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_N,
+		  "__atomic_fetch_add",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_1,
+		  "__atomic_fetch_add_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_2,
+		  "__atomic_fetch_add_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_4,
+		  "__atomic_fetch_add_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_8,
+		  "__atomic_fetch_add_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_16,
+		  "__atomic_fetch_add_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_N,
+		  "__atomic_fetch_sub",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_1,
+		  "__atomic_fetch_sub_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_2,
+		  "__atomic_fetch_sub_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_4,
+		  "__atomic_fetch_sub_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_8,
+		  "__atomic_fetch_sub_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_16,
+		  "__atomic_fetch_sub_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_N,
+		  "__atomic_fetch_and",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_1,
+		  "__atomic_fetch_and_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_2,
+		  "__atomic_fetch_and_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_4,
+		  "__atomic_fetch_and_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_8,
+		  "__atomic_fetch_and_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_16,
+		  "__atomic_fetch_and_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_N,
+		  "__atomic_fetch_nand",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_1,
+		  "__atomic_fetch_nand_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_2,
+		  "__atomic_fetch_nand_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_4,
+		  "__atomic_fetch_nand_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_8,
+		  "__atomic_fetch_nand_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_16,
+		  "__atomic_fetch_nand_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_N,
+		  "__atomic_fetch_xor",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_1,
+		  "__atomic_fetch_xor_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_2,
+		  "__atomic_fetch_xor_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_4,
+		  "__atomic_fetch_xor_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_8,
+		  "__atomic_fetch_xor_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_16,
+		  "__atomic_fetch_xor_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_N,
+		  "__atomic_fetch_or",
+		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_1,
+		  "__atomic_fetch_or_1",
+		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_2,
+		  "__atomic_fetch_or_2",
+		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_4,
+		  "__atomic_fetch_or_4",
+		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_8,
+		  "__atomic_fetch_or_8",
+		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_16,
+		  "__atomic_fetch_or_16",
+		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ALWAYS_LOCK_FREE,
+		  "__atomic_always_lock_free",
+		  BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_IS_LOCK_FREE,
+		  "__atomic_is_lock_free",
+		  BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST)
+
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_THREAD_FENCE,
+		  "__atomic_thread_fence",
+		  BT_FN_VOID_INT, ATTR_NOTHROW_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SIGNAL_FENCE,
+		  "__atomic_signal_fence",
+		  BT_FN_VOID_INT, ATTR_NOTHROW_LEAF_LIST)
+
+/* This one is actually a function in libatomic and not expected to be
+   inlined, declared here for convenience of targets generating calls
+   to it.  */
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FERAISEEXCEPT,
+		  "__atomic_feraiseexcept",
+		  BT_FN_VOID_INT, ATTR_LEAF_LIST)
Index: libcfa/src/Makefile.am
===================================================================
--- libcfa/src/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,75 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am --
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 08:54:01 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Tue Jul 24 17:25:39 2018
+## Update Count     : 240
+###############################################################################
+
+# create object files in directory with source files
+AUTOMAKE_OPTIONS = subdir-objects
+ARFLAGS = cr
+
+include $(srcdir)/../../src/cfa.make
+
+libdir = ${CFA_LIBDIR}
+lib_LIBRARIES =  libcfa.a
+
+# AM_CFLAGS for all cfa source
+# AM_CFAFLAGS for only cfa source
+# use -no-include-stdhdr to prevent rebuild cycles
+# The built sources must not depend on the installed headers
+AM_CFAFLAGS = -quiet -in-tree -imacros prelude.c -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
+AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+CFACC = @CFACC@
+
+#----------------------------------------------------------------------------------------------------------------
+headers = fstream.hfa iostream.hfa iterator.hfa limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \
+	  containers/maybe.hfa containers/pair.hfa containers/result.hfa containers/vector.hfa
+
+# not all platforms support concurrency, add option do disable it
+headers += concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa
+
+libobjs = ${headers:.hfa=.o}
+libsrc = prelude.c startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa \
+	${headers:.hfa=.cfa}
+
+# not all platforms support concurrency, add option do disable it
+libsrc += concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa
+
+#----------------------------------------------------------------------------------------------------------------
+# add dependency to cfa-cpp so all libraries are rebuilt with new translator
+${libobjs} : ${cfalib_DATA}
+
+libcfa_a_SOURCES = ${libsrc}
+
+stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "}
+
+cfa_includedir = $(CFA_INCDIR)
+nobase_cfa_include_HEADERS = \
+	${headers}             \
+	${stdhdr}              \
+	math.hfa               \
+	gmp.hfa                \
+	time_t.hfa             \
+	bits/align.hfa         \
+	bits/containers.hfa    \
+	bits/defs.hfa          \
+	bits/debug.hfa         \
+	bits/locks.hfa         \
+	concurrency/invoke.h
+
+MOSTLYCLEANFILES = prelude.c
+
+#----------------------------------------------------------------------------------------------------------------
+maintainer-clean-local:
+	-rm -rf ${CFA_INCDIR} ${CFA_LIBDIR}
Index: libcfa/src/Makefile.in
===================================================================
--- libcfa/src/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,801 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(nobase_cfa_include_HEADERS) \
+	$(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfa_includedir)"
+LIBRARIES = $(lib_LIBRARIES)
+AR = ar
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo "  AR      " $@;
+am__v_AR_1 = 
+libcfa_a_AR = $(AR) $(ARFLAGS)
+libcfa_a_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = fstream.$(OBJEXT) iostream.$(OBJEXT) \
+	iterator.$(OBJEXT) limits.$(OBJEXT) rational.$(OBJEXT) \
+	time.$(OBJEXT) stdlib.$(OBJEXT) common.$(OBJEXT) \
+	containers/maybe.$(OBJEXT) containers/pair.$(OBJEXT) \
+	containers/result.$(OBJEXT) containers/vector.$(OBJEXT) \
+	concurrency/coroutine.$(OBJEXT) concurrency/thread.$(OBJEXT) \
+	concurrency/kernel.$(OBJEXT) concurrency/monitor.$(OBJEXT) \
+	concurrency/mutex.$(OBJEXT)
+am__objects_2 = prelude.$(OBJEXT) startup.$(OBJEXT) \
+	interpose.$(OBJEXT) bits/debug.$(OBJEXT) assert.$(OBJEXT) \
+	exception.$(OBJEXT) virtual.$(OBJEXT) heap.$(OBJEXT) \
+	$(am__objects_1) \
+	concurrency/CtxSwitch-@ARCHITECTURE@.$(OBJEXT) \
+	concurrency/alarm.$(OBJEXT) concurrency/invoke.$(OBJEXT) \
+	concurrency/preemption.$(OBJEXT)
+am_libcfa_a_OBJECTS = $(am__objects_2)
+libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/./automake/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
+AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
+am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
+am__v_CPPAS_0 = @echo "  CPPAS   " $@;
+am__v_CPPAS_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libcfa_a_SOURCES)
+DIST_SOURCES = $(libcfa_a_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+HEADERS = $(nobase_cfa_include_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/../../src/cfa.make $(srcdir)/Makefile.in \
+	$(top_srcdir)/./automake/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ARCHITECTURE = @ARCHITECTURE@
+ARCH_FLAGS = @ARCH_FLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFACC = @CFACC@
+CFACPP = @CFACPP@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_NAME = @CFA_NAME@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = @CFLAGS@
+CONFIGURATION = @CONFIGURATION@
+CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@
+CONFIG_CFLAGS = @CONFIG_CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_DIR = @DRIVER_DIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = ${CFA_LIBDIR}
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# create object files in directory with source files
+AUTOMAKE_OPTIONS = subdir-objects
+ARFLAGS = cr
+CFACOMPILE = $(CFACC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CFA = $(am__v_CFA_@AM_V@)
+am__v_CFA_ = $(am__v_CFA_@AM_DEFAULT_V@)
+am__v_CFA_0 = @echo "  CFA     " $@;
+am__v_CFA_1 = 
+lib_LIBRARIES = libcfa.a
+
+# AM_CFLAGS for all cfa source
+# AM_CFAFLAGS for only cfa source
+# use -no-include-stdhdr to prevent rebuild cycles
+# The built sources must not depend on the installed headers
+AM_CFAFLAGS = -quiet -in-tree -imacros prelude.c -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
+AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+
+#----------------------------------------------------------------------------------------------------------------
+
+# not all platforms support concurrency, add option do disable it
+headers = fstream.hfa iostream.hfa iterator.hfa limits.hfa \
+	rational.hfa time.hfa stdlib.hfa common.hfa \
+	containers/maybe.hfa containers/pair.hfa containers/result.hfa \
+	containers/vector.hfa concurrency/coroutine.hfa \
+	concurrency/thread.hfa concurrency/kernel.hfa \
+	concurrency/monitor.hfa concurrency/mutex.hfa
+libobjs = ${headers:.hfa=.o}
+
+# not all platforms support concurrency, add option do disable it
+libsrc = prelude.c startup.cfa interpose.cfa bits/debug.cfa assert.cfa \
+	exception.c virtual.c heap.cfa ${headers:.hfa=.cfa} \
+	concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \
+	concurrency/invoke.c concurrency/preemption.cfa
+libcfa_a_SOURCES = ${libsrc}
+stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "}
+cfa_includedir = $(CFA_INCDIR)
+nobase_cfa_include_HEADERS = \
+	${headers}             \
+	${stdhdr}              \
+	math.hfa               \
+	gmp.hfa                \
+	time_t.hfa             \
+	bits/align.hfa         \
+	bits/containers.hfa    \
+	bits/defs.hfa          \
+	bits/debug.hfa         \
+	bits/locks.hfa         \
+	concurrency/invoke.h
+
+MOSTLYCLEANFILES = prelude.c
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .S .c .cfa .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/../../src/cfa.make $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign src/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+$(srcdir)/../../src/cfa.make $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLIBRARIES: $(lib_LIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+	  echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
+	@$(POST_INSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  if test -f $$p; then \
+	    $(am__strip_dir) \
+	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
+	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
+	  else :; fi; \
+	done
+
+uninstall-libLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
+
+clean-libLIBRARIES:
+	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+bits/$(am__dirstamp):
+	@$(MKDIR_P) bits
+	@: > bits/$(am__dirstamp)
+bits/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) bits/$(DEPDIR)
+	@: > bits/$(DEPDIR)/$(am__dirstamp)
+bits/debug.$(OBJEXT): bits/$(am__dirstamp) \
+	bits/$(DEPDIR)/$(am__dirstamp)
+containers/$(am__dirstamp):
+	@$(MKDIR_P) containers
+	@: > containers/$(am__dirstamp)
+containers/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) containers/$(DEPDIR)
+	@: > containers/$(DEPDIR)/$(am__dirstamp)
+containers/maybe.$(OBJEXT): containers/$(am__dirstamp) \
+	containers/$(DEPDIR)/$(am__dirstamp)
+containers/pair.$(OBJEXT): containers/$(am__dirstamp) \
+	containers/$(DEPDIR)/$(am__dirstamp)
+containers/result.$(OBJEXT): containers/$(am__dirstamp) \
+	containers/$(DEPDIR)/$(am__dirstamp)
+containers/vector.$(OBJEXT): containers/$(am__dirstamp) \
+	containers/$(DEPDIR)/$(am__dirstamp)
+concurrency/$(am__dirstamp):
+	@$(MKDIR_P) concurrency
+	@: > concurrency/$(am__dirstamp)
+concurrency/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) concurrency/$(DEPDIR)
+	@: > concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/coroutine.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/thread.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/kernel.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/monitor.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/mutex.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/CtxSwitch-@ARCHITECTURE@.$(OBJEXT):  \
+	concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/alarm.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/invoke.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/preemption.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
+
+libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libcfa.a
+	$(AM_V_AR)$(libcfa_a_AR) libcfa.a $(libcfa_a_OBJECTS) $(libcfa_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libcfa.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f bits/*.$(OBJEXT)
+	-rm -f concurrency/*.$(OBJEXT)
+	-rm -f containers/*.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prelude.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/virtual.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/CtxSwitch-@ARCHITECTURE@.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/invoke.Po@am__quote@
+
+.S.o:
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $<
+
+.S.obj:
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+install-nobase_cfa_includeHEADERS: $(nobase_cfa_include_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(nobase_cfa_include_HEADERS)'; test -n "$(cfa_includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(cfa_includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)" || exit 1; \
+	fi; \
+	$(am__nobase_list) | while read dir files; do \
+	  xfiles=; for file in $$files; do \
+	    if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+	    else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+	  test -z "$$xfiles" || { \
+	    test "x$$dir" = x. || { \
+	      echo " $(MKDIR_P) '$(DESTDIR)$(cfa_includedir)/$$dir'"; \
+	      $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)/$$dir"; }; \
+	    echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(cfa_includedir)/$$dir'"; \
+	    $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(cfa_includedir)/$$dir" || exit $$?; }; \
+	done
+
+uninstall-nobase_cfa_includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(nobase_cfa_include_HEADERS)'; test -n "$(cfa_includedir)" || list=; \
+	$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+	dir='$(DESTDIR)$(cfa_includedir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) $(HEADERS)
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfa_includedir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f bits/$(DEPDIR)/$(am__dirstamp)
+	-rm -f bits/$(am__dirstamp)
+	-rm -f concurrency/$(DEPDIR)/$(am__dirstamp)
+	-rm -f concurrency/$(am__dirstamp)
+	-rm -f containers/$(DEPDIR)/$(am__dirstamp)
+	-rm -f containers/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) concurrency/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-nobase_cfa_includeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) concurrency/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+	maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLIBRARIES \
+	uninstall-nobase_cfa_includeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libLIBRARIES cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-libLIBRARIES install-man \
+	install-nobase_cfa_includeHEADERS install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic maintainer-clean-local mostlyclean \
+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-libLIBRARIES \
+	uninstall-nobase_cfa_includeHEADERS
+
+.PRECIOUS: Makefile
+
+
+.cfa.o: $(CFACC) $(CFACPP)
+	$(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+	$(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+
+#----------------------------------------------------------------------------------------------------------------
+# add dependency to cfa-cpp so all libraries are rebuilt with new translator
+${libobjs} : ${cfalib_DATA}
+
+#----------------------------------------------------------------------------------------------------------------
+maintainer-clean-local:
+	-rm -rf ${CFA_INCDIR} ${CFA_LIBDIR}
+
+# 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.
+.NOEXPORT:
Index: libcfa/src/assert.cfa
===================================================================
--- libcfa/src/assert.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/assert.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,51 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// assert.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 20 15:10:26 2017
+// Update Count     : 2
+//
+
+#include <assert.h>
+#include <stdarg.h>								// varargs
+#include <stdio.h>								// fprintf
+#include "bits/debug.hfa"
+
+extern "C" {
+	extern const char * __progname;						// global name of running executable (argv[0])
+
+	#define CFA_ASSERT_FMT "Cforall Assertion error \"%s\" from program \"%s\" in \"%s\" at line %d in file \"%s\""
+
+	// called by macro assert in assert.h
+	void __assert_fail( const char *assertion, const char *file, unsigned int line, const char *function ) {
+		__cfaabi_dbg_bits_print_safe( CFA_ASSERT_FMT ".\n", assertion, __progname, function, line, file );
+		abort();
+	}
+
+	// called by macro assertf
+	void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) {
+		__cfaabi_dbg_bits_acquire();
+		__cfaabi_dbg_bits_print_nolock( CFA_ASSERT_FMT ": ", assertion, __progname, function, line, file );
+
+		va_list args;
+		va_start( args, fmt );
+		__cfaabi_dbg_bits_print_vararg( fmt, args );
+		va_end( args );
+
+		__cfaabi_dbg_bits_print_nolock( "\n" );
+		__cfaabi_dbg_bits_release();
+		abort();
+	}
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/bits/algorithm.hfa
===================================================================
--- libcfa/src/bits/algorithm.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/bits/algorithm.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,191 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// bits/algorithms.hfa -- Builtins for exception handling.
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Oct 30 13:37:34 2017
+// Last Modified By : --
+// Last Modified On : --
+// Update Count     : 0
+//
+
+#pragma once
+
+#ifdef SAFE_SORT
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sort2( T * arr );
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sort3( T * arr );
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sort4( T * arr );
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sort5( T * arr );
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sort6( T * arr );
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sortN( T * arr, size_t dim );
+
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
+static inline void __libcfa_small_sort( T * arr, size_t dim ) {
+	switch( dim ) {
+		case 1 : return;
+		case 2 : __libcfa_small_sort2( arr ); return;
+		case 3 : __libcfa_small_sort3( arr ); return;
+		case 4 : __libcfa_small_sort4( arr ); return;
+		case 5 : __libcfa_small_sort5( arr ); return;
+		case 6 : __libcfa_small_sort6( arr ); return;
+		default: __libcfa_small_sortN( arr, dim ); return;
+	}
+}
+
+#define min(x, y) (y > x ? x : y)
+#define max(x, y) (y > x ? y : x)
+#define SWAP(x,y) { T a = min(arr[x], arr[y]); T b = max(arr[x], arr[y]); arr[x] = a; arr[y] = b;}
+
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
+static inline void __libcfa_small_sort2( T * arr ) {
+	SWAP(0, 1);
+}
+
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
+static inline void __libcfa_small_sort3( T * arr ) {
+	SWAP(1, 2);
+	SWAP(0, 2);
+	SWAP(0, 1);
+}
+
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
+static inline void __libcfa_small_sort4( T * arr ) {
+	SWAP(0, 1);
+	SWAP(2, 3);
+	SWAP(0, 2);
+	SWAP(1, 3);
+	SWAP(1, 2);
+}
+
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
+static inline void __libcfa_small_sort5( T * arr ) {
+	SWAP(0, 1);
+	SWAP(3, 4);
+	SWAP(2, 4);
+	SWAP(2, 3);
+	SWAP(0, 3);
+	SWAP(0, 2);
+	SWAP(1, 4);
+	SWAP(1, 3);
+	SWAP(1, 2);
+}
+
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
+static inline void __libcfa_small_sort6( T * arr ) {
+	SWAP(1, 2);
+	SWAP(4, 5);
+	SWAP(0, 2);
+	SWAP(3, 5);
+	SWAP(0, 1);
+	SWAP(3, 4);
+	SWAP(1, 4);
+	SWAP(0, 3);
+	SWAP(2, 5);
+	SWAP(1, 3);
+	SWAP(2, 4);
+	SWAP(2, 3);
+}
+
+forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
+static inline void __libcfa_small_sortN( T * arr, size_t dim ) {
+	int i, j;
+	for (i = 1; i < dim; i++) {
+		T tmp = arr[i];
+		for (j = i; j >= 1 && tmp < arr[j-1]; j--) {
+			arr[j] = arr[j-1];
+		}
+		arr[j] = tmp;
+	}
+}
+
+#else
+
+static inline void __libcfa_small_sort2( void* * arr );
+static inline void __libcfa_small_sort3( void* * arr );
+static inline void __libcfa_small_sort4( void* * arr );
+static inline void __libcfa_small_sort5( void* * arr );
+static inline void __libcfa_small_sort6( void* * arr );
+static inline void __libcfa_small_sortN( void* * arr, size_t dim );
+
+forall( dtype T )
+static inline void __libcfa_small_sort( T* * arr, size_t dim ) {
+	switch( dim ) {
+		case 1 : return;
+		case 2 : __libcfa_small_sort2( (void **) arr ); return;
+		case 3 : __libcfa_small_sort3( (void **) arr ); return;
+		case 4 : __libcfa_small_sort4( (void **) arr ); return;
+		case 5 : __libcfa_small_sort5( (void **) arr ); return;
+		case 6 : __libcfa_small_sort6( (void **) arr ); return;
+		default: __libcfa_small_sortN( (void **) arr, dim ); return;
+	}
+}
+
+#define min(x, y) (y > x ? x : y)
+#define max(x, y) (y > x ? y : x)
+#define SWAP(x,y) { void* a = min(arr[x], arr[y]); void* b = max(arr[x], arr[y]); arr[x] = a; arr[y] = b;}
+
+static inline void __libcfa_small_sort2( void* * arr ) {
+	SWAP(0, 1);
+}
+
+static inline void __libcfa_small_sort3( void* * arr ) {
+	SWAP(1, 2);
+	SWAP(0, 2);
+	SWAP(0, 1);
+}
+
+static inline void __libcfa_small_sort4( void* * arr ) {
+	SWAP(0, 1);
+	SWAP(2, 3);
+	SWAP(0, 2);
+	SWAP(1, 3);
+	SWAP(1, 2);
+}
+
+static inline void __libcfa_small_sort5( void* * arr ) {
+	SWAP(0, 1);
+	SWAP(3, 4);
+	SWAP(2, 4);
+	SWAP(2, 3);
+	SWAP(0, 3);
+	SWAP(0, 2);
+	SWAP(1, 4);
+	SWAP(1, 3);
+	SWAP(1, 2);
+}
+
+static inline void __libcfa_small_sort6( void* * arr ) {
+	SWAP(1, 2);
+	SWAP(4, 5);
+	SWAP(0, 2);
+	SWAP(3, 5);
+	SWAP(0, 1);
+	SWAP(3, 4);
+	SWAP(1, 4);
+	SWAP(0, 3);
+	SWAP(2, 5);
+	SWAP(1, 3);
+	SWAP(2, 4);
+	SWAP(2, 3);
+}
+
+static inline void __libcfa_small_sortN( void* * arr, size_t dim ) {
+	int i, j;
+	for (i = 1; i < dim; i++) {
+		void* tmp = arr[i];
+		for (j = i; j >= 1 && tmp < arr[j-1]; j--) {
+			arr[j] = arr[j-1];
+		}
+		arr[j] = tmp;
+	}
+}
+
+#endif
+
+#undef SWAP
+#undef min
+#undef max
Index: libcfa/src/bits/align.hfa
===================================================================
--- libcfa/src/bits/align.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/bits/align.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,62 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// align.hfa --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jul 21 23:05:35 2017
+// Update Count     : 2
+//
+// This  library is free  software; you  can redistribute  it and/or  modify it
+// under the terms of the GNU Lesser General Public License as published by the
+// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
+// option) any later version.
+//
+// This library is distributed in the  hope that it will be useful, but WITHOUT
+// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+// for more details.
+//
+// You should  have received a  copy of the  GNU Lesser General  Public License
+// along  with this library.
+//
+
+#pragma once
+
+#include <assert.h>
+#include <stdbool.h>
+
+// Minimum size used to align memory boundaries for memory allocations.
+#define libAlign() (sizeof(double))
+
+// Check for power of 2
+static inline bool libPow2( unsigned long int value ) {
+    // clears all bits below value, rounding value down to the next lower multiple of value
+    return (value & (value - 1ul)) == 0ul;
+} // libPow2
+
+
+// Returns value aligned at the floor of align.
+static inline unsigned long int libFloor( unsigned long int value, unsigned long int align ) {
+    assert( libPow2( align ) );
+    // clears all bits above or equal to align, getting (value % align), the phase of value with regards to align
+    return value & -align;
+} // libFloor
+
+
+// Returns value aligned at the ceiling of align.
+
+static inline unsigned long int libCeiling( unsigned long int value, unsigned long int align ) {
+    assert( libPow2( align ) );
+    // "negate, round down, negate" is the same as round up
+    return -libFloor( -value, align );
+} // uCeiling
+
+// Local Variables: //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/bits/containers.hfa
===================================================================
--- libcfa/src/bits/containers.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/bits/containers.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,282 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// bits/containers.hfa -- Intrusive generic containers.hfa
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Oct 31 16:38:50 2017
+// Last Modified By : --
+// Last Modified On : --
+// Update Count     : 0
+
+#pragma once
+
+#include "bits/align.hfa"
+#include "bits/defs.hfa"
+
+//-----------------------------------------------------------------------------
+// Array
+//-----------------------------------------------------------------------------
+
+#ifdef __cforall
+	forall(dtype T)
+#else
+	#define T void
+#endif
+struct __small_array {
+	T *           data;
+	__lock_size_t size;
+};
+#undef T
+
+#ifdef __cforall
+	#define __small_array_t(T) __small_array(T)
+#else
+	#define __small_array_t(T) struct __small_array
+#endif
+
+#ifdef __cforall
+	// forall(otype T | sized(T))
+	// static inline void ?{}(__small_array(T) & this) {}
+
+	forall(dtype T | sized(T))
+	static inline T& ?[?]( __small_array(T) & this, __lock_size_t idx) {
+		return ((typeof(this.data))this.data)[idx];
+	}
+
+	forall(dtype T | sized(T))
+	static inline T& ?[?]( const __small_array(T) & this, __lock_size_t idx) {
+		return ((typeof(this.data))this.data)[idx];
+	}
+
+	forall(dtype T | sized(T))
+	static inline T* begin( const __small_array(T) & this ) {
+		return ((typeof(this.data))this.data);
+	}
+
+	forall(dtype T | sized(T))
+	static inline T* end( const __small_array(T) & this ) {
+		return ((typeof(this.data))this.data) + this.size;
+	}
+#endif
+
+//-----------------------------------------------------------------------------
+// Node Base
+//-----------------------------------------------------------------------------
+
+#ifdef __cforall
+	trait is_node(dtype T) {
+		T*& get_next( T& );
+	};
+#endif
+
+//-----------------------------------------------------------------------------
+// Stack
+//-----------------------------------------------------------------------------
+#ifdef __cforall
+	forall(dtype TYPE | is_node(TYPE))
+	#define T TYPE
+#else
+	#define T void
+#endif
+struct __stack {
+	T * top;
+};
+#undef T
+
+#ifdef __cforall
+#define __stack_t(T) __stack(T)
+#else
+#define __stack_t(T) struct __stack
+#endif
+
+#ifdef __cforall
+	forall(dtype T | is_node(T))
+	static inline void ?{}( __stack(T) & this ) {
+		(this.top){ NULL };
+	}
+
+	forall(dtype T | is_node(T) | sized(T))
+	static inline void push( __stack(T) & this, T * val ) {
+		verify( !get_next( *val ) );
+		get_next( *val ) = this.top;
+		this.top = val;
+	}
+
+	forall(dtype T | is_node(T) | sized(T))
+	static inline T * pop( __stack(T) & this ) {
+		T * top = this.top;
+		if( top ) {
+			this.top = get_next( *top );
+			get_next( *top ) = NULL;
+		}
+		return top;
+	}
+#endif
+
+//-----------------------------------------------------------------------------
+// Queue
+//-----------------------------------------------------------------------------
+#ifdef __cforall
+	forall(dtype TYPE | is_node(TYPE))
+	#define T TYPE
+#else
+	#define T void
+#endif
+struct __queue {
+	T * head;
+	T ** tail;
+};
+#undef T
+
+#ifdef __cforall
+#define __queue_t(T) __queue(T)
+#else
+#define __queue_t(T) struct __queue
+#endif
+
+#ifdef __cforall
+
+	forall(dtype T | is_node(T))
+	static inline void ?{}( __queue(T) & this ) with( this ) {
+		head{ NULL };
+		tail{ &head };
+	}
+
+	forall(dtype T | is_node(T) | sized(T))
+	static inline void append( __queue(T) & this, T * val ) with( this ) {
+		verify(tail != NULL);
+		*tail = val;
+		tail = &get_next( *val );
+	}
+
+	forall(dtype T | is_node(T) | sized(T))
+	static inline T * pop_head( __queue(T) & this ) {
+		T * head = this.head;
+		if( head ) {
+			this.head = get_next( *head );
+			if( !get_next( *head ) ) {
+				this.tail = &this.head;
+			}
+			get_next( *head ) = NULL;
+		}
+		return head;
+	}
+
+	forall(dtype T | is_node(T) | sized(T))
+	static inline T * remove( __queue(T) & this, T ** it ) with( this ) {
+		T * val = *it;
+		verify( val );
+
+		(*it) = get_next( *val );
+
+		if( tail == &get_next( *val ) ) {
+			tail = it;
+		}
+
+		get_next( *val ) = NULL;
+
+		verify( (head == NULL) == (&head == tail) );
+		verify( *tail == NULL );
+		return val;
+	}
+
+	forall(dtype T | is_node(T))
+	static inline bool ?!=?( __queue(T) & this, zero_t zero ) {
+		return this.head != 0;
+	}
+#endif
+
+
+//-----------------------------------------------------------------------------
+// Doubly Linked List
+//-----------------------------------------------------------------------------
+#ifdef __cforall
+	forall(dtype TYPE | sized(TYPE))
+	#define T TYPE
+	#define __getter_t * [T * & next, T * & prev] ( T & )
+#else
+	typedef void (*__generit_c_getter_t)();
+	#define T void
+	#define __getter_t __generit_c_getter_t
+#endif
+struct __dllist {
+	T * head;
+	__getter_t __get;
+};
+#undef T
+#undef __getter_t
+
+#ifdef __cforall
+#define __dllist_t(T) __dllist(T)
+#else
+#define __dllist_t(T) struct __dllist
+#endif
+
+#ifdef __cforall
+
+	forall(dtype T | sized(T))
+	static inline [void] ?{}( __dllist(T) & this, * [T * & next, T * & prev] ( T & ) __get ) {
+		this.head{ NULL };
+		this.__get = __get;
+	}
+
+	#define next 0
+	#define prev 1
+	forall(dtype T | sized(T))
+	static inline void push_front( __dllist(T) & this, T & node ) with( this ) {
+		verify(__get);
+		if ( head ) {
+			__get( node ).next = head;
+			__get( node ).prev = __get( *head ).prev;
+			// inserted node must be consistent before it is seen
+			// prevent code movement across barrier
+			asm( "" : : : "memory" );
+			__get( *head ).prev = &node;
+			T & _prev = *__get( node ).prev;
+			__get( _prev ).next = &node;
+		}
+		else {
+			__get( node ).next = &node;
+			__get( node ).prev = &node;
+		}
+
+		// prevent code movement across barrier
+		asm( "" : : : "memory" );
+		head = &node;
+	}
+
+	forall(dtype T | sized(T))
+	static inline void remove( __dllist(T) & this, T & node ) with( this ) {
+		verify(__get);
+		if ( &node == head ) {
+			if ( __get( *head ).next == head ) {
+				head = NULL;
+			}
+			else {
+				head = __get( *head ).next;
+			}
+		}
+		__get( *__get( node ).next ).prev = __get( node ).prev;
+		__get( *__get( node ).prev ).next = __get( node ).next;
+		__get( node ).next = NULL;
+		__get( node ).prev = NULL;
+	}
+
+	forall(dtype T | sized(T))
+	static inline bool ?!=?( __dllist(T) & this, zero_t zero ) {
+		return this.head != 0;
+	}
+	#undef next
+	#undef prev
+#endif
+
+//-----------------------------------------------------------------------------
+// Tools
+//-----------------------------------------------------------------------------
+#ifdef __cforall
+
+#endif
Index: libcfa/src/bits/debug.cfa
===================================================================
--- libcfa/src/bits/debug.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/bits/debug.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,88 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// debug.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Thu Mar 30 12:30:01 2017
+// Last Modified By :
+// Last Modified On :
+// Update Count     : 1
+//
+
+extern "C" {
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <stdarg.h>
+#include <unistd.h>
+}
+
+enum { buffer_size = 512 };
+static char buffer[ buffer_size ];
+
+extern "C" {
+
+	void __cfaabi_dbg_bits_write( const char *in_buffer, int len ) {
+		// ensure all data is written
+		for ( int count = 0, retcode; count < len; count += retcode ) {
+			in_buffer += count;
+
+			for ( ;; ) {
+				retcode = write( STDERR_FILENO, in_buffer, len - count );
+
+				// not a timer interrupt ?
+				if ( retcode != -1 || errno != EINTR ) break;
+			}
+
+			if ( retcode == -1 ) _exit( EXIT_FAILURE );
+		}
+	}
+
+	void __cfaabi_dbg_bits_acquire() __attribute__((__weak__)) {}
+	void __cfaabi_dbg_bits_release() __attribute__((__weak__)) {}
+
+	void __cfaabi_dbg_bits_print_safe  ( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) )) {
+		va_list args;
+
+		va_start( args, fmt );
+		__cfaabi_dbg_bits_acquire();
+
+		int len = vsnprintf( buffer, buffer_size, fmt, args );
+		__cfaabi_dbg_bits_write( buffer, len );
+
+		__cfaabi_dbg_bits_release();
+		va_end( args );
+	}
+
+	void __cfaabi_dbg_bits_print_nolock( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) )) {
+		va_list args;
+
+		va_start( args, fmt );
+
+		int len = vsnprintf( buffer, buffer_size, fmt, args );
+		__cfaabi_dbg_bits_write( buffer, len );
+
+		va_end( args );
+	}
+
+	void __cfaabi_dbg_bits_print_vararg( const char fmt[], va_list args ) {
+		int len = vsnprintf( buffer, buffer_size, fmt, args );
+		__cfaabi_dbg_bits_write( buffer, len );
+	}
+
+	void __cfaabi_dbg_bits_print_buffer( char in_buffer[], int in_buffer_size, const char fmt[], ... ) __attribute__(( format(printf, 3, 4) )) {
+		va_list args;
+
+		va_start( args, fmt );
+
+		int len = vsnprintf( in_buffer, in_buffer_size, fmt, args );
+		__cfaabi_dbg_bits_write( in_buffer, len );
+
+		va_end( args );
+	}
+}
Index: libcfa/src/bits/debug.hfa
===================================================================
--- libcfa/src/bits/debug.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/bits/debug.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,74 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// debug.hfa --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Feb  8 12:35:19 2018
+// Update Count     : 2
+//
+
+#pragma once
+
+#ifdef __CFA_DEBUG__
+	#define __cfaabi_dbg_debug_do(...) __VA_ARGS__
+	#define __cfaabi_dbg_no_debug_do(...)
+	#define __cfaabi_dbg_ctx __PRETTY_FUNCTION__
+	#define __cfaabi_dbg_ctx2 , __PRETTY_FUNCTION__
+	#define __cfaabi_dbg_ctx_param const char * caller
+	#define __cfaabi_dbg_ctx_param2 , const char * caller
+#else
+	#define __cfaabi_dbg_debug_do(...)
+	#define __cfaabi_dbg_no_debug_do(...) __VA_ARGS__
+	#define __cfaabi_dbg_ctx
+	#define __cfaabi_dbg_ctx2
+	#define __cfaabi_dbg_ctx_param
+	#define __cfaabi_dbg_ctx_param2
+#endif
+
+#ifdef __cforall
+extern "C" {
+#endif
+	#include <stdarg.h>
+	#include <stdio.h>
+
+      extern void __cfaabi_dbg_bits_write( const char *buffer, int len );
+      extern void __cfaabi_dbg_bits_acquire();
+      extern void __cfaabi_dbg_bits_release();
+      extern void __cfaabi_dbg_bits_print_safe  ( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) ));
+      extern void __cfaabi_dbg_bits_print_nolock( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) ));
+      extern void __cfaabi_dbg_bits_print_vararg( const char fmt[], va_list arg );
+      extern void __cfaabi_dbg_bits_print_buffer( char buffer[], int buffer_size, const char fmt[], ... ) __attribute__(( format(printf, 3, 4) ));
+#ifdef __cforall
+}
+#endif
+
+#ifdef __CFA_DEBUG_PRINT__
+	#define __cfaabi_dbg_write( buffer, len )         __cfaabi_dbg_bits_write( buffer, len )
+	#define __cfaabi_dbg_acquire()                    __cfaabi_dbg_bits_acquire()
+	#define __cfaabi_dbg_release()                    __cfaabi_dbg_bits_release()
+	#define __cfaabi_dbg_print_safe(...)              __cfaabi_dbg_bits_print_safe   (__VA_ARGS__)
+	#define __cfaabi_dbg_print_nolock(...)            __cfaabi_dbg_bits_print_nolock (__VA_ARGS__)
+	#define __cfaabi_dbg_print_buffer(...)            __cfaabi_dbg_bits_print_buffer (__VA_ARGS__)
+	#define __cfaabi_dbg_print_buffer_decl(...)       char __dbg_text[256]; int __dbg_len = snprintf( __dbg_text, 256, __VA_ARGS__ ); __cfaabi_dbg_bits_write( __dbg_text, __dbg_len );
+	#define __cfaabi_dbg_print_buffer_local(...)      __dbg_len = snprintf( __dbg_text, 256, __VA_ARGS__ ); __cfaabi_dbg_bits_write( __dbg_text, __dbg_len );
+#else
+	#define __cfaabi_dbg_write(...)               ((void)0)
+	#define __cfaabi_dbg_acquire()                ((void)0)
+	#define __cfaabi_dbg_release()                ((void)0)
+	#define __cfaabi_dbg_print_safe(...)          ((void)0)
+	#define __cfaabi_dbg_print_nolock(...)        ((void)0)
+	#define __cfaabi_dbg_print_buffer(...)        ((void)0)
+	#define __cfaabi_dbg_print_buffer_decl(...)   ((void)0)
+	#define __cfaabi_dbg_print_buffer_local(...)  ((void)0)
+#endif
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/bits/defs.hfa
===================================================================
--- libcfa/src/bits/defs.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/bits/defs.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,42 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// defs.hfa --
+//
+// Author           : Thierry Delisle
+// Created On       : Thu Nov  9 13:24:10 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Feb  8 16:22:41 2018
+// Update Count     : 8
+//
+
+#pragma once
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#define likely(x)   __builtin_expect(!!(x), 1)
+#define unlikely(x) __builtin_expect(!!(x), 0)
+#define thread_local _Thread_local
+
+typedef void (*fptr_t)();
+typedef int_fast16_t __lock_size_t;
+
+#ifdef __cforall
+#define __cfa_anonymous_object(x) inline struct x
+#else
+#define __cfa_anonymous_object(x) x __cfa_anonymous_object
+#endif
+
+#ifdef __cforall
+void abort ( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
+extern "C" {
+#endif
+void __cabi_abort( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
+#ifdef __cforall
+}
+#endif
Index: libcfa/src/bits/locks.hfa
===================================================================
--- libcfa/src/bits/locks.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/bits/locks.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,164 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// bits/locks.hfa -- Fast internal locks.
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Oct 31 15:14:38 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 11 15:42:24 2018
+// Update Count     : 10
+//
+
+#pragma once
+
+#include "bits/debug.hfa"
+#include "bits/defs.hfa"
+#include <assert.h>
+
+#ifdef __cforall
+	extern "C" {
+		#include <pthread.h>
+	}
+#endif
+
+// pause to prevent excess processor bus usage
+#if defined( __sparc )
+	#define Pause() __asm__ __volatile__ ( "rd %ccr,%g0" )
+#elif defined( __i386 ) || defined( __x86_64 )
+	#define Pause() __asm__ __volatile__ ( "pause" : : : )
+#elif defined( __ARM_ARCH )
+	#define Pause() __asm__ __volatile__ ( "nop" : : : )
+#else
+	#error unsupported architecture
+#endif
+
+#if defined( __i386 ) || defined( __x86_64 ) || defined( __ARM_ARCH )
+	// Intel recommendation
+	#define __ALIGN__ __attribute__(( aligned (128) ))
+#elif defined( __sparc )
+	#define __ALIGN__ CALIGN
+#else
+	#error unsupported architecture
+#endif
+
+struct __spinlock_t {
+	// Wrap in struct to prevent false sharing with debug info
+	struct {
+		// Align lock on 128-bit boundary
+		__ALIGN__ volatile bool lock;
+	};
+	#ifdef __CFA_DEBUG__
+		// previous function to acquire the lock
+		const char * prev_name;
+		// previous thread to acquire the lock
+		void* prev_thrd;
+	#endif
+} __ALIGN__;
+
+#ifdef __cforall
+	extern "C" {
+		extern void disable_interrupts();
+		extern void enable_interrupts_noPoll();
+
+		#ifdef __CFA_DEBUG__
+			void __cfaabi_dbg_record(__spinlock_t & this, const char * prev_name);
+		#else
+			#define __cfaabi_dbg_record(x, y)
+		#endif
+	}
+
+	extern void yield( unsigned int );
+
+	static inline void ?{}( __spinlock_t & this ) {
+		this.lock = 0;
+	}
+
+	// Lock the spinlock, return false if already acquired
+	static inline bool try_lock  ( __spinlock_t & this __cfaabi_dbg_ctx_param2 ) {
+		bool result = (this.lock == 0) && (__atomic_test_and_set( &this.lock, __ATOMIC_ACQUIRE ) == 0);
+		if( result ) {
+			disable_interrupts();
+			__cfaabi_dbg_record( this, caller );
+		}
+		return result;
+	}
+
+	// Lock the spinlock, spin if already acquired
+	static inline void lock( __spinlock_t & this __cfaabi_dbg_ctx_param2 ) {
+		#ifndef NOEXPBACK
+			enum { SPIN_START = 4, SPIN_END = 64 * 1024, };
+			unsigned int spin = SPIN_START;
+		#endif
+
+		for ( unsigned int i = 1;; i += 1 ) {
+			if ( (this.lock == 0) && (__atomic_test_and_set( &this.lock, __ATOMIC_ACQUIRE ) == 0) ) break;
+			#ifndef NOEXPBACK
+				// exponential spin
+				for ( volatile unsigned int s = 0; s < spin; s += 1 ) Pause();
+
+				// slowly increase by powers of 2
+				if ( i % 64 == 0 ) spin += spin;
+
+				// prevent overflow
+				if ( spin > SPIN_END ) spin = SPIN_START;
+			#else
+				Pause();
+			#endif
+		}
+		disable_interrupts();
+		__cfaabi_dbg_record( this, caller );
+	}
+
+	static inline void unlock( __spinlock_t & this ) {
+		enable_interrupts_noPoll();
+		__atomic_clear( &this.lock, __ATOMIC_RELEASE );
+	}
+
+
+	#ifdef __CFA_WITH_VERIFY__
+		extern bool __cfaabi_dbg_in_kernel();
+	#endif
+
+	struct __bin_sem_t {
+		bool     		signaled;
+		pthread_mutex_t 	lock;
+		pthread_cond_t  	cond;
+	};
+
+	static inline void ?{}(__bin_sem_t & this) with( this ) {
+		signaled = false;
+		pthread_mutex_init(&lock, NULL);
+		pthread_cond_init (&cond, NULL);
+	}
+
+	static inline void ^?{}(__bin_sem_t & this) with( this ) {
+		pthread_mutex_destroy(&lock);
+		pthread_cond_destroy (&cond);
+	}
+
+	static inline void wait(__bin_sem_t & this) with( this ) {
+		verify(__cfaabi_dbg_in_kernel());
+		pthread_mutex_lock(&lock);
+			if(!signaled) {   // this must be a loop, not if!
+				pthread_cond_wait(&cond, &lock);
+			}
+			signaled = false;
+		pthread_mutex_unlock(&lock);
+	}
+
+	static inline void post(__bin_sem_t & this) with( this ) {
+		verify(__cfaabi_dbg_in_kernel());
+
+		pthread_mutex_lock(&lock);
+			bool needs_signal = !signaled;
+			signaled = true;
+		pthread_mutex_unlock(&lock);
+
+		if (needs_signal)
+			pthread_cond_signal(&cond);
+	}
+#endif
Index: libcfa/src/bits/signal.hfa
===================================================================
--- libcfa/src/bits/signal.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/bits/signal.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,65 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// bits/signal.hfa -- Helper functions and defines to use signals
+//
+// Author           : Thierry Delisle
+// Created On       : Thu Jan 25 16:06:29 2018
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+#pragma once
+
+#include "bits/debug.hfa"
+#include "bits/defs.hfa"
+
+extern "C" {
+#include <errno.h>
+#define __USE_GNU
+#include <signal.h>
+#undef __USE_GNU
+#include <stdlib.h>
+#include <string.h>
+}
+
+// Short hands for signal context information
+#define __CFA_SIGCXT__ ucontext_t *
+#define __CFA_SIGPARMS__ __attribute__((unused)) int sig, __attribute__((unused)) siginfo_t *sfp, __attribute__((unused)) __CFA_SIGCXT__ cxt
+
+// Sigaction wrapper : register an signal handler
+static void __cfaabi_sigaction( int sig, void (*handler)(__CFA_SIGPARMS__), int flags ) {
+	struct sigaction act;
+
+	act.sa_sigaction = (void (*)(int, siginfo_t *, void *))handler;
+	act.sa_flags = flags;
+
+	if ( sigaction( sig, &act, NULL ) == -1 ) {
+		__cfaabi_dbg_print_buffer_decl(
+			" __cfaabi_sigaction( sig:%d, handler:%p, flags:%d ), problem installing signal handler, error(%d) %s.\n",
+			sig, handler, flags, errno, strerror( errno )
+		);
+		_exit( EXIT_FAILURE );
+	}
+}
+
+// Sigaction wrapper : restore default handler
+static void __cfaabi_sigdefault( int sig ) {
+	struct sigaction act;
+
+	act.sa_handler = SIG_DFL;
+	act.sa_flags = 0;
+	sigemptyset( &act.sa_mask );
+
+	if ( sigaction( sig, &act, NULL ) == -1 ) {
+		__cfaabi_dbg_print_buffer_decl(
+			" __cfaabi_sigdefault( sig:%d ), problem reseting signal handler, error(%d) %s.\n",
+			sig, errno, strerror( errno )
+		);
+		_exit( EXIT_FAILURE );
+	}
+}
Index: libcfa/src/clock.hfa
===================================================================
--- libcfa/src/clock.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/clock.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,96 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// clock --
+//
+// Author           : Peter A. Buhr
+// Created On       : Thu Apr 12 14:36:06 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Jul  2 21:40:01 2018
+// Update Count     : 7
+//
+
+#include <time.hfa>
+
+
+//######################### C time #########################
+
+static inline char * ctime( time_t tp ) { char * buf = ctime( &tp ); buf[24] = '\0'; return buf; }
+static inline char * ctime_r( time_t tp, char * buf ) { ctime_r( &tp, buf ); buf[24] = '\0'; return buf; }
+static inline tm * gmtime( time_t tp ) { return gmtime( &tp ); }
+static inline tm * gmtime_r( time_t tp, tm * result ) { return gmtime_r( &tp, result ); }
+static inline tm * localtime( time_t tp ) { return localtime( &tp ); }
+static inline tm * localtime_r( time_t tp, tm * result ) { return localtime_r( &tp, result ); }
+
+
+//######################### Clock #########################
+
+struct Clock {											// private
+	Duration offset;									// for virtual clock: contains offset from real-time
+	int clocktype;										// implementation only -1 (virtual), CLOCK_REALTIME
+};
+
+static inline {
+	void resetClock( Clock & clk ) with( clk ) {
+		clocktype = CLOCK_REALTIME_COARSE;
+	} // Clock::resetClock
+
+	void resetClock( Clock & clk, Duration adj ) with( clk ) {
+		clocktype = -1;
+		offset = adj + __timezone`s;					// timezone (global) is (UTC - local time) in seconds
+	} // resetClock
+
+	void ?{}( Clock & clk ) { resetClock( clk ); }
+	void ?{}( Clock & clk, Duration adj ) { resetClock( clk, adj ); }
+
+	Duration getResNsec() {
+		struct timespec res;
+		clock_getres( CLOCK_REALTIME, &res );
+		return ((int64_t)res.tv_sec * TIMEGRAN + res.tv_nsec)`ns;
+	} // getRes
+
+	Duration getRes() {
+		struct timespec res;
+		clock_getres( CLOCK_REALTIME_COARSE, &res );
+		return ((int64_t)res.tv_sec * TIMEGRAN + res.tv_nsec)`ns;
+	} // getRes
+
+	Time getTimeNsec() {								// with nanoseconds
+		timespec curr;
+		clock_gettime( CLOCK_REALTIME, &curr );
+		return (Time){ curr };
+	} // getTime
+
+	Time getTime() {									// without nanoseconds
+		timespec curr;
+		clock_gettime( CLOCK_REALTIME_COARSE, &curr );
+		curr.tv_nsec = 0;
+		return (Time){ curr };
+	} // getTime
+
+	Time getTime( Clock & clk ) with( clk ) {
+		return getTime() + offset;
+	} // getTime
+
+	Time ?()( Clock & clk ) with( clk ) {				// alternative syntax
+		return getTime() + offset;
+	} // getTime
+
+	timeval getTime( Clock & clk ) {
+		return (timeval){ clk() };
+	} // getTime
+
+	tm getTime( Clock & clk ) with( clk ) {
+		tm ret;
+		localtime_r( getTime( clk ).tv_sec, &ret );
+		return ret;
+	} // getTime
+} // distribution
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/common.cfa
===================================================================
--- libcfa/src/common.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/common.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,31 @@
+//                               -*- Mode: C -*-
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// common.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Thu Jul 12 08:02:29 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 12 08:38:47 2018
+// Update Count     : 3
+//
+
+#include "common.hfa"
+#include <stdlib.h>					// div_t, *div
+
+//---------------------------------------
+
+[ int, int ] div( int num, int denom ) { div_t qr = div( num, denom ); return [ qr.quot, qr.rem ]; }
+[ long int, long int ] div( long int num, long int denom ) { ldiv_t qr = ldiv( num, denom ); return [ qr.quot, qr.rem ]; }
+[ long long int, long long int ] div( long long int num, long long int denom ) { lldiv_t qr = lldiv( num, denom ); return [ qr.quot, qr.rem ]; }
+forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
+[ T, T ] div( T num, T denom ) { return [ num / denom, num % denom ]; }
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/common.hfa
===================================================================
--- libcfa/src/common.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/common.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,85 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// common -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Jul 11 17:54:36 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 12 08:02:18 2018
+// Update Count     : 5
+// 
+
+#pragma once
+
+//---------------------------------------
+
+[ int, int ] div( int num, int denom );
+[ long int, long int ] div( long int num, long int denom );
+[ long long int, long long int ] div( long long int num, long long int denom );
+forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
+[ T, T ] div( T num, T demon );
+
+//---------------------------------------
+
+extern "C" {
+	int abs( int );										// stdlib.h
+	long int labs( long int );
+	long long int llabs( long long int );
+} // extern "C"
+
+static inline {
+	unsigned char abs( signed char v ) { return abs( (int)v ); }
+	// use default C routine for int
+	unsigned long int abs( long int v ) { return labs( v ); }
+	unsigned long long int abs( long long int v ) { return llabs( v ); }
+} // distribution
+
+extern "C" {
+	double fabs( double );								// math.h
+	float fabsf( float );
+	long double fabsl( long double );
+} // extern "C"
+static inline {
+	float abs( float x ) { return fabsf( x ); }
+	double abs( double x ) { return fabs( x ); }
+	long double abs( long double x ) { return fabsl( x ); }
+} // distribution
+
+extern "C" {
+	double cabs( double _Complex );						// complex.h
+	float cabsf( float _Complex );
+	long double cabsl( long double _Complex );
+} // extern "C"
+static inline {
+	float abs( float _Complex x ) { return cabsf( x ); }
+	double abs( double _Complex x ) { return cabs( x ); }
+	long double abs( long double _Complex x ) { return cabsl( x ); }
+} // distribution
+
+forall( otype T | { void ?{}( T &, zero_t ); int ?<?( T, T ); T -?( T ); } )
+T abs( T );
+
+//---------------------------------------
+
+static inline {
+	forall( otype T | { int ?<?( T, T ); } )
+	T min( T t1, T t2 ) { return t1 < t2 ? t1 : t2; }
+
+	forall( otype T | { int ?>?( T, T ); } )
+	T max( T t1, T t2 ) { return t1 > t2 ? t1 : t2; }
+
+	forall( otype T | { T min( T, T ); T max( T, T ); } )
+	T clamp( T value, T min_val, T max_val ) { return max( min_val, min( value, max_val ) ); }
+
+	forall( otype T )
+	void swap( T & v1, T & v2 ) { T temp = v1; v1 = v2; v2 = temp; }
+} // distribution
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/CtxSwitch-armv7l.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-armv7l.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/CtxSwitch-armv7l.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,62 @@
+	@ 32 bit ARM context switch
+	@ This function assumes that r9 has no special meaning on the platform it's
+	@ being built on.
+	@ If r9 is special, uncomment the following line and it will be left alone
+
+	@ #define R9_SPECIAL
+
+	#define PTR_BYTE        4
+	#define SP_OFFSET       ( 0 * PTR_BYTE )
+	#define FP_OFFSET       ( 1 * PTR_BYTE )
+	#define PC_OFFSET       ( 2 * PTR_BYTE )
+
+	.text
+	.align  2
+	.global CtxSwitch
+	.type   CtxSwitch, %function
+
+CtxSwitch:
+	@ save callee-saved registers: r4-r8, r10, r11, r13(sp) (plus r9 depending on platform specification)
+	@ I've seen reference to 31 registers on 64-bit, if this is the case, more need to be saved
+	@ save thread state registers: r14(lr)
+	@ r12(ip) is intra-procedure-call scratch register, does not need saving between function calls
+
+	#ifdef R9_SPECIAL
+	stmfd r13!, {r4-r8,r10,r11,r14}
+	#else
+	stmfd r13!, {r4-r11,r14}
+	#endif // R9_SPECIAL
+
+	@ save floating point registers: s16-s31
+	vstmdb r13!, {s16-s31}
+
+	@ save frame pointer and stack pointer to outgoing datastructure
+	str sp, [r0, #SP_OFFSET]
+	str fp, [r0, #FP_OFFSET]
+
+	@ restore frame pointer and stack pointer from incoming datastructure
+	ldr fp, [r1, #FP_OFFSET]
+	ldr sp, [r1, #SP_OFFSET]
+
+	@ restore floating point registers: s16-s31
+	vldm r13!, {s16-s31}
+	@ restore r14(lr)
+	@ restore 64-bit extra registers?
+	@ restore callee-saved registers: r4-r8, r10, r11, r13
+
+	#ifdef R9_SPECIAL
+	ldmfd r13!, {r4-r8,r10,r11,r15}
+	#else
+	ldmfd r13!, {r4-r11,r14}    @ loading r14 back into r15 returns
+
+	mov r15, r14
+	#endif // R9_SPECIAL
+	
+	.text
+	.align  2
+	.global CtxInvokeStub
+	.type   CtxInvokeStub, %function
+
+CtxInvokeStub:
+        ldmfd r13!, {r0-r1}
+	mov r15, r1
Index: libcfa/src/concurrency/CtxSwitch-i386.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-i386.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/CtxSwitch-i386.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,102 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// CtxSwitch-i386.S --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Dec 6 12:27:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jul 21 22:29:25 2017
+// Update Count     : 1
+//
+// This  library is free  software; you  can redistribute  it and/or  modify it
+// under the terms of the GNU Lesser General Public License as published by the
+// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
+// option) any later version.
+//
+// This library is distributed in the  hope that it will be useful, but WITHOUT
+// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+// for more details.
+//
+// You should  have received a  copy of the  GNU Lesser General  Public License
+// along  with this library.
+//
+
+// This context switch routine depends on the fact that the stack of a new
+// thread has been set up to look like the thread has saved its context in
+// the normal manner.
+//
+// void CtxSwitch( machine_context *from, machine_context *to );
+
+// Offsets in the context structure. This needs to be synchronized with the
+// high level code a little better.
+
+#define PTR_BYTE	4
+#define SP_OFFSET	( 0 * PTR_BYTE )
+#define FP_OFFSET	( 1 * PTR_BYTE )
+#define PC_OFFSET	( 2 * PTR_BYTE )
+
+.text
+	.align 2
+.globl	CtxSwitch
+CtxSwitch:
+
+	// Copy the "from" context argument from the stack to register eax
+	// Return address is at 0(%esp), with parameters following
+
+	movl 4(%esp),%eax
+
+	// Save floating & SSE control words on the stack.
+
+        sub    $8,%esp
+        stmxcsr 0(%esp)         // 4 bytes
+        fnstcw  4(%esp)         // 2 bytes
+
+	// Save volatile registers on the stack.
+
+	pushl %ebx
+	pushl %edi
+	pushl %esi
+
+	// Save old context in the "from" area.
+
+	movl %esp,SP_OFFSET(%eax)
+	movl %ebp,FP_OFFSET(%eax)
+//	movl 4(%ebp),%ebx	// save previous eip for debugger
+//	movl %ebx,PC_OFFSET(%eax)
+
+	// Copy the "to" context argument from the stack to register eax
+	// Having pushed three words (= 12 bytes) on the stack, the
+	// argument is now at 8 + 12 = 20(%esp)
+
+	movl 28(%esp),%eax
+
+	// Load new context from the "to" area.
+
+	movl SP_OFFSET(%eax),%esp
+	movl FP_OFFSET(%eax),%ebp
+
+	// Load volatile registers from the stack.
+
+	popl %esi
+	popl %edi
+	popl %ebx
+
+	// Load floating & SSE control words from the stack.
+
+        fldcw   4(%esp)
+        ldmxcsr 0(%esp)
+        add    $8,%esp
+
+	// Return to thread.
+
+	ret
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/CtxSwitch-i686.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-i686.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/CtxSwitch-i686.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+CtxSwitch-i386.S
Index: libcfa/src/concurrency/CtxSwitch-x64.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-x64.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/CtxSwitch-x64.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+CtxSwitch-x86_64.S
Index: libcfa/src/concurrency/CtxSwitch-x86.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-x86.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/CtxSwitch-x86.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+CtxSwitch-i386.S
Index: libcfa/src/concurrency/CtxSwitch-x86_64.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-x86_64.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/CtxSwitch-x86_64.S	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,100 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// CtxSwitch-x86_64.S --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jul 21 22:28:11 2017
+// Update Count     : 1
+//
+// This  library is free  software; you  can redistribute  it and/or  modify it
+// under the terms of the GNU Lesser General Public License as published by the
+// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
+// option) any later version.
+//
+// This library is distributed in the  hope that it will be useful, but WITHOUT
+// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+// for more details.
+//
+// You should  have received a  copy of the  GNU Lesser General  Public License
+// along  with this library.
+//
+
+// This context switch routine depends on the fact that the stack of a new
+// thread has been set up to look like the thread has saved its context in
+// the normal manner.
+//
+// void CtxSwitch( machine_context *from, machine_context *to );
+
+// Offsets in the context structure. This needs to be synchronized with the
+// high level code a little better.
+
+#define PTR_BYTE	8
+#define SP_OFFSET	( 0 * PTR_BYTE )
+#define FP_OFFSET	( 1 * PTR_BYTE )
+#define PC_OFFSET	( 2 * PTR_BYTE )
+
+.text
+	.align 2
+.globl	CtxSwitch
+CtxSwitch:
+
+	// Save floating & SSE control words on the stack.
+
+	subq   $8,%rsp
+	stmxcsr 0(%rsp)         // 4 bytes
+	fnstcw  4(%rsp)         // 2 bytes
+
+	// Save volatile registers on the stack.
+
+	pushq %r15
+	pushq %r14
+	pushq %r13
+	pushq %r12
+	pushq %rbx
+
+	// Save old context in the "from" area.
+
+	movq %rsp,SP_OFFSET(%rdi)
+	movq %rbp,FP_OFFSET(%rdi)
+
+	// Load new context from the "to" area.
+
+	movq SP_OFFSET(%rsi),%rsp
+	movq FP_OFFSET(%rsi),%rbp
+
+	// Load volatile registers from the stack.
+
+	popq %rbx
+	popq %r12
+	popq %r13
+	popq %r14
+	popq %r15
+
+	// Load floating & SSE control words from the stack.
+
+	fldcw   4(%rsp)
+	ldmxcsr 0(%rsp)
+	addq   $8,%rsp
+
+	// Return to thread.
+
+	ret
+
+.text
+	.align 2
+.globl	CtxInvokeStub
+CtxInvokeStub:
+	movq %rbx, %rdi
+	jmp *%r12
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/alarm.cfa
===================================================================
--- libcfa/src/concurrency/alarm.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/alarm.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,179 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// alarm.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Fri Jun 2 11:31:25 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri May 25 06:25:47 2018
+// Update Count     : 67
+//
+
+extern "C" {
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/time.h>
+}
+
+#include "alarm.hfa"
+#include "kernel_private.hfa"
+#include "preemption.hfa"
+
+//=============================================================================================
+// Clock logic
+//=============================================================================================
+
+Time __kernel_get_time() {
+	timespec curr;
+	clock_gettime( CLOCK_MONOTONIC_RAW, &curr );		// CLOCK_REALTIME
+	return (Time){ curr };
+}
+
+void __kernel_set_timer( Duration alarm ) {
+	verifyf(alarm >= 1`us || alarm == 0, "Setting timer to < 1us (%jins)", alarm.tv);
+	setitimer( ITIMER_REAL, &(itimerval){ alarm }, NULL );
+}
+
+//=============================================================================================
+// Alarm logic
+//=============================================================================================
+
+void ?{}( alarm_node_t & this, thread_desc * thrd, Time alarm, Duration period ) with( this ) {
+	this.thrd = thrd;
+	this.alarm = alarm;
+	this.period = period;
+	next = 0;
+	set = false;
+	kernel_alarm = false;
+}
+
+void ?{}( alarm_node_t & this, processor   * proc, Time alarm, Duration period ) with( this ) {
+	this.proc = proc;
+	this.alarm = alarm;
+	this.period = period;
+	next = 0;
+	set = false;
+	kernel_alarm = true;
+}
+
+void ^?{}( alarm_node_t & this ) {
+	if( this.set ) {
+		unregister_self( &this );
+	}
+}
+
+#if !defined(NDEBUG) && (defined(__CFA_DEBUG__) || defined(__CFA_VERIFY__))
+bool validate( alarm_list_t * this ) {
+	alarm_node_t ** it = &this->head;
+	while( (*it) ) {
+		it = &(*it)->next;
+	}
+
+	return it == this->tail;
+}
+#endif
+
+static inline void insert_at( alarm_list_t * this, alarm_node_t * n, __alarm_it_t p ) {
+	verify( !n->next );
+	if( p == this->tail ) {
+		this->tail = &n->next;
+	}
+	else {
+		n->next = *p;
+	}
+	*p = n;
+
+	verify( validate( this ) );
+}
+
+void insert( alarm_list_t * this, alarm_node_t * n ) {
+	alarm_node_t ** it = &this->head;
+	while( (*it) && (n->alarm > (*it)->alarm) ) {
+		it = &(*it)->next;
+	}
+
+	insert_at( this, n, it );
+
+	verify( validate( this ) );
+}
+
+alarm_node_t * pop( alarm_list_t * this ) {
+	alarm_node_t * head = this->head;
+	if( head ) {
+		this->head = head->next;
+		if( !head->next ) {
+			this->tail = &this->head;
+		}
+		head->next = NULL;
+	}
+	verify( validate( this ) );
+	return head;
+}
+
+static inline void remove_at( alarm_list_t * this, alarm_node_t * n, __alarm_it_t it ) {
+	verify( it );
+	verify( (*it) == n );
+
+	(*it) = n->next;
+	if( !n-> next ) {
+		this->tail = it;
+	}
+	n->next = NULL;
+
+	verify( validate( this ) );
+}
+
+static inline void remove( alarm_list_t * this, alarm_node_t * n ) {
+	alarm_node_t ** it = &this->head;
+	while( (*it) && (*it) != n ) {
+		it = &(*it)->next;
+	}
+
+	verify( validate( this ) );
+
+	if( *it ) { remove_at( this, n, it ); }
+
+	verify( validate( this ) );
+}
+
+void register_self( alarm_node_t * this ) {
+	alarm_list_t * alarms = &event_kernel->alarms;
+
+	disable_interrupts();
+	lock( event_kernel->lock __cfaabi_dbg_ctx2 );
+	{
+		verify( validate( alarms ) );
+		bool first = !alarms->head;
+
+		insert( alarms, this );
+		if( first ) {
+			__kernel_set_timer( alarms->head->alarm - __kernel_get_time() );
+		}
+	}
+	unlock( event_kernel->lock );
+	this->set = true;
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+
+void unregister_self( alarm_node_t * this ) {
+	disable_interrupts();
+	lock( event_kernel->lock __cfaabi_dbg_ctx2 );
+	{
+		verify( validate( &event_kernel->alarms ) );
+		remove( &event_kernel->alarms, this );
+	}
+	unlock( event_kernel->lock );
+	enable_interrupts( __cfaabi_dbg_ctx );
+	this->set = false;
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/alarm.hfa
===================================================================
--- libcfa/src/concurrency/alarm.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/alarm.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,78 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// alarm.hfa --
+//
+// Author           : Thierry Delisle
+// Created On       : Fri Jun 2 11:31:25 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Mar 26 16:25:41 2018
+// Update Count     : 11
+//
+
+#pragma once
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include <assert.h>
+
+#include "time.hfa"
+
+struct thread_desc;
+struct processor;
+
+//=============================================================================================
+// Clock logic
+//=============================================================================================
+
+Time __kernel_get_time();
+void __kernel_set_timer( Duration alarm );
+
+//=============================================================================================
+// Alarm logic
+//=============================================================================================
+
+struct alarm_node_t {
+	Time alarm;				// time when alarm goes off
+	Duration period;			// if > 0 => period of alarm
+	alarm_node_t * next;		// intrusive link list field
+
+	union {
+		thread_desc * thrd;	// thrd who created event
+		processor * proc;		// proc who created event
+	};
+
+	bool set		:1;		// whether or not the alarm has be registered
+	bool kernel_alarm	:1;		// true if this is not a user defined alarm
+};
+
+typedef alarm_node_t ** __alarm_it_t;
+
+void ?{}( alarm_node_t & this, thread_desc * thrd, Time alarm, Duration period );
+void ?{}( alarm_node_t & this, processor   * proc, Time alarm, Duration period );
+void ^?{}( alarm_node_t & this );
+
+struct alarm_list_t {
+	alarm_node_t * head;
+	__alarm_it_t tail;
+};
+
+static inline void ?{}( alarm_list_t & this ) with( this ) {
+	head = 0;
+	tail = &head;
+}
+
+void insert( alarm_list_t * this, alarm_node_t * n );
+alarm_node_t * pop( alarm_list_t * this );
+
+void register_self  ( alarm_node_t * this );
+void unregister_self( alarm_node_t * this );
+
+// Local Variables: //
+// mode: c //
+// tab-width: 6 //
+// End: //
Index: libcfa/src/concurrency/coroutine.cfa
===================================================================
--- libcfa/src/concurrency/coroutine.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/coroutine.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,183 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// coroutine.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Mar 30 17:20:57 2018
+// Update Count     : 9
+//
+
+#include "coroutine.hfa"
+
+extern "C" {
+#include <stddef.h>
+#include <malloc.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/mman.h>
+}
+
+#include "kernel_private.hfa"
+
+#define __CFA_INVOKE_PRIVATE__
+#include "invoke.h"
+
+//-----------------------------------------------------------------------------
+// Global state variables
+
+// minimum feasible stack size in bytes
+#define MinStackSize 1000
+static size_t pageSize = 0;				// architecture pagesize HACK, should go in proper runtime singleton
+
+//-----------------------------------------------------------------------------
+// Coroutine ctors and dtors
+void ?{}( coStack_t & this, void * storage, size_t storageSize ) with( this ) {
+      size		 = storageSize == 0 ? 65000 : storageSize; // size of stack
+      this.storage = storage;                                // pointer to stack
+      limit		 = NULL;                                   // stack grows towards stack limit
+      base		 = NULL;                                   // base of stack
+      context	 = NULL;                                   // address of cfa_context_t
+      top		 = NULL;                                   // address of top of storage
+      userStack	 = storage != NULL;
+}
+
+void ^?{}(coStack_t & this) {
+      if ( ! this.userStack && this.storage ) {
+            __cfaabi_dbg_debug_do(
+                  if ( mprotect( this.storage, pageSize, PROT_READ | PROT_WRITE ) == -1 ) {
+                        abort( "(coStack_t *)%p.^?{}() : internal error, mprotect failure, error(%d) %s.", &this, errno, strerror( errno ) );
+                  }
+            );
+            free( this.storage );
+      }
+}
+
+void ?{}( coroutine_desc & this, const char * name, void * storage, size_t storageSize ) with( this ) {
+      (this.stack){storage, storageSize};
+      this.name = name;
+      errno_ = 0;
+      state = Start;
+      starter = NULL;
+      last = NULL;
+}
+
+void ^?{}(coroutine_desc& this) {}
+
+// Part of the Public API
+// Not inline since only ever called once per coroutine
+forall(dtype T | is_coroutine(T))
+void prime(T& cor) {
+      coroutine_desc* this = get_coroutine(cor);
+      assert(this->state == Start);
+
+      this->state = Primed;
+      resume(cor);
+}
+
+// Wrapper for co
+void CoroutineCtxSwitch(coroutine_desc* src, coroutine_desc* dst) {
+      // Safety note : This could cause some false positives due to preemption
+      verify( TL_GET( preemption_state.enabled ) || TL_GET( this_processor )->do_terminate );
+      disable_interrupts();
+
+      // set state of current coroutine to inactive
+      src->state = src->state == Halted ? Halted : Inactive;
+
+      // set new coroutine that task is executing
+      kernelTLS.this_coroutine = dst;
+
+      // context switch to specified coroutine
+      assert( src->stack.context );
+      CtxSwitch( src->stack.context, dst->stack.context );
+      // when CtxSwitch returns we are back in the src coroutine
+
+      // set state of new coroutine to active
+      src->state = Active;
+
+      enable_interrupts( __cfaabi_dbg_ctx );
+      // Safety note : This could cause some false positives due to preemption
+      verify( TL_GET( preemption_state.enabled ) || TL_GET( this_processor )->do_terminate );
+} //ctxSwitchDirect
+
+void create_stack( coStack_t* this, unsigned int storageSize ) with( *this ) {
+      //TEMP HACK do this on proper kernel startup
+      if(pageSize == 0ul) pageSize = sysconf( _SC_PAGESIZE );
+
+      size_t cxtSize = libCeiling( sizeof(machine_context_t), 8 ); // minimum alignment
+
+      if ( !storage ) {
+            __cfaabi_dbg_print_safe("Kernel : Creating stack of size %zu for stack obj %p\n", cxtSize + size + 8, this);
+
+            userStack = false;
+            size = libCeiling( storageSize, 16 );
+            // use malloc/memalign because "new" raises an exception for out-of-memory
+
+            // assume malloc has 8 byte alignment so add 8 to allow rounding up to 16 byte alignment
+            __cfaabi_dbg_debug_do( storage = memalign( pageSize, cxtSize + size + pageSize ) );
+            __cfaabi_dbg_no_debug_do( storage = malloc( cxtSize + size + 8 ) );
+
+            __cfaabi_dbg_debug_do(
+                  if ( mprotect( storage, pageSize, PROT_NONE ) == -1 ) {
+                        abort( "(uMachContext &)%p.createContext() : internal error, mprotect failure, error(%d) %s.", this, (int)errno, strerror( (int)errno ) );
+                  } // if
+            );
+
+            if ( (intptr_t)storage == 0 ) {
+                  abort( "Attempt to allocate %zd bytes of storage for coroutine or task execution-state but insufficient memory available.", size );
+            } // if
+
+            __cfaabi_dbg_debug_do( limit = (char *)storage + pageSize );
+            __cfaabi_dbg_no_debug_do( limit = (char *)libCeiling( (unsigned long)storage, 16 ) ); // minimum alignment
+
+      } else {
+            __cfaabi_dbg_print_safe("Kernel : stack obj %p using user stack %p(%u bytes)\n", this, storage, storageSize);
+
+            assertf( ((size_t)storage & (libAlign() - 1)) == 0ul, "Stack storage %p for task/coroutine must be aligned on %d byte boundary.", storage, (int)libAlign() );
+            userStack = true;
+            size = storageSize - cxtSize;
+
+            if ( size % 16 != 0u ) size -= 8;
+
+            limit = (char *)libCeiling( (unsigned long)storage, 16 ); // minimum alignment
+      } // if
+      assertf( size >= MinStackSize, "Stack size %zd provides less than minimum of %d bytes for a stack.", size, MinStackSize );
+
+      base = (char *)limit + size;
+      context = base;
+      top = (char *)context + cxtSize;
+}
+
+// We need to call suspend from invoke.c, so we expose this wrapper that
+// is not inline (We can't inline Cforall in C)
+extern "C" {
+      void __suspend_internal(void) {
+            suspend();
+      }
+
+      void __leave_coroutine(void) {
+            coroutine_desc * src = TL_GET( this_coroutine ); // optimization
+
+            assertf( src->starter != 0,
+                  "Attempt to suspend/leave coroutine \"%.256s\" (%p) that has never been resumed.\n"
+                  "Possible cause is a suspend executed in a member called by a coroutine user rather than by the coroutine main.",
+                  src->name, src );
+            assertf( src->starter->state != Halted,
+                  "Attempt by coroutine \"%.256s\" (%p) to suspend/leave back to terminated coroutine \"%.256s\" (%p).\n"
+                  "Possible cause is terminated coroutine's main routine has already returned.",
+                  src->name, src, src->starter->name, src->starter );
+
+            CoroutineCtxSwitch( src, src->starter );
+      }
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/coroutine.hfa
===================================================================
--- libcfa/src/concurrency/coroutine.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/coroutine.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,151 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// coroutine --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Nov 28 12:27:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Mar 30 18:23:45 2018
+// Update Count     : 8
+//
+
+#pragma once
+
+#include <assert.h>
+#include "invoke.h"
+
+//-----------------------------------------------------------------------------
+// Coroutine trait
+// Anything that implements this trait can be resumed.
+// Anything that is resumed is a coroutine.
+trait is_coroutine(dtype T) {
+      void main(T & this);
+      coroutine_desc * get_coroutine(T & this);
+};
+
+#define DECL_COROUTINE(X) static inline coroutine_desc* get_coroutine(X& this) { return &this.__cor; } void main(X& this)
+
+//-----------------------------------------------------------------------------
+// Ctors and dtors
+// void ?{}( coStack_t & this );
+// void ^?{}( coStack_t & this );
+
+void ?{}( coroutine_desc & this, const char * name, void * storage, size_t storageSize );
+void ^?{}( coroutine_desc & this );
+
+static inline void ?{}( coroutine_desc & this)                                       { this{ "Anonymous Coroutine", NULL, 0 }; }
+static inline void ?{}( coroutine_desc & this, size_t stackSize)                     { this{ "Anonymous Coroutine", NULL, stackSize }; }
+static inline void ?{}( coroutine_desc & this, void * storage, size_t storageSize )  { this{ "Anonymous Coroutine", storage, storageSize }; }
+static inline void ?{}( coroutine_desc & this, const char * name)                    { this{ name, NULL, 0 }; }
+static inline void ?{}( coroutine_desc & this, const char * name, size_t stackSize ) { this{ name, NULL, stackSize }; }
+
+//-----------------------------------------------------------------------------
+// Public coroutine API
+static inline void suspend();
+
+forall(dtype T | is_coroutine(T))
+static inline void resume(T & cor);
+
+forall(dtype T | is_coroutine(T))
+void prime(T & cor);
+
+//-----------------------------------------------------------------------------
+// PRIVATE exposed because of inline
+
+// Start coroutine routines
+extern "C" {
+      forall(dtype T | is_coroutine(T))
+      void CtxInvokeCoroutine(T * this);
+
+      forall(dtype T | is_coroutine(T))
+      void CtxStart(T * this, void ( *invoke)(T *));
+}
+
+// Private wrappers for context switch and stack creation
+extern void CoroutineCtxSwitch(coroutine_desc * src, coroutine_desc * dst);
+extern void create_stack( coStack_t * this, unsigned int storageSize );
+
+// Suspend implementation inlined for performance
+static inline void suspend() {
+	// optimization : read TLS once and reuse it
+	// Safety note: this is preemption safe since if
+	// preemption occurs after this line, the pointer
+	// will also migrate which means this value will
+	// stay in syn with the TLS
+	coroutine_desc * src = TL_GET( this_coroutine );
+
+	assertf( src->last != 0,
+		"Attempt to suspend coroutine \"%.256s\" (%p) that has never been resumed.\n"
+		"Possible cause is a suspend executed in a member called by a coroutine user rather than by the coroutine main.",
+		src->name, src );
+	assertf( src->last->state != Halted,
+		"Attempt by coroutine \"%.256s\" (%p) to suspend back to terminated coroutine \"%.256s\" (%p).\n"
+		"Possible cause is terminated coroutine's main routine has already returned.",
+		src->name, src, src->last->name, src->last );
+
+	CoroutineCtxSwitch( src, src->last );
+}
+
+// Resume implementation inlined for performance
+forall(dtype T | is_coroutine(T))
+static inline void resume(T & cor) {
+	// optimization : read TLS once and reuse it
+	// Safety note: this is preemption safe since if
+	// preemption occurs after this line, the pointer
+	// will also migrate which means this value will
+	// stay in syn with the TLS
+	coroutine_desc * src = TL_GET( this_coroutine );
+	coroutine_desc * dst = get_coroutine(cor);
+
+	if( unlikely(!dst->stack.base) ) {
+		create_stack(&dst->stack, dst->stack.size);
+		CtxStart(&cor, CtxInvokeCoroutine);
+	}
+
+	// not resuming self ?
+	if ( src != dst ) {
+		assertf( dst->state != Halted ,
+			"Attempt by coroutine %.256s (%p) to resume terminated coroutine %.256s (%p).\n"
+			"Possible cause is terminated coroutine's main routine has already returned.",
+			src->name, src, dst->name, dst );
+
+		// set last resumer
+		dst->last = src;
+		dst->starter = dst->starter ? dst->starter : src;
+	}
+
+	// always done for performance testing
+	CoroutineCtxSwitch( src, dst );
+}
+
+static inline void resume(coroutine_desc * dst) {
+	// optimization : read TLS once and reuse it
+	// Safety note: this is preemption safe since if
+	// preemption occurs after this line, the pointer
+	// will also migrate which means this value will
+	// stay in syn with the TLS
+	coroutine_desc * src = TL_GET( this_coroutine );
+
+	// not resuming self ?
+	if ( src != dst ) {
+		assertf( dst->state != Halted ,
+			"Attempt by coroutine %.256s (%p) to resume terminated coroutine %.256s (%p).\n"
+			"Possible cause is terminated coroutine's main routine has already returned.",
+			src->name, src, dst->name, dst );
+
+		// set last resumer
+		dst->last = src;
+	}
+
+	// always done for performance testing
+	CoroutineCtxSwitch( src, dst );
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/invoke.c
===================================================================
--- libcfa/src/concurrency/invoke.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/invoke.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,165 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// invoke.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Jan 17 12:27:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Feb  9 16:37:42 2018
+// Update Count     : 5
+//
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "invoke.h"
+
+#define __CFA_INVOKE_PRIVATE__
+#include "invoke.h"
+
+// magically invoke the "main" of the most derived class
+// Called from the kernel when starting a coroutine or task so must switch back to user mode.
+
+extern void __suspend_internal(void);
+extern void __leave_coroutine(void);
+extern void __finish_creation(void);
+extern void __leave_thread_monitor( struct thread_desc * this );
+extern void disable_interrupts();
+extern void enable_interrupts( __cfaabi_dbg_ctx_param );
+
+void CtxInvokeCoroutine(
+	void (*main)(void *),
+	struct coroutine_desc *(*get_coroutine)(void *),
+	void *this
+) {
+	struct coroutine_desc* cor = get_coroutine( this );
+
+	if(cor->state == Primed) {
+		__suspend_internal();
+	}
+
+	cor->state = Active;
+
+	enable_interrupts( __cfaabi_dbg_ctx );
+
+	main( this );
+
+	cor->state = Halted;
+
+	//Final suspend, should never return
+	__leave_coroutine();
+	__cabi_abort( "Resumed dead coroutine" );
+}
+
+void CtxInvokeThread(
+	void (*dtor)(void *),
+	void (*main)(void *),
+	struct thread_desc *(*get_thread)(void *),
+	void *this
+) {
+	// First suspend, once the thread arrives here,
+	// the function pointer to main can be invalidated without risk
+	__finish_creation();
+
+	// Fetch the thread handle from the user defined thread structure
+	struct thread_desc* thrd = get_thread( this );
+	thrd->self_cor.last = NULL;
+
+	// Officially start the thread by enabling preemption
+	enable_interrupts( __cfaabi_dbg_ctx );
+
+	// Call the main of the thread
+	main( this );
+
+	// To exit a thread we must :
+	// 1 - Mark it as halted
+	// 2 - Leave its monitor
+	// 3 - Disable the interupts
+	// 4 - Final suspend
+	// The order of these 4 operations is very important
+	//Final suspend, should never return
+	__leave_thread_monitor( thrd );
+	__cabi_abort( "Resumed dead thread" );
+}
+
+
+void CtxStart(
+	void (*main)(void *),
+	struct coroutine_desc *(*get_coroutine)(void *),
+	void *this,
+	void (*invoke)(void *)
+) {
+	struct coStack_t* stack = &get_coroutine( this )->stack;
+
+#if defined( __i386 )
+
+	struct FakeStack {
+	    void *fixedRegisters[3];		  	// fixed registers ebx, edi, esi (popped on 1st uSwitch, values unimportant)
+	    uint32_t mxcr;                        // SSE Status and Control bits (control bits are preserved across function calls)
+	    uint16_t fcw;                         // X97 FPU control word (preserved across function calls)
+	    void *rturn;                          // where to go on return from uSwitch
+	    void *dummyReturn;				// fake return compiler would have pushed on call to uInvoke
+	    void *argument[3];				// for 16-byte ABI, 16-byte alignment starts here
+	    void *padding;				// padding to force 16-byte alignment, as "base" is 16-byte aligned
+	};
+
+	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
+	((struct machine_context_t *)stack->context)->FP = NULL;		// terminate stack with NULL fp
+
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->dummyReturn = NULL;
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->argument[0] = this;     // argument to invoke
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->rturn = invoke;
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F;  //Vol. 1 8-7
+
+#elif defined( __x86_64 )
+
+	struct FakeStack {
+		void *fixedRegisters[5];            // fixed registers rbx, r12, r13, r14, r15
+		uint32_t mxcr;                      // SSE Status and Control bits (control bits are preserved across function calls)
+		uint16_t fcw;                       // X97 FPU control word (preserved across function calls)
+		void *rturn;                        // where to go on return from uSwitch
+		void *dummyReturn;                  // NULL return address to provide proper alignment
+	};
+
+	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
+	((struct machine_context_t *)stack->context)->FP = NULL;		// terminate stack with NULL fp
+
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->dummyReturn = NULL;
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->rturn = CtxInvokeStub;
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[0] = this;
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[1] = invoke;
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520
+	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F;  //Vol. 1 8-7
+
+#elif defined( __ARM_ARCH )
+
+	struct FakeStack {
+		float fpRegs[16];			// floating point registers
+		void *intRegs[9];			// integer/pointer registers
+		void *arg[2];				// placeholder for this pointer
+	};
+
+	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
+	((struct machine_context_t *)stack->context)->FP = NULL;
+
+	struct FakeStack *fs = (struct FakeStack *)((struct machine_context_t *)stack->context)->SP;
+
+	fs->intRegs[8] = CtxInvokeStub;
+	fs->arg[0] = this;
+	fs->arg[1] = invoke;
+
+#else
+	#error uknown hardware architecture
+#endif
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/invoke.h
===================================================================
--- libcfa/src/concurrency/invoke.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/invoke.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,248 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// invoke.h --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Jan 17 12:27:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat May 19 08:23:21 2018
+// Update Count     : 31
+//
+
+#include "bits/containers.hfa"
+#include "bits/defs.hfa"
+#include "bits/locks.hfa"
+
+#ifdef __cforall
+extern "C" {
+#endif
+
+#if ! defined(__CFA_INVOKE_PRIVATE__)
+#ifndef _INVOKE_H_
+#define _INVOKE_H_
+
+#ifdef __ARM_ARCH
+	// function prototypes are only really used by these macros on ARM
+	void disable_global_interrupts();
+	void enable_global_interrupts();
+
+	#define TL_GET( member ) ( { __typeof__( kernelTLS.member ) target; \
+                disable_global_interrupts(); \
+                target = kernelTLS.member; \
+                enable_global_interrupts(); \
+                target; } )
+	#define TL_SET( member, value ) disable_global_interrupts(); \
+		kernelTLS.member = value; \
+		enable_global_interrupts();
+#else
+	#define TL_GET( member ) kernelTLS.member
+	#define TL_SET( member, value ) kernelTLS.member = value;
+#endif
+
+	#ifdef __cforall
+	extern "Cforall" {
+		static inline struct thread_desc             * & get_next( struct thread_desc             & this );
+		static inline struct __condition_criterion_t * & get_next( struct __condition_criterion_t & this );
+
+		extern thread_local struct KernelThreadData {
+			struct coroutine_desc * volatile this_coroutine;
+			struct thread_desc    * volatile this_thread;
+			struct processor      * volatile this_processor;
+
+			struct {
+				volatile unsigned short disable_count;
+				volatile bool enabled;
+				volatile bool in_progress;
+			} preemption_state;
+		} kernelTLS;
+	}
+
+	static inline struct coroutine_desc * volatile active_coroutine() { return TL_GET( this_coroutine ); }
+	static inline struct thread_desc    * volatile active_thread   () { return TL_GET( this_thread    ); }
+	static inline struct processor      * volatile active_processor() { return TL_GET( this_processor ); } // UNSAFE
+	#endif
+
+	struct coStack_t {
+		size_t size;									// size of stack
+		void * storage;									// pointer to stack
+		void * limit;									// stack grows towards stack limit
+		void * base;									// base of stack
+		void * context;									// address of cfa_context_t
+		void * top;										// address of top of storage
+		bool userStack;									// whether or not the user allocated the stack
+	};
+
+	enum coroutine_state { Halted, Start, Inactive, Active, Primed };
+
+	struct coroutine_desc {
+		struct coStack_t stack;							// stack information of the coroutine
+		const char * name;								// textual name for coroutine/task, initialized by uC++ generated code
+		int errno_;										// copy of global UNIX variable errno
+		enum coroutine_state state;						// current execution status for coroutine
+		struct coroutine_desc * starter;				// first coroutine to resume this one
+		struct coroutine_desc * last;					// last coroutine to resume this one
+	};
+
+	struct __waitfor_mask_t {
+		// the index of the accepted function, -1 if none
+		short * accepted;
+
+		// list of acceptable functions, null if any
+		__cfa_anonymous_object( __small_array_t(struct __acceptable_t) );
+	};
+
+	struct monitor_desc {
+		// spinlock to protect internal data
+		struct __spinlock_t lock;
+
+		// current owner of the monitor
+		struct thread_desc * owner;
+
+		// queue of threads that are blocked waiting for the monitor
+		__queue_t(struct thread_desc) entry_queue;
+
+		// stack of conditions to run next once we exit the monitor
+		__stack_t(struct __condition_criterion_t) signal_stack;
+
+		// monitor routines can be called recursively, we need to keep track of that
+		unsigned int recursion;
+
+		// mask used to know if some thread is waiting for something while holding the monitor
+		struct __waitfor_mask_t mask;
+
+		// node used to signal the dtor in a waitfor dtor
+		struct __condition_node_t * dtor_node;
+	};
+
+	struct __monitor_group_t {
+		// currently held monitors
+		__cfa_anonymous_object( __small_array_t(monitor_desc*) );
+
+		// last function that acquired monitors
+		fptr_t func;
+	};
+
+	struct thread_desc {
+		// Core threading fields
+		// coroutine body used to store context
+		struct coroutine_desc  self_cor;
+
+		// current active context
+		struct coroutine_desc * curr_cor;
+
+		// monitor body used for mutual exclusion
+		struct monitor_desc    self_mon;
+
+		// pointer to monitor with sufficient lifetime for current monitors
+		struct monitor_desc *  self_mon_p;
+
+		// pointer to the cluster on which the thread is running
+		struct cluster * curr_cluster;
+
+		// monitors currently held by this thread
+		struct __monitor_group_t monitors;
+
+		// Link lists fields
+		// instrusive link field for threads
+		struct thread_desc * next;
+
+		struct {
+			struct thread_desc * next;
+			struct thread_desc * prev;
+		} node;
+     };
+
+     #ifdef __cforall
+     extern "Cforall" {
+		static inline thread_desc * & get_next( thread_desc & this ) {
+			return this.next;
+		}
+
+		static inline [thread_desc *&, thread_desc *& ] __get( thread_desc & this ) {
+			return this.node.[next, prev];
+		}
+
+		static inline struct __condition_criterion_t * & get_next( struct __condition_criterion_t & this );
+
+		static inline void ?{}(__monitor_group_t & this) {
+			(this.data){NULL};
+			(this.size){0};
+			(this.func){NULL};
+		}
+
+		static inline void ?{}(__monitor_group_t & this, struct monitor_desc ** data, __lock_size_t size, fptr_t func) {
+			(this.data){data};
+			(this.size){size};
+			(this.func){func};
+		}
+
+		static inline bool ?==?( const __monitor_group_t & lhs, const __monitor_group_t & rhs ) {
+			if( (lhs.data != 0) != (rhs.data != 0) ) return false;
+			if( lhs.size != rhs.size ) return false;
+			if( lhs.func != rhs.func ) return false;
+
+			// Check that all the monitors match
+			for( int i = 0; i < lhs.size; i++ ) {
+				// If not a match, check next function
+				if( lhs[i] != rhs[i] ) return false;
+			}
+
+			return true;
+		}
+
+		static inline void ?=?(__monitor_group_t & lhs, const __monitor_group_t & rhs) {
+			lhs.data = rhs.data;
+			lhs.size = rhs.size;
+			lhs.func = rhs.func;
+		}
+	}
+	#endif
+
+#endif //_INVOKE_H_
+#else //! defined(__CFA_INVOKE_PRIVATE__)
+#ifndef _INVOKE_PRIVATE_H_
+#define _INVOKE_PRIVATE_H_
+
+	struct machine_context_t {
+		void *SP;
+		void *FP;
+		void *PC;
+	};
+
+	// assembler routines that performs the context switch
+	extern void CtxInvokeStub( void );
+	void CtxSwitch( void * from, void * to ) asm ("CtxSwitch");
+
+	#if   defined( __i386 )
+	#define CtxGet( ctx ) __asm__ ( \
+			"movl %%esp,%0\n"   \
+			"movl %%ebp,%1\n"   \
+		: "=rm" (ctx.SP), "=rm" (ctx.FP) )
+	#elif defined( __x86_64 )
+	#define CtxGet( ctx ) __asm__ ( \
+			"movq %%rsp,%0\n"   \
+			"movq %%rbp,%1\n"   \
+		: "=rm" (ctx.SP), "=rm" (ctx.FP) )
+	#elif defined( __ARM_ARCH )
+	#define CtxGet( ctx ) __asm__ ( \
+			"mov %0,%%sp\n"   \
+			"mov %1,%%r11\n"   \
+		: "=rm" (ctx.SP), "=rm" (ctx.FP) )
+	#else
+		#error unknown hardware architecture
+	#endif
+
+#endif //_INVOKE_PRIVATE_H_
+#endif //! defined(__CFA_INVOKE_PRIVATE__)
+#ifdef __cforall
+}
+#endif
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/kernel.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,845 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// kernel.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Jan 17 12:27:26 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Apr  9 16:11:46 2018
+// Update Count     : 24
+//
+
+//C Includes
+#include <stddef.h>
+#include <errno.h>
+#include <string.h>
+extern "C" {
+#include <stdio.h>
+#include <fenv.h>
+#include <sys/resource.h>
+#include <signal.h>
+#include <unistd.h>
+}
+
+//CFA Includes
+#include "time.hfa"
+#include "kernel_private.hfa"
+#include "preemption.hfa"
+#include "startup.hfa"
+
+//Private includes
+#define __CFA_INVOKE_PRIVATE__
+#include "invoke.h"
+
+//Start and stop routine for the kernel, declared first to make sure they run first
+static void kernel_startup(void)  __attribute__(( constructor( STARTUP_PRIORITY_KERNEL ) ));
+static void kernel_shutdown(void) __attribute__(( destructor ( STARTUP_PRIORITY_KERNEL ) ));
+
+//-----------------------------------------------------------------------------
+// Kernel storage
+KERNEL_STORAGE(cluster,           mainCluster);
+KERNEL_STORAGE(processor,         mainProcessor);
+KERNEL_STORAGE(thread_desc,       mainThread);
+KERNEL_STORAGE(machine_context_t, mainThreadCtx);
+
+cluster     * mainCluster;
+processor   * mainProcessor;
+thread_desc * mainThread;
+
+extern "C" {
+struct { __dllist_t(cluster) list; __spinlock_t lock; } __cfa_dbg_global_clusters;
+}
+
+//-----------------------------------------------------------------------------
+// Global state
+thread_local struct KernelThreadData kernelTLS = {
+	NULL,
+	NULL,
+	NULL,
+	{ 1, false, false }
+};
+
+//-----------------------------------------------------------------------------
+// Struct to steal stack
+struct current_stack_info_t {
+	machine_context_t ctx;
+	unsigned int size;		// size of stack
+	void *base;				// base of stack
+	void *storage;			// pointer to stack
+	void *limit;			// stack grows towards stack limit
+	void *context;			// address of cfa_context_t
+	void *top;				// address of top of storage
+};
+
+void ?{}( current_stack_info_t & this ) {
+	CtxGet( this.ctx );
+	this.base = this.ctx.FP;
+	this.storage = this.ctx.SP;
+
+	rlimit r;
+	getrlimit( RLIMIT_STACK, &r);
+	this.size = r.rlim_cur;
+
+	this.limit = (void *)(((intptr_t)this.base) - this.size);
+	this.context = &storage_mainThreadCtx;
+	this.top = this.base;
+}
+
+//-----------------------------------------------------------------------------
+// Main thread construction
+void ?{}( coStack_t & this, current_stack_info_t * info) with( this ) {
+	size      = info->size;
+	storage   = info->storage;
+	limit     = info->limit;
+	base      = info->base;
+	context   = info->context;
+	top       = info->top;
+	userStack = true;
+}
+
+void ?{}( coroutine_desc & this, current_stack_info_t * info) with( this ) {
+	stack{ info };
+	name = "Main Thread";
+	errno_ = 0;
+	state = Start;
+	starter = NULL;
+}
+
+void ?{}( thread_desc & this, current_stack_info_t * info) with( this ) {
+	self_cor{ info };
+	curr_cor = &self_cor;
+	curr_cluster = mainCluster;
+	self_mon.owner = &this;
+	self_mon.recursion = 1;
+	self_mon_p = &self_mon;
+	next = NULL;
+
+	node.next = NULL;
+	node.prev = NULL;
+	doregister(curr_cluster, this);
+
+	monitors{ &self_mon_p, 1, (fptr_t)0 };
+}
+
+//-----------------------------------------------------------------------------
+// Processor coroutine
+void ?{}(processorCtx_t & this) {
+
+}
+
+// Construct the processor context of non-main processors
+static void ?{}(processorCtx_t & this, processor * proc, current_stack_info_t * info) {
+	(this.__cor){ info };
+	this.proc = proc;
+}
+
+static void start(processor * this);
+void ?{}(processor & this, const char * name, cluster & cltr) with( this ) {
+	this.name = name;
+	this.cltr = &cltr;
+	terminated{ 0 };
+	do_terminate = false;
+	preemption_alarm = NULL;
+	pending_preemption = false;
+	runner.proc = &this;
+
+	idleLock{};
+
+	start( &this );
+}
+
+void ^?{}(processor & this) with( this ){
+	if( ! __atomic_load_n(&do_terminate, __ATOMIC_ACQUIRE) ) {
+		__cfaabi_dbg_print_safe("Kernel : core %p signaling termination\n", &this);
+
+		__atomic_store_n(&do_terminate, true, __ATOMIC_RELAXED);
+		wake( &this );
+
+		P( terminated );
+		verify( kernelTLS.this_processor != &this);
+	}
+
+	pthread_join( kernel_thread, NULL );
+}
+
+void ?{}(cluster & this, const char * name, Duration preemption_rate) with( this ) {
+	this.name = name;
+	this.preemption_rate = preemption_rate;
+	ready_queue{};
+	ready_queue_lock{};
+
+	procs{ __get };
+	idles{ __get };
+	threads{ __get };
+
+	doregister(this);
+}
+
+void ^?{}(cluster & this) {
+	unregister(this);
+}
+
+//=============================================================================================
+// Kernel Scheduling logic
+//=============================================================================================
+static void runThread(processor * this, thread_desc * dst);
+static void finishRunning(processor * this);
+static void halt(processor * this);
+
+//Main of the processor contexts
+void main(processorCtx_t & runner) {
+	processor * this = runner.proc;
+	verify(this);
+
+	__cfaabi_dbg_print_safe("Kernel : core %p starting\n", this);
+
+	doregister(this->cltr, this);
+
+	{
+		// Setup preemption data
+		preemption_scope scope = { this };
+
+		__cfaabi_dbg_print_safe("Kernel : core %p started\n", this);
+
+		thread_desc * readyThread = NULL;
+		for( unsigned int spin_count = 0; ! __atomic_load_n(&this->do_terminate, __ATOMIC_SEQ_CST); spin_count++ )
+		{
+			readyThread = nextThread( this->cltr );
+
+			if(readyThread)
+			{
+				verify( ! kernelTLS.preemption_state.enabled );
+
+				runThread(this, readyThread);
+
+				verify( ! kernelTLS.preemption_state.enabled );
+
+				//Some actions need to be taken from the kernel
+				finishRunning(this);
+
+				spin_count = 0;
+			}
+			else
+			{
+				// spin(this, &spin_count);
+				halt(this);
+			}
+		}
+
+		__cfaabi_dbg_print_safe("Kernel : core %p stopping\n", this);
+	}
+
+	unregister(this->cltr, this);
+
+	V( this->terminated );
+
+	__cfaabi_dbg_print_safe("Kernel : core %p terminated\n", this);
+}
+
+// KERNEL ONLY
+// runThread runs a thread by context switching
+// from the processor coroutine to the target thread
+static void runThread(processor * this, thread_desc * dst) {
+	assert(dst->curr_cor);
+	coroutine_desc * proc_cor = get_coroutine(this->runner);
+	coroutine_desc * thrd_cor = dst->curr_cor;
+
+	// Reset the terminating actions here
+	this->finish.action_code = No_Action;
+
+	// Update global state
+	kernelTLS.this_thread = dst;
+
+	// Context Switch to the thread
+	ThreadCtxSwitch(proc_cor, thrd_cor);
+	// when ThreadCtxSwitch returns we are back in the processor coroutine
+}
+
+// KERNEL_ONLY
+static void returnToKernel() {
+	coroutine_desc * proc_cor = get_coroutine(kernelTLS.this_processor->runner);
+	coroutine_desc * thrd_cor = kernelTLS.this_thread->curr_cor = kernelTLS.this_coroutine;
+	ThreadCtxSwitch(thrd_cor, proc_cor);
+}
+
+// KERNEL_ONLY
+// Once a thread has finished running, some of
+// its final actions must be executed from the kernel
+static void finishRunning(processor * this) with( this->finish ) {
+	verify( ! kernelTLS.preemption_state.enabled );
+	choose( action_code ) {
+	case No_Action:
+		break;
+	case Release:
+		unlock( *lock );
+	case Schedule:
+		ScheduleThread( thrd );
+	case Release_Schedule:
+		unlock( *lock );
+		ScheduleThread( thrd );
+	case Release_Multi:
+		for(int i = 0; i < lock_count; i++) {
+			unlock( *locks[i] );
+		}
+	case Release_Multi_Schedule:
+		for(int i = 0; i < lock_count; i++) {
+			unlock( *locks[i] );
+		}
+		for(int i = 0; i < thrd_count; i++) {
+			ScheduleThread( thrds[i] );
+		}
+	case Callback:
+		callback();
+	default:
+		abort("KERNEL ERROR: Unexpected action to run after thread");
+	}
+}
+
+// KERNEL_ONLY
+// Context invoker for processors
+// This is the entry point for processors (kernel threads)
+// It effectively constructs a coroutine by stealing the pthread stack
+static void * CtxInvokeProcessor(void * arg) {
+	processor * proc = (processor *) arg;
+	kernelTLS.this_processor = proc;
+	kernelTLS.this_coroutine = NULL;
+	kernelTLS.this_thread    = NULL;
+	kernelTLS.preemption_state.[enabled, disable_count] = [false, 1];
+	// SKULLDUGGERY: We want to create a context for the processor coroutine
+	// which is needed for the 2-step context switch. However, there is no reason
+	// to waste the perfectly valid stack create by pthread.
+	current_stack_info_t info;
+	machine_context_t ctx;
+	info.context = &ctx;
+	(proc->runner){ proc, &info };
+
+	__cfaabi_dbg_print_safe("Coroutine : created stack %p\n", get_coroutine(proc->runner)->stack.base);
+
+	//Set global state
+	kernelTLS.this_coroutine = get_coroutine(proc->runner);
+	kernelTLS.this_thread    = NULL;
+
+	//We now have a proper context from which to schedule threads
+	__cfaabi_dbg_print_safe("Kernel : core %p created (%p, %p)\n", proc, &proc->runner, &ctx);
+
+	// SKULLDUGGERY: Since the coroutine doesn't have its own stack, we can't
+	// resume it to start it like it normally would, it will just context switch
+	// back to here. Instead directly call the main since we already are on the
+	// appropriate stack.
+	get_coroutine(proc->runner)->state = Active;
+	main( proc->runner );
+	get_coroutine(proc->runner)->state = Halted;
+
+	// Main routine of the core returned, the core is now fully terminated
+	__cfaabi_dbg_print_safe("Kernel : core %p main ended (%p)\n", proc, &proc->runner);
+
+	return NULL;
+}
+
+static void start(processor * this) {
+	__cfaabi_dbg_print_safe("Kernel : Starting core %p\n", this);
+
+	pthread_create( &this->kernel_thread, NULL, CtxInvokeProcessor, (void*)this );
+
+	__cfaabi_dbg_print_safe("Kernel : core %p started\n", this);
+}
+
+// KERNEL_ONLY
+void kernel_first_resume(processor * this) {
+	coroutine_desc * src = kernelTLS.this_coroutine;
+	coroutine_desc * dst = get_coroutine(this->runner);
+
+	verify( ! kernelTLS.preemption_state.enabled );
+
+	create_stack(&dst->stack, dst->stack.size);
+	CtxStart(&this->runner, CtxInvokeCoroutine);
+
+	verify( ! kernelTLS.preemption_state.enabled );
+
+	dst->last = src;
+	dst->starter = dst->starter ? dst->starter : src;
+
+	// set state of current coroutine to inactive
+	src->state = src->state == Halted ? Halted : Inactive;
+
+	// set new coroutine that task is executing
+	kernelTLS.this_coroutine = dst;
+
+	// SKULLDUGGERY normally interrupts are enable before leaving a coroutine ctxswitch.
+	// Therefore, when first creating a coroutine, interrupts are enable before calling the main.
+	// This is consistent with thread creation. However, when creating the main processor coroutine,
+	// we wan't interrupts to be disabled. Therefore, we double-disable interrupts here so they will
+	// stay disabled.
+	disable_interrupts();
+
+	// context switch to specified coroutine
+	assert( src->stack.context );
+	CtxSwitch( src->stack.context, dst->stack.context );
+	// when CtxSwitch returns we are back in the src coroutine
+
+	// set state of new coroutine to active
+	src->state = Active;
+
+	verify( ! kernelTLS.preemption_state.enabled );
+}
+
+//-----------------------------------------------------------------------------
+// Scheduler routines
+
+// KERNEL ONLY
+void ScheduleThread( thread_desc * thrd ) {
+	verify( thrd );
+	verify( thrd->self_cor.state != Halted );
+
+	verify( ! kernelTLS.preemption_state.enabled );
+
+	verifyf( thrd->next == NULL, "Expected null got %p", thrd->next );
+
+	with( *thrd->curr_cluster ) {
+		lock  ( ready_queue_lock __cfaabi_dbg_ctx2 );
+		bool was_empty = !(ready_queue != 0);
+		append( ready_queue, thrd );
+		unlock( ready_queue_lock );
+
+		if(was_empty) {
+			lock      (proc_list_lock __cfaabi_dbg_ctx2);
+			if(idles) {
+				wake_fast(idles.head);
+			}
+			unlock    (proc_list_lock);
+		}
+		else if( struct processor * idle = idles.head ) {
+			wake_fast(idle);
+		}
+
+	}
+
+	verify( ! kernelTLS.preemption_state.enabled );
+}
+
+// KERNEL ONLY
+thread_desc * nextThread(cluster * this) with( *this ) {
+	verify( ! kernelTLS.preemption_state.enabled );
+	lock( ready_queue_lock __cfaabi_dbg_ctx2 );
+	thread_desc * head = pop_head( ready_queue );
+	unlock( ready_queue_lock );
+	verify( ! kernelTLS.preemption_state.enabled );
+	return head;
+}
+
+void BlockInternal() {
+	disable_interrupts();
+	verify( ! kernelTLS.preemption_state.enabled );
+	returnToKernel();
+	verify( ! kernelTLS.preemption_state.enabled );
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+
+void BlockInternal( __spinlock_t * lock ) {
+	disable_interrupts();
+	with( *kernelTLS.this_processor ) {
+		finish.action_code = Release;
+		finish.lock        = lock;
+	}
+
+	verify( ! kernelTLS.preemption_state.enabled );
+	returnToKernel();
+	verify( ! kernelTLS.preemption_state.enabled );
+
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+
+void BlockInternal( thread_desc * thrd ) {
+	disable_interrupts();
+	with( * kernelTLS.this_processor ) {
+		finish.action_code = Schedule;
+		finish.thrd        = thrd;
+	}
+
+	verify( ! kernelTLS.preemption_state.enabled );
+	returnToKernel();
+	verify( ! kernelTLS.preemption_state.enabled );
+
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+
+void BlockInternal( __spinlock_t * lock, thread_desc * thrd ) {
+	assert(thrd);
+	disable_interrupts();
+	with( * kernelTLS.this_processor ) {
+		finish.action_code = Release_Schedule;
+		finish.lock        = lock;
+		finish.thrd        = thrd;
+	}
+
+	verify( ! kernelTLS.preemption_state.enabled );
+	returnToKernel();
+	verify( ! kernelTLS.preemption_state.enabled );
+
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+
+void BlockInternal(__spinlock_t * locks [], unsigned short count) {
+	disable_interrupts();
+	with( * kernelTLS.this_processor ) {
+		finish.action_code = Release_Multi;
+		finish.locks       = locks;
+		finish.lock_count  = count;
+	}
+
+	verify( ! kernelTLS.preemption_state.enabled );
+	returnToKernel();
+	verify( ! kernelTLS.preemption_state.enabled );
+
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+
+void BlockInternal(__spinlock_t * locks [], unsigned short lock_count, thread_desc * thrds [], unsigned short thrd_count) {
+	disable_interrupts();
+	with( *kernelTLS.this_processor ) {
+		finish.action_code = Release_Multi_Schedule;
+		finish.locks       = locks;
+		finish.lock_count  = lock_count;
+		finish.thrds       = thrds;
+		finish.thrd_count  = thrd_count;
+	}
+
+	verify( ! kernelTLS.preemption_state.enabled );
+	returnToKernel();
+	verify( ! kernelTLS.preemption_state.enabled );
+
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+
+void BlockInternal(__finish_callback_fptr_t callback) {
+	disable_interrupts();
+	with( *kernelTLS.this_processor ) {
+		finish.action_code = Callback;
+		finish.callback    = callback;
+	}
+
+	verify( ! kernelTLS.preemption_state.enabled );
+	returnToKernel();
+	verify( ! kernelTLS.preemption_state.enabled );
+
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+
+// KERNEL ONLY
+void LeaveThread(__spinlock_t * lock, thread_desc * thrd) {
+	verify( ! kernelTLS.preemption_state.enabled );
+	with( * kernelTLS.this_processor ) {
+		finish.action_code = thrd ? Release_Schedule : Release;
+		finish.lock        = lock;
+		finish.thrd        = thrd;
+	}
+
+	returnToKernel();
+}
+
+//=============================================================================================
+// Kernel Setup logic
+//=============================================================================================
+//-----------------------------------------------------------------------------
+// Kernel boot procedures
+static void kernel_startup(void) {
+	verify( ! kernelTLS.preemption_state.enabled );
+	__cfaabi_dbg_print_safe("Kernel : Starting\n");
+
+	__cfa_dbg_global_clusters.list{ __get };
+	__cfa_dbg_global_clusters.lock{};
+
+	// Initialize the main cluster
+	mainCluster = (cluster *)&storage_mainCluster;
+	(*mainCluster){"Main Cluster"};
+
+	__cfaabi_dbg_print_safe("Kernel : Main cluster ready\n");
+
+	// Start by initializing the main thread
+	// SKULLDUGGERY: the mainThread steals the process main thread
+	// which will then be scheduled by the mainProcessor normally
+	mainThread = (thread_desc *)&storage_mainThread;
+	current_stack_info_t info;
+	(*mainThread){ &info };
+
+	__cfaabi_dbg_print_safe("Kernel : Main thread ready\n");
+
+
+
+	// Construct the processor context of the main processor
+	void ?{}(processorCtx_t & this, processor * proc) {
+		(this.__cor){ "Processor" };
+		this.__cor.starter = NULL;
+		this.proc = proc;
+	}
+
+	void ?{}(processor & this) with( this ) {
+		name = "Main Processor";
+		cltr = mainCluster;
+		terminated{ 0 };
+		do_terminate = false;
+		preemption_alarm = NULL;
+		pending_preemption = false;
+		kernel_thread = pthread_self();
+
+		runner{ &this };
+		__cfaabi_dbg_print_safe("Kernel : constructed main processor context %p\n", &runner);
+	}
+
+	// Initialize the main processor and the main processor ctx
+	// (the coroutine that contains the processing control flow)
+	mainProcessor = (processor *)&storage_mainProcessor;
+	(*mainProcessor){};
+
+	//initialize the global state variables
+	kernelTLS.this_processor = mainProcessor;
+	kernelTLS.this_thread    = mainThread;
+	kernelTLS.this_coroutine = &mainThread->self_cor;
+
+	// Enable preemption
+	kernel_start_preemption();
+
+	// Add the main thread to the ready queue
+	// once resume is called on mainProcessor->runner the mainThread needs to be scheduled like any normal thread
+	ScheduleThread(mainThread);
+
+	// SKULLDUGGERY: Force a context switch to the main processor to set the main thread's context to the current UNIX
+	// context. Hence, the main thread does not begin through CtxInvokeThread, like all other threads. The trick here is that
+	// mainThread is on the ready queue when this call is made.
+	kernel_first_resume( kernelTLS.this_processor );
+
+
+
+	// THE SYSTEM IS NOW COMPLETELY RUNNING
+	__cfaabi_dbg_print_safe("Kernel : Started\n--------------------------------------------------\n\n");
+
+	verify( ! kernelTLS.preemption_state.enabled );
+	enable_interrupts( __cfaabi_dbg_ctx );
+	verify( TL_GET( preemption_state.enabled ) );
+}
+
+static void kernel_shutdown(void) {
+	__cfaabi_dbg_print_safe("\n--------------------------------------------------\nKernel : Shutting down\n");
+
+	verify( TL_GET( preemption_state.enabled ) );
+	disable_interrupts();
+	verify( ! kernelTLS.preemption_state.enabled );
+
+	// SKULLDUGGERY: Notify the mainProcessor it needs to terminates.
+	// When its coroutine terminates, it return control to the mainThread
+	// which is currently here
+	__atomic_store_n(&mainProcessor->do_terminate, true, __ATOMIC_RELEASE);
+	returnToKernel();
+	mainThread->self_cor.state = Halted;
+
+	// THE SYSTEM IS NOW COMPLETELY STOPPED
+
+	// Disable preemption
+	kernel_stop_preemption();
+
+	// Destroy the main processor and its context in reverse order of construction
+	// These were manually constructed so we need manually destroy them
+	^(mainProcessor->runner){};
+	^(mainProcessor){};
+
+	// Final step, destroy the main thread since it is no longer needed
+	// Since we provided a stack to this taxk it will not destroy anything
+	^(mainThread){};
+
+	^(__cfa_dbg_global_clusters.list){};
+	^(__cfa_dbg_global_clusters.lock){};
+
+	__cfaabi_dbg_print_safe("Kernel : Shutdown complete\n");
+}
+
+//=============================================================================================
+// Kernel Quiescing
+//=============================================================================================
+static void halt(processor * this) with( *this ) {
+	// verify( ! __atomic_load_n(&do_terminate, __ATOMIC_SEQ_CST) );
+
+	with( *cltr ) {
+		lock      (proc_list_lock __cfaabi_dbg_ctx2);
+		remove    (procs, *this);
+		push_front(idles, *this);
+		unlock    (proc_list_lock);
+	}
+
+	__cfaabi_dbg_print_safe("Kernel : Processor %p ready to sleep\n", this);
+
+	wait( idleLock );
+
+	__cfaabi_dbg_print_safe("Kernel : Processor %p woke up and ready to run\n", this);
+
+	with( *cltr ) {
+		lock      (proc_list_lock __cfaabi_dbg_ctx2);
+		remove    (idles, *this);
+		push_front(procs, *this);
+		unlock    (proc_list_lock);
+	}
+}
+
+//=============================================================================================
+// Unexpected Terminating logic
+//=============================================================================================
+static __spinlock_t kernel_abort_lock;
+static bool kernel_abort_called = false;
+
+void * kernel_abort(void) __attribute__ ((__nothrow__)) {
+	// abort cannot be recursively entered by the same or different processors because all signal handlers return when
+	// the globalAbort flag is true.
+	lock( kernel_abort_lock __cfaabi_dbg_ctx2 );
+
+	// first task to abort ?
+	if ( kernel_abort_called ) {			// not first task to abort ?
+		unlock( kernel_abort_lock );
+
+		sigset_t mask;
+		sigemptyset( &mask );
+		sigaddset( &mask, SIGALRM );		// block SIGALRM signals
+		sigsuspend( &mask );			// block the processor to prevent further damage during abort
+		_exit( EXIT_FAILURE );			// if processor unblocks before it is killed, terminate it
+	}
+	else {
+		kernel_abort_called = true;
+		unlock( kernel_abort_lock );
+	}
+
+	return kernelTLS.this_thread;
+}
+
+void kernel_abort_msg( void * kernel_data, char * abort_text, int abort_text_size ) {
+	thread_desc * thrd = kernel_data;
+
+	if(thrd) {
+		int len = snprintf( abort_text, abort_text_size, "Error occurred while executing thread %.256s (%p)", thrd->self_cor.name, thrd );
+		__cfaabi_dbg_bits_write( abort_text, len );
+
+		if ( get_coroutine(thrd) != kernelTLS.this_coroutine ) {
+			len = snprintf( abort_text, abort_text_size, " in coroutine %.256s (%p).\n", kernelTLS.this_coroutine->name, kernelTLS.this_coroutine );
+			__cfaabi_dbg_bits_write( abort_text, len );
+		}
+		else {
+			__cfaabi_dbg_bits_write( ".\n", 2 );
+		}
+	}
+	else {
+		int len = snprintf( abort_text, abort_text_size, "Error occurred outside of any thread.\n" );
+		__cfaabi_dbg_bits_write( abort_text, len );
+	}
+}
+
+int kernel_abort_lastframe( void ) __attribute__ ((__nothrow__)) {
+	return get_coroutine(kernelTLS.this_thread) == get_coroutine(mainThread) ? 4 : 2;
+}
+
+static __spinlock_t kernel_debug_lock;
+
+extern "C" {
+	void __cfaabi_dbg_bits_acquire() {
+		lock( kernel_debug_lock __cfaabi_dbg_ctx2 );
+	}
+
+	void __cfaabi_dbg_bits_release() {
+		unlock( kernel_debug_lock );
+	}
+}
+
+//=============================================================================================
+// Kernel Utilities
+//=============================================================================================
+//-----------------------------------------------------------------------------
+// Locks
+void  ?{}( semaphore & this, int count = 1 ) {
+	(this.lock){};
+	this.count = count;
+	(this.waiting){};
+}
+void ^?{}(semaphore & this) {}
+
+void P(semaphore & this) with( this ){
+	lock( lock __cfaabi_dbg_ctx2 );
+	count -= 1;
+	if ( count < 0 ) {
+		// queue current task
+		append( waiting, kernelTLS.this_thread );
+
+		// atomically release spin lock and block
+		BlockInternal( &lock );
+	}
+	else {
+	    unlock( lock );
+	}
+}
+
+void V(semaphore & this) with( this ) {
+	thread_desc * thrd = NULL;
+	lock( lock __cfaabi_dbg_ctx2 );
+	count += 1;
+	if ( count <= 0 ) {
+		// remove task at head of waiting list
+		thrd = pop_head( waiting );
+	}
+
+	unlock( lock );
+
+	// make new owner
+	WakeThread( thrd );
+}
+
+//-----------------------------------------------------------------------------
+// Global Queues
+void doregister( cluster     & cltr ) {
+	lock      ( __cfa_dbg_global_clusters.lock __cfaabi_dbg_ctx2);
+	push_front( __cfa_dbg_global_clusters.list, cltr );
+	unlock    ( __cfa_dbg_global_clusters.lock );
+}
+
+void unregister( cluster     & cltr ) {
+	lock  ( __cfa_dbg_global_clusters.lock __cfaabi_dbg_ctx2);
+	remove( __cfa_dbg_global_clusters.list, cltr );
+	unlock( __cfa_dbg_global_clusters.lock );
+}
+
+void doregister( cluster * cltr, thread_desc & thrd ) {
+	lock      (cltr->thread_list_lock __cfaabi_dbg_ctx2);
+	push_front(cltr->threads, thrd);
+	unlock    (cltr->thread_list_lock);
+}
+
+void unregister( cluster * cltr, thread_desc & thrd ) {
+	lock  (cltr->thread_list_lock __cfaabi_dbg_ctx2);
+	remove(cltr->threads, thrd );
+	unlock(cltr->thread_list_lock);
+}
+
+void doregister( cluster * cltr, processor * proc ) {
+	lock      (cltr->proc_list_lock __cfaabi_dbg_ctx2);
+	push_front(cltr->procs, *proc);
+	unlock    (cltr->proc_list_lock);
+}
+
+void unregister( cluster * cltr, processor * proc ) {
+	lock  (cltr->proc_list_lock __cfaabi_dbg_ctx2);
+	remove(cltr->procs, *proc );
+	unlock(cltr->proc_list_lock);
+}
+
+//-----------------------------------------------------------------------------
+// Debug
+__cfaabi_dbg_debug_do(
+	extern "C" {
+		void __cfaabi_dbg_record(__spinlock_t & this, const char * prev_name) {
+			this.prev_name = prev_name;
+			this.prev_thrd = kernelTLS.this_thread;
+		}
+	}
+)
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/kernel.hfa
===================================================================
--- libcfa/src/concurrency/kernel.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/kernel.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,205 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// kernel --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Jan 17 12:27:26 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Apr 10 14:46:49 2018
+// Update Count     : 10
+//
+
+#pragma once
+
+#include <stdbool.h>
+
+#include "invoke.h"
+#include "time_t.hfa"
+
+extern "C" {
+#include <pthread.h>
+#include <semaphore.h>
+}
+
+//-----------------------------------------------------------------------------
+// Locks
+struct semaphore {
+	__spinlock_t lock;
+	int count;
+	__queue_t(thread_desc) waiting;
+};
+
+void  ?{}(semaphore & this, int count = 1);
+void ^?{}(semaphore & this);
+void   P (semaphore & this);
+void   V (semaphore & this);
+
+
+//-----------------------------------------------------------------------------
+// Processor
+extern struct cluster * mainCluster;
+
+enum FinishOpCode { No_Action, Release, Schedule, Release_Schedule, Release_Multi, Release_Multi_Schedule, Callback };
+
+typedef void (*__finish_callback_fptr_t)(void);
+
+//TODO use union, many of these fields are mutually exclusive (i.e. MULTI vs NOMULTI)
+struct FinishAction {
+	FinishOpCode action_code;
+	/*
+	// Union of possible actions
+	union {
+		// Option 1 : locks and threads
+		struct {
+			// 1 thread or N thread
+			union {
+				thread_desc * thrd;
+				struct {
+					thread_desc ** thrds;
+					unsigned short thrd_count;
+				};
+			};
+			// 1 lock or N lock
+			union {
+				__spinlock_t * lock;
+				struct {
+					__spinlock_t ** locks;
+					unsigned short lock_count;
+				};
+			};
+		};
+		// Option 2 : action pointer
+		__finish_callback_fptr_t callback;
+	};
+	/*/
+	thread_desc * thrd;
+	thread_desc ** thrds;
+	unsigned short thrd_count;
+	__spinlock_t * lock;
+	__spinlock_t ** locks;
+	unsigned short lock_count;
+	__finish_callback_fptr_t callback;
+	//*/
+};
+static inline void ?{}(FinishAction & this) {
+	this.action_code = No_Action;
+	this.thrd = NULL;
+	this.lock = NULL;
+}
+static inline void ^?{}(FinishAction & this) {}
+
+// Processor
+coroutine processorCtx_t {
+	struct processor * proc;
+};
+
+// Wrapper around kernel threads
+struct processor {
+	// Main state
+	// Coroutine ctx who does keeps the state of the processor
+	struct processorCtx_t runner;
+
+	// Cluster from which to get threads
+	struct cluster * cltr;
+
+	// Name of the processor
+	const char * name;
+
+	// Handle to pthreads
+	pthread_t kernel_thread;
+
+	// RunThread data
+	// Action to do after a thread is ran
+	struct FinishAction finish;
+
+	// Preemption data
+	// Node which is added in the discrete event simulaiton
+	struct alarm_node_t * preemption_alarm;
+
+	// If true, a preemption was triggered in an unsafe region, the processor must preempt as soon as possible
+	bool pending_preemption;
+
+	// Idle lock
+	__bin_sem_t idleLock;
+
+	// Termination
+	// Set to true to notify the processor should terminate
+	volatile bool do_terminate;
+
+	// Termination synchronisation
+	semaphore terminated;
+
+	// Link lists fields
+	struct __dbg_node_proc {
+		struct processor * next;
+		struct processor * prev;
+	} node;
+
+#ifdef __CFA_DEBUG__
+	// Last function to enable preemption on this processor
+	const char * last_enable;
+#endif
+};
+
+void  ?{}(processor & this, const char * name, struct cluster & cltr);
+void ^?{}(processor & this);
+
+static inline void  ?{}(processor & this)                    { this{ "Anonymous Processor", *mainCluster}; }
+static inline void  ?{}(processor & this, struct cluster & cltr)    { this{ "Anonymous Processor", cltr}; }
+static inline void  ?{}(processor & this, const char * name) { this{name, *mainCluster }; }
+
+static inline [processor *&, processor *& ] __get( processor & this ) {
+	return this.node.[next, prev];
+}
+
+//-----------------------------------------------------------------------------
+// Cluster
+struct cluster {
+	// Ready queue locks
+	__spinlock_t ready_queue_lock;
+
+	// Ready queue for threads
+	__queue_t(thread_desc) ready_queue;
+
+	// Name of the cluster
+	const char * name;
+
+	// Preemption rate on this cluster
+	Duration preemption_rate;
+
+	// List of processors
+	__spinlock_t proc_list_lock;
+	__dllist_t(struct processor) procs;
+	__dllist_t(struct processor) idles;
+
+	// List of processors
+	__spinlock_t thread_list_lock;
+	__dllist_t(struct thread_desc) threads;
+
+	// Link lists fields
+	struct __dbg_node_cltr {
+		cluster * next;
+		cluster * prev;
+	} node;
+};
+extern Duration default_preemption();
+
+void ?{} (cluster & this, const char * name, Duration preemption_rate);
+void ^?{}(cluster & this);
+
+static inline void ?{} (cluster & this)                           { this{"Anonymous Cluster", default_preemption()}; }
+static inline void ?{} (cluster & this, Duration preemption_rate) { this{"Anonymous Cluster", preemption_rate}; }
+static inline void ?{} (cluster & this, const char * name)        { this{name, default_preemption()}; }
+
+static inline [cluster *&, cluster *& ] __get( cluster & this ) {
+	return this.node.[next, prev];
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,114 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// kernel_private.hfa --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Feb 13 12:27:26 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Mar 29 14:06:40 2018
+// Update Count     : 3
+//
+
+#pragma once
+
+#include "kernel.hfa"
+#include "thread.hfa"
+
+#include "alarm.hfa"
+
+
+//-----------------------------------------------------------------------------
+// Scheduler
+
+extern "C" {
+	void disable_interrupts();
+	void enable_interrupts_noPoll();
+	void enable_interrupts( __cfaabi_dbg_ctx_param );
+}
+
+void ScheduleThread( thread_desc * );
+static inline void WakeThread( thread_desc * thrd ) {
+	if( !thrd ) return;
+
+	disable_interrupts();
+	ScheduleThread( thrd );
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+thread_desc * nextThread(cluster * this);
+
+//Block current thread and release/wake-up the following resources
+void BlockInternal(void);
+void BlockInternal(__spinlock_t * lock);
+void BlockInternal(thread_desc * thrd);
+void BlockInternal(__spinlock_t * lock, thread_desc * thrd);
+void BlockInternal(__spinlock_t * locks [], unsigned short count);
+void BlockInternal(__spinlock_t * locks [], unsigned short count, thread_desc * thrds [], unsigned short thrd_count);
+void BlockInternal(__finish_callback_fptr_t callback);
+void LeaveThread(__spinlock_t * lock, thread_desc * thrd);
+
+//-----------------------------------------------------------------------------
+// Processor
+void main(processorCtx_t *);
+
+static inline void wake_fast(processor * this) {
+	__cfaabi_dbg_print_safe("Kernel : Waking up processor %p\n", this);
+	post( this->idleLock );
+}
+
+static inline void wake(processor * this) {
+	disable_interrupts();
+	wake_fast(this);
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+
+struct event_kernel_t {
+	alarm_list_t alarms;
+	__spinlock_t lock;
+};
+
+extern event_kernel_t * event_kernel;
+
+struct __cfa_kernel_preemption_state_t {
+	bool enabled;
+	bool in_progress;
+	unsigned short disable_count;
+};
+
+extern volatile thread_local __cfa_kernel_preemption_state_t preemption_state;
+
+//-----------------------------------------------------------------------------
+// Threads
+extern "C" {
+      forall(dtype T | is_thread(T))
+      void CtxInvokeThread(T * this);
+}
+
+extern void ThreadCtxSwitch(coroutine_desc * src, coroutine_desc * dst);
+
+__cfaabi_dbg_debug_do(
+	extern void __cfaabi_dbg_thread_register  ( thread_desc * thrd );
+	extern void __cfaabi_dbg_thread_unregister( thread_desc * thrd );
+)
+
+//-----------------------------------------------------------------------------
+// Utils
+#define KERNEL_STORAGE(T,X) static char storage_##X[sizeof(T)]
+
+
+void doregister( struct cluster & cltr );
+void unregister( struct cluster & cltr );
+
+void doregister( struct cluster * cltr, struct thread_desc & thrd );
+void unregister( struct cluster * cltr, struct thread_desc & thrd );
+
+void doregister( struct cluster * cltr, struct processor * proc );
+void unregister( struct cluster * cltr, struct processor * proc );
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/monitor.cfa
===================================================================
--- libcfa/src/concurrency/monitor.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/monitor.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,900 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// monitor_desc.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Thd Feb 23 12:27:26 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Mar 30 14:30:26 2018
+// Update Count     : 9
+//
+
+#include "monitor.hfa"
+
+#include <stdlib.hfa>
+#include <inttypes.h>
+
+#include "kernel_private.hfa"
+
+#include "bits/algorithm.hfa"
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+static inline void set_owner ( monitor_desc * this, thread_desc * owner );
+static inline void set_owner ( monitor_desc * storage [], __lock_size_t count, thread_desc * owner );
+static inline void set_mask  ( monitor_desc * storage [], __lock_size_t count, const __waitfor_mask_t & mask );
+static inline void reset_mask( monitor_desc * this );
+
+static inline thread_desc * next_thread( monitor_desc * this );
+static inline bool is_accepted( monitor_desc * this, const __monitor_group_t & monitors );
+
+static inline void lock_all  ( __spinlock_t * locks [], __lock_size_t count );
+static inline void lock_all  ( monitor_desc * source [], __spinlock_t * /*out*/ locks [], __lock_size_t count );
+static inline void unlock_all( __spinlock_t * locks [], __lock_size_t count );
+static inline void unlock_all( monitor_desc * locks [], __lock_size_t count );
+
+static inline void save   ( monitor_desc * ctx [], __lock_size_t count, __spinlock_t * locks [], unsigned int /*out*/ recursions [], __waitfor_mask_t /*out*/ masks [] );
+static inline void restore( monitor_desc * ctx [], __lock_size_t count, __spinlock_t * locks [], unsigned int /*in */ recursions [], __waitfor_mask_t /*in */ masks [] );
+
+static inline void init     ( __lock_size_t count, monitor_desc * monitors [], __condition_node_t & waiter, __condition_criterion_t criteria [] );
+static inline void init_push( __lock_size_t count, monitor_desc * monitors [], __condition_node_t & waiter, __condition_criterion_t criteria [] );
+
+static inline thread_desc *        check_condition   ( __condition_criterion_t * );
+static inline void                 brand_condition   ( condition & );
+static inline [thread_desc *, int] search_entry_queue( const __waitfor_mask_t &, monitor_desc * monitors [], __lock_size_t count );
+
+forall(dtype T | sized( T ))
+static inline __lock_size_t insert_unique( T * array [], __lock_size_t & size, T * val );
+static inline __lock_size_t count_max    ( const __waitfor_mask_t & mask );
+static inline __lock_size_t aggregate    ( monitor_desc * storage [], const __waitfor_mask_t & mask );
+
+//-----------------------------------------------------------------------------
+// Useful defines
+#define wait_ctx(thrd, user_info)                               /* Create the necessary information to use the signaller stack                         */ \
+	__condition_node_t waiter = { thrd, count, user_info };   /* Create the node specific to this wait operation                                     */ \
+	__condition_criterion_t criteria[count];                  /* Create the creteria this wait operation needs to wake up                            */ \
+	init( count, monitors, waiter, criteria );                /* Link everything together                                                            */ \
+
+#define wait_ctx_primed(thrd, user_info)                        /* Create the necessary information to use the signaller stack                         */ \
+	__condition_node_t waiter = { thrd, count, user_info };   /* Create the node specific to this wait operation                                     */ \
+	__condition_criterion_t criteria[count];                  /* Create the creteria this wait operation needs to wake up                            */ \
+	init_push( count, monitors, waiter, criteria );           /* Link everything together and push it to the AS-Stack                                */ \
+
+#define monitor_ctx( mons, cnt )                                /* Define that create the necessary struct for internal/external scheduling operations */ \
+	monitor_desc ** monitors = mons;                          /* Save the targeted monitors                                                          */ \
+	__lock_size_t count = cnt;                                /* Save the count to a local variable                                                  */ \
+	unsigned int recursions[ count ];                         /* Save the current recursion levels to restore them later                             */ \
+	__waitfor_mask_t masks [ count ];                         /* Save the current waitfor masks to restore them later                                */ \
+	__spinlock_t *   locks [ count ];                         /* We need to pass-in an array of locks to BlockInternal                               */ \
+
+#define monitor_save    save   ( monitors, count, locks, recursions, masks )
+#define monitor_restore restore( monitors, count, locks, recursions, masks )
+
+
+//-----------------------------------------------------------------------------
+// Enter/Leave routines
+
+
+extern "C" {
+	// Enter single monitor
+	static void __enter_monitor_desc( monitor_desc * this, const __monitor_group_t & group ) {
+		// Lock the monitor spinlock
+		lock( this->lock __cfaabi_dbg_ctx2 );
+		// Interrupts disable inside critical section
+		thread_desc * thrd = kernelTLS.this_thread;
+
+		__cfaabi_dbg_print_safe( "Kernel : %10p Entering mon %p (%p)\n", thrd, this, this->owner);
+
+		if( !this->owner ) {
+			// No one has the monitor, just take it
+			set_owner( this, thrd );
+
+			__cfaabi_dbg_print_safe( "Kernel :  mon is free \n" );
+		}
+		else if( this->owner == thrd) {
+			// We already have the monitor, just note how many times we took it
+			this->recursion += 1;
+
+			__cfaabi_dbg_print_safe( "Kernel :  mon already owned \n" );
+		}
+		else if( is_accepted( this, group) ) {
+			// Some one was waiting for us, enter
+			set_owner( this, thrd );
+
+			// Reset mask
+			reset_mask( this );
+
+			__cfaabi_dbg_print_safe( "Kernel :  mon accepts \n" );
+		}
+		else {
+			__cfaabi_dbg_print_safe( "Kernel :  blocking \n" );
+
+			// Some one else has the monitor, wait in line for it
+			append( this->entry_queue, thrd );
+
+			BlockInternal( &this->lock );
+
+			__cfaabi_dbg_print_safe( "Kernel : %10p Entered  mon %p\n", thrd, this);
+
+			// BlockInternal will unlock spinlock, no need to unlock ourselves
+			return;
+		}
+
+		__cfaabi_dbg_print_safe( "Kernel : %10p Entered  mon %p\n", thrd, this);
+
+		// Release the lock and leave
+		unlock( this->lock );
+		return;
+	}
+
+	static void __enter_monitor_dtor( monitor_desc * this, fptr_t func ) {
+		// Lock the monitor spinlock
+		lock( this->lock __cfaabi_dbg_ctx2 );
+		// Interrupts disable inside critical section
+		thread_desc * thrd = kernelTLS.this_thread;
+
+		__cfaabi_dbg_print_safe( "Kernel : %10p Entering dtor for mon %p (%p)\n", thrd, this, this->owner);
+
+
+		if( !this->owner ) {
+			__cfaabi_dbg_print_safe( "Kernel : Destroying free mon %p\n", this);
+
+			// No one has the monitor, just take it
+			set_owner( this, thrd );
+
+			unlock( this->lock );
+			return;
+		}
+		else if( this->owner == thrd) {
+			// We already have the monitor... but where about to destroy it so the nesting will fail
+			// Abort!
+			abort( "Attempt to destroy monitor %p by thread \"%.256s\" (%p) in nested mutex.", this, thrd->self_cor.name, thrd );
+		}
+
+		__lock_size_t count = 1;
+		monitor_desc ** monitors = &this;
+		__monitor_group_t group = { &this, 1, func };
+		if( is_accepted( this, group) ) {
+			__cfaabi_dbg_print_safe( "Kernel :  mon accepts dtor, block and signal it \n" );
+
+			// Wake the thread that is waiting for this
+			__condition_criterion_t * urgent = pop( this->signal_stack );
+			verify( urgent );
+
+			// Reset mask
+			reset_mask( this );
+
+			// Create the node specific to this wait operation
+			wait_ctx_primed( thrd, 0 )
+
+			// Some one else has the monitor, wait for him to finish and then run
+			BlockInternal( &this->lock, urgent->owner->waiting_thread );
+
+			// Some one was waiting for us, enter
+			set_owner( this, thrd );
+		}
+		else {
+			__cfaabi_dbg_print_safe( "Kernel :  blocking \n" );
+
+			wait_ctx( thrd, 0 )
+			this->dtor_node = &waiter;
+
+			// Some one else has the monitor, wait in line for it
+			append( this->entry_queue, thrd );
+			BlockInternal( &this->lock );
+
+			// BlockInternal will unlock spinlock, no need to unlock ourselves
+			return;
+		}
+
+		__cfaabi_dbg_print_safe( "Kernel : Destroying %p\n", this);
+
+	}
+
+	// Leave single monitor
+	void __leave_monitor_desc( monitor_desc * this ) {
+		// Lock the monitor spinlock
+		lock( this->lock __cfaabi_dbg_ctx2 );
+
+		__cfaabi_dbg_print_safe( "Kernel : %10p Leaving mon %p (%p)\n", kernelTLS.this_thread, this, this->owner);
+
+		verifyf( kernelTLS.this_thread == this->owner, "Expected owner to be %p, got %p (r: %i, m: %p)", kernelTLS.this_thread, this->owner, this->recursion, this );
+
+		// Leaving a recursion level, decrement the counter
+		this->recursion -= 1;
+
+		// If we haven't left the last level of recursion
+		// it means we don't need to do anything
+		if( this->recursion != 0) {
+			__cfaabi_dbg_print_safe( "Kernel :  recursion still %d\n", this->recursion);
+			unlock( this->lock );
+			return;
+		}
+
+		// Get the next thread, will be null on low contention monitor
+		thread_desc * new_owner = next_thread( this );
+
+		// We can now let other threads in safely
+		unlock( this->lock );
+
+		//We need to wake-up the thread
+		WakeThread( new_owner );
+	}
+
+	// Leave single monitor for the last time
+	void __leave_dtor_monitor_desc( monitor_desc * this ) {
+		__cfaabi_dbg_debug_do(
+			if( TL_GET( this_thread ) != this->owner ) {
+				abort( "Destroyed monitor %p has inconsistent owner, expected %p got %p.\n", this, TL_GET( this_thread ), this->owner);
+			}
+			if( this->recursion != 1 ) {
+				abort( "Destroyed monitor %p has %d outstanding nested calls.\n", this, this->recursion - 1);
+			}
+		)
+	}
+
+	// Leave the thread monitor
+	// last routine called by a thread.
+	// Should never return
+	void __leave_thread_monitor( thread_desc * thrd ) {
+		monitor_desc * this = &thrd->self_mon;
+
+		// Lock the monitor now
+		lock( this->lock __cfaabi_dbg_ctx2 );
+
+		disable_interrupts();
+
+		thrd->self_cor.state = Halted;
+
+		verifyf( thrd == this->owner, "Expected owner to be %p, got %p (r: %i, m: %p)", thrd, this->owner, this->recursion, this );
+
+		// Leaving a recursion level, decrement the counter
+		this->recursion -= 1;
+
+		// If we haven't left the last level of recursion
+		// it must mean there is an error
+		if( this->recursion != 0) { abort( "Thread internal monitor has unbalanced recursion" ); }
+
+		// Fetch the next thread, can be null
+		thread_desc * new_owner = next_thread( this );
+
+		// Leave the thread, this will unlock the spinlock
+		// Use leave thread instead of BlockInternal which is
+		// specialized for this case and supports null new_owner
+		LeaveThread( &this->lock, new_owner );
+
+		// Control flow should never reach here!
+	}
+}
+
+// Enter multiple monitor
+// relies on the monitor array being sorted
+static inline void enter( __monitor_group_t monitors ) {
+	for( __lock_size_t i = 0; i < monitors.size; i++) {
+		__enter_monitor_desc( monitors[i], monitors );
+	}
+}
+
+// Leave multiple monitor
+// relies on the monitor array being sorted
+static inline void leave(monitor_desc * monitors [], __lock_size_t count) {
+	for( __lock_size_t i = count - 1; i >= 0; i--) {
+		__leave_monitor_desc( monitors[i] );
+	}
+}
+
+// Ctor for monitor guard
+// Sorts monitors before entering
+void ?{}( monitor_guard_t & this, monitor_desc * m [], __lock_size_t count, fptr_t func ) {
+	thread_desc * thrd = TL_GET( this_thread );
+
+	// Store current array
+	this.m = m;
+	this.count = count;
+
+	// Sort monitors based on address
+	__libcfa_small_sort(this.m, count);
+
+	// Save previous thread context
+	this.prev = thrd->monitors;
+
+	// Update thread context (needed for conditions)
+	(thrd->monitors){m, count, func};
+
+	// __cfaabi_dbg_print_safe( "MGUARD : enter %d\n", count);
+
+	// Enter the monitors in order
+	__monitor_group_t group = {this.m, this.count, func};
+	enter( group );
+
+	// __cfaabi_dbg_print_safe( "MGUARD : entered\n" );
+}
+
+
+// Dtor for monitor guard
+void ^?{}( monitor_guard_t & this ) {
+	// __cfaabi_dbg_print_safe( "MGUARD : leaving %d\n", this.count);
+
+	// Leave the monitors in order
+	leave( this.m, this.count );
+
+	// __cfaabi_dbg_print_safe( "MGUARD : left\n" );
+
+	// Restore thread context
+	TL_GET( this_thread )->monitors = this.prev;
+}
+
+// Ctor for monitor guard
+// Sorts monitors before entering
+void ?{}( monitor_dtor_guard_t & this, monitor_desc * m [], fptr_t func ) {
+	// optimization
+	thread_desc * thrd = TL_GET( this_thread );
+
+	// Store current array
+	this.m = *m;
+
+	// Save previous thread context
+	this.prev = thrd->monitors;
+
+	// Update thread context (needed for conditions)
+	(thrd->monitors){m, 1, func};
+
+	__enter_monitor_dtor( this.m, func );
+}
+
+// Dtor for monitor guard
+void ^?{}( monitor_dtor_guard_t & this ) {
+	// Leave the monitors in order
+	__leave_dtor_monitor_desc( this.m );
+
+	// Restore thread context
+	TL_GET( this_thread )->monitors = this.prev;
+}
+
+//-----------------------------------------------------------------------------
+// Internal scheduling types
+void ?{}(__condition_node_t & this, thread_desc * waiting_thread, __lock_size_t count, uintptr_t user_info ) {
+	this.waiting_thread = waiting_thread;
+	this.count = count;
+	this.next = NULL;
+	this.user_info = user_info;
+}
+
+void ?{}(__condition_criterion_t & this ) with( this ) {
+	ready  = false;
+	target = NULL;
+	owner  = NULL;
+	next   = NULL;
+}
+
+void ?{}(__condition_criterion_t & this, monitor_desc * target, __condition_node_t & owner ) {
+	this.ready  = false;
+	this.target = target;
+	this.owner  = &owner;
+	this.next   = NULL;
+}
+
+//-----------------------------------------------------------------------------
+// Internal scheduling
+void wait( condition & this, uintptr_t user_info = 0 ) {
+	brand_condition( this );
+
+	// Check that everything is as expected
+	assertf( this.monitors != NULL, "Waiting with no monitors (%p)", this.monitors );
+	verifyf( this.monitor_count != 0, "Waiting with 0 monitors (%"PRIiFAST16")", this.monitor_count );
+	verifyf( this.monitor_count < 32u, "Excessive monitor count (%"PRIiFAST16")", this.monitor_count );
+
+	// Create storage for monitor context
+	monitor_ctx( this.monitors, this.monitor_count );
+
+	// Create the node specific to this wait operation
+	wait_ctx( TL_GET( this_thread ), user_info );
+
+	// Append the current wait operation to the ones already queued on the condition
+	// We don't need locks for that since conditions must always be waited on inside monitor mutual exclusion
+	append( this.blocked, &waiter );
+
+	// Lock all monitors (aggregates the locks as well)
+	lock_all( monitors, locks, count );
+
+	// Find the next thread(s) to run
+	__lock_size_t thread_count = 0;
+	thread_desc * threads[ count ];
+	__builtin_memset( threads, 0, sizeof( threads ) );
+
+	// Save monitor states
+	monitor_save;
+
+	// Remove any duplicate threads
+	for( __lock_size_t i = 0; i < count; i++) {
+		thread_desc * new_owner = next_thread( monitors[i] );
+		insert_unique( threads, thread_count, new_owner );
+	}
+
+	// Everything is ready to go to sleep
+	BlockInternal( locks, count, threads, thread_count );
+
+	// We are back, restore the owners and recursions
+	monitor_restore;
+}
+
+bool signal( condition & this ) {
+	if( is_empty( this ) ) { return false; }
+
+	//Check that everything is as expected
+	verify( this.monitors );
+	verify( this.monitor_count != 0 );
+
+	//Some more checking in debug
+	__cfaabi_dbg_debug_do(
+		thread_desc * this_thrd = TL_GET( this_thread );
+		if ( this.monitor_count != this_thrd->monitors.size ) {
+			abort( "Signal on condition %p made with different number of monitor(s), expected %zi got %zi", &this, this.monitor_count, this_thrd->monitors.size );
+		}
+
+		for(int i = 0; i < this.monitor_count; i++) {
+			if ( this.monitors[i] != this_thrd->monitors[i] ) {
+				abort( "Signal on condition %p made with different monitor, expected %p got %p", &this, this.monitors[i], this_thrd->monitors[i] );
+			}
+		}
+	);
+
+	__lock_size_t count = this.monitor_count;
+
+	// Lock all monitors
+	lock_all( this.monitors, NULL, count );
+
+	//Pop the head of the waiting queue
+	__condition_node_t * node = pop_head( this.blocked );
+
+	//Add the thread to the proper AS stack
+	for(int i = 0; i < count; i++) {
+		__condition_criterion_t * crit = &node->criteria[i];
+		assert( !crit->ready );
+		push( crit->target->signal_stack, crit );
+	}
+
+	//Release
+	unlock_all( this.monitors, count );
+
+	return true;
+}
+
+bool signal_block( condition & this ) {
+	if( !this.blocked.head ) { return false; }
+
+	//Check that everything is as expected
+	verifyf( this.monitors != NULL, "Waiting with no monitors (%p)", this.monitors );
+	verifyf( this.monitor_count != 0, "Waiting with 0 monitors (%"PRIiFAST16")", this.monitor_count );
+
+	// Create storage for monitor context
+	monitor_ctx( this.monitors, this.monitor_count );
+
+	// Lock all monitors (aggregates the locks them as well)
+	lock_all( monitors, locks, count );
+
+
+	// Create the node specific to this wait operation
+	wait_ctx_primed( kernelTLS.this_thread, 0 )
+
+	//save contexts
+	monitor_save;
+
+	//Find the thread to run
+	thread_desc * signallee = pop_head( this.blocked )->waiting_thread;
+	set_owner( monitors, count, signallee );
+
+	__cfaabi_dbg_print_buffer_decl( "Kernel : signal_block condition %p (s: %p)\n", &this, signallee );
+
+	//Everything is ready to go to sleep
+	BlockInternal( locks, count, &signallee, 1 );
+
+
+	// WE WOKE UP
+
+
+	__cfaabi_dbg_print_buffer_local( "Kernel :   signal_block returned\n" );
+
+	//We are back, restore the masks and recursions
+	monitor_restore;
+
+	return true;
+}
+
+// Access the user_info of the thread waiting at the front of the queue
+uintptr_t front( condition & this ) {
+	verifyf( !is_empty(this),
+		"Attempt to access user data on an empty condition.\n"
+		"Possible cause is not checking if the condition is empty before reading stored data."
+	);
+	return ((typeof(this.blocked.head))this.blocked.head)->user_info;
+}
+
+//-----------------------------------------------------------------------------
+// External scheduling
+// cases to handle :
+// 	- target already there :
+// 		block and wake
+// 	- dtor already there
+// 		put thread on signaller stack
+// 	- non-blocking
+// 		return else
+// 	- timeout
+// 		return timeout
+// 	- block
+// 		setup mask
+// 		block
+void __waitfor_internal( const __waitfor_mask_t & mask, int duration ) {
+	// This statment doesn't have a contiguous list of monitors...
+	// Create one!
+	__lock_size_t max = count_max( mask );
+	monitor_desc * mon_storage[max];
+	__builtin_memset( mon_storage, 0, sizeof( mon_storage ) );
+	__lock_size_t actual_count = aggregate( mon_storage, mask );
+
+	__cfaabi_dbg_print_buffer_decl( "Kernel : waitfor %"PRIdFAST16" (s: %"PRIdFAST16", m: %"PRIdFAST16")\n", actual_count, mask.size, (__lock_size_t)max);
+
+	if(actual_count == 0) return;
+
+	__cfaabi_dbg_print_buffer_local( "Kernel : waitfor internal proceeding\n" );
+
+	// Create storage for monitor context
+	monitor_ctx( mon_storage, actual_count );
+
+	// Lock all monitors (aggregates the locks as well)
+	lock_all( monitors, locks, count );
+
+	{
+		// Check if the entry queue
+		thread_desc * next; int index;
+		[next, index] = search_entry_queue( mask, monitors, count );
+
+		if( next ) {
+			*mask.accepted = index;
+			__acceptable_t& accepted = mask[index];
+			if( accepted.is_dtor ) {
+				__cfaabi_dbg_print_buffer_local( "Kernel : dtor already there\n" );
+				verifyf( accepted.size == 1,  "ERROR: Accepted dtor has more than 1 mutex parameter." );
+
+				monitor_desc * mon2dtor = accepted[0];
+				verifyf( mon2dtor->dtor_node, "ERROR: Accepted monitor has no dtor_node." );
+
+				__condition_criterion_t * dtor_crit = mon2dtor->dtor_node->criteria;
+				push( mon2dtor->signal_stack, dtor_crit );
+
+				unlock_all( locks, count );
+			}
+			else {
+				__cfaabi_dbg_print_buffer_local( "Kernel : thread present, baton-passing\n" );
+
+				// Create the node specific to this wait operation
+				wait_ctx_primed( kernelTLS.this_thread, 0 );
+
+				// Save monitor states
+				monitor_save;
+
+				__cfaabi_dbg_print_buffer_local( "Kernel :  baton of %"PRIdFAST16" monitors : ", count );
+				#ifdef __CFA_DEBUG_PRINT__
+					for( int i = 0; i < count; i++) {
+						__cfaabi_dbg_print_buffer_local( "%p %p ", monitors[i], monitors[i]->signal_stack.top );
+					}
+				#endif
+				__cfaabi_dbg_print_buffer_local( "\n" );
+
+				// Set the owners to be the next thread
+				set_owner( monitors, count, next );
+
+				// Everything is ready to go to sleep
+				BlockInternal( locks, count, &next, 1 );
+
+				// We are back, restore the owners and recursions
+				monitor_restore;
+
+				__cfaabi_dbg_print_buffer_local( "Kernel : thread present, returned\n" );
+			}
+
+			__cfaabi_dbg_print_buffer_local( "Kernel : accepted %d\n", *mask.accepted);
+			return;
+		}
+	}
+
+
+	if( duration == 0 ) {
+		__cfaabi_dbg_print_buffer_local( "Kernel : non-blocking, exiting\n" );
+
+		unlock_all( locks, count );
+
+		__cfaabi_dbg_print_buffer_local( "Kernel : accepted %d\n", *mask.accepted);
+		return;
+	}
+
+
+	verifyf( duration < 0, "Timeout on waitfor statments not supported yet." );
+
+	__cfaabi_dbg_print_buffer_local( "Kernel : blocking waitfor\n" );
+
+	// Create the node specific to this wait operation
+	wait_ctx_primed( kernelTLS.this_thread, 0 );
+
+	monitor_save;
+	set_mask( monitors, count, mask );
+
+	for( __lock_size_t i = 0; i < count; i++) {
+		verify( monitors[i]->owner == kernelTLS.this_thread );
+	}
+
+	//Everything is ready to go to sleep
+	BlockInternal( locks, count );
+
+
+	// WE WOKE UP
+
+
+	//We are back, restore the masks and recursions
+	monitor_restore;
+
+	__cfaabi_dbg_print_buffer_local( "Kernel : exiting\n" );
+
+	__cfaabi_dbg_print_buffer_local( "Kernel : accepted %d\n", *mask.accepted);
+}
+
+//-----------------------------------------------------------------------------
+// Utilities
+
+static inline void set_owner( monitor_desc * this, thread_desc * owner ) {
+	// __cfaabi_dbg_print_safe( "Kernal :   Setting owner of %p to %p ( was %p)\n", this, owner, this->owner );
+
+	//Pass the monitor appropriately
+	this->owner = owner;
+
+	//We are passing the monitor to someone else, which means recursion level is not 0
+	this->recursion = owner ? 1 : 0;
+}
+
+static inline void set_owner( monitor_desc * monitors [], __lock_size_t count, thread_desc * owner ) {
+	monitors[0]->owner     = owner;
+	monitors[0]->recursion = 1;
+	for( __lock_size_t i = 1; i < count; i++ ) {
+		monitors[i]->owner     = owner;
+		monitors[i]->recursion = 0;
+	}
+}
+
+static inline void set_mask( monitor_desc * storage [], __lock_size_t count, const __waitfor_mask_t & mask ) {
+	for( __lock_size_t i = 0; i < count; i++) {
+		storage[i]->mask = mask;
+	}
+}
+
+static inline void reset_mask( monitor_desc * this ) {
+	this->mask.accepted = NULL;
+	this->mask.data = NULL;
+	this->mask.size = 0;
+}
+
+static inline thread_desc * next_thread( monitor_desc * this ) {
+	//Check the signaller stack
+	__cfaabi_dbg_print_safe( "Kernel :  mon %p AS-stack top %p\n", this, this->signal_stack.top);
+	__condition_criterion_t * urgent = pop( this->signal_stack );
+	if( urgent ) {
+		//The signaller stack is not empty,
+		//regardless of if we are ready to baton pass,
+		//we need to set the monitor as in use
+		set_owner( this,  urgent->owner->waiting_thread );
+
+		return check_condition( urgent );
+	}
+
+	// No signaller thread
+	// Get the next thread in the entry_queue
+	thread_desc * new_owner = pop_head( this->entry_queue );
+	set_owner( this, new_owner );
+
+	return new_owner;
+}
+
+static inline bool is_accepted( monitor_desc * this, const __monitor_group_t & group ) {
+	__acceptable_t * it = this->mask.data; // Optim
+	__lock_size_t count = this->mask.size;
+
+	// Check if there are any acceptable functions
+	if( !it ) return false;
+
+	// If this isn't the first monitor to test this, there is no reason to repeat the test.
+	if( this != group[0] ) return group[0]->mask.accepted >= 0;
+
+	// For all acceptable functions check if this is the current function.
+	for( __lock_size_t i = 0; i < count; i++, it++ ) {
+		if( *it == group ) {
+			*this->mask.accepted = i;
+			return true;
+		}
+	}
+
+	// No function matched
+	return false;
+}
+
+static inline void init( __lock_size_t count, monitor_desc * monitors [], __condition_node_t & waiter, __condition_criterion_t criteria [] ) {
+	for( __lock_size_t i = 0; i < count; i++) {
+		(criteria[i]){ monitors[i], waiter };
+	}
+
+	waiter.criteria = criteria;
+}
+
+static inline void init_push( __lock_size_t count, monitor_desc * monitors [], __condition_node_t & waiter, __condition_criterion_t criteria [] ) {
+	for( __lock_size_t i = 0; i < count; i++) {
+		(criteria[i]){ monitors[i], waiter };
+		__cfaabi_dbg_print_safe( "Kernel :  target %p = %p\n", criteria[i].target, &criteria[i] );
+		push( criteria[i].target->signal_stack, &criteria[i] );
+	}
+
+	waiter.criteria = criteria;
+}
+
+static inline void lock_all( __spinlock_t * locks [], __lock_size_t count ) {
+	for( __lock_size_t i = 0; i < count; i++ ) {
+		lock( *locks[i] __cfaabi_dbg_ctx2 );
+	}
+}
+
+static inline void lock_all( monitor_desc * source [], __spinlock_t * /*out*/ locks [], __lock_size_t count ) {
+	for( __lock_size_t i = 0; i < count; i++ ) {
+		__spinlock_t * l = &source[i]->lock;
+		lock( *l __cfaabi_dbg_ctx2 );
+		if(locks) locks[i] = l;
+	}
+}
+
+static inline void unlock_all( __spinlock_t * locks [], __lock_size_t count ) {
+	for( __lock_size_t i = 0; i < count; i++ ) {
+		unlock( *locks[i] );
+	}
+}
+
+static inline void unlock_all( monitor_desc * locks [], __lock_size_t count ) {
+	for( __lock_size_t i = 0; i < count; i++ ) {
+		unlock( locks[i]->lock );
+	}
+}
+
+static inline void save(
+	monitor_desc * ctx [],
+	__lock_size_t count,
+	__attribute((unused)) __spinlock_t * locks [],
+	unsigned int /*out*/ recursions [],
+	__waitfor_mask_t /*out*/ masks []
+) {
+	for( __lock_size_t i = 0; i < count; i++ ) {
+		recursions[i] = ctx[i]->recursion;
+		masks[i]      = ctx[i]->mask;
+	}
+}
+
+static inline void restore(
+	monitor_desc * ctx [],
+	__lock_size_t count,
+	__spinlock_t * locks [],
+	unsigned int /*out*/ recursions [],
+	__waitfor_mask_t /*out*/ masks []
+) {
+	lock_all( locks, count );
+	for( __lock_size_t i = 0; i < count; i++ ) {
+		ctx[i]->recursion = recursions[i];
+		ctx[i]->mask      = masks[i];
+	}
+	unlock_all( locks, count );
+}
+
+// Function has 2 different behavior
+// 1 - Marks a monitors as being ready to run
+// 2 - Checks if all the monitors are ready to run
+//     if so return the thread to run
+static inline thread_desc * check_condition( __condition_criterion_t * target ) {
+	__condition_node_t * node = target->owner;
+	unsigned short count = node->count;
+	__condition_criterion_t * criteria = node->criteria;
+
+	bool ready2run = true;
+
+	for(	int i = 0; i < count; i++ ) {
+
+		// __cfaabi_dbg_print_safe( "Checking %p for %p\n", &criteria[i], target );
+		if( &criteria[i] == target ) {
+			criteria[i].ready = true;
+			// __cfaabi_dbg_print_safe( "True\n" );
+		}
+
+		ready2run = criteria[i].ready && ready2run;
+	}
+
+	__cfaabi_dbg_print_safe( "Kernel :  Runing %i (%p)\n", ready2run, ready2run ? node->waiting_thread : NULL );
+	return ready2run ? node->waiting_thread : NULL;
+}
+
+static inline void brand_condition( condition & this ) {
+	thread_desc * thrd = TL_GET( this_thread );
+	if( !this.monitors ) {
+		// __cfaabi_dbg_print_safe( "Branding\n" );
+		assertf( thrd->monitors.data != NULL, "No current monitor to brand condition %p", thrd->monitors.data );
+		this.monitor_count = thrd->monitors.size;
+
+		this.monitors = (monitor_desc **)malloc( this.monitor_count * sizeof( *this.monitors ) );
+		for( int i = 0; i < this.monitor_count; i++ ) {
+			this.monitors[i] = thrd->monitors[i];
+		}
+	}
+}
+
+static inline [thread_desc *, int] search_entry_queue( const __waitfor_mask_t & mask, monitor_desc * monitors [], __lock_size_t count ) {
+
+	__queue_t(thread_desc) & entry_queue = monitors[0]->entry_queue;
+
+	// For each thread in the entry-queue
+	for(	thread_desc ** thrd_it = &entry_queue.head;
+		*thrd_it;
+		thrd_it = &(*thrd_it)->next
+	) {
+		// For each acceptable check if it matches
+		int i = 0;
+		__acceptable_t * end   = end  (mask);
+		__acceptable_t * begin = begin(mask);
+		for( __acceptable_t * it = begin; it != end; it++, i++ ) {
+			// Check if we have a match
+			if( *it == (*thrd_it)->monitors ) {
+
+				// If we have a match return it
+				// after removeing it from the entry queue
+				return [remove( entry_queue, thrd_it ), i];
+			}
+		}
+	}
+
+	return [0, -1];
+}
+
+forall(dtype T | sized( T ))
+static inline __lock_size_t insert_unique( T * array [], __lock_size_t & size, T * val ) {
+	if( !val ) return size;
+
+	for( __lock_size_t i = 0; i <= size; i++) {
+		if( array[i] == val ) return size;
+	}
+
+	array[size] = val;
+	size = size + 1;
+	return size;
+}
+
+static inline __lock_size_t count_max( const __waitfor_mask_t & mask ) {
+	__lock_size_t max = 0;
+	for( __lock_size_t i = 0; i < mask.size; i++ ) {
+		__acceptable_t & accepted = mask[i];
+		max += accepted.size;
+	}
+	return max;
+}
+
+static inline __lock_size_t aggregate( monitor_desc * storage [], const __waitfor_mask_t & mask ) {
+	__lock_size_t size = 0;
+	for( __lock_size_t i = 0; i < mask.size; i++ ) {
+		__acceptable_t & accepted = mask[i];
+		__libcfa_small_sort( accepted.data, accepted.size );
+		for( __lock_size_t j = 0; j < accepted.size; j++) {
+			insert_unique( storage, size, accepted[j] );
+		}
+	}
+	// TODO insertion sort instead of this
+	__libcfa_small_sort( storage, size );
+	return size;
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/monitor.hfa
===================================================================
--- libcfa/src/concurrency/monitor.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/monitor.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,149 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// monitor --
+//
+// Author           : Thierry Delisle
+// Created On       : Thd Feb 23 12:27:26 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Oct  7 18:06:45 2017
+// Update Count     : 10
+//
+
+#pragma once
+
+#include <stddef.h>
+
+#include <assert.h>
+#include "invoke.h"
+#include "stdlib.hfa"
+
+trait is_monitor(dtype T) {
+	monitor_desc * get_monitor( T & );
+	void ^?{}( T & mutex );
+};
+
+static inline void ?{}(monitor_desc & this) with( this ) {
+	lock{};
+	entry_queue{};
+	signal_stack{};
+	owner         = NULL;
+	recursion     = 0;
+	mask.accepted = NULL;
+	mask.data     = NULL;
+	mask.size     = 0;
+	dtor_node     = NULL;
+}
+
+struct monitor_guard_t {
+	monitor_desc ** 	m;
+	__lock_size_t   	count;
+	__monitor_group_t prev;
+};
+
+void ?{}( monitor_guard_t & this, monitor_desc ** m, __lock_size_t count, void (*func)() );
+void ^?{}( monitor_guard_t & this );
+
+struct monitor_dtor_guard_t {
+	monitor_desc *    m;
+	__monitor_group_t prev;
+};
+
+void ?{}( monitor_dtor_guard_t & this, monitor_desc ** m, void (*func)() );
+void ^?{}( monitor_dtor_guard_t & this );
+
+static inline forall( dtype T | sized(T) | { void ^?{}( T & mutex ); } )
+void delete( T * th ) {
+	^(*th){};
+	free( th );
+}
+
+//-----------------------------------------------------------------------------
+// Internal scheduling
+
+struct __condition_criterion_t {
+	// Whether or not the criterion is met (True if met)
+	bool ready;
+
+	// The monitor this criterion concerns
+	monitor_desc * target;
+
+	// The parent node to which this criterion belongs
+	struct __condition_node_t * owner;
+
+	// Intrusive linked list Next field
+	__condition_criterion_t * next;
+};
+
+static inline __condition_criterion_t * & get_next( __condition_criterion_t & this ) {
+	return this.next;
+}
+
+struct __condition_node_t {
+	// Thread that needs to be woken when all criteria are met
+	thread_desc * waiting_thread;
+
+	// Array of criteria (Criterions are contiguous in memory)
+	__condition_criterion_t * criteria;
+
+	// Number of criterions in the criteria
+	__lock_size_t count;
+
+	// Intrusive linked list Next field
+	__condition_node_t * next;
+
+	// Custom user info accessible before signalling
+	uintptr_t user_info;
+};
+
+static inline __condition_node_t * & get_next( __condition_node_t & this ) {
+	return this.next;
+}
+
+void ?{}(__condition_node_t & this, thread_desc * waiting_thread, __lock_size_t count, uintptr_t user_info );
+void ?{}(__condition_criterion_t & this );
+void ?{}(__condition_criterion_t & this, monitor_desc * target, __condition_node_t * owner );
+
+struct condition {
+	// Link list which contains the blocked threads as-well as the information needed to unblock them
+	__queue_t(__condition_node_t) blocked;
+
+	// Array of monitor pointers (Monitors are NOT contiguous in memory)
+	monitor_desc ** monitors;
+
+	// Number of monitors in the array
+	__lock_size_t monitor_count;
+};
+
+static inline void ?{}( condition & this ) {
+	this.monitors = NULL;
+	this.monitor_count = 0;
+}
+
+static inline void ^?{}( condition & this ) {
+	free( this.monitors );
+}
+
+              void wait        ( condition & this, uintptr_t user_info = 0 );
+              bool signal      ( condition & this );
+              bool signal_block( condition & this );
+static inline bool is_empty    ( condition & this ) { return !this.blocked.head; }
+         uintptr_t front       ( condition & this );
+
+//-----------------------------------------------------------------------------
+// External scheduling
+
+struct __acceptable_t {
+	inline struct __monitor_group_t;
+	bool is_dtor;
+};
+
+void __waitfor_internal( const __waitfor_mask_t & mask, int duration );
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/mutex.cfa
===================================================================
--- libcfa/src/concurrency/mutex.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/mutex.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,193 @@
+
+//                              -*- Mode: CFA -*-
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// mutex.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Fri May 25 01:37:11 2018
+// Last Modified By : Thierry Delisle
+// Last Modified On : Fri May 25 01:37:51 2018
+// Update Count     : 0
+//
+
+#include "mutex.hfa"
+
+#include "kernel_private.hfa"
+
+//-----------------------------------------------------------------------------
+// Locks
+
+// Exclusive lock - non-recursive
+// ---
+void ?{}(mutex_lock & this) {
+	this.lock{};
+	this.blocked_threads{};
+}
+
+void ^?{}(mutex_lock & this) {
+	// default
+}
+
+void lock(mutex_lock & this) with(this) {
+	lock( lock __cfaabi_dbg_ctx2 );
+	if( is_locked ) {
+		append( blocked_threads, kernelTLS.this_thread );
+		BlockInternal( &lock );
+	}
+	else {
+		is_locked = true;
+		unlock( lock );
+	}
+}
+
+bool try_lock(mutex_lock & this) with(this) {
+	bool ret = false;
+	lock( lock __cfaabi_dbg_ctx2 );
+	if( !is_locked ) {
+		ret = true;
+		is_locked = true;
+	}
+	unlock( lock );
+	return ret;
+}
+
+void unlock(mutex_lock & this) {
+	lock( this.lock __cfaabi_dbg_ctx2 );
+	this.is_locked = (this.blocked_threads != 0);
+	WakeThread(
+		pop_head( this.blocked_threads )
+	);
+	unlock( this.lock );
+}
+
+// Exclusive lock - non-recursive
+// ---
+void ?{}(recursive_mutex_lock & this) {
+	this.lock{};
+	this.blocked_threads{};
+	this.owner = NULL;
+	this.recursion_count = 0;
+}
+
+void ^?{}(recursive_mutex_lock & this) {
+	// default
+}
+
+void lock(recursive_mutex_lock & this) with(this) {
+	lock( lock __cfaabi_dbg_ctx2 );
+	if( owner == NULL ) {
+		owner = kernelTLS.this_thread;
+		recursion_count = 1;
+		unlock( lock );
+	}
+	else if( owner == kernelTLS.this_thread ) {
+		recursion_count++;
+		unlock( lock );
+	}
+	else {
+		append( blocked_threads, kernelTLS.this_thread );
+		BlockInternal( &lock );
+	}
+}
+
+bool try_lock(recursive_mutex_lock & this) with(this) {
+	bool ret = false;
+	lock( lock __cfaabi_dbg_ctx2 );
+	if( owner == NULL ) {
+		owner = kernelTLS.this_thread;
+		recursion_count = 1;
+		ret = true;
+	}
+	else if( owner == kernelTLS.this_thread ) {
+		recursion_count++;
+		ret = true;
+	}
+	unlock( lock );
+	return ret;
+}
+
+void unlock(recursive_mutex_lock & this) with(this) {
+	lock( lock __cfaabi_dbg_ctx2 );
+	recursion_count--;
+	if( recursion_count == 0 ) {
+		thread_desc * thrd = pop_head( blocked_threads );
+		owner = thrd;
+		recursion_count = (thrd ? 1 : 0);
+		WakeThread( thrd );
+	}
+	unlock( lock );
+}
+
+//-----------------------------------------------------------------------------
+// Conditions
+void ?{}(condition_variable & this) {
+	this.blocked_threads{};
+}
+
+void ^?{}(condition_variable & this) {
+	// default
+}
+
+void notify_one(condition_variable & this) with(this) {
+	lock( lock __cfaabi_dbg_ctx2 );
+	WakeThread(
+		pop_head( this.blocked_threads )
+	);
+	unlock( lock );
+}
+
+void notify_all(condition_variable & this) with(this) {
+	lock( lock __cfaabi_dbg_ctx2 );
+	while(this.blocked_threads) {
+		WakeThread(
+			pop_head( this.blocked_threads )
+		);
+	}
+	unlock( lock );
+}
+
+void wait(condition_variable & this) {
+	lock( this.lock __cfaabi_dbg_ctx2 );
+	append( this.blocked_threads, kernelTLS.this_thread );
+	BlockInternal( &this.lock );
+}
+
+forall(dtype L | is_lock(L))
+void wait(condition_variable & this, L & l) {
+	lock( this.lock __cfaabi_dbg_ctx2 );
+	append( this.blocked_threads, kernelTLS.this_thread );
+	void __unlock(void) {
+		unlock(l);
+		unlock(this.lock);
+	}
+	BlockInternal( __unlock );
+	lock(l);
+}
+
+//-----------------------------------------------------------------------------
+// Scopes
+forall(dtype L | is_lock(L))
+void lock_all  ( L * locks[], size_t count) {
+	// Sort locks based on addresses
+	__libcfa_small_sort(locks, count);
+
+	// Lock all
+	for(size_t i = 0; i < count; i++) {
+		L * l = locks[i];
+		lock( *l );
+	}
+}
+
+forall(dtype L | is_lock(L))
+void unlock_all( L * locks[], size_t count) {
+	// Lock all
+	for(size_t i = 0; i < count; i++) {
+		L * l = locks[i];
+		unlock( *l );
+	}
+}
Index: libcfa/src/concurrency/mutex.hfa
===================================================================
--- libcfa/src/concurrency/mutex.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/mutex.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,171 @@
+
+//                              -*- Mode: CFA -*-
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// mutex --
+//
+// Author           : Thierry Delisle
+// Created On       : Fri May 25 01:24:09 2018
+// Last Modified By : Thierry Delisle
+// Last Modified On : Fri May 25 01:24:12 2018
+// Update Count     : 0
+//
+
+#pragma once
+
+#include <stdbool.h>
+
+#include "bits/algorithm.hfa"
+#include "bits/locks.hfa"
+
+#include "invoke.h"
+#include "time_t.hfa"
+
+//-----------------------------------------------------------------------------
+// Locks
+
+// Exclusive lock - non-recursive
+// ---
+struct mutex_lock {
+	// Spin lock used for mutual exclusion
+	__spinlock_t lock;
+
+	// List of blocked threads
+	__queue_t(struct thread_desc) blocked_threads;
+
+	// Locked flag
+	bool is_locked;
+};
+
+void ?{}(mutex_lock & this);
+void ^?{}(mutex_lock & this);
+void lock(mutex_lock & this);
+bool try_lock(mutex_lock & this);
+void unlock(mutex_lock & this);
+
+// Exclusive lock - recursive
+// ---
+struct recursive_mutex_lock{
+	// Spin lock used for mutual exclusion
+	__spinlock_t lock;
+
+	// List of blocked threads
+	__queue_t(struct thread_desc) blocked_threads;
+
+	// Current thread owning the lock
+	struct thread_desc * owner;
+
+	// Number of recursion level
+	size_t recursion_count;
+};
+
+void ?{}(recursive_mutex_lock & this);
+void ^?{}(recursive_mutex_lock & this);
+void lock(recursive_mutex_lock & this);
+bool try_lock(recursive_mutex_lock & this);
+void unlock(recursive_mutex_lock & this);
+
+trait is_lock(dtype L | sized(L)) {
+	void lock  (L &);
+	void unlock(L &);
+};
+
+//-----------------------------------------------------------------------------
+// Condition variables
+
+struct condition_variable {
+	// Spin lock used for mutual exclusion
+	__spinlock_t lock;
+
+	// List of blocked threads
+	__queue_t(struct thread_desc) blocked_threads;
+};
+
+void ?{}(condition_variable & this);
+void ^?{}(condition_variable & this);
+
+void notify_one(condition_variable & this);
+void notify_all(condition_variable & this);
+
+void wait(condition_variable & this);
+
+forall(dtype L | is_lock(L))
+void wait(condition_variable & this, L & l);
+
+//-----------------------------------------------------------------------------
+// Scopes
+forall(dtype L | is_lock(L)) {
+	#if !defined( __TUPLE_ARRAYS_EXIST__ )
+	void lock  ( L * locks [], size_t count);
+	void unlock( L * locks [], size_t count);
+
+	struct lock_scope {
+		L **   locks;
+		size_t count;
+	};
+
+	static inline void ?{}(lock_scope(L) & this) {
+		this.locks = NULL;
+		this.count = 0;
+	}
+
+	static inline void ^?{}(lock_scope(L) & this) {
+		if(this.count > 0) {
+			unlock(this.locks, this.count);
+		}
+	}
+
+	static inline lock_scope(L) lock( L * locks [], size_t count, lock_scope(L) & scope) {
+		lock(locks, count);
+		scope.locks = locks;
+		scope.count = count;
+	}
+
+	static inline void unlock( lock_scope(L) & this ) {
+		unlock(this.locks, this.count);
+		this.count = 0;
+	}
+
+	static inline void release( lock_scope(L) & this ) {
+		this.count = 0;
+	}
+	#else
+	void lock( [L &...] locks );
+	void unlock( [L &...] locks );
+
+	forall(size_t N)
+	struct lock_scope {
+		bool released;
+		[L &... N] locks;
+	};
+
+	void ?{}(lock_scope(L) & this) = void;
+	void ?{}(lock_scope(L) & this, lock_scope(L) other) = void;
+	void ?move?(lock_scope(L) & this, lock_scope(L) & other) = default;
+
+	static inline void ^?{}(lock_scope(L) & this) {
+		if( !this.released ) {
+			unlock(this.locks);
+		}
+	}
+
+	forall(size_t N)
+	static inline lock_scope(L, N) lock( [L &...] locks ) {
+		lock(locks);
+		return @{false, locks};
+	}
+
+	static inline void unlock( lock_scope(L) & this ) {
+		unlock(this.locks);
+		this.released = true
+	}
+
+	static inline void release( lock_scope(L) & this ) {
+		this.released = true;
+	}
+	#endif
+}
Index: libcfa/src/concurrency/preemption.cfa
===================================================================
--- libcfa/src/concurrency/preemption.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/preemption.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,491 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// signal.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Jun 5 14:20:42 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jun  5 17:35:49 2018
+// Update Count     : 37
+//
+
+#include "preemption.hfa"
+#include <assert.h>
+
+extern "C" {
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+}
+
+#include "bits/signal.hfa"
+
+#if !defined(__CFA_DEFAULT_PREEMPTION__)
+#define __CFA_DEFAULT_PREEMPTION__ 10`ms
+#endif
+
+Duration default_preemption() __attribute__((weak)) {
+	return __CFA_DEFAULT_PREEMPTION__;
+}
+
+// FwdDeclarations : timeout handlers
+static void preempt( processor   * this );
+static void timeout( thread_desc * this );
+
+// FwdDeclarations : Signal handlers
+static void sigHandler_ctxSwitch( __CFA_SIGPARMS__ );
+static void sigHandler_segv     ( __CFA_SIGPARMS__ );
+static void sigHandler_ill      ( __CFA_SIGPARMS__ );
+static void sigHandler_fpe      ( __CFA_SIGPARMS__ );
+static void sigHandler_abort    ( __CFA_SIGPARMS__ );
+
+// FwdDeclarations : alarm thread main
+static void * alarm_loop( __attribute__((unused)) void * args );
+
+// Machine specific register name
+#if   defined( __i386 )
+#define CFA_REG_IP gregs[REG_EIP]
+#elif defined( __x86_64 )
+#define CFA_REG_IP gregs[REG_RIP]
+#elif defined( __ARM_ARCH )
+#define CFA_REG_IP arm_pc
+#else
+#error unknown hardware architecture
+#endif
+
+KERNEL_STORAGE(event_kernel_t, event_kernel);         // private storage for event kernel
+event_kernel_t * event_kernel;                        // kernel public handle to even kernel
+static pthread_t alarm_thread;                        // pthread handle to alarm thread
+
+static void ?{}(event_kernel_t & this) with( this ) {
+	alarms{};
+	lock{};
+}
+
+enum {
+	PREEMPT_NORMAL    = 0,
+	PREEMPT_TERMINATE = 1,
+};
+
+//=============================================================================================
+// Kernel Preemption logic
+//=============================================================================================
+
+// Get next expired node
+static inline alarm_node_t * get_expired( alarm_list_t * alarms, Time currtime ) {
+	if( !alarms->head ) return NULL;                          // If no alarms return null
+	if( alarms->head->alarm >= currtime ) return NULL;        // If alarms head not expired return null
+	return pop(alarms);                                       // Otherwise just pop head
+}
+
+// Tick one frame of the Discrete Event Simulation for alarms
+static void tick_preemption() {
+	alarm_node_t * node = NULL;                     // Used in the while loop but cannot be declared in the while condition
+	alarm_list_t * alarms = &event_kernel->alarms;  // Local copy for ease of reading
+	Time currtime = __kernel_get_time();			// Check current time once so we everything "happens at once"
+
+	//Loop throught every thing expired
+	while( node = get_expired( alarms, currtime ) ) {
+		// __cfaabi_dbg_print_buffer_decl( " KERNEL: preemption tick.\n" );
+
+		// Check if this is a kernel
+		if( node->kernel_alarm ) {
+			preempt( node->proc );
+		}
+		else {
+			timeout( node->thrd );
+		}
+
+		// Check if this is a periodic alarm
+		Duration period = node->period;
+		if( period > 0 ) {
+			// __cfaabi_dbg_print_buffer_local( " KERNEL: alarm period is %lu.\n", period.tv );
+			node->alarm = currtime + period;    // Alarm is periodic, add currtime to it (used cached current time)
+			insert( alarms, node );             // Reinsert the node for the next time it triggers
+		}
+		else {
+			node->set = false;                  // Node is one-shot, just mark it as not pending
+		}
+	}
+
+	// If there are still alarms pending, reset the timer
+	if( alarms->head ) {
+		__cfaabi_dbg_print_buffer_decl( " KERNEL: @%ju(%ju) resetting alarm to %ju.\n", currtime.tv, __kernel_get_time().tv, (alarms->head->alarm - currtime).tv);
+		Duration delta = alarms->head->alarm - currtime;
+		Duration caped = max(delta, 50`us);
+		// itimerval tim  = { caped };
+		// __cfaabi_dbg_print_buffer_local( "    Values are %lu, %lu, %lu %lu.\n", delta.tv, caped.tv, tim.it_value.tv_sec, tim.it_value.tv_usec);
+
+		__kernel_set_timer( caped );
+	}
+}
+
+// Update the preemption of a processor and notify interested parties
+void update_preemption( processor * this, Duration duration ) {
+	alarm_node_t * alarm = this->preemption_alarm;
+
+	// Alarms need to be enabled
+	if ( duration > 0 && ! alarm->set ) {
+		alarm->alarm = __kernel_get_time() + duration;
+		alarm->period = duration;
+		register_self( alarm );
+	}
+	// Zero duration but alarm is set
+	else if ( duration == 0 && alarm->set ) {
+		unregister_self( alarm );
+		alarm->alarm = 0;
+		alarm->period = 0;
+	}
+	// If alarm is different from previous, change it
+	else if ( duration > 0 && alarm->period != duration ) {
+		unregister_self( alarm );
+		alarm->alarm = __kernel_get_time() + duration;
+		alarm->period = duration;
+		register_self( alarm );
+	}
+}
+
+//=============================================================================================
+// Kernel Signal Tools
+//=============================================================================================
+
+__cfaabi_dbg_debug_do( static thread_local void * last_interrupt = 0; )
+
+extern "C" {
+	// Disable interrupts by incrementing the counter
+	void disable_interrupts() {
+		with( kernelTLS.preemption_state ) {
+			#if GCC_VERSION > 50000
+			static_assert(__atomic_always_lock_free(sizeof(enabled), &enabled), "Must be lock-free");
+			#endif
+
+			// Set enabled flag to false
+			// should be atomic to avoid preemption in the middle of the operation.
+			// use memory order RELAXED since there is no inter-thread on this variable requirements
+			__atomic_store_n(&enabled, false, __ATOMIC_RELAXED);
+
+			// Signal the compiler that a fence is needed but only for signal handlers
+			__atomic_signal_fence(__ATOMIC_ACQUIRE);
+
+			__attribute__((unused)) unsigned short new_val = disable_count + 1;
+			disable_count = new_val;
+			verify( new_val < 65_000u );              // If this triggers someone is disabling interrupts without enabling them
+		}
+	}
+
+	// Enable interrupts by decrementing the counter
+	// If counter reaches 0, execute any pending CtxSwitch
+	void enable_interrupts( __cfaabi_dbg_ctx_param ) {
+		processor   * proc = kernelTLS.this_processor; // Cache the processor now since interrupts can start happening after the atomic store
+		thread_desc * thrd = kernelTLS.this_thread;	  // Cache the thread now since interrupts can start happening after the atomic store
+
+		with( kernelTLS.preemption_state ){
+			unsigned short prev = disable_count;
+			disable_count -= 1;
+			verify( prev != 0u );                     // If this triggers someone is enabled already enabled interruptsverify( prev != 0u );
+
+			// Check if we need to prempt the thread because an interrupt was missed
+			if( prev == 1 ) {
+				#if GCC_VERSION > 50000
+				static_assert(__atomic_always_lock_free(sizeof(enabled), &enabled), "Must be lock-free");
+				#endif
+
+				// Set enabled flag to true
+				// should be atomic to avoid preemption in the middle of the operation.
+				// use memory order RELAXED since there is no inter-thread on this variable requirements
+				__atomic_store_n(&enabled, true, __ATOMIC_RELAXED);
+
+				// Signal the compiler that a fence is needed but only for signal handlers
+				__atomic_signal_fence(__ATOMIC_RELEASE);
+				if( proc->pending_preemption ) {
+					proc->pending_preemption = false;
+					BlockInternal( thrd );
+				}
+			}
+		}
+
+		// For debugging purposes : keep track of the last person to enable the interrupts
+		__cfaabi_dbg_debug_do( proc->last_enable = caller; )
+	}
+
+	// Disable interrupts by incrementint the counter
+	// Don't execute any pending CtxSwitch even if counter reaches 0
+	void enable_interrupts_noPoll() {
+		unsigned short prev = kernelTLS.preemption_state.disable_count;
+		kernelTLS.preemption_state.disable_count -= 1;
+		verifyf( prev != 0u, "Incremented from %u\n", prev );                     // If this triggers someone is enabled already enabled interrupts
+		if( prev == 1 ) {
+			#if GCC_VERSION > 50000
+			static_assert(__atomic_always_lock_free(sizeof(kernelTLS.preemption_state.enabled), &kernelTLS.preemption_state.enabled), "Must be lock-free");
+			#endif
+			// Set enabled flag to true
+			// should be atomic to avoid preemption in the middle of the operation.
+			// use memory order RELAXED since there is no inter-thread on this variable requirements
+			__atomic_store_n(&kernelTLS.preemption_state.enabled, true, __ATOMIC_RELAXED);
+
+			// Signal the compiler that a fence is needed but only for signal handlers
+			__atomic_signal_fence(__ATOMIC_RELEASE);
+		}
+	}
+}
+
+// sigprocmask wrapper : unblock a single signal
+static inline void signal_unblock( int sig ) {
+	sigset_t mask;
+	sigemptyset( &mask );
+	sigaddset( &mask, sig );
+
+	if ( pthread_sigmask( SIG_UNBLOCK, &mask, NULL ) == -1 ) {
+	    abort( "internal error, pthread_sigmask" );
+	}
+}
+
+// sigprocmask wrapper : block a single signal
+static inline void signal_block( int sig ) {
+	sigset_t mask;
+	sigemptyset( &mask );
+	sigaddset( &mask, sig );
+
+	if ( pthread_sigmask( SIG_BLOCK, &mask, NULL ) == -1 ) {
+	    abort( "internal error, pthread_sigmask" );
+	}
+}
+
+// kill wrapper : signal a processor
+static void preempt( processor * this ) {
+	sigval_t value = { PREEMPT_NORMAL };
+	pthread_sigqueue( this->kernel_thread, SIGUSR1, value );
+}
+
+// reserved for future use
+static void timeout( thread_desc * this ) {
+	//TODO : implement waking threads
+}
+
+// KERNEL ONLY
+// Check if a CtxSwitch signal handler shoud defer
+// If true  : preemption is safe
+// If false : preemption is unsafe and marked as pending
+static inline bool preemption_ready() {
+	// Check if preemption is safe
+	bool ready = kernelTLS.preemption_state.enabled && ! kernelTLS.preemption_state.in_progress;
+
+	// Adjust the pending flag accordingly
+	kernelTLS.this_processor->pending_preemption = !ready;
+	return ready;
+}
+
+//=============================================================================================
+// Kernel Signal Startup/Shutdown logic
+//=============================================================================================
+
+// Startup routine to activate preemption
+// Called from kernel_startup
+void kernel_start_preemption() {
+	__cfaabi_dbg_print_safe( "Kernel : Starting preemption\n" );
+
+	// Start with preemption disabled until ready
+	kernelTLS.preemption_state.enabled = false;
+	kernelTLS.preemption_state.disable_count = 1;
+
+	// Initialize the event kernel
+	event_kernel = (event_kernel_t *)&storage_event_kernel;
+	(*event_kernel){};
+
+	// Setup proper signal handlers
+	__cfaabi_sigaction( SIGUSR1, sigHandler_ctxSwitch, SA_SIGINFO | SA_RESTART );         // CtxSwitch handler
+
+	signal_block( SIGALRM );
+
+	pthread_create( &alarm_thread, NULL, alarm_loop, NULL );
+}
+
+// Shutdown routine to deactivate preemption
+// Called from kernel_shutdown
+void kernel_stop_preemption() {
+	__cfaabi_dbg_print_safe( "Kernel : Preemption stopping\n" );
+
+	// Block all signals since we are already shutting down
+	sigset_t mask;
+	sigfillset( &mask );
+	sigprocmask( SIG_BLOCK, &mask, NULL );
+
+	// Notify the alarm thread of the shutdown
+	sigval val = { 1 };
+	pthread_sigqueue( alarm_thread, SIGALRM, val );
+
+	// Wait for the preemption thread to finish
+	pthread_join( alarm_thread, NULL );
+
+	// Preemption is now fully stopped
+
+	__cfaabi_dbg_print_safe( "Kernel : Preemption stopped\n" );
+}
+
+// Raii ctor/dtor for the preemption_scope
+// Used by thread to control when they want to receive preemption signals
+void ?{}( preemption_scope & this, processor * proc ) {
+	(this.alarm){ proc, (Time){ 0 }, 0`s };
+	this.proc = proc;
+	this.proc->preemption_alarm = &this.alarm;
+
+	update_preemption( this.proc, this.proc->cltr->preemption_rate );
+}
+
+void ^?{}( preemption_scope & this ) {
+	disable_interrupts();
+
+	update_preemption( this.proc, 0`s );
+}
+
+//=============================================================================================
+// Kernel Signal Handlers
+//=============================================================================================
+
+// Context switch signal handler
+// Receives SIGUSR1 signal and causes the current thread to yield
+static void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ) {
+	__cfaabi_dbg_debug_do( last_interrupt = (void *)(cxt->uc_mcontext.CFA_REG_IP); )
+
+	// SKULLDUGGERY: if a thread creates a processor and the immediately deletes it,
+	// the interrupt that is supposed to force the kernel thread to preempt might arrive
+	// before the kernel thread has even started running. When that happens an iterrupt
+	// we a null 'this_processor' will be caught, just ignore it.
+	if(! kernelTLS.this_processor ) return;
+
+	choose(sfp->si_value.sival_int) {
+		case PREEMPT_NORMAL   : ;// Normal case, nothing to do here
+		case PREEMPT_TERMINATE: verify( __atomic_load_n( &kernelTLS.this_processor->do_terminate, __ATOMIC_SEQ_CST ) );
+		default:
+			abort( "internal error, signal value is %d", sfp->si_value.sival_int );
+	}
+
+	// Check if it is safe to preempt here
+	if( !preemption_ready() ) { return; }
+
+	__cfaabi_dbg_print_buffer_decl( " KERNEL: preempting core %p (%p @ %p).\n", kernelTLS.this_processor, kernelTLS.this_thread, (void *)(cxt->uc_mcontext.CFA_REG_IP) );
+
+	// Sync flag : prevent recursive calls to the signal handler
+	kernelTLS.preemption_state.in_progress = true;
+
+	// Clear sighandler mask before context switching.
+	#if GCC_VERSION > 50000
+	static_assert( sizeof( sigset_t ) == sizeof( cxt->uc_sigmask ), "Expected cxt->uc_sigmask to be of sigset_t" );
+	#endif
+	if ( pthread_sigmask( SIG_SETMASK, (sigset_t *)&(cxt->uc_sigmask), NULL ) == -1 ) {
+		abort( "internal error, sigprocmask" );
+	}
+
+	// TODO: this should go in finish action
+	// Clear the in progress flag
+	kernelTLS.preemption_state.in_progress = false;
+
+	// Preemption can occur here
+
+	BlockInternal( kernelTLS.this_thread ); // Do the actual CtxSwitch
+}
+
+// Main of the alarm thread
+// Waits on SIGALRM and send SIGUSR1 to whom ever needs it
+static void * alarm_loop( __attribute__((unused)) void * args ) {
+	// Block sigalrms to control when they arrive
+	sigset_t mask;
+	sigfillset(&mask);
+	if ( pthread_sigmask( SIG_BLOCK, &mask, NULL ) == -1 ) {
+	    abort( "internal error, pthread_sigmask" );
+	}
+
+	sigemptyset( &mask );
+	sigaddset( &mask, SIGALRM );
+
+	// Main loop
+	while( true ) {
+		// Wait for a sigalrm
+		siginfo_t info;
+		int sig = sigwaitinfo( &mask, &info );
+
+		if( sig < 0 ) {
+			//Error!
+			int err = errno;
+			switch( err ) {
+				case EAGAIN :
+				case EINTR :
+					{__cfaabi_dbg_print_buffer_decl( " KERNEL: Spurious wakeup %d.\n", err );}
+					continue;
+       			case EINVAL :
+				 	abort( "Timeout was invalid." );
+				default:
+				 	abort( "Unhandled error %d", err);
+			}
+		}
+
+		// If another signal arrived something went wrong
+		assertf(sig == SIGALRM, "Kernel Internal Error, sigwait: Unexpected signal %d (%d : %d)\n", sig, info.si_code, info.si_value.sival_int);
+
+		// __cfaabi_dbg_print_safe( "Kernel : Caught alarm from %d with %d\n", info.si_code, info.si_value.sival_int );
+		// Switch on the code (a.k.a. the sender) to
+		switch( info.si_code )
+		{
+		// Timers can apparently be marked as sent for the kernel
+		// In either case, tick preemption
+		case SI_TIMER:
+		case SI_KERNEL:
+			// __cfaabi_dbg_print_safe( "Kernel : Preemption thread tick\n" );
+			lock( event_kernel->lock __cfaabi_dbg_ctx2 );
+			tick_preemption();
+			unlock( event_kernel->lock );
+			break;
+		// Signal was not sent by the kernel but by an other thread
+		case SI_QUEUE:
+			// For now, other thread only signal the alarm thread to shut it down
+			// If this needs to change use info.si_value and handle the case here
+			goto EXIT;
+		}
+	}
+
+EXIT:
+	__cfaabi_dbg_print_safe( "Kernel : Preemption thread stopping\n" );
+	return NULL;
+}
+
+//=============================================================================================
+// Kernel Signal Debug
+//=============================================================================================
+
+void __cfaabi_check_preemption() {
+	bool ready = kernelTLS.preemption_state.enabled;
+	if(!ready) { abort("Preemption should be ready"); }
+
+	sigset_t oldset;
+	int ret;
+	ret = pthread_sigmask(0, NULL, &oldset);
+	if(ret != 0) { abort("ERROR sigprocmask returned %d", ret); }
+
+	ret = sigismember(&oldset, SIGUSR1);
+	if(ret <  0) { abort("ERROR sigismember returned %d", ret); }
+	if(ret == 1) { abort("ERROR SIGUSR1 is disabled"); }
+
+	ret = sigismember(&oldset, SIGALRM);
+	if(ret <  0) { abort("ERROR sigismember returned %d", ret); }
+	if(ret == 0) { abort("ERROR SIGALRM is enabled"); }
+
+	ret = sigismember(&oldset, SIGTERM);
+	if(ret <  0) { abort("ERROR sigismember returned %d", ret); }
+	if(ret == 1) { abort("ERROR SIGTERM is disabled"); }
+}
+
+#ifdef __CFA_WITH_VERIFY__
+bool __cfaabi_dbg_in_kernel() {
+	return !kernelTLS.preemption_state.enabled;
+}
+#endif
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/preemption.hfa
===================================================================
--- libcfa/src/concurrency/preemption.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/preemption.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,36 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// preemption.hfa --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Jun 5 14:20:42 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Mar 23 17:18:53 2018
+// Update Count     : 2
+//
+
+#pragma once
+
+#include "alarm.hfa"
+#include "kernel_private.hfa"
+
+void kernel_start_preemption();
+void kernel_stop_preemption();
+void update_preemption( processor * this, Duration duration );
+
+struct preemption_scope {
+	alarm_node_t alarm;
+	processor * proc;
+};
+
+void ?{}( preemption_scope & this, processor * proc );
+void ^?{}( preemption_scope & this );
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/thread.cfa
===================================================================
--- libcfa/src/concurrency/thread.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/thread.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,135 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// thread.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Jan 17 12:27:26 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Mar 30 17:19:52 2018
+// Update Count     : 8
+//
+
+#include "thread.hfa"
+
+#include "kernel_private.hfa"
+
+#define __CFA_INVOKE_PRIVATE__
+#include "invoke.h"
+
+extern "C" {
+	#include <fenv.h>
+	#include <stddef.h>
+}
+
+//extern volatile thread_local processor * this_processor;
+
+//-----------------------------------------------------------------------------
+// Thread ctors and dtors
+void ?{}(thread_desc & this, const char * const name, cluster & cl, void * storage, size_t storageSize ) with( this ) {
+	self_cor{ name, storage, storageSize };
+	verify(&self_cor);
+	curr_cor = &self_cor;
+	self_mon.owner = &this;
+	self_mon.recursion = 1;
+	self_mon_p = &self_mon;
+	curr_cluster = &cl;
+	next = NULL;
+
+	node.next = NULL;
+	node.prev = NULL;
+	doregister(curr_cluster, this);
+
+	monitors{ &self_mon_p, 1, (fptr_t)0 };
+}
+
+void ^?{}(thread_desc& this) with( this ) {
+	unregister(curr_cluster, this);
+	^self_cor{};
+}
+
+forall( dtype T | sized(T) | is_thread(T) | { void ?{}(T&); } )
+void ?{}( scoped(T)& this ) with( this ) {
+	handle{};
+	__thrd_start(handle);
+}
+
+forall( dtype T, ttype P | sized(T) | is_thread(T) | { void ?{}(T&, P); } )
+void ?{}( scoped(T)& this, P params ) with( this ) {
+	handle{ params };
+	__thrd_start(handle);
+}
+
+forall( dtype T | sized(T) | is_thread(T) )
+void ^?{}( scoped(T)& this ) with( this ) {
+	^handle{};
+}
+
+//-----------------------------------------------------------------------------
+// Starting and stopping threads
+forall( dtype T | is_thread(T) )
+void __thrd_start( T& this ) {
+	coroutine_desc* thrd_c = get_coroutine(this);
+	thread_desc   * thrd_h = get_thread   (this);
+	thrd_c->last = TL_GET( this_coroutine );
+
+	// __cfaabi_dbg_print_safe("Thread start : %p (t %p, c %p)\n", this, thrd_c, thrd_h);
+
+	disable_interrupts();
+	create_stack(&thrd_c->stack, thrd_c->stack.size);
+	kernelTLS.this_coroutine = thrd_c;
+	CtxStart(&this, CtxInvokeThread);
+	assert( thrd_c->last->stack.context );
+	CtxSwitch( thrd_c->last->stack.context, thrd_c->stack.context );
+
+	ScheduleThread(thrd_h);
+	enable_interrupts( __cfaabi_dbg_ctx );
+}
+
+extern "C" {
+	// KERNEL ONLY
+	void __finish_creation(void) {
+		coroutine_desc* thrd_c = kernelTLS.this_coroutine;
+		ThreadCtxSwitch( thrd_c, thrd_c->last );
+	}
+}
+
+void yield( void ) {
+	// Safety note : This could cause some false positives due to preemption
+      verify( TL_GET( preemption_state.enabled ) );
+	BlockInternal( TL_GET( this_thread ) );
+	// Safety note : This could cause some false positives due to preemption
+      verify( TL_GET( preemption_state.enabled ) );
+}
+
+void yield( unsigned times ) {
+	for( unsigned i = 0; i < times; i++ ) {
+		yield();
+	}
+}
+
+// KERNEL ONLY
+void ThreadCtxSwitch(coroutine_desc* src, coroutine_desc* dst) {
+	// set state of current coroutine to inactive
+	src->state = src->state == Halted ? Halted : Inactive;
+	dst->state = Active;
+
+	// set new coroutine that the processor is executing
+	// and context switch to it
+	kernelTLS.this_coroutine = dst;
+	assert( src->stack.context );
+	CtxSwitch( src->stack.context, dst->stack.context );
+	kernelTLS.this_coroutine = src;
+
+	// set state of new coroutine to active
+	dst->state = dst->state == Halted ? Halted : Inactive;
+	src->state = Active;
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/concurrency/thread.hfa
===================================================================
--- libcfa/src/concurrency/thread.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/concurrency/thread.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,96 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// thread --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Jan 17 12:27:26 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Mar 29 14:07:11 2018
+// Update Count     : 4
+//
+
+#pragma once
+
+#include <assert.h>
+#include "invoke.h"
+
+#include "coroutine.hfa"
+#include "kernel.hfa"
+#include "monitor.hfa"
+
+//-----------------------------------------------------------------------------
+// thread trait
+trait is_thread(dtype T) {
+      void ^?{}(T& mutex this);
+      void main(T& this);
+      thread_desc* get_thread(T& this);
+};
+
+#define DECL_THREAD(X) thread_desc* get_thread(X& this) { return &this.__thrd; } void main(X& this)
+
+forall( dtype T | is_thread(T) )
+static inline coroutine_desc* get_coroutine(T & this) {
+	return &get_thread(this)->self_cor;
+}
+
+forall( dtype T | is_thread(T) )
+static inline monitor_desc* get_monitor(T & this) {
+	return &get_thread(this)->self_mon;
+}
+
+static inline coroutine_desc* get_coroutine(thread_desc * this) {
+	return &this->self_cor;
+}
+
+static inline monitor_desc* get_monitor(thread_desc * this) {
+	return &this->self_mon;
+}
+
+extern struct cluster * mainCluster;
+
+forall( dtype T | is_thread(T) )
+void __thrd_start( T & this );
+
+//-----------------------------------------------------------------------------
+// Ctors and dtors
+void ?{}(thread_desc & this, const char * const name, struct cluster & cl, void * storage, size_t storageSize );
+void ^?{}(thread_desc & this);
+
+static inline void ?{}(thread_desc & this)                                                                  { this{ "Anonymous Thread", *mainCluster, NULL, 0 }; }
+static inline void ?{}(thread_desc & this, size_t stackSize )                                               { this{ "Anonymous Thread", *mainCluster, NULL, stackSize }; }
+static inline void ?{}(thread_desc & this, void * storage, size_t storageSize )                             { this{ "Anonymous Thread", *mainCluster, storage, storageSize }; }
+static inline void ?{}(thread_desc & this, struct cluster & cl )                                            { this{ "Anonymous Thread", cl, NULL, 0 }; }
+static inline void ?{}(thread_desc & this, struct cluster & cl, size_t stackSize )                          { this{ "Anonymous Thread", cl, 0, stackSize }; }
+static inline void ?{}(thread_desc & this, struct cluster & cl, void * storage, size_t storageSize )        { this{ "Anonymous Thread", cl, storage, storageSize }; }
+static inline void ?{}(thread_desc & this, const char * const name)                                         { this{ name, *mainCluster, NULL, 0 }; }
+static inline void ?{}(thread_desc & this, const char * const name, struct cluster & cl )                   { this{ name, cl, NULL, 0 }; }
+static inline void ?{}(thread_desc & this, const char * const name, struct cluster & cl, size_t stackSize ) { this{ name, cl, NULL, stackSize }; }
+
+//-----------------------------------------------------------------------------
+// thread runner
+// Structure that actually start and stop threads
+forall( dtype T | sized(T) | is_thread(T) )
+struct scoped {
+	T handle;
+};
+
+forall( dtype T | sized(T) | is_thread(T) | { void ?{}(T&); } )
+void ?{}( scoped(T)& this );
+
+forall( dtype T, ttype P | sized(T) | is_thread(T) | { void ?{}(T&, P); } )
+void ?{}( scoped(T)& this, P params );
+
+forall( dtype T | sized(T) | is_thread(T) )
+void ^?{}( scoped(T)& this );
+
+void yield();
+void yield( unsigned times );
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/containers/maybe.cfa
===================================================================
--- libcfa/src/containers/maybe.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/containers/maybe.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,102 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// maybe.c -- May contain a value.
+//
+// Author           : Andrew Beach
+// Created On       : Wed May 24 15:40:00 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 20 15:23:50 2017
+// Update Count     : 2
+//
+
+#include <containers/maybe.hfa>
+#include <assert.h>
+
+
+forall(otype T)
+void ?{}(maybe(T) & this) {
+	this.has_value = false;
+}
+
+forall(otype T)
+void ?{}(maybe(T) & this, T value) {
+	this.has_value = true;
+	(this.value){value};
+}
+
+forall(otype T)
+void ?{}(maybe(T) & this, maybe(T) other) {
+	this.has_value = other.has_value;
+	if (other.has_value) {
+		(this.value){other.value};
+	}
+}
+
+forall(otype T)
+maybe(T) ?=?(maybe(T) & this, maybe(T) that) {
+	if (this.has_value & that.has_value) {
+		this.value = that.value;
+	} else if (this.has_value) {
+		^(this.value){};
+		this.has_value = false;
+	} else if (that.has_value) {
+		this.has_value = true;
+		(this.value){that.value};
+	}
+	return this;
+}
+
+forall(otype T)
+void ^?{}(maybe(T) & this) {
+	if (this.has_value) {
+		^(this.value){};
+	}
+}
+
+forall(otype T)
+bool ?!=?(maybe(T) this, zero_t) {
+	return this.has_value;
+}
+
+forall(otype T)
+maybe(T) maybe_value(T value) {
+	return (maybe(T)){value};
+}
+
+forall(otype T)
+maybe(T) maybe_none() {
+	return (maybe(T)){};
+}
+
+forall(otype T)
+bool has_value(maybe(T) * this) {
+	return this->has_value;
+}
+
+forall(otype T)
+T get(maybe(T) * this) {
+	assertf(this->has_value, "attempt to get from maybe without value");
+	return this->value;
+}
+
+forall(otype T)
+void set(maybe(T) * this, T value) {
+	if (this->has_value) {
+		this->value = value;
+	} else {
+		this->has_value = true;
+		(this->value){value};
+	}
+}
+
+forall(otype T)
+void set_none(maybe(T) * this) {
+	if (this->has_value) {
+		this->has_value = false;
+		^(this->value){};
+	}
+}
Index: libcfa/src/containers/maybe.hfa
===================================================================
--- libcfa/src/containers/maybe.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/containers/maybe.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,69 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// maybe -- May contain a value.
+//
+// Author           : Andrew Beach
+// Created On       : Wed May 24 14:43:00 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Jul 22 10:00:52 2017
+// Update Count     : 4
+//
+
+#pragma once
+
+#include <stdbool.h>
+
+// DO NOT USE DIRECTLY!
+forall(otype T)
+struct maybe {
+    bool has_value;
+    T value;
+};
+
+
+forall(otype T)
+void ?{}(maybe(T) & this);
+
+forall(otype T)
+void ?{}(maybe(T) & this, T value);
+
+forall(otype T)
+void ?{}(maybe(T) & this, maybe(T) other);
+
+forall(otype T)
+void ^?{}(maybe(T) & this);
+
+forall(otype T)
+maybe(T) ?=?(maybe(T) & this, maybe(T) other);
+
+forall(otype T)
+bool ?!=?(maybe(T) this, zero_t);
+
+/* Waiting for bug#11 to be fixed.
+forall(otype T)
+maybe(T) maybe_value(T value);
+
+forall(otype T)
+maybe(T) maybe_none();
+*/
+
+forall(otype T)
+bool has_value(maybe(T) * this);
+
+forall(otype T)
+T get(maybe(T) * this);
+
+forall(otype T)
+void set(maybe(T) * this, T value);
+
+forall(otype T)
+void set_none(maybe(T) * this);
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/containers/pair.cfa
===================================================================
--- libcfa/src/containers/pair.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/containers/pair.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,47 @@
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// pair.c --
+//
+// Author           : Aaron Moss
+// Created On       : Wed Apr 12 15:32:00 2017
+// Last Modified By : Aaron Moss
+// Last Modified On : Wed Apr 12 15:32:00 2017
+// Update Count     : 1
+//
+
+#include <containers/pair.hfa>
+
+forall(otype R, otype S
+	| { int ?==?(R, R); int ?<?(R, R); int ?<?(S, S); })
+int ?<?(pair(R, S) p, pair(R, S) q) {
+	return p.first < q.first || ( p.first == q.first && p.second < q.second );
+}
+
+forall(otype R, otype S
+	| { int ?==?(R, R); int ?<?(R, R); int ?<=?(S, S); })
+int ?<=?(pair(R, S) p, pair(R, S) q) {
+	return p.first < q.first || ( p.first == q.first && p.second <= q.second );
+}
+
+forall(otype R, otype S | { int ?==?(R, R); int ?==?(S, S); })
+int ?==?(pair(R, S) p, pair(R, S) q) {
+	return p.first == q.first && p.second == q.second;
+}
+
+forall(otype R, otype S | { int ?!=?(R, R); int ?!=?(S, S); })
+int ?!=?(pair(R, S) p, pair(R, S) q) {
+	return p.first != q.first || p.second != q.second;
+}
+
+forall(otype R, otype S
+	| { int ?==?(R, R); int ?>?(R, R); int ?>?(S, S); })
+int ?>?(pair(R, S) p, pair(R, S) q) {
+	return p.first > q.first || ( p.first == q.first && p.second > q.second );
+}
+
+forall(otype R, otype S
+	| { int ?==?(R, R); int ?>?(R, R); int ?>=?(S, S); })
+int ?>=?(pair(R, S) p, pair(R, S) q) {
+	return p.first > q.first || ( p.first == q.first && p.second >= q.second );
+}
Index: libcfa/src/containers/pair.hfa
===================================================================
--- libcfa/src/containers/pair.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/containers/pair.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,48 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// pair --
+//
+// Author           : Aaron Moss
+// Created On       : Wed Apr 12 15:32:00 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Jul 22 09:59:53 2017
+// Update Count     : 2
+//
+
+#pragma once
+
+forall(otype R, otype S) struct pair {
+	R first;
+	S second;
+};
+
+forall(otype R, otype S 
+	| { int ?==?(R, R); int ?<?(R, R); int ?<?(S, S); })
+int ?<?(pair(R, S) p, pair(R, S) q);
+
+forall(otype R, otype S 
+	| { int ?==?(R, R); int ?<?(R, R); int ?<=?(S, S); })
+int ?<=?(pair(R, S) p, pair(R, S) q);
+
+forall(otype R, otype S | { int ?==?(R, R); int ?==?(S, S); })
+int ?==?(pair(R, S) p, pair(R, S) q);
+
+forall(otype R, otype S | { int ?!=?(R, R); int ?!=?(S, S); })
+int ?!=?(pair(R, S) p, pair(R, S) q);
+
+forall(otype R, otype S 
+	| { int ?==?(R, R); int ?>?(R, R); int ?>?(S, S); })
+int ?>?(pair(R, S) p, pair(R, S) q);
+
+forall(otype R, otype S 
+	| { int ?==?(R, R); int ?>?(R, R); int ?>=?(S, S); })
+int ?>=?(pair(R, S) p, pair(R, S) q);
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/containers/result.cfa
===================================================================
--- libcfa/src/containers/result.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/containers/result.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,126 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// result.c -- Contains the expected value or an error value.
+//
+// Author           : Andrew Beach
+// Created On       : Wed May 24 15:40:00 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 20 15:23:58 2017
+// Update Count     : 2
+//
+
+#include <containers/result.hfa>
+#include <assert.h>
+
+
+forall(otype T, otype E)
+void ?{}(result(T, E) & this) {
+	this.has_value = false;
+	(this.error){};
+}
+
+forall(otype T, otype E)
+void ?{}(result(T, E) & this, one_t, T value) {
+	this.has_value = true;
+	(this.value){value};
+}
+
+forall(otype T, otype E)
+void ?{}(result(T, E) & this, zero_t, E error) {
+	this.has_value = false;
+	(this.error){error};
+}
+
+forall(otype T, otype E)
+void ?{}(result(T, E) & this, result(T, E) other) {
+	this.has_value = other.has_value;
+	if (other.has_value) {
+		(this.value){other.value};
+	} else {
+		(this.error){other.error};
+	}
+}
+
+forall(otype T, otype E)
+result(T, E) ?=?(result(T, E) & this, result(T, E) that) {
+	if (this.has_value & that.has_value) {
+		this.value = that.value;
+	} else if (this.has_value) {
+		^(this.value){};
+		this.has_value = false;
+		(this.error){that.error};
+	} else if (that.has_value) {
+		^(this.error){};
+		this.has_value = true;
+		(this.value){that.value};
+	} else {
+		this.error = that.error;
+	}
+}
+
+forall(otype T, otype E)
+void ^?{}(result(T, E) & this) {
+	if (this.has_value) {
+		^(this.value){};
+	} else {
+		^(this.error){};
+	}
+}
+
+forall(otype T, otype E)
+bool ?!=?(result(T, E) this, zero_t) {
+	return this.has_value;
+}
+
+forall(otype T, otype E)
+result(T, E) result_value(T value) {
+	return (result(T, E)){1, value};
+}
+
+forall(otype T, otype E)
+result(T, E) result_error(E error) {
+	return (result(T, E)){0, error};
+}
+
+forall(otype T, otype E)
+bool has_value(result(T, E) * this) {
+	return this->has_value;
+}
+
+forall(otype T, otype E)
+T get(result(T, E) * this) {
+	assertf(this->has_value, "attempt to get from result without value");
+	return this->value;
+}
+
+forall(otype T, otype E)
+E get_error(result(T, E) * this) {
+	assertf(!this->has_value, "attempt to get from result without error");
+	return this->error;
+}
+
+forall(otype T, otype E)
+void set(result(T, E) * this, T value) {
+	if (this->has_value) {
+		this->value = value;
+	} else {
+		^(this->error){};
+		this->has_value = true;
+		(this->value){value};
+	}
+}
+
+forall(otype T, otype E)
+void set_error(result(T, E) * this, E error) {
+	if (this->has_value) {
+		^(this->value){};
+		this->has_value = false;
+		(this->error){error};
+	} else {
+		this->error = error;
+	}
+}
Index: libcfa/src/containers/result.hfa
===================================================================
--- libcfa/src/containers/result.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/containers/result.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,81 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// result -- Contains the expected value or an error value.
+//
+// Author           : Andrew Beach
+// Created On       : Wed May 24 14:45:00 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Jul 22 10:00:44 2017
+// Update Count     : 3
+//
+
+#pragma once
+
+#include <stdbool.h>
+
+// DO NOT USE DIRECTLY!
+forall(otype T, otype E)
+union inner_result{
+	T value;
+	E error;
+};
+
+forall(otype T, otype E)
+struct result {
+	bool has_value;
+	inline union inner_result(T, E);
+};
+
+
+forall(otype T, otype E)
+void ?{}(result(T, E) & this);
+
+forall(otype T, otype E)
+void ?{}(result(T, E) & this, one_t, T value);
+
+forall(otype T, otype E)
+void ?{}(result(T, E) & this, zero_t, E error);
+
+forall(otype T, otype E)
+void ?{}(result(T, E) & this, result(T, E) other);
+
+forall(otype T, otype E)
+void ^?{}(result(T, E) & this);
+
+forall(otype T, otype E)
+result(T, E) ?=?(result(T, E) & this, result(T, E) other);
+
+forall(otype T, otype E)
+bool ?!=?(result(T, E) this, zero_t);
+
+/* Wating for bug#11 to be fixed.
+forall(otype T, otype E)
+result(T, E) result_value(T value);
+
+forall(otype T, otype E)
+result(T, E) result_error(E error);
+*/
+
+forall(otype T, otype E)
+bool has_value(result(T, E) * this);
+
+forall(otype T, otype E)
+T get(result(T, E) * this);
+
+forall(otype T, otype E)
+E get_error(result(T, E) * this);
+
+forall(otype T, otype E)
+void set(result(T, E) * this, T value);
+
+forall(otype T, otype E)
+void set_error(result(T, E) * this, E error);
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/containers/vector.cfa
===================================================================
--- libcfa/src/containers/vector.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/containers/vector.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,137 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// vector.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Jul  5 18:07:52 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 18:08:31 2016
+// Update Count     : 2
+//
+
+#include <containers/vector.hfa>
+
+#include <stdlib.hfa>
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void copy_internal(vector(T, allocator_t)* this, vector(T, allocator_t)* other);
+
+//------------------------------------------------------------------------------
+//Initialization
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void ?{}(vector(T, allocator_t)& this)
+{
+	(this.storage){};
+	this.size = 0;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void ?{}(vector(T, allocator_t)& this, vector(T, allocator_t) rhs)
+{
+	(this.storage){ rhs.storage };
+	copy_internal(&this, &rhs);
+}
+
+// forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+// vector(T, allocator_t) ?=?(vector(T, allocator_t)* this, vector(T, allocator_t) rhs)
+// {
+// 	(&this->storage){};
+// 	copy_internal(this, &rhs);
+// 	return *this;
+// }
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void ^?{}(vector(T, allocator_t)& this)
+{
+	clear(&this);
+	^(this.storage){};
+}
+
+//------------------------------------------------------------------------------
+//Modifiers
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void push_back(vector(T, allocator_t)* this, T value)
+{
+	realloc_storage(&this->storage, this->size+1);
+	data(&this->storage)[this->size] = value;
+	this->size++;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void pop_back(vector(T, allocator_t)* this)
+{
+	this->size--;
+	^(data(&this->storage)[this->size]){};
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void clear(vector(T, allocator_t)* this)
+{
+	for(size_t i = 0; i < this->size; i++)
+	{
+		^(data(&this->storage)[this->size]){};
+	}
+	this->size = 0;
+}
+
+//------------------------------------------------------------------------------
+//Internal Helpers
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void copy_internal(vector(T, allocator_t)* this, vector(T, allocator_t)* other)
+{
+	this->size = other->size;
+	for(size_t i = 0; i < this->size; i++) {
+		(data(&this->storage)[this->size]){ data(&other->storage)[other->size] };
+	}
+}
+
+//------------------------------------------------------------------------------
+//Allocator
+forall(otype T)
+void ?{}(heap_allocator(T)& this)
+{
+	this.storage = 0;
+	this.capacity = 0;
+}
+
+forall(otype T)
+void ?{}(heap_allocator(T)& this, heap_allocator(T) rhs)
+{
+	this.capacity = rhs.capacity;
+	this.storage = (T*)realloc((void*)this.storage, this.capacity * sizeof(T));
+}
+
+forall(otype T)
+heap_allocator(T) ?=?(heap_allocator(T)& this, heap_allocator(T) rhs)
+{
+	this.capacity = rhs.capacity;
+	this.storage = (T*)realloc((void*)this.storage, this.capacity * sizeof(T));
+	return this;
+}
+
+forall(otype T)
+void ^?{}(heap_allocator(T)& this)
+{
+	free(this.storage);
+}
+
+forall(otype T)
+inline void realloc_storage(heap_allocator(T)* this, size_t size)
+{
+	enum { GROWTH_RATE = 2 };
+	if(size > this->capacity)
+	{
+		this->capacity = GROWTH_RATE * size;
+		this->storage = (T*)realloc((void*)this->storage, this->capacity * sizeof(T));
+	}
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/containers/vector.hfa
===================================================================
--- libcfa/src/containers/vector.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/containers/vector.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,170 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// vector --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Jul  5 18:00:07 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Jul 22 10:01:18 2017
+// Update Count     : 3
+//
+
+#pragma once
+
+extern "C" {
+#include <stdbool.h>
+}
+
+//------------------------------------------------------------------------------
+//Allocator
+forall(otype T)
+struct heap_allocator
+{
+	T* storage;
+	size_t capacity;
+};
+
+forall(otype T)
+void ?{}(heap_allocator(T)& this);
+
+forall(otype T)
+void ?{}(heap_allocator(T)& this, heap_allocator(T) rhs);
+
+forall(otype T)
+heap_allocator(T) ?=?(heap_allocator(T)& this, heap_allocator(T) rhs);
+
+forall(otype T)
+void ^?{}(heap_allocator(T)& this);
+
+forall(otype T)
+void realloc_storage(heap_allocator(T)* this, size_t size);
+
+forall(otype T)
+static inline T* data(heap_allocator(T)* this)
+{
+	return this->storage;
+}
+
+//------------------------------------------------------------------------------
+//Declaration
+trait allocator_c(otype T, otype allocator_t)
+{
+	void realloc_storage(allocator_t*, size_t);
+	T* data(allocator_t*);
+};
+
+forall(otype T, otype allocator_t = heap_allocator(T) | allocator_c(T, allocator_t))
+struct vector;
+
+//------------------------------------------------------------------------------
+//Initialization
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void ?{}(vector(T, allocator_t)& this);
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void ?{}(vector(T, allocator_t)& this, vector(T, allocator_t) rhs);
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+vector(T, allocator_t) ?=?(vector(T, allocator_t)& this, vector(T, allocator_t) rhs);
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void ^?{}(vector(T, allocator_t)& this);
+
+forall(otype T, otype allocator_t = heap_allocator(T) | allocator_c(T, allocator_t))
+struct vector
+{
+	allocator_t storage;
+	size_t size;
+};
+
+//------------------------------------------------------------------------------
+//Capacity
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline bool empty(vector(T, allocator_t)* this)
+{
+	return this->size == 0;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline size_t size(vector(T, allocator_t)* this)
+{
+	return this->size;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline void reserve(vector(T, allocator_t)* this, size_t size)
+{
+	realloc_storage(&this->storage, this->size+1);
+}
+
+//------------------------------------------------------------------------------
+//Element access
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T at(vector(T, allocator_t)* this, size_t index)
+{
+	return data(&this->storage)[index];
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T ?[?](vector(T, allocator_t)* this, size_t index)
+{
+	return data(&this->storage)[index];
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T front(vector(T, allocator_t)* this)
+{
+	return data(&this->storage)[0];
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T back(vector(T, allocator_t)* this)
+{
+	return data(&this->storage)[this->size - 1];
+}
+
+//------------------------------------------------------------------------------
+//Modifiers
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void push_back(vector(T, allocator_t)* this, T value);
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void pop_back(vector(T, allocator_t)* this);
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void clear(vector(T, allocator_t)* this);
+
+//------------------------------------------------------------------------------
+//Iterators
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T* begin(vector(T, allocator_t)* this)
+{
+	return data(&this->storage);
+}
+
+// forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+// static inline const T* cbegin(const vector(T, allocator_t)* this)
+// {
+// 	return data(&this->storage);
+// }
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T* end(vector(T, allocator_t)* this)
+{
+	return data(&this->storage) + this->size;
+}
+
+// forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+// static inline const T* cend(const vector(T, allocator_t)* this)
+// {
+// 	return data(&this->storage) + this->size;
+// }
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/exception.c
===================================================================
--- libcfa/src/exception.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/exception.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,478 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// exception.c --
+//
+// Author           : Andrew Beach
+// Created On       : Mon Jun 26 15:13:00 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Feb 22 18:17:34 2018
+// Update Count     : 11
+//
+
+#include <stddef.h> // for size_t
+
+#include "exception.h"
+
+// Implementation of the secret header.
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unwind.h>
+#include <bits/debug.hfa>
+
+// FIX ME: temporary hack to keep ARM build working
+#ifndef _URC_FATAL_PHASE1_ERROR
+#define _URC_FATAL_PHASE1_ERROR 2
+#endif // ! _URC_FATAL_PHASE1_ERROR
+#ifndef _URC_FATAL_PHASE2_ERROR
+#define _URC_FATAL_PHASE2_ERROR 2
+#endif // ! _URC_FATAL_PHASE2_ERROR
+
+#include "lsda.h"
+
+
+// Base exception vtable is abstract, you should not have base exceptions.
+struct __cfaabi_ehm__base_exception_t_vtable
+		___cfaabi_ehm__base_exception_t_vtable_instance = {
+	.parent = NULL,
+	.size = 0,
+	.copy = NULL,
+	.free = NULL,
+	.msg = NULL
+};
+
+
+// Temperary global exception context. Does not work with concurency.
+struct exception_context_t {
+    struct __cfaabi_ehm__try_resume_node * top_resume;
+    struct __cfaabi_ehm__try_resume_node * current_resume;
+
+    exception_t * current_exception;
+    int current_handler_index;
+} shared_stack = {NULL, NULL, 0, 0};
+
+// Get the current exception context.
+// There can be a single global until multithreading occurs, then each stack
+// needs its own. It will have to be updated to handle that.
+struct exception_context_t * this_exception_context() {
+	return &shared_stack;
+}
+//#define SAVE_EXCEPTION_CONTEXT(to_name)
+//struct exception_context_t * to_name = this_exception_context();
+//exception * this_exception() {
+//    return this_exception_context()->current_exception;
+//}
+
+
+// This macro should be the only thing that needs to change across machines.  Used in the personality function, way down
+// in termination.
+// struct _Unwind_Context * -> _Unwind_Reason_Code(*)(exception_t *)
+#define MATCHER_FROM_CONTEXT(ptr_to_context) \
+	(*(_Unwind_Reason_Code(**)(exception_t *))(_Unwind_GetCFA(ptr_to_context) + 8))
+
+
+// RESUMPTION ================================================================
+
+void __cfaabi_ehm__throw_resume(exception_t * except) {
+
+	__cfaabi_dbg_print_safe("Throwing resumption exception\n");
+
+	struct __cfaabi_ehm__try_resume_node * original_head = shared_stack.current_resume;
+	struct __cfaabi_ehm__try_resume_node * current =
+		(original_head) ? original_head->next : shared_stack.top_resume;
+
+	for ( ; current ; current = current->next) {
+		shared_stack.current_resume = current;
+		if (current->handler(except)) {
+			shared_stack.current_resume = original_head;
+			return;
+		}
+	}
+
+	__cfaabi_dbg_print_safe("Unhandled exception\n");
+	shared_stack.current_resume = original_head;
+
+	// Fall back to termination:
+	__cfaabi_ehm__throw_terminate(except);
+	// TODO: Default handler for resumption.
+}
+
+// Do we control where exceptions get thrown even with concurency?  If not these are not quite thread safe, the cleanup
+// hook has to be added after the node is built but before it is made the top node.
+
+void __cfaabi_ehm__try_resume_setup(struct __cfaabi_ehm__try_resume_node * node,
+                        _Bool (*handler)(exception_t * except)) {
+	node->next = shared_stack.top_resume;
+	node->handler = handler;
+	shared_stack.top_resume = node;
+}
+
+void __cfaabi_ehm__try_resume_cleanup(struct __cfaabi_ehm__try_resume_node * node) {
+	shared_stack.top_resume = node->next;
+}
+
+
+// TERMINATION ===============================================================
+
+// MEMORY MANAGEMENT (still for integers)
+// May have to move to cfa for constructors and destructors (references).
+
+struct __cfaabi_ehm__node {
+	struct __cfaabi_ehm__node * next;
+};
+
+#define NODE_TO_EXCEPT(node) ((exception_t *)(1 + (node)))
+#define EXCEPT_TO_NODE(except) ((struct __cfaabi_ehm__node *)(except) - 1)
+
+// Creates a copy of the indicated exception and sets current_exception to it.
+static void __cfaabi_ehm__allocate_exception( exception_t * except ) {
+	struct exception_context_t * context = this_exception_context();
+
+	// Allocate memory for the exception.
+	struct __cfaabi_ehm__node * store = malloc(
+		sizeof( struct __cfaabi_ehm__node ) + except->virtual_table->size );
+
+	if ( ! store ) {
+		// Failure: cannot allocate exception. Terminate thread.
+		abort(); // <- Although I think it might be the process.
+	}
+
+	// Add the node to the list:
+	store->next = EXCEPT_TO_NODE(context->current_exception);
+	context->current_exception = NODE_TO_EXCEPT(store);
+
+	// Copy the exception to storage.
+	except->virtual_table->copy( context->current_exception, except );
+}
+
+// Delete the provided exception, unsetting current_exception if relivant.
+static void __cfaabi_ehm__delete_exception( exception_t * except ) {
+	struct exception_context_t * context = this_exception_context();
+
+	__cfaabi_dbg_print_safe("Deleting Exception\n");
+
+	// Remove the exception from the list.
+	struct __cfaabi_ehm__node * to_free = EXCEPT_TO_NODE(except);
+	struct __cfaabi_ehm__node * node;
+
+	if ( context->current_exception == except ) {
+		node = to_free->next;
+		context->current_exception = (node) ? NODE_TO_EXCEPT(node) : 0;
+	} else {
+		node = EXCEPT_TO_NODE(context->current_exception);
+		// It may always be in the first or second position.
+		while( to_free != node->next ) {
+			node = node->next;
+		}
+		node->next = to_free->next;
+	}
+
+	// Free the old exception node.
+	except->virtual_table->free( except );
+	free( to_free );
+}
+
+// If this isn't a rethrow (*except==0), delete the provided exception.
+void __cfaabi_ehm__cleanup_terminate( void * except ) {
+	if ( *(void**)except ) __cfaabi_ehm__delete_exception( *(exception_t **)except );
+}
+
+
+// We need a piece of storage to raise the exception
+struct _Unwind_Exception this_exception_storage;
+
+// Function needed by force unwind
+// It basically says to unwind the whole stack and then exit when we reach the end of the stack
+static _Unwind_Reason_Code _Stop_Fn(
+		int version,
+		_Unwind_Action actions,
+		_Unwind_Exception_Class exceptionClass,
+		struct _Unwind_Exception * unwind_exception,
+		struct _Unwind_Context * context,
+		void * some_param) {
+	if( actions & _UA_END_OF_STACK  ) exit(1);
+	if( actions & _UA_CLEANUP_PHASE ) return _URC_NO_REASON;
+
+	return _URC_FATAL_PHASE2_ERROR;
+}
+
+// The exception that is being thrown must already be stored.
+__attribute__((noreturn)) void __cfaabi_ehm__begin_unwind(void) {
+	if ( ! this_exception_context()->current_exception ) {
+		printf("UNWIND ERROR missing exception in begin unwind\n");
+		abort();
+	}
+
+
+	// Call stdlibc to raise the exception
+	_Unwind_Reason_Code ret = _Unwind_RaiseException( &this_exception_storage );
+
+	// If we reach here it means something happened.  For resumption to work we need to find a way to return back to
+	// here.  Most of them will probably boil down to setting a global flag and making the phase 1 either stop or
+	// fail.  Causing an error on purpose may help avoiding unnecessary work but it might have some weird side
+	// effects.  If we just pretend no handler was found that would work but may be expensive for no reason since we
+	// will always search the whole stack.
+
+	if( ret == _URC_END_OF_STACK ) {
+		// No proper handler was found.  This can be handled in several way.  C++ calls std::terminate Here we
+		// force unwind the stack, basically raising a cancellation.
+		printf("Uncaught exception %p\n", &this_exception_storage);
+
+		ret = _Unwind_ForcedUnwind( &this_exception_storage, _Stop_Fn, (void*)0x22 );
+		printf("UNWIND ERROR %d after force unwind\n", ret);
+		abort();
+	}
+
+	// We did not simply reach the end of the stack without finding a handler.  Something wen't wrong
+	printf("UNWIND ERROR %d after raise exception\n", ret);
+	abort();
+}
+
+void __cfaabi_ehm__throw_terminate( exception_t * val ) {
+	__cfaabi_dbg_print_safe("Throwing termination exception\n");
+
+	__cfaabi_ehm__allocate_exception( val );
+	__cfaabi_ehm__begin_unwind();
+}
+
+void __cfaabi_ehm__rethrow_terminate(void) {
+	__cfaabi_dbg_print_safe("Rethrowing termination exception\n");
+
+	__cfaabi_ehm__begin_unwind();
+}
+
+// This is our personality routine.  For every stack frame anotated with ".cfi_personality 0x3,__gcfa_personality_v0".
+// This function will be called twice when unwinding.  Once in the search phased and once in the cleanup phase.
+_Unwind_Reason_Code __gcfa_personality_v0 (
+		int version, _Unwind_Action actions, unsigned long long exceptionClass,
+		struct _Unwind_Exception* unwind_exception,
+		struct _Unwind_Context* context)
+{
+
+	//__cfaabi_dbg_print_safe("CFA: 0x%lx\n", _Unwind_GetCFA(context));
+	__cfaabi_dbg_print_safe("Personality function (%d, %x, %llu, %p, %p):", version, actions, exceptionClass, unwind_exception, context);
+
+	// If we've reached the end of the stack then there is nothing much we can do...
+	if( actions & _UA_END_OF_STACK ) return _URC_END_OF_STACK;
+
+	if (actions & _UA_SEARCH_PHASE) {
+		__cfaabi_dbg_print_safe(" lookup phase");
+	}
+	else if (actions & _UA_CLEANUP_PHASE) {
+		__cfaabi_dbg_print_safe(" cleanup phase");
+	}
+	// Just in case, probably can't actually happen
+	else {
+		printf(" error\n");
+		return _URC_FATAL_PHASE1_ERROR;
+	}
+
+	// Get a pointer to the language specific data from which we will read what we need
+	const unsigned char * lsd = (const unsigned char*) _Unwind_GetLanguageSpecificData( context );
+
+	if( !lsd ) {	//Nothing to do, keep unwinding
+		printf(" no LSD");
+		goto UNWIND;
+	}
+
+	// Get the instuction pointer and a reading pointer into the exception table
+	lsda_header_info lsd_info;
+	const unsigned char * cur_ptr = parse_lsda_header( context, lsd, &lsd_info);
+	_Unwind_Ptr instruction_ptr = _Unwind_GetIP( context );
+
+	// Linearly search the table for stuff to do
+	while( cur_ptr < lsd_info.action_table ) {
+		_Unwind_Ptr callsite_start;
+		_Unwind_Ptr callsite_len;
+		_Unwind_Ptr callsite_landing_pad;
+		_uleb128_t  callsite_action;
+
+		// Decode the common stuff we have in here
+		cur_ptr = read_encoded_value (0, lsd_info.call_site_encoding, cur_ptr, &callsite_start);
+		cur_ptr = read_encoded_value (0, lsd_info.call_site_encoding, cur_ptr, &callsite_len);
+		cur_ptr = read_encoded_value (0, lsd_info.call_site_encoding, cur_ptr, &callsite_landing_pad);
+		cur_ptr = read_uleb128 (cur_ptr, &callsite_action);
+
+		// Have we reach the correct frame info yet?
+		if( lsd_info.Start + callsite_start + callsite_len < instruction_ptr ) {
+#ifdef __CFA_DEBUG_PRINT__
+			void * ls = (void*)lsd_info.Start;
+			void * cs = (void*)callsite_start;
+			void * cl = (void*)callsite_len;
+			void * bp = (void*)lsd_info.Start + callsite_start;
+			void * ep = (void*)lsd_info.Start + callsite_start + callsite_len;
+			void * ip = (void*)instruction_ptr;
+			__cfaabi_dbg_print_safe("\nfound %p - %p (%p, %p, %p), looking for %p\n", bp, ep, ls, cs, cl, ip);
+#endif // __CFA_DEBUG_PRINT__
+			continue;
+		}
+
+		// Have we gone too far
+		if( lsd_info.Start + callsite_start > instruction_ptr ) {
+			printf(" gone too far");
+			break;
+		}
+
+		// Something to do?
+		if( callsite_landing_pad ) {
+			// Which phase are we in
+			if (actions & _UA_SEARCH_PHASE) {
+				// Search phase, this means we probably found a potential handler and must check if it is a match
+
+				// If we have arbitrarily decided that 0 means nothing to do and 1 means there is a potential handler
+				// This doesn't seem to conflict the gcc default behavior
+				if (callsite_action != 0) {
+					// Now we want to run some code to see if the handler matches
+					// This is the tricky part where we want to the power to run arbitrary code
+					// However, generating a new exception table entry and try routine every time
+					// is way more expansive than we might like
+					// The information we have is :
+					//  - The GR (Series of registers)
+					//    GR1=GP Global Pointer of frame ref by context
+					//  - The instruction pointer
+					//  - The instruction pointer info (???)
+					//  - The CFA (Canonical Frame Address)
+					//  - The BSP (Probably the base stack pointer)
+
+
+					// The current apprach uses one exception table entry per try block
+					_uleb128_t imatcher;
+					// Get the relative offset to the
+					cur_ptr = read_uleb128 (cur_ptr, &imatcher);
+
+					// Get a function pointer from the relative offset and call it
+					// _Unwind_Reason_Code (*matcher)() = (_Unwind_Reason_Code (*)())lsd_info.LPStart + imatcher;
+
+					_Unwind_Reason_Code (*matcher)(exception_t *) =
+						MATCHER_FROM_CONTEXT(context);
+					int index = matcher(shared_stack.current_exception);
+					_Unwind_Reason_Code ret = (0 == index)
+						? _URC_CONTINUE_UNWIND : _URC_HANDLER_FOUND;
+					shared_stack.current_handler_index = index;
+
+					// Based on the return value, check if we matched the exception
+					if( ret == _URC_HANDLER_FOUND) {
+						__cfaabi_dbg_print_safe(" handler found\n");
+					} else {
+						__cfaabi_dbg_print_safe(" no handler\n");
+					}
+					return ret;
+				}
+
+				// This is only a cleanup handler, ignore it
+				__cfaabi_dbg_print_safe(" no action");
+			}
+			else if (actions & _UA_CLEANUP_PHASE) {
+
+				if( (callsite_action != 0) && !(actions & _UA_HANDLER_FRAME) ){
+					// If this is a potential exception handler
+					// but not the one that matched the exception in the seach phase,
+					// just ignore it
+					goto UNWIND;
+				}
+
+				// We need to run some clean-up or a handler
+				// These statment do the right thing but I don't know any specifics at all
+				_Unwind_SetGR( context, __builtin_eh_return_data_regno(0), (_Unwind_Ptr) unwind_exception );
+				_Unwind_SetGR( context, __builtin_eh_return_data_regno(1), 0 );
+
+				// I assume this sets the instruction pointer to the adress of the landing pad
+				// It doesn't actually set it, it only state the value that needs to be set once we return _URC_INSTALL_CONTEXT
+				_Unwind_SetIP( context, ((lsd_info.LPStart) + (callsite_landing_pad)) );
+
+				__cfaabi_dbg_print_safe(" action\n");
+
+				// Return have some action to run
+				return _URC_INSTALL_CONTEXT;
+			}
+		}
+
+		// Nothing to do, move along
+		__cfaabi_dbg_print_safe(" no landing pad");
+	}
+	// No handling found
+	__cfaabi_dbg_print_safe(" table end reached\n");
+
+	UNWIND:
+	__cfaabi_dbg_print_safe(" unwind\n");
+
+	// Keep unwinding the stack
+	return _URC_CONTINUE_UNWIND;
+}
+
+// Try statements are hoisted out see comments for details.  With this could probably be unique and simply linked from
+// libcfa but there is one problem left, see the exception table for details
+__attribute__((noinline))
+void __cfaabi_ehm__try_terminate(void (*try_block)(),
+		void (*catch_block)(int index, exception_t * except),
+		__attribute__((unused)) int (*match_block)(exception_t * except)) {
+	//! volatile int xy = 0;
+	//! printf("%p %p %p %p\n", &try_block, &catch_block, &match_block, &xy);
+
+	// Setup statments: These 2 statments won't actually result in any code, they only setup global tables.
+	// However, they clobber gcc cancellation support from gcc.  We can replace the personality routine but
+	// replacing the exception table gcc generates is not really doable, it generates labels based on how the
+	// assembly works.
+
+	// Setup the personality routine
+	asm volatile (".cfi_personality 0x3,__gcfa_personality_v0");
+	// Setup the exception table
+	asm volatile (".cfi_lsda 0x3, .LLSDACFA2");
+
+	// Label which defines the start of the area for which the handler is setup.
+	asm volatile (".TRYSTART:");
+
+	// The actual statements of the try blocks
+	try_block();
+
+	// asm statement to prevent deadcode removal
+	asm volatile goto ("" : : : : CATCH );
+
+	// Normal return
+	return;
+
+	// Exceptionnal path
+	CATCH : __attribute__(( unused ));
+	// Label which defines the end of the area for which the handler is setup.
+	asm volatile (".TRYEND:");
+	// Label which defines the start of the exception landing pad.  Basically what is called when the exception is
+	// caught.  Note, if multiple handlers are given, the multiplexing should be done by the generated code, not the
+	// exception runtime.
+	asm volatile (".CATCH:");
+
+	// Exception handler
+	catch_block( shared_stack.current_handler_index,
+	             shared_stack.current_exception );
+}
+
+// Exception table data we need to generate.  While this is almost generic, the custom data refers to foo_try_match try
+// match, which is no way generic.  Some more works need to be done if we want to have a single call to the try routine.
+
+#if defined( __i386 ) || defined( __x86_64 )
+asm (
+	//HEADER
+	".LFECFA1:\n"
+	"	.globl	__gcfa_personality_v0\n"
+	"	.section	.gcc_except_table,\"a\",@progbits\n"
+	".LLSDACFA2:\n"							//TABLE header
+	"	.byte	0xff\n"
+	"	.byte	0xff\n"
+	"	.byte	0x1\n"
+	"	.uleb128 .LLSDACSECFA2-.LLSDACSBCFA2\n"		// BODY length
+	// Body uses language specific data and therefore could be modified arbitrarily
+	".LLSDACSBCFA2:\n"						// BODY start
+	"	.uleb128 .TRYSTART-__cfaabi_ehm__try_terminate\n"		// Handled area start  (relative to start of function)
+	"	.uleb128 .TRYEND-.TRYSTART\n"				// Handled area length
+	"	.uleb128 .CATCH-__cfaabi_ehm__try_terminate\n"				// Hanlder landing pad adress  (relative to start of function)
+	"	.uleb128 1\n"						// Action code, gcc seems to use always 0
+	".LLSDACSECFA2:\n"						// BODY end
+	"	.text\n"							// TABLE footer
+	"	.size	__cfaabi_ehm__try_terminate, .-__cfaabi_ehm__try_terminate\n"
+	"	.ident	\"GCC: (Ubuntu 6.2.0-3ubuntu11~16.04) 6.2.0 20160901\"\n"
+//	"	.section	.note.GNU-stack,\"x\",@progbits\n"
+);
+#endif // __i386 || __x86_64
Index: libcfa/src/exception.h
===================================================================
--- libcfa/src/exception.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/exception.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,72 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// exception.h -- Builtins for exception handling.
+//
+// Author           : Andrew Beach
+// Created On       : Mon Jun 26 15:11:00 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Feb 22 18:11:15 2018
+// Update Count     : 8
+//
+
+#pragma once
+
+
+#ifdef __cforall
+extern "C" {
+#endif
+
+struct __cfaabi_ehm__base_exception_t;
+typedef struct __cfaabi_ehm__base_exception_t exception_t;
+struct __cfaabi_ehm__base_exception_t_vtable {
+	const struct __cfaabi_ehm__base_exception_t_vtable * parent;
+	size_t size;
+	void (*copy)(struct __cfaabi_ehm__base_exception_t *this,
+	             struct __cfaabi_ehm__base_exception_t * other);
+	void (*free)(struct __cfaabi_ehm__base_exception_t *this);
+	const char * (*msg)(struct __cfaabi_ehm__base_exception_t *this);
+};
+struct __cfaabi_ehm__base_exception_t {
+	struct __cfaabi_ehm__base_exception_t_vtable const * virtual_table;
+};
+extern struct __cfaabi_ehm__base_exception_t_vtable
+	___cfaabi_ehm__base_exception_t_vtable_instance;
+
+
+// Used in throw statement translation.
+void __cfaabi_ehm__throw_terminate(exception_t * except) __attribute__((noreturn));
+void __cfaabi_ehm__rethrow_terminate() __attribute__((noreturn));
+void __cfaabi_ehm__throw_resume(exception_t * except);
+
+// Function catches termination exceptions.
+void __cfaabi_ehm__try_terminate(
+    void (*try_block)(),
+    void (*catch_block)(int index, exception_t * except),
+    int (*match_block)(exception_t * except));
+
+// Clean-up the exception in catch blocks.
+void __cfaabi_ehm__cleanup_terminate(void * except);
+
+// Data structure creates a list of resume handlers.
+struct __cfaabi_ehm__try_resume_node {
+    struct __cfaabi_ehm__try_resume_node * next;
+    _Bool (*handler)(exception_t * except);
+};
+
+// These act as constructor and destructor for the resume node.
+void __cfaabi_ehm__try_resume_setup(
+    struct __cfaabi_ehm__try_resume_node * node,
+    _Bool (*handler)(exception_t * except));
+void __cfaabi_ehm__try_resume_cleanup(
+    struct __cfaabi_ehm__try_resume_node * node);
+
+// Check for a standard way to call fake deconstructors.
+struct __cfaabi_ehm__cleanup_hook {};
+
+#ifdef __cforall
+}
+#endif
Index: libcfa/src/expat.h
===================================================================
--- libcfa/src/expat.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/expat.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,43 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// expat.h -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Sun Jun 28 11:10:15 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Dec 21 08:57:26 2015
+// Update Count     : 4
+
+// This include file uses the CFA keyword "type" as a field name of a structure.
+
+#if ! defined( type )									// nesting ?
+#define type `type`
+#define __CFA_EXPAT1_H__
+#endif // ! type
+
+#if ! defined( context )								// nesting ?
+#define context `context`
+#define __CFA_EXPAT2_H__
+#endif // ! context
+
+#include_next <expat.h>									// has internal check for multiple expansion
+
+#if defined( type ) && defined( __CFA_EXPAT1_H__ )		// reset only if set
+#undef type
+#undef __CFA_EXPAT1_H__
+#endif // type && __CFA_EXPAT1_H__
+
+#if defined( context ) && defined( __CFA_EXPAT2_H__ )	// reset only if set
+#undef context
+#undef __CFA_EXPAT2_H__
+#endif // context && __CFA_EXPAT2_H__
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/fstream.cfa
===================================================================
--- libcfa/src/fstream.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/fstream.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,251 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fstream.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Aug 10 18:19:40 2018
+// Update Count     : 284
+//
+
+#include "fstream.hfa"
+
+#include <stdio.h>										// vfprintf, vfscanf
+#include <stdlib.h>										// exit
+#include <stdarg.h>										// varargs
+#include <string.h>										// strlen
+#include <stdbool.h>									// true/false
+#include <float.h>										// DBL_DIG, LDBL_DIG
+#include <complex.h>									// creal, cimag
+#include <assert.h>
+
+#define IO_MSG "I/O error: "
+
+void ?{}( ofstream & os, void * file, bool sepDefault, bool sepOnOff, const char * separator, const char * tupleSeparator ) {
+	os.file = file;
+	os.sepDefault = sepDefault;
+	os.sepOnOff = sepOnOff;
+	sepSet( os, separator );
+	sepSetCur( os, sepGet( os ) );
+	sepSetTuple( os, tupleSeparator );
+}
+
+// private
+bool sepPrt( ofstream & os ) { setNL( os, false ); return os.sepOnOff; }
+void sepReset( ofstream & os ) { os.sepOnOff = os.sepDefault; }
+void sepReset( ofstream & os, bool reset ) { os.sepDefault = reset; os.sepOnOff = os.sepDefault; }
+const char * sepGetCur( ofstream & os ) { return os.sepCur; }
+void sepSetCur( ofstream & os, const char * sepCur ) { os.sepCur = sepCur; }
+bool getNL( ofstream & os ) { return os.sawNL; }
+void setNL( ofstream & os, bool state ) { os.sawNL = state; }
+
+// public
+void ?{}( ofstream & os ) { os.file = 0; }
+
+void ?{}( ofstream & os, const char * name, const char * mode ) {
+	open( os, name, mode );
+}
+void ?{}( ofstream & os, const char * name ) {
+	open( os, name, "w" );
+}
+
+void sepOn( ofstream & os ) { os.sepOnOff = ! getNL( os ); }
+void sepOff( ofstream & os ) { os.sepOnOff = false; }
+
+bool sepDisable( ofstream & os ) {
+	bool temp = os.sepDefault;
+	os.sepDefault = false;
+	sepReset( os );
+	return temp;
+} // sepDisable
+
+bool sepEnable( ofstream & os ) {
+	bool temp = os.sepDefault;
+	os.sepDefault = true;
+	if ( os.sepOnOff ) sepReset( os );					// start of line ?
+	return temp;
+} // sepEnable
+
+const char * sepGet( ofstream & os ) { return os.separator; }
+void sepSet( ofstream & os, const char * s ) {
+	assert( s );
+	strncpy( os.separator, s, sepSize - 1 );
+	os.separator[sepSize - 1] = '\0';
+} // sepSet
+
+const char * sepGetTuple( ofstream & os ) { return os.tupleSeparator; }
+void sepSetTuple( ofstream & os, const char * s ) {
+	assert( s );
+	strncpy( os.tupleSeparator, s, sepSize - 1 );
+	os.tupleSeparator[sepSize - 1] = '\0';
+} // sepSet
+
+int fail( ofstream & os ) {
+	return os.file == 0 || ferror( (FILE *)(os.file) );
+} // fail
+
+int flush( ofstream & os ) {
+	return fflush( (FILE *)(os.file) );
+} // flush
+
+void open( ofstream & os, const char * name, const char * mode ) {
+	FILE *file = fopen( name, mode );
+	#ifdef __CFA_DEBUG__
+	if ( file == 0 ) {
+		fprintf( stderr, IO_MSG "open output file \"%s\", ", name );
+		perror( 0 );
+		exit( EXIT_FAILURE );
+	} // if
+	#endif // __CFA_DEBUG__
+	(os){ file, true, false, " ", ", " };
+} // open
+
+void open( ofstream & os, const char * name ) {
+	open( os, name, "w" );
+} // open
+
+void close( ofstream & os ) {
+	if ( (FILE *)(os.file) == stdout || (FILE *)(os.file) == stderr ) return;
+
+	if ( fclose( (FILE *)(os.file) ) == EOF ) {
+		perror( IO_MSG "close output" );
+	} // if
+} // close
+
+ofstream & write( ofstream & os, const char * data, size_t size ) {
+	if ( fail( os ) ) {
+		fprintf( stderr, "attempt write I/O on failed stream\n" );
+		exit( EXIT_FAILURE );
+	} // if
+
+	if ( fwrite( data, 1, size, (FILE *)(os.file) ) != size ) {
+		perror( IO_MSG "write" );
+		exit( EXIT_FAILURE );
+	} // if
+	return os;
+} // write
+
+int fmt( ofstream & os, const char format[], ... ) {
+	va_list args;
+	va_start( args, format );
+	int len = vfprintf( (FILE *)(os.file), format, args );
+	if ( len == EOF ) {
+		if ( ferror( (FILE *)(os.file) ) ) {
+			fprintf( stderr, "invalid write\n" );
+			exit( EXIT_FAILURE );
+		} // if
+	} // if
+	va_end( args );
+
+	sepReset( os );										// reset separator
+	return len;
+} // fmt
+
+static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, " ", ", " };
+ofstream & sout = soutFile;
+static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, " ", ", " };
+ofstream & serr = serrFile;
+
+
+//---------------------------------------
+
+// private
+void ?{}( ifstream & is, void * file ) {
+	is.file = file;
+}
+
+// public
+void ?{}( ifstream & is ) {	is.file = 0; }
+
+void ?{}( ifstream & is, const char * name, const char * mode ) {
+	open( is, name, mode );
+}
+void ?{}( ifstream & is, const char * name ) {
+	open( is, name, "r" );
+}
+
+int fail( ifstream & is ) {
+	return is.file == 0 || ferror( (FILE *)(is.file) );
+} // fail
+
+int eof( ifstream & is ) {
+	return feof( (FILE *)(is.file) );
+} // eof
+
+void open( ifstream & is, const char * name, const char * mode ) {
+	FILE *file = fopen( name, mode );
+	#ifdef __CFA_DEBUG__
+	if ( file == 0 ) {
+		fprintf( stderr, IO_MSG "open input file \"%s\", ", name );
+		perror( 0 );
+		exit( EXIT_FAILURE );
+	} // if
+	#endif // __CFA_DEBUG__
+	is.file = file;
+} // open
+
+void open( ifstream & is, const char * name ) {
+	open( is, name, "r" );
+} // open
+
+void close( ifstream & is ) {
+	if ( (FILE *)(is.file) == stdin ) return;
+
+	if ( fclose( (FILE *)(is.file) ) == EOF ) {
+		perror( IO_MSG "close input" );
+	} // if
+} // close
+
+ifstream & read( ifstream & is, char * data, size_t size ) {
+	if ( fail( is ) ) {
+		fprintf( stderr, "attempt read I/O on failed stream\n" );
+		exit( EXIT_FAILURE );
+	} // if
+
+	if ( fread( data, size, 1, (FILE *)(is.file) ) == 0 ) {
+		perror( IO_MSG "read" );
+		exit( EXIT_FAILURE );
+	} // if
+	return is;
+} // read
+
+ifstream &ungetc( ifstream & is, char c ) {
+	if ( fail( is ) ) {
+		fprintf( stderr, "attempt ungetc I/O on failed stream\n" );
+		exit( EXIT_FAILURE );
+	} // if
+
+	if ( ungetc( c, (FILE *)(is.file) ) == EOF ) {
+		perror( IO_MSG "ungetc" );
+		exit( EXIT_FAILURE );
+	} // if
+	return is;
+} // ungetc
+
+int fmt( ifstream & is, const char format[], ... ) {
+	va_list args;
+
+	va_start( args, format );
+	int len = vfscanf( (FILE *)(is.file), format, args );
+	if ( len == EOF ) {
+		if ( ferror( (FILE *)(is.file) ) ) {
+			fprintf( stderr, "invalid read\n" );
+			exit( EXIT_FAILURE );
+		} // if
+	} // if
+	va_end( args );
+	return len;
+} // fmt
+
+
+static ifstream sinFile = { (FILE *)(&_IO_2_1_stdin_) };
+ifstream & sin = sinFile;
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/fstream.hfa
===================================================================
--- libcfa/src/fstream.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/fstream.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,89 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fstream --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 11 13:54:27 2018
+// Update Count     : 132
+//
+
+#pragma once
+
+#include "iostream.hfa"
+
+enum { sepSize = 16 };
+struct ofstream {
+	void * file;
+	bool sepDefault;
+	bool sepOnOff;
+	bool sawNL;
+	const char * sepCur;
+	char separator[sepSize];
+	char tupleSeparator[sepSize];
+}; // ofstream
+
+// private
+bool sepPrt( ofstream & );
+void sepReset( ofstream & );
+void sepReset( ofstream &, bool );
+const char * sepGetCur( ofstream & );
+void sepSetCur( ofstream &, const char * );
+bool getNL( ofstream & );
+void setNL( ofstream &, bool );
+
+// public
+void sepOn( ofstream & );
+void sepOff( ofstream & );
+bool sepDisable( ofstream & );
+bool sepEnable( ofstream & );
+
+const char * sepGet( ofstream & );
+void sepSet( ofstream &, const char * );
+const char * sepGetTuple( ofstream & );
+void sepSetTuple( ofstream &, const char * );
+
+int fail( ofstream & );
+int flush( ofstream & );
+void open( ofstream &, const char * name, const char * mode );
+void open( ofstream &, const char * name );
+void close( ofstream & );
+ofstream & write( ofstream &, const char * data, size_t size );
+int fmt( ofstream &, const char fmt[], ... );
+
+void ?{}( ofstream & os );
+void ?{}( ofstream & os, const char * name, const char * mode );
+void ?{}( ofstream & os, const char * name );
+
+extern ofstream & sout, & serr;
+
+
+struct ifstream {
+	void * file;
+}; // ifstream
+
+// public
+int fail( ifstream & is );
+int eof( ifstream & is );
+void open( ifstream & is, const char * name, const char * mode );
+void open( ifstream & is, const char * name );
+void close( ifstream & is );
+ifstream & read( ifstream & is, char * data, size_t size );
+ifstream & ungetc( ifstream & is, char c );
+int fmt( ifstream &, const char fmt[], ... );
+
+void ?{}( ifstream & is );
+void ?{}( ifstream & is, const char * name, const char * mode );
+void ?{}( ifstream & is, const char * name );
+
+extern ifstream & sin;
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/gmp.hfa
===================================================================
--- libcfa/src/gmp.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/gmp.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,275 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// gmp --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Apr 19 08:43:43 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Dec  7 09:10:41 2017
+// Update Count     : 21
+//
+
+// https://gmplib.org/gmp-man-6.1.1.pdf
+
+#pragma once
+
+#include <gmp.h>										// GNU multi-precise integers
+#include <fstream.hfa>										// sout
+
+struct Int { mpz_t mpz; };								// wrap GMP implementation
+
+// constructor
+static inline void ?{}( Int & this ) { mpz_init( this.mpz ); }
+static inline void ?{}( Int & this, Int init ) { mpz_init_set( this.mpz, init.mpz ); }
+static inline void ?{}( Int & this, zero_t ) { mpz_init_set_si( this.mpz, 0 ); }
+static inline void ?{}( Int & this, one_t ) { mpz_init_set_si( this.mpz, 1 ); }
+static inline void ?{}( Int & this, signed long int init ) { mpz_init_set_si( this.mpz, init ); }
+static inline void ?{}( Int & this, unsigned long int init ) { mpz_init_set_ui( this.mpz, init ); }
+static inline void ?{}( Int & this, const char * val ) { if ( mpz_init_set_str( this.mpz, val, 0 ) ) abort(); }
+static inline void ^?{}( Int & this ) { mpz_clear( this.mpz ); }
+
+// literal
+static inline Int ?`mp( signed long int init ) { return (Int){ init }; }
+static inline Int ?`mp( unsigned long int init ) { return (Int){ init }; }
+static inline Int ?`mp( const char * init ) { return (Int){ init }; }
+
+// assignment
+static inline Int ?=?( Int & lhs, Int rhs ) { mpz_set( lhs.mpz, rhs.mpz ); return lhs; }
+static inline Int ?=?( Int & lhs, long int rhs ) { mpz_set_si( lhs.mpz, rhs ); return lhs; }
+static inline Int ?=?( Int & lhs, unsigned long int rhs ) { mpz_set_ui( lhs.mpz, rhs ); return lhs; }
+static inline Int ?=?( Int & lhs, const char * rhs ) { if ( mpz_set_str( lhs.mpz, rhs, 0 ) ) { printf( "invalid string conversion\n" ); abort(); } return lhs; }
+
+static inline char ?=?( char & lhs, Int rhs ) { char val = mpz_get_si( rhs.mpz ); lhs = val; return lhs; }
+static inline short int ?=?( short int & lhs, Int rhs ) { short int val = mpz_get_si( rhs.mpz ); lhs = val; return lhs; }
+static inline int ?=?( int & lhs, Int rhs ) { int val = mpz_get_si( rhs.mpz ); lhs = val; return lhs; }
+static inline long int ?=?( long int & lhs, Int rhs ) { long int val = mpz_get_si( rhs.mpz ); lhs = val; return lhs; }
+static inline unsigned char ?=?( unsigned char & lhs, Int rhs ) { unsigned char val = mpz_get_ui( rhs.mpz ); lhs = val; return lhs; }
+static inline unsigned short int ?=?( unsigned short int & lhs, Int rhs ) { unsigned short int val = mpz_get_ui( rhs.mpz ); lhs = val; return lhs; }
+static inline unsigned int ?=?( unsigned int & lhs, Int rhs ) { unsigned int val = mpz_get_ui( rhs.mpz ); lhs = val; return lhs; }
+static inline unsigned long int ?=?( unsigned long int & lhs, Int rhs ) { unsigned long int val = mpz_get_ui( rhs.mpz ); lhs = val; return lhs; }
+
+// conversions
+static inline long int narrow( Int val ) { return mpz_get_si( val.mpz ); }
+static inline unsigned long int narrow( Int val ) { return mpz_get_ui( val.mpz ); }
+
+// comparison
+static inline int ?==?( Int oper1, Int oper2 ) { return mpz_cmp( oper1.mpz, oper2.mpz ) == 0; }
+static inline int ?==?( Int oper1, long int oper2 ) { return mpz_cmp_si( oper1.mpz, oper2 ) == 0; }
+static inline int ?==?( long int oper2, Int oper1 ) { return mpz_cmp_si( oper1.mpz, oper2 ) == 0; }
+static inline int ?==?( Int oper1, unsigned long int oper2 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) == 0; }
+static inline int ?==?( unsigned long int oper2, Int oper1 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) == 0; }
+
+static inline int ?!=?( Int oper1, Int oper2 ) { return ! ( oper1 == oper2 ); }
+static inline int ?!=?( Int oper1, long int oper2 ) { return ! ( oper1 == oper2 ); }
+static inline int ?!=?( long int oper1, Int oper2 ) { return ! ( oper1 == oper2 ); }
+static inline int ?!=?( Int oper1, unsigned long int oper2 ) { return ! ( oper1 == oper2 ); }
+static inline int ?!=?( unsigned long int oper1, Int oper2 ) { return ! ( oper1 == oper2 ); }
+
+static inline int ?<?( Int oper1, Int oper2 ) { return mpz_cmp( oper1.mpz, oper2.mpz ) < 0; }
+static inline int ?<?( Int oper1, long int oper2 ) { return mpz_cmp_si( oper1.mpz, oper2 ) < 0; }
+static inline int ?<?( long int oper2, Int oper1 ) { return mpz_cmp_si( oper1.mpz, oper2 ) < 0; }
+static inline int ?<?( Int oper1, unsigned long int oper2 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) < 0; }
+static inline int ?<?( unsigned long int oper2, Int oper1 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) < 0; }
+
+static inline int ?<=?( Int oper1, Int oper2 ) { return mpz_cmp( oper1.mpz, oper2.mpz ) <= 0; }
+static inline int ?<=?( Int oper1, long int oper2 ) { return mpz_cmp_si( oper1.mpz, oper2 ) <= 0; }
+static inline int ?<=?( long int oper2, Int oper1 ) { return mpz_cmp_si( oper1.mpz, oper2 ) <= 0; }
+static inline int ?<=?( Int oper1, unsigned long int oper2 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) <= 0; }
+static inline int ?<=?( unsigned long int oper2, Int oper1 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) <= 0; }
+
+static inline int ?>?( Int oper1, Int oper2 ) { return ! ( oper1 <= oper2 ); }
+static inline int ?>?( Int oper1, long int oper2 ) { return ! ( oper1 <= oper2 ); }
+static inline int ?>?( long int oper1, Int oper2 ) { return ! ( oper1 <= oper2 ); }
+static inline int ?>?( Int oper1, unsigned long int oper2 ) { return ! ( oper1 <= oper2 ); }
+static inline int ?>?( unsigned long int oper1, Int oper2 ) { return ! ( oper1 <= oper2 ); }
+
+static inline int ?>=?( Int oper1, Int oper2 ) { return ! ( oper1 < oper2 ); }
+static inline int ?>=?( Int oper1, long int oper2 ) { return ! ( oper1 < oper2 ); }
+static inline int ?>=?( long int oper1, Int oper2 ) { return ! ( oper1 < oper2 ); }
+static inline int ?>=?( Int oper1, unsigned long int oper2 ) { return ! ( oper1 < oper2 ); }
+static inline int ?>=?( unsigned long int oper1, Int oper2 ) { return ! ( oper1 < oper2 ); }
+
+// arithmetic
+static inline Int +?( Int oper ) { Int pos; mpz_set( pos.mpz, oper.mpz ); return pos; }
+static inline Int -?( Int oper ) { Int neg; mpz_neg( neg.mpz, oper.mpz ); return neg; }
+static inline Int ~?( Int oper ) { Int comp; mpz_com( comp.mpz, oper.mpz ); return comp; }
+
+static inline Int ?&?( Int oper1, Int oper2 ) { Int conjunction; mpz_and( conjunction.mpz, oper1.mpz, oper2.mpz ); return conjunction; }
+static inline Int ?&?( Int oper1, long int oper2 ) { Int conjunction, temp; mpz_set_si( temp.mpz, oper2 ); mpz_and( conjunction.mpz, oper1.mpz, temp.mpz ); return conjunction; }
+static inline Int ?&?( long int oper1, Int oper2 ) { Int conjunction, temp; mpz_set_si( temp.mpz, oper1 ); mpz_and( conjunction.mpz, temp.mpz, oper2.mpz ); return conjunction; }
+static inline Int ?&?( Int oper1, unsigned long int oper2 ) { Int conjunction, temp; mpz_set_ui( temp.mpz, oper2 ); mpz_and( conjunction.mpz, oper1.mpz, temp.mpz ); return conjunction; }
+static inline Int ?&?( unsigned long int oper1, Int oper2 ) { Int conjunction, temp; mpz_set_ui( temp.mpz, oper1 ); mpz_and( conjunction.mpz, temp.mpz, oper2.mpz ); return conjunction; }
+static inline Int ?&=?( Int & lhs, Int rhs ) { return lhs = lhs & rhs; }
+
+static inline Int ?|?( Int oper1, Int oper2 ) { Int disjunction; mpz_ior( disjunction.mpz, oper1.mpz, oper2.mpz ); return disjunction; }
+static inline Int ?|?( Int oper1, long int oper2 ) { Int disjunction, temp; mpz_set_si( temp.mpz, oper2 ); mpz_ior( disjunction.mpz, oper1.mpz, temp.mpz ); return disjunction; }
+static inline Int ?|?( long int oper1, Int oper2 ) { Int disjunction, temp; mpz_set_si( temp.mpz, oper1 ); mpz_ior( disjunction.mpz, temp.mpz, oper2.mpz ); return disjunction; }
+static inline Int ?|?( Int oper1, unsigned long int oper2 ) { Int disjunction, temp; mpz_set_ui( temp.mpz, oper2 ); mpz_ior( disjunction.mpz, oper1.mpz, temp.mpz ); return disjunction; }
+static inline Int ?|?( unsigned long int oper1, Int oper2 ) { Int disjunction, temp; mpz_set_ui( temp.mpz, oper1 ); mpz_ior( disjunction.mpz, temp.mpz, oper2.mpz ); return disjunction; }
+static inline Int ?|=?( Int & lhs, Int rhs ) { return lhs = lhs | rhs; }
+
+static inline Int ?^?( Int oper1, Int oper2 ) { Int disjunction; mpz_xor( disjunction.mpz, oper1.mpz, oper2.mpz ); return disjunction; }
+static inline Int ?^?( Int oper1, long int oper2 ) { Int disjunction, temp; mpz_set_si( temp.mpz, oper2 ); mpz_ior( disjunction.mpz, oper1.mpz, temp.mpz ); return disjunction; }
+static inline Int ?^?( long int oper1, Int oper2 ) { Int disjunction, temp; mpz_set_si( temp.mpz, oper1 ); mpz_ior( disjunction.mpz, temp.mpz, oper2.mpz ); return disjunction; }
+static inline Int ?^?( Int oper1, unsigned long int oper2 ) { Int disjunction, temp; mpz_set_ui( temp.mpz, oper2 ); mpz_ior( disjunction.mpz, oper1.mpz, temp.mpz ); return disjunction; }
+static inline Int ?^?( unsigned long int oper1, Int oper2 ) { Int disjunction, temp; mpz_set_ui( temp.mpz, oper1 ); mpz_ior( disjunction.mpz, temp.mpz, oper2.mpz ); return disjunction; }
+static inline Int ?^=?( Int & lhs, Int rhs ) { return lhs = lhs ^ rhs; }
+
+static inline Int ?+?( Int addend1, Int addend2 ) { Int sum; mpz_add( sum.mpz, addend1.mpz, addend2.mpz ); return sum; }
+static inline Int ?+?( Int addend1, long int addend2 ) { Int sum; if ( addend2 >= 0 ) mpz_add_ui( sum.mpz, addend1.mpz, addend2 ); else mpz_sub_ui( sum.mpz, addend1.mpz, -addend2 ); return sum; }
+static inline Int ?+?( long int addend2, Int addend1 ) { Int sum; if ( addend2 >= 0 ) mpz_add_ui( sum.mpz, addend1.mpz, addend2 ); else mpz_sub_ui( sum.mpz, addend1.mpz, -addend2 ); return sum; }
+static inline Int ?+?( Int addend1, unsigned long int addend2 ) { Int sum; mpz_add_ui( sum.mpz, addend1.mpz, addend2 ); return sum; }
+static inline Int ?+?( unsigned long int addend2, Int addend1 ) { Int sum; mpz_add_ui( sum.mpz, addend1.mpz, addend2 ); return sum; }
+static inline Int ?+=?( Int & lhs, Int rhs ) { return lhs = lhs + rhs; }
+static inline Int ?+=?( Int & lhs, long int rhs ) { return lhs = lhs + rhs; }
+static inline Int ?+=?( Int & lhs, unsigned long int rhs ) { return lhs = lhs + rhs; }
+static inline Int ++?( Int & lhs ) { return lhs += 1; }
+static inline Int ?++( Int & lhs ) { Int ret = lhs; lhs += 1; return ret; }
+
+static inline Int ?-?( Int minuend, Int subtrahend ) { Int diff; mpz_sub( diff.mpz, minuend.mpz, subtrahend.mpz ); return diff; }
+static inline Int ?-?( Int minuend, long int subtrahend ) { Int diff; if ( subtrahend >= 0 ) mpz_sub_ui( diff.mpz, minuend.mpz, subtrahend ); else mpz_add_ui( diff.mpz, minuend.mpz, -subtrahend ); return diff; }
+static inline Int ?-?( long int minuend, Int subtrahend ) { Int diff; if ( subtrahend >= 0 ) mpz_ui_sub( diff.mpz, minuend, subtrahend.mpz ); else { mpz_add_ui( diff.mpz, subtrahend.mpz, -minuend ); mpz_neg( diff.mpz, diff.mpz ); } return diff; }
+static inline Int ?-?( Int minuend, unsigned long int subtrahend ) { Int diff; mpz_sub_ui( diff.mpz, minuend.mpz, subtrahend ); return diff; }
+static inline Int ?-?( unsigned long int minuend, Int subtrahend ) { Int diff; mpz_ui_sub( diff.mpz, minuend, subtrahend.mpz ); return diff; }
+static inline Int ?-=?( Int & lhs, Int rhs ) { return lhs = lhs - rhs; }
+static inline Int ?-=?( Int & lhs, long int rhs ) { return lhs = lhs - rhs; }
+static inline Int ?-=?( Int & lhs, unsigned long int rhs ) { return lhs = lhs - rhs; }
+static inline Int --?( Int & lhs ) { return lhs -= 1; }
+static inline Int ?--( Int & lhs ) { Int ret = lhs; lhs -= 1; return ret; }
+
+static inline Int ?*?( Int multiplicator, Int multiplicand ) { Int product; mpz_mul( product.mpz, multiplicator.mpz, multiplicand.mpz ); return product; }
+static inline Int ?*?( Int multiplicator, long int multiplicand ) { Int product; mpz_mul_si( product.mpz, multiplicator.mpz, multiplicand ); return product; }
+static inline Int ?*?( long int multiplicand, Int multiplicator ) { Int product; mpz_mul_si( product.mpz, multiplicator.mpz, multiplicand ); return product; }
+static inline Int ?*?( Int multiplicator, unsigned long int multiplicand ) { Int product; mpz_mul_ui( product.mpz, multiplicator.mpz, multiplicand ); return product; }
+static inline Int ?*?( unsigned long int multiplicand, Int multiplicator ) { Int product; mpz_mul_ui( product.mpz, multiplicator.mpz, multiplicand ); return product; }
+static inline Int ?*=?( Int & lhs, Int rhs ) { return lhs = lhs * rhs; }
+static inline Int ?*=?( Int & lhs, long int rhs ) { return lhs = lhs * rhs; }
+static inline Int ?*=?( Int & lhs, unsigned long int rhs ) { return lhs = lhs * rhs; }
+
+// some code for operators "/" and "%" taken from g++ gmpxx.h
+static inline Int ?/?( Int dividend, Int divisor ) { Int quotient; mpz_tdiv_q( quotient.mpz, dividend.mpz, divisor.mpz ); return quotient; }
+static inline Int ?/?( Int dividend, unsigned long int divisor ) { Int quotient; mpz_tdiv_q_ui( quotient.mpz, dividend.mpz, divisor ); return quotient; }
+static inline Int ?/?( unsigned long int dividend, Int divisor ) {
+	Int quotient;
+    if ( mpz_sgn( divisor.mpz ) >= 0 ) {
+		if ( mpz_fits_ulong_p( divisor.mpz ) )
+			mpz_set_ui( quotient.mpz, dividend / mpz_get_ui( divisor.mpz ) );
+		else
+			mpz_set_ui( quotient.mpz, 0 );
+	} else {
+		mpz_neg( quotient.mpz, divisor.mpz );
+		if ( mpz_fits_ulong_p( quotient.mpz ) ) {
+			mpz_set_ui( quotient.mpz, dividend / mpz_get_ui( quotient.mpz ) );
+			mpz_neg( quotient.mpz, quotient.mpz );
+		} else
+			mpz_set_ui( quotient.mpz, 0 );
+	} // if
+	return quotient;
+} // ?/?
+static inline Int ?/?( Int dividend, long int divisor ) {
+	Int quotient;
+    if ( divisor >= 0 )
+		mpz_tdiv_q_ui( quotient.mpz, dividend.mpz, divisor );
+    else {
+		mpz_tdiv_q_ui( quotient.mpz, dividend.mpz, -divisor );
+		mpz_neg( quotient.mpz, quotient.mpz );
+	} // if
+	return quotient;
+} // ?/?
+static inline Int ?/?( long int dividend, Int divisor ) {
+	Int quotient;
+    if ( mpz_fits_slong_p( divisor.mpz ) )
+		mpz_set_si( quotient.mpz, dividend / mpz_get_si( divisor.mpz ) );
+    else {
+        // if divisor is bigger than a long then the quotient must be zero, unless dividend==LONG_MIN and
+        // dividend==-LONG_MIN in which case the quotient is -1
+        mpz_set_si( quotient.mpz, mpz_cmpabs_ui( divisor.mpz, (dividend >= 0 ? dividend : -dividend)) == 0 ? -1 : 0 );
+	} // if
+	return quotient;
+} // ?/?
+static inline Int ?/=?( Int & lhs, Int rhs ) { return lhs = lhs / rhs; }
+static inline Int ?/=?( Int & lhs, long int rhs ) { return lhs = lhs / rhs; }
+static inline Int ?/=?( Int & lhs, unsigned long int rhs ) { return lhs = lhs / rhs; }
+
+static inline [ Int, Int ] div( Int dividend, Int divisor ) { Int quotient, remainder; mpz_fdiv_qr( quotient.mpz, remainder.mpz, dividend.mpz, divisor.mpz ); return [ quotient, remainder ]; }
+static inline [ Int, Int ] div( Int dividend, unsigned long int divisor ) { Int quotient, remainder; mpz_fdiv_qr_ui( quotient.mpz, remainder.mpz, dividend.mpz, divisor ); return [ quotient, remainder ]; }
+
+static inline Int ?%?( Int dividend, Int divisor ) { Int remainder; mpz_tdiv_r( remainder.mpz, dividend.mpz, divisor.mpz ); return remainder; }
+static inline Int ?%?( Int dividend, unsigned long int divisor ) { Int remainder; mpz_tdiv_r_ui( remainder.mpz, dividend.mpz, divisor ); return remainder; }
+static inline Int ?%?( unsigned long int dividend, Int divisor ) {
+	Int remainder;
+    if ( mpz_sgn( divisor.mpz ) >= 0 ) {
+		if ( mpz_fits_ulong_p( divisor.mpz ) )
+			mpz_set_ui( remainder.mpz, dividend % mpz_get_ui( divisor.mpz ) );
+		else
+			mpz_set_ui( remainder.mpz, dividend );
+	} else {
+		mpz_neg( remainder.mpz, divisor.mpz );
+		if ( mpz_fits_ulong_p( remainder.mpz ) )
+			mpz_set_ui( remainder.mpz, dividend % mpz_get_ui( remainder.mpz ) );
+		else
+			mpz_set_ui( remainder.mpz, dividend );
+	} // if
+	return remainder;
+} // ?%?
+static inline Int ?%?( Int dividend, long int divisor ) {
+	Int remainder;
+    mpz_tdiv_r_ui( remainder.mpz, dividend.mpz, (divisor >= 0 ? divisor : -divisor));
+	return remainder;
+} // ?%?
+static inline Int ?%?( long int dividend, Int divisor ) {
+	Int remainder;
+    if ( mpz_fits_slong_p( divisor.mpz ) )
+		mpz_set_si( remainder.mpz, dividend % mpz_get_si( divisor.mpz ) );
+	else {
+		// if divisor is bigger than a long then the remainder is dividend unchanged, unless dividend==LONG_MIN and
+		// dividend==-LONG_MIN in which case the remainder is 0
+        mpz_set_si( remainder.mpz, mpz_cmpabs_ui( divisor.mpz, (dividend >= 0 ? dividend : -dividend)) == 0 ? 0 : dividend);
+	} // if
+	return remainder;
+} // ?%?
+static inline Int ?%=?( Int & lhs, Int rhs ) { return lhs = lhs % rhs; }
+static inline Int ?%=?( Int & lhs, long int rhs ) { return lhs = lhs % rhs; }
+static inline Int ?%=?( Int & lhs, unsigned long int rhs ) { return lhs = lhs % rhs; }
+
+static inline Int ?<<?( Int shiften, mp_bitcnt_t shift ) { Int shifted; mpz_mul_2exp( shifted.mpz, shiften.mpz, shift ); return shifted; }
+static inline Int ?<<=?( Int & lhs, mp_bitcnt_t shift ) { return lhs = lhs << shift; }
+static inline Int ?>>?( Int shiften, mp_bitcnt_t shift ) { Int shifted; mpz_fdiv_q_2exp( shifted.mpz, shiften.mpz, shift ); return shifted; }
+static inline Int ?>>=?( Int & lhs, mp_bitcnt_t shift ) { return lhs = lhs >> shift; }
+
+// number functions
+static inline Int abs( Int oper ) { Int positive; mpz_abs( positive.mpz, oper.mpz ); return positive; }
+static inline Int fact( unsigned long int N ) { Int factorial; mpz_fac_ui( factorial.mpz, N ); return factorial; }
+static inline Int gcd( Int oper1, Int oper2 ) { Int gcdret; mpz_gcd( gcdret.mpz, oper1.mpz, oper2.mpz ); return gcdret; }
+static inline Int pow( Int base, unsigned long int exponent ) { Int power; mpz_pow_ui( power.mpz, base.mpz, exponent ); return power; }
+static inline Int pow( unsigned long int base, unsigned long int exponent ) { Int power; mpz_ui_pow_ui( power.mpz, base, exponent ); return power; }
+static inline void srandom( gmp_randstate_t state ) { gmp_randinit_default( state ); }
+static inline Int random( gmp_randstate_t state, mp_bitcnt_t n ) { Int rand; mpz_urandomb( rand.mpz, state, n ); return rand; }
+static inline Int random( gmp_randstate_t state, Int n ) { Int rand; mpz_urandomm( rand.mpz, state, n.mpz ); return rand; }
+static inline Int random( gmp_randstate_t state, mp_size_t max_size ) { Int rand; mpz_random( rand.mpz, max_size ); return rand; }
+static inline int sgn( Int oper ) { return mpz_sgn( oper.mpz ); }
+static inline Int sqrt( Int oper ) { Int root; mpz_sqrt( root.mpz, oper.mpz ); return root; }
+
+// I/O
+static inline forall( dtype istype | istream( istype ) )
+istype & ?|?( istype & is, Int & mp ) {
+ 	gmp_scanf( "%Zd", &mp );
+ 	return is;
+} // ?|?
+
+static inline forall( dtype ostype | ostream( ostype ) )
+ostype & ?|?( ostype & os, Int mp ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	gmp_printf( "%Zd", mp.mpz );
+	sepOn( os );
+ 	return os;
+} // ?|?
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/heap.cfa
===================================================================
--- libcfa/src/heap.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/heap.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1048 @@
+// #comment TD : this file uses both spaces and tabs for indentation
+
+//
+// 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.
+//
+// heap.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Dec 19 21:58:35 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 11 08:22:16 2018
+// Update Count     : 495
+//
+
+#include <unistd.h>										// sbrk, sysconf
+#include <stdbool.h>									// true, false
+#include <stdio.h>										// snprintf, fileno
+#include <errno.h>										// errno
+extern "C" {
+#include <sys/mman.h>									// mmap, munmap
+} // extern "C"
+
+// #comment TD : Many of these should be merged into math I believe
+#include "bits/align.hfa"									// libPow2
+#include "bits/defs.hfa"									// likely, unlikely
+#include "bits/locks.hfa"									// __spinlock_t
+#include "startup.hfa"									// STARTUP_PRIORITY_MEMORY
+#include "stdlib.hfa"										// bsearchl
+#include "malloc.h"
+
+
+enum {
+	__CFA_DEFAULT_MMAP_START__ = (512 * 1024 + 1),
+	__CFA_DEFAULT_HEAP_EXPANSION__ = (1 * 1024 * 1024),
+};
+
+size_t default_mmap_start() __attribute__(( weak )) {
+	return __CFA_DEFAULT_MMAP_START__;
+} // default_mmap_start
+
+size_t default_heap_expansion() __attribute__(( weak )) {
+	return __CFA_DEFAULT_HEAP_EXPANSION__;
+} // default_heap_expansion
+
+
+// supported mallopt options
+#ifndef M_MMAP_THRESHOLD
+#define M_MMAP_THRESHOLD (-1)
+#endif // M_TOP_PAD
+#ifndef M_TOP_PAD
+#define M_TOP_PAD (-2)
+#endif // M_TOP_PAD
+
+#define FASTLOOKUP
+#define __STATISTICS__
+
+#define SPINLOCK 0
+#define LOCKFREE 1
+#define BUCKETLOCK SPINLOCK
+#if BUCKETLOCK == LOCKFREE
+#include <uStackLF.h>
+#endif // LOCKFREE
+
+// #comment TD : This defined is significantly different from the __ALIGN__ define from locks.hfa
+#define ALIGN 16
+
+// enum { NoBucketSizes = 93,								// number of buckets sizes
+// #ifdef FASTLOOKUP
+// 	   LookupSizes = 65536,								// number of fast lookup sizes
+// #endif // FASTLOOKUP
+// };
+#define NoBucketSizes 93								// number of buckets sizes
+#ifdef FASTLOOKUP
+#define LookupSizes 65536								// number of fast lookup sizes
+#endif // FASTLOOKUP
+
+
+static bool traceHeap = false;
+
+inline bool traceHeap() {
+	return traceHeap;
+} // traceHeap
+
+bool traceHeapOn() {
+	bool temp = traceHeap;
+	traceHeap = true;
+	return temp;
+} // traceHeapOn
+
+bool traceHeapOff() {
+	bool temp = traceHeap;
+	traceHeap = false;
+	return temp;
+} // traceHeapOff
+
+
+static bool checkFree = false;
+
+inline bool checkFree() {
+	return checkFree;
+} // checkFree
+
+bool checkFreeOn() {
+	bool temp = checkFree;
+	checkFree = true;
+	return temp;
+} // checkFreeOn
+
+bool checkFreeOff() {
+	bool temp = checkFree;
+	checkFree = false;
+	return temp;
+} // checkFreeOff
+
+
+// static bool traceHeapTerm = false;
+
+// inline bool traceHeapTerm() {
+// 	return traceHeapTerm;
+// } // traceHeapTerm
+
+// bool traceHeapTermOn() {
+// 	bool temp = traceHeapTerm;
+// 	traceHeapTerm = true;
+// 	return temp;
+// } // traceHeapTermOn
+
+// bool traceHeapTermOff() {
+// 	bool temp = traceHeapTerm;
+// 	traceHeapTerm = false;
+// 	return temp;
+// } // traceHeapTermOff
+
+
+#ifdef __CFA_DEBUG__
+static unsigned int allocFree;							// running total of allocations minus frees
+
+static void checkUnfreed() {
+	if ( allocFree != 0 ) {
+		// DO NOT USE STREAMS AS THEY MAY BE UNAVAILABLE AT THIS POINT.
+		// char helpText[512];
+		// int len = snprintf( helpText, sizeof(helpText), "CFA warning (UNIX pid:%ld) : program terminating with %u(0x%x) bytes of storage allocated but not freed.\n"
+		// 					"Possible cause is unfreed storage allocated by the program or system/library routines called from the program.\n",
+		// 					(long int)getpid(), allocFree, allocFree ); // always print the UNIX pid
+		// __cfaabi_dbg_bits_write( helpText, len );
+	} // if
+} // checkUnfreed
+
+extern "C" {
+void heapAppStart() {									// called by __cfaabi_appready_startup
+	allocFree = 0;
+} // heapAppStart
+
+void heapAppStop() {									// called by __cfaabi_appready_startdown
+	fclose( stdin ); fclose( stdout );
+	checkUnfreed();
+} // heapAppStop
+} // extern "C"
+#endif // __CFA_DEBUG__
+
+
+struct HeapManager {
+//	struct FreeHeader;									// forward declaration
+
+	struct Storage {
+	    struct Header {									// header
+			union Kind {
+				struct RealHeader {
+					union {
+						// #comment TD : this code use byte size but the comment uses bit size
+
+						struct {						// 32-bit word => 64-bit header, 64-bit word => 128-bit header
+							#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ && __SIZEOF_POINTER__ == 4
+							uint32_t padding;			// unused, force home/blocksize to overlay alignment in fake header
+							#endif // __ORDER_BIG_ENDIAN__ && __U_WORDSIZE__ == 32
+
+							union {
+//								FreeHeader * home;		// allocated block points back to home locations (must overlay alignment)
+								void * home;			// allocated block points back to home locations (must overlay alignment)
+								size_t blockSize;		// size for munmap (must overlay alignment)
+								#if BUCKLOCK == SPINLOCK
+								Storage * next;			// freed block points next freed block of same size
+								#endif // SPINLOCK
+							};
+
+							#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_POINTER__ == 4
+							uint32_t padding;			// unused, force home/blocksize to overlay alignment in fake header
+							#endif // __ORDER_LITTLE_ENDIAN__ && __U_WORDSIZE__ == 32
+
+						};
+
+						// #comment TD : C++ code
+						#if BUCKLOCK == LOCKFREE
+						Stack<Storage>::Link next;		// freed block points next freed block of same size (double-wide)
+						#endif // LOCKFREE
+					};
+				} real; // RealHeader
+				struct FakeHeader {
+					#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+					uint32_t alignment;					// low-order bits of home/blockSize used for tricks
+					#endif // __ORDER_LITTLE_ENDIAN__
+
+					uint32_t offset;
+
+					#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+					uint32_t alignment;					// low-order bits of home/blockSize used for tricks
+					#endif // __ORDER_BIG_ENDIAN__
+				} fake; // FakeHeader
+			} kind; // Kind
+	    } header; // Header
+	    char pad[ALIGN - sizeof( Header )];
+	    char data[0];									// storage
+	}; // Storage
+
+	static_assert( ALIGN >= sizeof( Storage ), "ALIGN < sizeof( Storage )" );
+
+	struct FreeHeader {
+		#if BUCKLOCK == SPINLOCK
+	    __spinlock_t lock;								// must be first field for alignment
+	    Storage * freeList;
+		#elif BUCKLOCK == LOCKFREE
+		// #comment TD : C++ code
+	    StackLF<Storage> freeList;
+		#else
+			#error undefined lock type for bucket lock
+		#endif // SPINLOCK
+	    size_t blockSize;								// size of allocations on this list
+	}; // FreeHeader
+
+	// must be first fields for alignment
+	__spinlock_t extlock;								// protects allocation-buffer extension
+	FreeHeader freeLists[NoBucketSizes];				// buckets for different allocation sizes
+
+	void * heapBegin;									// start of heap
+	void * heapEnd;										// logical end of heap
+	size_t heapRemaining;								// amount of storage not allocated in the current chunk
+}; // HeapManager
+
+static inline size_t getKey( const HeapManager.FreeHeader & freeheader ) { return freeheader.blockSize; }
+// statically allocated variables => zero filled.
+
+
+static size_t pageSize;									// architecture pagesize
+static size_t heapExpand;								// sbrk advance
+static size_t mmapStart;								// cross over point for mmap
+static unsigned int maxBucketsUsed;						// maximum number of buckets in use
+
+// #comment TD : This array is not const but it feels like it should be
+// Powers of 2 are common allocation sizes, so make powers of 2 generate the minimum required size.
+static unsigned int bucketSizes[NoBucketSizes] @= {		// different bucket sizes
+	16, 32, 48, 64,
+	64 + sizeof(HeapManager.Storage), 96, 112, 128, 128 + sizeof(HeapManager.Storage), 160, 192, 224,
+	256 + sizeof(HeapManager.Storage), 320, 384, 448, 512 + sizeof(HeapManager.Storage), 640, 768, 896,
+	1_024 + sizeof(HeapManager.Storage), 1_536, 2_048 + sizeof(HeapManager.Storage), 2_560, 3_072, 3_584, 4_096 + sizeof(HeapManager.Storage), 6_144,
+	8_192 + sizeof(HeapManager.Storage), 9_216, 10_240, 11_264, 12_288, 13_312, 14_336, 15_360,
+	16_384 + sizeof(HeapManager.Storage), 18_432, 20_480, 22_528, 24_576, 26_624, 28_672, 30_720,
+	32_768 + sizeof(HeapManager.Storage), 36_864, 40_960, 45_056, 49_152, 53_248, 57_344, 61_440,
+	65_536 + sizeof(HeapManager.Storage), 73_728, 81_920, 90_112, 98_304, 106_496, 114_688, 122_880,
+	131_072 + sizeof(HeapManager.Storage), 147_456, 163_840, 180_224, 196_608, 212_992, 229_376, 245_760,
+	262_144 + sizeof(HeapManager.Storage), 294_912, 327_680, 360_448, 393_216, 425_984, 458_752, 491_520,
+	524_288 + sizeof(HeapManager.Storage), 655_360, 786_432, 917_504, 1_048_576 + sizeof(HeapManager.Storage), 1_179_648, 1_310_720, 1_441_792,
+	1_572_864, 1_703_936, 1_835_008, 1_966_080, 2_097_152 + sizeof(HeapManager.Storage), 2_621_440, 3_145_728, 3_670_016,
+	4_194_304 + sizeof(HeapManager.Storage)
+};
+#ifdef FASTLOOKUP
+static unsigned char lookup[LookupSizes];				// O(1) lookup for small sizes
+#endif // FASTLOOKUP
+static int mmapFd = -1;									// fake or actual fd for anonymous file
+
+
+#ifdef __CFA_DEBUG__
+static bool heapBoot = 0;								// detect recursion during boot
+#endif // __CFA_DEBUG__
+static HeapManager heapManager __attribute__(( aligned (128) )) @= {}; // size of cache line to prevent false sharing
+
+// #comment TD : The return type of this function should be commented
+static inline bool setMmapStart( size_t value ) {
+	if ( value < pageSize || bucketSizes[NoBucketSizes - 1] < value ) return true;
+	mmapStart = value;									// set global
+
+	// find the closest bucket size less than or equal to the mmapStart size
+	maxBucketsUsed = bsearchl( (unsigned int)mmapStart, bucketSizes, NoBucketSizes ); // binary search
+	assert( maxBucketsUsed < NoBucketSizes );			// subscript failure ?
+	assert( mmapStart <= bucketSizes[maxBucketsUsed] ); // search failure ?
+	return false;
+} // setMmapStart
+
+
+static void ?{}( HeapManager & manager ) with ( manager ) {
+	pageSize = sysconf( _SC_PAGESIZE );
+
+	for ( unsigned int i = 0; i < NoBucketSizes; i += 1 ) { // initialize the free lists
+		freeLists[i].blockSize = bucketSizes[i];
+	} // for
+
+	#ifdef FASTLOOKUP
+	unsigned int idx = 0;
+	for ( unsigned int i = 0; i < LookupSizes; i += 1 ) {
+		if ( i > bucketSizes[idx] ) idx += 1;
+		lookup[i] = idx;
+	} // for
+	#endif // FASTLOOKUP
+
+	if ( setMmapStart( default_mmap_start() ) ) {
+		abort( "HeapManager : internal error, mmap start initialization failure." );
+	} // if
+	heapExpand = default_heap_expansion();
+
+	char * End = (char *)sbrk( 0 );
+	sbrk( (char *)libCeiling( (long unsigned int)End, libAlign() ) - End ); // move start of heap to multiple of alignment
+	heapBegin = heapEnd = sbrk( 0 );					// get new start point
+} // HeapManager
+
+
+static void ^?{}( HeapManager & ) {
+	#ifdef __STATISTICS__
+	// if ( traceHeapTerm() ) {
+	// 	printStats();
+	// 	if ( checkfree() ) checkFree( heapManager, true );
+	// } // if
+	#endif // __STATISTICS__
+} // ~HeapManager
+
+
+static void memory_startup( void ) __attribute__(( constructor( STARTUP_PRIORITY_MEMORY ) ));
+void memory_startup( void ) {
+	#ifdef __CFA_DEBUG__
+	if ( unlikely( heapBoot ) ) {					// check for recursion during system boot
+		// DO NOT USE STREAMS AS THEY MAY BE UNAVAILABLE AT THIS POINT.
+		abort( "boot() : internal error, recursively invoked during system boot." );
+	} // if
+	heapBoot = true;
+	#endif // __CFA_DEBUG__
+
+	// #comment TD : This assertion seems redundent with the above code
+	assert( heapManager.heapBegin == 0 );
+	heapManager{};
+} // memory_startup
+
+static void memory_shutdown( void ) __attribute__(( destructor( STARTUP_PRIORITY_MEMORY ) ));
+void memory_shutdown( void ) {
+	^heapManager{};
+} // memory_shutdown
+
+
+#ifdef __STATISTICS__
+static unsigned long long int mmap_storage;				// heap statistics counters
+static unsigned int mmap_calls;
+static unsigned long long int munmap_storage;
+static unsigned int munmap_calls;
+static unsigned long long int sbrk_storage;
+static unsigned int sbrk_calls;
+static unsigned long long int malloc_storage;
+static unsigned int malloc_calls;
+static unsigned long long int free_storage;
+static unsigned int free_calls;
+static unsigned long long int calloc_storage;
+static unsigned int calloc_calls;
+static unsigned long long int memalign_storage;
+static unsigned int memalign_calls;
+static unsigned long long int cmemalign_storage;
+static unsigned int cmemalign_calls;
+static unsigned long long int realloc_storage;
+static unsigned int realloc_calls;
+
+static int statfd;										// statistics file descriptor (changed by malloc_stats_fd)
+
+
+// Use "write" because streams may be shutdown when calls are made.
+static void printStats() {
+	char helpText[512];
+	__cfaabi_dbg_bits_print_buffer( helpText, sizeof(helpText),
+			"\nHeap statistics:\n"
+			"  malloc: calls %u / storage %llu\n"
+			"  calloc: calls %u / storage %llu\n"
+			"  memalign: calls %u / storage %llu\n"
+			"  cmemalign: calls %u / storage %llu\n"
+			"  realloc: calls %u / storage %llu\n"
+			"  free: calls %u / storage %llu\n"
+			"  mmap: calls %u / storage %llu\n"
+			"  munmap: calls %u / storage %llu\n"
+			"  sbrk: calls %u / storage %llu\n",
+			malloc_calls, malloc_storage,
+			calloc_calls, calloc_storage,
+			memalign_calls, memalign_storage,
+			cmemalign_calls, cmemalign_storage,
+			realloc_calls, realloc_storage,
+			free_calls, free_storage,
+			mmap_calls, mmap_storage,
+			munmap_calls, munmap_storage,
+			sbrk_calls, sbrk_storage
+		);
+} // printStats
+
+// #comment TD : Why do we have this?
+static int printStatsXML( FILE * stream ) {
+	char helpText[512];
+	int len = snprintf( helpText, sizeof(helpText),
+						"<malloc version=\"1\">\n"
+						"<heap nr=\"0\">\n"
+						"<sizes>\n"
+						"</sizes>\n"
+						"<total type=\"malloc\" count=\"%u\" size=\"%llu\"/>\n"
+						"<total type=\"calloc\" count=\"%u\" size=\"%llu\"/>\n"
+						"<total type=\"memalign\" count=\"%u\" size=\"%llu\"/>\n"
+						"<total type=\"cmemalign\" count=\"%u\" size=\"%llu\"/>\n"
+						"<total type=\"realloc\" count=\"%u\" size=\"%llu\"/>\n"
+						"<total type=\"free\" count=\"%u\" size=\"%llu\"/>\n"
+						"<total type=\"mmap\" count=\"%u\" size=\"%llu\"/>\n"
+						"<total type=\"munmap\" count=\"%u\" size=\"%llu\"/>\n"
+						"<total type=\"sbrk\" count=\"%u\" size=\"%llu\"/>\n"
+						"</malloc>",
+						malloc_calls, malloc_storage,
+						calloc_calls, calloc_storage,
+						memalign_calls, memalign_storage,
+						cmemalign_calls, cmemalign_storage,
+						realloc_calls, realloc_storage,
+						free_calls, free_storage,
+						mmap_calls, mmap_storage,
+						munmap_calls, munmap_storage,
+						sbrk_calls, sbrk_storage
+		);
+	return write( fileno( stream ), helpText, len );	// -1 => error
+} // printStatsXML
+#endif // __STATISTICS__
+
+// #comment TD : Is this the samething as Out-of-Memory?
+static inline void noMemory() {
+	abort( "Heap memory exhausted at %zu bytes.\n"
+			"Possible cause is very large memory allocation and/or large amount of unfreed storage allocated by the program or system/library routines.",
+			((char *)(sbrk( 0 )) - (char *)(heapManager.heapBegin)) );
+} // noMemory
+
+
+static inline void checkAlign( size_t alignment ) {
+	if ( alignment < sizeof(void *) || ! libPow2( alignment ) ) {
+		abort( "Alignment %zu for memory allocation is less than sizeof(void *) and/or not a power of 2.", alignment );
+	} // if
+} // checkAlign
+
+
+static inline bool setHeapExpand( size_t value ) {
+	if ( heapExpand < pageSize ) return true;
+	heapExpand = value;
+	return false;
+} // setHeapExpand
+
+
+static inline void checkHeader( bool check, const char * name, void * addr ) {
+	if ( unlikely( check ) ) {							// bad address ?
+		abort( "Attempt to %s storage %p with address outside the heap.\n"
+				"Possible cause is duplicate free on same block or overwriting of memory.",
+				name, addr );
+	} // if
+} // checkHeader
+
+// #comment TD : function should be commented and/or have a more evocative name
+//               this isn't either a check or a constructor which is what I would expect this function to be
+static inline void fakeHeader( HeapManager.Storage.Header *& header, size_t & size, size_t & alignment ) {
+	if ( unlikely( (header->kind.fake.alignment & 1) == 1 ) ) { // fake header ?
+		size_t offset = header->kind.fake.offset;
+		alignment = header->kind.fake.alignment & -2;	// remove flag from value
+		#ifdef __CFA_DEBUG__
+		checkAlign( alignment );						// check alignment
+		#endif // __CFA_DEBUG__
+		header = (HeapManager.Storage.Header *)((char *)header - offset);
+	} // if
+} // fakeHeader
+
+// #comment TD : Why is this a define
+#define headerAddr( addr ) ((HeapManager.Storage.Header *)( (char *)addr - sizeof(HeapManager.Storage) ))
+
+static inline bool headers( const char * name, void * addr, HeapManager.Storage.Header *& header, HeapManager.FreeHeader *& freeElem, size_t & size, size_t & alignment ) with ( heapManager ) {
+	header = headerAddr( addr );
+
+	if ( unlikely( heapEnd < addr ) ) {					// mmapped ?
+		fakeHeader( header, size, alignment );
+		size = header->kind.real.blockSize & -3;		// mmap size
+		return true;
+	} // if
+
+	#ifdef __CFA_DEBUG__
+			checkHeader( addr < heapBegin || header < (HeapManager.Storage.Header *)heapBegin, name, addr ); // bad low address ?
+	#endif // __CFA_DEBUG__
+
+	// #comment TD : This code looks weird...
+	//               It's called as the first statement of both branches of the last if, with the same parameters in all cases
+
+		// header may be safe to dereference
+		fakeHeader( header, size, alignment );
+	#ifdef __CFA_DEBUG__
+			checkHeader( header < (HeapManager.Storage.Header *)heapBegin || (HeapManager.Storage.Header *)heapEnd < header, name, addr ); // bad address ? (offset could be + or -)
+	#endif // __CFA_DEBUG__
+
+		freeElem = (HeapManager.FreeHeader *)((size_t)header->kind.real.home & -3);
+	#ifdef __CFA_DEBUG__
+			if ( freeElem < &freeLists[0] || &freeLists[NoBucketSizes] <= freeElem ) {
+			abort( "Attempt to %s storage %p with corrupted header.\n"
+				 "Possible cause is duplicate free on same block or overwriting of header information.",
+			   		name, addr );
+			} // if
+	#endif // __CFA_DEBUG__
+		size = freeElem->blockSize;
+		return false;
+} // headers
+
+
+static inline void * extend( size_t size ) with ( heapManager ) {
+	lock( extlock __cfaabi_dbg_ctx2 );
+	ptrdiff_t rem = heapRemaining - size;
+	if ( rem < 0 ) {
+		// If the size requested is bigger than the current remaining storage, increase the size of the heap.
+
+		size_t increase = libCeiling( size > heapExpand ? size : heapExpand, libAlign() );
+		if ( sbrk( increase ) == (void *)-1 ) {
+			unlock( extlock );
+			errno = ENOMEM;
+			return 0;
+		} // if
+#ifdef __STATISTICS__
+		sbrk_calls += 1;
+		sbrk_storage += increase;
+#endif // __STATISTICS__
+#ifdef __CFA_DEBUG__
+		// Set new memory to garbage so subsequent uninitialized usages might fail.
+		memset( (char *)heapEnd + heapRemaining, '\377', increase );
+#endif // __CFA_DEBUG__
+		rem = heapRemaining + increase - size;
+	} // if
+
+	HeapManager.Storage * block = (HeapManager.Storage *)heapEnd;
+	heapRemaining = rem;
+	heapEnd = (char *)heapEnd + size;
+	unlock( extlock );
+	return block;
+} // extend
+
+
+static inline void * doMalloc( size_t size ) with ( heapManager ) {
+	HeapManager.Storage * block;
+
+	// Look up size in the size list.  Make sure the user request includes space for the header that must be allocated
+	// along with the block and is a multiple of the alignment size.
+
+	size_t tsize = size + sizeof(HeapManager.Storage);
+	if ( likely( tsize < mmapStart ) ) {				// small size => sbrk
+		HeapManager.FreeHeader * freeElem =
+			#ifdef FASTLOOKUP
+			tsize < LookupSizes ? &freeLists[lookup[tsize]] :
+			#endif // FASTLOOKUP
+			bsearchl( tsize, freeLists, (size_t)maxBucketsUsed ); // binary search
+		assert( freeElem <= &freeLists[maxBucketsUsed] ); // subscripting error ?
+		assert( tsize <= freeElem->blockSize );			// search failure ?
+		tsize = freeElem->blockSize;					// total space needed for request
+
+		// Spin until the lock is acquired for this particular size of block.
+
+		#if defined( SPINLOCK )
+			lock( freeElem->lock __cfaabi_dbg_ctx2 );
+			block = freeElem->freeList;						// remove node from stack
+		#else
+			block = freeElem->freeList.pop();
+		#endif // SPINLOCK
+		if ( unlikely( block == 0 ) ) {					// no free block ?
+			#if defined( SPINLOCK )
+			unlock( freeElem->lock );
+			#endif // SPINLOCK
+			// Freelist for that size was empty, so carve it out of the heap if there's enough left, or get some more
+			// and then carve it off.
+
+			block = (HeapManager.Storage *)extend( tsize );	// mutual exclusion on call
+			if ( unlikely( block == 0 ) ) return 0;
+			#if defined( SPINLOCK )
+		} else {
+			freeElem->freeList = block->header.kind.real.next;
+			unlock( freeElem->lock );
+			#endif // SPINLOCK
+		} // if
+
+		block->header.kind.real.home = freeElem;		// pointer back to free list of apropriate size
+		} else {											// large size => mmap
+		tsize = libCeiling( tsize, pageSize );			// must be multiple of page size
+		#ifdef __STATISTICS__
+			__atomic_add_fetch( &mmap_calls, 1, __ATOMIC_SEQ_CST );
+			__atomic_add_fetch( &mmap_storage, tsize, __ATOMIC_SEQ_CST );
+		#endif // __STATISTICS__
+		block = (HeapManager.Storage *)mmap( 0, tsize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, mmapFd, 0 );
+		if ( block == (HeapManager.Storage *)MAP_FAILED ) {
+			// Do not call strerror( errno ) as it may call malloc.
+			abort( "(HeapManager &)0x%p.doMalloc() : internal error, mmap failure, size:%zu error:%d.", &heapManager, tsize, errno );
+		} // if
+#ifdef __CFA_DEBUG__
+		// Set new memory to garbage so subsequent uninitialized usages might fail.
+		memset( block, '\377', tsize );
+#endif // __CFA_DEBUG__
+		block->header.kind.real.blockSize = tsize;		// storage size for munmap
+		} // if
+
+		void * area = &(block->data);						// adjust off header to user bytes
+
+	#ifdef __CFA_DEBUG__
+			assert( ((uintptr_t)area & (libAlign() - 1)) == 0 ); // minimum alignment ?
+			__atomic_add_fetch( &allocFree, tsize, __ATOMIC_SEQ_CST );
+		if ( traceHeap() ) {
+			enum { BufferSize = 64 };
+			char helpText[BufferSize];
+			int len = snprintf( helpText, BufferSize, "%p = Malloc( %zu ) (allocated %zu)\n", area, size, tsize );
+			// int len = snprintf( helpText, BufferSize, "Malloc %p %zu\n", area, size );
+			__cfaabi_dbg_bits_write( helpText, len );
+		} // if
+	#endif // __CFA_DEBUG__
+
+	return area;
+} // doMalloc
+
+
+static inline void doFree( void * addr ) with ( heapManager ) {
+	#ifdef __CFA_DEBUG__
+		if ( unlikely( heapManager.heapBegin == 0 ) ) {
+			abort( "doFree( %p ) : internal error, called before heap is initialized.", addr );
+		} // if
+	#endif // __CFA_DEBUG__
+
+	HeapManager.Storage.Header * header;
+	HeapManager.FreeHeader * freeElem;
+	size_t size, alignment;								// not used (see realloc)
+
+	if ( headers( "free", addr, header, freeElem, size, alignment ) ) { // mmapped ?
+		#ifdef __STATISTICS__
+			__atomic_add_fetch( &munmap_calls, 1, __ATOMIC_SEQ_CST );
+			__atomic_add_fetch( &munmap_storage, size, __ATOMIC_SEQ_CST );
+		#endif // __STATISTICS__
+		if ( munmap( header, size ) == -1 ) {
+			#ifdef __CFA_DEBUG__
+			abort( "Attempt to deallocate storage %p not allocated or with corrupt header.\n"
+					"Possible cause is invalid pointer.",
+					addr );
+			#endif // __CFA_DEBUG__
+		} // if
+		} else {
+		#ifdef __CFA_DEBUG__
+			// Set free memory to garbage so subsequent usages might fail.
+			memset( ((HeapManager.Storage *)header)->data, '\377', freeElem->blockSize - sizeof( HeapManager.Storage ) );
+		#endif // __CFA_DEBUG__
+
+		#ifdef __STATISTICS__
+			free_storage += size;
+		#endif // __STATISTICS__
+		#if defined( SPINLOCK )
+			lock( freeElem->lock __cfaabi_dbg_ctx2 );		// acquire spin lock
+			header->kind.real.next = freeElem->freeList;	// push on stack
+			freeElem->freeList = (HeapManager.Storage *)header;
+			unlock( freeElem->lock );						// release spin lock
+		#else
+			freeElem->freeList.push( *(HeapManager.Storage *)header );
+		#endif // SPINLOCK
+		} // if
+
+	#ifdef __CFA_DEBUG__
+   		 __atomic_add_fetch( &allocFree, -size, __ATOMIC_SEQ_CST );
+		if ( traceHeap() ) {
+			char helpText[64];
+			int len = snprintf( helpText, sizeof(helpText), "Free( %p ) size:%zu\n", addr, size );
+			__cfaabi_dbg_bits_write( helpText, len );
+		} // if
+	#endif // __CFA_DEBUG__
+} // doFree
+
+
+size_t checkFree( HeapManager & manager ) with ( manager ) {
+	size_t total = 0;
+	#ifdef __STATISTICS__
+		__cfaabi_dbg_bits_acquire();
+		__cfaabi_dbg_bits_print_nolock( "\nBin lists (bin size : free blocks on list)\n" );
+	#endif // __STATISTICS__
+	for ( unsigned int i = 0; i < maxBucketsUsed; i += 1 ) {
+		size_t size = freeLists[i].blockSize;
+		#ifdef __STATISTICS__
+		unsigned int N = 0;
+		#endif // __STATISTICS__
+
+		#if defined( SPINLOCK )
+		for ( HeapManager.Storage * p = freeLists[i].freeList; p != 0; p = p->header.kind.real.next ) {
+		#else
+		for ( HeapManager.Storage * p = freeLists[i].freeList.top(); p != 0; p = p->header.kind.real.next.top ) {
+		#endif // SPINLOCK
+			total += size;
+			#ifdef __STATISTICS__
+			N += 1;
+			#endif // __STATISTICS__
+		} // for
+
+		#ifdef __STATISTICS__
+			__cfaabi_dbg_bits_print_nolock( "%7zu, %-7u  ", size, N );
+			if ( (i + 1) % 8 == 0 ) __cfaabi_dbg_bits_print_nolock( "\n" );
+		#endif // __STATISTICS__
+	} // for
+	#ifdef __STATISTICS__
+		__cfaabi_dbg_bits_print_nolock( "\ntotal free blocks:%zu\n", total );
+		__cfaabi_dbg_bits_release();
+	#endif // __STATISTICS__
+	return (char *)heapEnd - (char *)heapBegin - total;
+} // checkFree
+
+// #comment TD : This is not a good name, plus this feels like it could easily be folded into doMalloc
+static inline void * malloc2( size_t size ) {			// necessary for malloc statistics
+	assert( heapManager.heapBegin != 0 );
+	void * area = doMalloc( size );
+	if ( unlikely( area == 0 ) ) errno = ENOMEM;		// POSIX
+	return area;
+} // malloc2
+
+
+static inline void * memalign2( size_t alignment, size_t size ) { // necessary for malloc statistics
+#ifdef __CFA_DEBUG__
+	checkAlign( alignment );							// check alignment
+#endif // __CFA_DEBUG__
+
+	// if alignment <= default alignment, do normal malloc as two headers are unnecessary
+	if ( unlikely( alignment <= libAlign() ) ) return malloc2( size );
+
+	// Allocate enough storage to guarantee an address on the alignment boundary, and sufficient space before it for
+	// administrative storage. NOTE, WHILE THERE ARE 2 HEADERS, THE FIRST ONE IS IMPLICITLY CREATED BY DOMALLOC.
+	//      .-------------v-----------------v----------------v----------,
+	//      | Real Header | ... padding ... |   Fake Header  | data ... |
+	//      `-------------^-----------------^-+--------------^----------'
+	//      |<--------------------------------' offset/align |<-- alignment boundary
+
+	// subtract libAlign() because it is already the minimum alignment
+	// add sizeof(Storage) for fake header
+	// #comment TD : this is the only place that calls doMalloc without calling malloc2, why ?
+	char * area = (char *)doMalloc( size + alignment - libAlign() + sizeof(HeapManager.Storage) );
+	if ( unlikely( area == 0 ) ) return area;
+
+	// address in the block of the "next" alignment address
+	char * user = (char *)libCeiling( (uintptr_t)(area + sizeof(HeapManager.Storage)), alignment );
+
+	// address of header from malloc
+	HeapManager.Storage.Header * realHeader = headerAddr( area );
+	// address of fake header * before* the alignment location
+	HeapManager.Storage.Header * fakeHeader = headerAddr( user );
+	// SKULLDUGGERY: insert the offset to the start of the actual storage block and remember alignment
+	fakeHeader->kind.fake.offset = (char *)fakeHeader - (char *)realHeader;
+	// SKULLDUGGERY: odd alignment imples fake header
+	fakeHeader->kind.fake.alignment = alignment | 1;
+
+	return user;
+} // memalign2
+
+
+extern "C" {
+	// The malloc() function allocates size bytes and returns a pointer to the
+	// allocated memory. The memory is not initialized. If size is 0, then malloc()
+	// returns either NULL, or a unique pointer value that can later be successfully
+	// passed to free().
+	void * malloc( size_t size ) {
+		#ifdef __STATISTICS__
+			__atomic_add_fetch( &malloc_calls, 1, __ATOMIC_SEQ_CST );
+			__atomic_add_fetch( &malloc_storage, size, __ATOMIC_SEQ_CST );
+		#endif // __STATISTICS__
+
+		return malloc2( size );
+		} // malloc
+
+	// The calloc() function allocates memory for an array of nmemb elements of
+	// size bytes each and returns a pointer to the allocated memory. The memory
+	// is set to zero. If nmemb or size is 0, then calloc() returns either NULL,
+	// or a unique pointer value that can later be successfully passed to free().
+		void * calloc( size_t noOfElems, size_t elemSize ) {
+		size_t size = noOfElems * elemSize;
+		#ifdef __STATISTICS__
+			__atomic_add_fetch( &calloc_calls, 1, __ATOMIC_SEQ_CST );
+			__atomic_add_fetch( &calloc_storage, size, __ATOMIC_SEQ_CST );
+		#endif // __STATISTICS__
+
+		char * area = (char *)malloc2( size );
+		if ( unlikely( area == 0 ) ) return 0;
+
+		HeapManager.Storage.Header * header;
+		HeapManager.FreeHeader * freeElem;
+		size_t asize, alignment;
+		bool mapped __attribute__(( unused )) = headers( "calloc", area, header, freeElem, asize, alignment );
+		#ifndef __CFA_DEBUG__
+		// Mapped storage is zero filled, but in debug mode mapped memory is scrubbed in doMalloc, so it has to be reset to zero.
+		if ( ! mapped )
+		#endif // __CFA_DEBUG__
+			memset( area, '\0', asize - sizeof(HeapManager.Storage) ); // set to zeros
+
+		header->kind.real.blockSize |= 2;		// mark as zero filled
+		return area;
+		} // calloc
+
+	// #comment TD : Document this function
+	void * cmemalign( size_t alignment, size_t noOfElems, size_t elemSize ) {
+		size_t size = noOfElems * elemSize;
+		#ifdef __STATISTICS__
+			__atomic_add_fetch( &cmemalign_calls, 1, __ATOMIC_SEQ_CST );
+			__atomic_add_fetch( &cmemalign_storage, size, __ATOMIC_SEQ_CST );
+		#endif // __STATISTICS__
+
+		char * area = (char *)memalign2( alignment, size );
+		if ( unlikely( area == 0 ) ) return 0;
+		HeapManager.Storage.Header * header;
+		HeapManager.FreeHeader * freeElem;
+		size_t asize;
+		bool mapped __attribute__(( unused )) = headers( "cmemalign", area, header, freeElem, asize, alignment );
+		#ifndef __CFA_DEBUG__
+		// Mapped storage is zero filled, but in debug mode mapped memory is scrubbed in doMalloc, so it has to be reset to zero.
+		if ( ! mapped )
+		#endif // __CFA_DEBUG__
+			memset( area, '\0', asize - ( (char *)area - (char *)header ) ); // set to zeros
+		header->kind.real.blockSize |= 2;				// mark as zero filled
+
+		return area;
+		} // cmemalign
+
+	// The realloc() function changes the size of the memory block pointed to by
+	// ptr to size bytes. The contents will be unchanged in the range from the
+	// start of the region up to the minimum of the old and new sizes. If the new
+	// size is larger than the old size, the added memory will not be initialized.
+	// If ptr is NULL, then the call is equivalent to malloc(size), for all values
+	// of size; if size is equal to zero, and ptr is not NULL, then the call is
+	// equivalent to free(ptr). Unless ptr is NULL, it must have been returned by
+	// an earlier call to malloc(), calloc() or realloc(). If the area pointed to
+	// was moved, a free(ptr) is done.
+		void * realloc( void * addr, size_t size ) {
+		#ifdef __STATISTICS__
+			__atomic_add_fetch( &realloc_calls, 1, __ATOMIC_SEQ_CST );
+		#endif // __STATISTICS__
+
+		if ( unlikely( addr == 0 ) ) return malloc2( size ); // special cases
+		if ( unlikely( size == 0 ) ) { free( addr ); return 0; }
+
+		HeapManager.Storage.Header * header;
+		HeapManager.FreeHeader * freeElem;
+		size_t asize, alignment = 0;
+		headers( "realloc", addr, header, freeElem, asize, alignment );
+
+		size_t usize = asize - ( (char *)addr - (char *)header ); // compute the amount of user storage in the block
+		if ( usize >= size ) {							// already sufficient storage
+			// This case does not result in a new profiler entry because the previous one still exists and it must match with
+			// the free for this memory.  Hence, this realloc does not appear in the profiler output.
+			return addr;
+		} // if
+
+		#ifdef __STATISTICS__
+			__atomic_add_fetch( &realloc_storage, size, __ATOMIC_SEQ_CST );
+		#endif // __STATISTICS__
+
+		void * area;
+		if ( unlikely( alignment != 0 ) ) {				// previous request memalign?
+			area = memalign( alignment, size );			// create new area
+		} else {
+			area = malloc2( size );	// create new area
+		} // if
+		if ( unlikely( area == 0 ) ) return 0;
+		if ( unlikely( header->kind.real.blockSize & 2 ) ) { // previous request zero fill (calloc/cmemalign) ?
+			assert( (header->kind.real.blockSize & 1) == 0 );
+			bool mapped __attribute__(( unused )) = headers( "realloc", area, header, freeElem, asize, alignment );
+			#ifndef __CFA_DEBUG__
+			// Mapped storage is zero filled, but in debug mode mapped memory is scrubbed in doMalloc, so it has to be reset to zero.
+			if ( ! mapped )
+			#endif // __CFA_DEBUG__
+				memset( (char *)area + usize, '\0', asize - ( (char *)area - (char *)header ) - usize ); // zero-fill back part
+			header->kind.real.blockSize |= 2;			// mark new request as zero fill
+		} // if
+		memcpy( area, addr, usize );					// copy bytes
+		free( addr );
+		return area;
+	} // realloc
+
+
+	// The obsolete function memalign() allocates size bytes and returns
+	// a pointer to the allocated memory. The memory address will be a
+	// multiple of alignment, which must be a power of two.
+	void * memalign( size_t alignment, size_t size ) __attribute__ ((deprecated));
+		void * memalign( size_t alignment, size_t size ) {
+		#ifdef __STATISTICS__
+		__atomic_add_fetch( &memalign_calls, 1, __ATOMIC_SEQ_CST );
+		__atomic_add_fetch( &memalign_storage, size, __ATOMIC_SEQ_CST );
+		#endif // __STATISTICS__
+
+		void * area = memalign2( alignment, size );
+
+		return area;
+		} // memalign
+
+	// The function aligned_alloc() is the same as memalign(), except for
+	// the added restriction that size should be a multiple of alignment.
+	void * aligned_alloc( size_t alignment, size_t size ) {
+		return memalign( alignment, size );
+	} // aligned_alloc
+
+
+	// The function posix_memalign() allocates size bytes and places the address
+	// of the allocated memory in *memptr. The address of the allocated memory
+	// will be a multiple of alignment, which must be a power of two and a multiple
+	// of sizeof(void *). If size is 0, then posix_memalign() returns either NULL,
+	// or a unique pointer value that can later be successfully passed to free(3).
+	int posix_memalign( void ** memptr, size_t alignment, size_t size ) {
+		if ( alignment < sizeof(void *) || ! libPow2( alignment ) ) return EINVAL; // check alignment
+		* memptr = memalign( alignment, size );
+		if ( unlikely( * memptr == 0 ) ) return ENOMEM;
+		return 0;
+	} // posix_memalign
+
+	// The obsolete function valloc() allocates size bytes and returns a pointer
+	// to the allocated memory. The memory address will be a multiple of the page size.
+	// It is equivalent to memalign(sysconf(_SC_PAGESIZE),size).
+	void * valloc( size_t size ) __attribute__ ((deprecated));
+	void * valloc( size_t size ) {
+		return memalign( pageSize, size );
+	} // valloc
+
+
+	// The free() function frees the memory space pointed to by ptr, which must
+	// have been returned by a previous call to malloc(), calloc() or realloc().
+	// Otherwise, or if free(ptr) has already been called before, undefined
+	// behavior occurs. If ptr is NULL, no operation is performed.
+	void free( void * addr ) {
+		#ifdef __STATISTICS__
+			__atomic_add_fetch( &free_calls, 1, __ATOMIC_SEQ_CST );
+		#endif // __STATISTICS__
+
+		// #comment TD : To decrease nesting I would but the special case in the
+		//               else instead, plus it reads more naturally to have the
+		//               short / normal case instead
+		if ( unlikely( addr == 0 ) ) {					// special case
+			#ifdef __CFA_DEBUG__
+				if ( traceHeap() ) {
+					#define nullmsg "Free( 0x0 ) size:0\n"
+					// Do not debug print free( 0 ), as it can cause recursive entry from sprintf.
+					__cfaabi_dbg_bits_write( nullmsg, sizeof(nullmsg) - 1 );
+				} // if
+			#endif // __CFA_DEBUG__
+			return;
+		} // exit
+
+		doFree( addr );
+	} // free
+
+	// The mallopt() function adjusts parameters that control the behavior of the
+	// memory-allocation functions (see malloc(3)). The param argument specifies
+	// the parameter to be modified, and value specifies the new value for that
+	// parameter.
+		int mallopt( int option, int value ) {
+		choose( option ) {
+			case M_TOP_PAD:
+				if ( setHeapExpand( value ) ) fallthru default;
+			case M_MMAP_THRESHOLD:
+				if ( setMmapStart( value ) ) fallthru default;
+			default:
+				// #comment TD : 1 for unsopported feels wrong
+				return 1;									// success, or unsupported
+		} // switch
+		return 0;										// error
+	} // mallopt
+
+	// The malloc_trim() function attempts to release free memory at the top
+	// of the heap (by calling sbrk(2) with a suitable argument).
+	int malloc_trim( size_t ) {
+		return 0;										// => impossible to release memory
+	} // malloc_trim
+
+	// The malloc_usable_size() function returns the number of usable bytes in the
+	// block pointed to by ptr, a pointer to a block of memory allocated by
+	// malloc(3) or a related function.
+		size_t malloc_usable_size( void * addr ) {
+		if ( unlikely( addr == 0 ) ) return 0;			// null allocation has 0 size
+
+		HeapManager.Storage.Header * header;
+		HeapManager.FreeHeader * freeElem;
+		size_t size, alignment;
+
+		headers( "malloc_usable_size", addr, header, freeElem, size, alignment );
+		size_t usize = size - ( (char *)addr - (char *)header ); // compute the amount of user storage in the block
+		return usize;
+	} // malloc_usable_size
+
+
+		// #comment TD : Document this function
+	size_t malloc_alignment( void * addr ) {
+		if ( unlikely( addr == 0 ) ) return libAlign();	// minimum alignment
+		HeapManager.Storage.Header * header = (HeapManager.Storage.Header *)( (char *)addr - sizeof(HeapManager.Storage) );
+		if ( (header->kind.fake.alignment & 1) == 1 ) {	// fake header ?
+			return header->kind.fake.alignment & -2;	// remove flag from value
+		} else {
+			return libAlign ();							// minimum alignment
+		} // if
+		} // malloc_alignment
+
+
+		// #comment TD : Document this function
+	bool malloc_zero_fill( void * addr ) {
+		if ( unlikely( addr == 0 ) ) return false;		// null allocation is not zero fill
+
+		HeapManager.Storage.Header * header = (HeapManager.Storage.Header *)( (char *)addr - sizeof(HeapManager.Storage) );
+		if ( (header->kind.fake.alignment & 1) == 1 ) { // fake header ?
+			header = (HeapManager.Storage.Header *)((char *)header - header->kind.fake.offset);
+		} // if
+		return (header->kind.real.blockSize & 2) != 0;	// zero filled (calloc/cmemalign) ?
+		} // malloc_zero_fill
+
+
+	// #comment TD : Document this function
+	void malloc_stats( void ) {
+		#ifdef __STATISTICS__
+			printStats();
+			if ( checkFree() ) checkFree( heapManager );
+		#endif // __STATISTICS__
+		} // malloc_stats
+
+	// #comment TD : Document this function
+		int malloc_stats_fd( int fd ) {
+		#ifdef __STATISTICS__
+			int temp = statfd;
+			statfd = fd;
+			return temp;
+		#else
+			return -1;
+		#endif // __STATISTICS__
+		} // malloc_stats_fd
+
+
+	// #comment TD : Document this function
+	int malloc_info( int options, FILE * stream ) {
+		return printStatsXML( stream );
+	} // malloc_info
+
+
+	// #comment TD : What are these two functions for?
+	void * malloc_get_state( void ) {
+		return 0;
+	} // malloc_get_state
+
+	int malloc_set_state( void * ptr ) {
+		return 0;
+	} // malloc_set_state
+} // extern "C"
+
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa -nodebug -O2 heap.c" //
+// End: //
Index: libcfa/src/interpose.cfa
===================================================================
--- libcfa/src/interpose.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/interpose.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,276 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// interpose.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Wed Mar 29 16:10:31 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat May  5 11:37:35 2018
+// Update Count     : 111
+//
+
+#include <stdarg.h>										// va_start, va_end
+#include <string.h>										// strlen
+#include <unistd.h>										// _exit, getpid
+#define __USE_GNU
+#include <signal.h>
+#undef __USE_GNU
+extern "C" {
+#include <dlfcn.h>										// dlopen, dlsym
+#include <execinfo.h>									// backtrace, messages
+}
+
+#include "bits/debug.hfa"
+#include "bits/defs.hfa"
+#include "bits/signal.hfa"								// sigHandler_?
+#include "startup.hfa"									// STARTUP_PRIORITY_CORE
+
+//=============================================================================================
+// Interposing helpers
+//=============================================================================================
+
+void preload_libgcc(void) {
+	dlopen( "libgcc_s.so.1", RTLD_NOW );
+	if ( const char * error = dlerror() ) abort( "interpose_symbol : internal error pre-loading libgcc, %s\n", error );
+}
+
+typedef void (* generic_fptr_t)(void);
+generic_fptr_t interpose_symbol( const char * symbol, const char * version ) {
+	const char * error;
+
+	static void * library;
+	if ( ! library ) {
+		#if defined( RTLD_NEXT )
+			library = RTLD_NEXT;
+		#else
+			// missing RTLD_NEXT => must hard-code library name, assuming libstdc++
+			library = dlopen( "libc.so.6", RTLD_LAZY );
+			error = dlerror();
+			if ( error ) {
+				abort( "interpose_symbol : failed to open libc, %s\n", error );
+			}
+		#endif
+	} // if
+
+	union { generic_fptr_t fptr; void * ptr; } originalFunc;
+
+	#if defined( _GNU_SOURCE )
+		if ( version ) {
+			originalFunc.ptr = dlvsym( library, symbol, version );
+		} else {
+			originalFunc.ptr = dlsym( library, symbol );
+		}
+	#else
+		originalFunc.ptr = dlsym( library, symbol );
+	#endif // _GNU_SOURCE
+
+	error = dlerror();
+	if ( error ) abort( "interpose_symbol : internal error, %s\n", error );
+
+	return originalFunc.fptr;
+}
+
+#define INTERPOSE_LIBC( x, ver ) __cabi_libc.x = (typeof(__cabi_libc.x))interpose_symbol( #x, ver )
+
+//=============================================================================================
+// Interposition Startup logic
+//=============================================================================================
+
+void sigHandler_segv ( __CFA_SIGPARMS__ );
+void sigHandler_ill  ( __CFA_SIGPARMS__ );
+void sigHandler_fpe  ( __CFA_SIGPARMS__ );
+void sigHandler_abort( __CFA_SIGPARMS__ );
+void sigHandler_term ( __CFA_SIGPARMS__ );
+
+struct {
+	void (* exit)( int ) __attribute__(( __noreturn__ ));
+	void (* abort)( void ) __attribute__(( __noreturn__ ));
+} __cabi_libc;
+
+extern "C" {
+	void __cfaabi_interpose_startup(void)  __attribute__(( constructor( STARTUP_PRIORITY_CORE ) ));
+	void __cfaabi_interpose_startup( void ) {
+		const char *version = NULL;
+
+		preload_libgcc();
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
+		INTERPOSE_LIBC( abort, version );
+		INTERPOSE_LIBC( exit , version );
+#pragma GCC diagnostic pop
+
+		// Failure handler
+		__cfaabi_sigaction( SIGSEGV, sigHandler_segv , SA_SIGINFO );
+		__cfaabi_sigaction( SIGBUS , sigHandler_segv , SA_SIGINFO );
+		__cfaabi_sigaction( SIGILL , sigHandler_ill  , SA_SIGINFO );
+		__cfaabi_sigaction( SIGFPE , sigHandler_fpe  , SA_SIGINFO );
+		__cfaabi_sigaction( SIGABRT, sigHandler_abort, SA_SIGINFO | SA_RESETHAND);
+		__cfaabi_sigaction( SIGTERM, sigHandler_term , SA_SIGINFO );
+		__cfaabi_sigaction( SIGINT , sigHandler_term , SA_SIGINFO );
+	}
+}
+
+//=============================================================================================
+// Terminating Signals logic
+//=============================================================================================
+
+// Forward declare abort after the __typeof__ call to avoid ambiguities
+void exit( int status, const char fmt[], ... ) __attribute__(( format(printf, 2, 3), __nothrow__, __leaf__, __noreturn__ ));
+void abort( const char fmt[], ... ) __attribute__(( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
+
+extern "C" {
+	void abort( void ) __attribute__(( __nothrow__, __leaf__, __noreturn__ )) {
+		abort( NULL );
+	}
+
+	void __cabi_abort( const char fmt[], ... ) __attribute__(( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ )) {
+		va_list argp;
+		va_start( argp, fmt );
+		abort( fmt, argp );
+		va_end( argp );
+	}
+
+	void exit( int status ) __attribute__(( __nothrow__, __leaf__, __noreturn__ )) {
+		__cabi_libc.exit( status );
+	}
+}
+
+void * kernel_abort    ( void ) __attribute__(( __nothrow__, __leaf__, __weak__ )) { return NULL; }
+void   kernel_abort_msg( void * data, char * buffer, int size ) __attribute__(( __nothrow__, __leaf__, __weak__ )) {}
+int kernel_abort_lastframe( void ) __attribute__(( __nothrow__, __leaf__, __weak__ )) { return 4; }
+
+enum { abort_text_size = 1024 };
+static char abort_text[ abort_text_size ];
+static int abort_lastframe;
+
+void exit( int status, const char fmt[], ... ) __attribute__(( format(printf, 2, 3), __nothrow__, __leaf__, __noreturn__ )) {
+    va_list args;
+    va_start( args, fmt );
+    vfprintf( stderr, fmt, args );
+    va_end( args );
+	__cabi_libc.exit( status );
+}
+
+void abort( const char fmt[], ... ) __attribute__(( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ )) {
+	void * kernel_data = kernel_abort();			// must be done here to lock down kernel
+	int len;
+
+	abort_lastframe = kernel_abort_lastframe();
+	len = snprintf( abort_text, abort_text_size, "Cforall Runtime error (UNIX pid:%ld) ", (long int)getpid() ); // use UNIX pid (versus getPid)
+	__cfaabi_dbg_bits_write( abort_text, len );
+
+	if ( fmt ) {
+		va_list args;
+		va_start( args, fmt );
+
+		len = vsnprintf( abort_text, abort_text_size, fmt, args );
+		va_end( args );
+		__cfaabi_dbg_bits_write( abort_text, len );
+
+		if ( fmt[strlen( fmt ) - 1] != '\n' ) {		// add optional newline if missing at the end of the format text
+			__cfaabi_dbg_bits_write( "\n", 1 );
+		}
+	}
+
+	kernel_abort_msg( kernel_data, abort_text, abort_text_size );
+	__cabi_libc.abort();
+}
+
+static void __cfaabi_backtrace() {
+	enum {
+		Frames = 50,									// maximum number of stack frames
+		Start = 8,										// skip first N stack frames
+	};
+
+	void * array[Frames];
+	size_t size = backtrace( array, Frames );
+	char ** messages = backtrace_symbols( array, size );
+
+	// find executable name
+	*index( messages[0], '(' ) = '\0';
+	__cfaabi_dbg_bits_print_nolock( "Stack back trace for: %s\n", messages[0]);
+
+	for ( int i = Start; i < size - abort_lastframe && messages != NULL; i += 1 ) {
+		char * name = NULL, * offset_begin = NULL, * offset_end = NULL;
+
+		for ( char * p = messages[i]; *p; ++p ) {
+			//__cfaabi_dbg_bits_print_nolock( "X %s\n", p);
+			// find parantheses and +offset
+			if ( *p == '(' ) {
+				name = p;
+			}
+			else if ( *p == '+' ) {
+				offset_begin = p;
+			}
+			else if ( *p == ')' ) {
+				offset_end = p;
+				break;
+			}
+		}
+
+		// if line contains symbol print it
+		int frameNo = i - Start;
+		if ( name && offset_begin && offset_end && name < offset_begin ) {
+			// delimit strings
+			*name++ = '\0';
+			*offset_begin++ = '\0';
+			*offset_end++ = '\0';
+
+			__cfaabi_dbg_bits_print_nolock( "(%i) %s : %s + %s %s\n", frameNo, messages[i], name, offset_begin, offset_end);
+		}
+		// otherwise, print the whole line
+		else {
+			__cfaabi_dbg_bits_print_nolock( "(%i) %s\n", frameNo, messages[i] );
+		}
+	}
+	free( messages );
+}
+
+void sigHandler_segv( __CFA_SIGPARMS__ ) {
+	abort( "Addressing invalid memory at location %p\n"
+			"Possible cause is reading outside the address space or writing to a protected area within the address space with an invalid pointer or subscript.\n",
+			sfp->si_addr );
+}
+
+void sigHandler_ill( __CFA_SIGPARMS__ ) {
+	abort( "Executing illegal instruction at location %p.\n"
+			"Possible cause is stack corruption.\n",
+			sfp->si_addr );
+}
+
+void sigHandler_fpe( __CFA_SIGPARMS__ ) {
+	const char * msg;
+
+	choose( sfp->si_code ) {
+	  case FPE_INTDIV, FPE_FLTDIV: msg = "divide by zero";
+	  case FPE_FLTOVF: msg = "overflow";
+	  case FPE_FLTUND: msg = "underflow";
+	  case FPE_FLTRES: msg = "inexact result";
+	  case FPE_FLTINV: msg = "invalid operation";
+	  default: msg = "unknown";
+	} // choose
+	abort( "Computation error %s at location %p.\n", msg, sfp->si_addr );
+}
+
+void sigHandler_abort( __CFA_SIGPARMS__ ) {
+	__cfaabi_backtrace();
+
+	// reset default signal handler
+	__cfaabi_sigdefault( SIGABRT );
+
+	raise( SIGABRT );
+}
+
+void sigHandler_term( __CFA_SIGPARMS__ ) {
+	abort( "Application stopped by %s signal.", sig == SIGINT ? "an interrupt (SIGINT)" : "a terminate (SIGTERM)" );
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/iostream.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,413 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// iostream.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 11 13:56:43 2018
+// Update Count     : 473
+//
+
+#include "iostream.hfa"
+
+extern "C" {
+#include <stdio.h>
+#include <stdbool.h>									// true/false
+//#include <string.h>										// strlen, strcmp
+extern int strcmp (const char *__s1, const char *__s2) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strlen (const char *__s) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+#include <float.h>										// DBL_DIG, LDBL_DIG
+#include <complex.h>									// creal, cimag
+}
+
+forall( dtype ostype | ostream( ostype ) ) {
+	ostype & ?|?( ostype & os, bool b ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%s", b ? "true" : "false" );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, char ch ) {
+		fmt( os, "%c", ch );
+		if ( ch == '\n' ) setNL( os, true );
+		sepOff( os );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, signed char c ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%hhd", c );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, unsigned char c ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%hhu", c );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, short int si ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%hd", si );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, unsigned short int usi ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%hu", usi );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, int i ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%d", i );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, unsigned int ui ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%u", ui );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, long int li ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%ld", li );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, unsigned long int uli ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%lu", uli );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, long long int lli ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%lld", lli );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, unsigned long long int ulli ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%llu", ulli );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, float f ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%g", f );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, double d ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%.*lg", DBL_DIG, d );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, long double ld ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%.*Lg", LDBL_DIG, ld );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, float _Complex fc ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%g%+gi", crealf( fc ), cimagf( fc ) );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, double _Complex dc ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%.*lg%+.*lgi", DBL_DIG, creal( dc ), DBL_DIG, cimag( dc ) );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, long double _Complex ldc ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%.*Lg%+.*Lgi", LDBL_DIG, creall( ldc ), LDBL_DIG, cimagl( ldc ) );
+		return os;
+	} // ?|?
+
+	ostype & ?|?( ostype & os, const char * str ) {
+		enum { Open = 1, Close, OpenClose };
+		static const unsigned char mask[256] @= {
+			// opening delimiters, no space after
+			['('] : Open, ['['] : Open, ['{'] : Open,
+			['='] : Open, ['$'] : Open, [(unsigned char)'£'] : Open, [(unsigned char)'¥'] : Open,
+			[(unsigned char)'¡'] : Open, [(unsigned char)'¿'] : Open, [(unsigned char)'«'] : Open,
+			// closing delimiters, no space before
+			[','] : Close, ['.'] : Close, [';'] : Close, ['!'] : Close, ['?'] : Close,
+			['%'] : Close, [(unsigned char)'¢'] : Close, [(unsigned char)'»'] : Close,
+			[')'] : Close, [']'] : Close, ['}'] : Close,
+			// opening-closing delimiters, no space before or after
+			['\''] : OpenClose, ['`'] : OpenClose, ['"'] : OpenClose, [':'] : OpenClose,
+			[' '] : OpenClose, ['\f'] : OpenClose, ['\n'] : OpenClose, ['\r'] : OpenClose, ['\t'] : OpenClose, ['\v'] : OpenClose, // isspace
+		}; // mask
+
+	  if ( str[0] == '\0' ) { sepOff( os ); return os; } // null string => no separator
+
+		// first character IS NOT spacing or closing punctuation => add left separator
+		unsigned char ch = str[0];						// must make unsigned
+		if ( sepPrt( os ) && mask[ ch ] != Close && mask[ ch ] != OpenClose ) {
+			fmt( os, "%s", sepGetCur( os ) );
+		} // if
+
+		// if string starts line, must reset to determine open state because separator is off
+		sepReset( os );									// reset separator
+
+		// last character IS spacing or opening punctuation => turn off separator for next item
+		size_t len = strlen( str );
+		ch = str[len - 1];								// must make unsigned
+		if ( sepPrt( os ) && mask[ ch ] != Open && mask[ ch ] != OpenClose ) {
+			sepOn( os );
+		} else {
+			sepOff( os );
+		} // if
+		if ( ch == '\n' ) setNL( os, true );			// check *AFTER* sepPrt call above as it resets NL flag
+		return write( os, str, len );
+	} // ?|?
+
+// 	ostype & ?|?( ostype & os, const char16_t * str ) {
+// 		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+// 		fmt( os, "%ls", str );
+// 		return os;
+// 	} // ?|?
+
+// #if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous
+// 	ostype & ?|?( ostype & os, const char32_t * str ) {
+// 		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+// 		fmt( os, "%ls", str );
+// 		return os;
+// 	} // ?|?
+// #endif // ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 )
+
+// 	ostype & ?|?( ostype & os, const wchar_t * str ) {
+// 		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+// 		fmt( os, "%ls", str );
+// 		return os;
+// 	} // ?|?
+
+	ostype & ?|?( ostype & os, const void * p ) {
+		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+		fmt( os, "%p", p );
+		return os;
+	} // ?|?
+
+
+	// manipulators
+	ostype & ?|?( ostype & os, ostype & (* manip)( ostype & ) ) {
+		return manip( os );
+	} // ?|?
+
+	ostype & sep( ostype & os ) {
+		os | sepGet( os );
+		return os;
+	} // sep
+
+	ostype & sepTuple( ostype & os ) {
+		os | sepGetTuple( os );
+		return os;
+	} // sepTuple
+
+	ostype & endl( ostype & os ) {
+		os | '\n';
+		setNL( os, true );
+		flush( os );
+		sepOff( os );									// prepare for next line
+		return os;
+	} // endl
+
+	ostype & sepOn( ostype & os ) {
+		sepOn( os );
+		return os;
+	} // sepOn
+
+	ostype & sepOff( ostype & os ) {
+		sepOff( os );
+		return os;
+	} // sepOff
+
+	ostype & sepEnable( ostype & os ) {
+		sepEnable( os );
+		return os;
+	} // sepEnable
+
+	ostype & sepDisable( ostype & os ) {
+		sepDisable( os );
+		return os;
+	} // sepDisable
+} // distribution
+
+
+// tuples
+forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } )
+ostype & ?|?( ostype & os, T arg, Params rest ) {
+	os | arg;											// print first argument
+	sepSetCur( os, sepGetTuple( os ) );					// switch to tuple separator
+	os | rest;											// print remaining arguments
+	sepSetCur( os, sepGet( os ) );						// switch to regular separator
+	return os;
+} // ?|?
+
+//---------------------------------------
+
+// writes the range [begin, end) to the given stream
+forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
+void write( iterator_type begin, iterator_type end, ostype & os ) {
+	void print( elt_type i ) { os | i; }
+	for_each( begin, end, print );
+} // ?|?
+
+forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
+void write_reverse( iterator_type begin, iterator_type end, ostype & os ) {
+	void print( elt_type i ) { os | i; }
+	for_each_reverse( begin, end, print );
+} // ?|?
+
+//---------------------------------------
+
+forall( dtype istype | istream( istype ) ) {
+	istype & ?|?( istype & is, bool & b ) {
+		char val[6];
+		fmt( is, "%5s", val );
+		if ( strcmp( val, "true" ) == 0 ) b = true;
+		else if ( strcmp( val, "false" ) == 0 ) b = false;
+		else {
+			fprintf( stderr, "invalid Boolean constant\n" );
+			abort();
+		} // if
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, char & c ) {
+		fmt( is, "%c", &c );							// must pass pointer through varg to fmt
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, signed char & sc ) {
+		fmt( is, "%hhd", &sc );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, unsigned char & usc ) {
+		fmt( is, "%hhu", &usc );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, short int & si ) {
+		fmt( is, "%hd", &si );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, unsigned short int & usi ) {
+		fmt( is, "%hu", &usi );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, int & i ) {
+		fmt( is, "%d", &i );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, unsigned int & ui ) {
+		fmt( is, "%u", &ui );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, long int & li ) {
+		fmt( is, "%ld", &li );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, unsigned long int & ulli ) {
+		fmt( is, "%lu", &ulli );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, long long int & lli ) {
+		fmt( is, "%lld", &lli );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, unsigned long long int & ulli ) {
+		fmt( is, "%llu", &ulli );
+		return is;
+	} // ?|?
+
+
+	istype & ?|?( istype & is, float & f ) {
+		fmt( is, "%f", &f );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, double & d ) {
+		fmt( is, "%lf", &d );
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, long double & ld ) {
+		fmt( is, "%Lf", &ld );
+		return is;
+	} // ?|?
+
+
+	istype & ?|?( istype & is, float _Complex & fc ) {
+		float re, im;
+		fmt( is, "%g%gi", &re, &im );
+		fc = re + im * _Complex_I;
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, double _Complex & dc ) {
+		double re, im;
+		fmt( is, "%lf%lfi", &re, &im );
+		dc = re + im * _Complex_I;
+		return is;
+	} // ?|?
+
+	istype & ?|?( istype & is, long double _Complex & ldc ) {
+		long double re, im;
+		fmt( is, "%Lf%Lfi", &re, &im );
+		ldc = re + im * _Complex_I;
+		return is;
+	} // ?|?
+
+
+	// manipulators
+	istype & ?|?( istype & is, istype & (* manip)( istype & ) ) {
+		return manip( is );
+	} // ?|?
+
+	istype & endl( istype & is ) {
+		fmt( is, "%*[ \t\f\n\r\v]" );					// ignore whitespace
+		return is;
+	} // endl
+} // distribution
+
+_Istream_cstrUC cstr( char * str ) { return (_Istream_cstrUC){ str }; }
+forall( dtype istype | istream( istype ) )
+istype & ?|?( istype & is, _Istream_cstrUC cstr ) {
+	fmt( is, "%s", cstr.s );
+	return is;
+} // cstr
+
+_Istream_cstrC cstr( char * str, int size ) { return (_Istream_cstrC){ str, size }; }
+forall( dtype istype | istream( istype ) )
+istype & ?|?( istype & is, _Istream_cstrC cstr ) {
+	char buf[16];
+	sprintf( buf, "%%%ds", cstr.size );
+	fmt( is, buf, cstr.s );
+	return is;
+} // cstr
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa iostream.c" //
+// End: //
Index: libcfa/src/iostream.hfa
===================================================================
--- libcfa/src/iostream.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/iostream.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,175 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// iostream --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 11 08:22:49 2018
+// Update Count     : 156
+//
+
+#pragma once
+
+#include "iterator.hfa"
+
+trait ostream( dtype ostype ) {
+	// private
+	bool sepPrt( ostype & );							// return separator state (on/off)
+	void sepReset( ostype & );							// set separator state to default state
+	void sepReset( ostype &, bool );					// set separator and default state
+	const char * sepGetCur( ostype & );					// get current separator string
+	void sepSetCur( ostype &, const char * );			// set current separator string
+	bool getNL( ostype & );							// check newline
+	void setNL( ostype &, bool );						// saw newline
+	// public
+	void sepOn( ostype & );								// turn separator state on
+	void sepOff( ostype & );							// turn separator state off
+	bool sepDisable( ostype & );						// set default state to off, and return previous state
+	bool sepEnable( ostype & );						// set default state to on, and return previous state
+
+	const char * sepGet( ostype & );					// get separator string
+	void sepSet( ostype &, const char * );				// set separator to string (15 character maximum)
+	const char * sepGetTuple( ostype & );				// get tuple separator string
+	void sepSetTuple( ostype &, const char * );			// set tuple separator to string (15 character maximum)
+
+	int fail( ostype & );
+	int flush( ostype & );
+	void open( ostype & os, const char * name, const char * mode );
+	void close( ostype & os );
+	ostype & write( ostype &, const char *, size_t );
+	int fmt( ostype &, const char fmt[], ... );
+}; // ostream
+
+// trait writeable( otype T ) {
+// 	forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype &, T );
+// }; // writeable
+
+trait writeable( otype T, dtype ostype | ostream( ostype ) ) {
+	ostype & ?|?( ostype &, T );
+}; // writeable
+
+// implement writable for intrinsic types
+
+forall( dtype ostype | ostream( ostype ) ) {
+	ostype & ?|?( ostype &, bool );
+
+	ostype & ?|?( ostype &, char );
+	ostype & ?|?( ostype &, signed char );
+	ostype & ?|?( ostype &, unsigned char );
+
+	ostype & ?|?( ostype &, short int );
+	ostype & ?|?( ostype &, unsigned short int );
+	ostype & ?|?( ostype &, int );
+	ostype & ?|?( ostype &, unsigned int );
+	ostype & ?|?( ostype &, long int );
+	ostype & ?|?( ostype &, long long int );
+	ostype & ?|?( ostype &, unsigned long int );
+	ostype & ?|?( ostype &, unsigned long long int );
+
+	ostype & ?|?( ostype &, float ); // FIX ME: should not be required
+	ostype & ?|?( ostype &, double );
+	ostype & ?|?( ostype &, long double );
+
+	ostype & ?|?( ostype &, float _Complex );
+	ostype & ?|?( ostype &, double _Complex );
+	ostype & ?|?( ostype &, long double _Complex );
+
+	ostype & ?|?( ostype &, const char * );
+	// ostype & ?|?( ostype &, const char16_t * );
+#if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous
+	// ostype & ?|?( ostype &, const char32_t * );
+#endif // ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 )
+	// ostype & ?|?( ostype &, const wchar_t * );
+	ostype & ?|?( ostype &, const void * );
+
+	// manipulators
+	ostype & ?|?( ostype &, ostype & (*)( ostype & ) );
+	ostype & endl( ostype & );
+	ostype & sep( ostype & );
+	ostype & sepTuple( ostype & );
+	ostype & sepOn( ostype & );
+	ostype & sepOff( ostype & );
+	ostype & sepDisable( ostype & );
+	ostype & sepEnable( ostype & );
+} // distribution
+
+// tuples
+forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } )
+ostype & ?|?( ostype & os, T arg, Params rest );
+
+// writes the range [begin, end) to the given stream
+forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
+void write( iterator_type begin, iterator_type end, ostype & os );
+
+forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
+void write_reverse( iterator_type begin, iterator_type end, ostype & os );
+
+//---------------------------------------
+
+trait istream( dtype istype ) {
+	int fail( istype & );
+	int eof( istype & );
+	void open( istype & is, const char * name );
+	void close( istype & is );
+	istype & read( istype &, char *, size_t );
+	istype & ungetc( istype &, char );
+	int fmt( istype &, const char fmt[], ... );
+}; // istream
+
+trait readable( otype T ) {
+	forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, T );
+}; // readable
+
+forall( dtype istype | istream( istype ) ) {
+	istype & ?|?( istype &, bool & );
+
+	istype & ?|?( istype &, char & );
+	istype & ?|?( istype &, signed char & );
+	istype & ?|?( istype &, unsigned char & );
+
+	istype & ?|?( istype &, short int & );
+	istype & ?|?( istype &, unsigned short int & );
+	istype & ?|?( istype &, int & );
+	istype & ?|?( istype &, unsigned int & );
+	istype & ?|?( istype &, long int & );
+	istype & ?|?( istype &, long long int & );
+	istype & ?|?( istype &, unsigned long int & );
+	istype & ?|?( istype &, unsigned long long int & );
+
+	istype & ?|?( istype &, float & );
+	istype & ?|?( istype &, double & );
+	istype & ?|?( istype &, long double & );
+
+	istype & ?|?( istype &, float _Complex & );
+	istype & ?|?( istype &, double _Complex & );
+	istype & ?|?( istype &, long double _Complex & );
+
+	// manipulators
+	istype & ?|?( istype &, istype & (*)( istype & ) );
+	istype & endl( istype & is );
+} // distribution
+
+struct _Istream_cstrUC { char * s; };
+_Istream_cstrUC cstr( char * );
+forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, _Istream_cstrUC );
+
+struct _Istream_cstrC { char * s; int size; };
+_Istream_cstrC cstr( char *, int size );
+forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, _Istream_cstrC );
+
+
+#include <time_t.hfa>										// Duration (constructors) / Time (constructors)
+
+forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Duration dur );
+forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Time time );
+
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/iterator.cfa
===================================================================
--- libcfa/src/iterator.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/iterator.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,36 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// iterator.c --
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jul  7 08:38:23 2017
+// Update Count     : 28
+//
+
+#include "iterator.hfa"
+
+forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) )
+void for_each( iterator_type begin, iterator_type end, void (* func)( elt_type ) ) {
+	for ( iterator_type i = begin; i != end; ++i ) {
+		func( *i );
+	} // for
+} // for_each
+
+forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) )
+void for_each_reverse( iterator_type begin, iterator_type end, void (* func)( elt_type ) ) {
+	for ( iterator_type i = end; i != begin; ) {
+		--i;
+		func( *i );
+	} // for
+} // for_each_reverse
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa iterator.c" //
+// End: //
Index: libcfa/src/iterator.hfa
===================================================================
--- libcfa/src/iterator.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/iterator.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,48 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// iterator --
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jul  7 08:37:25 2017
+// Update Count     : 10
+//
+
+#pragma once
+
+// An iterator can be used to traverse a data structure.
+trait iterator( otype iterator_type, otype elt_type ) {
+	// point to the next element
+//	iterator_type ?++( iterator_type & );
+	iterator_type ++?( iterator_type & );
+	iterator_type --?( iterator_type & );
+
+	// can be tested for equality with other iterators
+	int ?==?( iterator_type, iterator_type );
+	int ?!=?( iterator_type, iterator_type );
+
+	// dereference to get the pointed-at element
+	elt_type & *?( iterator_type );
+};
+
+trait iterator_for( otype iterator_type, otype collection_type, otype elt_type | iterator( iterator_type, elt_type ) ) {
+//	[ iterator_type begin, iterator_type end ] get_iterators( collection_type );
+	iterator_type begin( collection_type );
+	iterator_type end( collection_type );
+};
+
+forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) )
+void for_each( iterator_type begin, iterator_type end, void (* func)( elt_type ) );
+
+forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) )
+void for_each_reverse( iterator_type begin, iterator_type end, void (* func)( elt_type ) );
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/limits.cfa
===================================================================
--- libcfa/src/limits.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/limits.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,156 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// limits.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Apr  6 18:06:52 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Mar  1 16:22:51 2018
+// Update Count     : 74
+//
+
+#include <limits.h>
+#include <float.h>
+#define __USE_GNU										// get M_* constants
+#include <math.h>
+#include <complex.h>
+#include "limits.hfa"
+
+// Integral Constants
+
+const signed char MIN = SCHAR_MIN;
+const unsigned char MIN = 0;
+const short int MIN = SHRT_MIN;
+const unsigned short int MIN = 0;
+const int MIN = INT_MIN;
+const unsigned int MIN = 0;
+const long int MIN = LONG_MIN;
+const unsigned long int MIN = 0;
+const long long int MIN = LLONG_MIN;
+const unsigned long long int MIN = 0;
+
+const signed char MAX = SCHAR_MAX;
+const unsigned char MAX = UCHAR_MAX;
+const short int MAX = SHRT_MAX;
+const unsigned short int MAX = USHRT_MAX;
+const int MAX = INT_MAX;
+const unsigned int MAX = UINT_MAX;
+const long int MAX = LONG_MAX;
+const unsigned long int MAX = ULONG_MAX;
+const long long int MAX = LLONG_MAX;
+const unsigned long long int MAX = ULLONG_MAX;
+
+// Floating-Point Constants
+
+const float MIN = FLT_MIN;
+const double MIN = DBL_MIN;
+const long double MIN = LDBL_MIN;
+const float _Complex MIN = __FLT_MIN__ + __FLT_MIN__ * I;
+const double _Complex MIN = DBL_MIN +  DBL_MIN * I;
+const long double _Complex MIN = LDBL_MIN + LDBL_MIN * I;
+
+const float MAX = FLT_MAX;
+const double MAX = DBL_MAX;
+const long double MAX = LDBL_MAX;
+const float _Complex MAX = FLT_MAX + FLT_MAX * I;
+const double _Complex MAX = DBL_MAX + DBL_MAX * I;
+const long double _Complex MAX = LDBL_MAX + LDBL_MAX * I;
+
+const float PI = (float)M_PI;							// pi
+const float PI_2 = (float)M_PI_2;						// pi / 2
+const float PI_4 = (float)M_PI_4;						// pi / 4
+const float _1_PI = (float)M_1_PI;						// 1 / pi
+const float _2_PI = (float)M_2_PI;						// 2 / pi
+const float _2_SQRT_PI = (float)M_2_SQRTPI;				// 2 / sqrt(pi)
+
+const double PI = M_PI;									// pi
+const double PI_2 = M_PI_2;								// pi / 2
+const double PI_4 = M_PI_4;								// pi / 4
+const double _1_PI = M_1_PI;							// 1 / pi
+const double _2_PI = M_2_PI;							// 2 / pi
+const double _2_SQRT_PI = M_2_SQRTPI;					// 2 / sqrt(pi)
+
+const long double PI = M_PIl;							// pi
+const long double PI_2 = M_PI_2l;						// pi / 2
+const long double PI_4 = M_PI_4l;						// pi / 4
+const long double _1_PI = M_1_PIl;						// 1 / pi
+const long double _2_PI = M_2_PIl;						// 2 / pi
+const long double _2_SQRT_PI = M_2_SQRTPIl;				// 2 / sqrt(pi)
+
+const float _Complex PI = (float)M_PI + 0.0_iF;			// pi
+const float _Complex PI_2 = (float)M_PI_2 + 0.0_iF;		// pi / 2
+const float _Complex PI_4 = (float)M_PI_4 + 0.0_iF;		// pi / 4
+const float _Complex _1_PI = (float)M_1_PI + 0.0_iF;	// 1 / pi
+const float _Complex _2_PI = (float)M_2_PI + 0.0_iF;	// 2 / pi
+const float _Complex _2_SQRT_PI = (float)M_2_SQRTPI + 0.0_iF; // 2 / sqrt(pi)
+
+const double _Complex PI = M_PI + 0.0_iD;				// pi
+const double _Complex PI_2 = M_PI_2 + 0.0_iD;			// pi / 2
+const double _Complex PI_4 = M_PI_4 + 0.0_iD;			// pi / 4
+const double _Complex _1_PI = M_1_PI + 0.0_iD;			// 1 / pi
+const double _Complex _2_PI = M_2_PI + 0.0_iD;			// 2 / pi
+const double _Complex _2_SQRT_PI = M_2_SQRTPI + 0.0_iD;	// 2 / sqrt(pi)
+
+const long double _Complex PI = M_PIl + 0.0_iL;			// pi
+const long double _Complex PI_2 = M_PI_2l + 0.0_iL;		// pi / 2
+const long double _Complex PI_4 = M_PI_4l + 0.0_iL;		// pi / 4
+const long double _Complex _1_PI = M_1_PIl + 0.0_iL;	// 1 / pi
+const long double _Complex _2_PI = M_2_PIl + 0.0_iL;	// 2 / pi
+const long double _Complex _2_SQRT_PI = M_2_SQRTPIl + 0.0_iL; // 2 / sqrt(pi)
+
+const float E = (float)M_E;								// e
+const float LOG2_E = (float)M_LOG2E;					// log_2(e)
+const float LOG10_E = (float)M_LOG10E;					// log_10(e)
+const float LN_2 = (float)M_LN2;						// log_e(2)
+const float LN_10 = (float)M_LN10;						// log_e(10)
+const float SQRT_2 = (float)M_SQRT2;					// sqrt(2)
+const float _1_SQRT_2 = (float)M_SQRT1_2;				// 1 / sqrt(2)
+
+const double E = M_E;									// e
+const double LOG2_E = M_LOG2E;							// log_2(e)
+const double LOG10_E = M_LOG10E;						// log_10(e)
+const double LN_2 = M_LN2;								// log_e(2)
+const double LN_10 = M_LN10;							// log_e(10)
+const double SQRT_2 = M_SQRT2;							// sqrt(2)
+const double _1_SQRT_2 = M_SQRT1_2;						// 1 / sqrt(2)
+
+const long double E = M_El;								// e
+const long double LOG2_E = M_LOG2El;					// log_2(e)
+const long double LOG10_E = M_LOG10El;					// log_10(e)
+const long double LN_2 = M_LN2l;						// log_e(2)
+const long double LN_10 = M_LN10l;						// log_e(10)
+const long double SQRT_2 = M_SQRT2l;					// sqrt(2)
+const long double _1_SQRT_2 = M_SQRT1_2l;				// 1 / sqrt(2)
+
+const float _Complex E = M_E + 0.0_iF;					// e
+const float _Complex LOG2_E = M_LOG2E + 0.0_iF;			// log_2(e)
+const float _Complex LOG10_E = M_LOG10E + 0.0_iF;		// log_10(e)
+const float _Complex LN_2 = M_LN2 + 0.0_iF;				// log_e(2)
+const float _Complex LN_10 = M_LN10 + 0.0_iF;			// log_e(10)
+const float _Complex SQRT_2 = M_SQRT2 + 0.0_iF;			// sqrt(2)
+const float _Complex _1_SQRT_2 = M_SQRT1_2 + 0.0_iF;	// 1 / sqrt(2)
+
+const double _Complex E = M_E + 0.0_iD;					// e
+const double _Complex LOG2_E = M_LOG2E + 0.0_iD;		// log_2(e)
+const double _Complex LOG10_E = M_LOG10E + 0.0_iD;		// log_10(e)
+const double _Complex LN_2 = M_LN2 + 0.0_iD;			// log_e(2)
+const double _Complex LN_10 = M_LN10 + 0.0_iD;			// log_e(10)
+const double _Complex SQRT_2 = M_SQRT2 + 0.0_iD;		// sqrt(2)
+const double _Complex _1_SQRT_2 = M_SQRT1_2 + 0.0_iD;	// 1 / sqrt(2)
+
+const long double _Complex E = M_El + 0.0_iL;			// e
+const long double _Complex LOG2_E = M_LOG2El + 0.0_iL;	// log_2(e)
+const long double _Complex LOG10_E = M_LOG10El + 0.0_iL; // log_10(e)
+const long double _Complex LN_2 = M_LN2l + 0.0_iL;		// log_e(2)
+const long double _Complex LN_10 = M_LN10l + 0.0_iL;	// log_e(10)
+const long double _Complex SQRT_2 = M_SQRT2l + 0.0_iL;	// sqrt(2)
+const long double _Complex _1_SQRT_2 = M_SQRT1_2l + 0.0_iL; // 1 / sqrt(2)
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/limits.hfa
===================================================================
--- libcfa/src/limits.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/limits.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,151 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// limits --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Apr  6 18:06:52 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Mar  1 16:20:54 2018
+// Update Count     : 13
+//
+
+#pragma once
+
+// Integral Constants
+
+extern const signed char MIN;
+extern const unsigned char MIN;
+extern const short int MIN;
+extern const unsigned short int MIN;
+extern const int MIN;
+extern const unsigned int MIN;
+extern const long int MIN;
+extern const unsigned long int MIN;
+extern const long long int MIN;
+extern const unsigned long long int MIN;
+
+extern const signed char MAX;
+extern const unsigned char MAX;
+extern const short int MAX;
+extern const unsigned short int MAX;
+extern const int MAX;
+extern const unsigned int MAX;
+extern const long int MAX;
+extern const unsigned long int MAX;
+extern const long long int MAX;
+extern const unsigned long long int MAX;
+
+// Floating-Point Constants
+
+extern const float MIN;
+extern const double MIN;
+extern const long double MIN;
+extern const float _Complex MIN;
+extern const double _Complex MIN;
+extern const long double _Complex MIN;
+
+extern const float MAX;
+extern const double MAX;
+extern const long double MAX;
+extern const float _Complex MAX;
+extern const double _Complex MAX;
+extern const long double _Complex MAX;
+
+extern const float PI;									// pi
+extern const float PI_2;								// pi / 2
+extern const float PI_4;								// pi / 4
+extern const float _1_PI;								// 1 / pi
+extern const float _2_PI;								// 2 / pi
+extern const float _2_SQRT_PI;							// 2 / sqrt(pi)
+
+extern const double PI;									// pi
+extern const double PI_2;								// pi / 2
+extern const double PI_4;								// pi / 4
+extern const double _1_PI;								// 1 / pi
+extern const double _2_PI;								// 2 / pi
+extern const double _2_SQRT_PI;							// 2 / sqrt(pi)
+
+extern const long double PI;							// pi
+extern const long double PI_2;							// pi / 2
+extern const long double PI_4;							// pi / 4
+extern const long double _1_PI;							// 1 / pi
+extern const long double _2_PI;							// 2 / pi
+extern const long double _2_SQRT_PI;					// 2 / sqrt(pi)
+
+extern const float _Complex PI;							// pi
+extern const float _Complex PI_2;						// pi / 2
+extern const float _Complex PI_4;						// pi / 4
+extern const float _Complex _1_PI;						// 1 / pi
+extern const float _Complex _2_PI;						// 2 / pi
+extern const float _Complex _2_SQRT_PI;					// 2 / sqrt(pi)
+
+extern const double _Complex PI;						// pi
+extern const double _Complex PI_2;						// pi / 2
+extern const double _Complex PI_4;						// pi / 4
+extern const double _Complex _1_PI;						// 1 / pi
+extern const double _Complex _2_PI;						// 2 / pi
+extern const double _Complex _2_SQRT_PI;				// 2 / sqrt(pi)
+
+extern const long double _Complex PI;					// pi
+extern const long double _Complex PI_2;					// pi / 2
+extern const long double _Complex PI_4;					// pi / 4
+extern const long double _Complex _1_PI;				// 1 / pi
+extern const long double _Complex _2_PI;				// 2 / pi
+extern const long double _Complex _2_SQRT_PI;			// 2 / sqrt(pi)
+
+extern const float E;									// e
+extern const float LOG2_E;								// log_2(e)
+extern const float LOG10_E;								// log_10(e)
+extern const float LN_2;								// log_e(2)
+extern const float LN_10;								// log_e(10)
+extern const float SQRT_2;								// sqrt(2)
+extern const float _1_SQRT_2;							// 1 / sqrt(2)
+
+extern const double E;									// e
+extern const double LOG2_E;								// log_2(e)
+extern const double LOG10_E;							// log_10(e)
+extern const double LN_2;								// log_e(2)
+extern const double LN_10;								// log_e(10)
+extern const double SQRT_2;								// sqrt(2)
+extern const double _1_SQRT_2;							// 1 / sqrt(2)
+
+extern const long double E;								// e
+extern const long double LOG2_E;						// log_2(e)
+extern const long double LOG10_E;						// log_10(e)
+extern const long double LN_2;							// log_e(2)
+extern const long double LN_10;							// log_e(10)
+extern const long double SQRT_2;						// sqrt(2)
+extern const long double _1_SQRT_2;						// 1/sqrt(2)
+
+extern const float _Complex E;							// e
+extern const float _Complex LOG2_E;						// log_2(e)
+extern const float _Complex LOG10_E;					// log_10(e)
+extern const float _Complex LN_2;						// log_e(2)
+extern const float _Complex LN_10;						// log_e(10)
+extern const float _Complex SQRT_2;						// sqrt(2)
+extern const float _Complex _1_SQRT_2;					// 1 / sqrt(2)
+
+extern const double _Complex E;							// e
+extern const double _Complex LOG2_E;					// log_2(e)
+extern const double _Complex LOG10_E;					// log_10(e)
+extern const double _Complex LN_2;						// log_e(2)
+extern const double _Complex LN_10;						// log_e(10)
+extern const double _Complex SQRT_2;					// sqrt(2)
+extern const double _Complex _1_SQRT_2;					// 1 / sqrt(2)
+
+extern const long double _Complex E;					// e
+extern const long double _Complex LOG2_E;				// log_2(e)
+extern const long double _Complex LOG10_E;				// log_10(e)
+extern const long double _Complex LN_2;					// log_e(2)
+extern const long double _Complex LN_10;				// log_e(10)
+extern const long double _Complex SQRT_2;				// sqrt(2)
+extern const long double _Complex _1_SQRT_2;			// 1 / sqrt(2)
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/lsda.h
===================================================================
--- libcfa/src/lsda.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/lsda.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,262 @@
+//This code was stolen from gcc to read exception tables
+
+
+/* If using C++, references to abort have to be qualified with std::.  */
+#if __cplusplus
+#define __gxx_abort std::abort
+#else
+#define __gxx_abort abort
+#endif
+
+/* Pointer encodings, from dwarf2.h.  */
+#define DW_EH_PE_absptr         0x00
+#define DW_EH_PE_omit           0xff
+
+#define DW_EH_PE_uleb128        0x01
+#define DW_EH_PE_udata2         0x02
+#define DW_EH_PE_udata4         0x03
+#define DW_EH_PE_udata8         0x04
+#define DW_EH_PE_sleb128        0x09
+#define DW_EH_PE_sdata2         0x0A
+#define DW_EH_PE_sdata4         0x0B
+#define DW_EH_PE_sdata8         0x0C
+#define DW_EH_PE_signed         0x08
+
+#define DW_EH_PE_pcrel          0x10
+#define DW_EH_PE_textrel        0x20
+#define DW_EH_PE_datarel        0x30
+#define DW_EH_PE_funcrel        0x40
+#define DW_EH_PE_aligned        0x50
+
+#define DW_EH_PE_indirect	0x80
+
+
+
+int handler_found = 0;
+
+/* Given an encoding, return the number of bytes the format occupies.
+This is only defined for fixed-size encodings, and so does not
+include leb128.  */
+static unsigned int size_of_encoded_value (unsigned char encoding) __attribute__ ((unused));
+
+static unsigned int size_of_encoded_value (unsigned char encoding)
+{
+	if (encoding == DW_EH_PE_omit) return 0;
+
+	switch (encoding & 0x07) {
+		case DW_EH_PE_absptr: return sizeof (void *);
+		case DW_EH_PE_udata2: return 2;
+		case DW_EH_PE_udata4: return 4;
+		case DW_EH_PE_udata8: return 8;
+	}
+	__gxx_abort ();
+}
+
+/* Given an encoding and an _Unwind_Context, return the base to which
+the encoding is relative.  This base may then be passed to
+read_encoded_value_with_base for use when the _Unwind_Context is
+not available.  */
+static _Unwind_Ptr base_of_encoded_value (unsigned char encoding, struct _Unwind_Context *context)
+{
+	if (encoding == DW_EH_PE_omit) return 0;
+
+	switch (encoding & 0x70) {
+		case DW_EH_PE_absptr:
+		case DW_EH_PE_pcrel:
+		case DW_EH_PE_aligned:
+			return 0;
+		case DW_EH_PE_textrel:
+			return _Unwind_GetTextRelBase (context);
+		case DW_EH_PE_datarel:
+			return _Unwind_GetDataRelBase (context);
+		case DW_EH_PE_funcrel:
+			return _Unwind_GetRegionStart (context);
+	}
+	__gxx_abort ();
+}
+
+/* Read an unsigned leb128 value from P, store the value in VAL, return
+P incremented past the value.  We assume that a word is large enough to
+hold any value so encoded; if it is smaller than a pointer on some target,
+pointers should not be leb128 encoded on that target.  */
+static const unsigned char * read_uleb128 (const unsigned char *p, _uleb128_t *val)
+{
+	unsigned int shift = 0;
+	unsigned char byte;
+	_uleb128_t result;
+
+	result = 0;
+	do
+	{
+		byte = *p++;
+		result |= ((_uleb128_t)byte & 0x7f) << shift;
+		shift += 7;
+	}
+	while (byte & 0x80);
+
+	*val = result;
+	return p;
+}
+
+/* Similar, but read a signed leb128 value.  */
+static const unsigned char * read_sleb128 (const unsigned char *p, _sleb128_t *val)
+{
+	unsigned int shift = 0;
+	unsigned char byte;
+	_uleb128_t result;
+
+	result = 0;
+	do
+	{
+		byte = *p++;
+		result |= ((_uleb128_t)byte & 0x7f) << shift;
+		shift += 7;
+	}
+	while (byte & 0x80);
+
+	/* Sign-extend a negative value.  */
+	if (shift < 8 * sizeof(result) && (byte & 0x40) != 0) result |= -(((_uleb128_t)1L) << shift);
+
+	*val = (_sleb128_t) result;
+	return p;
+}
+
+/* Load an encoded value from memory at P.  The value is returned in VAL;
+The function returns P incremented past the value.  BASE is as given
+by base_of_encoded_value for this encoding in the appropriate context.  */
+
+static const unsigned char * read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base, const unsigned char *p, _Unwind_Ptr *val)
+{
+	union unaligned
+	{
+		void *ptr;
+		unsigned u2 __attribute__ ((mode (HI)));
+		unsigned u4 __attribute__ ((mode (SI)));
+		unsigned u8 __attribute__ ((mode (DI)));
+		signed s2 __attribute__ ((mode (HI)));
+		signed s4 __attribute__ ((mode (SI)));
+		signed s8 __attribute__ ((mode (DI)));
+	} __attribute__((__packed__));
+
+	const union unaligned *u = (const union unaligned *) p;
+	_Unwind_Internal_Ptr result;
+
+	if (encoding == DW_EH_PE_aligned)
+	{
+		_Unwind_Internal_Ptr a = (_Unwind_Internal_Ptr) p;
+		a = (a + sizeof (void *) - 1) & - sizeof(void *);
+		result = *(_Unwind_Internal_Ptr *) a;
+		p = (const unsigned char *) (_Unwind_Internal_Ptr) (a + sizeof (void *));
+	}
+	else
+	{
+		switch (encoding & 0x0f)
+		{
+			case DW_EH_PE_absptr:
+				result = (_Unwind_Internal_Ptr) u->ptr;
+				p += sizeof (void *);
+				break;
+			case DW_EH_PE_uleb128:
+			{
+				_uleb128_t tmp;
+				p = read_uleb128 (p, &tmp);
+				result = (_Unwind_Internal_Ptr) tmp;
+			}
+			break;
+
+			case DW_EH_PE_sleb128:
+			{
+				_sleb128_t tmp;
+				p = read_sleb128 (p, &tmp);
+				result = (_Unwind_Internal_Ptr) tmp;
+			}
+			break;
+
+			case DW_EH_PE_udata2:
+				result = u->u2;
+				p += 2;
+				break;
+			case DW_EH_PE_udata4:
+				result = u->u4;
+				p += 4;
+				break;
+			case DW_EH_PE_udata8:
+				result = u->u8;
+				p += 8;
+				break;
+			case DW_EH_PE_sdata2:
+				result = u->s2;
+				p += 2;
+				break;
+			case DW_EH_PE_sdata4:
+				result = u->s4;
+				p += 4;
+				break;
+			case DW_EH_PE_sdata8:
+				result = u->s8;
+				p += 8;
+				break;
+			default:
+				__gxx_abort();
+		}
+
+		if (result != 0)
+		{
+			result += ((encoding & 0x70) == DW_EH_PE_pcrel ? (_Unwind_Internal_Ptr) u : base);
+			
+			if (encoding & DW_EH_PE_indirect) result = *(_Unwind_Internal_Ptr *) result;
+		}
+	}
+
+	*val = result;
+	return p;
+}
+
+/* Like read_encoded_value_with_base, but get the base from the context
+rather than providing it directly.  */
+static inline const unsigned char * read_encoded_value (struct _Unwind_Context *context, unsigned char encoding, const unsigned char *p, _Unwind_Ptr *val)
+{
+	return read_encoded_value_with_base (encoding, base_of_encoded_value (encoding, context), p, val);
+}
+
+typedef struct
+{
+	_Unwind_Ptr Start;
+	_Unwind_Ptr LPStart;
+	_Unwind_Ptr ttype_base;
+	const unsigned char *TType;
+	const unsigned char *action_table;
+	unsigned char ttype_encoding;
+	unsigned char call_site_encoding;
+} lsda_header_info;
+
+static const unsigned char * parse_lsda_header (struct _Unwind_Context *context, const unsigned char *p, lsda_header_info *info)
+{
+	_uleb128_t tmp;
+	unsigned char lpstart_encoding;
+
+	info->Start = (context ? _Unwind_GetRegionStart (context) : 0);
+
+	/* Find @LPStart, the base to which landing pad offsets are relative.  */
+	lpstart_encoding = *p++;
+	if (lpstart_encoding != DW_EH_PE_omit) p = read_encoded_value (context, lpstart_encoding, p, &info->LPStart);
+
+	else info->LPStart = info->Start;
+
+	/* Find @TType, the base of the handler and exception spec type data.  */
+	info->ttype_encoding = *p++;
+	if (info->ttype_encoding != DW_EH_PE_omit)
+	{
+		p = read_uleb128 (p, &tmp);
+		info->TType = p + tmp;
+	}
+	else info->TType = 0;
+
+	/* The encoding and length of the call-site table; the action table
+	immediately follows.  */
+	info->call_site_encoding = *p++;
+	p = read_uleb128 (p, &tmp);
+	info->action_table = p + tmp;
+
+	return p;
+}
Index: libcfa/src/math.hfa
===================================================================
--- libcfa/src/math.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/math.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,368 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// math --
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Apr 18 23:37:04 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jul 13 11:02:15 2018
+// Update Count     : 116
+//
+
+#pragma once
+
+#include <math.h>
+#include <complex.h>
+
+//---------------------- General ----------------------
+
+static inline float ?%?( float x, float y ) { return fmodf( x, y ); }
+static inline float fmod( float x, float y ) { return fmodf( x, y ); }
+static inline double ?%?( double x, double y ) { return fmod( x, y ); }
+// extern "C" { double fmod( double, double ); }
+static inline long double ?%?( long double x, long double y ) { return fmodl( x, y ); }
+static inline long double fmod( long double x, long double y ) { return fmodl( x, y ); }
+
+static inline float remainder( float x, float y ) { return remainderf( x, y ); }
+// extern "C" { double remainder( double, double ); }
+static inline long double remainder( long double x, long double y ) { return remainderl( x, y ); }
+
+static inline float remquo( float x, float y, int * quo ) { return remquof( x, y, quo ); }
+// extern "C" { double remquo( double x, double y, int * quo ); }
+static inline long double remquo( long double x, long double y, int * quo ) { return remquol( x, y, quo ); }
+static inline [ int, float ] remquo( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }
+static inline [ int, double ] remquo( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }
+static inline [ int, long double ] remquo( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }
+
+static inline [ float, float ] div( float x, float y ) { y = modff( x / y, &x ); return [ x, y ]; }
+static inline [ double, double ] div( double x, double y ) { y = modf( x / y, &x ); return [ x, y ]; }
+static inline [ long double, long double ] div( long double x, long double y ) { y = modfl( x / y, &x ); return [ x, y ]; }
+
+static inline float fma( float x, float y, float z ) { return fmaf( x, y, z ); }
+// extern "C" { double fma( double, double, double ); }
+static inline long double fma( long double x, long double y, long double z ) { return fmal( x, y, z ); }
+
+static inline float fdim( float x, float y ) { return fdimf( x, y ); }
+// extern "C" { double fdim( double, double ); }
+static inline long double fdim( long double x, long double y ) { return fdiml( x, y ); }
+
+static inline float nan( const char * tag ) { return nanf( tag ); }
+// extern "C" { double nan( const char * ); }
+static inline long double nan( const char * tag ) { return nanl( tag ); }
+
+//---------------------- Exponential ----------------------
+
+static inline float exp( float x ) { return expf( x ); }
+// extern "C" { double exp( double ); }
+static inline long double exp( long double x ) { return expl( x ); }
+static inline float _Complex exp( float _Complex x ) { return cexpf( x ); }
+static inline double _Complex exp( double _Complex x ) { return cexp( x ); }
+static inline long double _Complex exp( long double _Complex x ) { return cexpl( x ); }
+
+static inline float exp2( float x ) { return exp2f( x ); }
+// extern "C" { double exp2( double ); }
+static inline long double exp2( long double x ) { return exp2l( x ); }
+//static inline float _Complex exp2( float _Complex x ) { return cexp2f( x ); }
+//static inline double _Complex exp2( double _Complex x ) { return cexp2( x ); }
+//static inline long double _Complex exp2( long double _Complex x ) { return cexp2l( x ); }
+
+static inline float expm1( float x ) { return expm1f( x ); }
+// extern "C" { double expm1( double ); }
+static inline long double expm1( long double x ) { return expm1l( x ); }
+
+static inline float pow( float x, float y ) { return powf( x, y ); }
+// extern "C" { double pow( double, double ); }
+static inline long double pow( long double x, long double y ) { return powl( x, y ); }
+static inline float _Complex pow( float _Complex x, float _Complex y ) { return cpowf( x, y ); }
+static inline double _Complex pow( double _Complex x, double _Complex y ) { return cpow( x, y ); }
+static inline long double _Complex pow( long double _Complex x, long double _Complex y ) { return cpowl( x, y ); }
+
+//---------------------- Logarithm ----------------------
+
+static inline float log( float x ) { return logf( x ); }
+// extern "C" { double log( double ); }
+static inline long double log( long double x ) { return logl( x ); }
+static inline float _Complex log( float _Complex x ) { return clogf( x ); }
+static inline double _Complex log( double _Complex x ) { return clog( x ); }
+static inline long double _Complex log( long double _Complex x ) { return clogl( x ); }
+
+static inline float log2( float x ) { return log2f( x ); }
+// extern "C" { double log2( double ); }
+static inline long double log2( long double x ) { return log2l( x ); }
+// static inline float _Complex log2( float _Complex x ) { return clog2f( x ); }
+// static inline double _Complex log2( double _Complex x ) { return clog2( x ); }
+// static inline long double _Complex log2( long double _Complex x ) { return clog2l( x ); }
+
+static inline float log10( float x ) { return log10f( x ); }
+// extern "C" { double log10( double ); }
+static inline long double log10( long double x ) { return log10l( x ); }
+// static inline float _Complex log10( float _Complex x ) { return clog10f( x ); }
+// static inline double _Complex log10( double _Complex x ) { return clog10( x ); }
+// static inline long double _Complex log10( long double _Complex x ) { return clog10l( x ); }
+
+static inline float log1p( float x ) { return log1pf( x ); }
+// extern "C" { double log1p( double ); }
+static inline long double log1p( long double x ) { return log1pl( x ); }
+
+static inline int ilogb( float x ) { return ilogbf( x ); }
+// extern "C" { int ilogb( double ); }
+static inline int ilogb( long double x ) { return ilogbl( x ); }
+
+static inline float logb( float x ) { return logbf( x ); }
+// extern "C" { double logb( double ); }
+static inline long double logb( long double x ) { return logbl( x ); }
+
+static inline float sqrt( float x ) { return sqrtf( x ); }
+// extern "C" { double sqrt( double ); }
+static inline long double sqrt( long double x ) { return sqrtl( x ); }
+static inline float _Complex sqrt( float _Complex x ) { return csqrtf( x ); }
+static inline double _Complex sqrt( double _Complex x ) { return csqrt( x ); }
+static inline long double _Complex sqrt( long double _Complex x ) { return csqrtl( x ); }
+
+static inline float cbrt( float x ) { return cbrtf( x ); }
+// extern "C" { double cbrt( double ); }
+static inline long double cbrt( long double x ) { return cbrtl( x ); }
+
+static inline float hypot( float x, float y ) { return hypotf( x, y ); }
+// extern "C" { double hypot( double, double ); }
+static inline long double hypot( long double x, long double y ) { return hypotl( x, y ); }
+
+//---------------------- Trigonometric ----------------------
+
+static inline float sin( float x ) { return sinf( x ); }
+// extern "C" { double sin( double ); }
+static inline long double sin( long double x ) { return sinl( x ); }
+static inline float _Complex sin( float _Complex x ) { return csinf( x ); }
+static inline double _Complex sin( double _Complex x ) { return csin( x ); }
+static inline long double _Complex sin( long double _Complex x ) { return csinl( x ); }
+
+static inline float cos( float x ) { return cosf( x ); }
+// extern "C" { double cos( double ); }
+static inline long double cos( long double x ) { return cosl( x ); }
+static inline float _Complex cos( float _Complex x ) { return ccosf( x ); }
+static inline double _Complex cos( double _Complex x ) { return ccos( x ); }
+static inline long double _Complex cos( long double _Complex x ) { return ccosl( x ); }
+
+static inline float tan( float x ) { return tanf( x ); }
+// extern "C" { double tan( double ); }
+static inline long double tan( long double x ) { return tanl( x ); }
+static inline float _Complex tan( float _Complex x ) { return ctanf( x ); }
+static inline double _Complex tan( double _Complex x ) { return ctan( x ); }
+static inline long double _Complex tan( long double _Complex x ) { return ctanl( x ); }
+
+static inline float asin( float x ) { return asinf( x ); }
+// extern "C" { double asin( double ); }
+static inline long double asin( long double x ) { return asinl( x ); }
+static inline float _Complex asin( float _Complex x ) { return casinf( x ); }
+static inline double _Complex asin( double _Complex x ) { return casin( x ); }
+static inline long double _Complex asin( long double _Complex x ) { return casinl( x ); }
+
+static inline float acos( float x ) { return acosf( x ); }
+// extern "C" { double acos( double ); }
+static inline long double acos( long double x ) { return acosl( x ); }
+static inline float _Complex acos( float _Complex x ) { return cacosf( x ); }
+static inline double _Complex acos( double _Complex x ) { return cacos( x ); }
+static inline long double _Complex acos( long double _Complex x ) { return cacosl( x ); }
+
+static inline float atan( float x ) { return atanf( x ); }
+// extern "C" { double atan( double ); }
+static inline long double atan( long double x ) { return atanl( x ); }
+static inline float _Complex atan( float _Complex x ) { return catanf( x ); }
+static inline double _Complex atan( double _Complex x ) { return catan( x ); }
+static inline long double _Complex atan( long double _Complex x ) { return catanl( x ); }
+
+static inline float atan2( float x, float y ) { return atan2f( x, y ); }
+// extern "C" { double atan2( double, double ); }
+static inline long double atan2( long double x, long double y ) { return atan2l( x, y ); }
+
+// alternative name for atan2
+static inline float atan( float x, float y ) { return atan2f( x, y ); }
+static inline double atan( double x, double y ) { return atan2( x, y ); }
+static inline long double atan( long double x, long double y ) { return atan2l( x, y ); }
+
+//---------------------- Hyperbolic ----------------------
+
+static inline float sinh( float x ) { return sinhf( x ); }
+// extern "C" { double sinh( double ); }
+static inline long double sinh( long double x ) { return sinhl( x ); }
+static inline float _Complex sinh( float _Complex x ) { return csinhf( x ); }
+static inline double _Complex sinh( double _Complex x ) { return csinh( x ); }
+static inline long double _Complex sinh( long double _Complex x ) { return csinhl( x ); }
+
+static inline float cosh( float x ) { return coshf( x ); }
+// extern "C" { double cosh( double ); }
+static inline long double cosh( long double x ) { return coshl( x ); }
+static inline float _Complex cosh( float _Complex x ) { return ccoshf( x ); }
+static inline double _Complex cosh( double _Complex x ) { return ccosh( x ); }
+static inline long double _Complex cosh( long double _Complex x ) { return ccoshl( x ); }
+
+static inline float tanh( float x ) { return tanhf( x ); }
+// extern "C" { double tanh( double ); }
+static inline long double tanh( long double x ) { return tanhl( x ); }
+static inline float _Complex tanh( float _Complex x ) { return ctanhf( x ); }
+static inline double _Complex tanh( double _Complex x ) { return ctanh( x ); }
+static inline long double _Complex tanh( long double _Complex x ) { return ctanhl( x ); }
+
+static inline float asinh( float x ) { return asinhf( x ); }
+// extern "C" { double asinh( double ); }
+static inline long double asinh( long double x ) { return asinhl( x ); }
+static inline float _Complex asinh( float _Complex x ) { return casinhf( x ); }
+static inline double _Complex asinh( double _Complex x ) { return casinh( x ); }
+static inline long double _Complex asinh( long double _Complex x ) { return casinhl( x ); }
+
+static inline float acosh( float x ) { return acoshf( x ); }
+// extern "C" { double acosh( double ); }
+static inline long double acosh( long double x ) { return acoshl( x ); }
+static inline float _Complex acosh( float _Complex x ) { return cacoshf( x ); }
+static inline double _Complex acosh( double _Complex x ) { return cacosh( x ); }
+static inline long double _Complex acosh( long double _Complex x ) { return cacoshl( x ); }
+
+static inline float atanh( float x ) { return atanhf( x ); }
+// extern "C" { double atanh( double ); }
+static inline long double atanh( long double x ) { return atanhl( x ); }
+static inline float _Complex atanh( float _Complex x ) { return catanhf( x ); }
+static inline double _Complex atanh( double _Complex x ) { return catanh( x ); }
+static inline long double _Complex atanh( long double _Complex x ) { return catanhl( x ); }
+
+//---------------------- Error / Gamma ----------------------
+
+static inline float erf( float x ) { return erff( x ); }
+// extern "C" { double erf( double ); }
+static inline long double erf( long double x ) { return erfl( x ); }
+// float _Complex erf( float _Complex );
+// double _Complex erf( double _Complex );
+// long double _Complex erf( long double _Complex );
+
+static inline float erfc( float x ) { return erfcf( x ); }
+// extern "C" { double erfc( double ); }
+static inline long double erfc( long double x ) { return erfcl( x ); }
+// float _Complex erfc( float _Complex );
+// double _Complex erfc( double _Complex );
+// long double _Complex erfc( long double _Complex );
+
+static inline float lgamma( float x ) { return lgammaf( x ); }
+// extern "C" { double lgamma( double ); }
+static inline long double lgamma( long double x ) { return lgammal( x ); }
+static inline float lgamma( float x, int * sign ) { return lgammaf_r( x, sign ); }
+static inline double lgamma( double x, int * sign ) { return lgamma_r( x, sign ); }
+static inline long double lgamma( long double x, int * sign ) { return lgammal_r( x, sign ); }
+
+static inline float tgamma( float x ) { return tgammaf( x ); }
+// extern "C" { double tgamma( double ); }
+static inline long double tgamma( long double x ) { return tgammal( x ); }
+
+//---------------------- Nearest Integer ----------------------
+
+static inline float floor( float x ) { return floorf( x ); }
+// extern "C" { double floor( double ); }
+static inline long double floor( long double x ) { return floorl( x ); }
+
+static inline float ceil( float x ) { return ceilf( x ); }
+// extern "C" { double ceil( double ); }
+static inline long double ceil( long double x ) { return ceill( x ); }
+
+static inline float trunc( float x ) { return truncf( x ); }
+// extern "C" { double trunc( double ); }
+static inline long double trunc( long double x ) { return truncl( x ); }
+
+static inline float rint( float x ) { return rintf( x ); }
+// extern "C" { double rint( double x ); }
+static inline long double rint( long double x ) { return rintl( x ); }
+static inline long int rint( float x ) { return lrintf( x ); }
+static inline long int rint( double x ) { return lrint( x ); }
+static inline long int rint( long double x ) { return lrintl( x ); }
+static inline long long int rint( float x ) { return llrintf( x ); }
+static inline long long int rint( double x ) { return llrint( x ); }
+static inline long long int rint( long double x ) { return llrintl( x ); }
+
+static inline long int lrint( float x ) { return lrintf( x ); }
+// extern "C" { long int lrint( double ); }
+static inline long int lrint( long double x ) { return lrintl( x ); }
+static inline long long int llrint( float x ) { return llrintf( x ); }
+// extern "C" { long long int llrint( double ); }
+static inline long long int llrint( long double x ) { return llrintl( x ); }
+
+static inline float nearbyint( float x ) { return nearbyintf( x ); }
+// extern "C" { double nearbyint( double ); }
+static inline long double nearbyint( long double x ) { return nearbyintl( x ); }
+
+static inline float round( float x ) { return roundf( x ); }
+// extern "C" { double round( double x ); }
+static inline long double round( long double x ) { return roundl( x ); }
+static inline long int round( float x ) { return lroundf( x ); }
+static inline long int round( double x ) { return lround( x ); }
+static inline long int round( long double x ) { return lroundl( x ); }
+static inline long long int round( float x ) { return llroundf( x ); }
+static inline long long int round( double x ) { return llround( x ); }
+static inline long long int round( long double x ) { return llroundl( x ); }
+
+static inline long int lround( float x ) { return lroundf( x ); }
+// extern "C" { long int lround( double ); }
+static inline long int lround( long double x ) { return lroundl( x ); }
+static inline long long int llround( float x ) { return llroundf( x ); }
+// extern "C" { long long int llround( double ); }
+static inline long long int llround( long double x ) { return llroundl( x ); }
+
+//---------------------- Manipulation ----------------------
+
+static inline float copysign( float x, float y ) { return copysignf( x, y ); }
+// extern "C" { double copysign( double, double ); }
+static inline long double copysign( long double x, long double y ) { return copysignl( x, y ); }
+
+static inline float frexp( float x, int * ip ) { return frexpf( x, ip ); }
+// extern "C" { double frexp( double, int * ); }
+static inline long double frexp( long double x, int * ip ) { return frexpl( x, ip ); }
+
+static inline float ldexp( float x, int exp2 ) { return ldexpf( x, exp2 ); }
+// extern "C" { double ldexp( double, int ); }
+static inline long double ldexp( long double x, int exp2 ) { return ldexpl( x, exp2 ); }
+
+static inline [ float, float ] modf( float x ) { float i; x = modff( x, &i ); return [ i, x ]; }
+static inline float modf( float x, float * i ) { return modff( x, i ); }
+static inline [ double, double ] modf( double x ) { double i; x = modf( x, &i ); return [ i, x ]; }
+// extern "C" { double modf( double, double * ); }
+static inline [ long double, long double ] modf( long double x ) { long double i; x = modfl( x, &i ); return [ i, x ]; }
+static inline long double modf( long double x, long double * i ) { return modfl( x, i ); }
+
+static inline float nextafter( float x, float y ) { return nextafterf( x, y ); }
+// extern "C" { double nextafter( double, double ); }
+static inline long double nextafter( long double x, long double y ) { return nextafterl( x, y ); }
+
+static inline float nexttoward( float x, long double y ) { return nexttowardf( x, y ); }
+// extern "C" { double nexttoward( double, long double ); }
+static inline long double nexttoward( long double x, long double y ) { return nexttowardl( x, y ); }
+
+static inline float scalbn( float x, int exp ) { return scalbnf( x, exp ); }
+// extern "C" { double scalbn( double, int ); }
+static inline long double scalbn( long double x, int exp ) { return scalbnl( x, exp ); }
+static inline float scalbn( float x, long int exp ) { return scalblnf( x, exp ); }
+static inline double scalbn( double x, long int exp ) { return scalbln( x, exp ); }
+static inline long double scalbn( long double x, long int exp ) { return scalblnl( x, exp ); }
+
+static inline float scalbln( float x, long int exp ) { return scalblnf( x, exp ); }
+// extern "C" { double scalbln( double, long int ); }
+static inline long double scalbln( long double x, long int exp ) { return scalblnl( x, exp ); }
+
+//---------------------------------------
+
+#include "common.hfa"
+
+//---------------------------------------
+
+forall( otype T | { void ?{}( T &, one_t ); T ?+?( T, T ); T ?-?( T, T );T ?*?( T, T ); } )
+T lerp( T x, T y, T a ) { return x * ((T){1} - a) + y * a; }
+
+forall( otype T | { void ?{}( T &, zero_t ); void ?{}( T &, one_t ); int ?<?( T, T ); } )
+T step( T edge, T x ) { return x < edge ? (T){0} : (T){1}; }
+
+forall( otype T | { void ?{}( T &, int ); T clamp( T, T, T ); T ?-?( T, T ); T ?*?( T, T ); T ?/?( T, T ); } )
+T smoothstep( T edge0, T edge1, T x ) { T t = clamp( (x - edge0) / (edge1 - edge0), (T){0}, (T){1} ); return t * t * ((T){3} - (T){2} * t); }
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/memcheck.awk
===================================================================
--- libcfa/src/memcheck.awk	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/memcheck.awk	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,26 @@
+#!/usr/bin/nawk -f
+
+BEGIN {
+	print "Freed but not allocated:"
+}
+
+/malloc/ {
+	alloc[ $2 ] = $3;
+}
+
+/free/ {
+	if ( $2 in alloc ) {
+		delete alloc[ $2 ];
+	} else {
+		print $2;
+	} # if
+}
+
+END {
+	print "Allocated but not freed:"
+	for ( i in alloc ) {
+		print i, alloc[ i ];
+		total += alloc[ i ]
+	} # for
+	print "total", total;
+}
Index: libcfa/src/rational.cfa
===================================================================
--- libcfa/src/rational.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/rational.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,221 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// rational.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Apr  6 17:54:28 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Jun  2 09:24:33 2018
+// Update Count     : 162
+//
+
+#include "rational.hfa"
+#include "fstream.hfa"
+#include "stdlib.hfa"
+
+forall( otype RationalImpl | arithmetic( RationalImpl ) ) {
+	// helper routines
+
+	// Calculate greatest common denominator of two numbers, the first of which may be negative. Used to reduce
+	// rationals.  alternative: https://en.wikipedia.org/wiki/Binary_GCD_algorithm
+	static RationalImpl gcd( RationalImpl a, RationalImpl b ) {
+		for ( ;; ) {									// Euclid's algorithm
+			RationalImpl r = a % b;
+		  if ( r == (RationalImpl){0} ) break;
+			a = b;
+			b = r;
+		} // for
+		return b;
+	} // gcd
+
+	static RationalImpl simplify( RationalImpl & n, RationalImpl & d ) {
+		if ( d == (RationalImpl){0} ) {
+			serr | "Invalid rational number construction: denominator cannot be equal to 0." | endl;
+			exit( EXIT_FAILURE );
+		} // exit
+		if ( d < (RationalImpl){0} ) { d = -d; n = -n; } // move sign to numerator
+		return gcd( abs( n ), d );						// simplify
+	} // Rationalnumber::simplify
+
+	// constructors
+
+	void ?{}( Rational(RationalImpl) & r ) {
+		r{ (RationalImpl){0}, (RationalImpl){1} };
+	} // rational
+
+	void ?{}( Rational(RationalImpl) & r, RationalImpl n ) {
+		r{ n, (RationalImpl){1} };
+	} // rational
+
+	void ?{}( Rational(RationalImpl) & r, RationalImpl n, RationalImpl d ) {
+		RationalImpl t = simplify( n, d );				// simplify
+		r.numerator = n / t;
+		r.denominator = d / t;
+	} // rational
+
+
+	// getter for numerator/denominator
+
+	RationalImpl numerator( Rational(RationalImpl) r ) {
+		return r.numerator;
+	} // numerator
+
+	RationalImpl denominator( Rational(RationalImpl) r ) {
+		return r.denominator;
+	} // denominator
+
+	[ RationalImpl, RationalImpl ] ?=?( & [ RationalImpl, RationalImpl ] dest, Rational(RationalImpl) src ) {
+		return dest = src.[ numerator, denominator ];
+	} // ?=?
+
+	// setter for numerator/denominator
+
+	RationalImpl numerator( Rational(RationalImpl) r, RationalImpl n ) {
+		RationalImpl prev = r.numerator;
+		RationalImpl t = gcd( abs( n ), r.denominator ); // simplify
+		r.numerator = n / t;
+		r.denominator = r.denominator / t;
+		return prev;
+	} // numerator
+
+	RationalImpl denominator( Rational(RationalImpl) r, RationalImpl d ) {
+		RationalImpl prev = r.denominator;
+		RationalImpl t = simplify( r.numerator, d );	// simplify
+		r.numerator = r.numerator / t;
+		r.denominator = d / t;
+		return prev;
+	} // denominator
+
+	// comparison
+
+	int ?==?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
+		return l.numerator * r.denominator == l.denominator * r.numerator;
+	} // ?==?
+
+	int ?!=?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
+		return ! ( l == r );
+	} // ?!=?
+
+	int ?<?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
+		return l.numerator * r.denominator < l.denominator * r.numerator;
+	} // ?<?
+
+	int ?<=?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
+		return l.numerator * r.denominator <= l.denominator * r.numerator;
+	} // ?<=?
+
+	int ?>?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
+		return ! ( l <= r );
+	} // ?>?
+
+	int ?>=?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
+		return ! ( l < r );
+	} // ?>=?
+
+	// arithmetic
+
+	Rational(RationalImpl) +?( Rational(RationalImpl) r ) {
+		Rational(RationalImpl) t = { r.numerator, r.denominator };
+		return t;
+	} // +?
+
+	Rational(RationalImpl) -?( Rational(RationalImpl) r ) {
+		Rational(RationalImpl) t = { -r.numerator, r.denominator };
+		return t;
+	} // -?
+
+	Rational(RationalImpl) ?+?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
+		if ( l.denominator == r.denominator ) {			// special case
+			Rational(RationalImpl) t = { l.numerator + r.numerator, l.denominator };
+			return t;
+		} else {
+			Rational(RationalImpl) t = { l.numerator * r.denominator + l.denominator * r.numerator, l.denominator * r.denominator };
+			return t;
+		} // if
+	} // ?+?
+
+	Rational(RationalImpl) ?-?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
+		if ( l.denominator == r.denominator ) {			// special case
+			Rational(RationalImpl) t = { l.numerator - r.numerator, l.denominator };
+			return t;
+		} else {
+			Rational(RationalImpl) t = { l.numerator * r.denominator - l.denominator * r.numerator, l.denominator * r.denominator };
+			return t;
+		} // if
+	} // ?-?
+
+	Rational(RationalImpl) ?*?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
+		Rational(RationalImpl) t = { l.numerator * r.numerator, l.denominator * r.denominator };
+		return t;
+	} // ?*?
+
+	Rational(RationalImpl) ?/?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
+		if ( r.numerator < (RationalImpl){0} ) {
+			r.numerator = -r.numerator;
+			r.denominator = -r.denominator;
+		} // if
+		Rational(RationalImpl) t = { l.numerator * r.denominator, l.denominator * r.numerator };
+		return t;
+	} // ?/?
+
+	// I/O
+
+	forall( dtype istype | istream( istype ) | { istype & ?|?( istype &, RationalImpl & ); } )
+	istype & ?|?( istype & is, Rational(RationalImpl) & r ) {
+		RationalImpl t;
+		is | r.numerator | r.denominator;
+		t = simplify( r.numerator, r.denominator );
+		r.numerator /= t;
+		r.denominator /= t;
+		return is;
+	} // ?|?
+
+	forall( dtype ostype | ostream( ostype ) | { ostype & ?|?( ostype &, RationalImpl ); } )
+	ostype & ?|?( ostype & os, Rational(RationalImpl ) r ) {
+		return os | r.numerator | '/' | r.denominator;
+	} // ?|?
+} // distribution
+
+// conversion
+
+forall( otype RationalImpl | arithmetic( RationalImpl ) | { double convert( RationalImpl ); } )
+double widen( Rational(RationalImpl) r ) {
+ 	return convert( r.numerator ) / convert( r.denominator );
+} // widen
+
+forall( otype RationalImpl | arithmetic( RationalImpl ) | { double convert( RationalImpl ); RationalImpl convert( double ); } )
+Rational(RationalImpl) narrow( double f, RationalImpl md ) {
+	// http://www.ics.uci.edu/~eppstein/numth/frap.c
+	if ( md <= (RationalImpl){1} ) {					// maximum fractional digits too small?
+		return (Rational(RationalImpl)){ convert( f ), (RationalImpl){1}}; // truncate fraction
+	} // if
+
+	// continued fraction coefficients
+	RationalImpl m00 = {1}, m11 = { 1 }, m01 = { 0 }, m10 = { 0 };
+	RationalImpl ai, t;
+
+	// find terms until denom gets too big
+	for ( ;; ) {
+		ai = convert( f );
+	  if ( ! (m10 * ai + m11 <= md) ) break;
+		t = m00 * ai + m01;
+		m01 = m00;
+		m00 = t;
+		t = m10 * ai + m11;
+		m11 = m10;
+		m10 = t;
+		double temp = convert( ai );
+	  if ( f == temp ) break;							// prevent division by zero
+		f = 1 / (f - temp);
+	  if ( f > (double)0x7FFFFFFF ) break;				// representation failure
+	} // for
+	return (Rational(RationalImpl)){ m00, m10 };
+} // narrow
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/rational.hfa
===================================================================
--- libcfa/src/rational.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/rational.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,107 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// rational -- Rational numbers are numbers written as a ratio, i.e., as a fraction, where the numerator (top number)
+//     and the denominator (bottom number) are whole numbers. When creating and computing with rational numbers, results
+//     are constantly reduced to keep the numerator and denominator as small as possible.
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Apr  6 17:56:25 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Jun  2 09:10:01 2018
+// Update Count     : 105
+//
+
+#pragma once
+
+#include "iostream.hfa"
+
+trait scalar( otype T ) {
+};
+
+trait arithmetic( otype T | scalar( T ) ) {
+	int !?( T );
+	int ?==?( T, T );
+	int ?!=?( T, T );
+	int ?<?( T, T );
+	int ?<=?( T, T );
+	int ?>?( T, T );
+	int ?>=?( T, T );
+	void ?{}( T &, zero_t );
+	void ?{}( T &, one_t );
+	T +?( T );
+	T -?( T );
+	T ?+?( T, T );
+	T ?-?( T, T );
+	T ?*?( T, T );
+	T ?/?( T, T );
+	T ?%?( T, T );
+	T ?/=?( T &, T );
+	T abs( T );
+};
+
+// implementation
+
+forall( otype RationalImpl | arithmetic( RationalImpl ) ) {
+	struct Rational {
+		RationalImpl numerator, denominator;			// invariant: denominator > 0
+	}; // Rational
+
+	// constructors
+
+	void ?{}( Rational(RationalImpl) & r );
+	void ?{}( Rational(RationalImpl) & r, RationalImpl n );
+	void ?{}( Rational(RationalImpl) & r, RationalImpl n, RationalImpl d );
+	void ?{}( Rational(RationalImpl) & r, zero_t );
+	void ?{}( Rational(RationalImpl) & r, one_t );
+
+	// numerator/denominator getter
+
+	RationalImpl numerator( Rational(RationalImpl) r );
+	RationalImpl denominator( Rational(RationalImpl) r );
+	[ RationalImpl, RationalImpl ] ?=?( & [ RationalImpl, RationalImpl ] dest, Rational(RationalImpl) src );
+
+	// numerator/denominator setter
+
+	RationalImpl numerator( Rational(RationalImpl) r, RationalImpl n );
+	RationalImpl denominator( Rational(RationalImpl) r, RationalImpl d );
+
+	// comparison
+
+	int ?==?( Rational(RationalImpl) l, Rational(RationalImpl) r );
+	int ?!=?( Rational(RationalImpl) l, Rational(RationalImpl) r );
+	int ?<?( Rational(RationalImpl) l, Rational(RationalImpl) r );
+	int ?<=?( Rational(RationalImpl) l, Rational(RationalImpl) r );
+	int ?>?( Rational(RationalImpl) l, Rational(RationalImpl) r );
+	int ?>=?( Rational(RationalImpl) l, Rational(RationalImpl) r );
+
+	// arithmetic
+
+	Rational(RationalImpl) +?( Rational(RationalImpl) r );
+	Rational(RationalImpl) -?( Rational(RationalImpl) r );
+	Rational(RationalImpl) ?+?( Rational(RationalImpl) l, Rational(RationalImpl) r );
+	Rational(RationalImpl) ?-?( Rational(RationalImpl) l, Rational(RationalImpl) r );
+	Rational(RationalImpl) ?*?( Rational(RationalImpl) l, Rational(RationalImpl) r );
+	Rational(RationalImpl) ?/?( Rational(RationalImpl) l, Rational(RationalImpl) r );
+
+	// I/O
+	forall( dtype istype | istream( istype ) | { istype & ?|?( istype &, RationalImpl & ); } )
+	istype & ?|?( istype &, Rational(RationalImpl) & );
+
+	forall( dtype ostype | ostream( ostype ) | { ostype & ?|?( ostype &, RationalImpl ); } )
+	ostype & ?|?( ostype &, Rational(RationalImpl ) );
+} // distribution
+
+// conversion
+forall( otype RationalImpl | arithmetic( RationalImpl ) | { double convert( RationalImpl ); } )
+double widen( Rational(RationalImpl) r );
+forall( otype RationalImpl | arithmetic( RationalImpl ) | { double convert( RationalImpl );  RationalImpl convert( double );} )
+Rational(RationalImpl) narrow( double f, RationalImpl md );
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/startup.cfa
===================================================================
--- libcfa/src/startup.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/startup.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,49 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// startup.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Jul 24 16:21:57 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Jul 25 16:42:01 2018
+// Update Count     : 11
+//
+
+#include "startup.hfa"
+#include <unistd.h>
+
+
+extern "C" {
+    static void __cfaabi_appready_startup( void ) __attribute__(( constructor( STARTUP_PRIORITY_APPREADY ) ));
+    void __cfaabi_appready_startup( void ) {
+		#ifdef __CFA_DEBUG__
+		extern void heapAppStart();
+		heapAppStart();
+		#endif // __CFA_DEBUG__
+    } // __cfaabi_appready_startup
+
+    static void __cfaabi_appready_shutdown( void ) __attribute__(( destructor( STARTUP_PRIORITY_APPREADY ) ));
+    void __cfaabi_appready_shutdown( void ) {
+		#ifdef __CFA_DEBUG__
+		extern void heapAppStop();
+		heapAppStop();
+		#endif // __CFA_DEBUG__
+    } // __cfaabi_appready_shutdown
+
+    void disable_interrupts() __attribute__(( weak )) {}
+    void enable_interrupts_noPoll() __attribute__(( weak )) {}
+} // extern "C"
+
+struct __spinlock_t;
+extern "C" {
+	void __cfaabi_dbg_record(struct __spinlock_t & this, const char * prev_name) __attribute__(( weak )) {}
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/startup.hfa
===================================================================
--- libcfa/src/startup.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/startup.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,39 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// startup.hfa --
+//
+// Author           : Thierry Delisle
+// Created On       : Wed Mar 29 15:56:41 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 24 16:16:37 2018
+// Update Count     : 4
+//
+
+#pragma once
+
+#if GCC_VERSION > 50000
+extern "C" {
+	enum {
+		STARTUP_PRIORITY_MEMORY     = 101,
+		STARTUP_PRIORITY_CORE       = 102,
+		STARTUP_PRIORITY_KERNEL     = 103,
+		STARTUP_PRIORITY_IOSTREAM   = 104,
+		STARTUP_PRIORITY_APPREADY   = 105,
+	};
+}
+#else
+#define STARTUP_PRIORITY_MEMORY     101
+#define STARTUP_PRIORITY_CORE       102
+#define STARTUP_PRIORITY_KERNEL     103
+#define STARTUP_PRIORITY_IOSTREAM   104
+#define STARTUP_PRIORITY_APPREADY   105
+#endif
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/stdhdr/assert.h
===================================================================
--- libcfa/src/stdhdr/assert.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/assert.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,49 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// assert.h --
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Jul 31 23:09:32 2017
+// Update Count     : 13
+//
+
+#ifdef __cforall
+extern "C" {
+#endif //__cforall
+
+#include_next <assert.h>
+
+#ifdef NDEBUG
+	#define assertf( expr, fmt, ... ) ((void)0)
+#else
+	#define __STRINGIFY__(str) #str
+	#define __VSTRINGIFY__(str) __STRINGIFY__(str)
+	#define assertf( expr, fmt, ... ) ((expr) ? ((void)0) : __assert_fail_f(__VSTRINGIFY__(expr), __FILE__, __LINE__, __PRETTY_FUNCTION__, fmt, ## __VA_ARGS__ ))
+
+	void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) __attribute__((noreturn, format( printf, 5, 6) ));
+#endif
+
+#if !defined(NDEBUG) && (defined(__CFA_DEBUG__) || defined(__CFA_VERIFY__))
+	#define verify(x) assert(x)
+	#define verifyf(x, ...) assertf(x, __VA_ARGS__)
+	#define __CFA_WITH_VERIFY__
+#else
+	#define verify(x)
+	#define verifyf(x, ...)
+#endif
+
+#ifdef __cforall
+} // extern "C"
+#endif //__cforall
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/bfdlink.h
===================================================================
--- libcfa/src/stdhdr/bfdlink.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/bfdlink.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,33 @@
+// 
+// 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.
+// 
+// bfdlink.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Tue Jul 18 07:26:04 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Jul 22 13:49:30 2018
+// Update Count     : 4
+// 
+
+// include file uses the CFA keyword "with".
+#if ! defined( with )									// nesting ?
+#define with `with`										// make keyword an identifier
+#define __CFA_BFDLINK_H__
+#endif
+
+#include_next <bfdlink.h>								// has internal check for multiple expansion
+
+#if defined( with ) && defined( __CFA_BFDLINK_H__ )		// reset only if set
+#undef with
+#undef __CFA_BFDLINK_H__
+#endif
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/complex.h
===================================================================
--- libcfa/src/stdhdr/complex.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/complex.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// complex.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:28:33 2016
+// Update Count     : 6
+// 
+
+extern "C" {
+#include_next <complex.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/ctype.h
===================================================================
--- libcfa/src/stdhdr/ctype.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/ctype.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// ctype.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:34:11 2016
+// Update Count     : 6
+// 
+
+extern "C" {
+#include_next <ctype.h>									// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/errno.h
===================================================================
--- libcfa/src/stdhdr/errno.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/errno.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// errno.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:27:03 2016
+// Update Count     : 4
+// 
+
+extern "C" {
+#include_next <errno.h>									// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/fenv.h
===================================================================
--- libcfa/src/stdhdr/fenv.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/fenv.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// fenv.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:29:46 2016
+// Update Count     : 6
+// 
+
+extern "C" {
+#include_next <fenv.h>									// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/float.h
===================================================================
--- libcfa/src/stdhdr/float.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/float.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// float.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:30:25 2016
+// Update Count     : 7
+// 
+
+extern "C" {
+#include_next <float.h>									// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/gmp.h
===================================================================
--- libcfa/src/stdhdr/gmp.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/gmp.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// gmp.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Sun May 14 23:46:01 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 20 18:10:52 2017
+// Update Count     : 4
+// 
+
+extern "C" {
+#include_next <gmp.h>									// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/hwloc.h
===================================================================
--- libcfa/src/stdhdr/hwloc.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/hwloc.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,33 @@
+// 
+// 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.
+// 
+// hwloc.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Tue Jul 18 07:45:00 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Jul 22 13:49:58 2018
+// Update Count     : 4
+// 
+
+// include file uses the CFA keyword "thread".
+#if ! defined( thread )									// nesting ?
+#define thread `thread`									// make keyword an identifier
+#define __CFA_HWLOC_H__
+#endif
+
+#include_next <hwloc.h>									// has internal check for multiple expansion
+
+#if defined( thread ) && defined( __CFA_HWLOC_H__ )		// reset only if set
+#undef thread
+#undef __CFA_HWLOC_H__
+#endif
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/inttypes.h
===================================================================
--- libcfa/src/stdhdr/inttypes.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/inttypes.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// inttypes.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:30:58 2016
+// Update Count     : 8
+// 
+
+extern "C" {
+#include_next <inttypes.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/iso646.h
===================================================================
--- libcfa/src/stdhdr/iso646.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/iso646.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// ios646.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:35:36 2016
+// Update Count     : 9
+// 
+
+extern "C" {
+#include_next <ios646.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/krb5.h
===================================================================
--- libcfa/src/stdhdr/krb5.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/krb5.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,33 @@
+// 
+// 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.
+// 
+// krb5.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Tue Jul 18 07:55:44 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Jul 22 13:50:24 2018
+// Update Count     : 4
+// 
+
+// include file uses the CFA keyword "enable".
+#if ! defined( enable )									// nesting ?
+#define enable `enable`									// make keyword an identifier
+#define __CFA_KRB5_H__
+#endif
+
+#include_next <krb5.h>									// has internal check for multiple expansion
+
+#if defined( enable ) && defined( __CFA_KRB5_H__ )		// reset only if set
+#undef enable
+#undef __CFA_KRB5_H__
+#endif
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/limits.h
===================================================================
--- libcfa/src/stdhdr/limits.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/limits.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// limits.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:35:58 2016
+// Update Count     : 10
+// 
+
+extern "C" {
+#include_next <limits.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/locale.h
===================================================================
--- libcfa/src/stdhdr/locale.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/locale.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// locale.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:37:56 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <locale.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/malloc.h
===================================================================
--- libcfa/src/stdhdr/malloc.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/malloc.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,47 @@
+// 
+// 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.
+// 
+// malloc.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Thu Jul 20 15:58:16 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 11 09:06:31 2018
+// Update Count     : 10
+// 
+
+
+size_t default_mmap_start();							// CFA extras
+size_t default_heap_expansion();
+
+bool traceHeap();
+bool traceHeapOn();
+bool traceHeapOff();
+
+bool traceHeapTerm();
+bool traceHeapTermOn();
+bool traceHeapTermOff();
+
+bool checkFree();
+bool checkFreeOn();
+bool checkFreeOff();
+
+extern "C" {
+size_t malloc_alignment( void * );
+bool malloc_zero_fill( void * );
+int malloc_stats_fd( int fd );
+void * cmemalign( size_t alignment, size_t noOfElems, size_t elemSize );
+} // extern "C"
+
+extern "C" {
+#include_next <malloc.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/math.h
===================================================================
--- libcfa/src/stdhdr/math.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/math.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,34 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// math.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Feb 22 18:16:07 2018
+// Update Count     : 13
+// 
+
+extern "C" {
+#if ! defined( exception )								// nesting ?
+#define exception `exception`							// make keyword an identifier
+#define __CFA_MATH_H__
+#endif
+
+#include_next <math.h>									// has internal check for multiple expansion
+
+#if defined( exception ) && defined( __CFA_MATH_H__ )	// reset only if set
+#undef exception
+#undef __CFA_MATH_H__
+#endif
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/setjmp.h
===================================================================
--- libcfa/src/stdhdr/setjmp.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/setjmp.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// setjmp.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:38:33 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <setjmp.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/signal.h
===================================================================
--- libcfa/src/stdhdr/signal.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/signal.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// signal.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:38:48 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <signal.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/stdalign.h
===================================================================
--- libcfa/src/stdhdr/stdalign.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/stdalign.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// stdalign.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:39:11 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <stdalign.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/stdarg.h
===================================================================
--- libcfa/src/stdhdr/stdarg.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/stdarg.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// stdarg.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:39:25 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <stdarg.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/stdatomic.h
===================================================================
--- libcfa/src/stdhdr/stdatomic.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/stdatomic.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// stdatomic.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:39:38 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <stdatomic.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/stdbool.h
===================================================================
--- libcfa/src/stdhdr/stdbool.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/stdbool.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// stdbool.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:39:51 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <stdbool.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/stddef.h
===================================================================
--- libcfa/src/stdhdr/stddef.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/stddef.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,26 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// stddef.h --
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:40:01 2016
+// Update Count     : 12
+//
+
+extern "C" {
+#include_next <stddef.h>                // has internal check for multiple expansion
+#undef NULL
+#define NULL 0                          // define NULL as 0 rather than (void*)0 to take advantage of zero_t
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/stdint.h
===================================================================
--- libcfa/src/stdhdr/stdint.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/stdint.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// stdint.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:40:11 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <stdint.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/stdio.h
===================================================================
--- libcfa/src/stdhdr/stdio.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/stdio.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// stdio.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Jul  4 23:33:37 2016
+// Update Count     : 3
+// 
+
+extern "C" {
+#include_next <stdio.h>									// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/stdlib.h
===================================================================
--- libcfa/src/stdhdr/stdlib.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/stdlib.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// stdlib.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:40:28 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <stdlib.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/stdnoreturn.h
===================================================================
--- libcfa/src/stdhdr/stdnoreturn.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/stdnoreturn.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// stdnoreturn.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:40:37 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <stdnoreturn.h>							// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/string.h
===================================================================
--- libcfa/src/stdhdr/string.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/string.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// string.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:40:47 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <string.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/sys/ucontext.h
===================================================================
--- libcfa/src/stdhdr/sys/ucontext.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/sys/ucontext.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,32 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// uco.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Thu Feb  8 23:48:16 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Feb  8 23:50:44 2018
+// Update Count     : 4
+// 
+
+#if ! defined( ftype )									// nesting ?
+#define ftype `ftype`									// make keyword an identifier
+#define __CFA_UCONTEXT_H__
+#endif
+
+#include_next <sys/ucontext.h>							// must have internal check for multiple expansion
+
+#if defined( ftype ) && defined( __CFA_UCONTEXT_H__ )	// reset only if set
+#undef ftype
+#undef __CFA_UCONTEXT_H__
+#endif
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/tgmath.h
===================================================================
--- libcfa/src/stdhdr/tgmath.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/tgmath.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// tgmath.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:40:56 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <tgmath.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/threads.h
===================================================================
--- libcfa/src/stdhdr/threads.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/threads.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// threads.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:41:04 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <threads.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/time.h
===================================================================
--- libcfa/src/stdhdr/time.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/time.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// time.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:41:24 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <time.h>									// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/uchar.h
===================================================================
--- libcfa/src/stdhdr/uchar.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/uchar.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// uchar.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:41:33 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <uchar.h>									// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/unistd.h
===================================================================
--- libcfa/src/stdhdr/unistd.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/unistd.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// unistd.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 21:06:59 2016
+// Update Count     : 13
+// 
+
+extern "C" {
+#include_next <unistd.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/wchar.h
===================================================================
--- libcfa/src/stdhdr/wchar.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/wchar.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// wchar.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:41:43 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <wchar.h>									// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdhdr/wctype.h
===================================================================
--- libcfa/src/stdhdr/wctype.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdhdr/wctype.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,24 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// wctype.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 23:25:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 20:41:53 2016
+// Update Count     : 12
+// 
+
+extern "C" {
+#include_next <wctype.h>								// has internal check for multiple expansion
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: libcfa/src/stdlib.cfa
===================================================================
--- libcfa/src/stdlib.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdlib.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,257 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// stdlib.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Thu Jan 28 17:10:29 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 12 08:03:59 2018
+// Update Count     : 458
+//
+
+#include "stdlib.hfa"
+
+//---------------------------------------
+
+#define _XOPEN_SOURCE 600								// posix_memalign, *rand48
+#include <string.h>										// memcpy, memset
+#include <malloc.h>										// malloc_usable_size
+#include <math.h>										// fabsf, fabs, fabsl
+#include <complex.h>									// _Complex_I
+#include <assert.h>
+
+//---------------------------------------
+
+// resize, non-array types
+forall( dtype T | sized(T) ) T * alloc( T ptr[], size_t dim, char fill ) {
+	size_t olen = malloc_usable_size( ptr );			// current allocation
+    char * nptr = (void *)realloc( (void *)ptr, dim * (size_t)sizeof(T) ); // C realloc
+	size_t nlen = malloc_usable_size( nptr );			// new allocation
+	if ( nlen > olen ) {								// larger ?
+		memset( nptr + olen, (int)fill, nlen - olen );	// initialize added storage
+	} //
+    return (T *)nptr;
+} // alloc
+
+// allocation/deallocation and constructor/destructor, non-array types
+forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } )
+T * new( Params p ) {
+	return &(*malloc()){ p };								// run constructor
+} // new
+
+forall( dtype T | sized(T) | { void ^?{}( T & ); } )
+void delete( T * ptr ) {
+	if ( ptr ) {										// ignore null
+		^(*ptr){};											// run destructor
+		free( ptr );
+	} // if
+} // delete
+
+forall( dtype T, ttype Params | sized(T) | { void ^?{}( T & ); void delete( Params ); } )
+void delete( T * ptr, Params rest ) {
+	if ( ptr ) {										// ignore null
+		^(*ptr){};											// run destructor
+		free( ptr );
+	} // if
+	delete( rest );
+} // delete
+
+
+// allocation/deallocation and constructor/destructor, array types
+forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } )
+T * anew( size_t dim, Params p ) {
+	T *arr = alloc( dim );
+	for ( unsigned int i = 0; i < dim; i += 1 ) {
+		(arr[i]){ p };									// run constructor
+	} // for
+	return arr;
+} // anew
+
+forall( dtype T | sized(T) | { void ^?{}( T & ); } )
+void adelete( size_t dim, T arr[] ) {
+	if ( arr ) {										// ignore null
+		for ( int i = dim - 1; i >= 0; i -= 1 ) {		// reverse allocation order, must be unsigned
+			^(arr[i]){};								// run destructor
+		} // for
+		free( arr );
+	} // if
+} // adelete
+
+forall( dtype T | sized(T) | { void ^?{}( T & ); }, ttype Params | { void adelete( Params ); } )
+void adelete( size_t dim, T arr[], Params rest ) {
+	if ( arr ) {										// ignore null
+		for ( int i = dim - 1; i >= 0; i -= 1 ) {		// reverse allocation order, must be unsigned
+			^(arr[i]){};								// run destructor
+		} // for
+		free( arr );
+	} // if
+	adelete( rest );
+} // adelete
+
+//---------------------------------------
+
+float _Complex strto( const char * sptr, char ** eptr ) {
+	float re, im;
+	char * eeptr;
+	re = strtof( sptr, &eeptr );
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
+	im = strtof( eeptr, &eeptr );
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
+	if ( *eeptr != 'i' ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
+	return re + im * _Complex_I;
+} // strto
+
+double _Complex strto( const char * sptr, char ** eptr ) {
+	double re, im;
+	char * eeptr;
+	re = strtod( sptr, &eeptr );
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
+	im = strtod( eeptr, &eeptr );
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
+	if ( *eeptr != 'i' ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
+	return re + im * _Complex_I;
+} // strto
+
+long double _Complex strto( const char * sptr, char ** eptr ) {
+	long double re, im;
+	char * eeptr;
+	re = strtold( sptr, &eeptr );
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
+	im = strtold( eeptr, &eeptr );
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
+	if ( *eeptr != 'i' ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
+	return re + im * _Complex_I;
+} // strto
+
+//---------------------------------------
+
+forall( otype E | { int ?<?( E, E ); } ) {
+	E * bsearch( E key, const E * vals, size_t dim ) {
+		int cmp( const void * t1, const void * t2 ) {
+			return *(E *)t1 < *(E *)t2 ? -1 : *(E *)t2 < *(E *)t1 ? 1 : 0;
+		} // cmp
+		return (E *)bsearch( &key, vals, dim, sizeof(E), cmp );
+	} // bsearch
+
+	size_t bsearch( E key, const E * vals, size_t dim ) {
+		E * result = bsearch( key, vals, dim );
+		return result ? result - vals : dim;			// pointer subtraction includes sizeof(E)
+	} // bsearch
+
+	size_t bsearchl( E key, const E * vals, size_t dim ) {
+		size_t l = 0, m, h = dim;
+		while ( l < h ) {
+			m = (l + h) / 2;
+			if ( (E &)(vals[m]) < key ) {				// cast away const
+				l = m + 1;
+			} else {
+				h = m;
+			} // if
+		} // while
+		return l;
+	} // bsearchl
+
+	E * bsearchl( E key, const E * vals, size_t dim ) {
+		size_t posn = bsearchl( key, vals, dim );
+		return (E *)(&vals[posn]);						// cast away const
+	} // bsearchl
+
+	size_t bsearchu( E key, const E * vals, size_t dim ) {
+		size_t l = 0, m, h = dim;
+		while ( l < h ) {
+			m = (l + h) / 2;
+			if ( ! ( key < (E &)(vals[m]) ) ) {			// cast away const
+				l = m + 1;
+			} else {
+				h = m;
+			} // if
+		} // while
+		return l;
+	} // bsearchu
+
+	E * bsearchu( E key, const E * vals, size_t dim ) {
+		size_t posn = bsearchu( key, vals, dim );
+		return (E *)(&vals[posn]);
+	} // bsearchu
+
+
+	void qsort( E * vals, size_t dim ) {
+		int cmp( const void * t1, const void * t2 ) {
+			return *(E *)t1 < *(E *)t2 ? -1 : *(E *)t2 < *(E *)t1 ? 1 : 0;
+		} // cmp
+		qsort( vals, dim, sizeof(E), cmp );
+	} // qsort
+} // distribution
+
+
+forall( otype K, otype E | { int ?<?( K, K ); K getKey( const E & ); } ) {
+	E * bsearch( K key, const E * vals, size_t dim ) {
+		int cmp( const void * t1, const void * t2 ) {
+			return *(K *)t1 < getKey( *(E *)t2 ) ? -1 : getKey( *(E *)t2 ) < *(K *)t1 ? 1 : 0;
+		} // cmp
+		return (E *)bsearch( &key, vals, dim, sizeof(E), cmp );
+	} // bsearch
+
+	size_t bsearch( K key, const E * vals, size_t dim ) {
+		E * result = bsearch( key, vals, dim );
+		return result ? result - vals : dim;			// pointer subtraction includes sizeof(E)
+	} // bsearch
+
+	size_t bsearchl( K key, const E * vals, size_t dim ) {
+		size_t l = 0, m, h = dim;
+		while ( l < h ) {
+			m = (l + h) / 2;
+			if ( getKey( vals[m] ) < key ) {
+				l = m + 1;
+			} else {
+				h = m;
+			} // if
+		} // while
+		return l;
+	} // bsearchl
+
+	E * bsearchl( K key, const E * vals, size_t dim ) {
+		size_t posn = bsearchl( key, vals, dim );
+		return (E *)(&vals[posn]);						// cast away const
+	} // bsearchl
+
+	size_t bsearchu( K key, const E * vals, size_t dim ) {
+		size_t l = 0, m, h = dim;
+		while ( l < h ) {
+			m = (l + h) / 2;
+			if ( ! ( key < getKey( vals[m] ) ) ) {
+				l = m + 1;
+			} else {
+				h = m;
+			} // if
+		} // while
+		return l;
+	} // bsearchu
+
+	E * bsearchu( K key, const E * vals, size_t dim ) {
+		size_t posn = bsearchu( key, vals, dim );
+		return (E *)(&vals[posn]);
+	} // bsearchu
+} // distribution
+
+//---------------------------------------
+
+extern "C" {											// override C version
+	void srandom( unsigned int seed ) { srand48( (long int)seed ); }
+	long int random( void ) { return mrand48(); }
+} // extern "C"
+
+float random( void ) { return (float)drand48(); }		// cast otherwise float uses lrand48
+double random( void ) { return drand48(); }
+float _Complex random( void ) { return (float)drand48() + (float _Complex)(drand48() * _Complex_I); }
+double _Complex random( void ) { return drand48() + (double _Complex)(drand48() * _Complex_I); }
+long double _Complex random( void ) { return (long double)drand48() + (long double _Complex)(drand48() * _Complex_I); }
+
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/stdlib.hfa
===================================================================
--- libcfa/src/stdlib.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/stdlib.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,258 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// stdlib --
+//
+// Author           : Peter A. Buhr
+// Created On       : Thu Jan 28 17:12:35 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jul 27 07:21:36 2018
+// Update Count     : 345
+//
+
+#pragma once
+
+#include <stdlib.h>										// *alloc, strto*, ato*
+extern "C" {
+	void * memalign( size_t align, size_t size );		// malloc.h
+	void * memset( void * dest, int fill, size_t size ); // string.h
+	void * memcpy( void * dest, const void * src, size_t size ); // string.h
+    void * cmemalign( size_t alignment, size_t noOfElems, size_t elemSize ); // CFA
+} // extern "C"
+
+//---------------------------------------
+
+#ifndef EXIT_FAILURE
+#define	EXIT_FAILURE	1								// failing exit status
+#define	EXIT_SUCCESS	0								// successful exit status
+#endif // ! EXIT_FAILURE
+
+//---------------------------------------
+
+static inline forall( dtype T | sized(T) ) {
+	// C dynamic allocation
+
+	T * malloc( void ) {
+		return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc
+	} // malloc
+
+	// T & malloc( void ) {
+	// 	int & p = *(T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc
+	// 	printf( "& malloc %p\n", &p );
+	// 	return p;
+	// 	//	return (T &)*(T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc
+	// } // malloc
+
+	T * calloc( size_t dim ) {
+		return (T *)(void *)calloc( dim, sizeof(T) );	// C calloc
+	} // calloc
+
+	T * realloc( T * ptr, size_t size ) {
+		return (T *)(void *)realloc( (void *)ptr, size );
+	} // realloc
+
+	T * memalign( size_t align ) {
+		return (T *)memalign( align, sizeof(T) );
+	} // memalign
+
+	T * aligned_alloc( size_t align ) {
+		return (T *)aligned_alloc( align, sizeof(T) );
+	} // aligned_alloc
+
+	int posix_memalign( T ** ptr, size_t align ) {
+		return posix_memalign( (void **)ptr, align, sizeof(T) ); // C posix_memalign
+	} // posix_memalign
+
+
+	// Cforall dynamic allocation
+
+	T * alloc( void ) {
+		return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc
+	} // alloc
+
+	T * alloc( char fill ) {
+		T * ptr = (T *)(void *)malloc( (size_t)sizeof(T) );	// C malloc
+		return (T *)memset( ptr, (int)fill, sizeof(T) );	// initial with fill value
+	} // alloc
+
+	T * alloc( size_t dim ) {
+		return (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc
+	} // alloc
+
+	T * alloc( size_t dim, char fill ) {
+		T * ptr = (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc
+		return (T *)memset( ptr, (int)fill, dim * sizeof(T) );	  // initial with fill value
+	} // alloc
+
+	T * alloc( T ptr[], size_t dim ) {
+		return (T *)(void *)realloc( (void *)ptr, dim * (size_t)sizeof(T) ); // C realloc
+	} // alloc
+} // distribution
+
+
+forall( dtype T | sized(T) ) T * alloc( T ptr[], size_t dim, char fill );
+
+
+static inline forall( dtype T | sized(T) ) {
+	T * align_alloc( size_t align ) {
+		return (T *)memalign( align, sizeof(T) );
+	} // align_alloc
+
+	T * align_alloc( size_t align, char fill ) {
+		T * ptr = (T *)memalign( align, sizeof(T) );
+		return (T *)memset( ptr, (int)fill, sizeof(T) );
+	} // align_alloc
+
+	T * align_alloc( size_t align, size_t dim ) {
+		return (T *)memalign( align, dim * sizeof(T) );
+	} // align_alloc
+
+	T * align_alloc( size_t align, size_t dim, char fill ) {
+		T * ptr;
+		if ( fill == '\0' ) {
+			ptr = (T *)cmemalign( align, dim, sizeof(T) );
+		} else {
+			ptr = (T *)memalign( align, dim * sizeof(T) );
+			return (T *)memset( ptr, (int)fill, dim * sizeof(T) );
+		} // if
+		return ptr;
+	} // align_alloc
+} // distribution
+
+
+static inline forall( dtype T | sized(T) ) {
+	// data, non-array types
+
+	T * memset( T * dest, char fill ) {
+		return (T *)memset( dest, fill, sizeof(T) );
+	} // memset
+
+	T * memcpy( T * dest, const T * src ) {
+		return (T *)memcpy( dest, src, sizeof(T) );
+	} // memcpy
+} // distribution
+
+static inline forall( dtype T | sized(T) ) {
+	// data, array types
+
+	T * amemset( T dest[], char fill, size_t dim ) {
+		return (T *)(void *)memset( dest, fill, dim * sizeof(T) ); // C memset
+	} // amemset
+
+	T * amemcpy( T dest[], const T src[], size_t dim ) {
+		return (T *)(void *)memcpy( dest, src, dim * sizeof(T) ); // C memcpy
+	} // amemcpy
+} // distribution
+
+// allocation/deallocation and constructor/destructor, non-array types
+forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } ) T * new( Params p );
+forall( dtype T | sized(T) | { void ^?{}( T & ); } ) void delete( T * ptr );
+forall( dtype T, ttype Params | sized(T) | { void ^?{}( T & ); void delete( Params ); } ) void delete( T * ptr, Params rest );
+
+// allocation/deallocation and constructor/destructor, array types
+forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } ) T * anew( size_t dim, Params p );
+forall( dtype T | sized(T) | { void ^?{}( T & ); } ) void adelete( size_t dim, T arr[] );
+forall( dtype T | sized(T) | { void ^?{}( T & ); }, ttype Params | { void adelete( Params ); } ) void adelete( size_t dim, T arr[], Params rest );
+
+//---------------------------------------
+
+static inline {
+	int strto( const char * sptr, char ** eptr, int base ) { return (int)strtol( sptr, eptr, base ); }
+	unsigned int strto( const char * sptr, char ** eptr, int base ) { return (unsigned int)strtoul( sptr, eptr, base ); }
+	long int strto( const char * sptr, char ** eptr, int base ) { return strtol( sptr, eptr, base ); }
+	unsigned long int strto( const char * sptr, char ** eptr, int base ) { return strtoul( sptr, eptr, base ); }
+	long long int strto( const char * sptr, char ** eptr, int base ) { return strtoll( sptr, eptr, base ); }
+	unsigned long long int strto( const char * sptr, char ** eptr, int base ) { return strtoull( sptr, eptr, base ); }
+
+	float strto( const char * sptr, char ** eptr ) { return strtof( sptr, eptr ); }
+	double strto( const char * sptr, char ** eptr ) { return strtod( sptr, eptr ); }
+	long double strto( const char * sptr, char ** eptr ) { return strtold( sptr, eptr ); }
+} // distribution
+
+float _Complex strto( const char * sptr, char ** eptr );
+double _Complex strto( const char * sptr, char ** eptr );
+long double _Complex strto( const char * sptr, char ** eptr );
+
+static inline {
+	int ato( const char * sptr ) {return (int)strtol( sptr, 0, 10 ); }
+	unsigned int ato( const char * sptr ) { return (unsigned int)strtoul( sptr, 0, 10 ); }
+	long int ato( const char * sptr ) { return strtol( sptr, 0, 10 ); }
+	unsigned long int ato( const char * sptr ) { return strtoul( sptr, 0, 10 ); }
+	long long int ato( const char * sptr ) { return strtoll( sptr, 0, 10 ); }
+	unsigned long long int ato( const char * sptr ) { return strtoull( sptr, 0, 10 ); }
+
+	float ato( const char * sptr ) { return strtof( sptr, 0 ); }
+	double ato( const char * sptr ) { return strtod( sptr, 0 ); }
+	long double ato( const char * sptr ) { return strtold( sptr, 0 ); }
+
+	float _Complex ato( const char * sptr ) { return strto( sptr, NULL ); }
+	double _Complex ato( const char * sptr ) { return strto( sptr, NULL ); }
+	long double _Complex ato( const char * sptr ) { return strto( sptr, NULL ); }
+} // distribution
+
+//---------------------------------------
+
+forall( otype E | { int ?<?( E, E ); } ) {
+	E * bsearch( E key, const E * vals, size_t dim );
+	size_t bsearch( E key, const E * vals, size_t dim );
+	E * bsearchl( E key, const E * vals, size_t dim );
+	size_t bsearchl( E key, const E * vals, size_t dim );
+	E * bsearchu( E key, const E * vals, size_t dim );
+	size_t bsearchu( E key, const E * vals, size_t dim );
+} // distribution
+
+forall( otype K, otype E | { int ?<?( K, K ); K getKey( const E & ); } ) {
+	E * bsearch( K key, const E * vals, size_t dim );
+	size_t bsearch( K key, const E * vals, size_t dim );
+	E * bsearchl( K key, const E * vals, size_t dim );
+	size_t bsearchl( K key, const E * vals, size_t dim );
+	E * bsearchu( K key, const E * vals, size_t dim );
+	size_t bsearchu( K key, const E * vals, size_t dim );
+} // distribution
+
+forall( otype E | { int ?<?( E, E ); } ) {
+	void qsort( E * vals, size_t dim );
+} // distribution
+
+//---------------------------------------
+
+extern "C" {											// override C version
+	void srandom( unsigned int seed );
+	long int random( void );
+} // extern "C"
+
+static inline {
+	long int random( long int l, long int u ) { if ( u < l ) [u, l] = [l, u]; return lrand48() % (u - l) + l; } // [l,u)
+	long int random( long int u ) { if ( u < 0 ) return random( u, 0 ); else return random( 0, u ); } // [0,u)
+	unsigned long int random( void ) { return lrand48(); }
+	unsigned long int random( unsigned long int l, unsigned long int u ) { if ( u < l ) [u, l] = [l, u]; return lrand48() % (u - l) + l; } // [l,u)
+	unsigned long int random( unsigned long int u ) { return lrand48() % u; } // [0,u)
+
+	char random( void ) { return (unsigned long int)random(); }
+	char random( char u ) { return random( (unsigned long int)u ); } // [0,u)
+	char random( char l, char u ) { return random( (unsigned long int)l, (unsigned long int)u ); } // [l,u)
+	int random( void ) { return (long int)random(); }
+	int random( int u ) { return random( (long int)u ); } // [0,u]
+	int random( int l, int u ) { return random( (long int)l, (long int)u ); } // [l,u)
+	unsigned int random( void ) { return (unsigned long int)random(); }
+	unsigned int random( unsigned int u ) { return random( (unsigned long int)u ); } // [0,u]
+	unsigned int random( unsigned int l, unsigned int u ) { return random( (unsigned long int)l, (unsigned long int)u ); } // [l,u)
+} // distribution
+
+float random( void );									// [0.0, 1.0)
+double random( void );									// [0.0, 1.0)
+float _Complex random( void );							// [0.0, 1.0)+[0.0, 1.0)i
+double _Complex random( void );							// [0.0, 1.0)+[0.0, 1.0)i
+long double _Complex random( void );					// [0.0, 1.0)+[0.0, 1.0)i
+
+//---------------------------------------
+
+#include "common.hfa"
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/time.cfa
===================================================================
--- libcfa/src/time.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/time.cfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,161 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// time.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Mar 27 13:33:14 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun May  6 22:26:00 2018
+// Update Count     : 37
+//
+
+#include "time.hfa"
+#include "iostream.hfa"
+#include <stdio.h>										// snprintf
+#include <assert.h>
+
+static char * nanomsd( long int ns, char * buf ) {		// most significant digits
+	snprintf( buf, 16, ".%09ld", ns );
+	int i;
+	for ( i = 9; buf[i] == '0' ; i -= 1 );				// find least significant digit
+	buf[i + 1] = '\0';
+	return buf;
+} // nanomsd
+
+
+//######################### Duration #########################
+
+
+forall( dtype ostype | ostream( ostype ) )
+ostype & ?|?( ostype & os, Duration dur ) with( dur ) {
+	os | tv / TIMEGRAN;									// print seconds
+	long int ns = (tv < 0 ? -tv : tv) % TIMEGRAN;		// compute nanoseconds
+	if ( ns != 0 ) {									// some ?
+		char buf[16];
+		os | nanomsd( ns, buf );						// print nanoseconds
+	} // if
+	return os;
+} // ?|?
+
+
+//######################### Time #########################
+
+
+#ifdef __CFA_DEBUG__
+#define CreateFmt "Attempt to create Time( year=%d (>=1970), month=%d (1-12), day=%d (1-31), hour=%d (0-23), min=%d (0-59), sec=%d (0-60), nsec=%d (0-999_999_999), " \
+	"which exceeds range 00:00:00 UTC, January 1, 1970 to 03:14:07 UTC, January 19, 2038."
+#endif // __CFA_DEBUG__
+
+void ?{}( Time & time, int year, int month, int day, int hour, int min, int sec, int nsec ) with( time ) {
+	tm tm;
+
+	tm.tm_isdst = -1;									// let mktime determine if alternate timezone is in effect
+	tm.tm_year = year - 1900;							// mktime uses 1900 as its starting point
+#ifdef __CFA_DEBUG__
+	if ( month < 1 || 12 < month ) {
+		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+	} // if
+#endif // __CFA_DEBUG__
+	tm.tm_mon = month - 1;								// mktime uses range 0-11
+#ifdef __CFA_DEBUG__
+	if ( day < 1 || 31 < day ) {
+		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+	} // if
+#endif // __CFA_DEBUG__
+	tm.tm_mday = day;									// mktime uses range 1-31
+	tm.tm_hour = hour;
+	tm.tm_min = min;
+	tm.tm_sec = sec;
+	time_t epochsec = mktime( &tm );
+#ifdef __CFA_DEBUG__
+	if ( epochsec == (time_t)-1 ) {
+		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+	} // if
+#endif // __CFA_DEBUG__
+	tv = (int64_t)(epochsec) * TIMEGRAN + nsec;			// convert to nanoseconds
+#ifdef __CFA_DEBUG__
+	if ( tv > 2147483647LL * TIMEGRAN ) {				// between 00:00:00 UTC, January 1, 1970 and 03:14:07 UTC, January 19, 2038.
+		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+	} // if
+#endif // __CFA_DEBUG__
+} // ?{}
+
+char * yy_mm_dd( Time time, char * buf ) with( time ) {
+	time_t s = tv / TIMEGRAN;
+	tm tm;
+	gmtime_r( &s, &tm );								// tm_mon <= 11, tm_mday <= 31
+#if defined(__GNUC__) && __GNUC__ >= 7
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-truncation"
+#endif
+	snprintf( buf, 9, "%02d/%02d/%02d", tm.tm_year % 99, tm.tm_mon + 1, tm.tm_mday );
+#if defined(__GNUC__) && __GNUC__ >= 7
+#pragma GCC diagnostic pop
+#endif
+	return buf;
+} // yy_mm_dd
+
+char * mm_dd_yy( Time time, char * buf ) with( time ) {
+	time_t s = tv / TIMEGRAN;
+	tm tm;
+	gmtime_r( &s, &tm );								// tm_mon <= 11, tm_mday <= 31
+#if defined(__GNUC__) && __GNUC__ >= 7
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-truncation"
+#endif
+	snprintf( buf, 9, "%02d/%02d/%02d", tm.tm_mon + 1, tm.tm_mday, tm.tm_year % 99 );
+#if defined(__GNUC__) && __GNUC__ >= 7
+#pragma GCC diagnostic pop
+#endif
+	return buf;
+} // mm_dd_yy
+
+char * dd_mm_yy( Time time, char * buf ) with( time ) {
+	time_t s = tv / TIMEGRAN;
+	tm tm;
+	gmtime_r( &s, &tm );								// tm_mon <= 11, tm_mday <= 31
+#if defined(__GNUC__) && __GNUC__ >= 7
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-truncation"
+#endif
+	snprintf( buf, 9, "%02d/%02d/%02d", tm.tm_mday, tm.tm_mon + 1, tm.tm_year % 99 );
+#if defined(__GNUC__) && __GNUC__ >= 7
+#pragma GCC diagnostic pop
+#endif
+	return buf;
+} // dd_mm_yy
+
+size_t strftime( char * buf, size_t size, const char * fmt, Time time ) with( time ) {
+	time_t s = tv / TIMEGRAN;
+	tm tm;
+	gmtime_r( &s, &tm );
+	return strftime( buf, size, fmt, &tm );
+} // strftime
+
+forall( dtype ostype | ostream( ostype ) )
+ostype & ?|?( ostype & os, Time time ) with( time ) {
+	char buf[32];										// at least 26
+	time_t s = tv / TIMEGRAN;
+    ctime_r( &s, (char *)&buf );						// 26 characters: "Wed Jun 30 21:49:08 1993\n"
+	buf[24] = '\0';										// remove trailing '\n'
+	long int ns = (tv < 0 ? -tv : tv) % TIMEGRAN;		// compute nanoseconds
+	if ( ns == 0 ) {									// none ?
+		os | buf;										// print date/time/year
+	} else {
+		buf[19] = '\0';									// truncate to "Wed Jun 30 21:49:08"
+		os | buf;										// print date/time
+		char buf2[16];
+		nanomsd( ns, buf2 );							// compute nanoseconds
+		os | buf2 | ' ' | &buf[20];						// print nanoseconds and year
+	} // if
+	return os;
+} // ?|?
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/time.hfa
===================================================================
--- libcfa/src/time.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/time.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,210 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// time --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Mar 14 23:18:57 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 11 13:55:33 2018
+// Update Count     : 642
+//
+
+#pragma once
+
+// http://en.cppreference.com/w/cpp/header/chrono
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r5.html#refcc
+
+#include <time.h>										// timespec
+extern "C" {
+#include <sys/time.h>									// timeval
+}
+#include <time_t.hfa>										// Duration/Time types
+
+enum { TIMEGRAN = 1_000_000_000LL };					// nanosecond granularity, except for timeval
+
+//######################### Duration #########################
+
+static inline {
+	Duration ?=?( Duration & dur, zero_t ) { return dur{ 0 }; }
+
+	Duration +?( Duration rhs ) with( rhs ) {	return (Duration)@{ +tv }; }
+	Duration ?+?( Duration & lhs, Duration rhs ) { return (Duration)@{ lhs.tv + rhs.tv }; }
+	Duration ?+=?( Duration & lhs, Duration rhs ) { lhs = lhs + rhs; return lhs; }
+
+	Duration -?( Duration rhs ) with( rhs ) { return (Duration)@{ -tv }; }
+	Duration ?-?( Duration & lhs, Duration rhs ) { return (Duration)@{ lhs.tv - rhs.tv }; }
+	Duration ?-=?( Duration & lhs, Duration rhs ) { lhs = lhs - rhs; return lhs; }
+
+	Duration ?*?( Duration lhs, int64_t rhs ) { return (Duration)@{ lhs.tv * rhs }; }
+	Duration ?*?( int64_t lhs, Duration rhs ) { return (Duration)@{ lhs * rhs.tv }; }
+	Duration ?*=?( Duration & lhs, int64_t rhs ) { lhs = lhs * rhs; return lhs; }
+
+	int64_t ?/?( Duration lhs, Duration rhs ) { return lhs.tv / rhs.tv; }
+	Duration ?/?( Duration lhs, int64_t rhs ) { return (Duration)@{ lhs.tv / rhs }; }
+	Duration ?/=?( Duration & lhs, int64_t rhs ) { lhs = lhs / rhs; return lhs; }
+	double div( Duration lhs, Duration rhs ) { return (double)lhs.tv / (double)rhs.tv; }
+
+	Duration ?%?( Duration lhs, Duration rhs ) { return (Duration)@{ lhs.tv % rhs.tv }; }
+	Duration ?%=?( Duration & lhs, Duration rhs ) { lhs = lhs % rhs; return lhs; }
+
+	bool ?==?( Duration lhs, Duration rhs ) { return lhs.tv == rhs.tv; }
+	bool ?!=?( Duration lhs, Duration rhs ) { return lhs.tv != rhs.tv; }
+	bool ?<? ( Duration lhs, Duration rhs ) { return lhs.tv <  rhs.tv; }
+	bool ?<=?( Duration lhs, Duration rhs ) { return lhs.tv <= rhs.tv; }
+	bool ?>? ( Duration lhs, Duration rhs ) { return lhs.tv >  rhs.tv; }
+	bool ?>=?( Duration lhs, Duration rhs ) { return lhs.tv >= rhs.tv; }
+
+	bool ?==?( Duration lhs, zero_t ) { return lhs.tv == 0; }
+	bool ?!=?( Duration lhs, zero_t ) { return lhs.tv != 0; }
+	bool ?<? ( Duration lhs, zero_t ) { return lhs.tv <  0; }
+	bool ?<=?( Duration lhs, zero_t ) { return lhs.tv <= 0; }
+	bool ?>? ( Duration lhs, zero_t ) { return lhs.tv >  0; }
+	bool ?>=?( Duration lhs, zero_t ) { return lhs.tv >= 0; }
+
+	Duration abs( Duration rhs ) { return rhs.tv >= 0 ? rhs : -rhs; }
+
+	Duration ?`ns( int64_t nsec ) { return (Duration)@{ nsec }; }
+	Duration ?`us( int64_t usec ) { return (Duration)@{ usec * (TIMEGRAN / 1_000_000LL) }; }
+	Duration ?`ms( int64_t msec ) { return (Duration)@{ msec * (TIMEGRAN / 1_000LL) }; }
+	Duration ?`s( int64_t sec ) { return (Duration)@{ sec * TIMEGRAN }; }
+	Duration ?`s( double sec ) { return (Duration)@{ sec * TIMEGRAN }; }
+	Duration ?`m( int64_t min ) { return (Duration)@{ min * (60LL * TIMEGRAN) }; }
+	Duration ?`m( double min ) { return (Duration)@{ min * (60LL * TIMEGRAN) }; }
+	Duration ?`h( int64_t hours ) { return (Duration)@{ hours * (60LL * 60LL * TIMEGRAN) }; }
+	Duration ?`h( double hours ) { return (Duration)@{ hours * (60LL * 60LL * TIMEGRAN) }; }
+	Duration ?`d( int64_t days ) { return (Duration)@{ days * (24LL * 60LL * 60LL * TIMEGRAN) }; }
+	Duration ?`d( double days ) { return (Duration)@{ days * (24LL * 60LL * 60LL * TIMEGRAN) }; }
+	Duration ?`w( int64_t weeks ) { return (Duration)@{ weeks * (7LL * 24LL * 60LL * 60LL * TIMEGRAN) }; }
+	Duration ?`w( double weeks ) { return (Duration)@{ weeks * (7LL * 24LL * 60LL * 60LL * TIMEGRAN) }; }
+
+	int64_t ?`ns( Duration dur ) { return dur.tv; }
+	int64_t ?`us( Duration dur ) { return dur.tv / (TIMEGRAN / 1_000_000LL); }
+	int64_t ?`ms( Duration dur ) { return dur.tv / (TIMEGRAN / 1_000LL); }
+	int64_t ?`s( Duration dur ) { return dur.tv / TIMEGRAN; }
+	int64_t ?`m( Duration dur ) { return dur.tv / (60LL * TIMEGRAN); }
+	int64_t ?`h( Duration dur ) { return dur.tv / (60LL * 60LL * TIMEGRAN); }
+	int64_t ?`d( Duration dur ) { return dur.tv / (24LL * 60LL * 60LL * TIMEGRAN); }
+	int64_t ?`w( Duration dur ) { return dur.tv / (7LL * 24LL * 60LL * 60LL * TIMEGRAN); }
+
+	Duration max( Duration lhs, Duration rhs ) { return  (lhs.tv < rhs.tv) ? rhs : lhs;}
+	Duration min( Duration lhs, Duration rhs ) { return !(rhs.tv < lhs.tv) ? lhs : rhs;}
+} // distribution
+
+//######################### C timeval #########################
+
+static inline {
+	void ?{}( timeval & t ) {}
+	void ?{}( timeval & t, time_t sec, suseconds_t usec ) { t.tv_sec = sec; t.tv_usec = usec; }
+	void ?{}( timeval & t, time_t sec ) { t{ sec, 0 }; }
+	void ?{}( timeval & t, zero_t ) { t{ 0, 0 }; }
+
+	timeval ?=?( timeval & t, zero_t ) { return t{ 0 }; }
+	timeval ?+?( timeval & lhs, timeval rhs ) { return (timeval)@{ lhs.tv_sec + rhs.tv_sec, lhs.tv_usec + rhs.tv_usec }; }
+	timeval ?-?( timeval & lhs, timeval rhs ) { return (timeval)@{ lhs.tv_sec - rhs.tv_sec, lhs.tv_usec - rhs.tv_usec }; }
+	bool ?==?( timeval lhs, timeval rhs ) { return lhs.tv_sec == rhs.tv_sec && lhs.tv_usec == rhs.tv_usec; }
+	bool ?!=?( timeval lhs, timeval rhs ) { return lhs.tv_sec != rhs.tv_sec || lhs.tv_usec != rhs.tv_usec; }
+} // distribution
+
+//######################### C timespec #########################
+
+static inline {
+	void ?{}( timespec & t ) {}
+	void ?{}( timespec & t, time_t sec, __syscall_slong_t nsec ) { t.tv_sec = sec; t.tv_nsec = nsec; }
+	void ?{}( timespec & t, time_t sec ) { t{ sec, 0}; }
+	void ?{}( timespec & t, zero_t ) { t{ 0, 0 }; }
+
+	timespec ?=?( timespec & t, zero_t ) { return t{ 0 }; }
+	timespec ?+?( timespec & lhs, timespec rhs ) { return (timespec)@{ lhs.tv_sec + rhs.tv_sec, lhs.tv_nsec + rhs.tv_nsec }; }
+	timespec ?-?( timespec & lhs, timespec rhs ) { return (timespec)@{ lhs.tv_sec - rhs.tv_sec, lhs.tv_nsec - rhs.tv_nsec }; }
+	bool ?==?( timespec lhs, timespec rhs ) { return lhs.tv_sec == rhs.tv_sec && lhs.tv_nsec == rhs.tv_nsec; }
+	bool ?!=?( timespec lhs, timespec rhs ) { return lhs.tv_sec != rhs.tv_sec || lhs.tv_nsec != rhs.tv_nsec; }
+} // distribution
+
+//######################### C itimerval #########################
+
+static inline {
+	void ?{}( itimerval & itv, Duration alarm ) with( itv ) {
+		// itimerval contains durations but but uses time data-structure timeval.
+		it_value{ alarm`s, (alarm % 1`s)`us };			// seconds, microseconds
+		it_interval{ 0 };								// 0 seconds, 0 microseconds
+	} // itimerval
+
+	void ?{}( itimerval & itv, Duration alarm, Duration interval ) with( itv ) {
+		// itimerval contains durations but but uses time data-structure timeval.
+		it_value{ alarm`s, (alarm % 1`s)`us };			// seconds, microseconds
+		it_interval{ interval`s, interval`us };			// seconds, microseconds
+	} // itimerval
+} // distribution
+
+//######################### Time #########################
+
+void ?{}( Time & time, int year, int month = 0, int day = 0, int hour = 0, int min = 0, int sec = 0, int nsec = 0 );
+static inline {
+	Time ?=?( Time & time, zero_t ) { return time{ 0 }; }
+
+	void ?{}( Time & time, timeval t ) with( time ) { tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_usec * 1000; }
+	Time ?=?( Time & time, timeval t ) with( time ) {
+		tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_usec * (TIMEGRAN / 1_000_000LL);
+		return time;
+	} // ?=?
+
+	void ?{}( Time & time, timespec t ) with( time ) { tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_nsec; }
+	Time ?=?( Time & time, timespec t ) with( time ) {
+		tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_nsec;
+		return time;
+	} // ?=?
+
+	Time ?+?( Time & lhs, Duration rhs ) { return (Time)@{ lhs.tv + rhs.tv }; }
+	Time ?+?( Duration lhs, Time rhs ) { return rhs + lhs; }
+	Time ?+=?( Time & lhs, Duration rhs ) { lhs = lhs + rhs; return lhs; }
+
+	Duration ?-?( Time lhs, Time rhs ) { return (Duration)@{ lhs.tv - rhs.tv }; }
+	Time ?-?( Time lhs, Duration rhs ) { return (Time)@{ lhs.tv - rhs.tv }; }
+	Time ?-=?( Time & lhs, Duration rhs ) { lhs = lhs - rhs; return lhs; }
+	bool ?==?( Time lhs, Time rhs ) { return lhs.tv == rhs.tv; }
+	bool ?!=?( Time lhs, Time rhs ) { return lhs.tv != rhs.tv; }
+	bool ?<?( Time lhs, Time rhs ) { return lhs.tv < rhs.tv; }
+	bool ?<=?( Time lhs, Time rhs ) { return lhs.tv <= rhs.tv; }
+	bool ?>?( Time lhs, Time rhs ) { return lhs.tv > rhs.tv; }
+	bool ?>=?( Time lhs, Time rhs ) { return lhs.tv >= rhs.tv; }
+} // distribution
+
+char * yy_mm_dd( Time time, char * buf );
+static inline char * ?`ymd( Time time, char * buf ) {	// short form
+	return yy_mm_dd( time, buf );
+} // ymd
+
+char * mm_dd_yy( Time time, char * buf );
+static inline char * ?`mdy( Time time, char * buf ) {	// short form
+	return mm_dd_yy( time, buf );
+} // mdy
+
+char * dd_mm_yy( Time time, char * buf );
+static inline char * ?`dmy( Time time, char * buf ) {	// short form
+	return dd_mm_yy( time, buf );;
+} // dmy
+
+size_t strftime( char * buf, size_t size, const char * fmt, Time time );
+
+//------------------------- timeval (cont) -------------------------
+
+static inline void ?{}( timeval & t, Time time ) with( t, time ) {
+	tv_sec = tv / TIMEGRAN;								// seconds
+	tv_usec = tv % TIMEGRAN / (TIMEGRAN / 1_000_000LL);	// microseconds
+} // ?{}
+
+//------------------------- timespec (cont) -------------------------
+
+static inline void ?{}( timespec & t, Time time ) with( t, time ) {
+	tv_sec = tv / TIMEGRAN;								// seconds
+	tv_nsec = tv % TIMEGRAN;							// nanoseconds
+} // ?{}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/time_t.hfa
===================================================================
--- libcfa/src/time_t.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/time_t.hfa	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,41 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// time_t.hfa --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Apr 10 14:42:03 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Apr 13 07:51:47 2018
+// Update Count     : 6
+//
+
+#pragma once
+
+
+//######################### Duration #########################
+
+struct Duration {										// private
+	int64_t tv;											// nanoseconds
+}; // Duration
+
+static inline void ?{}( Duration & dur ) with( dur ) { tv = 0; }
+static inline void ?{}( Duration & dur, zero_t ) with( dur ) { tv = 0; }
+
+
+//######################### Time #########################
+
+struct Time {											// private
+	uint64_t tv;										// nanoseconds since UNIX epoch
+}; // Time
+
+static inline void ?{}( Time & time ) with( time ) { tv = 0; }
+static inline void ?{}( Time & time, zero_t ) with( time ) { tv = 0; }
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/virtual.c
===================================================================
--- libcfa/src/virtual.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/virtual.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,31 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// virtual.c --
+//
+// Author           : Andrew Beach
+// Created On       : Tus Jul 11 15:10:00 2017
+// Last Modified By : Andrew Beach
+// Last Modified On : Wed Jul 26 14:24:00 2017
+// Update Count     : 1
+//
+
+#include "virtual.h"
+
+int __cfa__is_parent( struct __cfa__parent_vtable const * parent,
+    	struct __cfa__parent_vtable const * child ) {
+	do {
+		if ( parent == child )
+			return 1;
+		child = child->parent;
+	} while ( child );
+	return 0;
+}
+
+void * __cfa__virtual_cast( struct __cfa__parent_vtable const * parent,
+    	struct __cfa__parent_vtable const * const * child ) {
+	return (__cfa__is_parent(parent, *child)) ? (void *)child : (void *)0;
+}
Index: libcfa/src/virtual.h
===================================================================
--- libcfa/src/virtual.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ libcfa/src/virtual.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,39 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// virtual.h -- Builtins for hierarchy objects.
+//
+// Author           : Andrew Beach
+// Created On       : Tus Jul 11 15:08:00 2017
+// Last Modified By : Andrew Beach
+// Last Modified On : Wed Jul 26 14:18:00 2017
+// Update Count     : 1
+//
+
+#pragma once
+
+#ifdef __cforall
+extern "C" {
+#endif
+
+// All strict/explicate vtables should have this head, showing their parent.
+struct __cfa__parent_vtable {
+    struct __cfa__parent_vtable const * const parent;
+};
+
+// Takes in two non-null pointers to type_objects.
+int __cfa__is_parent( struct __cfa__parent_vtable const * parent,
+		struct __cfa__parent_vtable const * child );
+
+// If parent is a parent of child then return child, otherwise return NULL.
+// Input pointers are none-null, child's first level should be an object with
+// a vtable
+void * __cfa__virtual_cast( struct __cfa__parent_vtable const * parent,
+		struct __cfa__parent_vtable const * const * child );
+
+#ifdef __cforall
+}
+#endif
Index: src/Concurrency/Keywords.cc
===================================================================
--- src/Concurrency/Keywords.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/Concurrency/Keywords.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -97,5 +97,5 @@
 			"__thrd",
 			"get_thread",
-			"thread keyword requires threads to be in scope, add #include <thread>",
+			"thread keyword requires threads to be in scope, add #include <thread.hfa>",
 			true,
 			KeywordCastExpr::Thread
@@ -129,5 +129,5 @@
 			"__cor",
 			"get_coroutine",
-			"coroutine keyword requires coroutines to be in scope, add #include <coroutine>",
+			"coroutine keyword requires coroutines to be in scope, add #include <coroutine.hfa>",
 			true,
 			KeywordCastExpr::Coroutine
@@ -161,5 +161,5 @@
 			"__mon",
 			"get_monitor",
-			"monitor keyword requires monitors to be in scope, add #include <monitor>",
+			"monitor keyword requires monitors to be in scope, add #include <monitor.hfa>",
 			false,
 			KeywordCastExpr::Monitor
@@ -488,5 +488,5 @@
 		// Do we have the required headers
 		if( !monitor_decl || !guard_decl || !dtor_guard_decl )
-			SemanticError( decl, "mutex keyword requires monitors to be in scope, add #include <monitor>\n" );
+			SemanticError( decl, "mutex keyword requires monitors to be in scope, add #include <monitor.hfa>\n" );
 
 		// Instrument the body
@@ -685,5 +685,5 @@
 		if( type && type->get_baseStruct()->is_thread() ) {
 			if( !thread_decl || !thread_ctor_seen ) {
-				SemanticError( type->get_baseStruct()->location, "thread keyword requires threads to be in scope, add #include <thread>");
+				SemanticError( type->get_baseStruct()->location, "thread keyword requires threads to be in scope, add #include <thread.hfa>");
 			}
 
Index: src/Concurrency/Waitfor.cc
===================================================================
--- src/Concurrency/Waitfor.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/Concurrency/Waitfor.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -250,5 +250,5 @@
 	Statement * GenerateWaitForPass::postmutate( WaitForStmt * waitfor ) {
 		if( !decl_monitor || !decl_acceptable || !decl_mask )
-			SemanticError( waitfor, "waitfor keyword requires monitors to be in scope, add #include <monitor>" );
+			SemanticError( waitfor, "waitfor keyword requires monitors to be in scope, add #include <monitor.hfa>" );
 
 		CompoundStmt * stmt = new CompoundStmt();
Index: c/Docs/Makefile
===================================================================
--- src/Docs/Makefile	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,38 +1,0 @@
-DIA = dia --nosplash
-TEX = latex
-DVIPS = dvips
-DVIPSFLAGS = -t landscape
-JUNK = .aux .log .dvi 
-
-# DocBook macros
-# JADE=openjade 
-# STYLEDIR=$(SGML_SHARE)/dsssl/docbook
-# STYLE=print/docbook.dsl
-# TARGET = tex
-
-DIAGRAMS = uml.dia
-DIAGRAMSOUT = $(DIAGRAMS:.dia=.eps)
-
-# SOURCES = intro.sgml mngmt.sgml pcap.sgml biblo.sgml conc.sgml
-
-.SUFFIXES : .dia .eps
-.dia.eps:
-	$(DIA) $< --export=$@
-
-%.dvi: %.tex
-	$(TEX) $<
-
-%.ps: %.dvi
-	$(DVIPS) $(DVIPSFLAGS) $< -o $@
-
-design.ps:
-
-# project.dvi: project.$(TARGET)
-# 	jadetex $<
-
-# project.$(TARGET):project.sgml $(DIAGRAMSOUT) $(SOURCES)
-# 	$(JADE) -t $(TARGET) -d $(STYLEDIR)/$(STYLE) project.sgml
-
-clean: 
-	rm -f *.dvi *.tex *.ps *~ *.aux *.log
-
Index: c/Docs/cfa-cpp.1
===================================================================
--- src/Docs/cfa-cpp.1	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,46 +1,0 @@
-.TH "cfa-cpp" "1"  "December 2002" "" ""
-.SH NAME
-cfa-cpp \- The CForall preprocessor
-.SH SYNOPSIS
-.B cfa-cpp
-\fBcfa-cpp\fP [ -dtsgmcvenplD ] input_files
-.br
-.SH DESCRIPTION
-\fBcfa-cpp\fP converts (cpp) preprocessed programs to C source files
-for later processing by \fBgcc\fP(1)
-.SH OPTIONS
-.TP
-\fB-d\fP
-bison(1) debugging info
-.TP
-\fB-t\fP
-dump parse tree
-.TP
-\fB-s\fP
-dump Abstract Syntax Tree
-.TP
-\fB-g\fP
-print alternatives for expressions
-.TP
-\fB-m\fP
-print symbol table events
-.TP
-\fB-c\fP
-generate C code
-.TP
-\fB-v\fP
-dump AST after validation of declarations
-.TP
-\fB-e\fP
-dump AST after expression analysis
-.TP
-\fB-n\fP
-don't read preamble (can be combined with any of the preceding)
-.TP
-\fB-p\fP
-generate prototypes for preamble functions
-.TP
-\fB-l\fP
-generate libcfa.c
-.SH "SEE ALSO"
-The Cforall project homepage (http://plg.uwaterloo.ca/~cforall)
Index: c/Docs/design.tex
===================================================================
--- src/Docs/design.tex	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,14 +1,0 @@
-\documentclass[landscape]{article}
-
-\usepackage{graphicx}
-
-\begin{document}
-
- \begin{figure}
- \centering
- %\includegraphics[totalheight=0.8\textheight,viewport=50 260 400 1000,clip]{erptsqfit}
- \includegraphics{uml}
- %\caption[UML Diagram for the CFA translator] %\label{fig:erptsqfit}
- \end{figure}
-
-\end{document}
Index: src/GenPoly/ScrubTyVars.cc
===================================================================
--- src/GenPoly/ScrubTyVars.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/GenPoly/ScrubTyVars.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -50,4 +50,6 @@
 				delete typeInst;
 				return new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) );
+			  default:
+				assertf(false, "Unhandled tyvar kind: %d", tyVar->second.kind);
 			} // switch
 		} // if
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -16,5 +16,5 @@
 
 # create object files in directory with source files
-AUTOMAKE_OPTIONS = subdir-objects
+AUTOMAKE_OPTIONS = foreign subdir-objects
 
 SRC = main.cc \
@@ -23,4 +23,5 @@
 
 MAINTAINERCLEANFILES =
+MOSTLYCLEANFILES =
 
 # Is there a way to use a variable for the directory names?
@@ -43,9 +44,98 @@
 # put into lib for now
 cfa_cpplibdir = $(CFA_LIBDIR)
-cfa_cpplib_PROGRAMS = driver/cfa-cpp
-driver_cfa_cpp_SOURCES = $(SRC)
-driver_cfa_cpp_LDADD = -ldl			# yywrap
-driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O2 -g -std=c++14
-driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
+cfa_cpplib_PROGRAMS = ../driver/cfa-cpp demangler
+___driver_cfa_cpp_SOURCES = $(SRC)
+___driver_cfa_cpp_LDADD = -ldl			# yywrap
+
+AM_CXXFLAGS = @HOST_FLAGS@ -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O2 -g -std=c++14
+AM_LDFLAGS  = @HOST_FLAGS@ -Xlinker -export-dynamic
+
+demangler_SOURCES = SymTab/demangler.cc
+
+demangler_LDADD = libdemangle.a     # yywrap
+
+noinst_LIBRARIES = libdemangle.a
+libdemangle_a_SOURCES = SymTab/Demangle.cc SymTab/ManglerCommon.cc \
+  SynTree/Type.cc \
+  SynTree/VoidType.cc \
+  SynTree/BasicType.cc \
+  SynTree/PointerType.cc \
+  SynTree/ArrayType.cc \
+  SynTree/ReferenceType.cc \
+  SynTree/FunctionType.cc \
+  SynTree/ReferenceToType.cc \
+  SynTree/TupleType.cc \
+  SynTree/TypeofType.cc \
+  SynTree/AttrType.cc \
+  SynTree/VarArgsType.cc \
+  SynTree/ZeroOneType.cc \
+  SynTree/Constant.cc \
+  SynTree/Expression.cc \
+  SynTree/TupleExpr.cc \
+  SynTree/CommaExpr.cc \
+  SynTree/TypeExpr.cc \
+  SynTree/ApplicationExpr.cc \
+  SynTree/AddressExpr.cc \
+  SynTree/Statement.cc \
+  SynTree/CompoundStmt.cc \
+  SynTree/DeclStmt.cc \
+  SynTree/Declaration.cc \
+  SynTree/DeclarationWithType.cc \
+  SynTree/ObjectDecl.cc \
+  SynTree/FunctionDecl.cc \
+  SynTree/AggregateDecl.cc \
+  SynTree/NamedTypeDecl.cc \
+  SynTree/TypeDecl.cc \
+  SynTree/Initializer.cc \
+  SynTree/TypeSubstitution.cc \
+  SynTree/Attribute.cc \
+  SynTree/DeclReplacer.cc \
+  CompilationState.cc \
+  CodeGen/CodeGenerator.cc \
+  CodeGen/FixMain.cc \
+  CodeGen/GenType.cc \
+  CodeGen/OperatorTable.cc \
+  Common/Assert.cc \
+  Common/Eval.cc \
+  Common/SemanticError.cc \
+  Common/UniqueName.cc \
+  Concurrency/Keywords.cc \
+  ControlStruct/ForExprMutator.cc \
+  ControlStruct/LabelFixer.cc \
+  ControlStruct/LabelGenerator.cc \
+  ControlStruct/MLEMutator.cc \
+  ControlStruct/Mutate.cc \
+  GenPoly/GenPoly.cc \
+  GenPoly/Lvalue.cc \
+  InitTweak/GenInit.cc \
+  InitTweak/InitTweak.cc \
+  Parser/LinkageSpec.cc \
+  ResolvExpr/AdjustExprType.cc \
+  ResolvExpr/Alternative.cc \
+  ResolvExpr/AlternativeFinder.cc \
+  ResolvExpr/ExplodedActual.cc \
+  ResolvExpr/CastCost.cc \
+  ResolvExpr/CommonType.cc \
+  ResolvExpr/ConversionCost.cc \
+  ResolvExpr/CurrentObject.cc \
+  ResolvExpr/FindOpenVars.cc \
+  ResolvExpr/Occurs.cc \
+  ResolvExpr/PolyCost.cc \
+  ResolvExpr/PtrsAssignable.cc \
+  ResolvExpr/PtrsCastable.cc \
+  ResolvExpr/RenameVars.cc \
+  ResolvExpr/Resolver.cc \
+  ResolvExpr/ResolveTypeof.cc \
+  ResolvExpr/TypeEnvironment.cc \
+  ResolvExpr/Unify.cc \
+  SymTab/Autogen.cc \
+  SymTab/FixFunction.cc \
+  SymTab/Indexer.cc \
+  SymTab/Mangler.cc \
+  SymTab/Validate.cc \
+  Tuples/Explode.cc \
+  Tuples/TupleAssignment.cc \
+  Tuples/TupleExpansion.cc \
+  Validate/HandleAttributes.cc
 
 MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}}
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -62,4 +62,5 @@
 ######################### -*- Mode: Makefile-Gmake -*- ########################
 ###############################################################################
+
 
 VPATH = @srcdir@
@@ -137,8 +138,9 @@
 build_triplet = @build@
 host_triplet = @host@
-cfa_cpplib_PROGRAMS = driver/cfa-cpp$(EXEEXT)
+cfa_cpplib_PROGRAMS = ../driver/cfa-cpp$(EXEEXT) demangler$(EXEEXT)
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
@@ -148,122 +150,146 @@
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo "  AR      " $@;
+am__v_AR_1 = 
+libdemangle_a_AR = $(AR) $(ARFLAGS)
+libdemangle_a_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am_libdemangle_a_OBJECTS = SymTab/Demangle.$(OBJEXT) \
+	SymTab/ManglerCommon.$(OBJEXT) SynTree/Type.$(OBJEXT) \
+	SynTree/VoidType.$(OBJEXT) SynTree/BasicType.$(OBJEXT) \
+	SynTree/PointerType.$(OBJEXT) SynTree/ArrayType.$(OBJEXT) \
+	SynTree/ReferenceType.$(OBJEXT) SynTree/FunctionType.$(OBJEXT) \
+	SynTree/ReferenceToType.$(OBJEXT) SynTree/TupleType.$(OBJEXT) \
+	SynTree/TypeofType.$(OBJEXT) SynTree/AttrType.$(OBJEXT) \
+	SynTree/VarArgsType.$(OBJEXT) SynTree/ZeroOneType.$(OBJEXT) \
+	SynTree/Constant.$(OBJEXT) SynTree/Expression.$(OBJEXT) \
+	SynTree/TupleExpr.$(OBJEXT) SynTree/CommaExpr.$(OBJEXT) \
+	SynTree/TypeExpr.$(OBJEXT) SynTree/ApplicationExpr.$(OBJEXT) \
+	SynTree/AddressExpr.$(OBJEXT) SynTree/Statement.$(OBJEXT) \
+	SynTree/CompoundStmt.$(OBJEXT) SynTree/DeclStmt.$(OBJEXT) \
+	SynTree/Declaration.$(OBJEXT) \
+	SynTree/DeclarationWithType.$(OBJEXT) \
+	SynTree/ObjectDecl.$(OBJEXT) SynTree/FunctionDecl.$(OBJEXT) \
+	SynTree/AggregateDecl.$(OBJEXT) \
+	SynTree/NamedTypeDecl.$(OBJEXT) SynTree/TypeDecl.$(OBJEXT) \
+	SynTree/Initializer.$(OBJEXT) \
+	SynTree/TypeSubstitution.$(OBJEXT) SynTree/Attribute.$(OBJEXT) \
+	SynTree/DeclReplacer.$(OBJEXT) CompilationState.$(OBJEXT) \
+	CodeGen/CodeGenerator.$(OBJEXT) CodeGen/FixMain.$(OBJEXT) \
+	CodeGen/GenType.$(OBJEXT) CodeGen/OperatorTable.$(OBJEXT) \
+	Common/Assert.$(OBJEXT) Common/Eval.$(OBJEXT) \
+	Common/SemanticError.$(OBJEXT) Common/UniqueName.$(OBJEXT) \
+	Concurrency/Keywords.$(OBJEXT) \
+	ControlStruct/ForExprMutator.$(OBJEXT) \
+	ControlStruct/LabelFixer.$(OBJEXT) \
+	ControlStruct/LabelGenerator.$(OBJEXT) \
+	ControlStruct/MLEMutator.$(OBJEXT) \
+	ControlStruct/Mutate.$(OBJEXT) GenPoly/GenPoly.$(OBJEXT) \
+	GenPoly/Lvalue.$(OBJEXT) InitTweak/GenInit.$(OBJEXT) \
+	InitTweak/InitTweak.$(OBJEXT) Parser/LinkageSpec.$(OBJEXT) \
+	ResolvExpr/AdjustExprType.$(OBJEXT) \
+	ResolvExpr/Alternative.$(OBJEXT) \
+	ResolvExpr/AlternativeFinder.$(OBJEXT) \
+	ResolvExpr/ExplodedActual.$(OBJEXT) \
+	ResolvExpr/CastCost.$(OBJEXT) ResolvExpr/CommonType.$(OBJEXT) \
+	ResolvExpr/ConversionCost.$(OBJEXT) \
+	ResolvExpr/CurrentObject.$(OBJEXT) \
+	ResolvExpr/FindOpenVars.$(OBJEXT) ResolvExpr/Occurs.$(OBJEXT) \
+	ResolvExpr/PolyCost.$(OBJEXT) \
+	ResolvExpr/PtrsAssignable.$(OBJEXT) \
+	ResolvExpr/PtrsCastable.$(OBJEXT) \
+	ResolvExpr/RenameVars.$(OBJEXT) ResolvExpr/Resolver.$(OBJEXT) \
+	ResolvExpr/ResolveTypeof.$(OBJEXT) \
+	ResolvExpr/TypeEnvironment.$(OBJEXT) \
+	ResolvExpr/Unify.$(OBJEXT) SymTab/Autogen.$(OBJEXT) \
+	SymTab/FixFunction.$(OBJEXT) SymTab/Indexer.$(OBJEXT) \
+	SymTab/Mangler.$(OBJEXT) SymTab/Validate.$(OBJEXT) \
+	Tuples/Explode.$(OBJEXT) Tuples/TupleAssignment.$(OBJEXT) \
+	Tuples/TupleExpansion.$(OBJEXT) \
+	Validate/HandleAttributes.$(OBJEXT)
+libdemangle_a_OBJECTS = $(am_libdemangle_a_OBJECTS)
 am__installdirs = "$(DESTDIR)$(cfa_cpplibdir)"
 PROGRAMS = $(cfa_cpplib_PROGRAMS)
-am__dirstamp = $(am__leading_dot)dirstamp
-am__objects_1 = driver_cfa_cpp-main.$(OBJEXT) \
-	driver_cfa_cpp-MakeLibCfa.$(OBJEXT) \
-	driver_cfa_cpp-CompilationState.$(OBJEXT) \
-	CodeGen/driver_cfa_cpp-Generate.$(OBJEXT) \
-	CodeGen/driver_cfa_cpp-CodeGenerator.$(OBJEXT) \
-	CodeGen/driver_cfa_cpp-GenType.$(OBJEXT) \
-	CodeGen/driver_cfa_cpp-FixNames.$(OBJEXT) \
-	CodeGen/driver_cfa_cpp-FixMain.$(OBJEXT) \
-	CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT) \
-	CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT) \
-	CodeTools/driver_cfa_cpp-TrackLoc.$(OBJEXT) \
-	Concurrency/driver_cfa_cpp-Keywords.$(OBJEXT) \
-	Concurrency/driver_cfa_cpp-Waitfor.$(OBJEXT) \
-	Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \
-	Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \
-	Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT) \
-	Common/driver_cfa_cpp-Assert.$(OBJEXT) \
-	Common/driver_cfa_cpp-Heap.$(OBJEXT) \
-	Common/driver_cfa_cpp-Eval.$(OBJEXT) \
-	ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT) \
-	ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT) \
-	ControlStruct/driver_cfa_cpp-MLEMutator.$(OBJEXT) \
-	ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT) \
-	ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT) \
-	ControlStruct/driver_cfa_cpp-ExceptTranslate.$(OBJEXT) \
-	GenPoly/driver_cfa_cpp-Box.$(OBJEXT) \
-	GenPoly/driver_cfa_cpp-GenPoly.$(OBJEXT) \
-	GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT) \
-	GenPoly/driver_cfa_cpp-Lvalue.$(OBJEXT) \
-	GenPoly/driver_cfa_cpp-Specialize.$(OBJEXT) \
-	GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT) \
-	GenPoly/driver_cfa_cpp-InstantiateGeneric.$(OBJEXT) \
-	InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT) \
-	InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT) \
-	InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT) \
-	InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT) \
-	Parser/driver_cfa_cpp-parser.$(OBJEXT) \
-	Parser/driver_cfa_cpp-lex.$(OBJEXT) \
-	Parser/driver_cfa_cpp-TypedefTable.$(OBJEXT) \
-	Parser/driver_cfa_cpp-ParseNode.$(OBJEXT) \
-	Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT) \
-	Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT) \
-	Parser/driver_cfa_cpp-StatementNode.$(OBJEXT) \
-	Parser/driver_cfa_cpp-InitializerNode.$(OBJEXT) \
-	Parser/driver_cfa_cpp-TypeData.$(OBJEXT) \
-	Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT) \
-	Parser/driver_cfa_cpp-parserutility.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-PtrsAssignable.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-CommonType.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-ConversionCost.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-CastCost.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-PtrsCastable.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-AdjustExprType.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-AlternativePrinter.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-Resolver.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-ResolveTypeof.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-RenameVars.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-FindOpenVars.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-PolyCost.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-Occurs.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-CurrentObject.$(OBJEXT) \
-	ResolvExpr/driver_cfa_cpp-ExplodedActual.$(OBJEXT) \
-	SymTab/driver_cfa_cpp-Indexer.$(OBJEXT) \
-	SymTab/driver_cfa_cpp-Mangler.$(OBJEXT) \
-	SymTab/driver_cfa_cpp-Validate.$(OBJEXT) \
-	SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT) \
-	SymTab/driver_cfa_cpp-Autogen.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-Type.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-VoidType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-BasicType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-PointerType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-ArrayType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-ReferenceType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-FunctionType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-ReferenceToType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-TupleType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-AttrType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-ZeroOneType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-Constant.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-Expression.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-TupleExpr.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-TypeExpr.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-ApplicationExpr.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-AddressExpr.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-Statement.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-CompoundStmt.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-DeclStmt.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-Declaration.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-DeclarationWithType.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-ObjectDecl.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-FunctionDecl.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-AggregateDecl.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-NamedTypeDecl.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-TypeDecl.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-Initializer.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-Attribute.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-DeclReplacer.$(OBJEXT) \
-	Tuples/driver_cfa_cpp-TupleAssignment.$(OBJEXT) \
-	Tuples/driver_cfa_cpp-TupleExpansion.$(OBJEXT) \
-	Tuples/driver_cfa_cpp-Explode.$(OBJEXT) \
-	Validate/driver_cfa_cpp-HandleAttributes.$(OBJEXT) \
-	Virtual/driver_cfa_cpp-ExpandCasts.$(OBJEXT)
-am_driver_cfa_cpp_OBJECTS = $(am__objects_1)
-driver_cfa_cpp_OBJECTS = $(am_driver_cfa_cpp_OBJECTS)
-driver_cfa_cpp_DEPENDENCIES =
-driver_cfa_cpp_LINK = $(CXXLD) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) \
-	$(driver_cfa_cpp_LDFLAGS) $(LDFLAGS) -o $@
+am__objects_1 = main.$(OBJEXT) MakeLibCfa.$(OBJEXT) \
+	CompilationState.$(OBJEXT) CodeGen/Generate.$(OBJEXT) \
+	CodeGen/CodeGenerator.$(OBJEXT) CodeGen/GenType.$(OBJEXT) \
+	CodeGen/FixNames.$(OBJEXT) CodeGen/FixMain.$(OBJEXT) \
+	CodeGen/OperatorTable.$(OBJEXT) CodeTools/DeclStats.$(OBJEXT) \
+	CodeTools/TrackLoc.$(OBJEXT) Concurrency/Keywords.$(OBJEXT) \
+	Concurrency/Waitfor.$(OBJEXT) Common/SemanticError.$(OBJEXT) \
+	Common/UniqueName.$(OBJEXT) Common/DebugMalloc.$(OBJEXT) \
+	Common/Assert.$(OBJEXT) Common/Heap.$(OBJEXT) \
+	Common/Eval.$(OBJEXT) ControlStruct/LabelGenerator.$(OBJEXT) \
+	ControlStruct/LabelFixer.$(OBJEXT) \
+	ControlStruct/MLEMutator.$(OBJEXT) \
+	ControlStruct/Mutate.$(OBJEXT) \
+	ControlStruct/ForExprMutator.$(OBJEXT) \
+	ControlStruct/ExceptTranslate.$(OBJEXT) GenPoly/Box.$(OBJEXT) \
+	GenPoly/GenPoly.$(OBJEXT) GenPoly/ScrubTyVars.$(OBJEXT) \
+	GenPoly/Lvalue.$(OBJEXT) GenPoly/Specialize.$(OBJEXT) \
+	GenPoly/FindFunction.$(OBJEXT) \
+	GenPoly/InstantiateGeneric.$(OBJEXT) \
+	InitTweak/GenInit.$(OBJEXT) InitTweak/FixInit.$(OBJEXT) \
+	InitTweak/FixGlobalInit.$(OBJEXT) \
+	InitTweak/InitTweak.$(OBJEXT) Parser/parser.$(OBJEXT) \
+	Parser/lex.$(OBJEXT) Parser/TypedefTable.$(OBJEXT) \
+	Parser/ParseNode.$(OBJEXT) Parser/DeclarationNode.$(OBJEXT) \
+	Parser/ExpressionNode.$(OBJEXT) Parser/StatementNode.$(OBJEXT) \
+	Parser/InitializerNode.$(OBJEXT) Parser/TypeData.$(OBJEXT) \
+	Parser/LinkageSpec.$(OBJEXT) Parser/parserutility.$(OBJEXT) \
+	ResolvExpr/AlternativeFinder.$(OBJEXT) \
+	ResolvExpr/Alternative.$(OBJEXT) ResolvExpr/Unify.$(OBJEXT) \
+	ResolvExpr/PtrsAssignable.$(OBJEXT) \
+	ResolvExpr/CommonType.$(OBJEXT) \
+	ResolvExpr/ConversionCost.$(OBJEXT) \
+	ResolvExpr/CastCost.$(OBJEXT) \
+	ResolvExpr/PtrsCastable.$(OBJEXT) \
+	ResolvExpr/AdjustExprType.$(OBJEXT) \
+	ResolvExpr/AlternativePrinter.$(OBJEXT) \
+	ResolvExpr/Resolver.$(OBJEXT) \
+	ResolvExpr/ResolveTypeof.$(OBJEXT) \
+	ResolvExpr/RenameVars.$(OBJEXT) \
+	ResolvExpr/FindOpenVars.$(OBJEXT) \
+	ResolvExpr/PolyCost.$(OBJEXT) ResolvExpr/Occurs.$(OBJEXT) \
+	ResolvExpr/TypeEnvironment.$(OBJEXT) \
+	ResolvExpr/CurrentObject.$(OBJEXT) \
+	ResolvExpr/ExplodedActual.$(OBJEXT) SymTab/Indexer.$(OBJEXT) \
+	SymTab/Mangler.$(OBJEXT) SymTab/ManglerCommon.$(OBJEXT) \
+	SymTab/Validate.$(OBJEXT) SymTab/FixFunction.$(OBJEXT) \
+	SymTab/Autogen.$(OBJEXT) SynTree/Type.$(OBJEXT) \
+	SynTree/VoidType.$(OBJEXT) SynTree/BasicType.$(OBJEXT) \
+	SynTree/PointerType.$(OBJEXT) SynTree/ArrayType.$(OBJEXT) \
+	SynTree/ReferenceType.$(OBJEXT) SynTree/FunctionType.$(OBJEXT) \
+	SynTree/ReferenceToType.$(OBJEXT) SynTree/TupleType.$(OBJEXT) \
+	SynTree/TypeofType.$(OBJEXT) SynTree/AttrType.$(OBJEXT) \
+	SynTree/VarArgsType.$(OBJEXT) SynTree/ZeroOneType.$(OBJEXT) \
+	SynTree/Constant.$(OBJEXT) SynTree/Expression.$(OBJEXT) \
+	SynTree/TupleExpr.$(OBJEXT) SynTree/CommaExpr.$(OBJEXT) \
+	SynTree/TypeExpr.$(OBJEXT) SynTree/ApplicationExpr.$(OBJEXT) \
+	SynTree/AddressExpr.$(OBJEXT) SynTree/Statement.$(OBJEXT) \
+	SynTree/CompoundStmt.$(OBJEXT) SynTree/DeclStmt.$(OBJEXT) \
+	SynTree/Declaration.$(OBJEXT) \
+	SynTree/DeclarationWithType.$(OBJEXT) \
+	SynTree/ObjectDecl.$(OBJEXT) SynTree/FunctionDecl.$(OBJEXT) \
+	SynTree/AggregateDecl.$(OBJEXT) \
+	SynTree/NamedTypeDecl.$(OBJEXT) SynTree/TypeDecl.$(OBJEXT) \
+	SynTree/Initializer.$(OBJEXT) \
+	SynTree/TypeSubstitution.$(OBJEXT) SynTree/Attribute.$(OBJEXT) \
+	SynTree/DeclReplacer.$(OBJEXT) \
+	Tuples/TupleAssignment.$(OBJEXT) \
+	Tuples/TupleExpansion.$(OBJEXT) Tuples/Explode.$(OBJEXT) \
+	Validate/HandleAttributes.$(OBJEXT) \
+	Virtual/ExpandCasts.$(OBJEXT)
+am____driver_cfa_cpp_OBJECTS = $(am__objects_1)
+___driver_cfa_cpp_OBJECTS = $(am____driver_cfa_cpp_OBJECTS)
+___driver_cfa_cpp_DEPENDENCIES =
+am_demangler_OBJECTS = SymTab/demangler.$(OBJEXT)
+demangler_OBJECTS = $(am_demangler_OBJECTS)
+demangler_DEPENDENCIES = libdemangle.a
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -282,8 +308,4 @@
 am__depfiles_maybe = depfiles
 am__mv = mv -f
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@@ -324,6 +346,8 @@
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(driver_cfa_cpp_SOURCES)
-DIST_SOURCES = $(driver_cfa_cpp_SOURCES)
+SOURCES = $(libdemangle_a_SOURCES) $(___driver_cfa_cpp_SOURCES) \
+	$(demangler_SOURCES)
+DIST_SOURCES = $(libdemangle_a_SOURCES) $(___driver_cfa_cpp_SOURCES) \
+	$(demangler_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
@@ -373,5 +397,4 @@
 BACKEND_CC = @BACKEND_CC@
 BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
 CC = @CC@
 CCAS = @CCAS@
@@ -404,4 +427,5 @@
 EXEEXT = @EXEEXT@
 GREP = @GREP@
+HOST_FLAGS = @HOST_FLAGS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -413,8 +437,9 @@
 LEXLIB = @LEXLIB@
 LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBCFA_TARGET_DIRS = @LIBCFA_TARGET_DIRS@
+LIBCFA_TARGET_MAKEFILES = @LIBCFA_TARGET_MAKEFILES@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
@@ -432,4 +457,5 @@
 SHELL = @SHELL@
 STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
 VERSION = @VERSION@
 YACC = @YACC@
@@ -489,5 +515,5 @@
 
 # create object files in directory with source files
-AUTOMAKE_OPTIONS = subdir-objects
+AUTOMAKE_OPTIONS = foreign subdir-objects
 SRC = main.cc MakeLibCfa.cc CompilationState.cc CodeGen/Generate.cc \
 	CodeGen/CodeGenerator.cc CodeGen/GenType.cc \
@@ -520,7 +546,7 @@
 	ResolvExpr/Occurs.cc ResolvExpr/TypeEnvironment.cc \
 	ResolvExpr/CurrentObject.cc ResolvExpr/ExplodedActual.cc \
-	SymTab/Indexer.cc SymTab/Mangler.cc SymTab/Validate.cc \
-	SymTab/FixFunction.cc SymTab/Autogen.cc SynTree/Type.cc \
-	SynTree/VoidType.cc SynTree/BasicType.cc \
+	SymTab/Indexer.cc SymTab/Mangler.cc SymTab/ManglerCommon.cc \
+	SymTab/Validate.cc SymTab/FixFunction.cc SymTab/Autogen.cc \
+	SynTree/Type.cc SynTree/VoidType.cc SynTree/BasicType.cc \
 	SynTree/PointerType.cc SynTree/ArrayType.cc \
 	SynTree/ReferenceType.cc SynTree/FunctionType.cc \
@@ -541,6 +567,6 @@
 	Tuples/Explode.cc Validate/HandleAttributes.cc \
 	Virtual/ExpandCasts.cc
-MAINTAINERCLEANFILES = Parser/parser.output ${libdir}/${notdir \
-	${cfa_cpplib_PROGRAMS}}
+MAINTAINERCLEANFILES = ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}}
+MOSTLYCLEANFILES = Parser/parser.hh Parser/parser.output
 BUILT_SOURCES = Parser/parser.hh
 AM_YFLAGS = -d -t -v
@@ -550,8 +576,94 @@
 # put into lib for now
 cfa_cpplibdir = $(CFA_LIBDIR)
-driver_cfa_cpp_SOURCES = $(SRC)
-driver_cfa_cpp_LDADD = -ldl			# yywrap
-driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O2 -g -std=c++14
-driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic
+___driver_cfa_cpp_SOURCES = $(SRC)
+___driver_cfa_cpp_LDADD = -ldl			# yywrap
+AM_CXXFLAGS = @HOST_FLAGS@ -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O2 -g -std=c++14
+AM_LDFLAGS = @HOST_FLAGS@ -Xlinker -export-dynamic
+demangler_SOURCES = SymTab/demangler.cc
+demangler_LDADD = libdemangle.a     # yywrap
+noinst_LIBRARIES = libdemangle.a
+libdemangle_a_SOURCES = SymTab/Demangle.cc SymTab/ManglerCommon.cc \
+  SynTree/Type.cc \
+  SynTree/VoidType.cc \
+  SynTree/BasicType.cc \
+  SynTree/PointerType.cc \
+  SynTree/ArrayType.cc \
+  SynTree/ReferenceType.cc \
+  SynTree/FunctionType.cc \
+  SynTree/ReferenceToType.cc \
+  SynTree/TupleType.cc \
+  SynTree/TypeofType.cc \
+  SynTree/AttrType.cc \
+  SynTree/VarArgsType.cc \
+  SynTree/ZeroOneType.cc \
+  SynTree/Constant.cc \
+  SynTree/Expression.cc \
+  SynTree/TupleExpr.cc \
+  SynTree/CommaExpr.cc \
+  SynTree/TypeExpr.cc \
+  SynTree/ApplicationExpr.cc \
+  SynTree/AddressExpr.cc \
+  SynTree/Statement.cc \
+  SynTree/CompoundStmt.cc \
+  SynTree/DeclStmt.cc \
+  SynTree/Declaration.cc \
+  SynTree/DeclarationWithType.cc \
+  SynTree/ObjectDecl.cc \
+  SynTree/FunctionDecl.cc \
+  SynTree/AggregateDecl.cc \
+  SynTree/NamedTypeDecl.cc \
+  SynTree/TypeDecl.cc \
+  SynTree/Initializer.cc \
+  SynTree/TypeSubstitution.cc \
+  SynTree/Attribute.cc \
+  SynTree/DeclReplacer.cc \
+  CompilationState.cc \
+  CodeGen/CodeGenerator.cc \
+  CodeGen/FixMain.cc \
+  CodeGen/GenType.cc \
+  CodeGen/OperatorTable.cc \
+  Common/Assert.cc \
+  Common/Eval.cc \
+  Common/SemanticError.cc \
+  Common/UniqueName.cc \
+  Concurrency/Keywords.cc \
+  ControlStruct/ForExprMutator.cc \
+  ControlStruct/LabelFixer.cc \
+  ControlStruct/LabelGenerator.cc \
+  ControlStruct/MLEMutator.cc \
+  ControlStruct/Mutate.cc \
+  GenPoly/GenPoly.cc \
+  GenPoly/Lvalue.cc \
+  InitTweak/GenInit.cc \
+  InitTweak/InitTweak.cc \
+  Parser/LinkageSpec.cc \
+  ResolvExpr/AdjustExprType.cc \
+  ResolvExpr/Alternative.cc \
+  ResolvExpr/AlternativeFinder.cc \
+  ResolvExpr/ExplodedActual.cc \
+  ResolvExpr/CastCost.cc \
+  ResolvExpr/CommonType.cc \
+  ResolvExpr/ConversionCost.cc \
+  ResolvExpr/CurrentObject.cc \
+  ResolvExpr/FindOpenVars.cc \
+  ResolvExpr/Occurs.cc \
+  ResolvExpr/PolyCost.cc \
+  ResolvExpr/PtrsAssignable.cc \
+  ResolvExpr/PtrsCastable.cc \
+  ResolvExpr/RenameVars.cc \
+  ResolvExpr/Resolver.cc \
+  ResolvExpr/ResolveTypeof.cc \
+  ResolvExpr/TypeEnvironment.cc \
+  ResolvExpr/Unify.cc \
+  SymTab/Autogen.cc \
+  SymTab/FixFunction.cc \
+  SymTab/Indexer.cc \
+  SymTab/Mangler.cc \
+  SymTab/Validate.cc \
+  Tuples/Explode.cc \
+  Tuples/TupleAssignment.cc \
+  Tuples/TupleExpansion.cc \
+  Validate/HandleAttributes.cc
+
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -589,4 +701,248 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+SymTab/$(am__dirstamp):
+	@$(MKDIR_P) SymTab
+	@: > SymTab/$(am__dirstamp)
+SymTab/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) SymTab/$(DEPDIR)
+	@: > SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/Demangle.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/ManglerCommon.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SynTree/$(am__dirstamp):
+	@$(MKDIR_P) SynTree
+	@: > SynTree/$(am__dirstamp)
+SynTree/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) SynTree/$(DEPDIR)
+	@: > SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/Type.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/ReferenceType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/FunctionType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/ReferenceToType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/ZeroOneType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/Constant.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/Expression.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/ApplicationExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/Statement.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/CompoundStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/DeclarationWithType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/FunctionDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/AggregateDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/NamedTypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/TypeSubstitution.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/DeclReplacer.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+CodeGen/$(am__dirstamp):
+	@$(MKDIR_P) CodeGen
+	@: > CodeGen/$(am__dirstamp)
+CodeGen/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) CodeGen/$(DEPDIR)
+	@: > CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/CodeGenerator.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/FixMain.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/OperatorTable.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
+Common/$(am__dirstamp):
+	@$(MKDIR_P) Common
+	@: > Common/$(am__dirstamp)
+Common/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) Common/$(DEPDIR)
+	@: > Common/$(DEPDIR)/$(am__dirstamp)
+Common/Assert.$(OBJEXT): Common/$(am__dirstamp) \
+	Common/$(DEPDIR)/$(am__dirstamp)
+Common/Eval.$(OBJEXT): Common/$(am__dirstamp) \
+	Common/$(DEPDIR)/$(am__dirstamp)
+Common/SemanticError.$(OBJEXT): Common/$(am__dirstamp) \
+	Common/$(DEPDIR)/$(am__dirstamp)
+Common/UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
+	Common/$(DEPDIR)/$(am__dirstamp)
+Concurrency/$(am__dirstamp):
+	@$(MKDIR_P) Concurrency
+	@: > Concurrency/$(am__dirstamp)
+Concurrency/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) Concurrency/$(DEPDIR)
+	@: > Concurrency/$(DEPDIR)/$(am__dirstamp)
+Concurrency/Keywords.$(OBJEXT): Concurrency/$(am__dirstamp) \
+	Concurrency/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/$(am__dirstamp):
+	@$(MKDIR_P) ControlStruct
+	@: > ControlStruct/$(am__dirstamp)
+ControlStruct/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) ControlStruct/$(DEPDIR)
+	@: > ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/ForExprMutator.$(OBJEXT): ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/LabelFixer.$(OBJEXT): ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/LabelGenerator.$(OBJEXT): ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/MLEMutator.$(OBJEXT): ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/Mutate.$(OBJEXT): ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+GenPoly/$(am__dirstamp):
+	@$(MKDIR_P) GenPoly
+	@: > GenPoly/$(am__dirstamp)
+GenPoly/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) GenPoly/$(DEPDIR)
+	@: > GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+InitTweak/$(am__dirstamp):
+	@$(MKDIR_P) InitTweak
+	@: > InitTweak/$(am__dirstamp)
+InitTweak/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) InitTweak/$(DEPDIR)
+	@: > InitTweak/$(DEPDIR)/$(am__dirstamp)
+InitTweak/GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
+	InitTweak/$(DEPDIR)/$(am__dirstamp)
+InitTweak/InitTweak.$(OBJEXT): InitTweak/$(am__dirstamp) \
+	InitTweak/$(DEPDIR)/$(am__dirstamp)
+Parser/$(am__dirstamp):
+	@$(MKDIR_P) Parser
+	@: > Parser/$(am__dirstamp)
+Parser/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) Parser/$(DEPDIR)
+	@: > Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/$(am__dirstamp):
+	@$(MKDIR_P) ResolvExpr
+	@: > ResolvExpr/$(am__dirstamp)
+ResolvExpr/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) ResolvExpr/$(DEPDIR)
+	@: > ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/AdjustExprType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/Alternative.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/AlternativeFinder.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/ExplodedActual.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/CastCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/CommonType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/ConversionCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/CurrentObject.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/FindOpenVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/Occurs.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/PolyCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/PtrsAssignable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/PtrsCastable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/RenameVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/Resolver.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/ResolveTypeof.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/TypeEnvironment.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+SymTab/Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/Validate.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+Tuples/$(am__dirstamp):
+	@$(MKDIR_P) Tuples
+	@: > Tuples/$(am__dirstamp)
+Tuples/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) Tuples/$(DEPDIR)
+	@: > Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/Explode.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/TupleAssignment.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/TupleExpansion.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+Validate/$(am__dirstamp):
+	@$(MKDIR_P) Validate
+	@: > Validate/$(am__dirstamp)
+Validate/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) Validate/$(DEPDIR)
+	@: > Validate/$(DEPDIR)/$(am__dirstamp)
+Validate/HandleAttributes.$(OBJEXT): Validate/$(am__dirstamp) \
+	Validate/$(DEPDIR)/$(am__dirstamp)
+
+libdemangle.a: $(libdemangle_a_OBJECTS) $(libdemangle_a_DEPENDENCIES) $(EXTRA_libdemangle_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libdemangle.a
+	$(AM_V_AR)$(libdemangle_a_AR) libdemangle.a $(libdemangle_a_OBJECTS) $(libdemangle_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libdemangle.a
 install-cfa_cpplibPROGRAMS: $(cfa_cpplib_PROGRAMS)
 	@$(NORMAL_INSTALL)
@@ -631,22 +987,8 @@
 clean-cfa_cpplibPROGRAMS:
 	-test -z "$(cfa_cpplib_PROGRAMS)" || rm -f $(cfa_cpplib_PROGRAMS)
-CodeGen/$(am__dirstamp):
-	@$(MKDIR_P) CodeGen
-	@: > CodeGen/$(am__dirstamp)
-CodeGen/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) CodeGen/$(DEPDIR)
-	@: > CodeGen/$(DEPDIR)/$(am__dirstamp)
-CodeGen/driver_cfa_cpp-Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \
+CodeGen/Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \
 	CodeGen/$(DEPDIR)/$(am__dirstamp)
-CodeGen/driver_cfa_cpp-CodeGenerator.$(OBJEXT):  \
-	CodeGen/$(am__dirstamp) CodeGen/$(DEPDIR)/$(am__dirstamp)
-CodeGen/driver_cfa_cpp-GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \
+CodeGen/FixNames.$(OBJEXT): CodeGen/$(am__dirstamp) \
 	CodeGen/$(DEPDIR)/$(am__dirstamp)
-CodeGen/driver_cfa_cpp-FixNames.$(OBJEXT): CodeGen/$(am__dirstamp) \
-	CodeGen/$(DEPDIR)/$(am__dirstamp)
-CodeGen/driver_cfa_cpp-FixMain.$(OBJEXT): CodeGen/$(am__dirstamp) \
-	CodeGen/$(DEPDIR)/$(am__dirstamp)
-CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT):  \
-	CodeGen/$(am__dirstamp) CodeGen/$(DEPDIR)/$(am__dirstamp)
 CodeTools/$(am__dirstamp):
 	@$(MKDIR_P) CodeTools
@@ -655,299 +997,56 @@
 	@$(MKDIR_P) CodeTools/$(DEPDIR)
 	@: > CodeTools/$(DEPDIR)/$(am__dirstamp)
-CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT):  \
-	CodeTools/$(am__dirstamp) CodeTools/$(DEPDIR)/$(am__dirstamp)
-CodeTools/driver_cfa_cpp-TrackLoc.$(OBJEXT):  \
-	CodeTools/$(am__dirstamp) CodeTools/$(DEPDIR)/$(am__dirstamp)
-Concurrency/$(am__dirstamp):
-	@$(MKDIR_P) Concurrency
-	@: > Concurrency/$(am__dirstamp)
-Concurrency/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) Concurrency/$(DEPDIR)
-	@: > Concurrency/$(DEPDIR)/$(am__dirstamp)
-Concurrency/driver_cfa_cpp-Keywords.$(OBJEXT):  \
-	Concurrency/$(am__dirstamp) \
+CodeTools/DeclStats.$(OBJEXT): CodeTools/$(am__dirstamp) \
+	CodeTools/$(DEPDIR)/$(am__dirstamp)
+CodeTools/TrackLoc.$(OBJEXT): CodeTools/$(am__dirstamp) \
+	CodeTools/$(DEPDIR)/$(am__dirstamp)
+Concurrency/Waitfor.$(OBJEXT): Concurrency/$(am__dirstamp) \
 	Concurrency/$(DEPDIR)/$(am__dirstamp)
-Concurrency/driver_cfa_cpp-Waitfor.$(OBJEXT):  \
-	Concurrency/$(am__dirstamp) \
-	Concurrency/$(DEPDIR)/$(am__dirstamp)
-Common/$(am__dirstamp):
-	@$(MKDIR_P) Common
-	@: > Common/$(am__dirstamp)
-Common/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) Common/$(DEPDIR)
-	@: > Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-SemanticError.$(OBJEXT): Common/$(am__dirstamp) \
+Common/DebugMalloc.$(OBJEXT): Common/$(am__dirstamp) \
 	Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
+Common/Heap.$(OBJEXT): Common/$(am__dirstamp) \
 	Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT): Common/$(am__dirstamp) \
-	Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-Assert.$(OBJEXT): Common/$(am__dirstamp) \
-	Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-Heap.$(OBJEXT): Common/$(am__dirstamp) \
-	Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-Eval.$(OBJEXT): Common/$(am__dirstamp) \
-	Common/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/$(am__dirstamp):
-	@$(MKDIR_P) ControlStruct
-	@: > ControlStruct/$(am__dirstamp)
-ControlStruct/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) ControlStruct/$(DEPDIR)
-	@: > ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT):  \
+ControlStruct/ExceptTranslate.$(OBJEXT):  \
 	ControlStruct/$(am__dirstamp) \
 	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
-	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-MLEMutator.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
-	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
-	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
-	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-ExceptTranslate.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
-	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-GenPoly/$(am__dirstamp):
-	@$(MKDIR_P) GenPoly
-	@: > GenPoly/$(am__dirstamp)
-GenPoly/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) GenPoly/$(DEPDIR)
-	@: > GenPoly/$(DEPDIR)/$(am__dirstamp)
-GenPoly/driver_cfa_cpp-Box.$(OBJEXT): GenPoly/$(am__dirstamp) \
+GenPoly/Box.$(OBJEXT): GenPoly/$(am__dirstamp) \
 	GenPoly/$(DEPDIR)/$(am__dirstamp)
-GenPoly/driver_cfa_cpp-GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \
+GenPoly/ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \
 	GenPoly/$(DEPDIR)/$(am__dirstamp)
-GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \
+GenPoly/Specialize.$(OBJEXT): GenPoly/$(am__dirstamp) \
 	GenPoly/$(DEPDIR)/$(am__dirstamp)
-GenPoly/driver_cfa_cpp-Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \
+GenPoly/FindFunction.$(OBJEXT): GenPoly/$(am__dirstamp) \
 	GenPoly/$(DEPDIR)/$(am__dirstamp)
-GenPoly/driver_cfa_cpp-Specialize.$(OBJEXT): GenPoly/$(am__dirstamp) \
+GenPoly/InstantiateGeneric.$(OBJEXT): GenPoly/$(am__dirstamp) \
 	GenPoly/$(DEPDIR)/$(am__dirstamp)
-GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT):  \
-	GenPoly/$(am__dirstamp) GenPoly/$(DEPDIR)/$(am__dirstamp)
-GenPoly/driver_cfa_cpp-InstantiateGeneric.$(OBJEXT):  \
-	GenPoly/$(am__dirstamp) GenPoly/$(DEPDIR)/$(am__dirstamp)
-InitTweak/$(am__dirstamp):
-	@$(MKDIR_P) InitTweak
-	@: > InitTweak/$(am__dirstamp)
-InitTweak/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) InitTweak/$(DEPDIR)
-	@: > InitTweak/$(DEPDIR)/$(am__dirstamp)
-InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
+InitTweak/FixInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
 	InitTweak/$(DEPDIR)/$(am__dirstamp)
-InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
+InitTweak/FixGlobalInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
 	InitTweak/$(DEPDIR)/$(am__dirstamp)
-InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT):  \
-	InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
-InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT):  \
-	InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
 Parser/parser.hh: Parser/parser.cc
 	@if test ! -f $@; then rm -f Parser/parser.cc; else :; fi
 	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) Parser/parser.cc; else :; fi
-Parser/$(am__dirstamp):
-	@$(MKDIR_P) Parser
-	@: > Parser/$(am__dirstamp)
-Parser/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) Parser/$(DEPDIR)
-	@: > Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-parser.$(OBJEXT): Parser/$(am__dirstamp) \
+Parser/parser.$(OBJEXT): Parser/$(am__dirstamp) \
 	Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-lex.$(OBJEXT): Parser/$(am__dirstamp) \
+Parser/lex.$(OBJEXT): Parser/$(am__dirstamp) \
 	Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-TypedefTable.$(OBJEXT): Parser/$(am__dirstamp) \
+Parser/TypedefTable.$(OBJEXT): Parser/$(am__dirstamp) \
 	Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-ParseNode.$(OBJEXT): Parser/$(am__dirstamp) \
+Parser/ParseNode.$(OBJEXT): Parser/$(am__dirstamp) \
 	Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT):  \
-	Parser/$(am__dirstamp) Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT):  \
-	Parser/$(am__dirstamp) Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-StatementNode.$(OBJEXT): Parser/$(am__dirstamp) \
+Parser/DeclarationNode.$(OBJEXT): Parser/$(am__dirstamp) \
 	Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-InitializerNode.$(OBJEXT):  \
-	Parser/$(am__dirstamp) Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-TypeData.$(OBJEXT): Parser/$(am__dirstamp) \
+Parser/ExpressionNode.$(OBJEXT): Parser/$(am__dirstamp) \
 	Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \
+Parser/StatementNode.$(OBJEXT): Parser/$(am__dirstamp) \
 	Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-parserutility.$(OBJEXT): Parser/$(am__dirstamp) \
+Parser/InitializerNode.$(OBJEXT): Parser/$(am__dirstamp) \
 	Parser/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/$(am__dirstamp):
-	@$(MKDIR_P) ResolvExpr
-	@: > ResolvExpr/$(am__dirstamp)
-ResolvExpr/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) ResolvExpr/$(DEPDIR)
-	@: > ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-PtrsAssignable.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-CommonType.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-ConversionCost.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-CastCost.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-PtrsCastable.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-AdjustExprType.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-AlternativePrinter.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-Resolver.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-ResolveTypeof.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-RenameVars.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-FindOpenVars.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-PolyCost.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-Occurs.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-CurrentObject.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-ResolvExpr/driver_cfa_cpp-ExplodedActual.$(OBJEXT):  \
-	ResolvExpr/$(am__dirstamp) \
-	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
-SymTab/$(am__dirstamp):
-	@$(MKDIR_P) SymTab
-	@: > SymTab/$(am__dirstamp)
-SymTab/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) SymTab/$(DEPDIR)
-	@: > SymTab/$(DEPDIR)/$(am__dirstamp)
-SymTab/driver_cfa_cpp-Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \
-	SymTab/$(DEPDIR)/$(am__dirstamp)
-SymTab/driver_cfa_cpp-Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \
-	SymTab/$(DEPDIR)/$(am__dirstamp)
-SymTab/driver_cfa_cpp-Validate.$(OBJEXT): SymTab/$(am__dirstamp) \
-	SymTab/$(DEPDIR)/$(am__dirstamp)
-SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \
-	SymTab/$(DEPDIR)/$(am__dirstamp)
-SymTab/driver_cfa_cpp-Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \
-	SymTab/$(DEPDIR)/$(am__dirstamp)
-SynTree/$(am__dirstamp):
-	@$(MKDIR_P) SynTree
-	@: > SynTree/$(am__dirstamp)
-SynTree/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) SynTree/$(DEPDIR)
-	@: > SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-Type.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-ReferenceType.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-FunctionType.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-ReferenceToType.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-ZeroOneType.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-Constant.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-Expression.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-ApplicationExpr.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-Statement.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-CompoundStmt.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-DeclarationWithType.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-FunctionDecl.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-AggregateDecl.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-NamedTypeDecl.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \
-	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-DeclReplacer.$(OBJEXT):  \
-	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
-Tuples/$(am__dirstamp):
-	@$(MKDIR_P) Tuples
-	@: > Tuples/$(am__dirstamp)
-Tuples/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) Tuples/$(DEPDIR)
-	@: > Tuples/$(DEPDIR)/$(am__dirstamp)
-Tuples/driver_cfa_cpp-TupleAssignment.$(OBJEXT):  \
-	Tuples/$(am__dirstamp) Tuples/$(DEPDIR)/$(am__dirstamp)
-Tuples/driver_cfa_cpp-TupleExpansion.$(OBJEXT):  \
-	Tuples/$(am__dirstamp) Tuples/$(DEPDIR)/$(am__dirstamp)
-Tuples/driver_cfa_cpp-Explode.$(OBJEXT): Tuples/$(am__dirstamp) \
-	Tuples/$(DEPDIR)/$(am__dirstamp)
-Validate/$(am__dirstamp):
-	@$(MKDIR_P) Validate
-	@: > Validate/$(am__dirstamp)
-Validate/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) Validate/$(DEPDIR)
-	@: > Validate/$(DEPDIR)/$(am__dirstamp)
-Validate/driver_cfa_cpp-HandleAttributes.$(OBJEXT):  \
-	Validate/$(am__dirstamp) Validate/$(DEPDIR)/$(am__dirstamp)
+Parser/TypeData.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/parserutility.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/AlternativePrinter.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
 Virtual/$(am__dirstamp):
 	@$(MKDIR_P) Virtual
@@ -956,13 +1055,19 @@
 	@$(MKDIR_P) Virtual/$(DEPDIR)
 	@: > Virtual/$(DEPDIR)/$(am__dirstamp)
-Virtual/driver_cfa_cpp-ExpandCasts.$(OBJEXT): Virtual/$(am__dirstamp) \
+Virtual/ExpandCasts.$(OBJEXT): Virtual/$(am__dirstamp) \
 	Virtual/$(DEPDIR)/$(am__dirstamp)
-driver/$(am__dirstamp):
-	@$(MKDIR_P) driver
-	@: > driver/$(am__dirstamp)
-
-driver/cfa-cpp$(EXEEXT): $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_DEPENDENCIES) $(EXTRA_driver_cfa_cpp_DEPENDENCIES) driver/$(am__dirstamp)
-	@rm -f driver/cfa-cpp$(EXEEXT)
-	$(AM_V_CXXLD)$(driver_cfa_cpp_LINK) $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_LDADD) $(LIBS)
+../driver/$(am__dirstamp):
+	@$(MKDIR_P) ../driver
+	@: > ../driver/$(am__dirstamp)
+
+../driver/cfa-cpp$(EXEEXT): $(___driver_cfa_cpp_OBJECTS) $(___driver_cfa_cpp_DEPENDENCIES) $(EXTRA____driver_cfa_cpp_DEPENDENCIES) ../driver/$(am__dirstamp)
+	@rm -f ../driver/cfa-cpp$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(___driver_cfa_cpp_OBJECTS) $(___driver_cfa_cpp_LDADD) $(LIBS)
+SymTab/demangler.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+
+demangler$(EXEEXT): $(demangler_OBJECTS) $(demangler_DEPENDENCIES) $(EXTRA_demangler_DEPENDENCIES) 
+	@rm -f demangler$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(demangler_OBJECTS) $(demangler_LDADD) $(LIBS)
 
 mostlyclean-compile:
@@ -986,114 +1091,117 @@
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_cfa_cpp-CompilationState.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_cfa_cpp-main.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-FixMain.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@CodeTools/$(DEPDIR)/driver_cfa_cpp-TrackLoc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Eval.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Heap.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Concurrency/$(DEPDIR)/driver_cfa_cpp-Waitfor.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-ExceptTranslate.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-lex.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-parser.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-parserutility.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CurrentObject.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ExplodedActual.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ZeroOneType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-Explode.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-TupleExpansion.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Validate/$(DEPDIR)/driver_cfa_cpp-HandleAttributes.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CompilationState.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MakeLibCfa.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/CodeGenerator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/FixMain.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/FixNames.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/GenType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/Generate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/OperatorTable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeTools/$(DEPDIR)/DeclStats.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeTools/$(DEPDIR)/TrackLoc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/Assert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/DebugMalloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/Eval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/Heap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/SemanticError.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/UniqueName.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Concurrency/$(DEPDIR)/Keywords.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Concurrency/$(DEPDIR)/Waitfor.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/ExceptTranslate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/ForExprMutator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/LabelFixer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/LabelGenerator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/MLEMutator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/Mutate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/Box.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/FindFunction.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/GenPoly.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/InstantiateGeneric.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/Lvalue.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/ScrubTyVars.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/Specialize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/FixGlobalInit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/FixInit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/GenInit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/InitTweak.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/DeclarationNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/ExpressionNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/InitializerNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/LinkageSpec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/ParseNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/StatementNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/TypeData.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/TypedefTable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/lex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/parser.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/parserutility.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/AdjustExprType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/Alternative.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/AlternativeFinder.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/AlternativePrinter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/CastCost.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/CommonType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/ConversionCost.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/CurrentObject.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/ExplodedActual.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/FindOpenVars.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/Occurs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/PolyCost.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/PtrsAssignable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/PtrsCastable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/RenameVars.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/ResolveTypeof.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/Resolver.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/TypeEnvironment.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/Unify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Autogen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Demangle.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/FixFunction.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Indexer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Mangler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/ManglerCommon.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Validate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/demangler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/AddressExpr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/AggregateDecl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/ApplicationExpr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/ArrayType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/AttrType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/Attribute.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/BasicType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/CommaExpr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/CompoundStmt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/Constant.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/DeclReplacer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/DeclStmt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/Declaration.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/DeclarationWithType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/Expression.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/FunctionDecl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/FunctionType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/Initializer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/NamedTypeDecl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/ObjectDecl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/PointerType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/ReferenceToType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/ReferenceType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/Statement.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/TupleExpr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/TupleType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/Type.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/TypeDecl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/TypeExpr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/TypeSubstitution.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/TypeofType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/VarArgsType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/VoidType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/ZeroOneType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/Explode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/TupleAssignment.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/TupleExpansion.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Validate/$(DEPDIR)/HandleAttributes.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Virtual/$(DEPDIR)/ExpandCasts.Po@am__quote@
 
 .cc.o:
@@ -1112,1544 +1220,4 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-driver_cfa_cpp-main.o: main.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-main.o -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-main.Tpo -c -o driver_cfa_cpp-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-main.Tpo $(DEPDIR)/driver_cfa_cpp-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cc' object='driver_cfa_cpp-main.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
-
-driver_cfa_cpp-main.obj: main.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-main.obj -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-main.Tpo -c -o driver_cfa_cpp-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-main.Tpo $(DEPDIR)/driver_cfa_cpp-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cc' object='driver_cfa_cpp-main.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi`
-
-driver_cfa_cpp-MakeLibCfa.o: MakeLibCfa.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-MakeLibCfa.o -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo -c -o driver_cfa_cpp-MakeLibCfa.o `test -f 'MakeLibCfa.cc' || echo '$(srcdir)/'`MakeLibCfa.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='MakeLibCfa.cc' object='driver_cfa_cpp-MakeLibCfa.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-MakeLibCfa.o `test -f 'MakeLibCfa.cc' || echo '$(srcdir)/'`MakeLibCfa.cc
-
-driver_cfa_cpp-MakeLibCfa.obj: MakeLibCfa.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-MakeLibCfa.obj -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo -c -o driver_cfa_cpp-MakeLibCfa.obj `if test -f 'MakeLibCfa.cc'; then $(CYGPATH_W) 'MakeLibCfa.cc'; else $(CYGPATH_W) '$(srcdir)/MakeLibCfa.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='MakeLibCfa.cc' object='driver_cfa_cpp-MakeLibCfa.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-MakeLibCfa.obj `if test -f 'MakeLibCfa.cc'; then $(CYGPATH_W) 'MakeLibCfa.cc'; else $(CYGPATH_W) '$(srcdir)/MakeLibCfa.cc'; fi`
-
-driver_cfa_cpp-CompilationState.o: CompilationState.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-CompilationState.o -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-CompilationState.Tpo -c -o driver_cfa_cpp-CompilationState.o `test -f 'CompilationState.cc' || echo '$(srcdir)/'`CompilationState.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-CompilationState.Tpo $(DEPDIR)/driver_cfa_cpp-CompilationState.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CompilationState.cc' object='driver_cfa_cpp-CompilationState.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-CompilationState.o `test -f 'CompilationState.cc' || echo '$(srcdir)/'`CompilationState.cc
-
-driver_cfa_cpp-CompilationState.obj: CompilationState.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-CompilationState.obj -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-CompilationState.Tpo -c -o driver_cfa_cpp-CompilationState.obj `if test -f 'CompilationState.cc'; then $(CYGPATH_W) 'CompilationState.cc'; else $(CYGPATH_W) '$(srcdir)/CompilationState.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-CompilationState.Tpo $(DEPDIR)/driver_cfa_cpp-CompilationState.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CompilationState.cc' object='driver_cfa_cpp-CompilationState.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-CompilationState.obj `if test -f 'CompilationState.cc'; then $(CYGPATH_W) 'CompilationState.cc'; else $(CYGPATH_W) '$(srcdir)/CompilationState.cc'; fi`
-
-CodeGen/driver_cfa_cpp-Generate.o: CodeGen/Generate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-Generate.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo -c -o CodeGen/driver_cfa_cpp-Generate.o `test -f 'CodeGen/Generate.cc' || echo '$(srcdir)/'`CodeGen/Generate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/Generate.cc' object='CodeGen/driver_cfa_cpp-Generate.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-Generate.o `test -f 'CodeGen/Generate.cc' || echo '$(srcdir)/'`CodeGen/Generate.cc
-
-CodeGen/driver_cfa_cpp-Generate.obj: CodeGen/Generate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-Generate.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo -c -o CodeGen/driver_cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/Generate.cc' object='CodeGen/driver_cfa_cpp-Generate.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
-
-CodeGen/driver_cfa_cpp-CodeGenerator.o: CodeGen/CodeGenerator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-CodeGenerator.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/driver_cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/CodeGenerator.cc' object='CodeGen/driver_cfa_cpp-CodeGenerator.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
-
-CodeGen/driver_cfa_cpp-CodeGenerator.obj: CodeGen/CodeGenerator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-CodeGenerator.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/driver_cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/CodeGenerator.cc' object='CodeGen/driver_cfa_cpp-CodeGenerator.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
-
-CodeGen/driver_cfa_cpp-GenType.o: CodeGen/GenType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-GenType.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo -c -o CodeGen/driver_cfa_cpp-GenType.o `test -f 'CodeGen/GenType.cc' || echo '$(srcdir)/'`CodeGen/GenType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/GenType.cc' object='CodeGen/driver_cfa_cpp-GenType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-GenType.o `test -f 'CodeGen/GenType.cc' || echo '$(srcdir)/'`CodeGen/GenType.cc
-
-CodeGen/driver_cfa_cpp-GenType.obj: CodeGen/GenType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-GenType.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo -c -o CodeGen/driver_cfa_cpp-GenType.obj `if test -f 'CodeGen/GenType.cc'; then $(CYGPATH_W) 'CodeGen/GenType.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/GenType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/GenType.cc' object='CodeGen/driver_cfa_cpp-GenType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-GenType.obj `if test -f 'CodeGen/GenType.cc'; then $(CYGPATH_W) 'CodeGen/GenType.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/GenType.cc'; fi`
-
-CodeGen/driver_cfa_cpp-FixNames.o: CodeGen/FixNames.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-FixNames.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo -c -o CodeGen/driver_cfa_cpp-FixNames.o `test -f 'CodeGen/FixNames.cc' || echo '$(srcdir)/'`CodeGen/FixNames.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/FixNames.cc' object='CodeGen/driver_cfa_cpp-FixNames.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-FixNames.o `test -f 'CodeGen/FixNames.cc' || echo '$(srcdir)/'`CodeGen/FixNames.cc
-
-CodeGen/driver_cfa_cpp-FixNames.obj: CodeGen/FixNames.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-FixNames.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo -c -o CodeGen/driver_cfa_cpp-FixNames.obj `if test -f 'CodeGen/FixNames.cc'; then $(CYGPATH_W) 'CodeGen/FixNames.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixNames.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/FixNames.cc' object='CodeGen/driver_cfa_cpp-FixNames.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-FixNames.obj `if test -f 'CodeGen/FixNames.cc'; then $(CYGPATH_W) 'CodeGen/FixNames.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixNames.cc'; fi`
-
-CodeGen/driver_cfa_cpp-FixMain.o: CodeGen/FixMain.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-FixMain.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-FixMain.Tpo -c -o CodeGen/driver_cfa_cpp-FixMain.o `test -f 'CodeGen/FixMain.cc' || echo '$(srcdir)/'`CodeGen/FixMain.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-FixMain.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-FixMain.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/FixMain.cc' object='CodeGen/driver_cfa_cpp-FixMain.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-FixMain.o `test -f 'CodeGen/FixMain.cc' || echo '$(srcdir)/'`CodeGen/FixMain.cc
-
-CodeGen/driver_cfa_cpp-FixMain.obj: CodeGen/FixMain.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-FixMain.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-FixMain.Tpo -c -o CodeGen/driver_cfa_cpp-FixMain.obj `if test -f 'CodeGen/FixMain.cc'; then $(CYGPATH_W) 'CodeGen/FixMain.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixMain.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-FixMain.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-FixMain.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/FixMain.cc' object='CodeGen/driver_cfa_cpp-FixMain.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-FixMain.obj `if test -f 'CodeGen/FixMain.cc'; then $(CYGPATH_W) 'CodeGen/FixMain.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixMain.cc'; fi`
-
-CodeGen/driver_cfa_cpp-OperatorTable.o: CodeGen/OperatorTable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-OperatorTable.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo -c -o CodeGen/driver_cfa_cpp-OperatorTable.o `test -f 'CodeGen/OperatorTable.cc' || echo '$(srcdir)/'`CodeGen/OperatorTable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/OperatorTable.cc' object='CodeGen/driver_cfa_cpp-OperatorTable.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-OperatorTable.o `test -f 'CodeGen/OperatorTable.cc' || echo '$(srcdir)/'`CodeGen/OperatorTable.cc
-
-CodeGen/driver_cfa_cpp-OperatorTable.obj: CodeGen/OperatorTable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-OperatorTable.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo -c -o CodeGen/driver_cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeGen/OperatorTable.cc' object='CodeGen/driver_cfa_cpp-OperatorTable.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
-
-CodeTools/driver_cfa_cpp-DeclStats.o: CodeTools/DeclStats.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeTools/driver_cfa_cpp-DeclStats.o -MD -MP -MF CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo -c -o CodeTools/driver_cfa_cpp-DeclStats.o `test -f 'CodeTools/DeclStats.cc' || echo '$(srcdir)/'`CodeTools/DeclStats.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeTools/DeclStats.cc' object='CodeTools/driver_cfa_cpp-DeclStats.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-DeclStats.o `test -f 'CodeTools/DeclStats.cc' || echo '$(srcdir)/'`CodeTools/DeclStats.cc
-
-CodeTools/driver_cfa_cpp-DeclStats.obj: CodeTools/DeclStats.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeTools/driver_cfa_cpp-DeclStats.obj -MD -MP -MF CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo -c -o CodeTools/driver_cfa_cpp-DeclStats.obj `if test -f 'CodeTools/DeclStats.cc'; then $(CYGPATH_W) 'CodeTools/DeclStats.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/DeclStats.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeTools/DeclStats.cc' object='CodeTools/driver_cfa_cpp-DeclStats.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-DeclStats.obj `if test -f 'CodeTools/DeclStats.cc'; then $(CYGPATH_W) 'CodeTools/DeclStats.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/DeclStats.cc'; fi`
-
-CodeTools/driver_cfa_cpp-TrackLoc.o: CodeTools/TrackLoc.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeTools/driver_cfa_cpp-TrackLoc.o -MD -MP -MF CodeTools/$(DEPDIR)/driver_cfa_cpp-TrackLoc.Tpo -c -o CodeTools/driver_cfa_cpp-TrackLoc.o `test -f 'CodeTools/TrackLoc.cc' || echo '$(srcdir)/'`CodeTools/TrackLoc.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeTools/$(DEPDIR)/driver_cfa_cpp-TrackLoc.Tpo CodeTools/$(DEPDIR)/driver_cfa_cpp-TrackLoc.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeTools/TrackLoc.cc' object='CodeTools/driver_cfa_cpp-TrackLoc.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-TrackLoc.o `test -f 'CodeTools/TrackLoc.cc' || echo '$(srcdir)/'`CodeTools/TrackLoc.cc
-
-CodeTools/driver_cfa_cpp-TrackLoc.obj: CodeTools/TrackLoc.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeTools/driver_cfa_cpp-TrackLoc.obj -MD -MP -MF CodeTools/$(DEPDIR)/driver_cfa_cpp-TrackLoc.Tpo -c -o CodeTools/driver_cfa_cpp-TrackLoc.obj `if test -f 'CodeTools/TrackLoc.cc'; then $(CYGPATH_W) 'CodeTools/TrackLoc.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/TrackLoc.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) CodeTools/$(DEPDIR)/driver_cfa_cpp-TrackLoc.Tpo CodeTools/$(DEPDIR)/driver_cfa_cpp-TrackLoc.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CodeTools/TrackLoc.cc' object='CodeTools/driver_cfa_cpp-TrackLoc.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-TrackLoc.obj `if test -f 'CodeTools/TrackLoc.cc'; then $(CYGPATH_W) 'CodeTools/TrackLoc.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/TrackLoc.cc'; fi`
-
-Concurrency/driver_cfa_cpp-Keywords.o: Concurrency/Keywords.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Concurrency/driver_cfa_cpp-Keywords.o -MD -MP -MF Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Tpo -c -o Concurrency/driver_cfa_cpp-Keywords.o `test -f 'Concurrency/Keywords.cc' || echo '$(srcdir)/'`Concurrency/Keywords.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Tpo Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Concurrency/Keywords.cc' object='Concurrency/driver_cfa_cpp-Keywords.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Concurrency/driver_cfa_cpp-Keywords.o `test -f 'Concurrency/Keywords.cc' || echo '$(srcdir)/'`Concurrency/Keywords.cc
-
-Concurrency/driver_cfa_cpp-Keywords.obj: Concurrency/Keywords.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Concurrency/driver_cfa_cpp-Keywords.obj -MD -MP -MF Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Tpo -c -o Concurrency/driver_cfa_cpp-Keywords.obj `if test -f 'Concurrency/Keywords.cc'; then $(CYGPATH_W) 'Concurrency/Keywords.cc'; else $(CYGPATH_W) '$(srcdir)/Concurrency/Keywords.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Tpo Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Concurrency/Keywords.cc' object='Concurrency/driver_cfa_cpp-Keywords.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Concurrency/driver_cfa_cpp-Keywords.obj `if test -f 'Concurrency/Keywords.cc'; then $(CYGPATH_W) 'Concurrency/Keywords.cc'; else $(CYGPATH_W) '$(srcdir)/Concurrency/Keywords.cc'; fi`
-
-Concurrency/driver_cfa_cpp-Waitfor.o: Concurrency/Waitfor.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Concurrency/driver_cfa_cpp-Waitfor.o -MD -MP -MF Concurrency/$(DEPDIR)/driver_cfa_cpp-Waitfor.Tpo -c -o Concurrency/driver_cfa_cpp-Waitfor.o `test -f 'Concurrency/Waitfor.cc' || echo '$(srcdir)/'`Concurrency/Waitfor.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Concurrency/$(DEPDIR)/driver_cfa_cpp-Waitfor.Tpo Concurrency/$(DEPDIR)/driver_cfa_cpp-Waitfor.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Concurrency/Waitfor.cc' object='Concurrency/driver_cfa_cpp-Waitfor.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Concurrency/driver_cfa_cpp-Waitfor.o `test -f 'Concurrency/Waitfor.cc' || echo '$(srcdir)/'`Concurrency/Waitfor.cc
-
-Concurrency/driver_cfa_cpp-Waitfor.obj: Concurrency/Waitfor.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Concurrency/driver_cfa_cpp-Waitfor.obj -MD -MP -MF Concurrency/$(DEPDIR)/driver_cfa_cpp-Waitfor.Tpo -c -o Concurrency/driver_cfa_cpp-Waitfor.obj `if test -f 'Concurrency/Waitfor.cc'; then $(CYGPATH_W) 'Concurrency/Waitfor.cc'; else $(CYGPATH_W) '$(srcdir)/Concurrency/Waitfor.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Concurrency/$(DEPDIR)/driver_cfa_cpp-Waitfor.Tpo Concurrency/$(DEPDIR)/driver_cfa_cpp-Waitfor.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Concurrency/Waitfor.cc' object='Concurrency/driver_cfa_cpp-Waitfor.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Concurrency/driver_cfa_cpp-Waitfor.obj `if test -f 'Concurrency/Waitfor.cc'; then $(CYGPATH_W) 'Concurrency/Waitfor.cc'; else $(CYGPATH_W) '$(srcdir)/Concurrency/Waitfor.cc'; fi`
-
-Common/driver_cfa_cpp-SemanticError.o: Common/SemanticError.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-SemanticError.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo -c -o Common/driver_cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/SemanticError.cc' object='Common/driver_cfa_cpp-SemanticError.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
-
-Common/driver_cfa_cpp-SemanticError.obj: Common/SemanticError.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-SemanticError.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo -c -o Common/driver_cfa_cpp-SemanticError.obj `if test -f 'Common/SemanticError.cc'; then $(CYGPATH_W) 'Common/SemanticError.cc'; else $(CYGPATH_W) '$(srcdir)/Common/SemanticError.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/SemanticError.cc' object='Common/driver_cfa_cpp-SemanticError.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-SemanticError.obj `if test -f 'Common/SemanticError.cc'; then $(CYGPATH_W) 'Common/SemanticError.cc'; else $(CYGPATH_W) '$(srcdir)/Common/SemanticError.cc'; fi`
-
-Common/driver_cfa_cpp-UniqueName.o: Common/UniqueName.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-UniqueName.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo -c -o Common/driver_cfa_cpp-UniqueName.o `test -f 'Common/UniqueName.cc' || echo '$(srcdir)/'`Common/UniqueName.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/UniqueName.cc' object='Common/driver_cfa_cpp-UniqueName.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.o `test -f 'Common/UniqueName.cc' || echo '$(srcdir)/'`Common/UniqueName.cc
-
-Common/driver_cfa_cpp-UniqueName.obj: Common/UniqueName.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-UniqueName.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/UniqueName.cc' object='Common/driver_cfa_cpp-UniqueName.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
-
-Common/driver_cfa_cpp-DebugMalloc.o: Common/DebugMalloc.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-DebugMalloc.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo -c -o Common/driver_cfa_cpp-DebugMalloc.o `test -f 'Common/DebugMalloc.cc' || echo '$(srcdir)/'`Common/DebugMalloc.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/DebugMalloc.cc' object='Common/driver_cfa_cpp-DebugMalloc.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-DebugMalloc.o `test -f 'Common/DebugMalloc.cc' || echo '$(srcdir)/'`Common/DebugMalloc.cc
-
-Common/driver_cfa_cpp-DebugMalloc.obj: Common/DebugMalloc.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-DebugMalloc.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo -c -o Common/driver_cfa_cpp-DebugMalloc.obj `if test -f 'Common/DebugMalloc.cc'; then $(CYGPATH_W) 'Common/DebugMalloc.cc'; else $(CYGPATH_W) '$(srcdir)/Common/DebugMalloc.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/DebugMalloc.cc' object='Common/driver_cfa_cpp-DebugMalloc.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-DebugMalloc.obj `if test -f 'Common/DebugMalloc.cc'; then $(CYGPATH_W) 'Common/DebugMalloc.cc'; else $(CYGPATH_W) '$(srcdir)/Common/DebugMalloc.cc'; fi`
-
-Common/driver_cfa_cpp-Assert.o: Common/Assert.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Assert.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo -c -o Common/driver_cfa_cpp-Assert.o `test -f 'Common/Assert.cc' || echo '$(srcdir)/'`Common/Assert.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/Assert.cc' object='Common/driver_cfa_cpp-Assert.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Assert.o `test -f 'Common/Assert.cc' || echo '$(srcdir)/'`Common/Assert.cc
-
-Common/driver_cfa_cpp-Assert.obj: Common/Assert.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Assert.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo -c -o Common/driver_cfa_cpp-Assert.obj `if test -f 'Common/Assert.cc'; then $(CYGPATH_W) 'Common/Assert.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Assert.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/Assert.cc' object='Common/driver_cfa_cpp-Assert.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Assert.obj `if test -f 'Common/Assert.cc'; then $(CYGPATH_W) 'Common/Assert.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Assert.cc'; fi`
-
-Common/driver_cfa_cpp-Heap.o: Common/Heap.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Heap.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Heap.Tpo -c -o Common/driver_cfa_cpp-Heap.o `test -f 'Common/Heap.cc' || echo '$(srcdir)/'`Common/Heap.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Heap.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Heap.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/Heap.cc' object='Common/driver_cfa_cpp-Heap.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Heap.o `test -f 'Common/Heap.cc' || echo '$(srcdir)/'`Common/Heap.cc
-
-Common/driver_cfa_cpp-Heap.obj: Common/Heap.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Heap.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Heap.Tpo -c -o Common/driver_cfa_cpp-Heap.obj `if test -f 'Common/Heap.cc'; then $(CYGPATH_W) 'Common/Heap.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Heap.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Heap.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Heap.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/Heap.cc' object='Common/driver_cfa_cpp-Heap.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Heap.obj `if test -f 'Common/Heap.cc'; then $(CYGPATH_W) 'Common/Heap.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Heap.cc'; fi`
-
-Common/driver_cfa_cpp-Eval.o: Common/Eval.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Eval.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Eval.Tpo -c -o Common/driver_cfa_cpp-Eval.o `test -f 'Common/Eval.cc' || echo '$(srcdir)/'`Common/Eval.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Eval.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Eval.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/Eval.cc' object='Common/driver_cfa_cpp-Eval.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Eval.o `test -f 'Common/Eval.cc' || echo '$(srcdir)/'`Common/Eval.cc
-
-Common/driver_cfa_cpp-Eval.obj: Common/Eval.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Eval.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Eval.Tpo -c -o Common/driver_cfa_cpp-Eval.obj `if test -f 'Common/Eval.cc'; then $(CYGPATH_W) 'Common/Eval.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Eval.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Eval.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Eval.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/Eval.cc' object='Common/driver_cfa_cpp-Eval.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Eval.obj `if test -f 'Common/Eval.cc'; then $(CYGPATH_W) 'Common/Eval.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Eval.cc'; fi`
-
-ControlStruct/driver_cfa_cpp-LabelGenerator.o: ControlStruct/LabelGenerator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelGenerator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/LabelGenerator.cc' object='ControlStruct/driver_cfa_cpp-LabelGenerator.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
-
-ControlStruct/driver_cfa_cpp-LabelGenerator.obj: ControlStruct/LabelGenerator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelGenerator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.obj `if test -f 'ControlStruct/LabelGenerator.cc'; then $(CYGPATH_W) 'ControlStruct/LabelGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelGenerator.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/LabelGenerator.cc' object='ControlStruct/driver_cfa_cpp-LabelGenerator.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.obj `if test -f 'ControlStruct/LabelGenerator.cc'; then $(CYGPATH_W) 'ControlStruct/LabelGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelGenerator.cc'; fi`
-
-ControlStruct/driver_cfa_cpp-LabelFixer.o: ControlStruct/LabelFixer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelFixer.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelFixer.o `test -f 'ControlStruct/LabelFixer.cc' || echo '$(srcdir)/'`ControlStruct/LabelFixer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/LabelFixer.cc' object='ControlStruct/driver_cfa_cpp-LabelFixer.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelFixer.o `test -f 'ControlStruct/LabelFixer.cc' || echo '$(srcdir)/'`ControlStruct/LabelFixer.cc
-
-ControlStruct/driver_cfa_cpp-LabelFixer.obj: ControlStruct/LabelFixer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelFixer.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelFixer.obj `if test -f 'ControlStruct/LabelFixer.cc'; then $(CYGPATH_W) 'ControlStruct/LabelFixer.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelFixer.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/LabelFixer.cc' object='ControlStruct/driver_cfa_cpp-LabelFixer.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelFixer.obj `if test -f 'ControlStruct/LabelFixer.cc'; then $(CYGPATH_W) 'ControlStruct/LabelFixer.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelFixer.cc'; fi`
-
-ControlStruct/driver_cfa_cpp-MLEMutator.o: ControlStruct/MLEMutator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-MLEMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-MLEMutator.o `test -f 'ControlStruct/MLEMutator.cc' || echo '$(srcdir)/'`ControlStruct/MLEMutator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/MLEMutator.cc' object='ControlStruct/driver_cfa_cpp-MLEMutator.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-MLEMutator.o `test -f 'ControlStruct/MLEMutator.cc' || echo '$(srcdir)/'`ControlStruct/MLEMutator.cc
-
-ControlStruct/driver_cfa_cpp-MLEMutator.obj: ControlStruct/MLEMutator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-MLEMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-MLEMutator.obj `if test -f 'ControlStruct/MLEMutator.cc'; then $(CYGPATH_W) 'ControlStruct/MLEMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/MLEMutator.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/MLEMutator.cc' object='ControlStruct/driver_cfa_cpp-MLEMutator.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-MLEMutator.obj `if test -f 'ControlStruct/MLEMutator.cc'; then $(CYGPATH_W) 'ControlStruct/MLEMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/MLEMutator.cc'; fi`
-
-ControlStruct/driver_cfa_cpp-Mutate.o: ControlStruct/Mutate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-Mutate.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo -c -o ControlStruct/driver_cfa_cpp-Mutate.o `test -f 'ControlStruct/Mutate.cc' || echo '$(srcdir)/'`ControlStruct/Mutate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/Mutate.cc' object='ControlStruct/driver_cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-Mutate.o `test -f 'ControlStruct/Mutate.cc' || echo '$(srcdir)/'`ControlStruct/Mutate.cc
-
-ControlStruct/driver_cfa_cpp-Mutate.obj: ControlStruct/Mutate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-Mutate.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo -c -o ControlStruct/driver_cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/Mutate.cc' object='ControlStruct/driver_cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
-
-ControlStruct/driver_cfa_cpp-ForExprMutator.o: ControlStruct/ForExprMutator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ForExprMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/ForExprMutator.cc' object='ControlStruct/driver_cfa_cpp-ForExprMutator.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
-
-ControlStruct/driver_cfa_cpp-ForExprMutator.obj: ControlStruct/ForExprMutator.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ForExprMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.obj `if test -f 'ControlStruct/ForExprMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ForExprMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ForExprMutator.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/ForExprMutator.cc' object='ControlStruct/driver_cfa_cpp-ForExprMutator.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.obj `if test -f 'ControlStruct/ForExprMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ForExprMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ForExprMutator.cc'; fi`
-
-ControlStruct/driver_cfa_cpp-ExceptTranslate.o: ControlStruct/ExceptTranslate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ExceptTranslate.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ExceptTranslate.Tpo -c -o ControlStruct/driver_cfa_cpp-ExceptTranslate.o `test -f 'ControlStruct/ExceptTranslate.cc' || echo '$(srcdir)/'`ControlStruct/ExceptTranslate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ExceptTranslate.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ExceptTranslate.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/ExceptTranslate.cc' object='ControlStruct/driver_cfa_cpp-ExceptTranslate.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ExceptTranslate.o `test -f 'ControlStruct/ExceptTranslate.cc' || echo '$(srcdir)/'`ControlStruct/ExceptTranslate.cc
-
-ControlStruct/driver_cfa_cpp-ExceptTranslate.obj: ControlStruct/ExceptTranslate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ExceptTranslate.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ExceptTranslate.Tpo -c -o ControlStruct/driver_cfa_cpp-ExceptTranslate.obj `if test -f 'ControlStruct/ExceptTranslate.cc'; then $(CYGPATH_W) 'ControlStruct/ExceptTranslate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ExceptTranslate.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ExceptTranslate.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ExceptTranslate.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ControlStruct/ExceptTranslate.cc' object='ControlStruct/driver_cfa_cpp-ExceptTranslate.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ExceptTranslate.obj `if test -f 'ControlStruct/ExceptTranslate.cc'; then $(CYGPATH_W) 'ControlStruct/ExceptTranslate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ExceptTranslate.cc'; fi`
-
-GenPoly/driver_cfa_cpp-Box.o: GenPoly/Box.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Box.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo -c -o GenPoly/driver_cfa_cpp-Box.o `test -f 'GenPoly/Box.cc' || echo '$(srcdir)/'`GenPoly/Box.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/Box.cc' object='GenPoly/driver_cfa_cpp-Box.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Box.o `test -f 'GenPoly/Box.cc' || echo '$(srcdir)/'`GenPoly/Box.cc
-
-GenPoly/driver_cfa_cpp-Box.obj: GenPoly/Box.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Box.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo -c -o GenPoly/driver_cfa_cpp-Box.obj `if test -f 'GenPoly/Box.cc'; then $(CYGPATH_W) 'GenPoly/Box.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Box.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/Box.cc' object='GenPoly/driver_cfa_cpp-Box.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Box.obj `if test -f 'GenPoly/Box.cc'; then $(CYGPATH_W) 'GenPoly/Box.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Box.cc'; fi`
-
-GenPoly/driver_cfa_cpp-GenPoly.o: GenPoly/GenPoly.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-GenPoly.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo -c -o GenPoly/driver_cfa_cpp-GenPoly.o `test -f 'GenPoly/GenPoly.cc' || echo '$(srcdir)/'`GenPoly/GenPoly.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/GenPoly.cc' object='GenPoly/driver_cfa_cpp-GenPoly.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-GenPoly.o `test -f 'GenPoly/GenPoly.cc' || echo '$(srcdir)/'`GenPoly/GenPoly.cc
-
-GenPoly/driver_cfa_cpp-GenPoly.obj: GenPoly/GenPoly.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-GenPoly.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo -c -o GenPoly/driver_cfa_cpp-GenPoly.obj `if test -f 'GenPoly/GenPoly.cc'; then $(CYGPATH_W) 'GenPoly/GenPoly.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/GenPoly.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/GenPoly.cc' object='GenPoly/driver_cfa_cpp-GenPoly.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-GenPoly.obj `if test -f 'GenPoly/GenPoly.cc'; then $(CYGPATH_W) 'GenPoly/GenPoly.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/GenPoly.cc'; fi`
-
-GenPoly/driver_cfa_cpp-ScrubTyVars.o: GenPoly/ScrubTyVars.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-ScrubTyVars.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.o `test -f 'GenPoly/ScrubTyVars.cc' || echo '$(srcdir)/'`GenPoly/ScrubTyVars.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/ScrubTyVars.cc' object='GenPoly/driver_cfa_cpp-ScrubTyVars.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.o `test -f 'GenPoly/ScrubTyVars.cc' || echo '$(srcdir)/'`GenPoly/ScrubTyVars.cc
-
-GenPoly/driver_cfa_cpp-ScrubTyVars.obj: GenPoly/ScrubTyVars.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-ScrubTyVars.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.obj `if test -f 'GenPoly/ScrubTyVars.cc'; then $(CYGPATH_W) 'GenPoly/ScrubTyVars.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/ScrubTyVars.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/ScrubTyVars.cc' object='GenPoly/driver_cfa_cpp-ScrubTyVars.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.obj `if test -f 'GenPoly/ScrubTyVars.cc'; then $(CYGPATH_W) 'GenPoly/ScrubTyVars.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/ScrubTyVars.cc'; fi`
-
-GenPoly/driver_cfa_cpp-Lvalue.o: GenPoly/Lvalue.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Lvalue.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo -c -o GenPoly/driver_cfa_cpp-Lvalue.o `test -f 'GenPoly/Lvalue.cc' || echo '$(srcdir)/'`GenPoly/Lvalue.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/Lvalue.cc' object='GenPoly/driver_cfa_cpp-Lvalue.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Lvalue.o `test -f 'GenPoly/Lvalue.cc' || echo '$(srcdir)/'`GenPoly/Lvalue.cc
-
-GenPoly/driver_cfa_cpp-Lvalue.obj: GenPoly/Lvalue.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Lvalue.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo -c -o GenPoly/driver_cfa_cpp-Lvalue.obj `if test -f 'GenPoly/Lvalue.cc'; then $(CYGPATH_W) 'GenPoly/Lvalue.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Lvalue.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/Lvalue.cc' object='GenPoly/driver_cfa_cpp-Lvalue.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Lvalue.obj `if test -f 'GenPoly/Lvalue.cc'; then $(CYGPATH_W) 'GenPoly/Lvalue.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Lvalue.cc'; fi`
-
-GenPoly/driver_cfa_cpp-Specialize.o: GenPoly/Specialize.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Specialize.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo -c -o GenPoly/driver_cfa_cpp-Specialize.o `test -f 'GenPoly/Specialize.cc' || echo '$(srcdir)/'`GenPoly/Specialize.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/Specialize.cc' object='GenPoly/driver_cfa_cpp-Specialize.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Specialize.o `test -f 'GenPoly/Specialize.cc' || echo '$(srcdir)/'`GenPoly/Specialize.cc
-
-GenPoly/driver_cfa_cpp-Specialize.obj: GenPoly/Specialize.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Specialize.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo -c -o GenPoly/driver_cfa_cpp-Specialize.obj `if test -f 'GenPoly/Specialize.cc'; then $(CYGPATH_W) 'GenPoly/Specialize.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Specialize.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/Specialize.cc' object='GenPoly/driver_cfa_cpp-Specialize.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Specialize.obj `if test -f 'GenPoly/Specialize.cc'; then $(CYGPATH_W) 'GenPoly/Specialize.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Specialize.cc'; fi`
-
-GenPoly/driver_cfa_cpp-FindFunction.o: GenPoly/FindFunction.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-FindFunction.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo -c -o GenPoly/driver_cfa_cpp-FindFunction.o `test -f 'GenPoly/FindFunction.cc' || echo '$(srcdir)/'`GenPoly/FindFunction.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/FindFunction.cc' object='GenPoly/driver_cfa_cpp-FindFunction.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-FindFunction.o `test -f 'GenPoly/FindFunction.cc' || echo '$(srcdir)/'`GenPoly/FindFunction.cc
-
-GenPoly/driver_cfa_cpp-FindFunction.obj: GenPoly/FindFunction.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-FindFunction.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo -c -o GenPoly/driver_cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/FindFunction.cc' object='GenPoly/driver_cfa_cpp-FindFunction.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi`
-
-GenPoly/driver_cfa_cpp-InstantiateGeneric.o: GenPoly/InstantiateGeneric.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-InstantiateGeneric.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Tpo -c -o GenPoly/driver_cfa_cpp-InstantiateGeneric.o `test -f 'GenPoly/InstantiateGeneric.cc' || echo '$(srcdir)/'`GenPoly/InstantiateGeneric.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/InstantiateGeneric.cc' object='GenPoly/driver_cfa_cpp-InstantiateGeneric.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-InstantiateGeneric.o `test -f 'GenPoly/InstantiateGeneric.cc' || echo '$(srcdir)/'`GenPoly/InstantiateGeneric.cc
-
-GenPoly/driver_cfa_cpp-InstantiateGeneric.obj: GenPoly/InstantiateGeneric.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-InstantiateGeneric.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Tpo -c -o GenPoly/driver_cfa_cpp-InstantiateGeneric.obj `if test -f 'GenPoly/InstantiateGeneric.cc'; then $(CYGPATH_W) 'GenPoly/InstantiateGeneric.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/InstantiateGeneric.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='GenPoly/InstantiateGeneric.cc' object='GenPoly/driver_cfa_cpp-InstantiateGeneric.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-InstantiateGeneric.obj `if test -f 'GenPoly/InstantiateGeneric.cc'; then $(CYGPATH_W) 'GenPoly/InstantiateGeneric.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/InstantiateGeneric.cc'; fi`
-
-InitTweak/driver_cfa_cpp-GenInit.o: InitTweak/GenInit.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-GenInit.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Tpo -c -o InitTweak/driver_cfa_cpp-GenInit.o `test -f 'InitTweak/GenInit.cc' || echo '$(srcdir)/'`InitTweak/GenInit.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='InitTweak/GenInit.cc' object='InitTweak/driver_cfa_cpp-GenInit.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-GenInit.o `test -f 'InitTweak/GenInit.cc' || echo '$(srcdir)/'`InitTweak/GenInit.cc
-
-InitTweak/driver_cfa_cpp-GenInit.obj: InitTweak/GenInit.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-GenInit.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Tpo -c -o InitTweak/driver_cfa_cpp-GenInit.obj `if test -f 'InitTweak/GenInit.cc'; then $(CYGPATH_W) 'InitTweak/GenInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/GenInit.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='InitTweak/GenInit.cc' object='InitTweak/driver_cfa_cpp-GenInit.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-GenInit.obj `if test -f 'InitTweak/GenInit.cc'; then $(CYGPATH_W) 'InitTweak/GenInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/GenInit.cc'; fi`
-
-InitTweak/driver_cfa_cpp-FixInit.o: InitTweak/FixInit.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-FixInit.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Tpo -c -o InitTweak/driver_cfa_cpp-FixInit.o `test -f 'InitTweak/FixInit.cc' || echo '$(srcdir)/'`InitTweak/FixInit.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='InitTweak/FixInit.cc' object='InitTweak/driver_cfa_cpp-FixInit.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-FixInit.o `test -f 'InitTweak/FixInit.cc' || echo '$(srcdir)/'`InitTweak/FixInit.cc
-
-InitTweak/driver_cfa_cpp-FixInit.obj: InitTweak/FixInit.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-FixInit.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Tpo -c -o InitTweak/driver_cfa_cpp-FixInit.obj `if test -f 'InitTweak/FixInit.cc'; then $(CYGPATH_W) 'InitTweak/FixInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/FixInit.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='InitTweak/FixInit.cc' object='InitTweak/driver_cfa_cpp-FixInit.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-FixInit.obj `if test -f 'InitTweak/FixInit.cc'; then $(CYGPATH_W) 'InitTweak/FixInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/FixInit.cc'; fi`
-
-InitTweak/driver_cfa_cpp-FixGlobalInit.o: InitTweak/FixGlobalInit.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-FixGlobalInit.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Tpo -c -o InitTweak/driver_cfa_cpp-FixGlobalInit.o `test -f 'InitTweak/FixGlobalInit.cc' || echo '$(srcdir)/'`InitTweak/FixGlobalInit.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='InitTweak/FixGlobalInit.cc' object='InitTweak/driver_cfa_cpp-FixGlobalInit.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-FixGlobalInit.o `test -f 'InitTweak/FixGlobalInit.cc' || echo '$(srcdir)/'`InitTweak/FixGlobalInit.cc
-
-InitTweak/driver_cfa_cpp-FixGlobalInit.obj: InitTweak/FixGlobalInit.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-FixGlobalInit.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Tpo -c -o InitTweak/driver_cfa_cpp-FixGlobalInit.obj `if test -f 'InitTweak/FixGlobalInit.cc'; then $(CYGPATH_W) 'InitTweak/FixGlobalInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/FixGlobalInit.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='InitTweak/FixGlobalInit.cc' object='InitTweak/driver_cfa_cpp-FixGlobalInit.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-FixGlobalInit.obj `if test -f 'InitTweak/FixGlobalInit.cc'; then $(CYGPATH_W) 'InitTweak/FixGlobalInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/FixGlobalInit.cc'; fi`
-
-InitTweak/driver_cfa_cpp-InitTweak.o: InitTweak/InitTweak.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-InitTweak.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo -c -o InitTweak/driver_cfa_cpp-InitTweak.o `test -f 'InitTweak/InitTweak.cc' || echo '$(srcdir)/'`InitTweak/InitTweak.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='InitTweak/InitTweak.cc' object='InitTweak/driver_cfa_cpp-InitTweak.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-InitTweak.o `test -f 'InitTweak/InitTweak.cc' || echo '$(srcdir)/'`InitTweak/InitTweak.cc
-
-InitTweak/driver_cfa_cpp-InitTweak.obj: InitTweak/InitTweak.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-InitTweak.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo -c -o InitTweak/driver_cfa_cpp-InitTweak.obj `if test -f 'InitTweak/InitTweak.cc'; then $(CYGPATH_W) 'InitTweak/InitTweak.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitTweak.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='InitTweak/InitTweak.cc' object='InitTweak/driver_cfa_cpp-InitTweak.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-InitTweak.obj `if test -f 'InitTweak/InitTweak.cc'; then $(CYGPATH_W) 'InitTweak/InitTweak.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitTweak.cc'; fi`
-
-Parser/driver_cfa_cpp-parser.o: Parser/parser.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parser.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo -c -o Parser/driver_cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parser.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/parser.cc' object='Parser/driver_cfa_cpp-parser.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
-
-Parser/driver_cfa_cpp-parser.obj: Parser/parser.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parser.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo -c -o Parser/driver_cfa_cpp-parser.obj `if test -f 'Parser/parser.cc'; then $(CYGPATH_W) 'Parser/parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parser.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parser.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/parser.cc' object='Parser/driver_cfa_cpp-parser.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parser.obj `if test -f 'Parser/parser.cc'; then $(CYGPATH_W) 'Parser/parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parser.cc'; fi`
-
-Parser/driver_cfa_cpp-lex.o: Parser/lex.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-lex.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo -c -o Parser/driver_cfa_cpp-lex.o `test -f 'Parser/lex.cc' || echo '$(srcdir)/'`Parser/lex.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-lex.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/lex.cc' object='Parser/driver_cfa_cpp-lex.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-lex.o `test -f 'Parser/lex.cc' || echo '$(srcdir)/'`Parser/lex.cc
-
-Parser/driver_cfa_cpp-lex.obj: Parser/lex.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-lex.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo -c -o Parser/driver_cfa_cpp-lex.obj `if test -f 'Parser/lex.cc'; then $(CYGPATH_W) 'Parser/lex.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/lex.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-lex.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/lex.cc' object='Parser/driver_cfa_cpp-lex.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-lex.obj `if test -f 'Parser/lex.cc'; then $(CYGPATH_W) 'Parser/lex.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/lex.cc'; fi`
-
-Parser/driver_cfa_cpp-TypedefTable.o: Parser/TypedefTable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypedefTable.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo -c -o Parser/driver_cfa_cpp-TypedefTable.o `test -f 'Parser/TypedefTable.cc' || echo '$(srcdir)/'`Parser/TypedefTable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/TypedefTable.cc' object='Parser/driver_cfa_cpp-TypedefTable.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypedefTable.o `test -f 'Parser/TypedefTable.cc' || echo '$(srcdir)/'`Parser/TypedefTable.cc
-
-Parser/driver_cfa_cpp-TypedefTable.obj: Parser/TypedefTable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypedefTable.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo -c -o Parser/driver_cfa_cpp-TypedefTable.obj `if test -f 'Parser/TypedefTable.cc'; then $(CYGPATH_W) 'Parser/TypedefTable.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypedefTable.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/TypedefTable.cc' object='Parser/driver_cfa_cpp-TypedefTable.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypedefTable.obj `if test -f 'Parser/TypedefTable.cc'; then $(CYGPATH_W) 'Parser/TypedefTable.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypedefTable.cc'; fi`
-
-Parser/driver_cfa_cpp-ParseNode.o: Parser/ParseNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ParseNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo -c -o Parser/driver_cfa_cpp-ParseNode.o `test -f 'Parser/ParseNode.cc' || echo '$(srcdir)/'`Parser/ParseNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/ParseNode.cc' object='Parser/driver_cfa_cpp-ParseNode.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ParseNode.o `test -f 'Parser/ParseNode.cc' || echo '$(srcdir)/'`Parser/ParseNode.cc
-
-Parser/driver_cfa_cpp-ParseNode.obj: Parser/ParseNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ParseNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo -c -o Parser/driver_cfa_cpp-ParseNode.obj `if test -f 'Parser/ParseNode.cc'; then $(CYGPATH_W) 'Parser/ParseNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ParseNode.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/ParseNode.cc' object='Parser/driver_cfa_cpp-ParseNode.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ParseNode.obj `if test -f 'Parser/ParseNode.cc'; then $(CYGPATH_W) 'Parser/ParseNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ParseNode.cc'; fi`
-
-Parser/driver_cfa_cpp-DeclarationNode.o: Parser/DeclarationNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-DeclarationNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo -c -o Parser/driver_cfa_cpp-DeclarationNode.o `test -f 'Parser/DeclarationNode.cc' || echo '$(srcdir)/'`Parser/DeclarationNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/DeclarationNode.cc' object='Parser/driver_cfa_cpp-DeclarationNode.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-DeclarationNode.o `test -f 'Parser/DeclarationNode.cc' || echo '$(srcdir)/'`Parser/DeclarationNode.cc
-
-Parser/driver_cfa_cpp-DeclarationNode.obj: Parser/DeclarationNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-DeclarationNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo -c -o Parser/driver_cfa_cpp-DeclarationNode.obj `if test -f 'Parser/DeclarationNode.cc'; then $(CYGPATH_W) 'Parser/DeclarationNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/DeclarationNode.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/DeclarationNode.cc' object='Parser/driver_cfa_cpp-DeclarationNode.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-DeclarationNode.obj `if test -f 'Parser/DeclarationNode.cc'; then $(CYGPATH_W) 'Parser/DeclarationNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/DeclarationNode.cc'; fi`
-
-Parser/driver_cfa_cpp-ExpressionNode.o: Parser/ExpressionNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ExpressionNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo -c -o Parser/driver_cfa_cpp-ExpressionNode.o `test -f 'Parser/ExpressionNode.cc' || echo '$(srcdir)/'`Parser/ExpressionNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/ExpressionNode.cc' object='Parser/driver_cfa_cpp-ExpressionNode.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ExpressionNode.o `test -f 'Parser/ExpressionNode.cc' || echo '$(srcdir)/'`Parser/ExpressionNode.cc
-
-Parser/driver_cfa_cpp-ExpressionNode.obj: Parser/ExpressionNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ExpressionNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo -c -o Parser/driver_cfa_cpp-ExpressionNode.obj `if test -f 'Parser/ExpressionNode.cc'; then $(CYGPATH_W) 'Parser/ExpressionNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ExpressionNode.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/ExpressionNode.cc' object='Parser/driver_cfa_cpp-ExpressionNode.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ExpressionNode.obj `if test -f 'Parser/ExpressionNode.cc'; then $(CYGPATH_W) 'Parser/ExpressionNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ExpressionNode.cc'; fi`
-
-Parser/driver_cfa_cpp-StatementNode.o: Parser/StatementNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-StatementNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo -c -o Parser/driver_cfa_cpp-StatementNode.o `test -f 'Parser/StatementNode.cc' || echo '$(srcdir)/'`Parser/StatementNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/StatementNode.cc' object='Parser/driver_cfa_cpp-StatementNode.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-StatementNode.o `test -f 'Parser/StatementNode.cc' || echo '$(srcdir)/'`Parser/StatementNode.cc
-
-Parser/driver_cfa_cpp-StatementNode.obj: Parser/StatementNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-StatementNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo -c -o Parser/driver_cfa_cpp-StatementNode.obj `if test -f 'Parser/StatementNode.cc'; then $(CYGPATH_W) 'Parser/StatementNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/StatementNode.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/StatementNode.cc' object='Parser/driver_cfa_cpp-StatementNode.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-StatementNode.obj `if test -f 'Parser/StatementNode.cc'; then $(CYGPATH_W) 'Parser/StatementNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/StatementNode.cc'; fi`
-
-Parser/driver_cfa_cpp-InitializerNode.o: Parser/InitializerNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-InitializerNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo -c -o Parser/driver_cfa_cpp-InitializerNode.o `test -f 'Parser/InitializerNode.cc' || echo '$(srcdir)/'`Parser/InitializerNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/InitializerNode.cc' object='Parser/driver_cfa_cpp-InitializerNode.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-InitializerNode.o `test -f 'Parser/InitializerNode.cc' || echo '$(srcdir)/'`Parser/InitializerNode.cc
-
-Parser/driver_cfa_cpp-InitializerNode.obj: Parser/InitializerNode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-InitializerNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo -c -o Parser/driver_cfa_cpp-InitializerNode.obj `if test -f 'Parser/InitializerNode.cc'; then $(CYGPATH_W) 'Parser/InitializerNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/InitializerNode.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/InitializerNode.cc' object='Parser/driver_cfa_cpp-InitializerNode.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-InitializerNode.obj `if test -f 'Parser/InitializerNode.cc'; then $(CYGPATH_W) 'Parser/InitializerNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/InitializerNode.cc'; fi`
-
-Parser/driver_cfa_cpp-TypeData.o: Parser/TypeData.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypeData.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo -c -o Parser/driver_cfa_cpp-TypeData.o `test -f 'Parser/TypeData.cc' || echo '$(srcdir)/'`Parser/TypeData.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/TypeData.cc' object='Parser/driver_cfa_cpp-TypeData.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypeData.o `test -f 'Parser/TypeData.cc' || echo '$(srcdir)/'`Parser/TypeData.cc
-
-Parser/driver_cfa_cpp-TypeData.obj: Parser/TypeData.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypeData.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo -c -o Parser/driver_cfa_cpp-TypeData.obj `if test -f 'Parser/TypeData.cc'; then $(CYGPATH_W) 'Parser/TypeData.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypeData.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/TypeData.cc' object='Parser/driver_cfa_cpp-TypeData.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypeData.obj `if test -f 'Parser/TypeData.cc'; then $(CYGPATH_W) 'Parser/TypeData.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypeData.cc'; fi`
-
-Parser/driver_cfa_cpp-LinkageSpec.o: Parser/LinkageSpec.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-LinkageSpec.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo -c -o Parser/driver_cfa_cpp-LinkageSpec.o `test -f 'Parser/LinkageSpec.cc' || echo '$(srcdir)/'`Parser/LinkageSpec.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/LinkageSpec.cc' object='Parser/driver_cfa_cpp-LinkageSpec.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-LinkageSpec.o `test -f 'Parser/LinkageSpec.cc' || echo '$(srcdir)/'`Parser/LinkageSpec.cc
-
-Parser/driver_cfa_cpp-LinkageSpec.obj: Parser/LinkageSpec.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-LinkageSpec.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo -c -o Parser/driver_cfa_cpp-LinkageSpec.obj `if test -f 'Parser/LinkageSpec.cc'; then $(CYGPATH_W) 'Parser/LinkageSpec.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/LinkageSpec.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/LinkageSpec.cc' object='Parser/driver_cfa_cpp-LinkageSpec.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-LinkageSpec.obj `if test -f 'Parser/LinkageSpec.cc'; then $(CYGPATH_W) 'Parser/LinkageSpec.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/LinkageSpec.cc'; fi`
-
-Parser/driver_cfa_cpp-parserutility.o: Parser/parserutility.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parserutility.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parserutility.Tpo -c -o Parser/driver_cfa_cpp-parserutility.o `test -f 'Parser/parserutility.cc' || echo '$(srcdir)/'`Parser/parserutility.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parserutility.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parserutility.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/parserutility.cc' object='Parser/driver_cfa_cpp-parserutility.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parserutility.o `test -f 'Parser/parserutility.cc' || echo '$(srcdir)/'`Parser/parserutility.cc
-
-Parser/driver_cfa_cpp-parserutility.obj: Parser/parserutility.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parserutility.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parserutility.Tpo -c -o Parser/driver_cfa_cpp-parserutility.obj `if test -f 'Parser/parserutility.cc'; then $(CYGPATH_W) 'Parser/parserutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parserutility.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parserutility.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parserutility.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/parserutility.cc' object='Parser/driver_cfa_cpp-parserutility.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parserutility.obj `if test -f 'Parser/parserutility.cc'; then $(CYGPATH_W) 'Parser/parserutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parserutility.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-AlternativeFinder.o: ResolvExpr/AlternativeFinder.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativeFinder.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.o `test -f 'ResolvExpr/AlternativeFinder.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativeFinder.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/driver_cfa_cpp-AlternativeFinder.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.o `test -f 'ResolvExpr/AlternativeFinder.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativeFinder.cc
-
-ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj: ResolvExpr/AlternativeFinder.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj `if test -f 'ResolvExpr/AlternativeFinder.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativeFinder.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativeFinder.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj `if test -f 'ResolvExpr/AlternativeFinder.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativeFinder.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativeFinder.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-Alternative.o: ResolvExpr/Alternative.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Alternative.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo -c -o ResolvExpr/driver_cfa_cpp-Alternative.o `test -f 'ResolvExpr/Alternative.cc' || echo '$(srcdir)/'`ResolvExpr/Alternative.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/Alternative.cc' object='ResolvExpr/driver_cfa_cpp-Alternative.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Alternative.o `test -f 'ResolvExpr/Alternative.cc' || echo '$(srcdir)/'`ResolvExpr/Alternative.cc
-
-ResolvExpr/driver_cfa_cpp-Alternative.obj: ResolvExpr/Alternative.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Alternative.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo -c -o ResolvExpr/driver_cfa_cpp-Alternative.obj `if test -f 'ResolvExpr/Alternative.cc'; then $(CYGPATH_W) 'ResolvExpr/Alternative.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Alternative.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/Alternative.cc' object='ResolvExpr/driver_cfa_cpp-Alternative.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Alternative.obj `if test -f 'ResolvExpr/Alternative.cc'; then $(CYGPATH_W) 'ResolvExpr/Alternative.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Alternative.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-Unify.o: ResolvExpr/Unify.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Unify.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo -c -o ResolvExpr/driver_cfa_cpp-Unify.o `test -f 'ResolvExpr/Unify.cc' || echo '$(srcdir)/'`ResolvExpr/Unify.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/Unify.cc' object='ResolvExpr/driver_cfa_cpp-Unify.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Unify.o `test -f 'ResolvExpr/Unify.cc' || echo '$(srcdir)/'`ResolvExpr/Unify.cc
-
-ResolvExpr/driver_cfa_cpp-Unify.obj: ResolvExpr/Unify.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Unify.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo -c -o ResolvExpr/driver_cfa_cpp-Unify.obj `if test -f 'ResolvExpr/Unify.cc'; then $(CYGPATH_W) 'ResolvExpr/Unify.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Unify.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/Unify.cc' object='ResolvExpr/driver_cfa_cpp-Unify.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Unify.obj `if test -f 'ResolvExpr/Unify.cc'; then $(CYGPATH_W) 'ResolvExpr/Unify.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Unify.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-PtrsAssignable.o: ResolvExpr/PtrsAssignable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsAssignable.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.o `test -f 'ResolvExpr/PtrsAssignable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsAssignable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsAssignable.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.o `test -f 'ResolvExpr/PtrsAssignable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsAssignable.cc
-
-ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj: ResolvExpr/PtrsAssignable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj `if test -f 'ResolvExpr/PtrsAssignable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsAssignable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsAssignable.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj `if test -f 'ResolvExpr/PtrsAssignable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsAssignable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsAssignable.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-CommonType.o: ResolvExpr/CommonType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CommonType.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo -c -o ResolvExpr/driver_cfa_cpp-CommonType.o `test -f 'ResolvExpr/CommonType.cc' || echo '$(srcdir)/'`ResolvExpr/CommonType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/CommonType.cc' object='ResolvExpr/driver_cfa_cpp-CommonType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CommonType.o `test -f 'ResolvExpr/CommonType.cc' || echo '$(srcdir)/'`ResolvExpr/CommonType.cc
-
-ResolvExpr/driver_cfa_cpp-CommonType.obj: ResolvExpr/CommonType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CommonType.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo -c -o ResolvExpr/driver_cfa_cpp-CommonType.obj `if test -f 'ResolvExpr/CommonType.cc'; then $(CYGPATH_W) 'ResolvExpr/CommonType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CommonType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/CommonType.cc' object='ResolvExpr/driver_cfa_cpp-CommonType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CommonType.obj `if test -f 'ResolvExpr/CommonType.cc'; then $(CYGPATH_W) 'ResolvExpr/CommonType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CommonType.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-ConversionCost.o: ResolvExpr/ConversionCost.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ConversionCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.o `test -f 'ResolvExpr/ConversionCost.cc' || echo '$(srcdir)/'`ResolvExpr/ConversionCost.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/driver_cfa_cpp-ConversionCost.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.o `test -f 'ResolvExpr/ConversionCost.cc' || echo '$(srcdir)/'`ResolvExpr/ConversionCost.cc
-
-ResolvExpr/driver_cfa_cpp-ConversionCost.obj: ResolvExpr/ConversionCost.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ConversionCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.obj `if test -f 'ResolvExpr/ConversionCost.cc'; then $(CYGPATH_W) 'ResolvExpr/ConversionCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ConversionCost.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/driver_cfa_cpp-ConversionCost.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.obj `if test -f 'ResolvExpr/ConversionCost.cc'; then $(CYGPATH_W) 'ResolvExpr/ConversionCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ConversionCost.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-CastCost.o: ResolvExpr/CastCost.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CastCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-CastCost.o `test -f 'ResolvExpr/CastCost.cc' || echo '$(srcdir)/'`ResolvExpr/CastCost.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/CastCost.cc' object='ResolvExpr/driver_cfa_cpp-CastCost.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CastCost.o `test -f 'ResolvExpr/CastCost.cc' || echo '$(srcdir)/'`ResolvExpr/CastCost.cc
-
-ResolvExpr/driver_cfa_cpp-CastCost.obj: ResolvExpr/CastCost.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CastCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-CastCost.obj `if test -f 'ResolvExpr/CastCost.cc'; then $(CYGPATH_W) 'ResolvExpr/CastCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CastCost.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/CastCost.cc' object='ResolvExpr/driver_cfa_cpp-CastCost.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CastCost.obj `if test -f 'ResolvExpr/CastCost.cc'; then $(CYGPATH_W) 'ResolvExpr/CastCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CastCost.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-PtrsCastable.o: ResolvExpr/PtrsCastable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsCastable.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.o `test -f 'ResolvExpr/PtrsCastable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsCastable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsCastable.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.o `test -f 'ResolvExpr/PtrsCastable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsCastable.cc
-
-ResolvExpr/driver_cfa_cpp-PtrsCastable.obj: ResolvExpr/PtrsCastable.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsCastable.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.obj `if test -f 'ResolvExpr/PtrsCastable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsCastable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsCastable.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsCastable.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.obj `if test -f 'ResolvExpr/PtrsCastable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsCastable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsCastable.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-AdjustExprType.o: ResolvExpr/AdjustExprType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AdjustExprType.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.o `test -f 'ResolvExpr/AdjustExprType.cc' || echo '$(srcdir)/'`ResolvExpr/AdjustExprType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/driver_cfa_cpp-AdjustExprType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.o `test -f 'ResolvExpr/AdjustExprType.cc' || echo '$(srcdir)/'`ResolvExpr/AdjustExprType.cc
-
-ResolvExpr/driver_cfa_cpp-AdjustExprType.obj: ResolvExpr/AdjustExprType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AdjustExprType.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.obj `if test -f 'ResolvExpr/AdjustExprType.cc'; then $(CYGPATH_W) 'ResolvExpr/AdjustExprType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AdjustExprType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/driver_cfa_cpp-AdjustExprType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.obj `if test -f 'ResolvExpr/AdjustExprType.cc'; then $(CYGPATH_W) 'ResolvExpr/AdjustExprType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AdjustExprType.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-AlternativePrinter.o: ResolvExpr/AlternativePrinter.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativePrinter.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.o `test -f 'ResolvExpr/AlternativePrinter.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativePrinter.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/driver_cfa_cpp-AlternativePrinter.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.o `test -f 'ResolvExpr/AlternativePrinter.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativePrinter.cc
-
-ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj: ResolvExpr/AlternativePrinter.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj `if test -f 'ResolvExpr/AlternativePrinter.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativePrinter.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativePrinter.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj `if test -f 'ResolvExpr/AlternativePrinter.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativePrinter.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativePrinter.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-Resolver.o: ResolvExpr/Resolver.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Resolver.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo -c -o ResolvExpr/driver_cfa_cpp-Resolver.o `test -f 'ResolvExpr/Resolver.cc' || echo '$(srcdir)/'`ResolvExpr/Resolver.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/Resolver.cc' object='ResolvExpr/driver_cfa_cpp-Resolver.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Resolver.o `test -f 'ResolvExpr/Resolver.cc' || echo '$(srcdir)/'`ResolvExpr/Resolver.cc
-
-ResolvExpr/driver_cfa_cpp-Resolver.obj: ResolvExpr/Resolver.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Resolver.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo -c -o ResolvExpr/driver_cfa_cpp-Resolver.obj `if test -f 'ResolvExpr/Resolver.cc'; then $(CYGPATH_W) 'ResolvExpr/Resolver.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Resolver.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/Resolver.cc' object='ResolvExpr/driver_cfa_cpp-Resolver.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Resolver.obj `if test -f 'ResolvExpr/Resolver.cc'; then $(CYGPATH_W) 'ResolvExpr/Resolver.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Resolver.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-ResolveTypeof.o: ResolvExpr/ResolveTypeof.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ResolveTypeof.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.o `test -f 'ResolvExpr/ResolveTypeof.cc' || echo '$(srcdir)/'`ResolvExpr/ResolveTypeof.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/driver_cfa_cpp-ResolveTypeof.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.o `test -f 'ResolvExpr/ResolveTypeof.cc' || echo '$(srcdir)/'`ResolvExpr/ResolveTypeof.cc
-
-ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj: ResolvExpr/ResolveTypeof.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj `if test -f 'ResolvExpr/ResolveTypeof.cc'; then $(CYGPATH_W) 'ResolvExpr/ResolveTypeof.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ResolveTypeof.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj `if test -f 'ResolvExpr/ResolveTypeof.cc'; then $(CYGPATH_W) 'ResolvExpr/ResolveTypeof.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ResolveTypeof.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-RenameVars.o: ResolvExpr/RenameVars.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-RenameVars.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-RenameVars.o `test -f 'ResolvExpr/RenameVars.cc' || echo '$(srcdir)/'`ResolvExpr/RenameVars.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/RenameVars.cc' object='ResolvExpr/driver_cfa_cpp-RenameVars.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-RenameVars.o `test -f 'ResolvExpr/RenameVars.cc' || echo '$(srcdir)/'`ResolvExpr/RenameVars.cc
-
-ResolvExpr/driver_cfa_cpp-RenameVars.obj: ResolvExpr/RenameVars.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-RenameVars.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-RenameVars.obj `if test -f 'ResolvExpr/RenameVars.cc'; then $(CYGPATH_W) 'ResolvExpr/RenameVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/RenameVars.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/RenameVars.cc' object='ResolvExpr/driver_cfa_cpp-RenameVars.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-RenameVars.obj `if test -f 'ResolvExpr/RenameVars.cc'; then $(CYGPATH_W) 'ResolvExpr/RenameVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/RenameVars.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-FindOpenVars.o: ResolvExpr/FindOpenVars.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-FindOpenVars.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.o `test -f 'ResolvExpr/FindOpenVars.cc' || echo '$(srcdir)/'`ResolvExpr/FindOpenVars.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/driver_cfa_cpp-FindOpenVars.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.o `test -f 'ResolvExpr/FindOpenVars.cc' || echo '$(srcdir)/'`ResolvExpr/FindOpenVars.cc
-
-ResolvExpr/driver_cfa_cpp-FindOpenVars.obj: ResolvExpr/FindOpenVars.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-FindOpenVars.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.obj `if test -f 'ResolvExpr/FindOpenVars.cc'; then $(CYGPATH_W) 'ResolvExpr/FindOpenVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/FindOpenVars.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/driver_cfa_cpp-FindOpenVars.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.obj `if test -f 'ResolvExpr/FindOpenVars.cc'; then $(CYGPATH_W) 'ResolvExpr/FindOpenVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/FindOpenVars.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-PolyCost.o: ResolvExpr/PolyCost.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PolyCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-PolyCost.o `test -f 'ResolvExpr/PolyCost.cc' || echo '$(srcdir)/'`ResolvExpr/PolyCost.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/PolyCost.cc' object='ResolvExpr/driver_cfa_cpp-PolyCost.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PolyCost.o `test -f 'ResolvExpr/PolyCost.cc' || echo '$(srcdir)/'`ResolvExpr/PolyCost.cc
-
-ResolvExpr/driver_cfa_cpp-PolyCost.obj: ResolvExpr/PolyCost.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PolyCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-PolyCost.obj `if test -f 'ResolvExpr/PolyCost.cc'; then $(CYGPATH_W) 'ResolvExpr/PolyCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PolyCost.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/PolyCost.cc' object='ResolvExpr/driver_cfa_cpp-PolyCost.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PolyCost.obj `if test -f 'ResolvExpr/PolyCost.cc'; then $(CYGPATH_W) 'ResolvExpr/PolyCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PolyCost.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-Occurs.o: ResolvExpr/Occurs.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Occurs.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo -c -o ResolvExpr/driver_cfa_cpp-Occurs.o `test -f 'ResolvExpr/Occurs.cc' || echo '$(srcdir)/'`ResolvExpr/Occurs.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/Occurs.cc' object='ResolvExpr/driver_cfa_cpp-Occurs.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Occurs.o `test -f 'ResolvExpr/Occurs.cc' || echo '$(srcdir)/'`ResolvExpr/Occurs.cc
-
-ResolvExpr/driver_cfa_cpp-Occurs.obj: ResolvExpr/Occurs.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Occurs.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo -c -o ResolvExpr/driver_cfa_cpp-Occurs.obj `if test -f 'ResolvExpr/Occurs.cc'; then $(CYGPATH_W) 'ResolvExpr/Occurs.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Occurs.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/Occurs.cc' object='ResolvExpr/driver_cfa_cpp-Occurs.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Occurs.obj `if test -f 'ResolvExpr/Occurs.cc'; then $(CYGPATH_W) 'ResolvExpr/Occurs.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Occurs.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-TypeEnvironment.o: ResolvExpr/TypeEnvironment.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-TypeEnvironment.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.o `test -f 'ResolvExpr/TypeEnvironment.cc' || echo '$(srcdir)/'`ResolvExpr/TypeEnvironment.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/driver_cfa_cpp-TypeEnvironment.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.o `test -f 'ResolvExpr/TypeEnvironment.cc' || echo '$(srcdir)/'`ResolvExpr/TypeEnvironment.cc
-
-ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj: ResolvExpr/TypeEnvironment.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-CurrentObject.o: ResolvExpr/CurrentObject.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CurrentObject.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CurrentObject.Tpo -c -o ResolvExpr/driver_cfa_cpp-CurrentObject.o `test -f 'ResolvExpr/CurrentObject.cc' || echo '$(srcdir)/'`ResolvExpr/CurrentObject.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CurrentObject.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CurrentObject.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/CurrentObject.cc' object='ResolvExpr/driver_cfa_cpp-CurrentObject.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CurrentObject.o `test -f 'ResolvExpr/CurrentObject.cc' || echo '$(srcdir)/'`ResolvExpr/CurrentObject.cc
-
-ResolvExpr/driver_cfa_cpp-CurrentObject.obj: ResolvExpr/CurrentObject.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CurrentObject.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CurrentObject.Tpo -c -o ResolvExpr/driver_cfa_cpp-CurrentObject.obj `if test -f 'ResolvExpr/CurrentObject.cc'; then $(CYGPATH_W) 'ResolvExpr/CurrentObject.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CurrentObject.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CurrentObject.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CurrentObject.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/CurrentObject.cc' object='ResolvExpr/driver_cfa_cpp-CurrentObject.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CurrentObject.obj `if test -f 'ResolvExpr/CurrentObject.cc'; then $(CYGPATH_W) 'ResolvExpr/CurrentObject.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CurrentObject.cc'; fi`
-
-ResolvExpr/driver_cfa_cpp-ExplodedActual.o: ResolvExpr/ExplodedActual.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ExplodedActual.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ExplodedActual.Tpo -c -o ResolvExpr/driver_cfa_cpp-ExplodedActual.o `test -f 'ResolvExpr/ExplodedActual.cc' || echo '$(srcdir)/'`ResolvExpr/ExplodedActual.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ExplodedActual.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ExplodedActual.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/ExplodedActual.cc' object='ResolvExpr/driver_cfa_cpp-ExplodedActual.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ExplodedActual.o `test -f 'ResolvExpr/ExplodedActual.cc' || echo '$(srcdir)/'`ResolvExpr/ExplodedActual.cc
-
-ResolvExpr/driver_cfa_cpp-ExplodedActual.obj: ResolvExpr/ExplodedActual.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ExplodedActual.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ExplodedActual.Tpo -c -o ResolvExpr/driver_cfa_cpp-ExplodedActual.obj `if test -f 'ResolvExpr/ExplodedActual.cc'; then $(CYGPATH_W) 'ResolvExpr/ExplodedActual.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ExplodedActual.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ExplodedActual.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ExplodedActual.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ResolvExpr/ExplodedActual.cc' object='ResolvExpr/driver_cfa_cpp-ExplodedActual.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ExplodedActual.obj `if test -f 'ResolvExpr/ExplodedActual.cc'; then $(CYGPATH_W) 'ResolvExpr/ExplodedActual.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ExplodedActual.cc'; fi`
-
-SymTab/driver_cfa_cpp-Indexer.o: SymTab/Indexer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Indexer.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo -c -o SymTab/driver_cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SymTab/Indexer.cc' object='SymTab/driver_cfa_cpp-Indexer.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc
-
-SymTab/driver_cfa_cpp-Indexer.obj: SymTab/Indexer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Indexer.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo -c -o SymTab/driver_cfa_cpp-Indexer.obj `if test -f 'SymTab/Indexer.cc'; then $(CYGPATH_W) 'SymTab/Indexer.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Indexer.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SymTab/Indexer.cc' object='SymTab/driver_cfa_cpp-Indexer.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Indexer.obj `if test -f 'SymTab/Indexer.cc'; then $(CYGPATH_W) 'SymTab/Indexer.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Indexer.cc'; fi`
-
-SymTab/driver_cfa_cpp-Mangler.o: SymTab/Mangler.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Mangler.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo -c -o SymTab/driver_cfa_cpp-Mangler.o `test -f 'SymTab/Mangler.cc' || echo '$(srcdir)/'`SymTab/Mangler.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SymTab/Mangler.cc' object='SymTab/driver_cfa_cpp-Mangler.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Mangler.o `test -f 'SymTab/Mangler.cc' || echo '$(srcdir)/'`SymTab/Mangler.cc
-
-SymTab/driver_cfa_cpp-Mangler.obj: SymTab/Mangler.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Mangler.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo -c -o SymTab/driver_cfa_cpp-Mangler.obj `if test -f 'SymTab/Mangler.cc'; then $(CYGPATH_W) 'SymTab/Mangler.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Mangler.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SymTab/Mangler.cc' object='SymTab/driver_cfa_cpp-Mangler.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Mangler.obj `if test -f 'SymTab/Mangler.cc'; then $(CYGPATH_W) 'SymTab/Mangler.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Mangler.cc'; fi`
-
-SymTab/driver_cfa_cpp-Validate.o: SymTab/Validate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Validate.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo -c -o SymTab/driver_cfa_cpp-Validate.o `test -f 'SymTab/Validate.cc' || echo '$(srcdir)/'`SymTab/Validate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SymTab/Validate.cc' object='SymTab/driver_cfa_cpp-Validate.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Validate.o `test -f 'SymTab/Validate.cc' || echo '$(srcdir)/'`SymTab/Validate.cc
-
-SymTab/driver_cfa_cpp-Validate.obj: SymTab/Validate.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Validate.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo -c -o SymTab/driver_cfa_cpp-Validate.obj `if test -f 'SymTab/Validate.cc'; then $(CYGPATH_W) 'SymTab/Validate.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Validate.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SymTab/Validate.cc' object='SymTab/driver_cfa_cpp-Validate.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Validate.obj `if test -f 'SymTab/Validate.cc'; then $(CYGPATH_W) 'SymTab/Validate.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Validate.cc'; fi`
-
-SymTab/driver_cfa_cpp-FixFunction.o: SymTab/FixFunction.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-FixFunction.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo -c -o SymTab/driver_cfa_cpp-FixFunction.o `test -f 'SymTab/FixFunction.cc' || echo '$(srcdir)/'`SymTab/FixFunction.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SymTab/FixFunction.cc' object='SymTab/driver_cfa_cpp-FixFunction.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-FixFunction.o `test -f 'SymTab/FixFunction.cc' || echo '$(srcdir)/'`SymTab/FixFunction.cc
-
-SymTab/driver_cfa_cpp-FixFunction.obj: SymTab/FixFunction.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-FixFunction.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo -c -o SymTab/driver_cfa_cpp-FixFunction.obj `if test -f 'SymTab/FixFunction.cc'; then $(CYGPATH_W) 'SymTab/FixFunction.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/FixFunction.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SymTab/FixFunction.cc' object='SymTab/driver_cfa_cpp-FixFunction.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-FixFunction.obj `if test -f 'SymTab/FixFunction.cc'; then $(CYGPATH_W) 'SymTab/FixFunction.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/FixFunction.cc'; fi`
-
-SymTab/driver_cfa_cpp-Autogen.o: SymTab/Autogen.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Autogen.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Tpo -c -o SymTab/driver_cfa_cpp-Autogen.o `test -f 'SymTab/Autogen.cc' || echo '$(srcdir)/'`SymTab/Autogen.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SymTab/Autogen.cc' object='SymTab/driver_cfa_cpp-Autogen.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Autogen.o `test -f 'SymTab/Autogen.cc' || echo '$(srcdir)/'`SymTab/Autogen.cc
-
-SymTab/driver_cfa_cpp-Autogen.obj: SymTab/Autogen.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Autogen.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Tpo -c -o SymTab/driver_cfa_cpp-Autogen.obj `if test -f 'SymTab/Autogen.cc'; then $(CYGPATH_W) 'SymTab/Autogen.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Autogen.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SymTab/Autogen.cc' object='SymTab/driver_cfa_cpp-Autogen.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Autogen.obj `if test -f 'SymTab/Autogen.cc'; then $(CYGPATH_W) 'SymTab/Autogen.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Autogen.cc'; fi`
-
-SynTree/driver_cfa_cpp-Type.o: SynTree/Type.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Type.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo -c -o SynTree/driver_cfa_cpp-Type.o `test -f 'SynTree/Type.cc' || echo '$(srcdir)/'`SynTree/Type.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Type.cc' object='SynTree/driver_cfa_cpp-Type.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Type.o `test -f 'SynTree/Type.cc' || echo '$(srcdir)/'`SynTree/Type.cc
-
-SynTree/driver_cfa_cpp-Type.obj: SynTree/Type.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Type.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo -c -o SynTree/driver_cfa_cpp-Type.obj `if test -f 'SynTree/Type.cc'; then $(CYGPATH_W) 'SynTree/Type.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Type.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Type.cc' object='SynTree/driver_cfa_cpp-Type.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Type.obj `if test -f 'SynTree/Type.cc'; then $(CYGPATH_W) 'SynTree/Type.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Type.cc'; fi`
-
-SynTree/driver_cfa_cpp-VoidType.o: SynTree/VoidType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VoidType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo -c -o SynTree/driver_cfa_cpp-VoidType.o `test -f 'SynTree/VoidType.cc' || echo '$(srcdir)/'`SynTree/VoidType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/VoidType.cc' object='SynTree/driver_cfa_cpp-VoidType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VoidType.o `test -f 'SynTree/VoidType.cc' || echo '$(srcdir)/'`SynTree/VoidType.cc
-
-SynTree/driver_cfa_cpp-VoidType.obj: SynTree/VoidType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VoidType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo -c -o SynTree/driver_cfa_cpp-VoidType.obj `if test -f 'SynTree/VoidType.cc'; then $(CYGPATH_W) 'SynTree/VoidType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VoidType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/VoidType.cc' object='SynTree/driver_cfa_cpp-VoidType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VoidType.obj `if test -f 'SynTree/VoidType.cc'; then $(CYGPATH_W) 'SynTree/VoidType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VoidType.cc'; fi`
-
-SynTree/driver_cfa_cpp-BasicType.o: SynTree/BasicType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-BasicType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo -c -o SynTree/driver_cfa_cpp-BasicType.o `test -f 'SynTree/BasicType.cc' || echo '$(srcdir)/'`SynTree/BasicType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/BasicType.cc' object='SynTree/driver_cfa_cpp-BasicType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-BasicType.o `test -f 'SynTree/BasicType.cc' || echo '$(srcdir)/'`SynTree/BasicType.cc
-
-SynTree/driver_cfa_cpp-BasicType.obj: SynTree/BasicType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-BasicType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo -c -o SynTree/driver_cfa_cpp-BasicType.obj `if test -f 'SynTree/BasicType.cc'; then $(CYGPATH_W) 'SynTree/BasicType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/BasicType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/BasicType.cc' object='SynTree/driver_cfa_cpp-BasicType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-BasicType.obj `if test -f 'SynTree/BasicType.cc'; then $(CYGPATH_W) 'SynTree/BasicType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/BasicType.cc'; fi`
-
-SynTree/driver_cfa_cpp-PointerType.o: SynTree/PointerType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-PointerType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo -c -o SynTree/driver_cfa_cpp-PointerType.o `test -f 'SynTree/PointerType.cc' || echo '$(srcdir)/'`SynTree/PointerType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/PointerType.cc' object='SynTree/driver_cfa_cpp-PointerType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-PointerType.o `test -f 'SynTree/PointerType.cc' || echo '$(srcdir)/'`SynTree/PointerType.cc
-
-SynTree/driver_cfa_cpp-PointerType.obj: SynTree/PointerType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-PointerType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo -c -o SynTree/driver_cfa_cpp-PointerType.obj `if test -f 'SynTree/PointerType.cc'; then $(CYGPATH_W) 'SynTree/PointerType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/PointerType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/PointerType.cc' object='SynTree/driver_cfa_cpp-PointerType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-PointerType.obj `if test -f 'SynTree/PointerType.cc'; then $(CYGPATH_W) 'SynTree/PointerType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/PointerType.cc'; fi`
-
-SynTree/driver_cfa_cpp-ArrayType.o: SynTree/ArrayType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ArrayType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo -c -o SynTree/driver_cfa_cpp-ArrayType.o `test -f 'SynTree/ArrayType.cc' || echo '$(srcdir)/'`SynTree/ArrayType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ArrayType.cc' object='SynTree/driver_cfa_cpp-ArrayType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ArrayType.o `test -f 'SynTree/ArrayType.cc' || echo '$(srcdir)/'`SynTree/ArrayType.cc
-
-SynTree/driver_cfa_cpp-ArrayType.obj: SynTree/ArrayType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ArrayType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo -c -o SynTree/driver_cfa_cpp-ArrayType.obj `if test -f 'SynTree/ArrayType.cc'; then $(CYGPATH_W) 'SynTree/ArrayType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ArrayType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ArrayType.cc' object='SynTree/driver_cfa_cpp-ArrayType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ArrayType.obj `if test -f 'SynTree/ArrayType.cc'; then $(CYGPATH_W) 'SynTree/ArrayType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ArrayType.cc'; fi`
-
-SynTree/driver_cfa_cpp-ReferenceType.o: SynTree/ReferenceType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ReferenceType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceType.Tpo -c -o SynTree/driver_cfa_cpp-ReferenceType.o `test -f 'SynTree/ReferenceType.cc' || echo '$(srcdir)/'`SynTree/ReferenceType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ReferenceType.cc' object='SynTree/driver_cfa_cpp-ReferenceType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ReferenceType.o `test -f 'SynTree/ReferenceType.cc' || echo '$(srcdir)/'`SynTree/ReferenceType.cc
-
-SynTree/driver_cfa_cpp-ReferenceType.obj: SynTree/ReferenceType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ReferenceType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceType.Tpo -c -o SynTree/driver_cfa_cpp-ReferenceType.obj `if test -f 'SynTree/ReferenceType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ReferenceType.cc' object='SynTree/driver_cfa_cpp-ReferenceType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ReferenceType.obj `if test -f 'SynTree/ReferenceType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceType.cc'; fi`
-
-SynTree/driver_cfa_cpp-FunctionType.o: SynTree/FunctionType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo -c -o SynTree/driver_cfa_cpp-FunctionType.o `test -f 'SynTree/FunctionType.cc' || echo '$(srcdir)/'`SynTree/FunctionType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/FunctionType.cc' object='SynTree/driver_cfa_cpp-FunctionType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionType.o `test -f 'SynTree/FunctionType.cc' || echo '$(srcdir)/'`SynTree/FunctionType.cc
-
-SynTree/driver_cfa_cpp-FunctionType.obj: SynTree/FunctionType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo -c -o SynTree/driver_cfa_cpp-FunctionType.obj `if test -f 'SynTree/FunctionType.cc'; then $(CYGPATH_W) 'SynTree/FunctionType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/FunctionType.cc' object='SynTree/driver_cfa_cpp-FunctionType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionType.obj `if test -f 'SynTree/FunctionType.cc'; then $(CYGPATH_W) 'SynTree/FunctionType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionType.cc'; fi`
-
-SynTree/driver_cfa_cpp-ReferenceToType.o: SynTree/ReferenceToType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ReferenceToType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo -c -o SynTree/driver_cfa_cpp-ReferenceToType.o `test -f 'SynTree/ReferenceToType.cc' || echo '$(srcdir)/'`SynTree/ReferenceToType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ReferenceToType.cc' object='SynTree/driver_cfa_cpp-ReferenceToType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ReferenceToType.o `test -f 'SynTree/ReferenceToType.cc' || echo '$(srcdir)/'`SynTree/ReferenceToType.cc
-
-SynTree/driver_cfa_cpp-ReferenceToType.obj: SynTree/ReferenceToType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ReferenceToType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo -c -o SynTree/driver_cfa_cpp-ReferenceToType.obj `if test -f 'SynTree/ReferenceToType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceToType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceToType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ReferenceToType.cc' object='SynTree/driver_cfa_cpp-ReferenceToType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ReferenceToType.obj `if test -f 'SynTree/ReferenceToType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceToType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceToType.cc'; fi`
-
-SynTree/driver_cfa_cpp-TupleType.o: SynTree/TupleType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo -c -o SynTree/driver_cfa_cpp-TupleType.o `test -f 'SynTree/TupleType.cc' || echo '$(srcdir)/'`SynTree/TupleType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TupleType.cc' object='SynTree/driver_cfa_cpp-TupleType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleType.o `test -f 'SynTree/TupleType.cc' || echo '$(srcdir)/'`SynTree/TupleType.cc
-
-SynTree/driver_cfa_cpp-TupleType.obj: SynTree/TupleType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo -c -o SynTree/driver_cfa_cpp-TupleType.obj `if test -f 'SynTree/TupleType.cc'; then $(CYGPATH_W) 'SynTree/TupleType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TupleType.cc' object='SynTree/driver_cfa_cpp-TupleType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleType.obj `if test -f 'SynTree/TupleType.cc'; then $(CYGPATH_W) 'SynTree/TupleType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleType.cc'; fi`
-
-SynTree/driver_cfa_cpp-TypeofType.o: SynTree/TypeofType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeofType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo -c -o SynTree/driver_cfa_cpp-TypeofType.o `test -f 'SynTree/TypeofType.cc' || echo '$(srcdir)/'`SynTree/TypeofType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TypeofType.cc' object='SynTree/driver_cfa_cpp-TypeofType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeofType.o `test -f 'SynTree/TypeofType.cc' || echo '$(srcdir)/'`SynTree/TypeofType.cc
-
-SynTree/driver_cfa_cpp-TypeofType.obj: SynTree/TypeofType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeofType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo -c -o SynTree/driver_cfa_cpp-TypeofType.obj `if test -f 'SynTree/TypeofType.cc'; then $(CYGPATH_W) 'SynTree/TypeofType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeofType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TypeofType.cc' object='SynTree/driver_cfa_cpp-TypeofType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeofType.obj `if test -f 'SynTree/TypeofType.cc'; then $(CYGPATH_W) 'SynTree/TypeofType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeofType.cc'; fi`
-
-SynTree/driver_cfa_cpp-AttrType.o: SynTree/AttrType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AttrType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo -c -o SynTree/driver_cfa_cpp-AttrType.o `test -f 'SynTree/AttrType.cc' || echo '$(srcdir)/'`SynTree/AttrType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/AttrType.cc' object='SynTree/driver_cfa_cpp-AttrType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AttrType.o `test -f 'SynTree/AttrType.cc' || echo '$(srcdir)/'`SynTree/AttrType.cc
-
-SynTree/driver_cfa_cpp-AttrType.obj: SynTree/AttrType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AttrType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo -c -o SynTree/driver_cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/AttrType.cc' object='SynTree/driver_cfa_cpp-AttrType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi`
-
-SynTree/driver_cfa_cpp-VarArgsType.o: SynTree/VarArgsType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarArgsType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo -c -o SynTree/driver_cfa_cpp-VarArgsType.o `test -f 'SynTree/VarArgsType.cc' || echo '$(srcdir)/'`SynTree/VarArgsType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarArgsType.o `test -f 'SynTree/VarArgsType.cc' || echo '$(srcdir)/'`SynTree/VarArgsType.cc
-
-SynTree/driver_cfa_cpp-VarArgsType.obj: SynTree/VarArgsType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarArgsType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo -c -o SynTree/driver_cfa_cpp-VarArgsType.obj `if test -f 'SynTree/VarArgsType.cc'; then $(CYGPATH_W) 'SynTree/VarArgsType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarArgsType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarArgsType.obj `if test -f 'SynTree/VarArgsType.cc'; then $(CYGPATH_W) 'SynTree/VarArgsType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarArgsType.cc'; fi`
-
-SynTree/driver_cfa_cpp-ZeroOneType.o: SynTree/ZeroOneType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ZeroOneType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ZeroOneType.Tpo -c -o SynTree/driver_cfa_cpp-ZeroOneType.o `test -f 'SynTree/ZeroOneType.cc' || echo '$(srcdir)/'`SynTree/ZeroOneType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ZeroOneType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ZeroOneType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ZeroOneType.cc' object='SynTree/driver_cfa_cpp-ZeroOneType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ZeroOneType.o `test -f 'SynTree/ZeroOneType.cc' || echo '$(srcdir)/'`SynTree/ZeroOneType.cc
-
-SynTree/driver_cfa_cpp-ZeroOneType.obj: SynTree/ZeroOneType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ZeroOneType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ZeroOneType.Tpo -c -o SynTree/driver_cfa_cpp-ZeroOneType.obj `if test -f 'SynTree/ZeroOneType.cc'; then $(CYGPATH_W) 'SynTree/ZeroOneType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ZeroOneType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ZeroOneType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ZeroOneType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ZeroOneType.cc' object='SynTree/driver_cfa_cpp-ZeroOneType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ZeroOneType.obj `if test -f 'SynTree/ZeroOneType.cc'; then $(CYGPATH_W) 'SynTree/ZeroOneType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ZeroOneType.cc'; fi`
-
-SynTree/driver_cfa_cpp-Constant.o: SynTree/Constant.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Constant.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo -c -o SynTree/driver_cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Constant.cc' object='SynTree/driver_cfa_cpp-Constant.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc
-
-SynTree/driver_cfa_cpp-Constant.obj: SynTree/Constant.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Constant.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo -c -o SynTree/driver_cfa_cpp-Constant.obj `if test -f 'SynTree/Constant.cc'; then $(CYGPATH_W) 'SynTree/Constant.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Constant.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Constant.cc' object='SynTree/driver_cfa_cpp-Constant.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Constant.obj `if test -f 'SynTree/Constant.cc'; then $(CYGPATH_W) 'SynTree/Constant.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Constant.cc'; fi`
-
-SynTree/driver_cfa_cpp-Expression.o: SynTree/Expression.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Expression.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo -c -o SynTree/driver_cfa_cpp-Expression.o `test -f 'SynTree/Expression.cc' || echo '$(srcdir)/'`SynTree/Expression.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Expression.cc' object='SynTree/driver_cfa_cpp-Expression.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Expression.o `test -f 'SynTree/Expression.cc' || echo '$(srcdir)/'`SynTree/Expression.cc
-
-SynTree/driver_cfa_cpp-Expression.obj: SynTree/Expression.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Expression.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo -c -o SynTree/driver_cfa_cpp-Expression.obj `if test -f 'SynTree/Expression.cc'; then $(CYGPATH_W) 'SynTree/Expression.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Expression.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Expression.cc' object='SynTree/driver_cfa_cpp-Expression.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Expression.obj `if test -f 'SynTree/Expression.cc'; then $(CYGPATH_W) 'SynTree/Expression.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Expression.cc'; fi`
-
-SynTree/driver_cfa_cpp-TupleExpr.o: SynTree/TupleExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo -c -o SynTree/driver_cfa_cpp-TupleExpr.o `test -f 'SynTree/TupleExpr.cc' || echo '$(srcdir)/'`SynTree/TupleExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TupleExpr.cc' object='SynTree/driver_cfa_cpp-TupleExpr.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleExpr.o `test -f 'SynTree/TupleExpr.cc' || echo '$(srcdir)/'`SynTree/TupleExpr.cc
-
-SynTree/driver_cfa_cpp-TupleExpr.obj: SynTree/TupleExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo -c -o SynTree/driver_cfa_cpp-TupleExpr.obj `if test -f 'SynTree/TupleExpr.cc'; then $(CYGPATH_W) 'SynTree/TupleExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleExpr.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TupleExpr.cc' object='SynTree/driver_cfa_cpp-TupleExpr.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleExpr.obj `if test -f 'SynTree/TupleExpr.cc'; then $(CYGPATH_W) 'SynTree/TupleExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleExpr.cc'; fi`
-
-SynTree/driver_cfa_cpp-CommaExpr.o: SynTree/CommaExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CommaExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo -c -o SynTree/driver_cfa_cpp-CommaExpr.o `test -f 'SynTree/CommaExpr.cc' || echo '$(srcdir)/'`SynTree/CommaExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/CommaExpr.cc' object='SynTree/driver_cfa_cpp-CommaExpr.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CommaExpr.o `test -f 'SynTree/CommaExpr.cc' || echo '$(srcdir)/'`SynTree/CommaExpr.cc
-
-SynTree/driver_cfa_cpp-CommaExpr.obj: SynTree/CommaExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CommaExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo -c -o SynTree/driver_cfa_cpp-CommaExpr.obj `if test -f 'SynTree/CommaExpr.cc'; then $(CYGPATH_W) 'SynTree/CommaExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CommaExpr.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/CommaExpr.cc' object='SynTree/driver_cfa_cpp-CommaExpr.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CommaExpr.obj `if test -f 'SynTree/CommaExpr.cc'; then $(CYGPATH_W) 'SynTree/CommaExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CommaExpr.cc'; fi`
-
-SynTree/driver_cfa_cpp-TypeExpr.o: SynTree/TypeExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo -c -o SynTree/driver_cfa_cpp-TypeExpr.o `test -f 'SynTree/TypeExpr.cc' || echo '$(srcdir)/'`SynTree/TypeExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TypeExpr.cc' object='SynTree/driver_cfa_cpp-TypeExpr.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeExpr.o `test -f 'SynTree/TypeExpr.cc' || echo '$(srcdir)/'`SynTree/TypeExpr.cc
-
-SynTree/driver_cfa_cpp-TypeExpr.obj: SynTree/TypeExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo -c -o SynTree/driver_cfa_cpp-TypeExpr.obj `if test -f 'SynTree/TypeExpr.cc'; then $(CYGPATH_W) 'SynTree/TypeExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeExpr.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TypeExpr.cc' object='SynTree/driver_cfa_cpp-TypeExpr.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeExpr.obj `if test -f 'SynTree/TypeExpr.cc'; then $(CYGPATH_W) 'SynTree/TypeExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeExpr.cc'; fi`
-
-SynTree/driver_cfa_cpp-ApplicationExpr.o: SynTree/ApplicationExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ApplicationExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo -c -o SynTree/driver_cfa_cpp-ApplicationExpr.o `test -f 'SynTree/ApplicationExpr.cc' || echo '$(srcdir)/'`SynTree/ApplicationExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ApplicationExpr.cc' object='SynTree/driver_cfa_cpp-ApplicationExpr.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ApplicationExpr.o `test -f 'SynTree/ApplicationExpr.cc' || echo '$(srcdir)/'`SynTree/ApplicationExpr.cc
-
-SynTree/driver_cfa_cpp-ApplicationExpr.obj: SynTree/ApplicationExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ApplicationExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo -c -o SynTree/driver_cfa_cpp-ApplicationExpr.obj `if test -f 'SynTree/ApplicationExpr.cc'; then $(CYGPATH_W) 'SynTree/ApplicationExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ApplicationExpr.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ApplicationExpr.cc' object='SynTree/driver_cfa_cpp-ApplicationExpr.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ApplicationExpr.obj `if test -f 'SynTree/ApplicationExpr.cc'; then $(CYGPATH_W) 'SynTree/ApplicationExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ApplicationExpr.cc'; fi`
-
-SynTree/driver_cfa_cpp-AddressExpr.o: SynTree/AddressExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AddressExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo -c -o SynTree/driver_cfa_cpp-AddressExpr.o `test -f 'SynTree/AddressExpr.cc' || echo '$(srcdir)/'`SynTree/AddressExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/AddressExpr.cc' object='SynTree/driver_cfa_cpp-AddressExpr.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AddressExpr.o `test -f 'SynTree/AddressExpr.cc' || echo '$(srcdir)/'`SynTree/AddressExpr.cc
-
-SynTree/driver_cfa_cpp-AddressExpr.obj: SynTree/AddressExpr.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AddressExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo -c -o SynTree/driver_cfa_cpp-AddressExpr.obj `if test -f 'SynTree/AddressExpr.cc'; then $(CYGPATH_W) 'SynTree/AddressExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddressExpr.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/AddressExpr.cc' object='SynTree/driver_cfa_cpp-AddressExpr.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AddressExpr.obj `if test -f 'SynTree/AddressExpr.cc'; then $(CYGPATH_W) 'SynTree/AddressExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddressExpr.cc'; fi`
-
-SynTree/driver_cfa_cpp-Statement.o: SynTree/Statement.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Statement.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo -c -o SynTree/driver_cfa_cpp-Statement.o `test -f 'SynTree/Statement.cc' || echo '$(srcdir)/'`SynTree/Statement.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Statement.cc' object='SynTree/driver_cfa_cpp-Statement.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Statement.o `test -f 'SynTree/Statement.cc' || echo '$(srcdir)/'`SynTree/Statement.cc
-
-SynTree/driver_cfa_cpp-Statement.obj: SynTree/Statement.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Statement.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo -c -o SynTree/driver_cfa_cpp-Statement.obj `if test -f 'SynTree/Statement.cc'; then $(CYGPATH_W) 'SynTree/Statement.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Statement.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Statement.cc' object='SynTree/driver_cfa_cpp-Statement.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Statement.obj `if test -f 'SynTree/Statement.cc'; then $(CYGPATH_W) 'SynTree/Statement.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Statement.cc'; fi`
-
-SynTree/driver_cfa_cpp-CompoundStmt.o: SynTree/CompoundStmt.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CompoundStmt.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo -c -o SynTree/driver_cfa_cpp-CompoundStmt.o `test -f 'SynTree/CompoundStmt.cc' || echo '$(srcdir)/'`SynTree/CompoundStmt.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/CompoundStmt.cc' object='SynTree/driver_cfa_cpp-CompoundStmt.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CompoundStmt.o `test -f 'SynTree/CompoundStmt.cc' || echo '$(srcdir)/'`SynTree/CompoundStmt.cc
-
-SynTree/driver_cfa_cpp-CompoundStmt.obj: SynTree/CompoundStmt.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CompoundStmt.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo -c -o SynTree/driver_cfa_cpp-CompoundStmt.obj `if test -f 'SynTree/CompoundStmt.cc'; then $(CYGPATH_W) 'SynTree/CompoundStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CompoundStmt.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/CompoundStmt.cc' object='SynTree/driver_cfa_cpp-CompoundStmt.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CompoundStmt.obj `if test -f 'SynTree/CompoundStmt.cc'; then $(CYGPATH_W) 'SynTree/CompoundStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CompoundStmt.cc'; fi`
-
-SynTree/driver_cfa_cpp-DeclStmt.o: SynTree/DeclStmt.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclStmt.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo -c -o SynTree/driver_cfa_cpp-DeclStmt.o `test -f 'SynTree/DeclStmt.cc' || echo '$(srcdir)/'`SynTree/DeclStmt.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/DeclStmt.cc' object='SynTree/driver_cfa_cpp-DeclStmt.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclStmt.o `test -f 'SynTree/DeclStmt.cc' || echo '$(srcdir)/'`SynTree/DeclStmt.cc
-
-SynTree/driver_cfa_cpp-DeclStmt.obj: SynTree/DeclStmt.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclStmt.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo -c -o SynTree/driver_cfa_cpp-DeclStmt.obj `if test -f 'SynTree/DeclStmt.cc'; then $(CYGPATH_W) 'SynTree/DeclStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclStmt.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/DeclStmt.cc' object='SynTree/driver_cfa_cpp-DeclStmt.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclStmt.obj `if test -f 'SynTree/DeclStmt.cc'; then $(CYGPATH_W) 'SynTree/DeclStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclStmt.cc'; fi`
-
-SynTree/driver_cfa_cpp-Declaration.o: SynTree/Declaration.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Declaration.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo -c -o SynTree/driver_cfa_cpp-Declaration.o `test -f 'SynTree/Declaration.cc' || echo '$(srcdir)/'`SynTree/Declaration.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Declaration.cc' object='SynTree/driver_cfa_cpp-Declaration.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Declaration.o `test -f 'SynTree/Declaration.cc' || echo '$(srcdir)/'`SynTree/Declaration.cc
-
-SynTree/driver_cfa_cpp-Declaration.obj: SynTree/Declaration.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Declaration.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo -c -o SynTree/driver_cfa_cpp-Declaration.obj `if test -f 'SynTree/Declaration.cc'; then $(CYGPATH_W) 'SynTree/Declaration.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Declaration.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Declaration.cc' object='SynTree/driver_cfa_cpp-Declaration.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Declaration.obj `if test -f 'SynTree/Declaration.cc'; then $(CYGPATH_W) 'SynTree/Declaration.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Declaration.cc'; fi`
-
-SynTree/driver_cfa_cpp-DeclarationWithType.o: SynTree/DeclarationWithType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclarationWithType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo -c -o SynTree/driver_cfa_cpp-DeclarationWithType.o `test -f 'SynTree/DeclarationWithType.cc' || echo '$(srcdir)/'`SynTree/DeclarationWithType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/DeclarationWithType.cc' object='SynTree/driver_cfa_cpp-DeclarationWithType.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclarationWithType.o `test -f 'SynTree/DeclarationWithType.cc' || echo '$(srcdir)/'`SynTree/DeclarationWithType.cc
-
-SynTree/driver_cfa_cpp-DeclarationWithType.obj: SynTree/DeclarationWithType.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclarationWithType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo -c -o SynTree/driver_cfa_cpp-DeclarationWithType.obj `if test -f 'SynTree/DeclarationWithType.cc'; then $(CYGPATH_W) 'SynTree/DeclarationWithType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclarationWithType.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/DeclarationWithType.cc' object='SynTree/driver_cfa_cpp-DeclarationWithType.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclarationWithType.obj `if test -f 'SynTree/DeclarationWithType.cc'; then $(CYGPATH_W) 'SynTree/DeclarationWithType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclarationWithType.cc'; fi`
-
-SynTree/driver_cfa_cpp-ObjectDecl.o: SynTree/ObjectDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ObjectDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo -c -o SynTree/driver_cfa_cpp-ObjectDecl.o `test -f 'SynTree/ObjectDecl.cc' || echo '$(srcdir)/'`SynTree/ObjectDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ObjectDecl.cc' object='SynTree/driver_cfa_cpp-ObjectDecl.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ObjectDecl.o `test -f 'SynTree/ObjectDecl.cc' || echo '$(srcdir)/'`SynTree/ObjectDecl.cc
-
-SynTree/driver_cfa_cpp-ObjectDecl.obj: SynTree/ObjectDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ObjectDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo -c -o SynTree/driver_cfa_cpp-ObjectDecl.obj `if test -f 'SynTree/ObjectDecl.cc'; then $(CYGPATH_W) 'SynTree/ObjectDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ObjectDecl.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/ObjectDecl.cc' object='SynTree/driver_cfa_cpp-ObjectDecl.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ObjectDecl.obj `if test -f 'SynTree/ObjectDecl.cc'; then $(CYGPATH_W) 'SynTree/ObjectDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ObjectDecl.cc'; fi`
-
-SynTree/driver_cfa_cpp-FunctionDecl.o: SynTree/FunctionDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo -c -o SynTree/driver_cfa_cpp-FunctionDecl.o `test -f 'SynTree/FunctionDecl.cc' || echo '$(srcdir)/'`SynTree/FunctionDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/FunctionDecl.cc' object='SynTree/driver_cfa_cpp-FunctionDecl.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionDecl.o `test -f 'SynTree/FunctionDecl.cc' || echo '$(srcdir)/'`SynTree/FunctionDecl.cc
-
-SynTree/driver_cfa_cpp-FunctionDecl.obj: SynTree/FunctionDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo -c -o SynTree/driver_cfa_cpp-FunctionDecl.obj `if test -f 'SynTree/FunctionDecl.cc'; then $(CYGPATH_W) 'SynTree/FunctionDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionDecl.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/FunctionDecl.cc' object='SynTree/driver_cfa_cpp-FunctionDecl.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionDecl.obj `if test -f 'SynTree/FunctionDecl.cc'; then $(CYGPATH_W) 'SynTree/FunctionDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionDecl.cc'; fi`
-
-SynTree/driver_cfa_cpp-AggregateDecl.o: SynTree/AggregateDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AggregateDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo -c -o SynTree/driver_cfa_cpp-AggregateDecl.o `test -f 'SynTree/AggregateDecl.cc' || echo '$(srcdir)/'`SynTree/AggregateDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/AggregateDecl.cc' object='SynTree/driver_cfa_cpp-AggregateDecl.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AggregateDecl.o `test -f 'SynTree/AggregateDecl.cc' || echo '$(srcdir)/'`SynTree/AggregateDecl.cc
-
-SynTree/driver_cfa_cpp-AggregateDecl.obj: SynTree/AggregateDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AggregateDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo -c -o SynTree/driver_cfa_cpp-AggregateDecl.obj `if test -f 'SynTree/AggregateDecl.cc'; then $(CYGPATH_W) 'SynTree/AggregateDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AggregateDecl.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/AggregateDecl.cc' object='SynTree/driver_cfa_cpp-AggregateDecl.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AggregateDecl.obj `if test -f 'SynTree/AggregateDecl.cc'; then $(CYGPATH_W) 'SynTree/AggregateDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AggregateDecl.cc'; fi`
-
-SynTree/driver_cfa_cpp-NamedTypeDecl.o: SynTree/NamedTypeDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-NamedTypeDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.o `test -f 'SynTree/NamedTypeDecl.cc' || echo '$(srcdir)/'`SynTree/NamedTypeDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/NamedTypeDecl.cc' object='SynTree/driver_cfa_cpp-NamedTypeDecl.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.o `test -f 'SynTree/NamedTypeDecl.cc' || echo '$(srcdir)/'`SynTree/NamedTypeDecl.cc
-
-SynTree/driver_cfa_cpp-NamedTypeDecl.obj: SynTree/NamedTypeDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-NamedTypeDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.obj `if test -f 'SynTree/NamedTypeDecl.cc'; then $(CYGPATH_W) 'SynTree/NamedTypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/NamedTypeDecl.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/NamedTypeDecl.cc' object='SynTree/driver_cfa_cpp-NamedTypeDecl.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.obj `if test -f 'SynTree/NamedTypeDecl.cc'; then $(CYGPATH_W) 'SynTree/NamedTypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/NamedTypeDecl.cc'; fi`
-
-SynTree/driver_cfa_cpp-TypeDecl.o: SynTree/TypeDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-TypeDecl.o `test -f 'SynTree/TypeDecl.cc' || echo '$(srcdir)/'`SynTree/TypeDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TypeDecl.cc' object='SynTree/driver_cfa_cpp-TypeDecl.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeDecl.o `test -f 'SynTree/TypeDecl.cc' || echo '$(srcdir)/'`SynTree/TypeDecl.cc
-
-SynTree/driver_cfa_cpp-TypeDecl.obj: SynTree/TypeDecl.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-TypeDecl.obj `if test -f 'SynTree/TypeDecl.cc'; then $(CYGPATH_W) 'SynTree/TypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeDecl.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TypeDecl.cc' object='SynTree/driver_cfa_cpp-TypeDecl.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeDecl.obj `if test -f 'SynTree/TypeDecl.cc'; then $(CYGPATH_W) 'SynTree/TypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeDecl.cc'; fi`
-
-SynTree/driver_cfa_cpp-Initializer.o: SynTree/Initializer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Initializer.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo -c -o SynTree/driver_cfa_cpp-Initializer.o `test -f 'SynTree/Initializer.cc' || echo '$(srcdir)/'`SynTree/Initializer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Initializer.cc' object='SynTree/driver_cfa_cpp-Initializer.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Initializer.o `test -f 'SynTree/Initializer.cc' || echo '$(srcdir)/'`SynTree/Initializer.cc
-
-SynTree/driver_cfa_cpp-Initializer.obj: SynTree/Initializer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Initializer.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo -c -o SynTree/driver_cfa_cpp-Initializer.obj `if test -f 'SynTree/Initializer.cc'; then $(CYGPATH_W) 'SynTree/Initializer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Initializer.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Initializer.cc' object='SynTree/driver_cfa_cpp-Initializer.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Initializer.obj `if test -f 'SynTree/Initializer.cc'; then $(CYGPATH_W) 'SynTree/Initializer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Initializer.cc'; fi`
-
-SynTree/driver_cfa_cpp-TypeSubstitution.o: SynTree/TypeSubstitution.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeSubstitution.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo -c -o SynTree/driver_cfa_cpp-TypeSubstitution.o `test -f 'SynTree/TypeSubstitution.cc' || echo '$(srcdir)/'`SynTree/TypeSubstitution.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TypeSubstitution.cc' object='SynTree/driver_cfa_cpp-TypeSubstitution.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeSubstitution.o `test -f 'SynTree/TypeSubstitution.cc' || echo '$(srcdir)/'`SynTree/TypeSubstitution.cc
-
-SynTree/driver_cfa_cpp-TypeSubstitution.obj: SynTree/TypeSubstitution.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeSubstitution.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo -c -o SynTree/driver_cfa_cpp-TypeSubstitution.obj `if test -f 'SynTree/TypeSubstitution.cc'; then $(CYGPATH_W) 'SynTree/TypeSubstitution.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeSubstitution.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/TypeSubstitution.cc' object='SynTree/driver_cfa_cpp-TypeSubstitution.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeSubstitution.obj `if test -f 'SynTree/TypeSubstitution.cc'; then $(CYGPATH_W) 'SynTree/TypeSubstitution.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeSubstitution.cc'; fi`
-
-SynTree/driver_cfa_cpp-Attribute.o: SynTree/Attribute.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Attribute.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Tpo -c -o SynTree/driver_cfa_cpp-Attribute.o `test -f 'SynTree/Attribute.cc' || echo '$(srcdir)/'`SynTree/Attribute.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Attribute.cc' object='SynTree/driver_cfa_cpp-Attribute.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Attribute.o `test -f 'SynTree/Attribute.cc' || echo '$(srcdir)/'`SynTree/Attribute.cc
-
-SynTree/driver_cfa_cpp-Attribute.obj: SynTree/Attribute.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Attribute.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Tpo -c -o SynTree/driver_cfa_cpp-Attribute.obj `if test -f 'SynTree/Attribute.cc'; then $(CYGPATH_W) 'SynTree/Attribute.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Attribute.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/Attribute.cc' object='SynTree/driver_cfa_cpp-Attribute.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Attribute.obj `if test -f 'SynTree/Attribute.cc'; then $(CYGPATH_W) 'SynTree/Attribute.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Attribute.cc'; fi`
-
-SynTree/driver_cfa_cpp-DeclReplacer.o: SynTree/DeclReplacer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclReplacer.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Tpo -c -o SynTree/driver_cfa_cpp-DeclReplacer.o `test -f 'SynTree/DeclReplacer.cc' || echo '$(srcdir)/'`SynTree/DeclReplacer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/DeclReplacer.cc' object='SynTree/driver_cfa_cpp-DeclReplacer.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclReplacer.o `test -f 'SynTree/DeclReplacer.cc' || echo '$(srcdir)/'`SynTree/DeclReplacer.cc
-
-SynTree/driver_cfa_cpp-DeclReplacer.obj: SynTree/DeclReplacer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclReplacer.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Tpo -c -o SynTree/driver_cfa_cpp-DeclReplacer.obj `if test -f 'SynTree/DeclReplacer.cc'; then $(CYGPATH_W) 'SynTree/DeclReplacer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclReplacer.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/DeclReplacer.cc' object='SynTree/driver_cfa_cpp-DeclReplacer.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclReplacer.obj `if test -f 'SynTree/DeclReplacer.cc'; then $(CYGPATH_W) 'SynTree/DeclReplacer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclReplacer.cc'; fi`
-
-Tuples/driver_cfa_cpp-TupleAssignment.o: Tuples/TupleAssignment.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-TupleAssignment.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo -c -o Tuples/driver_cfa_cpp-TupleAssignment.o `test -f 'Tuples/TupleAssignment.cc' || echo '$(srcdir)/'`Tuples/TupleAssignment.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tuples/TupleAssignment.cc' object='Tuples/driver_cfa_cpp-TupleAssignment.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-TupleAssignment.o `test -f 'Tuples/TupleAssignment.cc' || echo '$(srcdir)/'`Tuples/TupleAssignment.cc
-
-Tuples/driver_cfa_cpp-TupleAssignment.obj: Tuples/TupleAssignment.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-TupleAssignment.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo -c -o Tuples/driver_cfa_cpp-TupleAssignment.obj `if test -f 'Tuples/TupleAssignment.cc'; then $(CYGPATH_W) 'Tuples/TupleAssignment.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleAssignment.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tuples/TupleAssignment.cc' object='Tuples/driver_cfa_cpp-TupleAssignment.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-TupleAssignment.obj `if test -f 'Tuples/TupleAssignment.cc'; then $(CYGPATH_W) 'Tuples/TupleAssignment.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleAssignment.cc'; fi`
-
-Tuples/driver_cfa_cpp-TupleExpansion.o: Tuples/TupleExpansion.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-TupleExpansion.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-TupleExpansion.Tpo -c -o Tuples/driver_cfa_cpp-TupleExpansion.o `test -f 'Tuples/TupleExpansion.cc' || echo '$(srcdir)/'`Tuples/TupleExpansion.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-TupleExpansion.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-TupleExpansion.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tuples/TupleExpansion.cc' object='Tuples/driver_cfa_cpp-TupleExpansion.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-TupleExpansion.o `test -f 'Tuples/TupleExpansion.cc' || echo '$(srcdir)/'`Tuples/TupleExpansion.cc
-
-Tuples/driver_cfa_cpp-TupleExpansion.obj: Tuples/TupleExpansion.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-TupleExpansion.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-TupleExpansion.Tpo -c -o Tuples/driver_cfa_cpp-TupleExpansion.obj `if test -f 'Tuples/TupleExpansion.cc'; then $(CYGPATH_W) 'Tuples/TupleExpansion.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleExpansion.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-TupleExpansion.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-TupleExpansion.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tuples/TupleExpansion.cc' object='Tuples/driver_cfa_cpp-TupleExpansion.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-TupleExpansion.obj `if test -f 'Tuples/TupleExpansion.cc'; then $(CYGPATH_W) 'Tuples/TupleExpansion.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleExpansion.cc'; fi`
-
-Tuples/driver_cfa_cpp-Explode.o: Tuples/Explode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-Explode.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-Explode.Tpo -c -o Tuples/driver_cfa_cpp-Explode.o `test -f 'Tuples/Explode.cc' || echo '$(srcdir)/'`Tuples/Explode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-Explode.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-Explode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tuples/Explode.cc' object='Tuples/driver_cfa_cpp-Explode.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-Explode.o `test -f 'Tuples/Explode.cc' || echo '$(srcdir)/'`Tuples/Explode.cc
-
-Tuples/driver_cfa_cpp-Explode.obj: Tuples/Explode.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-Explode.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-Explode.Tpo -c -o Tuples/driver_cfa_cpp-Explode.obj `if test -f 'Tuples/Explode.cc'; then $(CYGPATH_W) 'Tuples/Explode.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Explode.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-Explode.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-Explode.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tuples/Explode.cc' object='Tuples/driver_cfa_cpp-Explode.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-Explode.obj `if test -f 'Tuples/Explode.cc'; then $(CYGPATH_W) 'Tuples/Explode.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Explode.cc'; fi`
-
-Validate/driver_cfa_cpp-HandleAttributes.o: Validate/HandleAttributes.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Validate/driver_cfa_cpp-HandleAttributes.o -MD -MP -MF Validate/$(DEPDIR)/driver_cfa_cpp-HandleAttributes.Tpo -c -o Validate/driver_cfa_cpp-HandleAttributes.o `test -f 'Validate/HandleAttributes.cc' || echo '$(srcdir)/'`Validate/HandleAttributes.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Validate/$(DEPDIR)/driver_cfa_cpp-HandleAttributes.Tpo Validate/$(DEPDIR)/driver_cfa_cpp-HandleAttributes.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Validate/HandleAttributes.cc' object='Validate/driver_cfa_cpp-HandleAttributes.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Validate/driver_cfa_cpp-HandleAttributes.o `test -f 'Validate/HandleAttributes.cc' || echo '$(srcdir)/'`Validate/HandleAttributes.cc
-
-Validate/driver_cfa_cpp-HandleAttributes.obj: Validate/HandleAttributes.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Validate/driver_cfa_cpp-HandleAttributes.obj -MD -MP -MF Validate/$(DEPDIR)/driver_cfa_cpp-HandleAttributes.Tpo -c -o Validate/driver_cfa_cpp-HandleAttributes.obj `if test -f 'Validate/HandleAttributes.cc'; then $(CYGPATH_W) 'Validate/HandleAttributes.cc'; else $(CYGPATH_W) '$(srcdir)/Validate/HandleAttributes.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Validate/$(DEPDIR)/driver_cfa_cpp-HandleAttributes.Tpo Validate/$(DEPDIR)/driver_cfa_cpp-HandleAttributes.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Validate/HandleAttributes.cc' object='Validate/driver_cfa_cpp-HandleAttributes.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Validate/driver_cfa_cpp-HandleAttributes.obj `if test -f 'Validate/HandleAttributes.cc'; then $(CYGPATH_W) 'Validate/HandleAttributes.cc'; else $(CYGPATH_W) '$(srcdir)/Validate/HandleAttributes.cc'; fi`
-
-Virtual/driver_cfa_cpp-ExpandCasts.o: Virtual/ExpandCasts.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Virtual/driver_cfa_cpp-ExpandCasts.o -MD -MP -MF Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Tpo -c -o Virtual/driver_cfa_cpp-ExpandCasts.o `test -f 'Virtual/ExpandCasts.cc' || echo '$(srcdir)/'`Virtual/ExpandCasts.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Tpo Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Virtual/ExpandCasts.cc' object='Virtual/driver_cfa_cpp-ExpandCasts.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Virtual/driver_cfa_cpp-ExpandCasts.o `test -f 'Virtual/ExpandCasts.cc' || echo '$(srcdir)/'`Virtual/ExpandCasts.cc
-
-Virtual/driver_cfa_cpp-ExpandCasts.obj: Virtual/ExpandCasts.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Virtual/driver_cfa_cpp-ExpandCasts.obj -MD -MP -MF Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Tpo -c -o Virtual/driver_cfa_cpp-ExpandCasts.obj `if test -f 'Virtual/ExpandCasts.cc'; then $(CYGPATH_W) 'Virtual/ExpandCasts.cc'; else $(CYGPATH_W) '$(srcdir)/Virtual/ExpandCasts.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Tpo Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Virtual/ExpandCasts.cc' object='Virtual/driver_cfa_cpp-ExpandCasts.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Virtual/driver_cfa_cpp-ExpandCasts.obj `if test -f 'Virtual/ExpandCasts.cc'; then $(CYGPATH_W) 'Virtual/ExpandCasts.cc'; else $(CYGPATH_W) '$(srcdir)/Virtual/ExpandCasts.cc'; fi`
 
 .ll.cc:
@@ -2744,5 +1312,5 @@
 check: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(LIBRARIES) $(PROGRAMS)
 installdirs:
 	for dir in "$(DESTDIR)$(cfa_cpplibdir)"; do \
@@ -2770,4 +1338,5 @@
 	fi
 mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
 clean-generic:
@@ -2776,4 +1345,5 @@
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f ../driver/$(am__dirstamp)
 	-rm -f CodeGen/$(DEPDIR)/$(am__dirstamp)
 	-rm -f CodeGen/$(am__dirstamp)
@@ -2804,5 +1374,4 @@
 	-rm -f Virtual/$(DEPDIR)/$(am__dirstamp)
 	-rm -f Virtual/$(am__dirstamp)
-	-rm -f driver/$(am__dirstamp)
 
 maintainer-clean-generic:
@@ -2816,5 +1385,6 @@
 clean: clean-am
 
-clean-am: clean-cfa_cpplibPROGRAMS clean-generic mostlyclean-am
+clean-am: clean-cfa_cpplibPROGRAMS clean-generic clean-noinstLIBRARIES \
+	mostlyclean-am
 
 distclean: distclean-am
@@ -2886,16 +1456,17 @@
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
-	clean-cfa_cpplibPROGRAMS clean-generic cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-cfa_cpplibPROGRAMS install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-cfa_cpplibPROGRAMS
+	clean-cfa_cpplibPROGRAMS clean-generic clean-noinstLIBRARIES \
+	cscopelist-am ctags ctags-am distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am \
+	install-cfa_cpplibPROGRAMS install-data install-data-am \
+	install-dvi install-dvi-am install-exec install-exec-am \
+	install-html install-html-am install-info install-info-am \
+	install-man install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-cfa_cpplibPROGRAMS
 
 .PRECIOUS: Makefile
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/Parser/lex.ll	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Wed Jun 20 09:08:28 2018
- * Update Count     : 682
+ * Last Modified On : Wed Aug  8 17:23:17 2018
+ * Update Count     : 685
  */
 
@@ -410,4 +410,5 @@
 ">>="			{ NAMEDOP_RETURN(RSassign); }
 
+"~="			{ NAMEDOP_RETURN(Erange); }				// CFA
 "@="			{ NAMEDOP_RETURN(ATassign); }			// CFA
 
Index: src/Parser/module.mk
===================================================================
--- src/Parser/module.mk	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/Parser/module.mk	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -6,5 +6,5 @@
 ## file "LICENCE" distributed with Cforall.
 ##
-## module.mk -- 
+## module.mk --
 ##
 ## Author           : Peter A. Buhr
@@ -31,3 +31,3 @@
        Parser/parserutility.cc
 
-MAINTAINERCLEANFILES += Parser/parser.output
+MOSTLYCLEANFILES += Parser/parser.hh Parser/parser.output
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/Parser/parser.yy	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Aug  4 09:38:36 2018
-// Update Count     : 3986
+// Last Modified On : Wed Aug  8 17:50:07 2018
+// Update Count     : 3998
 //
 
@@ -186,8 +186,8 @@
 } // fieldDecl
 
-ForCtrl * forCtrl( ExpressionNode * type, string * index, ExpressionNode * start, ExpressionNode * comp, ExpressionNode * inc ) {
+ForCtrl * forCtrl( ExpressionNode * type, string * index, ExpressionNode * start, enum OperKinds compop, ExpressionNode * comp, ExpressionNode * inc ) {
 	return new ForCtrl(
 		distAttr( DeclarationNode::newTypeof( type ), DeclarationNode::newName( index )->addInitializer( new InitializerNode( start ) ) ),
-		new ExpressionNode( build_binary_val( OperKinds::LThan, new ExpressionNode( build_varref( new string( *index ) ) ), comp ) ),
+		new ExpressionNode( build_binary_val( compop, new ExpressionNode( build_varref( new string( *index ) ) ), comp ) ),
 		new ExpressionNode( build_binary_val( OperKinds::PlusAssn, new ExpressionNode( build_varref( new string( *index ) ) ), inc ) ) );
 } // forCtrl
@@ -227,4 +227,5 @@
 	IfCtrl * ifctl;
 	ForCtrl * fctl;
+	enum OperKinds compop;
 	LabelNode * label;
 	InitializerNode * in;
@@ -289,4 +290,5 @@
 %token ANDassign	ERassign	ORassign				// &=	^=	|=
 
+%token Erange											// ~=
 %token ATassign											// @=
 
@@ -311,4 +313,5 @@
 %type<ifctl> if_control_expression
 %type<fctl> for_control_expression
+%type<compop> inclexcl
 %type<en> subrange
 %type<decl> asm_name_opt
@@ -1135,12 +1138,12 @@
 				$$ = new ForCtrl( (ExpressionNode * )nullptr, (ExpressionNode * )nullptr, (ExpressionNode * )nullptr );
 			} else {
-				$$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), $1->clone(),
+				$$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), OperKinds::LThan, $1->clone(),
 							 new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
 			} // if
 		}
-	| constant_expression '~' constant_expression		// CFA
-		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $3, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
-	| constant_expression '~' constant_expression '~' constant_expression // CFA
-		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $3, $5 ); }
+	| constant_expression inclexcl constant_expression	// CFA
+		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
+	| constant_expression inclexcl constant_expression '~' constant_expression // CFA
+		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, $5 ); }
 	| comma_expression_opt ';' comma_expression			// CFA
 		{
@@ -1151,5 +1154,5 @@
 			} else {
 				if ( NameExpr *identifier = dynamic_cast<NameExpr *>($1->get_expr()) ) {
-					$$ = forCtrl( $3, new string( identifier->name ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), $3->clone(),
+					$$ = forCtrl( $3, new string( identifier->name ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), OperKinds::LThan, $3->clone(),
 								 new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
 				} else {
@@ -1158,5 +1161,5 @@
 			} // if
 		}
-	| comma_expression_opt ';' constant_expression '~' constant_expression // CFA
+	| comma_expression_opt ';' constant_expression inclexcl constant_expression // CFA
 		{
 			if ( ! $1 ) {
@@ -1164,5 +1167,5 @@
 			} else {
 				if ( NameExpr *identifier = dynamic_cast<NameExpr *>($1->get_expr()) ) {
-					$$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $5, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
+					$$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $4, $5, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
 				} else {
 					SemanticError( yylloc, "Expression disallowed. Only loop-index name allowed" ); $$ = nullptr;
@@ -1170,5 +1173,5 @@
 			} // if
 		}
-	| comma_expression_opt ';' constant_expression '~' constant_expression '~' constant_expression // CFA
+	| comma_expression_opt ';' constant_expression inclexcl constant_expression '~' constant_expression // CFA
 		{
 			if ( ! $1 ) {
@@ -1176,5 +1179,5 @@
 			} else {
 				if ( NameExpr *identifier = dynamic_cast<NameExpr *>($1->get_expr()) ) {
-					$$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $5, $7 );
+					$$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $4, $5, $7 );
 				} else {
 					SemanticError( yylloc, "Expression disallowed. Only loop-index name allowed" ); $$ = nullptr;
@@ -1186,4 +1189,11 @@
 	| declaration comma_expression_opt ';' comma_expression_opt // C99, declaration has ';'
 		{ $$ = new ForCtrl( $1, $2, $4 ); }
+ 	;
+
+inclexcl:
+	'~'
+		{ $$ = OperKinds::LThan; }
+	| Erange
+		{ $$ = OperKinds::LEThan; }
  	;
 
Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -25,4 +25,5 @@
 #include <vector>                  // for vector
 
+#include "CompilationState.h"      // for resolvep
 #include "Alternative.h"           // for AltList, Alternative
 #include "AlternativeFinder.h"
@@ -49,5 +50,4 @@
 #include "typeops.h"               // for adjustExprType, polyCost, castCost
 
-extern bool resolvep;
 #define PRINT( text ) if ( resolvep ) { text }
 //#define DEBUG_COST
Index: src/ResolvExpr/TypeEnvironment.cc
===================================================================
--- src/ResolvExpr/TypeEnvironment.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/ResolvExpr/TypeEnvironment.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -69,6 +69,6 @@
 	}
 
-	EqvClass::EqvClass( EqvClass &&other ) 
-	: vars{std::move(other.vars)}, type{other.type}, 
+	EqvClass::EqvClass( EqvClass &&other )
+	: vars{std::move(other.vars)}, type{other.type},
 	  allowWidening{std::move(other.allowWidening)}, data{std::move(other.data)} {
 		  other.type = nullptr;
@@ -85,5 +85,5 @@
 		if ( this == &other ) return *this;
 		delete type;
-		
+
 		vars = std::move(other.vars);
 		type = other.type;
@@ -132,5 +132,5 @@
 			++next;
 			std::set<std::string> intersection;
-			std::set_intersection( i->vars.begin(), i->vars.end(), eqvClass.vars.begin(), eqvClass.vars.end(), 
+			std::set_intersection( i->vars.begin(), i->vars.end(), eqvClass.vars.begin(), eqvClass.vars.end(),
 				std::inserter( intersection, intersection.begin() ) );
 			if ( ! intersection.empty() ) { env.erase( i ); }
@@ -240,4 +240,6 @@
 			// ttype unifies with any tuple type
 			return dynamic_cast< TupleType * >( type ) || Tuples::isTtype( type );
+		  default:
+			assertf(false, "Unhandled tyvar kind: %d", data.kind);
 		} // switch
 		return false;
@@ -245,5 +247,5 @@
 
 	bool TypeEnvironment::bindVar( TypeInstType *typeInst, Type *bindTo, const TypeDecl::Data & data, AssertionSet &need, AssertionSet &have, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer ) {
-		
+
 		// remove references from other, so that type variables can only bind to value types
 		bindTo = bindTo->stripReferences();
@@ -291,5 +293,5 @@
 		auto class1 = internal_lookup( var1->get_name() );
 		auto class2 = internal_lookup( var2->get_name() );
-		
+
 		// exit early if variables already bound together
 		if ( class1 != env.end() && class1 == class2 ) {
Index: src/SymTab/Demangle.cc
===================================================================
--- src/SymTab/Demangle.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ src/SymTab/Demangle.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,622 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// Demangler.cc --
+//
+// Author           : Rob Schluntz
+// Created On       : Thu Jul 19 12:52:41 2018
+// Last Modified By : Rob Schluntz
+// Last Modified On : Thu Jul 19 12:54:35 2018
+// Update Count     : 2
+//
+
+#include <algorithm>
+#include <sstream>
+
+#include "CodeGen/GenType.h"
+#include "Common/PassVisitor.h"
+#include "Mangler.h"
+#include "SynTree/Type.h"
+#include "SynTree/Declaration.h"
+
+#define DEBUG
+#ifdef DEBUG
+#define PRINT(x) x
+#else
+#define PRINT(x) {}
+#endif
+
+namespace {
+	struct GenType : public WithVisitorRef<GenType>, public WithShortCircuiting {
+		std::string typeString;
+		GenType( const std::string &typeString );
+
+		void previsit( BaseSyntaxNode * );
+		void postvisit( BaseSyntaxNode * );
+
+		void postvisit( FunctionType * funcType );
+		void postvisit( VoidType * voidType );
+		void postvisit( BasicType * basicType );
+		void postvisit( PointerType * pointerType );
+		void postvisit( ArrayType * arrayType );
+		void postvisit( ReferenceType * refType );
+		void postvisit( StructInstType * structInst );
+		void postvisit( UnionInstType * unionInst );
+		void postvisit( EnumInstType * enumInst );
+		void postvisit( TypeInstType * typeInst );
+		void postvisit( TupleType  * tupleType );
+		void postvisit( VarArgsType * varArgsType );
+		void postvisit( ZeroType * zeroType );
+		void postvisit( OneType * oneType );
+		void postvisit( GlobalScopeType * globalType );
+		void postvisit( QualifiedType * qualType );
+
+	  private:
+		void handleQualifiers( Type *type );
+		std::string handleGeneric( ReferenceToType * refType );
+		void genArray( const Type::Qualifiers &qualifiers, Type *base, Expression *dimension, bool isVarLen, bool isStatic );
+	};
+
+  std::string genDemangleType( Type * type, const std::string & baseString ) {
+		PassVisitor<GenType> gt( baseString );
+		assert( type );
+		type->accept( gt );
+		return gt.pass.typeString;
+  }
+
+	GenType::GenType( const std::string &typeString ) : typeString( typeString ) {}
+
+	// *** BaseSyntaxNode
+	void GenType::previsit( BaseSyntaxNode * ) {
+		// turn off automatic recursion for all nodes, to allow each visitor to
+		// precisely control the order in which its children are visited.
+		visit_children = false;
+	}
+
+	void GenType::postvisit( BaseSyntaxNode * node ) {
+		std::stringstream ss;
+		node->print( ss );
+		assertf( false, "Unhandled node reached in GenType: %s", ss.str().c_str() );
+	}
+
+	void GenType::postvisit( VoidType * voidType ) {
+		typeString = "void " + typeString;
+		handleQualifiers( voidType );
+	}
+
+	void GenType::postvisit( BasicType * basicType ) {
+		BasicType::Kind kind = basicType->kind;
+		assert( 0 <= kind && kind < BasicType::NUMBER_OF_BASIC_TYPES );
+		typeString = std::string( BasicType::typeNames[kind] ) + " " + typeString;
+		handleQualifiers( basicType );
+	}
+
+	void GenType::genArray( const Type::Qualifiers & qualifiers, Type * base, Expression *dimension, bool isVarLen, bool ) {
+		std::ostringstream os;
+		if ( typeString != "" ) {
+			if ( typeString[ 0 ] == '*' ) {
+				os << "(" << typeString << ")";
+			} else {
+				os << typeString;
+			} // if
+		} // if
+		os << "[";
+
+		if ( qualifiers.is_const ) {
+			os << "const ";
+		} // if
+		if ( qualifiers.is_volatile ) {
+			os << "volatile ";
+		} // if
+		if ( qualifiers.is_restrict ) {
+			os << "__restrict ";
+		} // if
+		if ( qualifiers.is_atomic ) {
+			os << "_Atomic ";
+		} // if
+		if ( dimension != 0 ) {
+			// TODO: ???
+			// PassVisitor<CodeGenerator> cg( os, pretty, genC, lineMarks );
+			// dimension->accept( cg );
+		} else if ( isVarLen ) {
+			// no dimension expression on a VLA means it came in with the * token
+			os << "*";
+		} // if
+		os << "]";
+
+		typeString = os.str();
+
+		base->accept( *visitor );
+	}
+
+	void GenType::postvisit( PointerType * pointerType ) {
+		assert( pointerType->base != 0);
+		if ( pointerType->get_isStatic() || pointerType->get_isVarLen() || pointerType->dimension ) {
+			assert(false);
+			genArray( pointerType->get_qualifiers(), pointerType->base, pointerType->dimension, pointerType->get_isVarLen(), pointerType->get_isStatic() );
+		} else {
+			handleQualifiers( pointerType );
+			if ( typeString[ 0 ] == '?' ) {
+				typeString = "* " + typeString;
+			} else {
+				typeString = "*" + typeString;
+			} // if
+			pointerType->base->accept( *visitor );
+		} // if
+	}
+
+	void GenType::postvisit( ArrayType * arrayType ) {
+		genArray( arrayType->get_qualifiers(), arrayType->base, arrayType->dimension, arrayType->get_isVarLen(), arrayType->get_isStatic() );
+	}
+
+	void GenType::postvisit( ReferenceType * refType ) {
+		assert( false );
+		assert( refType->base != 0);
+		handleQualifiers( refType );
+		typeString = "&" + typeString;
+		refType->base->accept( *visitor );
+	}
+
+	void GenType::postvisit( FunctionType * funcType ) {
+		std::ostringstream os;
+
+		if ( typeString != "" ) {
+			if ( typeString[0] == '*' ) {
+				os << "(" << typeString << ")";
+			} else {
+				os << typeString;
+			} // if
+		} // if
+
+		/************* parameters ***************/
+		const std::list<DeclarationWithType *> &pars = funcType->parameters;
+
+		if ( pars.empty() ) {
+			if ( funcType->get_isVarArgs() ) {
+				os << "()";
+			} else {
+				os << "(void)";
+			} // if
+		} else {
+			os << "(" ;
+
+			unsigned int i = 0;
+			for (DeclarationWithType * p : pars) {
+				os << genDemangleType( p->get_type(), "" );
+				if (++i != pars.size()) os << ", ";
+			}
+
+			if ( funcType->get_isVarArgs() ) {
+				os << ", ...";
+			} // if
+			os << ")";
+		} // if
+
+		typeString = os.str();
+
+		if ( funcType->returnVals.size() == 0 ) {
+			typeString += ": void";
+		} else {
+			typeString += ": " + genDemangleType(funcType->returnVals.front()->get_type(), "");
+		} // if
+
+		// add forall
+		if( ! funcType->forall.empty() ) {
+			std::ostringstream os;
+			os << "forall(";
+			unsigned int i = 0;
+			for ( auto td : funcType->forall ) {
+				os << td->typeString() << " " << td->name;
+				if (! td->assertions.empty()) {
+					os << " | { ";
+					unsigned int j = 0;
+					for (DeclarationWithType * assert : td->assertions) {
+						os << genDemangleType(assert->get_type(), assert->name);
+						if (++j != td->assertions.size()) os << ", ";
+					}
+					os << "}";
+				}
+				if (++i != funcType->forall.size()) os << ", ";
+			}
+			os << ")";
+			typeString = typeString + " -> " + os.str();
+		}
+	}
+
+	std::string GenType::handleGeneric( ReferenceToType * refType ) {
+		if ( ! refType->parameters.empty() ) {
+			std::ostringstream os;
+			// TODO: ???
+			// PassVisitor<CodeGenerator> cg( os, pretty, genC, lineMarks );
+			os << "(";
+			// cg.pass.genCommaList( refType->parameters.begin(), refType->parameters.end() );
+			os << ") ";
+			return os.str();
+		}
+		return "";
+	}
+
+	void GenType::postvisit( StructInstType * structInst )  {
+		typeString = "struct " + structInst->name + handleGeneric( structInst ) + " " + typeString;
+		handleQualifiers( structInst );
+	}
+
+	void GenType::postvisit( UnionInstType * unionInst ) {
+		typeString = "union " + unionInst->name + handleGeneric( unionInst ) + " " + typeString;
+		handleQualifiers( unionInst );
+	}
+
+	void GenType::postvisit( EnumInstType * enumInst ) {
+		typeString = "enum " + enumInst->name + " " + typeString;
+		handleQualifiers( enumInst );
+	}
+
+	void GenType::postvisit( TypeInstType * typeInst ) {
+		typeString = typeInst->name + " " + typeString;
+		handleQualifiers( typeInst );
+	}
+
+	void GenType::postvisit( TupleType * tupleType ) {
+		unsigned int i = 0;
+		std::ostringstream os;
+		os << "[";
+		for ( Type * t : *tupleType ) {
+			i++;
+			os << genDemangleType( t, "" ) << (i == tupleType->size() ? "" : ", ");
+		}
+		os << "] ";
+		typeString = os.str() + typeString;
+	}
+
+	void GenType::postvisit( VarArgsType * varArgsType ) {
+		typeString = "__builtin_va_list " + typeString;
+		handleQualifiers( varArgsType );
+	}
+
+	void GenType::postvisit( ZeroType * zeroType ) {
+		// ideally these wouldn't hit codegen at all, but should be safe to make them ints
+		typeString = "zero_t " + typeString;
+		handleQualifiers( zeroType );
+	}
+
+	void GenType::postvisit( OneType * oneType ) {
+		// ideally these wouldn't hit codegen at all, but should be safe to make them ints
+		typeString = "one_t " + typeString;
+		handleQualifiers( oneType );
+	}
+
+	void GenType::postvisit( GlobalScopeType * globalType ) {
+		handleQualifiers( globalType );
+	}
+
+	void GenType::postvisit( QualifiedType * qualType ) {
+		std::ostringstream os;
+		os << genDemangleType( qualType->parent, "" ) << "." << genDemangleType( qualType->child, "" ) << typeString;
+		typeString = os.str();
+		handleQualifiers( qualType );
+	}
+
+	void GenType::handleQualifiers( Type * type ) {
+		if ( type->get_const() ) {
+			typeString = "const " + typeString;
+		} // if
+		if ( type->get_volatile() ) {
+			typeString = "volatile " + typeString;
+		} // if
+		if ( type->get_restrict() ) {
+			typeString = "__restrict " + typeString;
+		} // if
+		if ( type->get_atomic() ) {
+			typeString = "_Atomic " + typeString;
+		} // if
+		if ( type->get_lvalue() ) {
+			// when not generating C code, print lvalue for debugging.
+			typeString = "lvalue " + typeString;
+		}
+	}
+}
+
+
+namespace SymTab {
+	namespace Mangler {
+		namespace {
+			struct StringView {
+			private:
+				std::string str;
+				size_t idx = 0;
+				// typedef Type * (StringView::*parser)(Type::Qualifiers);
+				typedef std::function<Type * (Type::Qualifiers)> parser;
+				std::vector<std::pair<std::string, parser>> parsers;
+			public:
+				StringView(const std::string & str);
+
+				bool done() const { return idx >= str.size(); }
+				char cur() const { assert(! done()); return str[idx]; }
+
+				bool expect(char ch) { return str[idx++] == ch;	}
+				void next(size_t inc = 1) { idx += inc; }
+
+				/// determines if `pref` is a prefix of `str`
+				bool isPrefix(const std::string & pref);
+				bool extractNumber(size_t & out);
+				bool extractName(std::string & out);
+				bool stripMangleName(std::string & name);
+
+				Type * parseFunction(Type::Qualifiers tq);
+				Type * parseTuple(Type::Qualifiers tq);
+				Type * parseVoid(Type::Qualifiers tq);
+				Type * parsePointer(Type::Qualifiers tq);
+				Type * parseArray(Type::Qualifiers tq);
+				Type * parseStruct(Type::Qualifiers tq);
+				Type * parseUnion(Type::Qualifiers tq);
+				Type * parseEnum(Type::Qualifiers tq);
+				Type * parseType(Type::Qualifiers tq);
+
+				Type * parseType();
+				bool parse(std::string & name, Type *& type);
+			};
+
+			StringView::StringView(const std::string & str) : str(str) {
+				// basic types
+				for (size_t k = 0; k < BasicType::NUMBER_OF_BASIC_TYPES; ++k) {
+					parsers.emplace_back(Encoding::basicTypes[k], [k](Type::Qualifiers tq) {
+						PRINT( std::cerr << "basic type: " << k << std::endl; )
+						return new BasicType(tq, (BasicType::Kind)k);
+					});
+				}
+				// type variable types
+				for (size_t k = 0; k < TypeDecl::NUMBER_OF_KINDS; ++k) {
+					static const std::string typeVariableNames[] = { "DT", "FT", "TT", };
+					static_assert(
+						sizeof(typeVariableNames)/sizeof(typeVariableNames[0]) == TypeDecl::NUMBER_OF_KINDS,
+						"Each type variable kind should have a demangle name prefix"
+					);
+					parsers.emplace_back(Encoding::typeVariables[k], [k, this](Type::Qualifiers tq) -> TypeInstType * {
+						PRINT( std::cerr << "type variable type: " << k << std::endl; )
+						size_t N;
+						if (! extractNumber(N)) return nullptr;
+						return new TypeInstType(tq, toString(typeVariableNames[k], N), (TypeDecl::Kind)k != TypeDecl::Ftype);
+					});
+				}
+				// everything else
+				parsers.emplace_back(Encoding::void_t, [this](Type::Qualifiers tq) { return parseVoid(tq); });
+				parsers.emplace_back(Encoding::function, [this](Type::Qualifiers tq) { return parseFunction(tq); });
+				parsers.emplace_back(Encoding::pointer, [this](Type::Qualifiers tq) { return parsePointer(tq); });
+				parsers.emplace_back(Encoding::array, [this](Type::Qualifiers tq) { return parseArray(tq); });
+				parsers.emplace_back(Encoding::tuple, [this](Type::Qualifiers tq) { return parseTuple(tq); });
+				parsers.emplace_back(Encoding::struct_t, [this](Type::Qualifiers tq) { return parseStruct(tq); });
+				parsers.emplace_back(Encoding::union_t, [this](Type::Qualifiers tq) { return parseUnion(tq); });
+				parsers.emplace_back(Encoding::enum_t, [this](Type::Qualifiers tq) { return parseEnum(tq); });
+				parsers.emplace_back(Encoding::type, [this](Type::Qualifiers tq) { return parseType(tq); });
+				parsers.emplace_back(Encoding::zero, [this](Type::Qualifiers tq) { return new ZeroType(tq); });
+				parsers.emplace_back(Encoding::one, [this](Type::Qualifiers tq) { return new OneType(tq); });
+			}
+
+			bool StringView::extractNumber(size_t & out) {
+				std::stringstream numss;
+				if (idx >= str.size()) return false;
+				while (isdigit(str[idx])) {
+					numss << str[idx];
+					++idx;
+					if (idx == str.size()) break;
+				}
+				if (! (numss >> out)) return false;
+				PRINT( std::cerr << "extractNumber success: " << out << std::endl; )
+				return true;
+			}
+
+			bool StringView::extractName(std::string & out) {
+				size_t len;
+				if (! extractNumber(len)) return false;
+				if (idx+len > str.size()) return false;
+				out = str.substr(idx, len);
+				idx += len;
+				PRINT( std::cerr << "extractName success: " << out << std::endl; )
+				return true;
+			}
+
+			bool StringView::isPrefix(const std::string & pref) {
+				if ( pref.size() > str.size()-idx ) return false;
+				auto its = std::mismatch( pref.begin(), pref.end(), std::next(str.begin(), idx) );
+				if (its.first == pref.end()) {
+					idx += pref.size();
+					return true;
+				}
+				return false;
+			}
+
+			// strips __NAME__cfa__TYPE_N, where N is [0-9]+: returns str is a match is found, returns empty string otherwise
+			bool StringView::stripMangleName(std::string & name) {
+				PRINT( std::cerr << "====== " << str.size() << " " << str << std::endl; )
+				if (str.size() < 2+Encoding::manglePrefix.size()) return false; // +2 for at least _1 suffix
+				if (! isPrefix(Encoding::manglePrefix) || ! isdigit(str.back())) return false;
+
+				// get name
+				if (! extractName(name)) return false;
+
+				// find bounds for type
+				PRINT( std::cerr << idx << " " << str.size() << std::endl; )
+				PRINT( std::cerr << "[");
+				while (isdigit(str.back())) {
+					PRINT(std::cerr << ".");
+					str.pop_back();
+					if (str.size() <= idx) return false;
+				}
+				PRINT( std::cerr << "]" << std::endl );
+				if (str.back() != '_') return false;
+				str.pop_back();
+				PRINT( std::cerr << str.size() << " " << name << " " << str.substr(idx) << std::endl; )
+				return str.size() > idx;
+			}
+
+			Type * StringView::parseFunction(Type::Qualifiers tq) {
+				PRINT( std::cerr << "function..." << std::endl; )
+				if (done()) return nullptr;
+				FunctionType * ftype = new FunctionType( tq, false );
+				std::unique_ptr<Type> manager(ftype);
+				Type * retVal = parseType();
+				if (! retVal) return nullptr;
+				PRINT( std::cerr << "with return type: " << retVal << std::endl; )
+				ftype->returnVals.push_back(ObjectDecl::newObject("", retVal, nullptr));
+				if (done() || ! expect('_')) return nullptr;
+				while (! done()) {
+					PRINT( std::cerr << "got ch: " << cur() << std::endl; )
+					if (cur() == '_') return manager.release();
+					Type * param = parseType();
+					if (! param) return nullptr;
+					PRINT( std::cerr << "with parameter : " << param << std::endl; )
+					ftype->parameters.push_back(ObjectDecl::newObject("", param, nullptr));
+				}
+				return nullptr;
+			}
+
+			Type * StringView::parseTuple(Type::Qualifiers tq) {
+				PRINT( std::cerr << "tuple..." << std::endl; )
+				std::list< Type * > types;
+				size_t ncomponents;
+				if (! extractNumber(ncomponents)) return nullptr;
+				for (size_t i = 0; i < ncomponents; ++i) {
+					// TODO: delete all on return
+					if (done()) return nullptr;
+					PRINT( std::cerr << "got ch: " << cur() << std::endl; )
+					Type * t = parseType();
+					if (! t) return nullptr;
+					PRINT( std::cerr << "with type : " << t << std::endl; )
+					types.push_back(t);
+				}
+				return new TupleType( tq, types );
+			}
+
+			Type * StringView::parseVoid(Type::Qualifiers tq) {
+				return new VoidType( tq );
+			}
+
+			Type * StringView::parsePointer(Type::Qualifiers tq) {
+				PRINT( std::cerr << "pointer..." << std::endl; )
+				Type * t = parseType();
+				if (! t) return nullptr;
+				return new PointerType( tq, t );
+			}
+
+			Type * StringView::parseArray(Type::Qualifiers tq) {
+				PRINT( std::cerr << "array..." << std::endl; )
+				size_t length;
+				if (! extractNumber(length)) return nullptr;
+				Type * t = parseType();
+				if (! t) return nullptr;
+				return new ArrayType( tq, t, new ConstantExpr( Constant::from_ulong(length) ), false, false );
+			}
+
+			Type * StringView::parseStruct(Type::Qualifiers tq) {
+				PRINT( std::cerr << "struct..." << std::endl; )
+				std::string name;
+				if (! extractName(name)) return nullptr;
+				return new StructInstType(tq, name);
+			}
+
+			Type * StringView::parseUnion(Type::Qualifiers tq) {
+				PRINT( std::cerr << "union..." << std::endl; )
+				std::string name;
+				if (! extractName(name)) return nullptr;
+				return new UnionInstType(tq, name);
+			}
+
+			Type * StringView::parseEnum(Type::Qualifiers tq) {
+				PRINT( std::cerr << "enum..." << std::endl; )
+				std::string name;
+				if (! extractName(name)) return nullptr;
+				return new EnumInstType(tq, name);
+			}
+
+			Type * StringView::parseType(Type::Qualifiers tq) {
+				PRINT( std::cerr << "type..." << std::endl; )
+				std::string name;
+				if (! extractName(name)) return nullptr;
+				PRINT( std::cerr << "typename..." << name << std::endl; )
+				return new TypeInstType(tq, name, false);
+			}
+
+			Type * StringView::parseType() {
+				if (done()) return nullptr;
+
+				std::list<TypeDecl *> forall;
+				if (isPrefix(Encoding::forall)) {
+					PRINT( std::cerr << "polymorphic with..." << std::endl; )
+					size_t dcount, fcount, vcount, acount;
+					if (! extractNumber(dcount)) return nullptr;
+					PRINT( std::cerr << dcount << " dtypes" << std::endl; )
+					if (! expect('_')) return nullptr;
+					if (! extractNumber(fcount)) return nullptr;
+					PRINT( std::cerr << fcount << " ftypes" << std::endl; )
+					if (! expect('_')) return nullptr;
+					if (! extractNumber(vcount)) return nullptr;
+					PRINT( std::cerr << vcount << " ttypes" << std::endl; )
+					if (! expect('_')) return nullptr;
+					if (! extractNumber(acount)) return nullptr;
+					PRINT( std::cerr << acount << " assertions" << std::endl; )
+					if (! expect('_')) return nullptr;
+					for (size_t i = 0; i < acount; ++i) {
+						// TODO: need to recursively parse assertions, but for now just return nullptr so that
+						// demangler does not crash if there are assertions
+						return nullptr;
+					}
+					if (! expect('_')) return nullptr;
+				}
+
+				// qualifiers
+				Type::Qualifiers tq;
+				while (true) {
+					auto qual = std::find_if(Encoding::qualifiers.begin(), Encoding::qualifiers.end(), [this](decltype(Encoding::qualifiers)::value_type val) {
+						return isPrefix(val.second);
+					});
+					if (qual == Encoding::qualifiers.end()) break;
+					tq |= qual->first;
+				}
+
+				// find the correct type parser and use it
+				auto iter = std::find_if(parsers.begin(), parsers.end(), [this](std::pair<std::string, parser> & p) {
+					return isPrefix(p.first);
+				});
+				assertf(iter != parsers.end(), "Unhandled type letter: %c at index: %zd", cur(), idx);
+				Type * ret = iter->second(tq);
+				if (! ret) return nullptr;
+				ret->forall = std::move(forall);
+				return ret;
+			}
+
+			bool StringView::parse(std::string & name, Type *& type) {
+				if (! stripMangleName(name)) return false;
+				PRINT( std::cerr << "stripped name: " << name << std::endl; )
+				Type * t = parseType();
+				if (! t) return false;
+				type = t;
+				return true;
+			}
+
+			std::string demangle(const std::string & mangleName) {
+				SymTab::Mangler::StringView view(mangleName);
+				std::string name;
+				Type * type = nullptr;
+				if (! view.parse(name, type)) return mangleName;
+				std::unique_ptr<Type> manager(type);
+				return genDemangleType(type, name);
+			}
+		} // namespace
+	} // namespace Mangler
+} // namespace SymTab
+
+extern "C" {
+	char * cforall_demangle(const char * mangleName, int option __attribute__((unused))) {
+		const std::string & demangleName = SymTab::Mangler::demangle(mangleName);
+		return strdup(demangleName.c_str());
+	}
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/SymTab/Mangler.cc
===================================================================
--- src/SymTab/Mangler.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/SymTab/Mangler.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -73,4 +73,5 @@
 				bool mangleGenericParams;       ///< Include generic parameters in name mangling if true
 				bool inFunctionType = false;    ///< Include type qualifiers if false.
+				bool inQualifiedType = false;   ///< Add start/end delimiters around qualified type
 
 				void mangleDecl( DeclarationWithType *declaration );
@@ -110,12 +111,11 @@
 					isTopLevel = false;
 				} // if
-				mangleName << "__";
+				mangleName << Encoding::manglePrefix;
 				CodeGen::OperatorInfo opInfo;
 				if ( operatorLookup( declaration->get_name(), opInfo ) ) {
-					mangleName << opInfo.outputName;
+					mangleName << opInfo.outputName.size() << opInfo.outputName;
 				} else {
-					mangleName << declaration->get_name();
-				} // if
-				mangleName << "__";
+					mangleName << declaration->name.size() << declaration->name;
+				} // if
 				maybeAccept( declaration->get_type(), *visitor );
 				if ( mangleOverridable && LinkageSpec::isOverridable( declaration->get_linkage() ) ) {
@@ -123,7 +123,7 @@
 					// so they need a different name mangling
 					if ( declaration->get_linkage() == LinkageSpec::AutoGen ) {
-						mangleName << "autogen__";
+						mangleName << Encoding::autogen;
 					} else if ( declaration->get_linkage() == LinkageSpec::Intrinsic ) {
-						mangleName << "intrinsic__";
+						mangleName << Encoding::intrinsic;
 					} else {
 						// if we add another kind of overridable function, this has to change
@@ -144,43 +144,11 @@
 			void Mangler::postvisit( VoidType * voidType ) {
 				printQualifiers( voidType );
-				mangleName << "v";
+				mangleName << Encoding::void_t;
 			}
 
 			void Mangler::postvisit( BasicType * basicType ) {
-				static const char *btLetter[] = {
-					"b",	// Bool
-					"c",	// Char
-					"Sc",	// SignedChar
-					"Uc",	// UnsignedChar
-					"s",	// ShortSignedInt
-					"Us",	// ShortUnsignedInt
-					"i",	// SignedInt
-					"Ui",	// UnsignedInt
-					"l",	// LongSignedInt
-					"Ul",	// LongUnsignedInt
-					"q",	// LongLongSignedInt
-					"Uq",	// LongLongUnsignedInt
-					"f",	// Float
-					"d",	// Double
-					"r",	// LongDouble
-					"Xf",	// FloatComplex
-					"Xd",	// DoubleComplex
-					"Xr",	// LongDoubleComplex
-					"If",	// FloatImaginary
-					"Id",	// DoubleImaginary
-					"Ir",	// LongDoubleImaginary
-					"w",	// SignedInt128
-					"Uw",	// UnsignedInt128
-					"x",	// Float80
-					"y",	// Float128
-				};
-				static_assert(
-					sizeof(btLetter)/sizeof(btLetter[0]) == BasicType::NUMBER_OF_BASIC_TYPES,
-					"Each basic type kind should have a corresponding mangler letter"
-				);
-
 				printQualifiers( basicType );
-				assert( basicType->get_kind() < sizeof(btLetter)/sizeof(btLetter[0]) );
-				mangleName << btLetter[ basicType->get_kind() ];
+				assertf( basicType->get_kind() < BasicType::NUMBER_OF_BASIC_TYPES, "Unhandled basic type: %d", basicType->get_kind() );
+				mangleName << Encoding::basicTypes[ basicType->get_kind() ];
 			}
 
@@ -188,5 +156,5 @@
 				printQualifiers( pointerType );
 				// mangle void (*f)() and void f() to the same name to prevent overloading on functions and function pointers
-				if ( ! dynamic_cast<FunctionType *>( pointerType->base ) ) mangleName << "P";
+				if ( ! dynamic_cast<FunctionType *>( pointerType->base ) ) mangleName << Encoding::pointer;
 				maybeAccept( pointerType->base, *visitor );
 			}
@@ -195,5 +163,5 @@
 				// TODO: encode dimension
 				printQualifiers( arrayType );
-				mangleName << "A0";
+				mangleName << Encoding::array << "0";
 				maybeAccept( arrayType->base, *visitor );
 			}
@@ -220,5 +188,5 @@
 			void Mangler::postvisit( FunctionType * functionType ) {
 				printQualifiers( functionType );
-				mangleName << "F";
+				mangleName << Encoding::function;
 				// turn on inFunctionType so that printQualifiers does not print most qualifiers for function parameters,
 				// since qualifiers on outermost parameter type do not differentiate function types, e.g.,
@@ -227,5 +195,6 @@
 				inFunctionType = true;
 				std::list< Type* > returnTypes = getTypes( functionType->returnVals );
-				acceptAll( returnTypes, *visitor );
+				if (returnTypes.empty()) mangleName << Encoding::void_t;
+				else acceptAll( returnTypes, *visitor );
 				mangleName << "_";
 				std::list< Type* > paramTypes = getTypes( functionType->parameters );
@@ -237,5 +206,5 @@
 				printQualifiers( refType );
 
-				mangleName << ( refType->name.length() + prefix.length() ) << prefix << refType->name;
+				mangleName << prefix << refType->name.length() << refType->name;
 
 				if ( mangleGenericParams ) {
@@ -254,13 +223,13 @@
 
 			void Mangler::postvisit( StructInstType * aggregateUseType ) {
-				mangleRef( aggregateUseType, "s" );
+				mangleRef( aggregateUseType, Encoding::struct_t );
 			}
 
 			void Mangler::postvisit( UnionInstType * aggregateUseType ) {
-				mangleRef( aggregateUseType, "u" );
+				mangleRef( aggregateUseType, Encoding::union_t );
 			}
 
 			void Mangler::postvisit( EnumInstType * aggregateUseType ) {
-				mangleRef( aggregateUseType, "e" );
+				mangleRef( aggregateUseType, Encoding::enum_t );
 			}
 
@@ -268,23 +237,14 @@
 				VarMapType::iterator varNum = varNums.find( typeInst->get_name() );
 				if ( varNum == varNums.end() ) {
-					mangleRef( typeInst, "t" );
+					mangleRef( typeInst, Encoding::type );
 				} else {
 					printQualifiers( typeInst );
-					std::ostringstream numStream;
-					numStream << varNum->second.first;
-					switch ( (TypeDecl::Kind )varNum->second.second ) {
-					  case TypeDecl::Dtype:
-						mangleName << "d";
-						break;
-					  case TypeDecl::Ftype:
-						mangleName << "f";
-						break;
-						case TypeDecl::Ttype:
-						mangleName << "tVARGS";
-						break;
-						default:
-						assert( false );
-					} // switch
-					mangleName << numStream.str();
+					// Note: Can't use name here, since type variable names do not actually disambiguate a function, e.g.
+					//   forall(dtype T) void f(T);
+					//   forall(dtype S) void f(S);
+					// are equivalent and should mangle the same way. This is accomplished by numbering the type variables when they
+					// are first found and prefixing with the appropriate encoding for the type class.
+					assertf( varNum->second.second < TypeDecl::NUMBER_OF_KINDS, "Unhandled type variable kind: %d", varNum->second.second );
+					mangleName << Encoding::typeVariables[varNum->second.second] << varNum->second.first;
 				} // if
 			}
@@ -292,36 +252,52 @@
 			void Mangler::postvisit( TraitInstType * inst ) {
 				printQualifiers( inst );
-				mangleName << "_Y" << inst->name << "_";
+				mangleName << inst->name.size() << inst->name;
 			}
 
 			void Mangler::postvisit( TupleType * tupleType ) {
 				printQualifiers( tupleType );
-				mangleName << "T";
+				mangleName << Encoding::tuple << tupleType->types.size();
 				acceptAll( tupleType->types, *visitor );
-				mangleName << "_";
 			}
 
 			void Mangler::postvisit( VarArgsType * varArgsType ) {
 				printQualifiers( varArgsType );
-				mangleName << "VARGS";
+				static const std::string vargs = "__builtin_va_list";
+				mangleName << Encoding::type << vargs.size() << vargs;
 			}
 
 			void Mangler::postvisit( ZeroType * ) {
-				mangleName << "Z";
+				mangleName << Encoding::zero;
 			}
 
 			void Mangler::postvisit( OneType * ) {
-				mangleName << "O";
+				mangleName << Encoding::one;
 			}
 
 			void Mangler::postvisit( QualifiedType * qualType ) {
+				bool inqual = inQualifiedType;
+				if (! inqual ) {
+					// N marks the start of a qualified type
+					inQualifiedType = true;
+					mangleName << Encoding::qualifiedTypeStart;
+				}
 				maybeAccept( qualType->parent, *visitor );
-				mangleName << "__";
 				maybeAccept( qualType->child, *visitor );
+				if ( ! inqual ) {
+					// E marks the end of a qualified type
+					inQualifiedType = false;
+					mangleName << Encoding::qualifiedTypeEnd;
+				}
 			}
 
 			void Mangler::postvisit( TypeDecl * decl ) {
-				static const char *typePrefix[] = { "BT", "BD", "BF" };
-				mangleName << typePrefix[ decl->get_kind() ] << ( decl->name.length() + 1 ) << decl->name;
+				// TODO: is there any case where mangling a TypeDecl makes sense? If so, this code needs to be
+				// fixed to ensure that two TypeDecls mangle to the same name when they are the same type and vice versa.
+				// Note: The current scheme may already work correctly for this case, I have not thought about this deeply
+				// and the case has not yet come up in practice. Alternatively, if not then this code can be removed
+				// aside from the assert false.
+				assertf(false, "Mangler should not visit typedecl: %s", toCString(decl));
+				assertf( decl->get_kind() < TypeDecl::NUMBER_OF_KINDS, "Unhandled type variable kind: %d", decl->get_kind() );
+				mangleName << Encoding::typeVariables[ decl->get_kind() ] << ( decl->name.length() ) << decl->name;
 			}
 
@@ -337,6 +313,6 @@
 				if ( ! type->get_forall().empty() ) {
 					std::list< std::string > assertionNames;
-					int tcount = 0, dcount = 0, fcount = 0, vcount = 0;
-					mangleName << "A";
+					int dcount = 0, fcount = 0, vcount = 0, acount = 0;
+					mangleName << Encoding::forall;
 					for ( Type::ForallList::iterator i = type->forall.begin(); i != type->forall.end(); ++i ) {
 						switch ( (*i)->get_kind() ) {
@@ -361,7 +337,8 @@
 							(*assert)->accept( sub_mangler );
 							assertionNames.push_back( sub_mangler.pass.mangleName.str() );
+							acount++;
 						} // for
 					} // for
-					mangleName << tcount << "_" << dcount << "_" << fcount << "_" << vcount << "_";
+					mangleName << dcount << "_" << fcount << "_" << vcount << "_" << acount << "_";
 					std::copy( assertionNames.begin(), assertionNames.end(), std::ostream_iterator< std::string >( mangleName, "" ) );
 					mangleName << "_";
@@ -370,8 +347,8 @@
 					// these qualifiers do not distinguish the outermost type of a function parameter
 					if ( type->get_const() ) {
-						mangleName << "C";
+						mangleName << Encoding::qualifiers.at(Type::Const);
 					} // if
 					if ( type->get_volatile() ) {
-						mangleName << "V";
+						mangleName << Encoding::qualifiers.at(Type::Volatile);
 					} // if
 					// Removed due to restrict not affecting function compatibility in GCC
@@ -380,13 +357,13 @@
 					// } // if
 					if ( type->get_atomic() ) {
-						mangleName << "A";
+						mangleName << Encoding::qualifiers.at(Type::Atomic);
 					} // if
 				}
 				if ( type->get_mutex() ) {
-					mangleName << "M";
+					mangleName << Encoding::qualifiers.at(Type::Mutex);
 				} // if
 				if ( type->get_lvalue() ) {
 					// mangle based on whether the type is lvalue, so that the resolver can differentiate lvalues and rvalues
-					mangleName << "L";
+					mangleName << Encoding::qualifiers.at(Type::Lvalue);
 				}
 
Index: src/SymTab/Mangler.h
===================================================================
--- src/SymTab/Mangler.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/SymTab/Mangler.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -24,4 +24,11 @@
 #include "SynTree/Visitor.h"  // for Visitor, maybeAccept
 
+// https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling
+// The CFA name mangling scheme is based closely on the itanium C++ name mangling scheme, with the following key differences:
+// * Variable names are also mangled to include type information, not just functions
+// * CFA does not have template expansion, so the rules for function specialization do not apply.
+// * CFA instead has to handle type parameters and assertion parameters.
+// * Currently name compression is not implemented.
+
 namespace SymTab {
 	namespace Mangler {
@@ -33,6 +40,38 @@
 		/// Mangle ignoring generic type parameters
 		std::string mangleConcrete( Type* ty );
+
+		namespace Encoding {
+			extern const std::string manglePrefix;
+			extern const std::string basicTypes[];
+			extern const std::map<int, std::string> qualifiers;
+
+			extern const std::string void_t;
+			extern const std::string zero;
+			extern const std::string one;
+
+			extern const std::string function;
+			extern const std::string tuple;
+			extern const std::string pointer;
+			extern const std::string array;
+			extern const std::string qualifiedTypeStart;
+			extern const std::string qualifiedTypeEnd;
+
+			extern const std::string forall;
+			extern const std::string typeVariables[];
+
+			extern const std::string struct_t;
+			extern const std::string union_t;
+			extern const std::string enum_t;
+			extern const std::string type;
+
+			extern const std::string autogen;
+			extern const std::string intrinsic;
+		};
 	} // Mangler
 } // SymTab
+
+extern "C" {
+	char * cforall_demangle(const char *, int);
+}
 
 // Local Variables: //
Index: src/SymTab/ManglerCommon.cc
===================================================================
--- src/SymTab/ManglerCommon.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ src/SymTab/ManglerCommon.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,105 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// Mangler.h --
+//
+// Author           : Richard C. Bilson
+// Created On       : Sun May 17 21:44:03 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Jul 22 09:45:30 2017
+// Update Count     : 15
+//
+
+#include "Mangler.h"
+#include "SynTree/Type.h"
+#include "SynTree/Declaration.h"
+
+namespace SymTab {
+	namespace Mangler {
+		namespace Encoding {
+			const std::string manglePrefix = "_X";
+
+			const std::string basicTypes[] = {
+				"b",  // Bool
+				"c",  // Char
+				"a",  // SignedChar
+				"h",  // UnsignedChar
+				"s",  // ShortSignedInt
+				"t",  // ShortUnsignedInt
+				"i",  // SignedInt
+				"j",  // UnsignedInt
+				"l",  // LongSignedInt
+				"m",  // LongUnsignedInt
+				"x",  // LongLongSignedInt
+				"y",  // LongLongUnsignedInt
+				"f",  // Float
+				"d",  // Double
+				"e",  // LongDouble
+				"Cf", // FloatComplex
+				"Cd", // DoubleComplex
+				"Ce", // LongDoubleComplex
+				// Note: imaginary is not an overloadable type in C++
+				"If", // FloatImaginary
+				"Id", // DoubleImaginary
+				"Ie", // LongDoubleImaginary
+				"n",  // SignedInt128
+				"o",  // UnsignedInt128
+				"Dq",  // Float80 -- TODO: itanium says Float80 and LongDouble both encode to "e", but doing this causes problems with constructing long double, because the cost tables are incorrect
+				"g",  // Float128
+				// "z",	// ellipsis
+				// "Dd" // # IEEE 754r decimal floating point (64 bits)
+				// "De" // # IEEE 754r decimal floating point (128 bits)
+				// "Df" // # IEEE 754r decimal floating point (32 bits)
+				// "Dh" // # IEEE 754r half-precision floating point (16 bits)
+				// "DF"N_ // # ISO/IEC TS 18661 binary floating point type _FloatN (N bits)
+				// "Di" // char32_t
+				// "Ds" // char16_t
+			};
+			static_assert(
+				sizeof(basicTypes)/sizeof(basicTypes[0]) == BasicType::NUMBER_OF_BASIC_TYPES,
+				"Each basic type kind should have a corresponding mangler letter"
+			);
+
+			const std::map<int, std::string> qualifiers = {
+				{ Type::Const, "K" },
+				{ Type::Volatile, "V" },
+				{ Type::Atomic, "DA" }, // A is array, so need something unique for atmoic. For now, go with multiletter DA
+				{ Type::Mutex, "X" },
+				{ Type::Lvalue, "L" },
+			};
+
+			const std::string void_t = "v";
+			const std::string zero = "Z";
+			const std::string one = "O";
+
+			const std::string function = "F";
+			const std::string tuple = "T";
+			const std::string pointer = "P";
+			const std::string array = "A";
+			const std::string qualifiedTypeStart = "N";
+			const std::string qualifiedTypeEnd = "E";
+
+			const std::string forall = "Q";
+			const std::string typeVariables[] = {
+				"BD", // dtype
+				"BF", // ftype
+				"BT", // ttype
+			};
+			static_assert(
+				sizeof(typeVariables)/sizeof(typeVariables[0]) == TypeDecl::NUMBER_OF_KINDS,
+				"Each type variable kind should have a corresponding mangler prefix"
+			);
+
+			const std::string struct_t = "S";
+			const std::string union_t = "U";
+			const std::string enum_t = "M";
+			const std::string type = "Y";
+
+			const std::string autogen = "autogen__";
+			const std::string intrinsic = "intrinsic__";
+		} // namespace Encoding
+	} // namespace Mangler
+} // namespace SymTab
Index: src/SymTab/demangler.cc
===================================================================
--- src/SymTab/demangler.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ src/SymTab/demangler.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,20 @@
+#include "Mangler.h"
+#include <iostream>
+#include <fstream>
+using namespace std;
+
+void f(const std::string & mangleName) {
+	char * demangleName = cforall_demangle(mangleName.c_str(), 0);
+	cout << mangleName << " => " << std::flush << demangleName << endl;
+	free(demangleName);
+}
+
+int main() {
+	ifstream in("in-demangle.txt");
+	std::string line;
+	while (getline(in, line)) {
+		if (line.empty()) { cout << "=================================" << endl; continue; }
+		else if (line[0] == '#') continue;
+		f(line);
+	}
+}
Index: src/SymTab/module.mk
===================================================================
--- src/SymTab/module.mk	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/SymTab/module.mk	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -17,4 +17,5 @@
 SRC += SymTab/Indexer.cc \
        SymTab/Mangler.cc \
+       SymTab/ManglerCommon.cc \
        SymTab/Validate.cc \
        SymTab/FixFunction.cc \
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/SynTree/Declaration.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -202,5 +202,5 @@
 	typedef NamedTypeDecl Parent;
   public:
-	enum Kind { Dtype, Ftype, Ttype };
+	enum Kind { Dtype, Ftype, Ttype, NUMBER_OF_KINDS };
 
 	Type * init;
Index: c/benchmark/Makefile.am
===================================================================
--- src/benchmark/Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,322 +1,0 @@
-######################## -*- Mode: Makefile-Automake -*- ######################
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.am --
-##
-## Author           : Peter A. Buhr
-## Created On       : Sun May 31 09:08:15 2015
-## Last Modified By : Peter A. Buhr
-## Last Modified On : Mon Jan 25 22:31:42 2016
-## Update Count     : 25
-###############################################################################
-
-# applies to both programs
-CFLAGS =
-AM_CFLAGS = \
-	-g \
-	-O2 \
-	-Wall \
-	-Wno-unused-function \
-	-quiet \
-	-I$(srcdir) \
-	@BUILD_IN_TREE_FLAGS@
-
-CC = @CFACC@
-TOOLSDIR = ${abs_top_srcdir}/tools/
-REPEAT   = ${TOOLSDIR}repeat
-STATS    = ${TOOLSDIR}stat.py
-repeats  = 30
-skipcompile = no
-TIME_FORMAT = "%E"
-PRINT_FORMAT = %20s: #Comments needed for spacing
-
-.NOTPARALLEL:
-
-noinst_PROGRAMS =
-
-all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
-
-%.run : %$(EXEEXT) ${REPEAT}
-	@rm -f .result.log
-	@echo "------------------------------------------------------"
-	@echo $<
-	@${REPEAT} ${repeats} ./a.out | tee -a .result.log
-	@${STATS} .result.log
-	@echo "------------------------------------------------------"
-	@rm -f a.out .result.log
-
-%.runquiet :
-	@+make $(basename $@) CFLAGS="-w"
-	@taskset -c 1 ./a.out
-	@rm -f a.out
-
-%.make :
-	@printf "${PRINT_FORMAT}" $(basename $(subst compile-,,$@))
-	@+/usr/bin/time -f ${TIME_FORMAT} make $(basename $@) 2>&1
-
-${REPEAT} :
-	@+make -C ${TOOLSDIR} repeat
-
-## =========================================================================================================
-
-jenkins$(EXEEXT):
-	@echo "{"
-	@echo -e '\t"githash": "'${githash}'",'
-	@echo -e '\t"arch": "'   ${arch}   '",'
-@DOifskipcompile@
-	@echo -e '\t"compile": {'
-	@+make compile TIME_FORMAT='%e,' PRINT_FORMAT='\t\t\"%s\" :'
-	@echo -e '\t\t"dummy" : {}'
-	@echo -e '\t},'
-@DOendif@
-	@echo -e '\t"ctxswitch": {'
-	@echo -en '\t\t"coroutine":'
-	@+make ctxswitch-cfa_coroutine.runquiet
-	@echo -en '\t\t,"thread":'
-	@+make ctxswitch-cfa_thread.runquiet
-	@echo -e '\t},'
-	@echo -e '\t"mutex": ['
-	@echo -en '\t\t'
-	@+make mutex-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make mutex-cfa2.runquiet
-	@echo -e '\t],'
-	@echo -e '\t"scheduling": ['
-	@echo -en '\t\t'
-	@+make signal-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make signal-cfa2.runquiet
-	@echo -en '\t\t,'
-	@+make waitfor-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make waitfor-cfa2.runquiet
-	@echo -e '\n\t],'
-	@echo -e '\t"epoch": ' $(shell date +%s)
-	@echo "}"
-
-## =========================================================================================================
-loop$(EXEEXT):
-	@@BACKEND_CC@ loop.c      -DBENCH_N=5000000000 -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-function$(EXEEXT):
-	@@BACKEND_CC@ function.c  -DBENCH_N=5000000000 -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-fetch_add$(EXEEXT):
-	@@BACKEND_CC@ fetch_add.c -DBENCH_N=500000000  -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-## =========================================================================================================
-ctxswitch$(EXEEXT): \
-	loop.run				\
-	function.run			\
-	fetch_add.run			\
-	ctxswitch-pthread.run		\
-	ctxswitch-cfa_coroutine.run	\
-	ctxswitch-cfa_thread.run	\
-	ctxswitch-cfa_thread2.run	\
-	ctxswitch-upp_coroutine.run	\
-	ctxswitch-upp_thread.run	\
-	-ctxswitch-kos_fibre.run	\
-	-ctxswitch-kos_fibre2.run	\
-	ctxswitch-goroutine.run		\
-	ctxswitch-java_thread.run
-
-ctxswitch-pthread$(EXEEXT):
-	@@BACKEND_CC@ $(srcdir)/ctxswitch/pthreads.c     -DBENCH_N=50000000  -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-cfa_coroutine$(EXEEXT):
-	@${CC}        $(srcdir)/ctxswitch/cfa_cor.c      -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-cfa_thread$(EXEEXT):
-	@${CC}        $(srcdir)/ctxswitch/cfa_thrd.c     -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-cfa_thread2$(EXEEXT):
-	@${CC}        $(srcdir)/ctxswitch/cfa_thrd2.c    -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-upp_coroutine$(EXEEXT):
-	@u++          $(srcdir)/ctxswitch/upp_cor.cc     -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-upp_thread$(EXEEXT):
-	@u++          $(srcdir)/ctxswitch/upp_thrd.cc    -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-kos_fibre$(EXEEXT):
-	@${CXX}       $(srcdir)/ctxswitch/kos_fibre.cpp  -DBENCH_N=50000000  -I$(srcdir) -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
-
-ctxswitch-kos_fibre2$(EXEEXT):
-	@${CXX}       $(srcdir)/ctxswitch/kos_fibre2.cpp -DBENCH_N=50000000  -I$(srcdir) -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
-
-ctxswitch-goroutine$(EXEEXT):
-	@go build -o a.out $(srcdir)/ctxswitch/goroutine.go
-
-ctxswitch-java_thread$(EXEEXT):
-	@javac $(srcdir)/ctxswitch/JavaThread.java
-	@echo "#!/bin/sh" > a.out
-	@echo "cd ctxswitch && java JavaThread" >> a.out
-	@chmod a+x a.out
-
-## =========================================================================================================
-mutex$(EXEEXT) :\
-	loop.run			\
-	function.run		\
-	fetch_add.run		\
-	mutex-pthread_lock.run	\
-	mutex-upp.run		\
-	mutex-cfa1.run		\
-	mutex-cfa2.run		\
-	mutex-cfa4.run		\
-	mutex-java_thread.run
-
-mutex-pthread_lock$(EXEEXT):
-	@@BACKEND_CC@ $(srcdir)/mutex/pthreads.c    -DBENCH_N=50000000    -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-upp$(EXEEXT):
-	@u++          $(srcdir)/mutex/upp.cc        -DBENCH_N=50000000    -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa1$(EXEEXT):
-	@${CC}        $(srcdir)/mutex/cfa1.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa2$(EXEEXT):
-	@${CC}        $(srcdir)/mutex/cfa2.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa4$(EXEEXT):
-	@${CC}        $(srcdir)/mutex/cfa4.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-java_thread$(EXEEXT):
-	@javac $(srcdir)/mutex/JavaThread.java
-	@echo "#!/bin/sh" > a.out
-	@echo "cd mutex && java JavaThread" >> a.out
-	@chmod a+x a.out
-
-## =========================================================================================================
-signal$(EXEEXT) :\
-	signal-pthread_cond.run \
-	signal-upp.run		\
-	signal-cfa1.run		\
-	signal-cfa2.run		\
-	signal-cfa4.run		\
-	signal-java_thread.run
-
-signal-pthread_cond$(EXEEXT):
-	@@BACKEND_CC@ $(srcdir)/schedint/pthreads.c -DBENCH_N=500000      -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-upp$(EXEEXT):
-	@u++          $(srcdir)/schedint/upp.cc     -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa1$(EXEEXT):
-	@${CC}        $(srcdir)/schedint/cfa1.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa2$(EXEEXT):
-	@${CC}        $(srcdir)/schedint/cfa2.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa4$(EXEEXT):
-	@${CC}        $(srcdir)/schedint/cfa4.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-java_thread$(EXEEXT):
-	@javac $(srcdir)/schedint/JavaThread.java
-	@echo "#!/bin/sh" > a.out
-	@echo "cd schedint && java JavaThread" >> a.out
-	@chmod a+x a.out
-
-
-## =========================================================================================================
-waitfor$(EXEEXT) :\
-	waitfor-upp.run		\
-	waitfor-cfa1.run		\
-	waitfor-cfa2.run		\
-	waitfor-cfa4.run
-
-waitfor-upp$(EXEEXT):
-	@u++          $(srcdir)/schedext/upp.cc     -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa1$(EXEEXT):
-	@${CC}        $(srcdir)/schedext/cfa1.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa2$(EXEEXT):
-	@${CC}        $(srcdir)/schedext/cfa2.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa4$(EXEEXT):
-	@${CC}        $(srcdir)/schedext/cfa4.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-## =========================================================================================================
-creation$(EXEEXT) :\
-	creation-pthread.run			\
-	creation-cfa_coroutine.run		\
-	creation-cfa_coroutine_eager.run	\
-	creation-cfa_thread.run			\
-	creation-upp_coroutine.run		\
-	creation-upp_thread.run			\
-	creation-goroutine.run			\
-	creation-java_thread.run
-
-creation-cfa_coroutine$(EXEEXT):
-	@${CC}        $(srcdir)/creation/cfa_cor.c   -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-cfa_coroutine_eager$(EXEEXT):
-	@${CC}        $(srcdir)/creation/cfa_cor.c   -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -DEAGER
-
-creation-cfa_thread$(EXEEXT):
-	@${CC}        $(srcdir)/creation/cfa_thrd.c  -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-upp_coroutine$(EXEEXT):
-	@u++          $(srcdir)/creation/upp_cor.cc  -DBENCH_N=50000000   -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-upp_thread$(EXEEXT):
-	@u++          $(srcdir)/creation/upp_thrd.cc -DBENCH_N=50000000   -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-pthread$(EXEEXT):
-	@@BACKEND_CC@ $(srcdir)/creation/pthreads.c  -DBENCH_N=250000     -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-goroutine$(EXEEXT):
-	@go build -o a.out $(srcdir)/creation/goroutine.go
-
-creation-java_thread$(EXEEXT):
-	@javac $(srcdir)/creation/JavaThread.java
-	@echo "#!/bin/sh" > a.out
-	@echo "cd creation && java JavaThread" >> a.out
-	@chmod a+x a.out
-
-## =========================================================================================================
-
-compile$(EXEEXT) :\
-	compile-array.make	\
-	compile-attributes.make	\
-	compile-empty.make  	\
-	compile-expression.make	\
-	compile-io.make		\
-	compile-monitor.make	\
-	compile-operators.make	\
-	compile-typeof.make
-
-
-testdir = $(top_srcdir)/src/tests
-
-compile-array$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/array.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-attributes$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/attributes.c		@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-empty$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(srcdir)/compile/empty.c          @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-expression$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/expression.c		@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-io$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/io1.c				@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-monitor$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/concurrent/monitor.c	@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-operators$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/operators.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-thread$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/concurrent/thread.c	@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-typeof$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/typeof.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
Index: c/benchmark/Makefile.in
===================================================================
--- src/benchmark/Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,732 +1,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-######################## -*- Mode: Makefile-Automake -*- ######################
-###############################################################################
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-noinst_PROGRAMS =
-subdir = src/benchmark
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in compile
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BACKEND_CC = @BACKEND_CC@
-BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
-CC = @CFACC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFACC = @CFACC@
-CFACPP = @CFACPP@
-CFA_BACKEND_CC = @CFA_BACKEND_CC@
-CFA_BINDIR = @CFA_BINDIR@
-CFA_FLAGS = @CFA_FLAGS@
-CFA_INCDIR = @CFA_INCDIR@
-CFA_LIBDIR = @CFA_LIBDIR@
-CFA_NAME = @CFA_NAME@
-CFA_PREFIX = @CFA_PREFIX@
-
-# applies to both programs
-CFLAGS = 
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DRIVER_DIR = @DRIVER_DIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AM_CFLAGS = \
-	-g \
-	-O2 \
-	-Wall \
-	-Wno-unused-function \
-	-quiet \
-	-I$(srcdir) \
-	@BUILD_IN_TREE_FLAGS@
-
-TOOLSDIR = ${abs_top_srcdir}/tools/
-REPEAT = ${TOOLSDIR}repeat
-STATS = ${TOOLSDIR}stat.py
-repeats = 30
-skipcompile = no
-TIME_FORMAT = "%E"
-PRINT_FORMAT = %20s: #Comments needed for spacing
-testdir = $(top_srcdir)/src/tests
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/benchmark/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/benchmark/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic \
-	clean-noinstPROGRAMS cscopelist-am ctags-am distclean \
-	distclean-generic distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am
-
-.PRECIOUS: Makefile
-
-
-.NOTPARALLEL:
-
-all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
-
-%.run : %$(EXEEXT) ${REPEAT}
-	@rm -f .result.log
-	@echo "------------------------------------------------------"
-	@echo $<
-	@${REPEAT} ${repeats} ./a.out | tee -a .result.log
-	@${STATS} .result.log
-	@echo "------------------------------------------------------"
-	@rm -f a.out .result.log
-
-%.runquiet :
-	@+make $(basename $@) CFLAGS="-w"
-	@taskset -c 1 ./a.out
-	@rm -f a.out
-
-%.make :
-	@printf "${PRINT_FORMAT}" $(basename $(subst compile-,,$@))
-	@+/usr/bin/time -f ${TIME_FORMAT} make $(basename $@) 2>&1
-
-${REPEAT} :
-	@+make -C ${TOOLSDIR} repeat
-
-jenkins$(EXEEXT):
-	@echo "{"
-	@echo -e '\t"githash": "'${githash}'",'
-	@echo -e '\t"arch": "'   ${arch}   '",'
-@DOifskipcompile@
-	@echo -e '\t"compile": {'
-	@+make compile TIME_FORMAT='%e,' PRINT_FORMAT='\t\t\"%s\" :'
-	@echo -e '\t\t"dummy" : {}'
-	@echo -e '\t},'
-@DOendif@
-	@echo -e '\t"ctxswitch": {'
-	@echo -en '\t\t"coroutine":'
-	@+make ctxswitch-cfa_coroutine.runquiet
-	@echo -en '\t\t,"thread":'
-	@+make ctxswitch-cfa_thread.runquiet
-	@echo -e '\t},'
-	@echo -e '\t"mutex": ['
-	@echo -en '\t\t'
-	@+make mutex-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make mutex-cfa2.runquiet
-	@echo -e '\t],'
-	@echo -e '\t"scheduling": ['
-	@echo -en '\t\t'
-	@+make signal-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make signal-cfa2.runquiet
-	@echo -en '\t\t,'
-	@+make waitfor-cfa1.runquiet
-	@echo -en '\t\t,'
-	@+make waitfor-cfa2.runquiet
-	@echo -e '\n\t],'
-	@echo -e '\t"epoch": ' $(shell date +%s)
-	@echo "}"
-
-loop$(EXEEXT):
-	@@BACKEND_CC@ loop.c      -DBENCH_N=5000000000 -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-function$(EXEEXT):
-	@@BACKEND_CC@ function.c  -DBENCH_N=5000000000 -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-fetch_add$(EXEEXT):
-	@@BACKEND_CC@ fetch_add.c -DBENCH_N=500000000  -I$(srcdir) -lrt -pthread ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch$(EXEEXT): \
-	loop.run				\
-	function.run			\
-	fetch_add.run			\
-	ctxswitch-pthread.run		\
-	ctxswitch-cfa_coroutine.run	\
-	ctxswitch-cfa_thread.run	\
-	ctxswitch-cfa_thread2.run	\
-	ctxswitch-upp_coroutine.run	\
-	ctxswitch-upp_thread.run	\
-	-ctxswitch-kos_fibre.run	\
-	-ctxswitch-kos_fibre2.run	\
-	ctxswitch-goroutine.run		\
-	ctxswitch-java_thread.run
-
-ctxswitch-pthread$(EXEEXT):
-	@@BACKEND_CC@ $(srcdir)/ctxswitch/pthreads.c     -DBENCH_N=50000000  -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-cfa_coroutine$(EXEEXT):
-	@${CC}        $(srcdir)/ctxswitch/cfa_cor.c      -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-cfa_thread$(EXEEXT):
-	@${CC}        $(srcdir)/ctxswitch/cfa_thrd.c     -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-cfa_thread2$(EXEEXT):
-	@${CC}        $(srcdir)/ctxswitch/cfa_thrd2.c    -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-upp_coroutine$(EXEEXT):
-	@u++          $(srcdir)/ctxswitch/upp_cor.cc     -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-upp_thread$(EXEEXT):
-	@u++          $(srcdir)/ctxswitch/upp_thrd.cc    -DBENCH_N=50000000  -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-kos_fibre$(EXEEXT):
-	@${CXX}       $(srcdir)/ctxswitch/kos_fibre.cpp  -DBENCH_N=50000000  -I$(srcdir) -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
-
-ctxswitch-kos_fibre2$(EXEEXT):
-	@${CXX}       $(srcdir)/ctxswitch/kos_fibre2.cpp -DBENCH_N=50000000  -I$(srcdir) -I/home/tdelisle/software/KOS/src/ -g -O2 -lfibre -lpthread -lrt
-
-ctxswitch-goroutine$(EXEEXT):
-	@go build -o a.out $(srcdir)/ctxswitch/goroutine.go
-
-ctxswitch-java_thread$(EXEEXT):
-	@javac $(srcdir)/ctxswitch/JavaThread.java
-	@echo "#!/bin/sh" > a.out
-	@echo "cd ctxswitch && java JavaThread" >> a.out
-	@chmod a+x a.out
-
-mutex$(EXEEXT) :\
-	loop.run			\
-	function.run		\
-	fetch_add.run		\
-	mutex-pthread_lock.run	\
-	mutex-upp.run		\
-	mutex-cfa1.run		\
-	mutex-cfa2.run		\
-	mutex-cfa4.run		\
-	mutex-java_thread.run
-
-mutex-pthread_lock$(EXEEXT):
-	@@BACKEND_CC@ $(srcdir)/mutex/pthreads.c    -DBENCH_N=50000000    -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-upp$(EXEEXT):
-	@u++          $(srcdir)/mutex/upp.cc        -DBENCH_N=50000000    -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa1$(EXEEXT):
-	@${CC}        $(srcdir)/mutex/cfa1.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa2$(EXEEXT):
-	@${CC}        $(srcdir)/mutex/cfa2.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa4$(EXEEXT):
-	@${CC}        $(srcdir)/mutex/cfa4.c        -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-java_thread$(EXEEXT):
-	@javac $(srcdir)/mutex/JavaThread.java
-	@echo "#!/bin/sh" > a.out
-	@echo "cd mutex && java JavaThread" >> a.out
-	@chmod a+x a.out
-
-signal$(EXEEXT) :\
-	signal-pthread_cond.run \
-	signal-upp.run		\
-	signal-cfa1.run		\
-	signal-cfa2.run		\
-	signal-cfa4.run		\
-	signal-java_thread.run
-
-signal-pthread_cond$(EXEEXT):
-	@@BACKEND_CC@ $(srcdir)/schedint/pthreads.c -DBENCH_N=500000      -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-upp$(EXEEXT):
-	@u++          $(srcdir)/schedint/upp.cc     -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa1$(EXEEXT):
-	@${CC}        $(srcdir)/schedint/cfa1.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa2$(EXEEXT):
-	@${CC}        $(srcdir)/schedint/cfa2.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa4$(EXEEXT):
-	@${CC}        $(srcdir)/schedint/cfa4.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-java_thread$(EXEEXT):
-	@javac $(srcdir)/schedint/JavaThread.java
-	@echo "#!/bin/sh" > a.out
-	@echo "cd schedint && java JavaThread" >> a.out
-	@chmod a+x a.out
-
-waitfor$(EXEEXT) :\
-	waitfor-upp.run		\
-	waitfor-cfa1.run		\
-	waitfor-cfa2.run		\
-	waitfor-cfa4.run
-
-waitfor-upp$(EXEEXT):
-	@u++          $(srcdir)/schedext/upp.cc     -DBENCH_N=5000000     -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa1$(EXEEXT):
-	@${CC}        $(srcdir)/schedext/cfa1.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa2$(EXEEXT):
-	@${CC}        $(srcdir)/schedext/cfa2.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa4$(EXEEXT):
-	@${CC}        $(srcdir)/schedext/cfa4.c     -DBENCH_N=500000      -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation$(EXEEXT) :\
-	creation-pthread.run			\
-	creation-cfa_coroutine.run		\
-	creation-cfa_coroutine_eager.run	\
-	creation-cfa_thread.run			\
-	creation-upp_coroutine.run		\
-	creation-upp_thread.run			\
-	creation-goroutine.run			\
-	creation-java_thread.run
-
-creation-cfa_coroutine$(EXEEXT):
-	@${CC}        $(srcdir)/creation/cfa_cor.c   -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-cfa_coroutine_eager$(EXEEXT):
-	@${CC}        $(srcdir)/creation/cfa_cor.c   -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -DEAGER
-
-creation-cfa_thread$(EXEEXT):
-	@${CC}        $(srcdir)/creation/cfa_thrd.c  -DBENCH_N=10000000   -I$(srcdir) -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-upp_coroutine$(EXEEXT):
-	@u++          $(srcdir)/creation/upp_cor.cc  -DBENCH_N=50000000   -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-upp_thread$(EXEEXT):
-	@u++          $(srcdir)/creation/upp_thrd.cc -DBENCH_N=50000000   -I$(srcdir) -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-pthread$(EXEEXT):
-	@@BACKEND_CC@ $(srcdir)/creation/pthreads.c  -DBENCH_N=250000     -I$(srcdir) -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-goroutine$(EXEEXT):
-	@go build -o a.out $(srcdir)/creation/goroutine.go
-
-creation-java_thread$(EXEEXT):
-	@javac $(srcdir)/creation/JavaThread.java
-	@echo "#!/bin/sh" > a.out
-	@echo "cd creation && java JavaThread" >> a.out
-	@chmod a+x a.out
-
-compile$(EXEEXT) :\
-	compile-array.make	\
-	compile-attributes.make	\
-	compile-empty.make  	\
-	compile-expression.make	\
-	compile-io.make		\
-	compile-monitor.make	\
-	compile-operators.make	\
-	compile-typeof.make
-
-compile-array$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/array.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-attributes$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/attributes.c		@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-empty$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(srcdir)/compile/empty.c          @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-expression$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/expression.c		@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-io$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/io1.c				@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-monitor$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/concurrent/monitor.c	@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-operators$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/operators.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-thread$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/concurrent/thread.c	@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile-typeof$(EXEEXT):
-	@${CC} -quiet -fsyntax-only -w $(testdir)/typeof.c			@CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-# 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.
-.NOEXPORT:
Index: c/benchmark/Monitor.c
===================================================================
--- src/benchmark/Monitor.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#include <fstream>
-#include <stdlib>
-#include <thread>
-
-#include "bench.h"
-
-monitor mon_t {};
-
-mon_t mon1, mon2;
-
-void dummy( mon_t * mutex a ) {}
-void dummy( mon_t * mutex a, mon_t * mutex b ) {}
-
-int main() {
-	long long int StartTime, EndTime;
-
-	StartTime = Time();
-	for( int i = 0; i < N; i++ ) {
-		dummy( &mon1 );
-	}
-	EndTime = Time();
-
-	sout | ( EndTime - StartTime ) / N;
-
-	StartTime = Time();
-	for( int i = 0; i < N; i++ ) {
-		dummy( &mon1, &mon2 );
-	}
-	EndTime = Time();
-
-	sout | ( EndTime - StartTime ) / N | endl;
-}
Index: c/benchmark/bench.h
===================================================================
--- src/benchmark/bench.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,54 +1,0 @@
-#pragma once
-
-#if defined(__cforall)
-extern "C" {
-#endif
-	#include <stdlib.h>
-	#include <unistd.h>					// sysconf
-#if ! defined(__cforall)
-	#include <time.h>
-	#include <sys/time.h>
-#else
-}
-#include <time>
-#endif
-
-
-static inline unsigned long long int bench_time() {
-    struct timespec ts;
-    clock_gettime(
-#if defined( __linux__ )
-	 CLOCK_THREAD_CPUTIME_ID,
-#elif defined( __freebsd__ )
-	 CLOCK_PROF,
-#elif defined( __solaris__ )
-	 CLOCK_HIGHRES,
-#else
-    #error uC++ : internal error, unsupported architecture
-#endif
-	 &ts );
-    return 1000000000LL * ts.tv_sec + ts.tv_nsec;
-} // Time
-
-#ifndef BENCH_N
-#define BENCH_N 500 //10000000
-#endif
-
-#define BENCH(statement, output)		\
-	size_t n = BENCH_N;			\
-	if( argc > 2 ) return 1;		\
-	if( argc == 2 ) {				\
-		n = atoi(argv[1]);		\
-	}						\
-	long long int StartTime, EndTime;	\
-	StartTime = bench_time();		\
-	statement;					\
-	EndTime = bench_time();			\
-	unsigned long long int output = 	\
-	( EndTime - StartTime ) / n;
-
-#if defined(__cforall)
-Duration default_preemption() {
-	return 0;
-}
-#endif
Index: c/benchmark/compile/empty.c
===================================================================
--- src/benchmark/compile/empty.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,3 +1,0 @@
-int main() {
-	return 0;
-}
Index: c/benchmark/creation/JavaThread.java
===================================================================
--- src/benchmark/creation/JavaThread.java	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,18 +1,0 @@
-public class JavaThread {
-	public static class MyThread extends Thread {
-		@Override
-		public void run() {}
-	}
-
-	public static void main(String[] args) throws InterruptedException {
-		int NoOfTimes = 50000;
-		long start = System.nanoTime();
-		for(int i = 1; i <= NoOfTimes; i += 1) {
-			JavaThread.MyThread m = new JavaThread.MyThread();
-        		m.start();
-			m.join();
-		}
-		long end = System.nanoTime();
-		System.out.println( (end - start) / NoOfTimes);
-	}
-}
Index: c/benchmark/creation/cfa_cor.c
===================================================================
--- src/benchmark/creation/cfa_cor.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,23 +1,0 @@
-#include <stdio.h>
-#include <coroutine>
-
-#include "bench.h"
-
-coroutine MyCoroutine {};
-void ?{} (MyCoroutine & this) {
-#ifdef EAGER
-	prime(this);
-#endif
-}
-void main(MyCoroutine & this) {}
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			MyCoroutine m;
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/creation/cfa_thrd.c
===================================================================
--- src/benchmark/creation/cfa_thrd.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,18 +1,0 @@
-#include <stdio.h>
-#include <thread>
-
-#include "bench.h"
-
-thread MyThread {};
-void main(MyThread & this) {}
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			MyThread m;
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/creation/goroutine.go
===================================================================
--- src/benchmark/creation/goroutine.go	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,27 +1,0 @@
-package main
-
-import (
-    "fmt"
-    "time"
-)
-
-var shake chan bool = make( chan bool )
-
-func noop() {
-	shake <- true   // indicate completion
-}
-
-//=======================================
-// benchmark driver
-//=======================================
-
-func main() {
-	const NoOfTimes = 500000
-	start := time.Now()
-	for i := 1; i <= NoOfTimes; i += 1 {
-		go noop()		// creation
-	}
-	end := time.Now()
-	fmt.Printf("%d\n", end.Sub(start) / time.Duration(NoOfTimes))
-	<- shake
-}
Index: c/benchmark/creation/pthreads.c
===================================================================
--- src/benchmark/creation/pthreads.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,28 +1,0 @@
-#include <pthread.h>
-#include <stdio.h>
-
-#include "bench.h"
-
-static void *foo(void *arg) {
-    return arg;
-}
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			pthread_t thread;
-			if (pthread_create(&thread, NULL, foo, NULL) < 0) {
-				perror( "failure" );
-				return 1;
-			}
-
-			if (pthread_join( thread, NULL) < 0) {
-				perror( "failure" );
-				return 1;
-			}
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/creation/upp_cor.cc
===================================================================
--- src/benchmark/creation/upp_cor.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,18 +1,0 @@
-#include <cstdio>
-
-#include "bench.h"
-
-_Coroutine MyCor {
-	void main() {}
-};
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			MyCor m;
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/creation/upp_thrd.cc
===================================================================
--- src/benchmark/creation/upp_thrd.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,18 +1,0 @@
-#include <cstdio>
-
-#include "bench.h"
-
-_Task MyThread {
-	void main() {}
-};
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			MyThread m;
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/ctxswitch/JavaThread.java
===================================================================
--- src/benchmark/ctxswitch/JavaThread.java	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,11 +1,0 @@
-public class JavaThread {
-	public static void main(String[] args) {
-		int NoOfTimes = 5000000;
-		long start = System.nanoTime();
-		for(int i = 1; i <= NoOfTimes; i += 1) {
-			Thread.yield();
-		}
-		long end = System.nanoTime();
-		System.out.println( (end - start) / NoOfTimes);
-	}
-}
Index: c/benchmark/ctxswitch/cfa_cor.c
===================================================================
--- src/benchmark/ctxswitch/cfa_cor.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,30 +1,0 @@
-#include <stdio.h>
-#include <kernel>
-#include <thread>
-
-#include "bench.h"
-
-coroutine GreatSuspender {};
-
-void ?{}( GreatSuspender & this ) {
-	prime(this);
-}
-
-void main( GreatSuspender & this ) {
-	while( true ) {
-		suspend();
-	}
-}
-
-int main(int argc, char* argv[]) {
-	GreatSuspender s;
-
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			resume( s );
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/ctxswitch/cfa_thrd.c
===================================================================
--- src/benchmark/ctxswitch/cfa_thrd.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,15 +1,0 @@
-#include <stdio.h>
-#include <thread>
-
-#include "bench.h"
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			yield();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/ctxswitch/cfa_thrd2.c
===================================================================
--- src/benchmark/ctxswitch/cfa_thrd2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,28 +1,0 @@
-#include <stdio.h>
-#include <thread>
-
-#include "bench.h"
-
-volatile bool done = false;
-
-thread Fibre {};
-
-void main(Fibre & this) {
-	while(!done) {
-		yield();
-	}
-}
-
-int main(int argc, char* argv[]) {
-	Fibre f1;
-  	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			yield();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	done = true;
-	return 0;
-}
Index: c/benchmark/ctxswitch/goroutine.go
===================================================================
--- src/benchmark/ctxswitch/goroutine.go	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package main
-
-import (
-    "fmt"
-    "runtime"
-    "time"
-)
-
-//=======================================
-// time context switch
-//=======================================
-
-var shake chan bool = make( chan bool )
-
-func ContextSwitch(N int) {
-	start := time.Now()
-	for i := 1; i <= N; i += 1 {
-		runtime.Gosched()
-	}
-	end := time.Now()
-	fmt.Printf("%d\n", end.Sub(start) / time.Duration(N))
-	shake <- true   // indicate completion
-}
-
-//=======================================
-// benchmark driver
-//=======================================
-
-func main() {
-	const NoOfTimes = 10000000
-	go ContextSwitch( NoOfTimes )		// context switch
-	<- shake
-}
Index: c/benchmark/ctxswitch/kos_fibre.cpp
===================================================================
--- src/benchmark/ctxswitch/kos_fibre.cpp	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#include <libfibre/fibre.h>
-
-#include "bench.h"
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			Fibre::yield();
-		},
-		result
-	)
-	printf("%llu\n", result);
-	return 0;
-}
Index: c/benchmark/ctxswitch/kos_fibre2.cpp
===================================================================
--- src/benchmark/ctxswitch/kos_fibre2.cpp	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,26 +1,0 @@
-#include <libfibre/fibre.h>
-
-#include "bench.h"
-
-volatile bool done = false;
-
-static void f1main() {
-	while(!done) {
-		Fibre::yield();
-	}
-}
-
-int main(int argc, char* argv[]) {
-	Fibre* f1 = (new Fibre)->run(f1main);
-  	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			Fibre::yield();
-		},
-		result
-	)
-	printf("%llu\n", result);
-	done = true;
-	Fibre::yield();
-	f1->join();
-	return 0;
-}
Index: c/benchmark/ctxswitch/pthreads.c
===================================================================
--- src/benchmark/ctxswitch/pthreads.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,17 +1,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <sched.h>
-
-#include "bench.h"
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			sched_yield();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/ctxswitch/upp_cor.cc
===================================================================
--- src/benchmark/ctxswitch/upp_cor.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,33 +1,0 @@
-#include <cstdio>
-
-#include "bench.h"
-
-_Coroutine GreatSuspender {
-public:
-	GreatSuspender() {
-		resume();
-	}
-
-	void do_resume() {
-		resume();
-	}
-private:
-	void main() {
-		while( true ) {
-			suspend();
-		}
-	}
-};
-
-int main(int argc, char* argv[]) {
-	GreatSuspender s;
-
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			s.do_resume();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/ctxswitch/upp_thrd.cc
===================================================================
--- src/benchmark/ctxswitch/upp_thrd.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#include <cstdio>
-
-#include "bench.h"
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			uThisTask().yield();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/fetch_add.c
===================================================================
--- src/benchmark/fetch_add.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,22 +1,0 @@
-#include <stdio.h>
-
-#include "bench.h"
-
-volatile int value;
-
-void __attribute__((noinline)) do_call() {
-	__atomic_add_fetch( &value, 1, __ATOMIC_SEQ_CST );
-	asm volatile ("");
-	__atomic_sub_fetch( &value, 1, __ATOMIC_SEQ_CST );
-}
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			do_call();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/function.c
===================================================================
--- src/benchmark/function.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,18 +1,0 @@
-#include <stdio.h>
-
-#include "bench.h"
-
-void __attribute__((noinline)) do_call() {
-	asm volatile("" ::: "memory");
-}
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			do_call();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/interrupt_linux.c
===================================================================
--- src/benchmark/interrupt_linux.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,35 +1,0 @@
-#include <pthread.h>
-#include <stdlib.h>
-#include <signal.h>
-
-#define __CFA_SIGCXT__ ucontext_t *
-#define __CFA_SIGPARMS__ __attribute__((unused)) int sig, __attribute__((unused)) siginfo_t *sfp, __attribute__((unused)) __CFA_SIGCXT__ cxt
-
-void sigHandler( __CFA_SIGPARMS__ ) {
-	sigset_t mask;
-	sigemptyset( &mask );
-	sigaddset( &mask, SIGUSR1 );
-
-	if ( sigprocmask( SIG_UNBLOCK, &mask, NULL ) == -1 ) {
-		abort();
-	} // if
-}
-
-int main() {
-
-	struct sigaction act;
-
-	act.sa_sigaction = (void (*)(int, siginfo_t *, void *))sigHandler;
-	sigemptyset( &act.sa_mask );
-	sigaddset( &act.sa_mask, SIGUSR1 );
-
-	act.sa_flags = SA_SIGINFO;
-
-	if ( sigaction( SIGUSR1, &act, NULL ) == -1 ) {
-		abort();
-	} // if
-
-	for( int i = 0; i < 50000000ul; i++ ) {
-		pthread_kill( pthread_self(), SIGUSR1 );
-	}
-}
Index: c/benchmark/loop.c
===================================================================
--- src/benchmark/loop.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#include <stdio.h>
-
-#include "bench.h"
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			asm volatile("" ::: "memory");
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/mutex/JavaThread.java
===================================================================
--- src/benchmark/mutex/JavaThread.java	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,14 +1,0 @@
-public class JavaThread {
-	public synchronized void noop() {}
-
-	public static void main(String[] args) {
-		int NoOfTimes = 5000000;
-		JavaThread j = new JavaThread();
-		long start = System.nanoTime();
-		for(int i = 1; i <= NoOfTimes; i += 1) {
-			j.noop();
-		}
-		long end = System.nanoTime();
-		System.out.println( (end - start) / NoOfTimes);
-	}
-}
Index: c/benchmark/mutex/cfa1.c
===================================================================
--- src/benchmark/mutex/cfa1.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,19 +1,0 @@
-#include <monitor>
-#include <stdio.h>
-
-#include "bench.h"
-
-monitor M {};
-void __attribute__((noinline)) call( M & mutex m ) {}
-
-int main(int argc, char* argv[]) {
-	M m;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			call(m);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/mutex/cfa2.c
===================================================================
--- src/benchmark/mutex/cfa2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,19 +1,0 @@
-#include <monitor>
-#include <stdio.h>
-
-#include "bench.h"
-
-monitor M {};
-void __attribute__((noinline)) call( M & mutex m1, M & mutex m2 ) {}
-
-int main(int argc, char* argv[]) {
-	M m1, m2;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			call(m1, m2);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/mutex/cfa4.c
===================================================================
--- src/benchmark/mutex/cfa4.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,20 +1,0 @@
-#include <monitor>
-#include <stdio.h>
-
-#include "bench.h"
-
-
-monitor M {};
-void __attribute__((noinline)) call( M & mutex m1, M & mutex m2, M & mutex m3, M & mutex m4 ) {}
-
-int main(int argc, char* argv[]) {
-	M m1, m2, m3, m4;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			call(m1, m2, m3, m4);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/mutex/pthreads.c
===================================================================
--- src/benchmark/mutex/pthreads.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,22 +1,0 @@
-#include <pthread.h>
-#include <stdio.h>
-
-#include "bench.h"
-
-pthread_mutex_t mutex;
-
-void __attribute__((noinline)) call() {
-	 pthread_mutex_lock  (&mutex);
-	 pthread_mutex_unlock(&mutex);
-}
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			call();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/mutex/upp.cc
===================================================================
--- src/benchmark/mutex/upp.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,20 +1,0 @@
-#include <cstdio>
-
-#include "bench.h"
-
-_Monitor MyMonitor {
-public:
-	void __attribute__((noinline)) call() {}
-};
-
-int main(int argc, char* argv[]) {
-	MyMonitor m;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			m.call();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: c/benchmark/schedext/cfa1.c
===================================================================
--- src/benchmark/schedext/cfa1.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#include <kernel>
-#include <monitor>
-#include <thread>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-monitor M {};
-M m1;
-
-void __attribute__((noinline)) call( M & mutex a1 ) {}
-
-int  __attribute__((noinline)) wait( M & mutex a1 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			waitfor(call, a1);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1);
-}
Index: c/benchmark/schedext/cfa2.c
===================================================================
--- src/benchmark/schedext/cfa2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#include <kernel>
-#include <monitor>
-#include <thread>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-monitor M {};
-M m1, m2;
-
-void __attribute__((noinline)) call( M & mutex a1, M & mutex a2 ) {}
-
-int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			waitfor(call, a1, a2);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1, m2); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1, m2);
-}
Index: c/benchmark/schedext/cfa4.c
===================================================================
--- src/benchmark/schedext/cfa4.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#include <kernel>
-#include <monitor>
-#include <thread>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-monitor M {};
-M m1, m2, m3, m4;
-
-void __attribute__((noinline)) call( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {}
-
-int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			waitfor(call, a1, a2, a3, a4);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1, m2, m3, m4); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1, m2, m3, m4);
-}
Index: c/benchmark/schedext/upp.cc
===================================================================
--- src/benchmark/schedext/upp.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,43 +1,0 @@
-#include <cstdio>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-_Monitor M {
-public:
-	void __attribute__((noinline)) call() {}
-
-	int __attribute__((noinline)) wait() {
-		go = 1;
-		BENCH(
-			for (size_t i = 0; i < n; i++) {
-				_Accept(call);
-			},
-			result
-		)
-
-		printf("%llu\n", result);
-		go = 0;
-		return 0;
-	}
-};
-
-M m;
-
-_Task T {
-	void main() {
-		while(go == 0) { yield(); }
-		while(go == 1) { m.call(); }
-
-	}
-};
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return m.wait();
-}
Index: c/benchmark/schedint/JavaThread.java
===================================================================
--- src/benchmark/schedint/JavaThread.java	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,42 +1,0 @@
-class Monitor {
-	public static volatile Boolean go = false;
-}
-
-class Signaller extends Thread {
-	Monitor m;
-	Signaller(Monitor m) {
-		this.m = m;
-	}
-
-	public void run() {
-		Monitor.go = true;
-		while( Monitor.go ) {
-			synchronized(this.m) {
-				this.m.notify();
-			}
-		}
-	}
-}
-
-public class JavaThread {
-	public static void main(String[] args) throws InterruptedException {
-		int NoOfTimes = 50000;
-		Monitor m = new Monitor();
-		long start, end;
-		Signaller s = new Signaller(m);
-		synchronized(m) {
-			s.start();
-			while( !Monitor.go ) {
-				Thread.yield();
-			}
-			start = System.nanoTime();
-			for(int i = 1; i <= NoOfTimes; i += 1) {
-				m.wait();
-			}
-			end = System.nanoTime();
-		}
-		Monitor.go = false;
-		s.join();
-		System.out.println( (end - start) / NoOfTimes);
-	}
-}
Index: c/benchmark/schedint/cfa1.c
===================================================================
--- src/benchmark/schedint/cfa1.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#include <kernel>
-#include <monitor>
-#include <thread>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-condition c;
-monitor M {};
-M m1;
-
-void __attribute__((noinline)) call( M & mutex a1 ) {
-	signal(c);
-}
-
-int  __attribute__((noinline)) wait( M & mutex a1 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			wait(c);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1);
-}
Index: c/benchmark/schedint/cfa2.c
===================================================================
--- src/benchmark/schedint/cfa2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#include <kernel>
-#include <monitor>
-#include <thread>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-condition c;
-monitor M {};
-M m1, m2;
-
-void __attribute__((noinline)) call( M & mutex a1, M & mutex a2 ) {
-	signal(c);
-}
-
-int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			wait(c);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1, m2); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1, m2);
-}
Index: c/benchmark/schedint/cfa4.c
===================================================================
--- src/benchmark/schedint/cfa4.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#include <kernel>
-#include <monitor>
-#include <thread>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-condition c;
-monitor M {};
-M m1, m2, m3, m4;
-
-void __attribute__((noinline)) call( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
-	signal(c);
-}
-
-int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			wait(c);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1, m2, m3, m4); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1, m2, m3, m4);
-}
Index: c/benchmark/schedint/pthreads.c
===================================================================
--- src/benchmark/schedint/pthreads.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,55 +1,0 @@
-#include <pthread.h>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-pthread_cond_t c;
-pthread_mutex_t m;
-
-void __attribute__((noinline)) call() {
-	pthread_mutex_lock(&m);
-	pthread_cond_signal(&c);
-	pthread_mutex_unlock(&m);
-}
-
-int  __attribute__((noinline)) wait() {
-	pthread_mutex_lock(&m);
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			pthread_cond_wait(&c, &m);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	pthread_mutex_unlock(&m);
-	return 0;
-}
-
-void* thread_main(void * a) {
-	while(go == 0) { sched_yield(); }
-	while(go == 1) { call(); }
-	return NULL;
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	pthread_t thread;
-	if (pthread_create(&thread, NULL, thread_main, NULL) < 0) {
-		perror( "failure" );
-		return 1;
-	}
-	wait();
-	if (pthread_join( thread, NULL) < 0) {
-		perror( "failure" );
-		return 1;
-	}
-	return 0;
-}
Index: c/benchmark/schedint/upp.cc
===================================================================
--- src/benchmark/schedint/upp.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,46 +1,0 @@
-#include <cstdio>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-_Monitor M {
-	uCondition cond;
-public:
-	void __attribute__((noinline)) call() {
-		cond.signal();
-	}
-
-	int __attribute__((noinline)) wait() {
-		go = 1;
-		BENCH(
-			for (size_t i = 0; i < n; i++) {
-				cond.wait();
-			},
-			result
-		)
-
-		printf("%llu\n", result);
-		go = 0;
-		return 0;
-	}
-};
-
-M m;
-
-_Task T {
-	void main() {
-		while(go == 0) { yield(); }
-		while(go == 1) { m.call(); }
-
-	}
-};
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return m.wait();
-}
Index: src/cfa.make
===================================================================
--- src/cfa.make	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/cfa.make	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -6,6 +6,6 @@
 am__v_CFA_1 =
 
-.cfa.c:
+.cfa.o: $(CFACC) $(CFACPP)
 	$(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-	$(CFACOMPILE) -CFA -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
 	$(am__mv) $$depbase.Tpo $$depbase.Po
Index: src/config.h.in
===================================================================
--- src/config.h.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/config.h.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,3 +1,9 @@
 /* src/config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* CPU to use if the -m32 flags is given. */
+#undef CFA_32_CPU
+
+/* CPU to use if the -m64 flags is given. */
+#undef CFA_64_CPU
 
 /* Location of include files. */
@@ -6,4 +12,7 @@
 /* Location of cfa command. */
 #undef CFA_BINDIR
+
+/* Default cpu to use if neither -m32 or -m64 are defined. */
+#undef CFA_DEFAULT_CPU
 
 /* compilation flags for cfa libraries and test programs. */
@@ -152,4 +161,10 @@
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
+
+/* Top build directory */
+#undef TOP_BUILDDIR
+
+/* Top src directory */
+#undef TOP_SRCDIR
 
 /* Version number of package */
Index: c/driver/Makefile.am
===================================================================
--- src/driver/Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,54 +1,0 @@
-######################## -*- Mode: Makefile-Automake -*- ######################
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.am --
-##
-## Author           : Peter A. Buhr
-## Created On       : Sun May 31 08:49:31 2015
-## Last Modified By : Peter A. Buhr
-## Last Modified On : Thu Aug  2 12:18:25 2018
-## Update Count     : 14
-###############################################################################
-
-# applies to both programs
-AM_CXXFLAGS = -Wall -O2 -g -std=c++14 -I${abs_top_srcdir}/src
-if BUILD_NO_LIB
-else
-AM_CXXFLAGS += -DHAVE_LIBCFA
-endif
-if BUILD_DEBUG
-AM_CXXFLAGS += -DHAVE_LIBCFA_DEBUG
-endif
-if BUILD_RELEASE
-AM_CXXFLAGS += -DHAVE_LIBCFA_RELEASE
-endif
-
-# don't install cfa directly
-noinst_PROGRAMS = cfa
-
-# use
-install-exec-hook:
-	@test -z "$(CFA_BINDIR)" || $(MKDIR_P) "$(CFA_BINDIR)"
-	@echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) cfa '$(CFA_BINDIR)/$(CFA_NAME)'"; \
-	$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) cfa $(CFA_BINDIR)/$(CFA_NAME) || exit $$?
-
-uninstall-hook:
-	@echo " ( cd '$(CFA_BINDIR)' && rm -f $(CFA_NAME) )"; \
-	cd "$(CFA_BINDIR)" && rm -f $(CFA_NAME)
-
-cfa_SOURCES = cfa.cc
-
-# put into lib for now
-cc1libdir = ${CFA_LIBDIR}
-cc1lib_PROGRAMS = cc1
-cc1_SOURCES = cc1.cc
-
-aslibdir = ${CFA_LIBDIR}
-aslib_PROGRAMS = as
-as_SOURCES = as.cc
-
-MAINTAINERCLEANFILES = $(CFA_BINDIR)/$(CFA_NAME) @CFA_PREFIX@/lib/${cc1lib_PROGRAMS}
Index: c/driver/Makefile.in
===================================================================
--- src/driver/Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,698 +1,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-######################## -*- Mode: Makefile-Automake -*- ######################
-###############################################################################
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@BUILD_NO_LIB_FALSE@am__append_1 = -DHAVE_LIBCFA
-@BUILD_DEBUG_TRUE@am__append_2 = -DHAVE_LIBCFA_DEBUG
-@BUILD_RELEASE_TRUE@am__append_3 = -DHAVE_LIBCFA_RELEASE
-noinst_PROGRAMS = cfa$(EXEEXT)
-cc1lib_PROGRAMS = cc1$(EXEEXT)
-aslib_PROGRAMS = as$(EXEEXT)
-subdir = src/driver
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(aslibdir)" "$(DESTDIR)$(cc1libdir)"
-PROGRAMS = $(aslib_PROGRAMS) $(cc1lib_PROGRAMS) $(noinst_PROGRAMS)
-am_as_OBJECTS = as.$(OBJEXT)
-as_OBJECTS = $(am_as_OBJECTS)
-as_LDADD = $(LDADD)
-am_cc1_OBJECTS = cc1.$(OBJEXT)
-cc1_OBJECTS = $(am_cc1_OBJECTS)
-cc1_LDADD = $(LDADD)
-am_cfa_OBJECTS = cfa.$(OBJEXT)
-cfa_OBJECTS = $(am_cfa_OBJECTS)
-cfa_LDADD = $(LDADD)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-	-o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(as_SOURCES) $(cc1_SOURCES) $(cfa_SOURCES)
-DIST_SOURCES = $(as_SOURCES) $(cc1_SOURCES) $(cfa_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BACKEND_CC = @BACKEND_CC@
-BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFACC = @CFACC@
-CFACPP = @CFACPP@
-CFA_BACKEND_CC = @CFA_BACKEND_CC@
-CFA_BINDIR = @CFA_BINDIR@
-CFA_FLAGS = @CFA_FLAGS@
-CFA_INCDIR = @CFA_INCDIR@
-CFA_LIBDIR = @CFA_LIBDIR@
-CFA_NAME = @CFA_NAME@
-CFA_PREFIX = @CFA_PREFIX@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DRIVER_DIR = @DRIVER_DIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-# applies to both programs
-AM_CXXFLAGS = -Wall -O2 -g -std=c++14 -I${abs_top_srcdir}/src \
-	$(am__append_1) $(am__append_2) $(am__append_3)
-cfa_SOURCES = cfa.cc
-
-# put into lib for now
-cc1libdir = ${CFA_LIBDIR}
-cc1_SOURCES = cc1.cc
-aslibdir = ${CFA_LIBDIR}
-as_SOURCES = as.cc
-MAINTAINERCLEANFILES = $(CFA_BINDIR)/$(CFA_NAME) @CFA_PREFIX@/lib/${cc1lib_PROGRAMS}
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/driver/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/driver/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-aslibPROGRAMS: $(aslib_PROGRAMS)
-	@$(NORMAL_INSTALL)
-	@list='$(aslib_PROGRAMS)'; test -n "$(aslibdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(aslibdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(aslibdir)" || exit 1; \
-	fi; \
-	for p in $$list; do echo "$$p $$p"; done | \
-	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p \
-	  ; then echo "$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n;h' \
-	    -e 's|.*|.|' \
-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
-	sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
-	    else { print "f", $$3 "/" $$4, $$1; } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	    test -z "$$files" || { \
-	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(aslibdir)$$dir'"; \
-	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(aslibdir)$$dir" || exit $$?; \
-	    } \
-	; done
-
-uninstall-aslibPROGRAMS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(aslib_PROGRAMS)'; test -n "$(aslibdir)" || list=; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' \
-	`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(aslibdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(aslibdir)" && rm -f $$files
-
-clean-aslibPROGRAMS:
-	-test -z "$(aslib_PROGRAMS)" || rm -f $(aslib_PROGRAMS)
-install-cc1libPROGRAMS: $(cc1lib_PROGRAMS)
-	@$(NORMAL_INSTALL)
-	@list='$(cc1lib_PROGRAMS)'; test -n "$(cc1libdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(cc1libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(cc1libdir)" || exit 1; \
-	fi; \
-	for p in $$list; do echo "$$p $$p"; done | \
-	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p \
-	  ; then echo "$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n;h' \
-	    -e 's|.*|.|' \
-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
-	sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
-	    else { print "f", $$3 "/" $$4, $$1; } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	    test -z "$$files" || { \
-	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(cc1libdir)$$dir'"; \
-	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(cc1libdir)$$dir" || exit $$?; \
-	    } \
-	; done
-
-uninstall-cc1libPROGRAMS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(cc1lib_PROGRAMS)'; test -n "$(cc1libdir)" || list=; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' \
-	`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(cc1libdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(cc1libdir)" && rm -f $$files
-
-clean-cc1libPROGRAMS:
-	-test -z "$(cc1lib_PROGRAMS)" || rm -f $(cc1lib_PROGRAMS)
-
-clean-noinstPROGRAMS:
-	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-
-as$(EXEEXT): $(as_OBJECTS) $(as_DEPENDENCIES) $(EXTRA_as_DEPENDENCIES) 
-	@rm -f as$(EXEEXT)
-	$(AM_V_CXXLD)$(CXXLINK) $(as_OBJECTS) $(as_LDADD) $(LIBS)
-
-cc1$(EXEEXT): $(cc1_OBJECTS) $(cc1_DEPENDENCIES) $(EXTRA_cc1_DEPENDENCIES) 
-	@rm -f cc1$(EXEEXT)
-	$(AM_V_CXXLD)$(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
-
-cfa$(EXEEXT): $(cfa_OBJECTS) $(cfa_DEPENDENCIES) $(EXTRA_cfa_DEPENDENCIES) 
-	@rm -f cfa$(EXEEXT)
-	$(AM_V_CXXLD)$(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/as.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cc1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfa.Po@am__quote@
-
-.cc.o:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-	for dir in "$(DESTDIR)$(aslibdir)" "$(DESTDIR)$(cc1libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-aslibPROGRAMS clean-cc1libPROGRAMS clean-generic \
-	clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-aslibPROGRAMS install-cc1libPROGRAMS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-aslibPROGRAMS uninstall-cc1libPROGRAMS
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
-.MAKE: install-am install-exec-am install-strip uninstall-am
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
-	clean-aslibPROGRAMS clean-cc1libPROGRAMS clean-generic \
-	clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
-	distclean-compile distclean-generic distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-aslibPROGRAMS install-cc1libPROGRAMS install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-exec-hook install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-aslibPROGRAMS uninstall-cc1libPROGRAMS \
-	uninstall-hook
-
-.PRECIOUS: Makefile
-
-
-# use
-install-exec-hook:
-	@test -z "$(CFA_BINDIR)" || $(MKDIR_P) "$(CFA_BINDIR)"
-	@echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) cfa '$(CFA_BINDIR)/$(CFA_NAME)'"; \
-	$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) cfa $(CFA_BINDIR)/$(CFA_NAME) || exit $$?
-
-uninstall-hook:
-	@echo " ( cd '$(CFA_BINDIR)' && rm -f $(CFA_NAME) )"; \
-	cd "$(CFA_BINDIR)" && rm -f $(CFA_NAME)
-
-# 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.
-.NOEXPORT:
Index: c/driver/as.cc
===================================================================
--- src/driver/as.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,72 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// as.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Aug  1 10:49:42 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug  2 17:50:09 2018
-// Update Count     : 90
-// 
-
-#include <cstdio>										// perror
-#include <cstdlib>										// exit
-#include <fcntl.h>										// open
-#include <unistd.h>
-#include <sys/stat.h>
-#include <sys/mman.h>									// mmap
-#include <string.h>
-
-//#define __DEBUG_H__
-
-int main( const int argc, const char * argv[] ) {
-	#ifdef __DEBUG_H__
-	for ( int i = 0; i < argc; i += 1 ) {
-		cerr << argv[i] << endl;
-	} // for
-	#endif // __DEBUG_H__
-
-	int fd = open( argv[argc - 1], O_RDWR );
-	if ( fd < 0 ) { perror( "open" ); exit( EXIT_FAILURE ); };
-
-	struct stat mystat = {};
-	if ( fstat( fd, &mystat ) ) { perror( "fstat" ); exit( EXIT_FAILURE ); };
-	off_t size = mystat.st_size;
-
-	char * start = (char *)mmap( NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
-	if ( start == (void *)-1 ) { perror( "mmap" ); exit( EXIT_FAILURE ); };
-
-	if ( char * cursor = strstr( start, ".Ldebug_info0:" ) ) { // debug information ?
-		// Expand file by one byte to hold 2 character Cforall language code.
-		if ( ftruncate( fd, size + 1 ) ) { perror( "ftruncate" ); exit( EXIT_FAILURE ); };
-
-		for ( int i = 0; i < 8; i += 1 ) {				// move N (magic) lines forward
-			cursor = strstr( cursor, "\n" ) + 1;
-		} // for
-
-		cursor -= 2;									// backup over "c\n" language value
-		if ( *(cursor - 1) != 'x' ) { fprintf( stderr, "invalid C language code\n" ); exit( EXIT_FAILURE ); };
-
-		memmove( cursor + 2, cursor + 1, start + size - cursor - 1 ); // move remaining text 1 character right
-
-		*(cursor) = '2';								// replace C language value with CFA
-		*(cursor + 1) = '5';
-	} // if
-
-	if ( munmap( start, size ) ) { perror( "munmap" ); exit( EXIT_FAILURE ); }; // update on disk
-
-	argv[0] = "as";
-	execvp( argv[0], (char * const *)argv );			// should not return
-	perror( "CFA Translator error: cpp level, execvp" );
-	exit( EXIT_FAILURE );								// tell gcc not to go any further
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "g++ -Wall -Wextra as.c -o as" //
-// End: //
Index: c/driver/cc1.cc
===================================================================
--- src/driver/cc1.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,529 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// cc1.cc -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Fri Aug 26 14:23:51 2005
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 19 10:46:11 2018
-// Update Count     : 111
-//
-
-#include <iostream>
-using std::cerr;
-using std::endl;
-#include <string>
-using std::string;
-#include <cstdio>										// stderr, stdout, perror, fprintf
-#include <cstdlib>										// getenv, exit, mkstemp
-#include <unistd.h>										// execvp, fork, unlink
-#include <sys/wait.h>									// wait
-
-#include "config.h"										// configure info
-
-
-//#define __DEBUG_H__
-
-
-string compiler_name( CFA_BACKEND_CC );					// path/name of C compiler
-
-string D__GCC_X__( "-D__GCC_X__=" );
-string D__GCC_BPREFIX__( "-D__GCC_BPREFIX__=" );
-string D__CFA_FLAGPREFIX__( "-D__CFA_FLAG__=" );
-
-char tmpname[] = P_tmpdir "/CFAXXXXXX";
-int tmpfilefd = -1;
-
-
-bool prefix( string arg, string pre ) {
-	return arg.substr( 0, pre.size() ) == pre;
-} // prefix
-
-enum { NumSuffixes = 2 };
-const string suffixes[NumSuffixes] = { "cfa", "hfa", };
-
-bool suffix( string arg ) {
-	//std::cerr << arg << std::endl;
-	size_t dot = arg.find_last_of( "." );
-	//std::cerr << dot << " " << (dot != string::npos ? arg.substr( dot + 1 ) : "fred" ) << std::endl;
-	if ( dot == string::npos ) return false;
-	string sx = arg.substr( dot + 1 );
-	for ( int i = 0; i < NumSuffixes; i += 1 ) {
-		if ( sx == suffixes[i] ) return true;
-	} // for
-	return false;
-} // suffix
-
-
-void checkEnv( const char *args[], int &nargs ) {
-	char *value;
-
-	value = getenv( "__COMPILER__" );
-	if ( value != NULL ) {
-		compiler_name = value;
-		#ifdef __DEBUG_H__
-		cerr << "env arg:\"" << compiler_name << "\"" << endl;
-		#endif // __DEBUG_H__
-	} // if
-
-	value = getenv( "__GCC_MACHINE__" );
-	if ( value != NULL ) {
-		args[nargs] = ( *new string( value ) ).c_str(); // pass the argument along
-		#ifdef __DEBUG_H__
-		cerr << "env arg:\"" << args[nargs] << "\"" << endl;
-		#endif // __DEBUG_H__
-		nargs += 1;
-	} // if
-
-	value = getenv( "__GCC_VERSION__" );
-	if ( value != NULL ) {
-		args[nargs] = ( *new string( value ) ).c_str(); // pass the argument along
-		#ifdef __DEBUG_H__
-		cerr << "env arg:\"" << args[nargs] << "\"" << endl;
-		#endif // __DEBUG_H__
-		nargs += 1;
-	} // if
-} // checkEnv
-
-
-void rmtmpfile() {
-	if ( unlink( tmpname ) == -1 ) {					// remove tmpname
-		perror ( "CFA Translator error: cpp failed" );
-		exit( EXIT_FAILURE );
-	} // if
-	tmpfilefd = -1;										// mark closed
-} // rmtmpfile
-
-
-void sigTermHandler( __attribute__((unused)) int signal ) {
-	if ( tmpfilefd != -1 ) {							// RACE, file created ?
-		rmtmpfile();									// remove
-		exit( EXIT_FAILURE );							// terminate 
-	} // if
-} // sigTermHandler
-
-
-void Stage1( const int argc, const char * const argv[] ) {
-	int code;
-	int i;
-
-	string arg;
-	string bprefix;
-
-	const char *cpp_in = NULL;
-	const char *cpp_out = NULL;
-
-	bool CFA_flag = false;
-	bool cpp_flag = false;
-	const char *o_name = NULL;
-
-	const char *args[argc + 100];						// leave space for 100 additional cpp command line values
-	int nargs = 1;										// number of arguments in args list; 0 => command name
-	const char *cargs[20];								// leave space for 20 additional cfa-cpp command line values
-	int ncargs = 1;										// 0 => command name
-
-	signal( SIGINT,  sigTermHandler );
-	signal( SIGTERM, sigTermHandler );
-
-	#ifdef __DEBUG_H__
-	cerr << "Stage1" << endl;
-	#endif // __DEBUG_H__
-
-	// process all the arguments
-
-	checkEnv( args, nargs );							// arguments passed via environment variables
-
-	for ( i = 1; i < argc; i += 1 ) {
-		#ifdef __DEBUG_H__
-		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
-		#endif // __DEBUG_H__
-		arg = argv[i];
-		#ifdef __DEBUG_H__
-		cerr << "arg:\"" << arg << "\"" << endl;
-		#endif // __DEBUG_H__
-		if ( prefix( arg, "-" ) ) {
-			// strip g++ flags that are inappropriate or cause duplicates in subsequent passes
-
-			if ( arg == "-quiet" ) {
-			} else if ( arg == "-imultilib" || arg == "-imultiarch" ) {
-				i += 1;									// and the argument
-			} else if ( prefix( arg, "-A" ) ) {
-			} else if ( prefix( arg, "-D__GNU" ) ) {
-				//********
-				// GCC 5.6.0 SEPARATED THE -D FROM THE ARGUMENT!
-				//********
-			} else if ( arg == "-D" && prefix( argv[i + 1], "__GNU" ) ) {
-				i += 1;									// and the argument
-
-				// strip flags controlling cpp step
-
-			} else if ( arg == "-D__CPP__" ) {
-				cpp_flag = true;
-			} else if ( arg == "-D" && string( argv[i + 1] ) == "__CPP__" ) {
-				i += 1;									// and the argument
-				cpp_flag = true;
-			} else if ( arg == "-D__CFA_PREPROCESS__" ) {
-				CFA_flag = true;
-			} else if ( arg == "-D" && string( argv[i + 1] ) == "__CFA_PREPROCESS__" ) {
-				i += 1;									// and the argument
-				CFA_flag = true;
-			} else if ( prefix( arg, D__CFA_FLAGPREFIX__ ) ) {
-				cargs[ncargs] = ( *new string( arg.substr( D__CFA_FLAGPREFIX__.size() ) ) ).c_str();
-				ncargs += 1;
-			} else if ( arg == "-D" && prefix( argv[i + 1], D__CFA_FLAGPREFIX__.substr(2) ) ) {
-				cargs[ncargs] = ( *new string( string( argv[i + 1] ).substr( D__CFA_FLAGPREFIX__.size() - 2 ) ) ).c_str();
-				ncargs += 1;
-				i += 1;									// and the argument
-			// } else if ( prefix( arg, D__GCC_X__ ) ) {
-			// 	args[nargs] = "-x";
-			// 	nargs += 1;
-			// 	args[nargs] = ( *new string( arg.substr( D__GCC_X__.size() ) ) ).c_str(); // pass the flag along
-			// 	nargs += 1;
-			// } else if ( arg == "-D" && prefix( argv[i + 1], D__GCC_X__.substr(2) ) ) {
-			// 	args[nargs] = "-x";
-			// 	nargs += 1;
-			// 	args[nargs] = ( *new string( string( argv[i + 1] ).substr( D__GCC_X__.size() - 2 ) ) ).c_str(); // pass the flag along
-			// 	nargs += 1;
-			// 	i += 1;									// and the argument
-			} else if ( prefix( arg, D__GCC_BPREFIX__ ) ) {
-				bprefix = arg.substr( D__GCC_BPREFIX__.size() );
-			} else if ( arg == "-D" && prefix( argv[i + 1], D__GCC_BPREFIX__.substr(2) ) ) {
-				bprefix = string( argv[i + 1] ).substr( D__GCC_BPREFIX__.size() - 2 );
-				i += 1;									// and the argument
-
-			// all other flags
-
-			} else if ( arg == "-o" ) {
-				i += 1;
-				o_name = argv[i];
-			} else {
-				args[nargs] = argv[i];					// pass the flag along
-				nargs += 1;
-				// CPP flags with an argument
-				if ( arg == "-D" || arg == "-U" || arg == "-I" || arg == "-MF" || arg == "-MT" || arg == "-MQ" ||
-					 arg == "-include" || arg == "-imacros" || arg == "-idirafter" || arg == "-iprefix" ||
-					 arg == "-iwithprefix" || arg == "-iwithprefixbefore" || arg == "-isystem" || arg == "-isysroot" ) {
-					i += 1;
-					args[nargs] = argv[i];				// pass the argument along
-					nargs += 1;
-					#ifdef __DEBUG_H__
-					cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
-					#endif // __DEBUG_H__
-				} else if ( arg == "-MD" || arg == "-MMD" ) {
-					args[nargs] = "-MF";				// insert before file
-					nargs += 1;
-					i += 1;
-					args[nargs] = argv[i];				// pass the argument along
-					nargs += 1;
-					#ifdef __DEBUG_H__
-					cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
-					#endif // __DEBUG_H__
-				} // if
-			} // if
-		} else {										// obtain input and possibly output files
-			if ( cpp_in == NULL ) {
-				cpp_in = argv[i];
-				#ifdef __DEBUG_H__
-				cerr << "cpp_in:\"" << cpp_in << "\"" << endl;
-				#endif // __DEBUG_H__
-			} else if ( cpp_out == NULL ) {
-				cpp_out = argv[i];
-				#ifdef __DEBUG_H__
-				cerr << "cpp_out:\"" << cpp_out << "\""<< endl;
-				#endif // __DEBUG_H__
-			} else {
-				cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
-				exit( EXIT_FAILURE );
-			} // if
-		} // if
-	} // for
-
-	#ifdef __DEBUG_H__
-	cerr << "args:";
-	for ( i = 1; i < nargs; i += 1 ) {
-		cerr << " " << args[i];
-	} // for
-	if ( cpp_in != NULL ) cerr << " " << cpp_in;
-	if ( cpp_out != NULL ) cerr << " " << cpp_out;
-	cerr << endl;
-	#endif // __DEBUG_H__
-
-	if ( cpp_in == NULL ) {
-		cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	if ( cpp_flag ) {
-		// The -E flag is specified on the cfa command so only run the preprocessor and output is written to standard
-		// output or -o. The call to cfa has a -E so it does not have to be added to the argument list.
-
-		args[0] = compiler_name.c_str();
-		args[nargs] = cpp_in;
-		nargs += 1;
-		if ( o_name != NULL ) {							// location for output
-			args[nargs] = "-o";
-			nargs += 1;
-			args[nargs] = o_name;
-			nargs += 1;
-		} // if
-		args[nargs] = NULL;								// terminate argument list
-
-		#ifdef __DEBUG_H__
-		cerr << "nargs: " << nargs << endl;
-		for ( i = 0; args[i] != NULL; i += 1 ) {
-			cerr << args[i] << " ";
-		} // for
-		cerr << endl;
-		#endif // __DEBUG_H__
-
-		execvp( args[0], (char *const *)args );			// should not return
-		perror( "CFA Translator error: cpp level, execvp" );
-		exit( EXIT_FAILURE );
-	} // if
-
-	// Create a temporary file to store output of the C preprocessor.
-
-	tmpfilefd = mkstemp( tmpname );
-	if ( tmpfilefd == -1 ) {
-		perror( "CFA Translator error: cpp level, mkstemp" );
-		exit( EXIT_FAILURE );
-	} // if
-
-	#ifdef __DEBUG_H__
-	cerr << "tmpname:" << tmpname << " tmpfilefd:" << tmpfilefd << endl;
-	#endif // __DEBUG_H__
-
-	// Run the C preprocessor and save the output in tmpfile.
-
-	if ( fork() == 0 ) {								 // child process ?
-		// -o xxx.ii cannot be used to write the output file from cpp because no output file is created if cpp detects
-		// an error (e.g., cannot find include file). Whereas, output is always generated, even when there is an error,
-		// when cpp writes to stdout. Hence, stdout is redirected into the temporary file.
-		if ( freopen( tmpname, "w", stdout ) == NULL ) { // redirect stdout to tmpname
-			perror( "CFA Translator error: cpp level, freopen" );
-			exit( EXIT_FAILURE );
-		} // if
-
-		args[0] = compiler_name.c_str();
-		if ( suffix( cpp_in ) ) {
-			args[nargs] = "-x";
-			nargs += 1;
-			args[nargs] = "c";
-			nargs += 1;
-		} // if
-		args[nargs] = cpp_in;							// input to cpp
-		nargs += 1;
-		args[nargs] = NULL;								// terminate argument list
-
-		#ifdef __DEBUG_H__
-		cerr << "cpp nargs: " << nargs << endl;
-		for ( i = 0; args[i] != NULL; i += 1 ) {
-			cerr << args[i] << " ";
-		} // for
-		cerr << endl;
-		#endif // __DEBUG_H__
-
-		execvp( args[0], (char *const *)args );			// should not return
-		perror( "CFA Translator error: cpp level, execvp" );
-		exit( EXIT_FAILURE );
-	} // if
-
-	wait( &code );										// wait for child to finish
-
-	#ifdef __DEBUG_H__
-	cerr << "return code from cpp:" << WEXITSTATUS(code) << endl;
-	#endif // __DEBUG_H__
-
-	if ( WIFSIGNALED(code) != 0 ) {						// child failed ?
-		rmtmpfile();									// remove tmpname
-		cerr << "CFA Translator error: cpp failed with signal " << WTERMSIG(code) << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	if ( WEXITSTATUS(code) != 0 ) {						// child error ?
-		rmtmpfile();									// remove tmpname
-		exit( WEXITSTATUS( code ) );					// do not continue
-	} // if
-
-	// If -CFA flag specified, run the cfa-cpp preprocessor on the temporary file, and output is written to standard
-	// output.  Otherwise, run the cfa-cpp preprocessor on the temporary file and save the result into the output file.
-
-	if ( fork() == 0 ) {								// child runs CFA
-		cargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
-
-		// Source file-name used to generate routine names containing global initializations for TU.
-		cargs[ncargs] = ( *new string( "-F" ) ).c_str();
-		ncargs += 1;
-		cargs[ncargs] = ( *new string( string( cpp_in ) ) ).c_str();
-		ncargs += 1;
-
-		cargs[ncargs] = tmpname;
-		ncargs += 1;
-		if ( o_name != NULL ) {
-			cargs[ncargs] = o_name;
-			ncargs += 1;
-		} else if ( ! CFA_flag ) {						// run cfa-cpp ?
-			cargs[ncargs] = cpp_out;
-			ncargs += 1;
-		} // if
-		cargs[ncargs] = NULL;							// terminate argument list
-
-		#ifdef __DEBUG_H__
-		cerr << "cfa-cpp ncargs: " << o_name << " " << CFA_flag << " " << ncargs << endl;
-		for ( i = 0; cargs[i] != NULL; i += 1 ) {
-			cerr << cargs[i] << " ";
-		} // for
-		cerr << endl;
-		#endif // __DEBUG_H__
-
-		execvp( cargs[0], (char * const *)cargs );		// should not return
-		perror( "CFA Translator error: cpp level, execvp" );
-		exit( EXIT_FAILURE );
-	} // if
-
-	wait( &code );										// wait for child to finish
-
-	#ifdef __DEBUG_H__
-	cerr << "return code from cfa-cpp:" << WEXITSTATUS(code) << endl;
-	#endif // __DEBUG_H__
-
-	// Must unlink here because file must exist across execvp.
-	rmtmpfile();										// remove tmpname
-
-	if ( WIFSIGNALED(code) ) {							// child failed ?
-		cerr << "CFA Translator error: cfa-cpp failed with signal " << WTERMSIG(code) << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	exit( WEXITSTATUS(code) );
-} // Stage1
-
-
-void Stage2( const int argc, const char * const * argv ) {
-	int i;
-
-	string arg;
-
-	const char *cpp_in = NULL;
-
-	const char *args[argc + 100];						// leave space for 100 additional cfa command line values
-	int nargs = 1;										// number of arguments in args list; 0 => command name
-
-	#ifdef __DEBUG_H__
-	cerr << "Stage2" << endl;
-	#endif // __DEBUG_H__
-
-	// process all the arguments
-
-	checkEnv( args, nargs );							// arguments passed via environment variables
-
-	for ( i = 1; i < argc; i += 1 ) {
-		#ifdef __DEBUG_H__
-		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
-		#endif // __DEBUG_H__
-		arg = argv[i];
-		#ifdef __DEBUG_H__
-		cerr << "arg:\"" << arg << "\"" << endl;
-		#endif // __DEBUG_H__
-		if ( prefix( arg, "-" ) ) {
-			// strip inappropriate flags
-
-			if ( arg == "-quiet" || arg == "-version" || arg == "-fpreprocessed" ||
-				// Currently CFA does not suppose precompiled .h files.
-				prefix( arg, "--output-pch" ) ) {
-
-				// strip inappropriate flags with an argument
-
-			} else if ( arg == "-auxbase" || arg == "-auxbase-strip" || arg == "-dumpbase" ) {
-				i += 1;
-				#ifdef __DEBUG_H__
-				cerr << "arg:\"" << argv[i] << "\"" << endl;
-				#endif // __DEBUG_H__
-
-				// all other flags
-
-			} else {
-				args[nargs] = argv[i];					// pass the flag along
-				nargs += 1;
-				if ( arg == "-o" ) {
-					i += 1;
-					args[nargs] = argv[i];				// pass the argument along
-					nargs += 1;
-					#ifdef __DEBUG_H__
-					cerr << "arg:\"" << argv[i] << "\"" << endl;
-					#endif // __DEBUG_H__
-				} // if
-			} // if
-		} else {										// obtain input and possibly output files
-			if ( cpp_in == NULL ) {
-				cpp_in = argv[i];
-				#ifdef __DEBUG_H__
-				cerr << "cpp_in:\"" << cpp_in << "\"" << endl;
-				#endif // __DEBUG_H__
-			} else {
-				cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
-				exit( EXIT_FAILURE );
-			} // if
-		} // if
-	} // for
-
-	#ifdef __DEBUG_H__
-	cerr << "args:";
-	for ( i = 1; i < nargs; i += 1 ) {
-		cerr << " " << args[i];
-	} // for
-	cerr << endl;
-	if ( cpp_in != NULL ) cerr << " " << cpp_in;
-	#endif // __DEBUG_H__
-
-	args[0] = compiler_name.c_str();
-	args[nargs] = "-S";									// only compile and put assembler output in specified file
-	nargs += 1;
-	args[nargs] = cpp_in;
-	nargs += 1;
-	args[nargs] = NULL;									// terminate argument list
-
-	#ifdef __DEBUG_H__
-	cerr << "stage2 nargs: " << nargs << endl;
-	for ( i = 0; args[i] != NULL; i += 1 ) {
-		cerr << args[i] << " ";
-	} // for
-	cerr << endl;
-	#endif // __DEBUG_H__
-
-	execvp( args[0], (char * const *)args );			// should not return
-	perror( "CFA Translator error: cpp level, execvp" );
-	exit( EXIT_FAILURE );								// tell gcc not to go any further
-} // Stage2
-
-
-int main( const int argc, const char * const argv[], __attribute__((unused)) const char * const env[] ) {
-	#ifdef __DEBUG_H__
-	for ( int i = 0; env[i] != NULL; i += 1 ) {
-		cerr << env[i] << endl;
-	} // for
-	#endif // __DEBUG_H__
-
-	string arg = argv[1];
-
-	// Currently, stage 1 starts with flag -E and stage 2 with flag -fpreprocessed.
-
-	if ( arg == "-E" ) {
-		Stage1( argc, argv );
-	} else if ( arg == "-fpreprocessed" ) {
-		Stage2( argc, argv );
-	} else {
-		cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
-		exit( EXIT_FAILURE );
-	} // if
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/driver/cfa.cc
===================================================================
--- src/driver/cfa.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,509 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// cfa.cc --
-//
-// Author           : Peter A. Buhr
-// Created On       : Tue Aug 20 13:44:49 2002
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 13 17:40:12 2018
-// Update Count     : 258
-//
-
-#include <iostream>
-#include <cstdio>										// perror
-#include <cstdlib>										// putenv, exit
-#include <unistd.h>										// execvp
-#include <string>										// STL version
-#include <string.h>										// strcmp
-
-#include "Common/SemanticError.h"
-#include "config.h"										// configure info
-
-using std::cerr;
-using std::endl;
-using std::string;
-using std::to_string;
-
-
-//#define __DEBUG_H__
-
-
-bool prefix( string arg, string pre ) {
-	return arg.substr( 0, pre.size() ) == pre;
-} // prefix
-
-enum { NumSuffixes = 2 };
-const string suffixes[NumSuffixes] = { "cfa", "hfa", };
-
-bool suffix( string arg ) {
-	//std::cerr << arg << std::endl;
-	size_t dot = arg.find_last_of( "." );
-	//std::cerr << dot << " " << (dot != string::npos ? arg.substr( dot + 1 ) : "fred" ) << std::endl;
-	if ( dot == string::npos ) return false;
-	string sx = arg.substr( dot + 1 );
-	for ( int i = 0; i < NumSuffixes; i += 1 ) {
-		if ( sx == suffixes[i] ) return true;
-	} // for
-	return false;
-} // suffix
-
-
-void shuffle( const char *args[], int S, int E, int N ) {
-	// S & E index 1 passed the end so adjust with -1
-	#ifdef __DEBUG_H__
-	cerr << "shuffle:" << S << " " << E << " " << N << endl;
-	#endif // __DEBUG_H__
-	for ( int j = E-1 + N; j > S-1 + N; j -=1 ) {
-		#ifdef __DEBUG_H__
-		cerr << "\t" << j << " " << j-N << endl;
-		#endif // __DEBUG_H__
-		args[j] = args[j-N];
-	} // for
-} // shuffle
-
-
-#define str(s) #s
-
-int main( int argc, char *argv[] ) {
-	string Version( CFA_VERSION_LONG );					// current version number from CONFIG
-	string Major( str( CFA_VERSION_MAJOR ) ), Minor( str( CFA_VERSION_MINOR ) ), Patch( str( CFA_VERSION_PATCH ) );
-
-	string installincdir( CFA_INCDIR );					// fixed location of include files
-	string installlibdir( CFA_LIBDIR );					// fixed location of cc1 and cfa-cpp commands
-
-	string heading;										// banner printed at start of cfa compilation
-	string arg;											// current command-line argument during command-line parsing
-	string Bprefix;										// path where gcc looks for compiler command steps
-	string langstd;										// language standard
-
-	string compiler_path( CFA_BACKEND_CC );				// path/name of C compiler
-	string compiler_name;								// name of C compiler
-
-	bool nonoptarg = false;								// indicates non-option argument specified
-	bool link = true;									// linking as well as compiling
-	bool verbose = false;								// -v flag
-	bool quiet = false;									// -quiet flag
-	bool debug = true;									// -debug flag
-	bool help = false;									// -help flag
-	bool CFA_flag = false;								// -CFA flag
-	bool cpp_flag = false;								// -E or -M flag, preprocessor only
-	bool std_flag = false;								// -std= flag
-	bool noincstd_flag = false;							// -no-include-stdhdr= flag
-	bool xflag = false;									// user supplied -x flag
-	bool debugging __attribute(( unused )) = false;		// -g flag
-
-	const char *args[argc + 100];						// cfa command line values, plus some space for additional flags
-	int sargs = 1;										// starting location for arguments in args list
-	int nargs = sargs;									// number of arguments in args list; 0 => command name
-
-	const char *libs[argc + 20];						// non-user libraries must come separately, plus some added libraries and flags
-	int nlibs = 0;
-
-	#ifdef __DEBUG_H__
-	cerr << "CFA:" << endl;
-	#endif // __DEBUG_H__
-
-	// process command-line arguments
-
-	for ( int i = 1; i < argc; i += 1 ) {
-		#ifdef __DEBUG_H__
-		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
-		#endif // __DEBUG_H__
-		arg = argv[i];									// convert to string value
-		#ifdef __DEBUG_H__
-		cerr << "arg:\"" << arg << "\"" << endl;
-		#endif // __DEBUG_H__
-		if ( prefix( arg, "-" ) ) {
-			// pass through arguments
-
-			if ( arg == "-Xlinker" || arg == "-o" ) {
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-				i += 1;
-				if ( i == argc ) continue;				// next argument available ?
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-			} else if ( arg == "-XCFA" ) {				// CFA pass through
-				i += 1;
-				args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + argv[i] ) ).c_str();
-				nargs += 1;
-
-				// CFA specific arguments
-
-			} else if ( arg == "-CFA" ) {
-				CFA_flag = true;						// strip the -CFA flag
-				link = false;
-				args[nargs] = "-E";						// replace the argument with -E
-				nargs += 1;
-			} else if ( arg == "-debug" ) {
-				debug = true;							// strip the debug flag
-			} else if ( arg == "-nodebug" ) {
-				debug = false;							// strip the nodebug flag
-			} else if ( arg == "-quiet" ) {
-				quiet = true;							// strip the quiet flag
-			} else if ( arg == "-noquiet" ) {
-				quiet = false;							// strip the noquiet flag
-			} else if ( arg == "-help" ) {
-				help = true;							// strip the help flag
-			} else if ( arg == "-nohelp" ) {
-				help = false;							// strip the nohelp flag
-			} else if ( arg == "-no-include-stdhdr" ) {
-				noincstd_flag = true;					// strip the no-include-stdhdr flag
-			} else if ( arg == "-compiler" ) {
-				// use the user specified compiler
-				i += 1;
-				if ( i == argc ) continue;				// next argument available ?
-				compiler_path = argv[i];
-				if ( putenv( (char *)( *new string( string( "__U_COMPILER__=" ) + argv[i]) ).c_str() ) != 0 ) {
-					cerr << argv[0] << " error, cannot set environment variable." << endl;
-					exit( EXIT_FAILURE );
-				} // if
-
-				// C specific arguments
-
-			} else if ( arg == "-v" ) {
-				verbose = true;							// verbosity required
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-			} else if ( arg == "-g" ) {
-				debugging = true;						// symbolic debugging required
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-			} else if ( prefix( arg, "-std=" ) || prefix( arg, "--std=" ) ) {
-				std_flag = true;						// -std=XX provided
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-			} else if ( arg == "-x" ) {
-				xflag = true;
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-				i += 1;									// advance to argument
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-				// args[nargs] = ( *new string( string("-D__GCC_X__=") + argv[i] ) ).c_str(); // add the argument for -x
-				// nargs += 1;
-			} else if ( prefix( arg, "-x" ) ) {
-				xflag = true;
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-				// args[nargs] = ( *new string( string("-D__GCC_X__=") + arg.substr(2) ) ).c_str(); // add the argument for -x
-				// nargs += 1;
-			} else if ( arg == "-w" ) {
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-				args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str(); // add the argument for cfa-cpp
-				nargs += 1;
-			} else if ( prefix( arg, "-W" ) ) {			// check before next tests
-				if ( arg == "-Werror" || arg == "-Wall" ) {
-					args[nargs] = argv[i];				// pass the argument along
-					nargs += 1;
-					args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str(); // add the argument for cfa-cpp
-					nargs += 1;
-				} else {
-					unsigned int adv = prefix( arg, "-Wno-" ) ? 5 : 2;
-					args[nargs] = argv[i];				// conditionally pass the argument along
-					const char * warning = argv[i] + adv;	  // extract warning
-					if ( SemanticWarning_Exist( warning ) ) { // replace the argument for cfa-cpp
-						args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + arg ) ).c_str();
-					} // if
-					nargs += 1;
-				} // if
-			} else if ( prefix( arg, "-B" ) ) {
-				Bprefix = arg.substr(2);				// strip the -B flag
-				args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
-				nargs += 1;
-			} else if ( prefix( arg, "-b" ) ) {
-				if ( arg.length() == 2 ) {				// separate argument ?
-					i += 1;
-					if ( i == argc ) continue;			// next argument available ?
-					arg += argv[i];						// concatenate argument
-				} // if
-				// later versions of gcc require the -b option to appear at the start of the command line
-				shuffle( args, sargs, nargs, 1 );		// make room at front of argument list
-				args[sargs] = ( *new string( arg ) ).c_str(); // pass the argument along
-				if ( putenv( (char *)( *new string( string( "__GCC_MACHINE__=" ) + arg ) ).c_str() ) != 0 ) {
-					cerr << argv[0] << " error, cannot set environment variable." << endl;
-					exit( EXIT_FAILURE );
-				} // if
-				sargs += 1;
-				nargs += 1;
-			} else if ( prefix( arg, "-V" ) ) {
-				if ( arg.length() == 2 ) {				// separate argument ?
-					i += 1;
-					if ( i == argc ) continue;			// next argument available ?
-					arg += argv[i];						// concatenate argument
-				} // if
-				// later versions of gcc require the -V option to appear at the start of the command line
-				shuffle( args, sargs, nargs, 1 );		// make room at front of argument list
-				args[sargs] = ( *new string( arg ) ).c_str(); // pass the argument along
-				if ( putenv( (char *)( *new string( string( "__GCC_VERSION__=" ) + arg ) ).c_str() ) != 0 ) {
-					cerr << argv[0] << " error, cannot set environment variable." << endl;
-					exit( EXIT_FAILURE );
-				} // if
-				sargs += 1;
-				nargs += 1;
-			} else if ( arg == "-c" || arg == "-S" || arg == "-E" || arg == "-M" || arg == "-MM" ) {
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-				if ( arg == "-E" || arg == "-M" || arg == "-MM" ) {
-					cpp_flag = true;					// cpp only
-				} // if
-				link = false;                           // no linkage required
-			} else if ( arg[1] == 'l' ) {
-				// if the user specifies a library, load it after user code
-				libs[nlibs] = argv[i];
-				nlibs += 1;
-			} else {
-				// concatenate any other arguments
-				args[nargs] = argv[i];
-				nargs += 1;
-			} // if
-		} else {
-			bool opt = false;
-			if ( ! xflag && suffix( arg ) ) {
-				args[nargs] = "-x";
-				nargs += 1;
-				args[nargs] = "c";
-				nargs += 1;
-				// args[nargs] = ( *new string( string("-D__GCC_X__=c") ) ).c_str(); // add the argument for -x
-				// nargs += 1;
-				opt = true;
-			} // if
-			// concatenate other arguments
-			args[nargs] = argv[i];
-			nargs += 1;
-			if ( opt ) {
-				args[nargs] = "-x";
-				nargs += 1;
-				args[nargs] = "none";
-				nargs += 1;
-				// args[nargs] = ( *new string( string("-D__GCC_X__=none") ) ).c_str(); // add the argument for -x
-				// nargs += 1;
-			} // if
-			nonoptarg = true;
-			xflag = false;
-		} // if
-	} // for
-
-	#ifdef __x86_64__
-	args[nargs] = "-mcx16";								// allow double-wide CAA
-	nargs += 1;
-	#endif // __x86_64__
-
-	#ifdef __DEBUG_H__
-	cerr << "args:";
-	for ( int i = 1; i < nargs; i += 1 ) {
-		cerr << " " << args[i];
-	} // for
-	cerr << endl;
-	#endif // __DEBUG_H__
-
-	if ( cpp_flag && CFA_flag ) {
-		cerr << argv[0] << " error, cannot use -E and -CFA flags together." << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	// add the CFA include-library paths, which allow direct access to header files without directory qualification
-	args[nargs] = "-I" CFA_INCDIR;
-	nargs += 1;
-	if ( ! noincstd_flag ) {							// do not use during build
-		args[nargs] = "-I" CFA_INCDIR "/stdhdr";
-		nargs += 1;
-	} // if
-	args[nargs] = "-I" CFA_INCDIR "/concurrency";
-	nargs += 1;
-	args[nargs] = "-I" CFA_INCDIR "/containers";
-	nargs += 1;
-
-	#ifdef HAVE_LIBCFA
-	if ( link ) {
-		#if ! defined(HAVE_LIBCFA_RELEASE)
-		if ( ! debug ) {
-			cerr << "error: Option -nodebug is unavailable, libcfa was not installed." << endl;
-			exit( EXIT_FAILURE );
-		} // if
-		#endif
-		#if ! defined(HAVE_LIBCFA_DEBUG)
-		if ( debug ) {
-			cerr << "error: Option -debug is unavailable, libcfa-d was not installed." << endl;
-			exit( EXIT_FAILURE );
-		} // if
-		#endif
-
-		args[nargs] = "-Xlinker";
-		nargs += 1;
-		args[nargs] = "--undefined=__cfaabi_dbg_bits_write";
-		nargs += 1;
-		args[nargs] = "-Xlinker";
-		nargs += 1;
-		args[nargs] = "--undefined=__cfaabi_interpose_startup";
-		nargs += 1;
-		args[nargs] = "-Xlinker";
-		nargs += 1;
-		args[nargs] = "--undefined=__cfaabi_appready_startup";
-		nargs += 1;
-
-		// include the cfa library in case it's needed
-		args[nargs] = "-L" CFA_LIBDIR;
-		nargs += 1;
-		if ( debug ) {
-			args[nargs] = "-lcfa-d";
-		} else {
-			args[nargs] = "-lcfa";
-		} // if
-		nargs += 1;
-		args[nargs] = "-lpthread";
-		nargs += 1;
-		args[nargs] = "-ldl";
-		nargs += 1;
-		args[nargs] = "-lrt";
-		nargs += 1;
-	} // if
-	#endif // HAVE_LIBCFA
-
-	// Add exception flags (unconditionally)
-	args[nargs] = "-fexceptions";
-	nargs += 1;
-
-	// add the correct set of flags based on the type of compile this is
-
-	args[nargs] = ( *new string( string("-D__CFA_MAJOR__=") + Major ) ).c_str();
-	nargs += 1;
-	args[nargs] = ( *new string( string("-D__CFA_MINOR__=") + Minor ) ).c_str();
-	nargs += 1;
-	args[nargs] = ( *new string( string("-D__CFA_PATCH__=") + Patch ) ).c_str();
-	nargs += 1;
-	args[nargs] = "-D__CFA__";
-	nargs += 1;
-	args[nargs] = "-D__CFORALL__";
-	nargs += 1;
-	args[nargs] = "-D__cforall";
-	nargs += 1;
-
-	if ( cpp_flag ) {
-		args[nargs] = "-D__CPP__";
-		nargs += 1;
-	} // if
-
-	shuffle( args, sargs, nargs, 1 );					// make room at front of argument list
-	nargs += 1;
-	if ( CFA_flag ) {
-		args[sargs] = "-D__CFA_FLAG__=-N";
-		args[nargs] = "-D__CFA_PREPROCESS_";
-		nargs += 1;
-	} else {
-		args[sargs] = "-D__CFA_FLAG__=-L";
-	} // if
-	sargs += 1;
-
-	if ( debug ) {
-		heading += " (debug)";
-		args[nargs] = "-D__CFA_DEBUG__";
-		nargs += 1;
-	} else {
-		heading += " (no debug)";
-	} // if
-
-	if ( Bprefix.length() == 0 ) {
-		Bprefix = installlibdir;
-		args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
-		nargs += 1;
-	} // if
-
-    args[nargs] = "-Xlinker";							// used by backtrace
-    nargs += 1;
-    args[nargs] = "-export-dynamic";
-    nargs += 1;
-
-	// execute the compilation command
-
-	args[0] = compiler_path.c_str();					// set compiler command for exec
-	// find actual name of the compiler independent of the path to it
-	int p = compiler_path.find_last_of( '/' );			// scan r -> l for first '/'
-	if ( p == -1 ) {
-		compiler_name = compiler_path;
-	} else {
-		compiler_name = *new string( compiler_path.substr( p + 1 ) );
-	} // if
-
-	if ( prefix( compiler_name, "gcc" ) ) {				// allow suffix on gcc name
-		args[nargs] = "-no-integrated-cpp";
-		nargs += 1;
-		args[nargs] = "-Wno-deprecated";
-		nargs += 1;
-		if ( ! std_flag ) {								// default c11, if none specified
-			args[nargs] = "-std=gnu11";
-			nargs += 1;
-		} // if
-		args[nargs] = "-fgnu89-inline";
-		nargs += 1;
-		args[nargs] = "-D__int8_t_defined";				// prevent gcc type-size attributes
-		nargs += 1;
-		args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
-		nargs += 1;
-		args[nargs] = "-lm";
-		nargs += 1;
-	} else {
-		cerr << argv[0] << " error, compiler \"" << compiler_name << "\" unsupported." << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	for ( int i = 0; i < nlibs; i += 1 ) {				// copy non-user libraries after all user libraries
-		args[nargs] = libs[i];
-		nargs += 1;
-	} // for
-
-	args[nargs] = NULL;									// terminate with NULL
-
-	#ifdef __DEBUG_H__
-	cerr << "nargs: " << nargs << endl;
-	cerr << "args:" << endl;
-	for ( int i = 0; args[i] != NULL; i += 1 ) {
-		cerr << " \"" << args[i] << "\"" << endl;
-	} // for
-	#endif // __DEBUG_H__
-
-	if ( ! quiet ) {
-		cerr << "CFA " << "Version " << Version << heading << endl;
-
-		if ( help ) {
-			cerr <<
-				"-debug\t\t\t: use cfa runtime with debug checking" << endl <<
-				"-help\t\t\t: print this help message" << endl <<
-				"-quiet\t\t\t: print no messages from the cfa command" << endl <<
-				"-CFA\t\t\t: run the cpp preprocessor and the cfa-cpp translator" << endl <<
-				"-XCFA -cfa-cpp-flag\t: pass next flag as-is to the cfa-cpp translator" << endl <<
-				"...\t\t\t: any other " << compiler_name << " flags" << endl;
-		} // if
-	} // if
-
-	if ( verbose ) {
-		if ( argc == 2 ) exit( EXIT_SUCCESS );			// if only the -v flag is specified, do not invoke gcc
-
-		for ( int i = 0; args[i] != NULL; i += 1 ) {
-			cerr << args[i] << " ";
-		} // for
-		cerr << endl;
-	} // if
-
-	if ( ! nonoptarg ) {
-		cerr << argv[0] << " error, no input files" << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	// execute the command and return the result
-
-	execvp( args[0], (char *const *)args );				// should not return
-	perror( "CFA Translator error: cfa level, execvp" );
-	exit( EXIT_FAILURE );
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/examples/ArrayN.c
===================================================================
--- src/examples/ArrayN.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-#include <fstream>
-
-// [unsigned, unsigned] offset_to_index(unsigned offset, unsigned sx, unsigned sy)
-// {
-//     return [offset / sx, offset % sy];
-// }
-
-forall(otype index_t)
-index_t offset_to_index(unsigned offset, index_t size)
-{
-    return [offset / size.0, offset % size.1];
-}
-
-int main(int argc, char* argv[])
-{
-    unsigned x = 0, y = 0, i = 0;
-    unsigned sx = 4, sy = 4;
-
-    i = 6;
-    [x, y] = offset_to_index(6, [sx, sy]);
-
-    sout | x | ' ' | y | endl;
-
-    return 0;
-}
Index: c/examples/Attributes.c
===================================================================
--- src/examples/Attributes.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,92 +1,0 @@
-// I Compile-time resolution
-// =========================
-// 
-// 1. an isolated name, where the argument is implicitly determined by the result context
-// 
-//    @max
-// 
-// 2. a direct application to a manifest otype
-// 
-//    @max( int )
-// 
-// 3. constraining a otype variable; the application is implicitly performed at the call site as in (2)
-// 
-//    forall( otype T | { T @max( T ); } ) T x( T t );
-// 
-// 
-// II Run-time resolution
-// ======================
-// 
-// 1. an indirect reference, where the argument is implicitly determined by the result context
-// 
-//    attr_var = &@max;
-//    x = (*attr_var);
-// 
-// 2. an indirect application to a manifest otype
-// 
-//    (*attr_var)( int )
-// 
-// 3. a direct application to a otype variable
-// 
-//    @max( T )
-// 
-// Under what circumstances can this be done at compile/link time?
-// 
-// 
-// III Declaration forms
-// =====================
-// 
-// 1. monomorphic with implicit argument
-// 
-//    int @max;
-// 
-// 2. monomorphic with explicit argument
-// 
-//    int @max( int );
-// 
-// 3. polymorphic
-// 
-//    forall( otype T | constraint( T ) ) int @attr( T );
-
-int @max = 3;
-
-int main() {
-    int x;
-    otype @otype(otype t);									// compiler intrinsic
-    otype @widest(otype t);
-    @otype(x) *y;										// gcc: otypeof(x) *y;
-//    const @widest(double) *w;							// gcc: const otypeof(x) *w;
-//    * @otype(3 + 4) z;									// cfa declaration syntax
-    y = @max;		
-    z = @max(x) + @size(int);
-    y = @min(3 + 4);
-    if ( @const(x) ) { }
-    if ( @volatile(y) ) { }
-    if ( @extern(y) ) { }
-    if ( @static(y) ) { }
-    @max;
-}
-
-int @foo(int) {
-    return 7;
-}
-
-int @voon;
-double @voon;
-
-int @bort(int);
-int @bort(double);
-
-void g( int );
-
-void f() {
-	float x;
-	double x;
-	@bort(x);
-	@bort(int);
-	g( @voon );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/examples/Initialization.c
===================================================================
--- src/examples/Initialization.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,41 +1,0 @@
-// Cforall extensions
-
-int * x11 = 0, x12 = 0;
-int * x21 = 0, x22 = 0;
-
-[20] int y1, y2 = { 1, 2, 3 };
-
-// designators
-
-struct {
-	[int] w;
-} a = { .w : [2] };
-
-struct { int a[3], b; } w [] = { [0].a : {1}, [0].b : 3, [1].a[0] : 2 };
-
-struct {
-	int f1, f2, f3;
-	struct { int g1, g2, g3; } f4[4];
-} v7 = {
-  .f1 : 4,
-  f2 : 3,
-  .f4[2] : {
-	  .g1 : 3,
-	  g3 : 0,
-	},
-  .f4[3].g3 : 7,
-};
-
-struct point { int x; int z; struct {int y1, y2, y3;} y; int w;};
-struct quintet { int v, w, x, y, z;};
-
-int main() {
-	struct point p1 = { x : 3 };
-	struct point p2 = { 3, 4 };
-	struct point p3 = { .[x,z] : 5, y : { .[y3,y1] : 6, 17 } };
-	struct point p4 = { w : 5, 4 };
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/examples/Initialization2.c
===================================================================
--- src/examples/Initialization2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,15 +1,0 @@
-int a = 3;
-struct { int x; int y; } z = { 3, 7 };      /* OK */
-struct { int x; int y; } z1 = { .[x,y]:3 }; /* OK */
-struct { int x; int y; } z2 = { y:3, x:4 }; /* OK */
-struct { int x; struct { int y1; int y2; } y; } z3 = { x:3, y:{y1:4, y2:5} };  /* OK */
-struct { int x; struct { int y1; int y2; } y; } z3 = { y:{y2:9, y1:8}, x:7 };  /* OK */
-struct { int x; struct { int y1; int y2; } y; } z3 = { x:7, {y2:9, y1:8} };  /* OK */
-struct { int x; struct { int y1; int y2; } y; } z3 = { 3, {4, 5} };   /* OK */
-//struct { int x; struct { int y1; int y2; } } z3 = {4, {5,6}};
-//struct { int x; struct { int y1; int y2; } y; } z4 = { y:{4,5}, a:3 };
-//struct { int x; struct { int y1; int y2; } y; } z5 = { a:3, {4,5}};
-//int x[20] = { [10]: 4 };
-struct t { int a, b; };
-struct t x = { b:4, a:3 };
-struct { int x; int y; } z6= {5,6,4};  /* (should be an) error */
Index: c/examples/Makefile.am
===================================================================
--- src/examples/Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,33 +1,0 @@
-######################## -*- Mode: Makefile-Automake -*- ######################
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.am --
-##
-## Author           : Peter A. Buhr
-## Created On       : Sun May 31 09:08:15 2015
-## Last Modified By : Peter A. Buhr
-## Last Modified On : Mon Jan 25 22:31:42 2016
-## Update Count     : 25
-###############################################################################
-
-# applies to both programs
-CFLAGS =
-AM_CFLAGS = -g -Wall -Wno-unused-function -O2
-CC = @CFA_BINDIR@/@CFA_NAME@
-
-noinst_PROGRAMS = fstream_test vector_test avl_test Bench # build but do not install
-fstream_test_SOURCES = fstream_test.c
-vector_test_SOURCES = vector_int.c array.c vector_test.c
-avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
-
-Bench$(EXEEXT) : Bench.c
-	@for ccflags in "-debug" "-nodebug"; do \
-		echo ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
-		${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
-		./a.out ; \
-	done ; \
-	rm -f ./a.out ;
Index: c/examples/Makefile.example
===================================================================
--- src/examples/Makefile.example	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,42 +1,0 @@
-CFA ?= ../driver/cfa-cpp
-CFAOPT ?= -a
-OUTPUT ?= Output
-EXPECT ?= Expect
-OUTPUTDIR ?= ${OUTPUT}${CFAOPT}
-EXPECTDIR ?= ${EXPECT}${CFAOPT}
-EXAMPLES = ${wildcard *.c}
-OUTPUTS = ${addprefix ${OUTPUTDIR}/,${EXAMPLES:.c=.txt}}
-
-#.SILENT :
-
-all :
-	+for opt in -a -e -f -r -s -v ; do \
-	    make test CFAOPT=$${opt} ; \
-	done ; \
-	rm -f core
-
-test : ${OUTPUTS} ${OUTPUTDIR}/report
-
-${OUTPUTDIR}/%.txt : %.c ${CFA} Makefile
-	-${CFA} -n ${CFAOPT} $< > $@ 2>&1
-
-${OUTPUTDIR}/report : ${OUTPUTS} ${EXPECTDIR}
-	rm -f $@
-	echo "===== regression test using cfa-cpp flag ${CFAOPT} ====="
-	@for i in ${OUTPUTS} ; do \
-	     echo "---"`basename $$i`"---" | tee -a $@; \
-	     diff -B -w ${EXPECTDIR}/`basename $$i` $$i | tee -a $@; \
-	done
-
-${OUTPUTS} : | ${OUTPUTDIR}		# order only prerequisite
-
-${OUTPUTDIR} :
-	mkdir -p $@
-
-# remove the expected results directories to generate new ones from the current output
-
-${EXPECTDIR} : | ${OUTPUTS}		# new Expected results ?
-	cp -pr ${OUTPUTDIR} $@
-
-clean :
-	rm -rf ${OUTPUT}-* core
Index: c/examples/Makefile.in
===================================================================
--- src/examples/Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,632 +1,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-######################## -*- Mode: Makefile-Automake -*- ######################
-###############################################################################
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
-	avl_test$(EXEEXT) Bench$(EXEEXT)
-subdir = src/examples
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-Bench_SOURCES = Bench.c
-Bench_OBJECTS = Bench.$(OBJEXT)
-Bench_LDADD = $(LDADD)
-am__dirstamp = $(am__leading_dot)dirstamp
-am_avl_test_OBJECTS = avltree/avl_test.$(OBJEXT) \
-	avltree/avl0.$(OBJEXT) avltree/avl1.$(OBJEXT) \
-	avltree/avl2.$(OBJEXT) avltree/avl3.$(OBJEXT) \
-	avltree/avl4.$(OBJEXT) avltree/avl-private.$(OBJEXT)
-avl_test_OBJECTS = $(am_avl_test_OBJECTS)
-avl_test_LDADD = $(LDADD)
-am_fstream_test_OBJECTS = fstream_test.$(OBJEXT)
-fstream_test_OBJECTS = $(am_fstream_test_OBJECTS)
-fstream_test_LDADD = $(LDADD)
-am_vector_test_OBJECTS = vector_int.$(OBJEXT) array.$(OBJEXT) \
-	vector_test.$(OBJEXT)
-vector_test_OBJECTS = $(am_vector_test_OBJECTS)
-vector_test_LDADD = $(LDADD)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \
-	$(vector_test_SOURCES)
-DIST_SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \
-	$(vector_test_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BACKEND_CC = @BACKEND_CC@
-BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
-CC = @CFA_BINDIR@/@CFA_NAME@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFACC = @CFACC@
-CFACPP = @CFACPP@
-CFA_BACKEND_CC = @CFA_BACKEND_CC@
-CFA_BINDIR = @CFA_BINDIR@
-CFA_FLAGS = @CFA_FLAGS@
-CFA_INCDIR = @CFA_INCDIR@
-CFA_LIBDIR = @CFA_LIBDIR@
-CFA_NAME = @CFA_NAME@
-CFA_PREFIX = @CFA_PREFIX@
-
-# applies to both programs
-CFLAGS = 
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DRIVER_DIR = @DRIVER_DIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AM_CFLAGS = -g -Wall -Wno-unused-function -O2
-fstream_test_SOURCES = fstream_test.c
-vector_test_SOURCES = vector_int.c array.c vector_test.c
-avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/examples/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/examples/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-avltree/$(am__dirstamp):
-	@$(MKDIR_P) avltree
-	@: > avltree/$(am__dirstamp)
-avltree/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) avltree/$(DEPDIR)
-	@: > avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl_test.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl0.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl1.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl2.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl3.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl4.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl-private.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-
-avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES) 
-	@rm -f avl_test$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS)
-
-fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES) 
-	@rm -f fstream_test$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
-
-vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES) 
-	@rm -f vector_test$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-	-rm -f avltree/*.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bench.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl-private.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl0.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl3.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl4.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-rm -f avltree/$(DEPDIR)/$(am__dirstamp)
-	-rm -f avltree/$(am__dirstamp)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR) avltree/$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR) avltree/$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
-	distclean-compile distclean-generic distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am
-
-.PRECIOUS: Makefile
-
-
-Bench$(EXEEXT) : Bench.c
-	@for ccflags in "-debug" "-nodebug"; do \
-		echo ${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
-		${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt Bench.c;\
-		./a.out ; \
-	done ; \
-	rm -f ./a.out ;
-
-# 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.
-.NOEXPORT:
Index: c/examples/Members.c
===================================================================
--- src/examples/Members.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,72 +1,0 @@
-char ?=?( char*, char );
-int ?=?( int*, int );
-float ?=?( float*, float );
-forall( dtype DT ) DT * ?=?( DT**, DT* );
-forall(otype T) lvalue T *?( T* );
-char *__builtin_memcpy();
-
-void a( char );
-void b( int );
-void c( int* );
-void d( float* );
-
-struct a_struct {
-	int a;
-	char a;
-	float a;
-};
-
-union b_struct {
-	int *a;
-	char *a;
-	float *a;
-};
-
-void f() {
-	struct a_struct the_struct;
-	union b_struct the_struct;
-  
-	a( the_struct.a );
-	b( the_struct.a );
-	c( the_struct.a );
-	d( the_struct.a );
-}
-
-struct c_struct {
-	int;
-	char;
-	float;
-};
-
-union d_struct {
-	int*;
-	char*;
-	float*;
-};
-
-void g() {
-	unsigned short x;
-	struct c_struct x;
-	union d_struct x;
-  
-	a( x );	// the 'a' and 'b' calls resolve to the ushort
-	b( x );	// it's debatable whether this is good
-	c( x );
-	d( x );
-}
-
-// make sure that forward declarations work
-
-struct forward;
-
-struct forward *q;
-
-struct forward { int y; };
-
-void h() {
-	q->y;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/examples/Misc.c
===================================================================
--- src/examples/Misc.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,19 +1,0 @@
-// interesting corner cases
-
-int a;
-int b;
-float b;
-
-void g( int );
-void g( unsigned );
-
-void f( void ) {
-	g( (a, b) );
-	g( (a, a, b) );
-	g( sizeof a );
-	g( sizeof( int ) );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/examples/MiscError.c
===================================================================
--- src/examples/MiscError.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,16 +1,0 @@
-int a;
-int b;
-float b;
-
-void g( int );
-
-void f( void ) {
-	g( (b, a) );
-	g( (b, a, b) );
-	g( (a, b, b) );
-	sizeof b;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/examples/Rank2.c
===================================================================
--- src/examples/Rank2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,20 +1,0 @@
-int ?=?( int *, int );
-forall(dtype DT) DT * ?=?( DT **, DT * );
-
-void a() {
-	forall( otype T ) void f( T );
-	void g( forall( otype U ) void p( U ) );
-	g( f );
-}
-
-void g() {
-	void h( int *null );
-	forall( otype T ) T id( T );
-	forall( dtype T ) T *0;
-	int 0;
-	h( id( id( id( 0 ) ) ) );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/examples/Tuple.c
===================================================================
--- src/examples/Tuple.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,70 +1,0 @@
-int f( int, int );
-int g( int, int, int );
-static [ int, int *, * int, int ] h( int a, int b, * int c, [] char d );
-
-struct inner {
-	int f2, f3;
-};
-
-struct outer {
-	int f1;
-	struct inner i;
-	double f4;
-} s, *sp;
-
-const volatile [ int, int ] t1;
-static const [ int, const int ] t2;
-const static [ int, const int ] t3;
-
-[ int rc ] printf( * char fmt, ... );
-int printf( char *fmt, ... );
-
-[ short x, unsigned y ] f1( int w ) {
-	[ y, x ] = [ x, y ] = [ w, 23 ];
-}
-
-[ [ int, char, long, int ] r ] g1() {
-	short x, p;
-	unsigned int y;
-	[ int, int ] z;
-
-	[ x, y, z ] = [ p, f( 17 ), 3 ];
-	[ x, y, z ] = ([short, unsigned int, [int, int]])([ p, f( 17 ), 3 ]);
-	r = [ x, y, z ];
-}
-
-[ int rc ] main( int argc, ** char argv ) {
-	int a, b, c, d;
-	struct outer t = { .[ f1,f4 ] : [ 1,7.0 ] };
-	f( [ 3,5 ] );
-	g( [ 3,5 ], 3 );
-	f( t1 );
-	g( t1, 3 );
-
-	[ , , , ];						/* empty tuple */
-	[ 3, 5 ];
-	[ a, b ] = 3;
-	[ a, b ] = [ 4.6 ];
-	[ a, b ] = [ c, d ] = [ 3, 5 ];
-	[ a, b, [ c ] ] = [ 2,[ a, b ] ];
-	[ a, b ] = 3 > 4 ? [ b, 6 ] : [ 7, 8 ];
-
-	t1 = [ a, b ];
-	t1 = t2 = [ a, b ];
-	[ a, b ] = [ c, d ] = d += c += 1;
-	[ a, b ] = [ c, d ] = t1;
-	[ a, b ] = t1 = [ c, d ];
-	[ a, b ] = t1 = t2 = [ c, d ];
-	t1 = [ 3, 4 ] = [ 3, 4 ] = t1 = [ 3, 4 ];
-
-	s.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
-	s.[ f1, i.[ f2, f3 ], f4 ] = h( 3, 3, 0, "abc" );
-	[ a, , b, ] = h( 3, 3, 0, "abc" );			/* ignore some results */
-	sp->[ f4,f1 ] = sp->[ f1, f4 ];
-	printf( "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n", s.[ f4, i.[ f3, f2 ], f1 ] );
-	rc = 0;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/examples/abstype.c
===================================================================
--- src/examples/abstype.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,43 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// abstype.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jun 14 14:27:48 2016
-// Update Count     : 9
-//
-
-otype T | { T x( T ); };
-
-T y( T t ) {
-	T t_instance;
-	return x( t );
-}
-
-forall( otype T ) lvalue T *?( T * );
-int ?++( int * );
-int ?=?( int *, int );
-forall( dtype DT ) DT * ?=?( DT **, DT * );
-
-otype U = int *;
-
-U x( U u ) {
-	U u_instance = u;
-	(*u)++;
-	return u;
-}
-
-int *break_abstraction( U u ) {
-	return u;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa abstype.c" //
-// End: //
Index: c/examples/constructors.c
===================================================================
--- src/examples/constructors.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,61 +1,0 @@
-int fred() {
-    // initialize basic structure
-    struct S {
-	int i, j, k;
-    };
-    void ?{}( S *s ) { s->i = 1, s->k = 2; }		// default constructor
-    void ?{}( S *s, int i, int k ) { s->i = i, s->k = k; } // 2 parameter constructor
-    void ?{}( S *s, S c ) { *s = c; }			// copy constructor
-    void ^?{}( S *s ) { s->i = 0, s->k = 0; }		// default destructor
-    void ^?{}( S *s, int i ) { s->i = i, s->k = i; }	// 1 parameter destructor
-    {
-	S s1;			// default constructor
-	S s2 = { 3, 7 };	// 2 parameter constructor
-	S s3 @= { .k:3, .i:7 };	// 2 parameter C initialization
-	?{}( &s3, 2, 5 );	// explicit 2 parameter constructor
-	^?{}( &s1 );		// explicit call to default destructor
-    } // implicit call to default destructor for s2, explicit call s1, no call for s3
-    S s4 @= {};			// no default construction
-    (&s4){ 2, 5 };		// explicit 2 parameter constructor
-    ^s4{ 3 };			// explicit call to 1 parameter destructor
-
-    // initialize pointer to a basic structure
-
-    void ?{}( S **s ) { *s = malloc(); (*s)->i = 1, (*s)->k = 2; } // default constructor
-    void ?{}( S **s, int i, int k ) { *s = malloc(); (*s)->i = i, (*s)->k = k; } // 2 parameter constructor
-    void ^?{}( S **s ) { (*s)->i = 0, (*s)->k = 0; free( *s ); *s = 0; } // default destructor
-    {
-	S *ps1;			// default constructor
-	S *ps2 = { 3, 7 };	// 2 parameter constructor
-	S *ps3 @= 0;		// C initialization
-	S *ps4 @= {};		// no default construction
-    } // implicit call to default destructor for ps2 and ps1, checks ordering of explicit destructor calls
-
-    ?{}( &ps3, 2, 5 );		// explicit 2 parameter constructor
-    (&ps4){ 2, 5 };		// explicit 2 parameter constructor
-    
-    ^?{}( &ps3 );		// explicit call to default destructor
-    ^ps4{};			// explicit call to default destructor
-
-    // initialize complex structure
-
-    struct T {
-	struct S s;
-    };
-
-    void ?{}( T *t ) {}					// default constructor => implicitly call constructor for field s
-    void ?{}( T *t, int i, int k ) { (&t->s){ i, k }; }	// 2 parameter constructor => explicitly call constructor for field s
-    void ?{}( T *t, S c ) { (&t->s){ c }; }		// 1 parameter constructor => explicitly call copy constructor for field s
-    void ^?{}( T *s, int i ) {}				// destructor => implicitly call destructor for field s
-    {
-	S s;			// default constructor
-	T t1;			// default constructor
-	T t2 = { s };		// 1 parameter constructor
-	^?{}( &t1 );		// explicit call to default destructor => implicit call to t1.s's destructor
-    } // implicit call to default destructor for t2 and implicit call for s;
-    T t3;			// default constructor
-    T t4 @= { { 1, 3 } };	// C initialization
-    (&t4){ 2, 5 };		// explicit 2 parameter constructor
-
-    T *pt = malloc(){ 3, 4 };	// common usage
-} // implicit call to default destructor for t3
Index: c/examples/forward.c
===================================================================
--- src/examples/forward.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,29 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// forward.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:11:57 2015
-// Update Count     : 2
-//
-
-forall(type T) lvalue T *?( T* );
-int ?=?( int*, int );
-
-struct q { int y; };
-struct q *x;
-
-void f() {
-	*x;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa forward.c" //
-// End: //
Index: c/examples/gc_no_raii/.gitignore
===================================================================
--- src/examples/gc_no_raii/.gitignore	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,4 +1,0 @@
-.tags
-.tags*
-gc-test
-build/
Index: c/examples/gc_no_raii/bug-repro/assert.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/assert.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,16 +1,0 @@
-struct gc_object_header{
- int size;
-};
-
-struct gc_state;
-
-inline _Bool needs_collect(gc_state* state) {
- return state->used_space > 0;
-}
-
-struct gc_object_header* gc_get_object_for_ref();
-
-inline gc_object_header* gc_get_object_ptr(void* ptr)
-{
- return 0;
-}
Index: c/examples/gc_no_raii/bug-repro/blockers/explicit_cast.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/blockers/explicit_cast.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,22 +1,0 @@
-
-#include <stdbool.h>
-#include <stdint.h>
-
-struct gcpointer_t
-{
-	intptr_t ptr;
-	struct gcpointer_t* next;
-};
-
-forall(otype T)
-struct gcpointer
-{
-	gcpointer_t internal;
-};
-
-forall(otype T)
-static inline gcpointer(T) gcmalloc()
-{
-    gcpointer(T) test;
-    return test;
-}
Index: c/examples/gc_no_raii/bug-repro/blockers/file_scope.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/blockers/file_scope.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,18 +1,0 @@
-
-#include <stdbool.h>
-#include <stdlib>
-
-#define POOL_SIZE_EXP 24
-#define POOL_SIZE_BYTES 0x1 << POOL_SIZE_EXP
-#define POOL_PTR_MASK ~(POOL_SIZE_BYTES - 1)
-
-#define CARDS_SIZE_EXP 12
-#define CARDS_SIZE_BYTES 0x1 << CARDS_SIZE_EXP
-#define CARDS_OFFSET_MASK (~(CARDS_SIZE_BYTES - 1)) & (POOL_SIZE_BYTES - 1)
-#define CARDS_COUNT POOL_SIZE_BYTES / CARDS_SIZE_BYTES
-
-struct card_table_t
-{
-	size_t count;
-	void* cards_start[CARDS_COUNT];
-};
Index: c/examples/gc_no_raii/bug-repro/blockers/recursive_realloc.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/blockers/recursive_realloc.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,21 +1,0 @@
-
-#include <stdbool.h>
-#include <stdlib>
-
-trait allocator_c(otype T, otype allocator_t)
-{
-	void realloc(allocator_t* const, size_t);
-};
-
-forall(otype T)
-struct heap_allocator
-{
-	T* storage;
-	size_t capacity;
-};
-
-forall(otype T)
-inline void realloc(heap_allocator(T) *const this, size_t size)
-{
-	this->storage = (T*)realloc((void*)this->storage, this->capacity);
-}
Index: c/examples/gc_no_raii/bug-repro/crash.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/crash.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,6 +1,0 @@
-
-void f()
-{
- void* obj;
- (void)obj;
-}
Index: c/examples/gc_no_raii/bug-repro/deref.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/deref.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,19 +1,0 @@
-    forall(otype T)
-    struct wrap
-    {
-        T val;
-    };
-
-    forall(otype T)
-    T *? (wrap(T) rhs)
-    {
-        return rhs.val;
-    }
-
-    int main(int argc, char const *argv[])
-    {
-        wrap(int) test;
-        test.val = 3;
-        int i = *test;
-        return 0;
-    }
Index: c/examples/gc_no_raii/bug-repro/field.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/field.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,130 +1,0 @@
-extern "C" {
-#include <stdbool.h>
-#include <stdint.h>
-}
-
-#include <stdlib>
-
-//------------------------------------------------------------------------------
-//Declaration
-trait allocator_c(otype T, otype allocator_t)
-{
-	void ctor(allocator_t* const);
-	void dtor(allocator_t* const);
-	void realloc(allocator_t* const, size_t);
-	T* data(allocator_t* const);
-};
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-struct vector
-{
-	allocator_t storage;
-	size_t size;
-};
-
-int global = 3;
-
-struct card_table_t
-{
-	size_t count;
-	void* cards_start[100];
-};
-
-static inline void ctor(card_table_t* const this)
-{
-	this->count = 0;
-}
-
-struct gc_memory_pool
-{
-	struct memory_pool* mirror;
-	struct memory_pool* next;
-
-	uint8_t type_code;
-
-	card_table_t* cards;
-
-	uint8_t* end_p;
-	uint8_t* free_p;
-	uint8_t start_p[1];
-};
-
-void ctor(	gc_memory_pool *const this,
-		size_t size,
-		gc_memory_pool* next,
-		gc_memory_pool* mirror,
-		uint8_t type
-	);
-
-void dtor(gc_memory_pool *const this);
-
-struct gc_pool_object_iterator
-{
-	struct gc_object_header* object;
-	#ifndef NDEBUG
-		intptr_t lower_limit;
-		intptr_t upper_limit;
-	#endif
-};
-
-void ctor(
-		gc_pool_object_iterator* const this,
-		void* start_object
-		#ifndef NDEBUG
-			, intptr_t pool_start
-			, intptr_t pool_end
-		#endif
-	);
-
-bool ?!=?(const gc_pool_object_iterator lhs, const gc_pool_object_iterator rhs);
-
-gc_pool_object_iterator begin(gc_memory_pool* const this);
-gc_pool_object_iterator end(gc_memory_pool* const);
-
-gc_pool_object_iterator* ++?(gc_pool_object_iterator* it);
-
-const void* *?(const gc_pool_object_iterator it);
-void* *?(gc_pool_object_iterator it);
-
-static inline bool gc_pool_is_from_space(const gc_memory_pool* pool)
-{
-	return false;
-}
-
-void gc_reset_pool(gc_memory_pool* const pool);
-
-static inline size_t gc_pool_size_used(const gc_memory_pool* pool)
-{
-	return pool->free_p - pool->start_p;
-}
-
-static inline size_t gc_pool_size_total(const gc_memory_pool* pool)
-{
-	return pool->end_p - pool->start_p;
-}
-
-static inline size_t gc_pool_size_left(const gc_memory_pool* pool)
-{
-	return pool->end_p - pool->free_p;
-}
-
-void* gc_pool_allocate(gc_memory_pool* const pool, size_t size, bool zero);
-
-gc_pool_object_iterator gc_pool_iterator_for(gc_memory_pool* const pool, void* member);
-
-void ctor(gc_memory_pool *const this, size_t size, gc_memory_pool* next, gc_memory_pool* mirror, uint8_t type)
-{
-	this->mirror = mirror;
-	this->next = next;
-	this->type_code = type;
-
-	this->cards = malloc();
-	ctor(this->cards);
-
-	this->end_p = ((uint8_t*)this) + size;
-	this->free_p = this->start_p;
-
-	// check(gc_pool_of(this) == this);
-	// check(this->cards);
-	// gc_reset_pool(this);
-}
Index: c/examples/gc_no_raii/bug-repro/find.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/find.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,10 +1,0 @@
-
-void main()
-{
-	int a[3] = {1, 2, 3};
-	int* begin = a;
-	int *const end = begin + 3;
-
-	int* f = find(begin, &end, 2);
-
-}
Index: c/examples/gc_no_raii/bug-repro/inline.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/inline.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,8 +1,0 @@
-inline _Bool test(int t){
-	return t == 3;
-}
-
-int main()
-{
-	test(6);
-}
Index: c/examples/gc_no_raii/bug-repro/malloc.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/malloc.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,33 +1,0 @@
-forall(otype T)
-struct wrapper
-{
-    T val;
-};
-
-forall(otype T)
-void ctor(wrapper(T)* this)
-{
-    this->val = 0;
-}
-
-forall(otype T)
-wrapper(T) gcmalloc()
-{
-    wrapper(T) w;
-    ctor(&w);
-    return w;
-}
-
-forall(otype T)
-wrapper(T)* ?=? (wrapper(T)* lhs, wrapper(T)* rhs)
-{
-    lhs->val = rhs->val;
-    return lhs;
-}
-
-int main(int argc, char *argv[])
-{
-    wrapper(int) test;
-    test = gcmalloc();
-    return 0;
-}
Index: c/examples/gc_no_raii/bug-repro/not_equal.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/not_equal.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,10 +1,0 @@
-
-struct pointer_t
-{
-	void* p;
-};
-
-_Bool operator_not_equal_p(pointer_t* lhs, pointer_t* rhs)
-{
-	return lhs->p == rhs->p;
-}
Index: c/examples/gc_no_raii/bug-repro/oddtype.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/oddtype.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,13 +1,0 @@
-forall(dtype T)
-struct wrap {
-	int i;
-};
-
-forall(otype T) void ?{}(wrap(T)* this) {}
-forall(otype T) void ?=?(wrap(T)* this) {}
-forall(otype T) void ^?{}(wrap(T)* this) {}
-
-struct List_t {
-	int val;
-	wrap(List_t) next;
-};
Index: c/examples/gc_no_raii/bug-repro/push_back.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/push_back.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,16 +1,0 @@
-#include <stddef.h>
-#include <stdint.h>
-
-#include "push_back.h"
-
-typedef vector(intptr_t*, heap_allocator(intptr_t*)) worklist_t;
-
-void test()
-{
-	worklist_t w;
-	if(!empty(&w))
-	{
-		intptr_t zero = 0;
-		push_back(&w, &zero);
-	}
-}
Index: c/examples/gc_no_raii/bug-repro/push_back.h
===================================================================
--- src/examples/gc_no_raii/bug-repro/push_back.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,72 +1,0 @@
-//------------------------------------------------------------------------------
-//Declaration
-trait allocator_c(otype T, otype allocator_t) {
-	void ctor(allocator_t* const);
-	void dtor(allocator_t* const);
-	void realloc(allocator_t* const, size_t);
-	T* data(allocator_t* const);
-};
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-struct vector
-{
-	allocator_t storage;
-	size_t size;
-};
-
-//------------------------------------------------------------------------------
-//Initialization
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void vector_ctor(vector(T, allocator_t) *const this);
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void dtor(vector(T, allocator_t) *const this);
-
-//------------------------------------------------------------------------------
-//Allocator
-forall(otype T)
-struct heap_allocator
-{
-	T* storage;
-	size_t capacity;
-};
-
-forall(otype T)
-void ctor(heap_allocator(T) *const this);
-
-forall(otype T)
-void dtor(heap_allocator(T) *const this);
-
-forall(otype T)
-void realloc(heap_allocator(T) *const this, size_t size);
-
-forall(otype T)
-inline T* data(heap_allocator(T) *const this)
-{
-	return this->storage;
-}
-
-//------------------------------------------------------------------------------
-//Capacity
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-inline bool empty(vector(T, allocator_t) *const this)
-{
-	return this->size == 0;
-}
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-inline bool size(vector(T, allocator_t) *const this)
-{
-	return this->size;
-}
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-inline void reserve(vector(T, allocator_t) *const this, size_t size)
-{
-	realloc(&this->storage, this->size+1);
-}
-
-//------------------------------------------------------------------------------
-//Modifiers
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void push_back(vector(T, allocator_t) *const this, T value);
Index: c/examples/gc_no_raii/bug-repro/realloc.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/realloc.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,13 +1,0 @@
-void* realloc(void*, unsigned long int);
-
-forall(otype T)
-struct wrap
-{
-	T* val;
-};
-
-forall(otype T)
-static inline void realloc(wrap(T) *const this, unsigned long int size)
-{
-	this->val = (T*)realloc((void*)this->val, size);
-}
Index: c/examples/gc_no_raii/bug-repro/return.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/return.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,27 +1,0 @@
-forall(otype T)
-struct wrapper
-{
-	T value;
-};
-
-forall(otype T)
-wrapper(T) create()
-{
-	wrapper(T) test;
-	return test;
-}
-
-forall(otype T)
-wrapper(T)* ?=?(wrapper(T)* lhs, wrapper(T)* rhs)
-{
-	lhs->value = rhs->value;
-	return lhs;
-}
-
-
-int main(int argc, char const *argv[])
-{
-	wrapper(int) test;
-	test = create();
-	return 0;
-}
Index: c/examples/gc_no_raii/bug-repro/return_template.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/return_template.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,17 +1,0 @@
-forall(otype T)
-struct wrap
-{
-	T value;
-};
-
-forall(otype T) void ?{}(wrap(T)* this);
-forall(otype T) void ?{}(wrap(T)* this, wrap(T)* rhs);
-forall(otype T) void ^?{}(wrap(T)* this);
-forall(otype T) void ?=?(wrap(T)* this, wrap(T)* rhs);
-
-forall(otype T)
-wrap(T) test()
-{
-	wrap(T) tester;
-	return tester;
-}
Index: c/examples/gc_no_raii/bug-repro/slow_malloc.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/slow_malloc.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,20 +1,0 @@
-#include <stdlib>
-
-forall(otype T)
-struct heap_allocator
-{
-	T* storage;
-	size_t capacity;
-};
-
-struct card_table_t
-{
-	unsigned long int count;
-	void* cards_start[1000];
-};
-
-int main(int argc, char const *argv[])
-{
-	card_table_t* t = (card_table_t*)malloc(sizeof(card_table_t));
-	return 0;
-}
Index: c/examples/gc_no_raii/bug-repro/static_const_local.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/static_const_local.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,6 +1,0 @@
-typedef unsigned long long size_t;
-
-int main(int argc, char const *argv[]) {
-	static const size_t GROWTH_RATE = 2;
-	return 0;
-}
Index: c/examples/gc_no_raii/bug-repro/test-assert.cpp
===================================================================
--- src/examples/gc_no_raii/bug-repro/test-assert.cpp	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,9 +1,0 @@
-#include <cassert>
-#include "../src/tools/checks.h"
-
-int main(int argc, char* argv[])
-{
-	//check(false);
-	assert(false);
-	return 0;
-}
Index: c/examples/gc_no_raii/bug-repro/void_pointer.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/void_pointer.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,18 +1,0 @@
-#include <stddef.h>
-#include <stdint.h>
-
-inline void* test(intptr_t address)
-{
-	return (void*)address;
-}
-
-//inline void* test2(void* address)
-//{
-//	return address & 0xFF;
-//}
-
-// inline int test()
-// {
-// 	void* d = 0;
-// 	return (int)d;
-// }
Index: c/examples/gc_no_raii/bug-repro/while.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/while.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,14 +1,0 @@
-extern void* get_member();
-extern void* get_next();
-
-void main()
-{
-	void* member = get_member();
-	void* start_obj = get_next();
-
-	do
-	{
-		start_obj = (void*) ( ((unsigned long int)start_obj) + sizeof(void*) );
-	}
-	while(start_obj > member || !(start_obj) );
-}
Index: c/examples/gc_no_raii/bug-repro/zero.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/zero.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-forall(otype T)
-struct wrap
-{
-    T val;
-};
-
-forall(otype T)
-int ?==? (wrap(T) lhs, wrap(T) rhs)
-{
-    return 0;
-}
-
-/*
-struct wrap(int) 0;
-/*/
-forall(otype T)
-struct wrap(T) 0;
-//*/
-
-int main(int argc, char const *argv[])
-{
-    wrap(int) test;
-    if(test == 0) { return 1; }
-    return 0;
-}
Index: c/examples/gc_no_raii/pool-alloc/allocate-malign.c
===================================================================
--- src/examples/gc_no_raii/pool-alloc/allocate-malign.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,30 +1,0 @@
-/*
- * Allocation functions (posix_malign)
- *
- * Copyright (c) 2014, 2015 Gregor Richards
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-static void *allocPool(size_t size, int mustSucceed)
-{
-    void *ret;
-    if ((errno = posix_memalign(&ret, size, size))) {
-        if (mustSucceed) {
-            perror("posix_memalign");
-            abort();
-        }
-        return NULL;
-    }
-    return ret;
-}
Index: c/examples/gc_no_raii/pool-alloc/allocate-malloc.c
===================================================================
--- src/examples/gc_no_raii/pool-alloc/allocate-malloc.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,53 +1,0 @@
-/*
- * Allocation functions (malloc)
- *
- * Copyright (c) 2014, 2015 Gregor Richards
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-static void *allocPool(int mustSucceed)
-{
-    static ggc_mutex_t poolLock = GGC_MUTEX_INITIALIZER;
-    static unsigned char *space = NULL, *spaceEnd = NULL;
-    void *ret;
-
-    /* do we already have some available space? */
-    ggc_mutex_lock_raw(&poolLock);
-    if (!space || space + GGGGC_POOL_BYTES > spaceEnd) {
-        ggc_size_t i;
-
-        /* since we can't pre-align, align by getting as much as we can manage */
-        for (i = 16; i >= 2; i /= 2) {
-            space = malloc(GGGGC_POOL_BYTES * i);
-            if (space) break;
-        }
-        if (!space) {
-            if (mustSucceed) {
-                perror("malloc");
-                abort();
-            }
-            return NULL;
-        }
-        spaceEnd = space + GGGGC_POOL_BYTES * i;
-
-        /* align it */
-        space = (unsigned char *) GGGGC_POOL_OF(space + GGGGC_POOL_BYTES - 1);
-    }
-
-    ret = (struct GGGGC_Pool *) space;
-    space += GGGGC_POOL_BYTES;
-    ggc_mutex_unlock(&poolLock);
-
-    return ret;
-}
Index: c/examples/gc_no_raii/pool-alloc/allocate-mmap.c
===================================================================
--- src/examples/gc_no_raii/pool-alloc/allocate-mmap.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,44 +1,0 @@
-/*
- * Allocation functions (mmap)
- *
- * Copyright (c) 2014, 2015 Gregor Richards
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-static void *allocPool(int mustSucceed)
-{
-    unsigned char *space, *aspace;
-    struct GGGGC_Pool *ret;
-
-    /* allocate enough space that we can align it later */
-    space = mmap(NULL, GGGGC_POOL_BYTES*2, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0);
-    if (space == NULL) {
-        if (mustSucceed) {
-            perror("mmap");
-            abort();
-        }
-        return NULL;
-    }
-
-    /* align it */
-    ret = GGGGC_POOL_OF(space + GGGGC_POOL_BYTES - 1);
-    aspace = (unsigned char *) ret;
-
-    /* free unused space */
-    if (aspace > space)
-        munmap(space, aspace - space);
-    munmap(aspace + GGGGC_POOL_BYTES, space + GGGGC_POOL_BYTES - aspace);
-
-    return ret;
-}
Index: c/examples/gc_no_raii/pool-alloc/allocate-win-valloc.c
===================================================================
--- src/examples/gc_no_raii/pool-alloc/allocate-win-valloc.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,45 +1,0 @@
-/*
- * Allocation functions (mmap)
- *
- * Copyright (c) 2014, 2015 Gregor Richards
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-static void *allocPool(int mustSucceed)
-{
-    unsigned char *space, *aspace;
-    struct GGGGC_Pool *ret;
-
-    /* allocate enough space that we can align it later */
-    space = (unsigned char *)
-        VirtualAlloc(NULL, GGGGC_POOL_BYTES*2, MEM_COMMIT|MEM_RESERVE, PAGE_READWRITE);
-    if (space == NULL) {
-        if (mustSucceed) {
-            perror("mmap");
-            abort();
-        }
-        return NULL;
-    }
-
-    /* align it */
-    ret = GGGGC_POOL_OF(space + GGGGC_POOL_BYTES - 1);
-    aspace = (unsigned char *) ret;
-
-    /* free unused space */
-    if (aspace > space)
-        VirtualFree(space, aspace - space, MEM_RELEASE);
-    VirtualFree(aspace + GGGGC_POOL_BYTES, space + GGGGC_POOL_BYTES - aspace, MEM_RELEASE);
-
-    return ret;
-}
Index: c/examples/gc_no_raii/premake4.lua
===================================================================
--- src/examples/gc_no_raii/premake4.lua	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,82 +1,0 @@
-#!lua
-
--- Additional Linux libs: "X11", "Xxf86vm", "Xi", "Xrandr", "stdc++"
-
-includeDirList = {
-	"src/",
-	"../"
-}
-
-libDirectories = {
-
-}
-
-
-if os.get() == "linux" then
-    linkLibs = {
-
-    }
-end
-
--- Build Options:
-buildOptions = {
-      "-g",
-	"-DTEST_FILE=${test}",
-      "\n  test = gctest",
-	"\n  CC = cfa\n  CXX = cfa", }
-
-solution "GC-no-RAII"
-	configurations  { "debug", "release",
-				"cproc-debug", "cproc-release",
-				"cfa-debug", "cfa-release" }
-
-	project "gc-test"
-		kind "ConsoleApp"
-		language "C"
-		location "build"
-		objdir "build"
-		targetdir "."
-		buildoptions (buildOptions)
-		defines {	"bool=_Bool",
-				"\"true=((_Bool)(const signed int)1)\"",
-				"\"false=((_Bool)(const signed int)0)\"",
-				"_GNU_SOURCE",
-				"__cforall"
-			}
-		libdirs (libDirectories)
-		links (linkLibs)
-		linkoptions (linkOptionList)
-		includedirs (includeDirList)
-		files { "src/**.c", "containers/**.c" }
-
-	configuration "debug"
-		defines { "DEBUG" }
-		flags { "Symbols" }
-
-	configuration "release"
-		defines { "NDEBUG" }
-		flags { "Optimize" }
-
-	configuration "cproc-debug"
-		buildoptions ({"-E"})
-		linkoptions ({"-E"})
-	      defines { "DEBUG" }
-	      flags { "Symbols" }
-
-	configuration "cproc-release"
-		buildoptions ({"-E"})
-		linkoptions ({"-E"})
-	      defines { "DEBUG" }
-	      flags { "Symbols" }
-
-	configuration "cfa-debug"
-		linkoptions ({"-E"})
-		files { "build/cproc-debug/*.o" }
-	      defines { "DEBUG" }
-	      flags { "Symbols" }
-
-	configuration "cfa-release"
-		linkoptions ({"-E"})
-		files { "build/cproc-debug/*.o" }
-	      defines { "DEBUG" }
-	      flags { "Symbols" }
Index: c/examples/gc_no_raii/src/allocate-pool.c
===================================================================
--- src/examples/gc_no_raii/src/allocate-pool.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#define _BSD_SOURCE /* for MAP_ANON */
-#define _DARWIN_C_SOURCE /* for MAP_ANON on OS X */
-
-#ifdef __cforall
-extern "C"{
-#else
-#error missing cfa define
-#endif
-
-/* for standards info */
-#if defined(unix) || defined(__unix) || defined(__unix__) || \
-    (defined(__APPLE__) && defined(__MACH__))
-#include <unistd.h>
-#endif
-
-#if defined(_WIN32)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#endif
-
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-
-#if _POSIX_VERSION
-#include <sys/mman.h>
-#endif
-
-/* figure out which allocator to use */
-#if defined(GGGGC_USE_MALLOC)
-#define GGGGC_ALLOCATOR_MALLOC 1
-#include "../pool-alloc/allocate-malloc.c"
-
-#elif _POSIX_ADVISORY_INFO >= 200112L
-#define GGGGC_ALLOCATOR_POSIX_MEMALIGN 1
-#include "../pool-alloc/allocate-malign.c"
-
-#elif defined(MAP_ANON)
-#define GGGGC_ALLOCATOR_MMAP 1
-#include "../pool-alloc/allocate-mmap.c"
-
-#elif defined(_WIN32)
-#define GGGGC_ALLOCATOR_VIRTUALALLOC 1
-#include "../pool-alloc/allocate-win-valloc.c"
-
-#else
-#warning GGGGC: No allocator available other than malloc!
-#define GGGGC_ALLOCATOR_MALLOC 1
-#include "../pool-alloc/allocate-malloc.c"
-
-#endif
-
-void* pal_allocPool(size_t size, int mustSucceed)
-{
-      return allocPool(size, mustSucceed);
-}
-
-#ifdef __cforall
-}
-#endif
Index: c/examples/gc_no_raii/src/allocate-pool.h
===================================================================
--- src/examples/gc_no_raii/src/allocate-pool.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#ifndef _GGGGC_ALlOCATE_POOL_H_
-#define _GGGGC_ALlOCATE_POOL_H_
-
-#ifdef __cforall
-extern "C" {
-#endif
-
-void* pal_allocPool(size_t size, int mustSucceed);
-
-#ifdef __cforall
-}
-#endif
-
-#endif
Index: c/examples/gc_no_raii/src/gc.h
===================================================================
--- src/examples/gc_no_raii/src/gc.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,21 +1,0 @@
-#pragma once
-
-#include "gcpointers.h"
-#include "internal/collector.h"
-
-// forall(otype T)
-// static inline gcpointer(T) gcmalloc()
-// {
-//     gcpointer(T) ptr = { gc_allocate(sizeof(T)) };
-//     ptr{};
-//     gc_conditional_collect();
-//     return ptr;
-// }
-
-forall(otype T)
-static inline void gcmalloc(gcpointer(T)* ptr)
-{
-	ptr { gc_allocate(sizeof(T)) };
-	get(ptr) {};
-      gc_conditional_collect();
-}
Index: c/examples/gc_no_raii/src/gcpointers.c
===================================================================
--- src/examples/gc_no_raii/src/gcpointers.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,147 +1,0 @@
-#include "gcpointers.h"
-
-// #include "gc.h"
-#include "internal/collector.h"
-#include "internal/object_header.h"
-#include "internal/state.h"
-
-void register_ptr(gcpointer_t* this)
-{
-	if(gcpointer_null(this)) return;
-
-	if(gc_is_managed(this))
-	{
-		gc_object_header* obj = gc_get_object_for_ref(gc_get_state(), (void*)this);
-		check(obj);
-		check(is_valid(obj));
-		check(gc_is_managed(this) == gc_is_managed(obj->type_chain) || !obj->type_chain);
-		this->next = obj->type_chain;
-		obj->type_chain = this;
-		check(is_valid(obj));
-	}
-	else
-	{
-		gc_object_header* obj = gc_get_object_ptr((void*)this->ptr);
-		check(obj);
-		check(is_valid(obj));
-		check(!obj->root_chain || this->ptr == obj->root_chain->ptr);
-		check(!obj->root_chain || gc_is_managed(this) == gc_is_managed(obj->root_chain));
-		this->next = obj->root_chain;
-		obj->root_chain = this;
-		check(is_valid(obj));
-	}
-}
-
-void unregister_ptr(gcpointer_t* this)
-{
-	if(gcpointer_null(this)) return;
-
-	gcpointer_t** prev_next_ptr = gc_find_previous_ref(this);
-	check((*prev_next_ptr) == this);
-
-	(*prev_next_ptr) = this->next;
-}
-
-void ?{}(gcpointer_t* this)
-{
-	this->ptr = (intptr_t)NULL;
-	this->next = NULL;
-}
-
-void ?{}(gcpointer_t* this, void* address)
-{
-	this->ptr = (intptr_t)address;
-	this->next = NULL;
-
-	register_ptr(this);
-}
-
-void ?{}(gcpointer_t* this, gcpointer_t other)
-{
-	this->ptr = other.ptr;
-	this->next = NULL;
-
-	register_ptr(this);
-}
-
-void ^?{}(gcpointer_t* this)
-{
-	unregister_ptr(this);
-}
-
-gcpointer_t ?=?(gcpointer_t* this, gcpointer_t rhs)
-{
-	unregister_ptr(this);
-	this->ptr = rhs.ptr;
-	register_ptr(this);
-
-	return *this;
-}
-
-//Logical operators
-bool gcpointer_equal(const gcpointer_t* this, const gcpointer_t* rhs)
-{
-	return this->ptr == rhs->ptr;
-}
-
-bool gcpointer_not_equal(const gcpointer_t* this, const gcpointer_t* rhs)
-{
-	return this->ptr != rhs->ptr;
-}
-
-bool gcpointer_null(const gcpointer_t* this)
-{
-	return this->ptr == (intptr_t)NULL;
-}
-
-#ifndef NDEBUG
-	bool is_valid(const gcpointer_t* this) {
-		if(gcpointer_null(this)) return true;
-
-		gc_object_header* obj = gc_get_object_ptr((void*)this->ptr);
-		check(obj);
-		check(is_valid(obj));
-		check(!obj->root_chain || this->ptr == obj->root_chain->ptr);
-
-		if( !gc_is_managed(this))
-		{
-			check( !(this->next) || this->ptr == this->next->ptr );
-		}
-
-		return true;
-	}
-#endif
-
-forall(otype T) void ?{}(gcpointer(T)* this) {
-	(&this->internal) {};
-}
-
-forall(otype T) void ?{}(gcpointer(T)* this, void* address) {
-	(&this->internal) { address };
-}
-
-forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T) other) {
-	(&this->internal) { other.internal };
-}
-
-forall(otype T) void ^?{}(gcpointer(T)* this) {
-	^?{}(&this->internal);
-}
-
-forall(otype T) gcpointer(T) ?=?(gcpointer(T)* this, gcpointer(T) rhs) {
-	this->internal = rhs.internal;
-	return *this;
-}
-//
-// forall(otype T) T *?(gcpointer(T) this);
-
-forall(otype T) T* get(gcpointer(T)* this) {
-	return (T*)this->internal.ptr;
-}
-//
-// //Logical operators
-forall(otype T) int ?!=?(gcpointer(T) this, int zero) {
-	return this.internal.ptr != 0;
-}
-// forall(otype T) int ?!=?(gcpointer(T) this, gcpointer(T) rhs);
-// forall(otype T) int ?==?(gcpointer(T) this, gcpointer(T) rhs);
Index: c/examples/gc_no_raii/src/gcpointers.h
===================================================================
--- src/examples/gc_no_raii/src/gcpointers.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,51 +1,0 @@
-#pragma once
-
-#include <stdbool.h>
-#include <stdint.h>
-
-forall(dtype T)
-struct gcpointer;
-
-struct gcpointer_t
-{
-	intptr_t ptr;
-	struct gcpointer_t* next;
-};
-
-void ?{}(gcpointer_t* this);
-void ?{}(gcpointer_t* this, void* address);
-void ?{}(gcpointer_t* this, gcpointer_t other);
-void ^?{}(gcpointer_t* this);
-gcpointer_t ?=?(gcpointer_t* this, gcpointer_t rhs);
-
-//Logical operators
-bool gcpointer_equal(gcpointer_t* this, gcpointer_t* rhs);
-bool gcpointer_not_equal(gcpointer_t* this, gcpointer_t* rhs);
-bool gcpointer_null(const gcpointer_t* this);
-
-
-#ifndef NDEBUG
-	bool is_valid(const gcpointer_t* this);
-#endif
-
-forall(dtype T)
-struct gcpointer
-{
-	gcpointer_t internal;
-};
-
-//
-forall(otype T) void ?{}(gcpointer(T)* this);
-forall(otype T) void ?{}(gcpointer(T)* this, void* address);
-forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T) other);
-forall(otype T) void ^?{}(gcpointer(T)* this);
-forall(otype T) gcpointer(T) ?=?(gcpointer(T)* this, gcpointer(T) rhs);
-
-
-// forall(otype T) T *?(gcpointer(T) this);
-forall(otype T) T* get(gcpointer(T)* this);
-
-//Logical operators
-forall(otype T) int ?!=?(gcpointer(T) this, int zero);
-forall(otype T) int ?!=?(gcpointer(T) this, gcpointer(T) rhs);
-forall(otype T) int ?==?(gcpointer(T) this, gcpointer(T) rhs);
Index: c/examples/gc_no_raii/src/internal/card_table.h
===================================================================
--- src/examples/gc_no_raii/src/internal/card_table.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,62 +1,0 @@
-#pragma once
-
-#include "globals.h"
-#include "tools.h"
-
-static inline size_t card_of(void* address)
-{
-	size_t card = ( ((intptr_t)address) & CARDS_OFFSET_MASK ) >> CARDS_SIZE_EXP;
-	checkf(card < CARDS_COUNT, (const char*)"%lu %lu = (%lx & %lx) >> %lu\n", (size_t)CARDS_COUNT, (size_t)card, (size_t)address, (size_t)CARDS_OFFSET_MASK, (size_t)CARDS_SIZE_EXP);
-	check(card < CARDS_COUNT);
-	return card;
-}
-
-struct card_table_t
-{
-	size_t count;
-	void* cards_start[CARDS_COUNT];
-};
-
-static inline void ?{}(card_table_t* this)
-{
-	this->count = 0;
-}
-
-static inline void ^?{}(card_table_t* this)
-{
-
-}
-
-static inline void* object_at(card_table_t* const this, size_t card_number)
-{
-	return card_number < this->count ? this->cards_start[card_number] : NULL;
-}
-
-static inline void register_object(card_table_t* const this, void* object)
-{
-	size_t card = card_of(object);
-	if(card < this->count)
-	{
-		intptr_t card_obj_add = (intptr_t)object_at(this, card);
-		intptr_t obj_add = (intptr_t)object;
-		if(card_obj_add > obj_add)
-		{
-			this->cards_start[card] = object;
-		}
-	}
-	else
-	{
-		check(card == this->count);
-		this->count++;
-		this->cards_start[card] = object;
-	}
-}
-
-static inline void reset(card_table_t* const this)
-{
-	for(size_t i = 0; i < this->count; i++)
-	{
-		this->cards_start[i] = NULL;
-	}
-	this->count = 0;
-}
Index: c/examples/gc_no_raii/src/internal/collector.c
===================================================================
--- src/examples/gc_no_raii/src/internal/collector.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,152 +1,0 @@
-#include "collector.h"
-
-#ifdef __cforall
-extern "C" {
-#endif
-#include <string.h>
-#ifdef __cforall
-}
-#endif
-
-#include <fstream>
-
-#include "state.h"
-#include "gcpointers.h"
-#include "memory_pool.h"
-
-void* gc_finish_alloc_block(void* block, size_t actual_size, size_t target_size);
-void gc_assign_reference(void** ref, gc_object_header* ptr);
-
-gcpointer_t** gc_find_previous_ref(gcpointer_t* target)
-{
-	if(!(target)) return NULL;
-
-	bool managed = gc_is_managed(target);
-	gc_object_header* obj = gc_get_object_ptr((void*)target->ptr);
-
-	check(is_valid(obj));
-
-	gcpointer_t** prev_next_ptr = managed ? &obj->type_chain : &obj->root_chain;
-	while((*prev_next_ptr) && (*prev_next_ptr) != target)
-	{
-		prev_next_ptr = &(*prev_next_ptr)->next;
-	}
-
-	return prev_next_ptr;
-}
-
-void* gc_allocate(size_t target_size)
-{
-	// sout | "Allocating " | target_size | " bytes" | endl;
-
-	size_t size = gc_compute_size(target_size + sizeof(gc_object_header));
-
-	// sout | "Object header size: " | sizeof(gc_object_header) | " bytes" | endl;
-	// sout | "Actual allocation size: " | size | " bytes" | endl;
-
-	check(size < POOL_SIZE_BYTES);
-
-	void* block = NULL;
-	gc_state* gc = gc_get_state();
-
-	if((intptr_t)(block = gc_try_allocate(gc, size))) return gc_finish_alloc_block(block, size, target_size);
-
-	gc_collect(gc);
-
-	if((intptr_t)(block = gc_try_allocate(gc, size))) return gc_finish_alloc_block(block, size, target_size);
-
-	gc_allocate_pool(gc);
-
-	if((intptr_t)(block = gc_try_allocate(gc, size))) return gc_finish_alloc_block(block, size, target_size);
-
-	checkf( (int) 0, "ERROR: allocation in new pool failed");
-
-	return NULL;
-}
-
-void* gc_finish_alloc_block(void* block, size_t actual_size, size_t target_size)
-{
-	intptr_t data = ((intptr_t)block) + sizeof(gc_object_header);
-	void* header = block;
-
-	check( data > ((intptr_t)block));
-	check( data >= ((intptr_t)header));
-	check( gc_is_aligned( (void*)data ) );
-	check( data + target_size <= ((intptr_t)block) + actual_size );
-
-	gc_object_header* obj = placement_ctor(header, actual_size);
-
-	(void)obj; //remove unsused warning since this is for debug
-	check(obj == gc_get_object_ptr( (void*)data ));
-
-	gc_register_allocation(gc_get_state(), actual_size);
-
-	return (void*)data;
-}
-
-void gc_process_reference(void** ref, worklist_t* worklist)
-{
-	check(!gc_is_in_heap(gc_get_state(), ref));
-
-	gc_object_header* ptr = gc_get_object_ptr(*ref);
-	if(ptr)
-	{
-		if(!ptr->is_forwarded)
-		{
-			gc_copy_object(ptr);
-
-			gc_scan_object(ptr->forward, worklist);
-
-			gc_assign_reference(ref, ptr->forward);
-		}
-		else
-		{
-			//duplication to help debug
-			gc_assign_reference(ref, ptr->forward);
-		}
-	}
-}
-
-void gc_assign_reference(void** ref, gc_object_header* ptr)
-{
-	void* address = (void*)(((intptr_t)ptr) + sizeof(gc_object_header));
-
-	gc_write_aligned_ptr(ref, address);
-}
-
-gc_object_header* gc_copy_object(gc_object_header* ptr)
-{
-	check(!ptr->forward);
-	check(!ptr->is_forwarded);
-	check(gc_pool_is_from_space(gc_pool_of(ptr)));
-
-	gc_memory_pool* pool = gc_pool_of(ptr)->mirror;
-
-	void* new_block = gc_pool_allocate(pool, ptr->size, true);
-
-	memcpy(new_block, ptr, ptr->size);
-
-	gc_object_header* fwd_ptr = placement_copy_ctor(new_block, ptr);
-
-	ptr->forward = fwd_ptr;
-	ptr->is_forwarded = true;
-
-	return fwd_ptr;
-}
-
-void gc_scan_object(gc_object_header* object, worklist_t* worklist)
-{
-	gcpointer_t* field = object->type_chain;
-	while(field)
-	{
-		check(((intptr_t)field) > ((intptr_t)object));
-		check(((intptr_t)field) < ((intptr_t)((intptr_t)object) + object->size));
-
-		check(gc_is_in_to_space(gc_get_state(), &field->ptr));
-
-		intptr_t* ref = &field->ptr;
-		push_back(worklist, ref);
-
-		field = field->next;
-	}
-}
Index: c/examples/gc_no_raii/src/internal/collector.h
===================================================================
--- src/examples/gc_no_raii/src/internal/collector.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#pragma once
-
-#include <stdlib.h>
-
-#include "tools.h"
-//
-#include "gcpointers.h"
-#include "state.h"
-#include "internal/gc_tools.h"
-#include "internal/globals.h"
-#include "internal/object_header.h"
-#include "internal/state.h"
-#include "tools/worklist.h"
-
-static inline bool gc_is_managed(void* address)
-{
-	return gc_is_in_heap(gc_get_state(), address);
-}
-
-static inline gc_object_header* gc_get_object_ptr(void* ptr)
-{
-	void* clean = gc_get_aligned_ptr(ptr);
-	return ((gc_object_header*)clean) - 1;
-}
-
-static inline struct gc_memory_pool* gc_pool_of(void* address)
-{
-	return (struct gc_memory_pool*)(((intptr_t)address) & POOL_PTR_MASK);
-}
-
-static inline void gc_conditional_collect()
-{
-	if(gc_needs_collect(gc_get_state()))
-	{
-		gc_collect(gc_get_state());
-	}
-}
-
-gcpointer_t** gc_find_previous_ref(gcpointer_t* target);
-
-void* gc_allocate(size_t size);
-
-void gc_process_reference(void** ref, worklist_t* worklist);
-
-struct gc_object_header* gc_copy_object(struct gc_object_header* ptr);
-
-void gc_scan_object(struct gc_object_header* object, worklist_t* worklist);
Index: c/examples/gc_no_raii/src/internal/gc_tools.h
===================================================================
--- src/examples/gc_no_raii/src/internal/gc_tools.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#pragma once
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "tools.h"
-#include "globals.h"
-
-static inline bool gc_is_aligned(void* address)
-{
-	return (((intptr_t)address) & (~OBJECT_PTR_MASK)) == 0;
-}
-
-static inline void* gc_get_aligned_ptr(void* address)
-{
-	return (void*)(((intptr_t)address) & (OBJECT_PTR_MASK));
-}
-
-static inline void* gc_write_aligned_ptr(void** reference, void* address)
-{
-	size_t ref_last_bits = ((intptr_t)*reference) & (~OBJECT_PTR_MASK);
-
-      size_t new_val = ((intptr_t)address) & OBJECT_PTR_MASK;
-
-      (*reference) = (void*)(new_val | ref_last_bits);
-
-	return *reference;
-}
-
-static inline size_t gc_compute_size(size_t size)
-{
-	size_t word_size = ((size - 1) / OBJECT_ALLIGNMENT) + 1;
-	size_t ret = word_size * OBJECT_ALLIGNMENT;
-
-	check(ret >= size);
-	check((ret % OBJECT_ALLIGNMENT) == 0);
-	check( ((size % OBJECT_ALLIGNMENT) != 0) || (ret == size) );
-
-	return ret;
-}
Index: c/examples/gc_no_raii/src/internal/globals.h
===================================================================
--- src/examples/gc_no_raii/src/internal/globals.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,30 +1,0 @@
-#pragma once
-
-// #include <stddef.h>
-// #include <stdint.h>
-//
-// static const size_t POOL_SIZE_EXP = 24;
-// static const size_t POOL_SIZE_BYTES = 0x1 << POOL_SIZE_EXP;
-// static const size_t POOL_PTR_MASK = ~(POOL_SIZE_BYTES - 1);
-//
-// static const size_t CARDS_SIZE_EXP = 12;
-// static const size_t CARDS_SIZE_BYTES = 0x1 << CARDS_SIZE_EXP;
-// static const size_t CARDS_OFFSET_MASK = (~(CARDS_SIZE_BYTES - 1)) & (POOL_SIZE_BYTES - 1);
-// static const size_t CARDS_COUNT = POOL_SIZE_BYTES / CARDS_SIZE_BYTES;
-//
-// static const size_t OBJECT_ALLIGNMENT = sizeof(size_t);
-// static const size_t OBJECT_PTR_MASK = ~(OBJECT_ALLIGNMENT - 1);
-
-enum {
-	POOL_SIZE_EXP 	= 24,
-	POOL_SIZE_BYTES 	= 0x1 << POOL_SIZE_EXP,
-	POOL_PTR_MASK 	= ~(POOL_SIZE_BYTES - 1),
-
-	CARDS_SIZE_EXP 	= 12,
-	CARDS_SIZE_BYTES 	= 0x1 << CARDS_SIZE_EXP,
-	CARDS_OFFSET_MASK	= (~(CARDS_SIZE_BYTES - 1)) & (POOL_SIZE_BYTES - 1),
-	CARDS_COUNT 	= POOL_SIZE_BYTES / CARDS_SIZE_BYTES,
-
-	OBJECT_ALLIGNMENT	= sizeof(size_t),
-	OBJECT_PTR_MASK 	= ~(OBJECT_ALLIGNMENT - 1),
-};
Index: c/examples/gc_no_raii/src/internal/memory_pool.c
===================================================================
--- src/examples/gc_no_raii/src/internal/memory_pool.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,160 +1,0 @@
-#include "memory_pool.h"
-
-extern "C" {
-	#include <stdlib.h>
-	#include <string.h>
-}
-
-#include "collector.h"
-#include "object_header.h"
-
-const size_t gc_pool_header_size = (size_t)(  &(((gc_memory_pool*)NULL)->start_p) );
-
-void ?{}(gc_memory_pool* this, size_t size, gc_memory_pool* next, gc_memory_pool* mirror, uint8_t type)
-{
-	this->mirror = mirror;
-	this->next = next;
-	this->type_code = type;
-
-	this->cards = ( (card_table_t*)malloc(sizeof(card_table_t)) ){};
-
-	this->end_p = ((uint8_t*)this) + size;
-	this->free_p = this->start_p;
-
-	check( gc_pool_of( (void*)this ) == this);
-	check(this->cards);
-	gc_reset_pool(this);
-}
-
-void ^?{}(gc_memory_pool* this)
-{
-	^(&this->cards){};
-	free(this->cards);
-}
-
-void gc_reset_pool(gc_memory_pool *const this)
-{
-	this->free_p = this->start_p;
-	#ifndef NDEBUG
-		memset(this->start_p, 0xCD, gc_pool_size_total(this));
-	#endif
-
-	check(this->cards);
-	reset(this->cards);
-
-	check(gc_pool_size_left(this) == gc_pool_size_total(this));
-}
-
-void* gc_pool_allocate(gc_memory_pool *const this, size_t size, bool zero)
-{
-	void* ret = this->free_p;
-
-	this->free_p += size;
-
-	if (zero) memset(ret, 0x00, size);
-
-	check(this->cards);
-	register_object(this->cards, ret);
-
-	return ret;
-}
-
-void ?{}(	gc_pool_object_iterator* this,
-		struct gc_object_header* start_object
-		#ifndef NDEBUG
-			, intptr_t pool_start
-			, intptr_t pool_end
-		#endif
-	)
-{
-	this->object = start_object;
-	#ifndef NDEBUG
-		this->lower_limit = pool_start;
-		this->upper_limit = pool_end;
-	#endif
-
-	check( ((intptr_t)start_object) >= this->lower_limit );
-	check( ((intptr_t)start_object) <= this->upper_limit );
-}
-
-void ^?{}( gc_pool_object_iterator* this ) {}
-
-gc_pool_object_iterator gc_pool_iterator_for(gc_memory_pool* const this, void* member)
-{
-	size_t card = card_of(member);
-	intptr_t member_add = (intptr_t)member;
-	intptr_t start_obj;
-
-	do
-	{
-		check(card < CARDS_COUNT);
-		start_obj = (intptr_t)object_at(this->cards, card);
-		check(card != 0 || start_obj);
-		card--;
-	}
-	while(start_obj > member_add || !(start_obj));
-
-	check( start_obj );
-
-	struct gc_object_header* start_obj_typed = (struct gc_object_header*)start_obj;
-
-	return (gc_pool_object_iterator) {
-		start_obj_typed
-		#ifndef NDEBUG
-			, (intptr_t)this->start_p
-			, (intptr_t)this->free_p
-		#endif
-	};
-}
-
-bool ?!=?(const gc_pool_object_iterator lhs, const gc_pool_object_iterator rhs)
-{
-	return lhs.object != rhs.object;
-}
-
-gc_pool_object_iterator begin(gc_memory_pool* const this)
-{
-	struct gc_object_header* start_obj = (struct gc_object_header*)this->start_p;
-	return (gc_pool_object_iterator) {
-		start_obj
-		#ifndef NDEBUG
-			, (intptr_t)this->start_p
-			, (intptr_t)this->free_p
-		#endif
-	};
-}
-
-gc_pool_object_iterator end(gc_memory_pool* const this)
-{
-	return (gc_pool_object_iterator) {
-		(struct gc_object_header*)this->free_p
-		#ifndef NDEBUG
-			, (intptr_t)this->start_p
-			, (intptr_t)this->free_p
-		#endif
-	};
-}
-
-gc_pool_object_iterator* ++?(gc_pool_object_iterator* it)
-{
-	struct gc_object_header* object = it->object;
-	intptr_t next_ptr = ((intptr_t)object) + object->size;
-	check(next_ptr > it->lower_limit);
-	check(next_ptr <= it->upper_limit);
-
-	struct gc_object_header* next_obj = ((struct gc_object_header*)next_ptr);
-	check(next_ptr == it->upper_limit || is_valid(next_obj));
-
-	it->object = next_obj;
-	return it;
-}
-
-const struct gc_object_header* *?(const gc_pool_object_iterator it)
-{
-	return it.object;
-}
-
-struct gc_object_header* *?(gc_pool_object_iterator it)
-{
-	return it.object;
-}
Index: c/examples/gc_no_raii/src/internal/memory_pool.h
===================================================================
--- src/examples/gc_no_raii/src/internal/memory_pool.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,92 +1,0 @@
-#pragma once
-
-extern "C" {
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdint.h>
-}
-
-#include "tools.h"
-
-#include "card_table.h"
-#include "globals.h"
-#include "state.h"
-
-struct gc_memory_pool
-{
-	struct memory_pool* mirror;
-	struct memory_pool* next;
-
-	uint8_t type_code;
-
-	card_table_t* cards;
-
-	uint8_t* end_p;
-	uint8_t* free_p;
-	uint8_t start_p[1];
-};
-
-void ?{}(	gc_memory_pool* this,
-		size_t size,
-		gc_memory_pool* next,
-		gc_memory_pool* mirror,
-		uint8_t type
-	);
-
-void ^?{}(gc_memory_pool* this);
-
-struct gc_pool_object_iterator
-{
-	struct gc_object_header* object;
-	#ifndef NDEBUG
-		intptr_t lower_limit;
-		intptr_t upper_limit;
-	#endif
-};
-
-
-void ?{}( 	gc_pool_object_iterator* this,
-		struct gc_object_header* start_object
-		#ifndef NDEBUG
-			, intptr_t pool_start
-			, intptr_t pool_end
-		#endif
-	);
-
-void ^?{}( gc_pool_object_iterator* this );
-
-bool ?!=?(const gc_pool_object_iterator lhs, const gc_pool_object_iterator rhs);
-
-gc_pool_object_iterator begin(gc_memory_pool* const this);
-gc_pool_object_iterator end(gc_memory_pool* const);
-
-gc_pool_object_iterator* ++?(gc_pool_object_iterator* it);
-
-const struct gc_object_header* *?(const gc_pool_object_iterator it);
-struct gc_object_header* *?(gc_pool_object_iterator it);
-
-static inline bool gc_pool_is_from_space(const gc_memory_pool* pool)
-{
-	return gc_from_space_code(gc_get_state()) == pool->type_code;
-}
-
-void gc_reset_pool(gc_memory_pool* const pool);
-
-static inline size_t gc_pool_size_used(const gc_memory_pool* pool)
-{
-	return pool->free_p - pool->start_p;
-}
-
-static inline size_t gc_pool_size_total(const gc_memory_pool* pool)
-{
-	return pool->end_p - pool->start_p;
-}
-
-static inline size_t gc_pool_size_left(const gc_memory_pool* pool)
-{
-	return pool->end_p - pool->free_p;
-}
-
-void* gc_pool_allocate(gc_memory_pool* const pool, size_t size, bool zero);
-
-gc_pool_object_iterator gc_pool_iterator_for(gc_memory_pool* const pool, void* member);
Index: c/examples/gc_no_raii/src/internal/object_header.c
===================================================================
--- src/examples/gc_no_raii/src/internal/object_header.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,110 +1,0 @@
-#include "object_header.h"
-
-#include <stdint.h>
-
-#include "collector.h"
-#include "globals.h"
-#include "gcpointers.h"
-
-void ctor(gc_object_header* const this, size_t inSize)
-{
-	#ifndef NDEBUG
-		this->canary_start = CANARY_VALUE;
-	#endif
-
-	this->size = inSize;
-	this->root_chain = NULL;
-	this->type_chain = NULL;
-	this->forward = NULL;
-	this->is_forwarded = false;
-
-	#ifndef NDEBUG
-		this->canary_end = CANARY_VALUE;
-	#endif
-}
-
-void copy_ctor(gc_object_header* const this, const gc_object_header* const other)
-{
-	#ifndef NDEBUG
-		this->canary_start = CANARY_VALUE;
-	#endif
-
-	this->size = other->size;
-	this->root_chain = other->root_chain;
-	this->type_chain = NULL;
-	this->forward = NULL;
-	this->is_forwarded = false;
-
-	#ifndef NDEBUG
-		this->canary_end = CANARY_VALUE;
-	#endif
-
-	gcpointer_t* root = this->root_chain;
-	while(root)
-	{
-		check(gc_get_object_ptr( (void*)root->ptr ) == other);
-		root->ptr = ((intptr_t)this) + sizeof(gc_object_header);
-
-		check(gc_get_object_ptr( (void*)root->ptr ) == this);
-		root = root->next;
-	}
-
-	gcpointer_t* type = other->type_chain;
-
-	while(type)
-	{
-		check((intptr_t)type < (intptr_t)((intptr_t)other + other->size));
-
-		size_t offset = (intptr_t)type - (intptr_t)other;
-		check(offset < this->size);
-
-		gcpointer_t* member_ptr = (gcpointer_t*)( (intptr_t)this + offset );
-
-		if(!this->type_chain) this->type_chain = member_ptr;
-
-		size_t next_offset = type->next ? (intptr_t)type->next - (intptr_t)other : 0;
-		check(next_offset < this->size);
-
-		gcpointer_t* next_ptr = type->next ? (gcpointer_t*)((intptr_t)this + next_offset) : NULL;
-
-		member_ptr->ptr = type->ptr;
-		member_ptr->next = next_ptr;
-
-		type = type->next;
-	}
-
-	check(is_valid(this));
-}
-
-#ifndef NDEBUG
-	bool is_valid(const gc_object_header* const this)
-	{
-		check((intptr_t)this->canary_start == (intptr_t)CANARY_VALUE);
-		check((intptr_t)this->canary_end == (intptr_t)CANARY_VALUE);
-
-		check(this->is_forwarded == ( (intptr_t)this->forward != (intptr_t)NULL));
-
-		check(this->size < POOL_SIZE_BYTES);
-
-		gcpointer_t* root = this->root_chain;
-		while(root)
-		{
-			checkf(gc_get_object_ptr( (void*)root->ptr ) == this, (const char*)"Expected %lX got %lX\n", gc_get_object_ptr( (void*)root->ptr ), this);
-
-			root = root->next;
-		}
-
-		gcpointer_t* type = this->type_chain;
-		while(type)
-		{
-			check((intptr_t)type > (intptr_t)this);
-			check((intptr_t)type < (intptr_t)(((intptr_t)this) + this->size));
-
-			type = type->next;
-		}
-
-		return true;
-	}
-	#else
-	#error blarg
-#endif
Index: c/examples/gc_no_raii/src/internal/object_header.h
===================================================================
--- src/examples/gc_no_raii/src/internal/object_header.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,52 +1,0 @@
-#pragma once
-
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdint.h>
-
-#include "tools.h"
-
-#ifndef NDEBUG
-	static void* const CANARY_VALUE = (void*)0xCAFEBABACAFEBABA;
-#endif
-
-struct gcpointer_t;
-struct gc_object_header;
-
-struct gc_object_header
-{
-	#ifndef NDEBUG
-		void* canary_start;
-	#endif
-
-	size_t		size;
-	gcpointer_t* 	root_chain;
-	gcpointer_t*	type_chain;
-	gc_object_header*	forward;
-	bool			is_forwarded;
-
-	#ifndef NDEBUG
-		void* canary_end;
-	#endif
-};
-
-void ctor(gc_object_header* const this, size_t size);
-void copy_ctor(gc_object_header* const this, const gc_object_header* const other);
-
-static inline gc_object_header* placement_ctor(void* address, size_t size)
-{
-	gc_object_header* const this = (gc_object_header* const) address;
-	ctor(this, size);
-	return this;
-}
-
-static inline gc_object_header* placement_copy_ctor(void* address, const gc_object_header* const other)
-{
-	gc_object_header* const this = (gc_object_header* const) address;
-	copy_ctor(this, other);
-	return this;
-}
-
-#ifndef NDEBUG
-	bool is_valid(const gc_object_header* const this);
-#endif
Index: c/examples/gc_no_raii/src/internal/state.c
===================================================================
--- src/examples/gc_no_raii/src/internal/state.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,312 +1,0 @@
-#include "state.h"
-
-#include <stdlib>
-
-//general purpouse includes
-#include "tools.h"
-
-//platform abstraction includes
-#include "allocate-pool.h"
-
-//gc internal includes
-#include "collector.h"
-#include "globals.h"
-#include "memory_pool.h"
-#include "object_header.h"
-#include "tools/worklist.h"
-
-void gc_state_swap(gc_state *const this);
-void gc_state_sweep_roots(gc_state *const this, worklist_t* worklist);
-void gc_state_clear(gc_state *const this);
-void gc_state_calc_usage(gc_state *const this);
-
-#ifndef NDEBUG
-	bool gc_state_roots_match(gc_state *const this);
-	bool gc_state_no_from_space_ref(gc_state *const this);
-#endif
-
-static gc_state s;
-
-gc_state* gc_get_state()
-{
-	if(!s.is_initialized) ctor(&s);
-	return &s;
-}
-
-void ctor(gc_state *const this)
-{
-	this->from_code = 0;
-	this->to_space = NULL;
-	this->from_space = NULL;
-	this->total_space = 0;
-	this->used_space = 0;
-	ctor(&this->pools_table);
-
-	gc_allocate_pool(this);
-
-	this->is_initialized = true;
-}
-
-void dtor(gc_state *const this)
-{
-	dtor(&this->pools_table);
-	this->is_initialized = false;
-}
-
-bool gc_is_in_heap(const gc_state* const this, const void* const address)
-{
-	gc_memory_pool* target_pool = gc_pool_of(address);
-
-	gc_memory_pool** first = cbegin(&this->pools_table);
-	gc_memory_pool** last = cend(&this->pools_table);
-	gc_memory_pool** result = find(first, &last, target_pool);
-	return result != last && gc_pool_is_from_space(*result);
-}
-
-bool gc_is_in_to_space(const gc_state* const this, const void* const address)
-{
-	gc_memory_pool* target_pool = gc_pool_of(address);
-
-	gc_memory_pool** first = cbegin(&this->pools_table);
-	gc_memory_pool** last = cend(&this->pools_table);
-	gc_memory_pool** result = find(first, &last, target_pool);
-	return result != last && !gc_pool_is_from_space(*result);
-}
-
-gc_object_header* gc_get_object_for_ref(gc_state* state, void* member)
-{
-	volatile int stage = 0;
-	intptr_t target = ((intptr_t)member);
-	if(!gc_is_in_heap(state, member)) return NULL;
-	stage++;
-
-	gc_memory_pool* pool = gc_pool_of(member);
-	stage++;
-	gc_pool_object_iterator it = gc_pool_iterator_for(pool, member);
-	stage++;
-	gc_pool_object_iterator end = end(pool);
-	stage++;
-
-	while(it != end)
-	{
-		gc_object_header* object = *it;
-		check(object);
-		check( is_valid(object) );
-		{
-			intptr_t start = ((intptr_t)object);
-			intptr_t end = ((intptr_t)start + object->size);
-			if(start < target && end > target)
-			{
-				return object;
-			}
-		}
-		stage++;
-		++it;
-	}
-
-	checkf( (int) 0, "is_in_heap() and iterator_for() return inconsistent data");
-	abort();
-	return NULL;
-}
-
-void* gc_try_allocate(gc_state* const this, size_t size)
-{
-	gc_memory_pool* pool = this->from_space;
-	while(pool != (gc_memory_pool*)0)
-	{
-		if(gc_pool_size_left(pool) > size)
-		{
-			return gc_pool_allocate(pool, size, true);
-		}
-		pool = pool->next;
-	}
-
-	return (void*)0;
-}
-
-void gc_allocate_pool(gc_state *const this)
-{
-	gc_memory_pool* old_from_space = this->from_space;
-      gc_memory_pool* old_to_space = this->to_space;
-
-      this->from_space = (gc_memory_pool*)(pal_allocPool(POOL_SIZE_BYTES, 1));
-      this->to_space   = (gc_memory_pool*)(pal_allocPool(POOL_SIZE_BYTES, 1));
-
-      this->from_space{ POOL_SIZE_BYTES, old_from_space, this->to_space,   this->from_code };
-      this->to_space  { POOL_SIZE_BYTES, old_to_space,   this->from_space, (~this->from_code) & 0x01 };
-
-	this->total_space += gc_pool_size_used(this->from_space);
-
-	push_back(&this->pools_table, this->from_space);
-	push_back(&this->pools_table, this->to_space);
-}
-
-void gc_collect(gc_state* const this)
-{
-	// DEBUG("collecting");
-	// DEBUG("previous usage " << this->used_space << " / " << this->total_space);
-
-	worklist_t worklist;
-	ctor(&worklist);
-	gc_state_sweep_roots(this, &worklist);
-
-	while(!empty(&worklist))
-	{
-		intptr_t* ref = back(&worklist);
-		pop_back(&worklist);
-		gc_process_reference((void**)ref, &worklist);
-	}
-
-	check(gc_state_roots_match(this));
-	check(gc_state_no_from_space_ref(this));
-
-	gc_state_swap(this);
-
-	gc_state_calc_usage(this);
-
-	if(gc_needs_collect(this)) gc_allocate_pool(this);
-
-	// DEBUG("done");
-	dtor(&worklist);
-}
-
-void gc_state_swap(gc_state* const this)
-{
-	swap(&this->from_space, &this->to_space);
-
-	gc_memory_pool* pool = this->to_space;
-	while(pool)
-	{
-		gc_reset_pool(pool);
-		pool = pool->next;
-	}
-
-	this->from_code = (~this->from_code) & 0x01;
-
-	#ifndef NDEBUG
-		{
-			gc_memory_pool* pool = this->from_space;
-			while(pool)
-			{
-				check(gc_pool_is_from_space(pool));
-				pool = pool->next;
-			}
-
-			pool = this->to_space;
-			while(pool)
-			{
-				check(!gc_pool_is_from_space(pool));
-				pool = pool->next;
-			}
-		}
-	#endif
-}
-
-void gc_state_sweep_roots(gc_state* const this, worklist_t* worklist)
-{
-	gc_memory_pool* pool = this->from_space;
-	while(pool)
-	{
-		gc_pool_object_iterator it = begin(pool);
-		gc_pool_object_iterator end = end(pool);
-		for(;it != end; ++it)
-		{
-			gc_object_header* object = *it;
-			if(!object->root_chain) continue;
-
-			gc_copy_object(object);
-
-			gc_scan_object(object->forward, worklist);
-		}
-
-		pool = pool->next;
-	}
-}
-
-void gc_state_clear(gc_state* const this)
-{
-	gc_memory_pool* pool = this->from_space;
-	while(pool)
-	{
-		gc_reset_pool(pool);
-		pool = pool->next;
-	}
-
-	pool = this->to_space;
-	while(pool)
-	{
-		gc_reset_pool(pool);
-		pool = pool->next;
-	}
-}
-
-void gc_state_calc_usage(gc_state* const this)
-{
-	this->total_space = 0;
-	this->used_space = 0;
-
-	gc_memory_pool* pool = this->from_space;
-	while(pool)
-	{
-		size_t size = gc_pool_size_total(pool);
-		size_t used = gc_pool_size_used(pool);
-		check(used <= size);
-		this->total_space += size;
-		this->used_space += used;
-
-		pool = pool->next;
-	}
-}
-
-#ifndef NDEBUG
-	bool gc_state_roots_match(gc_state* const this)
-	{
-		gc_memory_pool* pool = this->to_space;
-		while(pool)
-		{
-			size_t size = 0;
-			gc_pool_object_iterator it = begin(pool);
-			gc_pool_object_iterator end = end(pool);
-			for(;it != end; ++it)
-			{
-				gc_object_header* object = *it;
-				size += object->size;
-
-				gcpointer_t* ptr = object->root_chain;
-				while(ptr)
-				{
-					check(gc_get_object_ptr( (void*)ptr->ptr ) == object);
-					ptr = ptr->next;
-				}
-			}
-
-			checkf(size + gc_pool_size_left(pool) == gc_pool_size_total(pool),
-				(const char*)"expected %lu + %lu == %lu\n",
-				(size_t)size,
-				(size_t)gc_pool_size_left(pool),
-				(size_t)gc_pool_size_total(pool));
-
-			pool = pool->next;
-		}
-
-		return true;
-	}
-
-	bool gc_state_no_from_space_ref(gc_state* const this)
-	{
-		gc_memory_pool* pool = this->to_space;
-		while(pool)
-		{
-			void** potential_ref = (void**)pool->start_p;
-			while(potential_ref < (void**)pool->free_p)
-			{
-				check(!gc_is_in_heap(this, *potential_ref));
-				potential_ref++;
-			}
-
-			pool = pool->next;
-		}
-
-		return true;
-	}
-#endif
Index: c/examples/gc_no_raii/src/internal/state.h
===================================================================
--- src/examples/gc_no_raii/src/internal/state.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#pragma once
-
-#ifdef __cforall
-extern "C" {
-#endif
-#include <stddef.h>
-#include <stdint.h>
-#ifdef __cforall
-}
-#endif
-#include <fstream>
-#include <vector>
-
-#include "tools.h"
-
-typedef vector(struct gc_memory_pool*, heap_allocator(struct gc_memory_pool*)) pools_table_t;
-
-struct gc_state
-{
-	bool is_initialized;
-	uint8_t from_code;
-	struct gc_memory_pool* to_space;
-	struct gc_memory_pool* from_space;
-
-	size_t total_space;
-	size_t used_space;
-
-	pools_table_t 	pools_table;
-	size_t 		pools_table_count;
-};
-
-void ctor(gc_state* const state);
-
-void dtor(gc_state* const state);
-
-gc_state* gc_get_state();
-
-static inline bool gc_needs_collect(gc_state* state)
-{
-	// sout | "Used Space: " | state->used_space | " bytes" | endl;
-	return state->used_space * 2 > state->total_space;
-}
-
-void gc_collect(gc_state* const this);
-
-void* gc_try_allocate(gc_state* const this, size_t size);
-
-void gc_allocate_pool(gc_state* const state);
-
-bool gc_is_in_heap(const gc_state* const state, const void* const address);
-
-bool gc_is_in_to_space(const gc_state* const state, const void* const address);
-
-static inline uint8_t gc_from_space_code(const gc_state *const this)
-{
-	return this->from_code;
-}
-
-struct gc_object_header* gc_get_object_for_ref(gc_state* state, void*);
-
-static inline void gc_register_allocation(gc_state* state, size_t size)
-{
-	state->used_space += size;
-}
Index: c/examples/gc_no_raii/src/test_include.c
===================================================================
--- src/examples/gc_no_raii/src/test_include.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,4 +1,0 @@
-/* definition to expand macro for string conversion*/
-#define xstr(s) sstr(s)
-#define sstr(s) #s
-#include xstr(../test/TEST_FILE.c)
Index: c/examples/gc_no_raii/src/tools.h
===================================================================
--- src/examples/gc_no_raii/src/tools.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,37 +1,0 @@
-#pragma once
-
-#include "tools/checks.h"
-#include "tools/print.h"
-
-// forall(otype T)
-// inline void swap(T* const a, T* const b)
-// {
-// 	T* temp = a;
-// 	*a = *b;
-// 	*b = *temp;
-// }
-
-trait has_equal(otype T)
-{
-	signed int ?==?(T a, T b);
-};
-
-trait InputIterator_t(otype T, otype InputIterator)
-{
-	signed int ?==?(InputIterator a, InputIterator b);
-	signed int ?!=?(InputIterator a, InputIterator b);
-	T *?(InputIterator a);
-	InputIterator ++?(InputIterator* a);
-	InputIterator ?++(InputIterator* a);
-};
-
-forall(otype T | has_equal(T), otype InputIterator | InputIterator_t(T, InputIterator))
-static inline InputIterator find( InputIterator first, const InputIterator* const last, T val)
-{
-	while ( first != *last)
-	{
-		if(*first == val) return first;
-		++first;
-	}
-	return *last;
-}
Index: c/examples/gc_no_raii/src/tools/checks.h
===================================================================
--- src/examples/gc_no_raii/src/tools/checks.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,29 +1,0 @@
-#pragma once
-
-#ifdef NDEBUG
-
-#define check(x)
-
-#define checkf(x, format, ...)
-
-#warning no debug checks
-
-#else
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#define check(x) do {\
-	if(!(x)) {\
-		printf("CHECK failed : %s at %s:%i\n", #x, __FILE__, __LINE__);\
-		abort();\
-	}}while( (int)0 )\
-
-#define checkf(x, ...) do {\
-	if(!(x)) {\
-		printf("CHECK failed : %s at %s:%i\n", #x, __FILE__, __LINE__);\
-		printf(__VA_ARGS__);\
-		abort();\
-	}}while( (int)0 )\
-
-#endif //NO_CHECKS
Index: c/examples/gc_no_raii/src/tools/print.c
===================================================================
--- src/examples/gc_no_raii/src/tools/print.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,5 +1,0 @@
-#include "tools.h"
-
-#ifndef NDEBUG
-	// ofstream *sout = ofstream_stdout();
-#endif
Index: c/examples/gc_no_raii/src/tools/print.h
===================================================================
--- src/examples/gc_no_raii/src/tools/print.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,13 +1,0 @@
-#pragma once
-
-// #ifndef NDEBUG
-//
-// #include <fstream>
-//
-// #define DEBUG_OUT(x) sout | x | endl;
-//
-// #else
-
-#define DEBUG_OUT(x)
-
-// #endif //NO_CHECKS
Index: c/examples/gc_no_raii/src/tools/worklist.h
===================================================================
--- src/examples/gc_no_raii/src/tools/worklist.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#pragma once
-
-#ifdef __cforall
-extern "C" {
-#endif
-#include <stddef.h>
-#include <stdint.h>
-#ifdef __cforall
-}
-#endif
-
-#include <vector>
-
-typedef vector(intptr_t*, heap_allocator(intptr_t*)) worklist_t;
Index: c/examples/gc_no_raii/test/badlll.c
===================================================================
--- src/examples/gc_no_raii/test/badlll.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,71 +1,0 @@
-#include "gc.h"
-
-#include <stdio.h>
-
-struct List_t
-{
-	gcpointer(List_t) next;
-	int val;
-};
-
-typedef gcpointer(List_t) LLL;
-
-#define MAX (1024 * 1)
-
-LLL buildLLL(int sz)
-{
-	int i = 0;
-	LLL ll0;
-
-	gcmalloc( &ll0 );
-	List_t* ll0_ptr = get( &ll0 );
-	ll0_ptr->val = i;
-	LLL lll = ll0;
-
-	for (i = 1; i < sz; i++)
-	{
-		LLL llc;
-		gcmalloc( &llc );
-		List_t* llc_ptr = get( &llc );
-		llc_ptr->val = i;
-		List_t* lll_ptr = get( &lll );
-		lll_ptr->next = llc;
-
-		lll = llc;
-	}
-
-	check(is_valid( &ll0.internal ));
-
-	return ll0;
-}
-
-void testLLL(LLL lll)
-{
-	unsigned char *counted;
-
-	counted = (unsigned char *) calloc(MAX, sizeof(unsigned char));
-	while (lll)
-	{
-		List_t* lll_ptr = get( &lll );
-		counted[lll_ptr->val]++;
-		if (counted[lll_ptr->val] > 1)
-		{
-			fprintf(stderr, "ERROR! Encountered %d twice!\n", lll_ptr->val);
-			exit(1);
-		}
-		lll = lll_ptr->next;
-	}
-
-	return;
-}
-
-int main(void)
-{
-	LLL mylll;
-
-	mylll = buildLLL(MAX);
-
-	testLLL(mylll);
-
-	return 0;
-}
Index: c/examples/gc_no_raii/test/gctest.c
===================================================================
--- src/examples/gc_no_raii/test/gctest.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-#include <fstream>
-
-#include "gc.h"
-#include "internal/collector.h"
-
-#warning default test
-
-int main() {
-	sout | "Bonjour au monde!\n";
-
-	gcpointer(int) theInt;
-	gcmalloc(&theInt);
-
-	for(int i = 0; i < 10; i++) {
-		int a;
-		{
-			gcpointer(int) anInt;
-			gcmalloc(&anInt);
-		}
-		int p;
-	}
-
-	gc_collect(gc_get_state());
-	gc_conditional_collect();
-}
Index: c/examples/gc_no_raii/test/operators.c
===================================================================
--- src/examples/gc_no_raii/test/operators.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,22 +1,0 @@
-#include "gc.h"
-
-#include <assert.h>
-
-int main(int argc, char *argv[])
-{
-	gcpointer(int) test, test1;
-
-	if(test != test1) { return 1; }
-	if(test == test1) { return 1; }
-	// if(test == 0)  { return 1; }
-	// if(test != 0)  { return 1; }
-	// if(test) { return 1; }
-
-	// *test.internal.ptr = 3;
-	// int i = *test;
-
-	gcmalloc();
-	// test = gcmalloc();
-
-	return 0;
-}
Index: c/examples/huge.c
===================================================================
--- src/examples/huge.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,26 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// huge.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:16:32 2016
-// Update Count     : 2
-//
-
-int huge( int n, forall( otype T ) T (*f)( T ) ) {
-	if ( n <= 0 )
-		return f( 0 );
-	else
-		return huge( n - 1, f( f ) );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa huge.c" //
-// End: //
Index: c/examples/includes.c
===================================================================
--- src/examples/includes.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,147 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// includes.c -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul 12 17:59:25 2016
-// Update Count     : 371
-//
-
-// ***********************************************
-// USE -std=c99 WITH gxx TO GET SAME OUTPUT AS cfa
-// ***********************************************
-
-#ifdef __CFA__
-extern "C" {
-#endif // __CFA__
-
-#if 0
-#if 1
-#define _GNU_SOURCE
-#include <aio.h>
-#include <a.out.h>
-#include <aliases.h>
-#include <alloca.h>
-#include <ansidecl.h>
-#include <ar.h>
-#include <argp.h>
-#include <argz.h>
-#include <assert.h>
-#include <bfd.h>
-#include <bfdlink.h>
-#include <byteswap.h>
-#include <cblas.h>
-#include <cblas_f77.h>
-#include <complex.h>
-#include <cpio.h>
-#include <crypt.h>
-#include <ctype.h>
-#include <curses.h>
-//#include <demangle.h>
-#include <dialog.h>
-#include <dirent.h>
-#include <dis-asm.h>
-#endif
-#if 0
-#include <dlfcn.h>
-#include <dlg_colors.h>
-#include <dlg_config.h>
-#include <dlg_keys.h>
-#include <elf.h>
-#include <endian.h>
-#include <envz.h>
-#include <err.h>
-#include <errno.h>
-#include <error.h>
-#include <eti.h>
-#include <evdns.h>
-#include <event.h>
-#include <evhttp.h>
-#endif
-#if 0
-#include <evrpc.h>
-#include <evutil.h>
-#include <execinfo.h>
-#include <expat.h>
-#include <expat_config.h>
-#include <expat_external.h>
-#include <fcntl.h>
-#include <features.h>
-#include <fenv.h>
-#include <float.h>
-#include <fmtmsg.h>
-#include <fnmatch.h>
-#include <form.h>
-#include <fpu_control.h>
-#include <fstab.h>
-//#include <ft2build.h>
-#include <fts.h>
-#include <ftw.h>
-#include <gconv.h>
-//#include <gcrypt.h>
-//#include <gcrypt-module.h>
-#include <getopt.h>
-//#include <gettext-po.h>
-#include <glob.h>
-//#include <gmp.h>			// infinite loop
-////#include <gmpxx.h>
-//#include <gmp-x86_64.h>
-#include <gnu-versions.h>
-//#include <gpg-error.h>
-#include <grp.h>
-#include <gshadow.h>
-#include <iconv.h>
-#include <idna.h>
-#include <idn-free.h>
-#include <idn-int.h>
-#include <ieee754.h>
-#include <ifaddrs.h>
-#include <inttypes.h>
-#include <iso646.h>
-#include <jerror.h>
-//#include <jmorecfg.h>
-//#include <jpegint.h>
-//#include <jpeglib.h>
-#include <limits.h>
-#include <locale.h>
-#include <math.h>
-#include <ncurses.h>
-#include <setjmp.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <tgmath.h>
-#include <time.h>
-#include <unistd.h>
-#include <wchar.h>
-#include <wctype.h>
-#endif // 0
-
-#else
-
-#define _GNU_SOURCE
-//#include <bfd.h>
-//#include <error.h>
-
-#include <demangle.h>
-
-#endif // 0
-
-#ifdef __CFA__
-} // extern "C"
-#endif // __CFA__
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa includes.c" //
-// End: //
Index: c/examples/index.h
===================================================================
--- src/examples/index.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// index.h -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 18:10:46 2016
-// Update Count     : 2
-//
-
-trait index( type T ) {
-	T ?+?( T, T );
-	T ?-?( T, T );
-	const T 0, 1;
-};
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa index.c" //
-// End: //
Index: c/examples/it_out.c
===================================================================
--- src/examples/it_out.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,69 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// it_out.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:14:39 2016
-// Update Count     : 8
-//
-
-typedef unsigned long streamsize_type;
-
-trait ostream( dtype os_type ) {
-	os_type *write( os_type *, const char *, streamsize_type );
-	int fail( os_type * );
-};
-
-trait writeable( otype T ) {
-	forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, T );
-};
-
-forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, char );
-forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, int );
-forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, const char * );
-
-trait istream( dtype is_type ) {
-	is_type *read( is_type *, char *, streamsize_type );
-	is_type *unread( is_type *, char );
-	int fail( is_type * );
-	int eof( is_type * );
-};
-
-trait readable( otype T ) {
-	forall( dtype is_type | istream( is_type ) ) is_type * ?<<?( is_type *, T );
-};
-
-forall( dtype is_type | istream( is_type ) ) is_type * ?>>?( is_type *, char* );
-forall( dtype is_type | istream( is_type ) ) is_type * ?>>?( is_type *, int* );
-
-trait iterator( otype iterator_type, otype elt_type ) {
-	iterator_type ?++( iterator_type* );
-	iterator_type ++?( iterator_type* );
-	int ?==?( iterator_type, iterator_type );
-	int ?!=?( iterator_type, iterator_type );
-
-	lvalue elt_type *?( iterator_type );
-};
-
-forall( otype elt_type | writeable( elt_type ),
-		otype iterator_type | iterator( iterator_type, elt_type ),
-		dtype os_type | ostream( os_type ) )
-void write_all( iterator_type begin, iterator_type end, os_type *os );
-
-forall( otype elt_type | writeable( elt_type ),
-		otype iterator_type | iterator( iterator_type, elt_type ),
-		dtype os_type | ostream( os_type ) )
-void write_all( elt_type begin, iterator_type end, os_type *os ) {
-	os << begin;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa it_out.c" //
-// End: //
Index: c/examples/multicore.c
===================================================================
--- src/examples/multicore.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-#include <kernel>
-#include <thread>
-
-struct MyThread { thread_desc __thrd; };
-
-DECL_THREAD(MyThread);
-
-void ?{}( MyThread * this ) {}
-
-void main( MyThread* this ) {
-	for(int i = 0; i < 1000000; i++) {
-		yield();
-	}
-}
-
-int main(int argc, char* argv[]) {
-	// sout | "User main begin" | endl;
-	{
-		processor p;
-		{
-			scoped(MyThread) f[4];
-		}
-	}
-	// sout | "User main end" | endl;
-}
Index: c/examples/new.c
===================================================================
--- src/examples/new.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,32 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// new.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:13:20 2016
-// Update Count     : 4
-//
-
-forall( otype T )
-void f( T *t ) {
-	t--;
-	*t;
-	++t;
-	t += 2;
-	t + 2;
-	--t;
-	t -= 2;
-	t - 4;
-	t[7];
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa new.c" //
-// End: //
Index: c/examples/poly-bench.c
===================================================================
--- src/examples/poly-bench.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,207 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// poly-bench.cc -- 
-//
-// Author           : Aaron Moss
-// Created On       : Sat May 16 07:26:30 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:25:19 2015
-// Update Count     : 5
-//
-
-extern "C" {
-#include <stdio.h>
-//#include "my_time.h"
-}
-
-#define N 200000000
-
-struct ipoint {
-	int x;
-	int y;
-};
-
-struct ipoint ?+?(struct ipoint a, struct ipoint b) {
-	struct ipoint r;
-	r.x = a.x + b.x;
-	r.y = a.y + b.y;
-	return r;
-}
-
-struct ipoint ?-?(struct ipoint a, struct ipoint b) {
-	struct ipoint r;
-	r.x = a.x - b.x;
-	r.y = a.y - b.y;
-	return r;
-}
-
-struct ipoint ?*?(struct ipoint a, struct ipoint b) {
-	struct ipoint r;
-	r.x = a.x * b.x;
-	r.y = a.y * b.y;
-	return r;
-}
-
-struct dpoint {
-	double x;
-	double y;
-};
-
-struct dpoint ?+?(struct dpoint a, struct dpoint b) {
-	struct dpoint r;
-	r.x = a.x + b.x;
-	r.y = a.y + b.y;
-	return r;
-}
-
-struct dpoint ?-?(struct dpoint a, struct dpoint b) {
-	struct dpoint r;
-	r.x = a.x - b.x;
-	r.y = a.y - b.y;
-	return r;
-}
-
-struct dpoint ?*?(struct dpoint a, struct dpoint b) {
-	struct dpoint r;
-	r.x = a.x * b.x;
-	r.y = a.y * b.y;
-	return r;
-}
-
-int a2b2_mono_int(int a, int b) {
-	return (a - b)*(a + b);
-}
-
-double a2b2_mono_double(double a, double b) {
-	return (a - b)*(a + b);
-}
-
-struct ipoint a2b2_mono_ipoint(struct ipoint a, struct ipoint b) {
-	return (a - b)*(a + b);
-}
-
-struct dpoint a2b2_mono_dpoint(struct dpoint a, struct dpoint b) {
-	return (a - b)*(a + b);
-}
-
-forall(type T | { T ?+?(T,T); T ?-?(T,T); T ?*?(T,T); })
-T a2b2_poly(T a, T b) {
-	return (a - b)*(a + b);
-}
-
-typedef int clock_t;
-long ms_between(clock_t start, clock_t end) {
-//	return (end - start) / (CLOCKS_PER_SEC / 1000);
-	return 0;
-}
-int clock() { return 3; }
-
-int main(int argc, char** argv) {
-	clock_t start, end;
-	int i;
-	
-	int a, b;
-	double c, d;
-	struct ipoint p, q;
-	struct dpoint r, s;
-	
-	printf("\n## a^2-b^2 ##\n");
-	
-	a = 5, b = 3;
-	start = clock();
-	for (i = 0; i < N/2; ++i) {
-		a = a2b2_mono_int(a, b);
-		b = a2b2_mono_int(b, a);
-	}
-	end = clock();
-	printf("mono_int:   %7ld  [%d,%d]\n", ms_between(start, end), a, b);
-	
-	a = 5, b = 3;
-	start = clock();
-	for (i = 0; i < N/2; ++i) {
-		a = a2b2_poly(a, b);
-		b = a2b2_poly(b, a);
-	}
-	end = clock();
-	printf("poly_int:   %7ld  [%d,%d]\n", ms_between(start, end), a, b);
-	
-/*	{
-	a = 5, b = 3;
-	// below doesn't actually work; a2b2_poly isn't actually assigned, just declared
-	* [int] (int, int) a2b2_poly = a2b2_mono_int;
-	start = clock();
-	for (i = 0; i < N/2; ++i) {
-//			printf("\t[%d,%d]\n", a, b);
-a = a2b2_poly(a, b);
-//			printf("\t[%d,%d]\n", a, b);
-b = a2b2_poly(b, a);
-}
-end = clock();
-printf("spec_int:   %7ld  [%d,%d]\n", ms_between(start, end), a, b);
-}
-*/	
-	c = 5.0, d = 3.0;
-	start = clock();
-	for (i = 0; i < N/2; ++i) {
-		c = a2b2_mono_double(c, d);
-		d = a2b2_mono_double(d, c);
-	}
-	end = clock();
-	printf("mono_double:%7ld  [%f,%f]\n", ms_between(start, end), c, d);
-		
-	c = 5.0, d = 3.0;
-	start = clock();
-	for (i = 0; i < N/2; ++i) {
-		c = a2b2_poly(c, d);
-		d = a2b2_poly(d, c);
-	}
-	end = clock();
-	printf("poly_double:%7ld  [%f,%f]\n", ms_between(start, end), c, d);
-	
-	p.x = 5, p.y = 5, q.x = 3, q.y = 3;
-	start = clock();
-	for (i = 0; i < N/2; ++i) {
-		p = a2b2_mono_ipoint(p, q);
-		q = a2b2_mono_ipoint(q, p);
-	}
-	end = clock();
-	printf("mono_ipoint:%7ld  [(%d,%d),(%d,%d)]\n", ms_between(start, end), p.x, p.y, q.x, q.y);
-		
-	p.x = 5, p.y = 5, q.x = 3, q.y = 3;
-	start = clock();
-	for (i = 0; i < N/2; ++i) {
-		p = a2b2_poly(p, q);
-		q = a2b2_poly(q, p);
-	}
-	end = clock();
-	printf("poly_ipoint:%7ld  [(%d,%d),(%d,%d)]\n", ms_between(start, end), p.x, p.y, q.x, q.y);
-	
-	r.x = 5.0, r.y = 5.0, s.x = 3.0, s.y = 3.0;
-	start = clock();
-	for (i = 0; i < N/2; ++i) {
-		r = a2b2_mono_dpoint(r, s);
-		s = a2b2_mono_dpoint(s, r);
-	}
-	end = clock();
-	printf("mono_dpoint:%7ld  [(%f,%f),(%f,%f)]\n", ms_between(start, end), r.x, r.y, s.x, s.y);
-		
-	r.x = 5.0, r.y = 5.0, s.x = 3.0, s.y = 3.0;
-	start = clock();
-	for (i = 0; i < N/2; ++i) {
-		r = a2b2_poly(r, s);
-		s = a2b2_poly(s, r);
-	}
-	end = clock();
-	printf("poly_dpoint:%7ld  [(%f,%f),(%f,%f)]\n", ms_between(start, end), r.x, r.y, s.x, s.y);
-
-	return 0;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa poly-bench.c" //
-// End: //
Index: c/examples/prolog.c
===================================================================
--- src/examples/prolog.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,50 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// prolog.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:09:39 2016
-// Update Count     : 5
-//
-
-#include <fstream>
-
-void printResult( int x ) { sout | "int" | endl; }
-void printResult( double x ) { sout | "double" | endl; }
-void printResult( char * x ) { sout | "char*" | endl; }
-
-void is_arithmetic( int x ) {}
-void is_arithmetic( double x ) {}
-
-void is_integer( int x ) {}
-
-trait ArithmeticType( otype T ) {
-	void is_arithmetic( T );
-};
-
-trait IntegralType( otype T | ArithmeticType( T ) ) {
-	void is_integer( T );
-};
-
-forall( otype T | IntegralType( T ) | { void printResult( T ); } )
-void hornclause( T param ) {
-	printResult( param );
-}
-
-int main() {
-	int x;
-	double x;
-	char * x;
-	hornclause( x );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa prolog.c" //
-// End: //
Index: c/examples/quad.c
===================================================================
--- src/examples/quad.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,36 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// quad.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:07:02 2016
-// Update Count     : 8
-//
-
-#include <fstream>
-
-forall( otype T | { T ?*?( T, T ); } )
-T square( T t ) {
-	return t * t;
-}
-
-forall( otype U | { U square( U ); } )
-U quad( U u ) {
-	return square( square( u ) );
-}
-
-int main() {
-	int N = 2;
-	sout | "result of quad of" | N | "is" | quad( N ) | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa quad.c" //
-// End: //
Index: c/examples/s.c
===================================================================
--- src/examples/s.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,28 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// s.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jan  3 22:38:45 2016
-// Update Count     : 3
-//
-
-//int ?!=?( int, int );
-
-void f() {
-	int a;
-	a ? 4 : 5;
-	1 ? 4 : 5;
-	0 ? 4 : 5;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa s.c" //
-// End: //
Index: c/examples/simplePoly.c
===================================================================
--- src/examples/simplePoly.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,34 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// simplePoly.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:06:41 2016
-// Update Count     : 3
-//
-
-forall( otype T, otype U | { T f( T, U ); } )
-T q( T t, U u ) {
-	return f( t, u );
-//  return t;
-}
-
-int f( int, double* );
-
-void g( void ) {
-	int y;
-	double x;
-//  if ( y )
-	q( 3, &x );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa simplePoly.c" //
-// End: //
Index: c/examples/simpler.c
===================================================================
--- src/examples/simpler.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// simpler.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:06:30 2016
-// Update Count     : 2
-//
-
-forall( otype T ) T id( T, T );
-
-int main() {
-	id( 0, 7 );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa simpler.c" //
-// End: //
Index: c/examples/specialize.c
===================================================================
--- src/examples/specialize.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,59 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// specialize.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:06:17 2016
-// Update Count     : 3
-//
-
-/// void f( const int * );
-/// 
-/// void m()
-/// {
-///   f( 0 );
-/// }
-
-/// forall( dtype T ) T* f( T* );
-/// void g( int* (*)(int*) );
-/// 
-/// int m() {
-///   g( f );
-/// }
-
-/// void f1( void (*q)( forall( dtype U ) U* (*p)( U* ) ) );
-/// void g1( int* (*)(int*) );
-/// 
-/// int m1() {
-///   f1( g1 );
-/// }
-
-extern "C" {
-	int printf( const char*, ... );
-}
-
-forall( otype T ) T f( T t )
-{
-	printf( "in f; sizeof T is %d\n", sizeof( T ) );
-	return t;
-}
-
-void g( int (*p)(int) )
-{
-	printf( "g: f(7) returned %d\n", f(7) );
-}
-
-int main() {
-	g( f );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa specialize.c" //
-// End: //
Index: c/examples/square.c
===================================================================
--- src/examples/square.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,71 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// square.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:05:48 2016
-// Update Count     : 27
-//
-
-#include <fstream>
-
-forall( otype T | { T ?*?( T, T ); } )
-T square( T t ) {
-	return t * t;
-} // square
-
-int main() {
-#if 0
-	sout | "result of squaring 9 is " | endl;
-
-	// char does not have multiplication.
-	char ?*?( char a1, char a2 ) {
-		return (char)((int)a1 * (int)a2);
-	} // ?*?
-	char c = 9;
-	sout | "char\t\t\t" | square( c ) | endl;
-
-	sout | square( s ) | endl;
-#endif
-	short s = 9;
-	square( s );
-#if 0
-	signed int i = 9;
-	sout | "signed int\t\t" | square( i ) | endl;
-
-	unsigned int ui = 9;
-	sout | "unsigned int\t\t" | square( ui ) | endl;
-
-	long int li = 9;
-	sout | "signed long int\t\t" | square( li ) | endl;
-
-	unsigned long int uli = 9;
-	sout | "unsigned long int\t" | square( uli ) | endl;
-
-	signed long long int lli = 9;
-	sout | "signed long long int\t" | square( lli ) | endl;
-
-	unsigned long long int ulli = 9;
-	sout | "unsigned long long int\t" | square( ulli ) | endl;
-
-	float f = 9.0;
-	sout | "float\t\t\t" | square( f ) | endl;
-
-	double d = 9.0;
-	sout | "double\t\t\t" | square( d ) | endl;
-
-	long double ld = 9.0;
-	sout | "long double\t\t" | square( ld ) | endl;
-#endif
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa square.c" //
-// End: //
Index: c/examples/twice.c
===================================================================
--- src/examples/twice.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,35 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// twice.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  8 22:04:58 2016
-// Update Count     : 16
-//
-
-#include <fstream>
-
-forall( otype T | { T ?+?( T, T ); T ?++( T * ); [T] ?+=?( T *, T ); } )
-T twice( const T t ) {
-	return t + t;
-}
-
-int main( void ) {
-	// char does not have addition
-	char ?+?( char op1, char op2 ) { return (int)op1 + op2; } // cast forces integer addition or recursion
-	char ++?( char *op ) { *op += 1; return *op; }
-	char ?++( char *op ) { char temp = *op; *op += 1; return temp; }
-
-	sout | twice( 'a' ) | ' ' | twice( 1 ) | twice( 3.2 ) | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa twice.c" //
-// End: //
Index: c/examples/wrapper/.gitignore
===================================================================
--- src/examples/wrapper/.gitignore	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,3 +1,0 @@
-.tags
-build/
-test
Index: c/examples/wrapper/premake4.lua
===================================================================
--- src/examples/wrapper/premake4.lua	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,79 +1,0 @@
-#!lua
-
--- Additional Linux libs: "X11", "Xxf86vm", "Xi", "Xrandr", "stdc++"
-
-includeDirList = {
-	"src/",
-	"../",
-}
-
-libDirectories = {
-
-}
-
-
-if os.get() == "linux" then
-    linkLibs = {
-	"bsd"
-    }
-end
-
--- Build Options:
-buildOptions = {"\n  CC = cfa\n  CXX = cfa"}
-
-solution "strings"
-	configurations  { "debug", "release",
-				"cproc-debug", "cproc-release",
-				"cfa-debug", "cfa-release" }
-
-	project "test"
-		kind "ConsoleApp"
-		language "C"
-		location "build"
-		objdir "build"
-		targetdir "."
-		buildoptions (buildOptions)
-		defines {	"bool=_Bool",
-				"\"true=((_Bool)(const signed int)1)\"",
-				"\"false=((_Bool)(const signed int)0)\"",
-				"_GNU_SOURCE",
-				"__cforall",
-				"USE_BSD_LIB"
-			}
-		libdirs (libDirectories)
-		links (linkLibs)
-		linkoptions (linkOptionList)
-		includedirs (includeDirList)
-		files { "src/**.c" }
-
-	configuration "debug"
-		defines { "DEBUG" }
-		flags { "Symbols" }
-
-	configuration "release"
-		defines { "NDEBUG" }
-		flags { "Optimize" }
-
-	configuration "cproc-debug"
-		buildoptions ({"-E"})
-		linkoptions ({"-E"})
-	      defines { "DEBUG" }
-	      flags { "Symbols" }
-
-	configuration "cproc-release"
-		buildoptions ({"-E"})
-		linkoptions ({"-E"})
-	      defines { "DEBUG" }
-	      flags { "Symbols" }
-
-	configuration "cfa-debug"
-		linkoptions ({"-E"})
-		files { "build/cproc-debug/*.o" }
-	      defines { "DEBUG" }
-	      flags { "Symbols" }
-
-	configuration "cfa-release"
-		linkoptions ({"-E"})
-		files { "build/cproc-debug/*.o" }
-	      defines { "DEBUG" }
-	      flags { "Symbols" }
Index: c/examples/wrapper/src/main.c
===================================================================
--- src/examples/wrapper/src/main.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-#include "pointer.h"
-
-wrapper_t make_copy(wrapper_t copy)
-{
-	return copy;
-}
-
-int main(int argc, char const *argv[])
-{
-	wrapper_t p = wrap(6);
-
-	sout | endl | "test started" | endl;
-
-	wrapper_t p2 = p;
-
-	clear(&p);
-
-	p = p2;
-
-	wrapper_t p3 = make_copy(p2);
-
-	sout | endl | "test ended" | endl;
-
-	return 0;
-}
Index: c/examples/wrapper/src/pointer.h
===================================================================
--- src/examples/wrapper/src/pointer.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,122 +1,0 @@
-#pragma once
-
-#include <fstream>
-#include <stddef.h>
-#include <stdlib>
-
-//==============================================================================
-// type safe malloc / free
-
-forall(otype T)
-T* new()
-{
-	T* p = malloc();
-	p{};
-	return p;
-}
-
-forall(otype T)
-void delete(T* p)
-{
-	^p{};
-	free(p);
-}
-
-//==============================================================================
-// ref counter content
-
-struct content_t
-{
-	int value;
-	size_t count;
-};
-
-void ?{}(content_t* this)
-{
-	sout | "Constructing content" | endl;
-	this->count = 0;
-}
-
-void ^?{}(content_t* this)
-{
-	sout | "Destroying content" | endl;
-}
-
-//==============================================================================
-// ref counter wrapper
-
-struct wrapper_t
-{
-	content_t* ptr;
-};
-
-void ?{}(wrapper_t* this)
-{
-	sout | "Constructing empty ref pointer" | endl | endl;
-	this->ptr = NULL;
-}
-
-void ?{}(wrapper_t* this, wrapper_t rhs)
-{
-	sout | "Constructing ref pointer from copy" | endl;
-	this->ptr = rhs.ptr;
-	this->ptr->count++;
-	sout | "Reference is " | this->ptr->count | endl | endl;
-}
-
-void ^?{}(wrapper_t* this)
-{
-	if(this->ptr)
-	{
-		sout | "Destroying ref pointer" | endl;
-		this->ptr->count--;
-		sout | "Reference is " | this->ptr->count | endl | endl;
-		if(!this->ptr->count) delete(this->ptr);
-	}
-	else
-	{
-		sout | "Destroying empty ref pointer" | endl | endl;
-	}
-}
-
-wrapper_t ?=?(wrapper_t* this, wrapper_t rhs)
-{
-	sout | "Setting ref pointer" | endl;
-	if(this->ptr)
-	{
-		this->ptr->count--;
-		sout | "Reference is " | this->ptr->count | endl | endl;
-		if(!this->ptr->count) delete(this->ptr);
-	}
-	this->ptr = rhs.ptr;
-	this->ptr->count++;
-	sout | "Reference is " | this->ptr->count | endl | endl;
-}
-
-void set(wrapper_t* this, content_t* c)
-{
-	this->ptr = c;
-	this->ptr->count++;
-	sout | "Setting ref pointer" | endl;
-	sout | "Reference is " | this->ptr->count | endl | endl;
-}
-
-void clear(wrapper_t* this)
-{
-	sout | "Clearing ref pointer" | endl;
-	this->ptr->count--;
-	sout | "Reference is " | this->ptr->count | endl | endl;
-	if(!this->ptr->count) delete(this->ptr);
-	this->ptr = NULL;
-}
-
-
-wrapper_t wrap(int val)
-{
-	wrapper_t w;
-	content_t* c = malloc();
-	c{};
-	c->value = val;
-	set(&w, c);
-	return w;
-}
Index: c/examples/zero_one.c
===================================================================
--- src/examples/zero_one.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-#include <fstream>
-
-void foo(zero_t o)
-{
-	sout | "It's a Zero!" | endl;
-}
-
-void foo(one_t o)
-{
-	sout | "It's a One!" | endl;
-}
-
-void foo(int o)
-{
-	sout | "It's a Number!" | endl;
-}
-
-int main() 
-{
-	foo(0);
-	foo(1);
-	foo(2);
-	return 0;
-}
Index: c/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,120 +1,0 @@
-######################## -*- Mode: Makefile-Automake -*- ######################
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.am --
-##
-## Author           : Peter A. Buhr
-## Created On       : Sun May 31 08:54:01 2015
-## Last Modified By : Peter A. Buhr
-## Last Modified On : Tue Jul 24 17:25:39 2018
-## Update Count     : 240
-###############################################################################
-
-# create object files in directory with source files
-AUTOMAKE_OPTIONS = subdir-objects
-ARFLAGS = cr
-
-libdir = ${CFA_LIBDIR}
-lib_LIBRARIES =
-
-if BUILD_RELEASE
-lib_LIBRARIES += libcfa.a
-endif
-
-if BUILD_DEBUG
-lib_LIBRARIES += libcfa-d.a
-endif
-
-libcfa_a-libcfa-prelude.o : libcfa-prelude.c
-	 ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -Wall -O2 -c -o $@ $<
-
-libcfa_d_a-libcfa-prelude.o : libcfa-prelude.c
-	 ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -D__CFA_DEBUG__ -Wall -O0 -c -o $@ $<
-
-EXTRA_FLAGS = -g -Wall -Wno-unused-function -imacros libcfa-prelude.c @CFA_FLAGS@ $(DEFAULT_INCLUDES)
-
-AM_CCASFLAGS = @CFA_FLAGS@
-
-#CFLAGS for most libcfa src
-#use -no-include-stdhdr to prevent rebuild cycles
-#The built sources must not depend on the installed headers
-CFLAGS = -quiet -no-include-stdhdr @BUILD_IN_TREE_FLAGS@ ${EXTRA_FLAGS}
-CC = @CFACC@
-
-headers = fstream iostream iterator limits rational time stdlib common \
-	  containers/maybe containers/pair containers/result containers/vector
-
-# not all platforms support concurrency, add option do disable it
-if BUILD_CONCURRENCY
-headers += concurrency/coroutine concurrency/thread concurrency/kernel concurrency/monitor concurrency/mutex
-endif
-
-libobjs = ${headers:=.o}
-libsrc = libcfa-prelude.c startup.c interpose.c bits/debug.c assert.c exception.c virtual.c heap.c \
-	${headers:=.c}
-
-# not all platforms support concurrency, add option do disable it
-if BUILD_CONCURRENCY
-libsrc += concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c concurrency/invoke.c concurrency/preemption.c
-endif
-
-# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
-# SKULLDUGGERY in order to make sure this isn't called make the rule always fail but also create a rule for headers
-% : %.c
-	echo "Dummy rule, should never be called"
-	false
-
-# This rule should always match headers and since it has no prerequisite it will never be called
-$(addprefix $(srcdir)/,$(headers)):
-	echo "Dummy rule, should never be called"
-	false
-
-concurrency/libcfa_a-invoke.o : concurrency/invoke.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
-
-libcfa_a-exception.o : exception.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
-
-libcfa_a-virtual.o : virtual.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
-
-concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
-
-libcfa_d_a-exception.o : exception.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
-
-libcfa_d_a-virtual.o : virtual.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
-
-${libobjs} : @CFACPP@ ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
-
-libcfa_a_SOURCES = ${libsrc}
-libcfa_a_CFLAGS = -nodebug -O2
-libcfa_d_a_SOURCES = ${libsrc}
-libcfa_d_a_CFLAGS = -debug -O0 #No need for __CFA_DEBUG__ since we pass -debug
-
-stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "}
-
-cfa_includedir = $(CFA_INCDIR)
-nobase_cfa_include_HEADERS = 	\
-	${headers}		\
-	${stdhdr}		\
-	math			\
-	gmp			\
-	time_t.h		\
-	bits/align.h 		\
-	bits/containers.h	\
-	bits/defs.h 		\
-	bits/debug.h 		\
-	bits/locks.h 		\
-	concurrency/invoke.h
-
-CLEANFILES = libcfa-prelude.c
-
-maintainer-clean-local:
-	-rm -rf ${CFA_INCDIR} ${CFA_LIBDIR}
Index: c/libcfa/Makefile.in
===================================================================
--- src/libcfa/Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1718 +1,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-######################## -*- Mode: Makefile-Automake -*- ######################
-###############################################################################
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@BUILD_RELEASE_TRUE@am__append_1 = libcfa.a
-@BUILD_DEBUG_TRUE@am__append_2 = libcfa-d.a
-
-# not all platforms support concurrency, add option do disable it
-@BUILD_CONCURRENCY_TRUE@am__append_3 = concurrency/coroutine concurrency/thread concurrency/kernel concurrency/monitor concurrency/mutex
-
-# not all platforms support concurrency, add option do disable it
-@BUILD_CONCURRENCY_TRUE@am__append_4 = concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c concurrency/invoke.c concurrency/preemption.c
-subdir = src/libcfa
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am \
-	$(am__nobase_cfa_include_HEADERS_DIST) $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfa_includedir)"
-LIBRARIES = $(lib_LIBRARIES)
-AR = ar
-AM_V_AR = $(am__v_AR_@AM_V@)
-am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
-am__v_AR_0 = @echo "  AR      " $@;
-am__v_AR_1 = 
-libcfa_d_a_AR = $(AR) $(ARFLAGS)
-libcfa_d_a_LIBADD =
-am__libcfa_d_a_SOURCES_DIST = libcfa-prelude.c startup.c interpose.c \
-	bits/debug.c assert.c exception.c virtual.c heap.c fstream.c \
-	iostream.c iterator.c limits.c rational.c time.c stdlib.c \
-	common.c containers/maybe.c containers/pair.c \
-	containers/result.c containers/vector.c \
-	concurrency/coroutine.c concurrency/thread.c \
-	concurrency/kernel.c concurrency/monitor.c concurrency/mutex.c \
-	concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \
-	concurrency/invoke.c concurrency/preemption.c
-am__dirstamp = $(am__leading_dot)dirstamp
-@BUILD_CONCURRENCY_TRUE@am__objects_1 = concurrency/libcfa_d_a-coroutine.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_d_a-thread.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_d_a-kernel.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_d_a-monitor.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_d_a-mutex.$(OBJEXT)
-am__objects_2 = libcfa_d_a-fstream.$(OBJEXT) \
-	libcfa_d_a-iostream.$(OBJEXT) libcfa_d_a-iterator.$(OBJEXT) \
-	libcfa_d_a-limits.$(OBJEXT) libcfa_d_a-rational.$(OBJEXT) \
-	libcfa_d_a-time.$(OBJEXT) libcfa_d_a-stdlib.$(OBJEXT) \
-	libcfa_d_a-common.$(OBJEXT) \
-	containers/libcfa_d_a-maybe.$(OBJEXT) \
-	containers/libcfa_d_a-pair.$(OBJEXT) \
-	containers/libcfa_d_a-result.$(OBJEXT) \
-	containers/libcfa_d_a-vector.$(OBJEXT) $(am__objects_1)
-@BUILD_CONCURRENCY_TRUE@am__objects_3 = concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_d_a-alarm.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_d_a-invoke.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_d_a-preemption.$(OBJEXT)
-am__objects_4 = libcfa_d_a-libcfa-prelude.$(OBJEXT) \
-	libcfa_d_a-startup.$(OBJEXT) libcfa_d_a-interpose.$(OBJEXT) \
-	bits/libcfa_d_a-debug.$(OBJEXT) libcfa_d_a-assert.$(OBJEXT) \
-	libcfa_d_a-exception.$(OBJEXT) libcfa_d_a-virtual.$(OBJEXT) \
-	libcfa_d_a-heap.$(OBJEXT) $(am__objects_2) $(am__objects_3)
-am_libcfa_d_a_OBJECTS = $(am__objects_4)
-libcfa_d_a_OBJECTS = $(am_libcfa_d_a_OBJECTS)
-libcfa_a_AR = $(AR) $(ARFLAGS)
-libcfa_a_LIBADD =
-am__libcfa_a_SOURCES_DIST = libcfa-prelude.c startup.c interpose.c \
-	bits/debug.c assert.c exception.c virtual.c heap.c fstream.c \
-	iostream.c iterator.c limits.c rational.c time.c stdlib.c \
-	common.c containers/maybe.c containers/pair.c \
-	containers/result.c containers/vector.c \
-	concurrency/coroutine.c concurrency/thread.c \
-	concurrency/kernel.c concurrency/monitor.c concurrency/mutex.c \
-	concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \
-	concurrency/invoke.c concurrency/preemption.c
-@BUILD_CONCURRENCY_TRUE@am__objects_5 = concurrency/libcfa_a-coroutine.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_a-thread.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_a-kernel.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_a-monitor.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_a-mutex.$(OBJEXT)
-am__objects_6 = libcfa_a-fstream.$(OBJEXT) libcfa_a-iostream.$(OBJEXT) \
-	libcfa_a-iterator.$(OBJEXT) libcfa_a-limits.$(OBJEXT) \
-	libcfa_a-rational.$(OBJEXT) libcfa_a-time.$(OBJEXT) \
-	libcfa_a-stdlib.$(OBJEXT) libcfa_a-common.$(OBJEXT) \
-	containers/libcfa_a-maybe.$(OBJEXT) \
-	containers/libcfa_a-pair.$(OBJEXT) \
-	containers/libcfa_a-result.$(OBJEXT) \
-	containers/libcfa_a-vector.$(OBJEXT) $(am__objects_5)
-@BUILD_CONCURRENCY_TRUE@am__objects_7 = concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_a-alarm.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_a-invoke.$(OBJEXT) \
-@BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_a-preemption.$(OBJEXT)
-am__objects_8 = libcfa_a-libcfa-prelude.$(OBJEXT) \
-	libcfa_a-startup.$(OBJEXT) libcfa_a-interpose.$(OBJEXT) \
-	bits/libcfa_a-debug.$(OBJEXT) libcfa_a-assert.$(OBJEXT) \
-	libcfa_a-exception.$(OBJEXT) libcfa_a-virtual.$(OBJEXT) \
-	libcfa_a-heap.$(OBJEXT) $(am__objects_6) $(am__objects_7)
-am_libcfa_a_OBJECTS = $(am__objects_8)
-libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
-AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
-am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
-am__v_CPPAS_0 = @echo "  CPPAS   " $@;
-am__v_CPPAS_1 = 
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(libcfa_d_a_SOURCES) $(libcfa_a_SOURCES)
-DIST_SOURCES = $(am__libcfa_d_a_SOURCES_DIST) \
-	$(am__libcfa_a_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__nobase_cfa_include_HEADERS_DIST = fstream iostream iterator limits \
-	rational time stdlib common containers/maybe containers/pair \
-	containers/result containers/vector concurrency/coroutine \
-	concurrency/thread concurrency/kernel concurrency/monitor \
-	concurrency/mutex ${shell find ${srcdir}/stdhdr -type f \
-	-printf "%p "} math gmp time_t.h bits/align.h \
-	bits/containers.h bits/defs.h bits/debug.h bits/locks.h \
-	concurrency/invoke.h
-HEADERS = $(nobase_cfa_include_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BACKEND_CC = @BACKEND_CC@
-BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
-CC = @CFACC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFACC = @CFACC@
-CFACPP = @CFACPP@
-CFA_BACKEND_CC = @CFA_BACKEND_CC@
-CFA_BINDIR = @CFA_BINDIR@
-CFA_FLAGS = @CFA_FLAGS@
-CFA_INCDIR = @CFA_INCDIR@
-CFA_LIBDIR = @CFA_LIBDIR@
-CFA_NAME = @CFA_NAME@
-CFA_PREFIX = @CFA_PREFIX@
-
-#CFLAGS for most libcfa src
-#use -no-include-stdhdr to prevent rebuild cycles
-#The built sources must not depend on the installed headers
-CFLAGS = -quiet -no-include-stdhdr @BUILD_IN_TREE_FLAGS@ ${EXTRA_FLAGS}
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DRIVER_DIR = @DRIVER_DIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = ${CFA_LIBDIR}
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-# create object files in directory with source files
-AUTOMAKE_OPTIONS = subdir-objects
-ARFLAGS = cr
-lib_LIBRARIES = $(am__append_1) $(am__append_2)
-EXTRA_FLAGS = -g -Wall -Wno-unused-function -imacros libcfa-prelude.c @CFA_FLAGS@ $(DEFAULT_INCLUDES)
-AM_CCASFLAGS = @CFA_FLAGS@
-headers = fstream iostream iterator limits rational time stdlib common \
-	containers/maybe containers/pair containers/result \
-	containers/vector $(am__append_3)
-libobjs = ${headers:=.o}
-libsrc = libcfa-prelude.c startup.c interpose.c bits/debug.c assert.c \
-	exception.c virtual.c heap.c ${headers:=.c} $(am__append_4)
-libcfa_a_SOURCES = ${libsrc}
-libcfa_a_CFLAGS = -nodebug -O2
-libcfa_d_a_SOURCES = ${libsrc}
-libcfa_d_a_CFLAGS = -debug -O0 #No need for __CFA_DEBUG__ since we pass -debug
-stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "}
-cfa_includedir = $(CFA_INCDIR)
-nobase_cfa_include_HEADERS = \
-	${headers}		\
-	${stdhdr}		\
-	math			\
-	gmp			\
-	time_t.h		\
-	bits/align.h 		\
-	bits/containers.h	\
-	bits/defs.h 		\
-	bits/debug.h 		\
-	bits/locks.h 		\
-	concurrency/invoke.h
-
-CLEANFILES = libcfa-prelude.c
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .S .c .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libcfa/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/libcfa/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-libLIBRARIES: $(lib_LIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
-	@$(POST_INSTALL)
-	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  if test -f $$p; then \
-	    $(am__strip_dir) \
-	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
-	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
-	  else :; fi; \
-	done
-
-uninstall-libLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
-
-clean-libLIBRARIES:
-	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
-bits/$(am__dirstamp):
-	@$(MKDIR_P) bits
-	@: > bits/$(am__dirstamp)
-bits/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) bits/$(DEPDIR)
-	@: > bits/$(DEPDIR)/$(am__dirstamp)
-bits/libcfa_d_a-debug.$(OBJEXT): bits/$(am__dirstamp) \
-	bits/$(DEPDIR)/$(am__dirstamp)
-containers/$(am__dirstamp):
-	@$(MKDIR_P) containers
-	@: > containers/$(am__dirstamp)
-containers/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) containers/$(DEPDIR)
-	@: > containers/$(DEPDIR)/$(am__dirstamp)
-containers/libcfa_d_a-maybe.$(OBJEXT): containers/$(am__dirstamp) \
-	containers/$(DEPDIR)/$(am__dirstamp)
-containers/libcfa_d_a-pair.$(OBJEXT): containers/$(am__dirstamp) \
-	containers/$(DEPDIR)/$(am__dirstamp)
-containers/libcfa_d_a-result.$(OBJEXT): containers/$(am__dirstamp) \
-	containers/$(DEPDIR)/$(am__dirstamp)
-containers/libcfa_d_a-vector.$(OBJEXT): containers/$(am__dirstamp) \
-	containers/$(DEPDIR)/$(am__dirstamp)
-concurrency/$(am__dirstamp):
-	@$(MKDIR_P) concurrency
-	@: > concurrency/$(am__dirstamp)
-concurrency/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) concurrency/$(DEPDIR)
-	@: > concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_d_a-coroutine.$(OBJEXT):  \
-	concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_d_a-thread.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_d_a-kernel.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_d_a-monitor.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_d_a-mutex.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT):  \
-	concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_d_a-alarm.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_d_a-invoke.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_d_a-preemption.$(OBJEXT):  \
-	concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-
-libcfa-d.a: $(libcfa_d_a_OBJECTS) $(libcfa_d_a_DEPENDENCIES) $(EXTRA_libcfa_d_a_DEPENDENCIES) 
-	$(AM_V_at)-rm -f libcfa-d.a
-	$(AM_V_AR)$(libcfa_d_a_AR) libcfa-d.a $(libcfa_d_a_OBJECTS) $(libcfa_d_a_LIBADD)
-	$(AM_V_at)$(RANLIB) libcfa-d.a
-bits/libcfa_a-debug.$(OBJEXT): bits/$(am__dirstamp) \
-	bits/$(DEPDIR)/$(am__dirstamp)
-containers/libcfa_a-maybe.$(OBJEXT): containers/$(am__dirstamp) \
-	containers/$(DEPDIR)/$(am__dirstamp)
-containers/libcfa_a-pair.$(OBJEXT): containers/$(am__dirstamp) \
-	containers/$(DEPDIR)/$(am__dirstamp)
-containers/libcfa_a-result.$(OBJEXT): containers/$(am__dirstamp) \
-	containers/$(DEPDIR)/$(am__dirstamp)
-containers/libcfa_a-vector.$(OBJEXT): containers/$(am__dirstamp) \
-	containers/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_a-coroutine.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_a-thread.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_a-kernel.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_a-monitor.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_a-mutex.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_a-alarm.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_a-invoke.$(OBJEXT): concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-concurrency/libcfa_a-preemption.$(OBJEXT):  \
-	concurrency/$(am__dirstamp) \
-	concurrency/$(DEPDIR)/$(am__dirstamp)
-
-libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES) 
-	$(AM_V_at)-rm -f libcfa.a
-	$(AM_V_AR)$(libcfa_a_AR) libcfa.a $(libcfa_a_OBJECTS) $(libcfa_a_LIBADD)
-	$(AM_V_at)$(RANLIB) libcfa.a
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-	-rm -f bits/*.$(OBJEXT)
-	-rm -f concurrency/*.$(OBJEXT)
-	-rm -f containers/*.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-assert.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-common.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-exception.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-fstream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-heap.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-interpose.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-iostream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-iterator.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-libcfa-prelude.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-limits.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-rational.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-startup.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-stdlib.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-time.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-virtual.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-assert.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-common.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-exception.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-fstream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-heap.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-interpose.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-iostream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-iterator.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-libcfa-prelude.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-limits.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-rational.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-startup.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-stdlib.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-time.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-virtual.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@bits/$(DEPDIR)/libcfa_a-debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@bits/$(DEPDIR)/libcfa_d_a-debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/CtxSwitch-@MACHINE_TYPE@.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-alarm.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-coroutine.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-invoke.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-kernel.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-monitor.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-mutex.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-preemption.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-thread.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-alarm.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-invoke.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-kernel.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-monitor.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-mutex.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-preemption.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_d_a-thread.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_a-maybe.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_a-pair.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_a-result.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_a-vector.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_d_a-maybe.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_d_a-pair.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_d_a-result.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/libcfa_d_a-vector.Po@am__quote@
-
-.S.o:
-@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $<
-
-.S.obj:
-@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.o:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-libcfa_d_a-libcfa-prelude.obj: libcfa-prelude.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-libcfa-prelude.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-libcfa-prelude.Tpo -c -o libcfa_d_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-libcfa-prelude.Tpo $(DEPDIR)/libcfa_d_a-libcfa-prelude.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libcfa-prelude.c' object='libcfa_d_a-libcfa-prelude.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
-
-libcfa_d_a-startup.o: startup.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-startup.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-startup.Tpo -c -o libcfa_d_a-startup.o `test -f 'startup.c' || echo '$(srcdir)/'`startup.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-startup.Tpo $(DEPDIR)/libcfa_d_a-startup.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='startup.c' object='libcfa_d_a-startup.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-startup.o `test -f 'startup.c' || echo '$(srcdir)/'`startup.c
-
-libcfa_d_a-startup.obj: startup.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-startup.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-startup.Tpo -c -o libcfa_d_a-startup.obj `if test -f 'startup.c'; then $(CYGPATH_W) 'startup.c'; else $(CYGPATH_W) '$(srcdir)/startup.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-startup.Tpo $(DEPDIR)/libcfa_d_a-startup.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='startup.c' object='libcfa_d_a-startup.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-startup.obj `if test -f 'startup.c'; then $(CYGPATH_W) 'startup.c'; else $(CYGPATH_W) '$(srcdir)/startup.c'; fi`
-
-libcfa_d_a-interpose.o: interpose.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-interpose.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-interpose.Tpo -c -o libcfa_d_a-interpose.o `test -f 'interpose.c' || echo '$(srcdir)/'`interpose.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-interpose.Tpo $(DEPDIR)/libcfa_d_a-interpose.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='interpose.c' object='libcfa_d_a-interpose.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-interpose.o `test -f 'interpose.c' || echo '$(srcdir)/'`interpose.c
-
-libcfa_d_a-interpose.obj: interpose.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-interpose.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-interpose.Tpo -c -o libcfa_d_a-interpose.obj `if test -f 'interpose.c'; then $(CYGPATH_W) 'interpose.c'; else $(CYGPATH_W) '$(srcdir)/interpose.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-interpose.Tpo $(DEPDIR)/libcfa_d_a-interpose.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='interpose.c' object='libcfa_d_a-interpose.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-interpose.obj `if test -f 'interpose.c'; then $(CYGPATH_W) 'interpose.c'; else $(CYGPATH_W) '$(srcdir)/interpose.c'; fi`
-
-bits/libcfa_d_a-debug.o: bits/debug.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT bits/libcfa_d_a-debug.o -MD -MP -MF bits/$(DEPDIR)/libcfa_d_a-debug.Tpo -c -o bits/libcfa_d_a-debug.o `test -f 'bits/debug.c' || echo '$(srcdir)/'`bits/debug.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) bits/$(DEPDIR)/libcfa_d_a-debug.Tpo bits/$(DEPDIR)/libcfa_d_a-debug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='bits/debug.c' object='bits/libcfa_d_a-debug.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o bits/libcfa_d_a-debug.o `test -f 'bits/debug.c' || echo '$(srcdir)/'`bits/debug.c
-
-bits/libcfa_d_a-debug.obj: bits/debug.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT bits/libcfa_d_a-debug.obj -MD -MP -MF bits/$(DEPDIR)/libcfa_d_a-debug.Tpo -c -o bits/libcfa_d_a-debug.obj `if test -f 'bits/debug.c'; then $(CYGPATH_W) 'bits/debug.c'; else $(CYGPATH_W) '$(srcdir)/bits/debug.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) bits/$(DEPDIR)/libcfa_d_a-debug.Tpo bits/$(DEPDIR)/libcfa_d_a-debug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='bits/debug.c' object='bits/libcfa_d_a-debug.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o bits/libcfa_d_a-debug.obj `if test -f 'bits/debug.c'; then $(CYGPATH_W) 'bits/debug.c'; else $(CYGPATH_W) '$(srcdir)/bits/debug.c'; fi`
-
-libcfa_d_a-assert.o: assert.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-assert.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-assert.Tpo -c -o libcfa_d_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-assert.Tpo $(DEPDIR)/libcfa_d_a-assert.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='assert.c' object='libcfa_d_a-assert.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
-
-libcfa_d_a-assert.obj: assert.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-assert.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-assert.Tpo -c -o libcfa_d_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-assert.Tpo $(DEPDIR)/libcfa_d_a-assert.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='assert.c' object='libcfa_d_a-assert.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
-
-libcfa_d_a-exception.obj: exception.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-exception.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-exception.Tpo -c -o libcfa_d_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-exception.Tpo $(DEPDIR)/libcfa_d_a-exception.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='exception.c' object='libcfa_d_a-exception.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi`
-
-libcfa_d_a-virtual.obj: virtual.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-virtual.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-virtual.Tpo -c -o libcfa_d_a-virtual.obj `if test -f 'virtual.c'; then $(CYGPATH_W) 'virtual.c'; else $(CYGPATH_W) '$(srcdir)/virtual.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-virtual.Tpo $(DEPDIR)/libcfa_d_a-virtual.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='virtual.c' object='libcfa_d_a-virtual.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-virtual.obj `if test -f 'virtual.c'; then $(CYGPATH_W) 'virtual.c'; else $(CYGPATH_W) '$(srcdir)/virtual.c'; fi`
-
-libcfa_d_a-heap.o: heap.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-heap.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-heap.Tpo -c -o libcfa_d_a-heap.o `test -f 'heap.c' || echo '$(srcdir)/'`heap.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-heap.Tpo $(DEPDIR)/libcfa_d_a-heap.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='heap.c' object='libcfa_d_a-heap.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-heap.o `test -f 'heap.c' || echo '$(srcdir)/'`heap.c
-
-libcfa_d_a-heap.obj: heap.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-heap.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-heap.Tpo -c -o libcfa_d_a-heap.obj `if test -f 'heap.c'; then $(CYGPATH_W) 'heap.c'; else $(CYGPATH_W) '$(srcdir)/heap.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-heap.Tpo $(DEPDIR)/libcfa_d_a-heap.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='heap.c' object='libcfa_d_a-heap.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-heap.obj `if test -f 'heap.c'; then $(CYGPATH_W) 'heap.c'; else $(CYGPATH_W) '$(srcdir)/heap.c'; fi`
-
-libcfa_d_a-fstream.o: fstream.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
-
-libcfa_d_a-fstream.obj: fstream.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
-
-libcfa_d_a-iostream.o: iostream.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
-
-libcfa_d_a-iostream.obj: iostream.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
-
-libcfa_d_a-iterator.o: iterator.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
-
-libcfa_d_a-iterator.obj: iterator.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
-
-libcfa_d_a-limits.o: limits.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
-
-libcfa_d_a-limits.obj: limits.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
-
-libcfa_d_a-rational.o: rational.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
-
-libcfa_d_a-rational.obj: rational.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
-
-libcfa_d_a-time.o: time.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-time.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-time.Tpo -c -o libcfa_d_a-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-time.Tpo $(DEPDIR)/libcfa_d_a-time.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='time.c' object='libcfa_d_a-time.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
-
-libcfa_d_a-time.obj: time.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-time.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-time.Tpo -c -o libcfa_d_a-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-time.Tpo $(DEPDIR)/libcfa_d_a-time.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='time.c' object='libcfa_d_a-time.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
-
-libcfa_d_a-stdlib.o: stdlib.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
-
-libcfa_d_a-stdlib.obj: stdlib.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
-
-libcfa_d_a-common.o: common.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-common.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-common.Tpo -c -o libcfa_d_a-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-common.Tpo $(DEPDIR)/libcfa_d_a-common.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='common.c' object='libcfa_d_a-common.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c
-
-libcfa_d_a-common.obj: common.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-common.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-common.Tpo -c -o libcfa_d_a-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-common.Tpo $(DEPDIR)/libcfa_d_a-common.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='common.c' object='libcfa_d_a-common.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`
-
-containers/libcfa_d_a-maybe.o: containers/maybe.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-maybe.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo -c -o containers/libcfa_d_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo containers/$(DEPDIR)/libcfa_d_a-maybe.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_d_a-maybe.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c
-
-containers/libcfa_d_a-maybe.obj: containers/maybe.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-maybe.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo -c -o containers/libcfa_d_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo containers/$(DEPDIR)/libcfa_d_a-maybe.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_d_a-maybe.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi`
-
-containers/libcfa_d_a-pair.o: containers/pair.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-pair.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-pair.Tpo -c -o containers/libcfa_d_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-pair.Tpo containers/$(DEPDIR)/libcfa_d_a-pair.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/pair.c' object='containers/libcfa_d_a-pair.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c
-
-containers/libcfa_d_a-pair.obj: containers/pair.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-pair.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-pair.Tpo -c -o containers/libcfa_d_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-pair.Tpo containers/$(DEPDIR)/libcfa_d_a-pair.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/pair.c' object='containers/libcfa_d_a-pair.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi`
-
-containers/libcfa_d_a-result.o: containers/result.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-result.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-result.Tpo -c -o containers/libcfa_d_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-result.Tpo containers/$(DEPDIR)/libcfa_d_a-result.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/result.c' object='containers/libcfa_d_a-result.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c
-
-containers/libcfa_d_a-result.obj: containers/result.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-result.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-result.Tpo -c -o containers/libcfa_d_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-result.Tpo containers/$(DEPDIR)/libcfa_d_a-result.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/result.c' object='containers/libcfa_d_a-result.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi`
-
-containers/libcfa_d_a-vector.o: containers/vector.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
-
-containers/libcfa_d_a-vector.obj: containers/vector.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
-
-concurrency/libcfa_d_a-coroutine.o: concurrency/coroutine.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-coroutine.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo -c -o concurrency/libcfa_d_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_d_a-coroutine.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c
-
-concurrency/libcfa_d_a-coroutine.obj: concurrency/coroutine.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-coroutine.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo -c -o concurrency/libcfa_d_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_d_a-coroutine.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi`
-
-concurrency/libcfa_d_a-thread.o: concurrency/thread.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-thread.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo -c -o concurrency/libcfa_d_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_d_a-thread.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_d_a-thread.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c
-
-concurrency/libcfa_d_a-thread.obj: concurrency/thread.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-thread.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo -c -o concurrency/libcfa_d_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_d_a-thread.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_d_a-thread.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi`
-
-concurrency/libcfa_d_a-kernel.o: concurrency/kernel.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-kernel.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo -c -o concurrency/libcfa_d_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_d_a-kernel.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_d_a-kernel.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c
-
-concurrency/libcfa_d_a-kernel.obj: concurrency/kernel.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-kernel.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo -c -o concurrency/libcfa_d_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_d_a-kernel.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_d_a-kernel.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi`
-
-concurrency/libcfa_d_a-monitor.o: concurrency/monitor.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-monitor.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo -c -o concurrency/libcfa_d_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_d_a-monitor.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_d_a-monitor.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c
-
-concurrency/libcfa_d_a-monitor.obj: concurrency/monitor.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-monitor.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo -c -o concurrency/libcfa_d_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_d_a-monitor.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_d_a-monitor.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi`
-
-concurrency/libcfa_d_a-mutex.o: concurrency/mutex.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-mutex.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-mutex.Tpo -c -o concurrency/libcfa_d_a-mutex.o `test -f 'concurrency/mutex.c' || echo '$(srcdir)/'`concurrency/mutex.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-mutex.Tpo concurrency/$(DEPDIR)/libcfa_d_a-mutex.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/mutex.c' object='concurrency/libcfa_d_a-mutex.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-mutex.o `test -f 'concurrency/mutex.c' || echo '$(srcdir)/'`concurrency/mutex.c
-
-concurrency/libcfa_d_a-mutex.obj: concurrency/mutex.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-mutex.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-mutex.Tpo -c -o concurrency/libcfa_d_a-mutex.obj `if test -f 'concurrency/mutex.c'; then $(CYGPATH_W) 'concurrency/mutex.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/mutex.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-mutex.Tpo concurrency/$(DEPDIR)/libcfa_d_a-mutex.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/mutex.c' object='concurrency/libcfa_d_a-mutex.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-mutex.obj `if test -f 'concurrency/mutex.c'; then $(CYGPATH_W) 'concurrency/mutex.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/mutex.c'; fi`
-
-concurrency/libcfa_d_a-alarm.o: concurrency/alarm.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-alarm.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-alarm.Tpo -c -o concurrency/libcfa_d_a-alarm.o `test -f 'concurrency/alarm.c' || echo '$(srcdir)/'`concurrency/alarm.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-alarm.Tpo concurrency/$(DEPDIR)/libcfa_d_a-alarm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/alarm.c' object='concurrency/libcfa_d_a-alarm.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-alarm.o `test -f 'concurrency/alarm.c' || echo '$(srcdir)/'`concurrency/alarm.c
-
-concurrency/libcfa_d_a-alarm.obj: concurrency/alarm.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-alarm.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-alarm.Tpo -c -o concurrency/libcfa_d_a-alarm.obj `if test -f 'concurrency/alarm.c'; then $(CYGPATH_W) 'concurrency/alarm.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/alarm.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-alarm.Tpo concurrency/$(DEPDIR)/libcfa_d_a-alarm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/alarm.c' object='concurrency/libcfa_d_a-alarm.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-alarm.obj `if test -f 'concurrency/alarm.c'; then $(CYGPATH_W) 'concurrency/alarm.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/alarm.c'; fi`
-
-concurrency/libcfa_d_a-invoke.obj: concurrency/invoke.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-invoke.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-invoke.Tpo -c -o concurrency/libcfa_d_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-invoke.Tpo concurrency/$(DEPDIR)/libcfa_d_a-invoke.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/invoke.c' object='concurrency/libcfa_d_a-invoke.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
-
-concurrency/libcfa_d_a-preemption.o: concurrency/preemption.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-preemption.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-preemption.Tpo -c -o concurrency/libcfa_d_a-preemption.o `test -f 'concurrency/preemption.c' || echo '$(srcdir)/'`concurrency/preemption.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-preemption.Tpo concurrency/$(DEPDIR)/libcfa_d_a-preemption.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/preemption.c' object='concurrency/libcfa_d_a-preemption.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-preemption.o `test -f 'concurrency/preemption.c' || echo '$(srcdir)/'`concurrency/preemption.c
-
-concurrency/libcfa_d_a-preemption.obj: concurrency/preemption.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-preemption.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-preemption.Tpo -c -o concurrency/libcfa_d_a-preemption.obj `if test -f 'concurrency/preemption.c'; then $(CYGPATH_W) 'concurrency/preemption.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/preemption.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-preemption.Tpo concurrency/$(DEPDIR)/libcfa_d_a-preemption.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/preemption.c' object='concurrency/libcfa_d_a-preemption.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-preemption.obj `if test -f 'concurrency/preemption.c'; then $(CYGPATH_W) 'concurrency/preemption.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/preemption.c'; fi`
-
-libcfa_a-libcfa-prelude.obj: libcfa-prelude.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-libcfa-prelude.obj -MD -MP -MF $(DEPDIR)/libcfa_a-libcfa-prelude.Tpo -c -o libcfa_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-libcfa-prelude.Tpo $(DEPDIR)/libcfa_a-libcfa-prelude.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libcfa-prelude.c' object='libcfa_a-libcfa-prelude.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-libcfa-prelude.obj `if test -f 'libcfa-prelude.c'; then $(CYGPATH_W) 'libcfa-prelude.c'; else $(CYGPATH_W) '$(srcdir)/libcfa-prelude.c'; fi`
-
-libcfa_a-startup.o: startup.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-startup.o -MD -MP -MF $(DEPDIR)/libcfa_a-startup.Tpo -c -o libcfa_a-startup.o `test -f 'startup.c' || echo '$(srcdir)/'`startup.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-startup.Tpo $(DEPDIR)/libcfa_a-startup.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='startup.c' object='libcfa_a-startup.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-startup.o `test -f 'startup.c' || echo '$(srcdir)/'`startup.c
-
-libcfa_a-startup.obj: startup.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-startup.obj -MD -MP -MF $(DEPDIR)/libcfa_a-startup.Tpo -c -o libcfa_a-startup.obj `if test -f 'startup.c'; then $(CYGPATH_W) 'startup.c'; else $(CYGPATH_W) '$(srcdir)/startup.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-startup.Tpo $(DEPDIR)/libcfa_a-startup.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='startup.c' object='libcfa_a-startup.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-startup.obj `if test -f 'startup.c'; then $(CYGPATH_W) 'startup.c'; else $(CYGPATH_W) '$(srcdir)/startup.c'; fi`
-
-libcfa_a-interpose.o: interpose.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-interpose.o -MD -MP -MF $(DEPDIR)/libcfa_a-interpose.Tpo -c -o libcfa_a-interpose.o `test -f 'interpose.c' || echo '$(srcdir)/'`interpose.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-interpose.Tpo $(DEPDIR)/libcfa_a-interpose.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='interpose.c' object='libcfa_a-interpose.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-interpose.o `test -f 'interpose.c' || echo '$(srcdir)/'`interpose.c
-
-libcfa_a-interpose.obj: interpose.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-interpose.obj -MD -MP -MF $(DEPDIR)/libcfa_a-interpose.Tpo -c -o libcfa_a-interpose.obj `if test -f 'interpose.c'; then $(CYGPATH_W) 'interpose.c'; else $(CYGPATH_W) '$(srcdir)/interpose.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-interpose.Tpo $(DEPDIR)/libcfa_a-interpose.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='interpose.c' object='libcfa_a-interpose.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-interpose.obj `if test -f 'interpose.c'; then $(CYGPATH_W) 'interpose.c'; else $(CYGPATH_W) '$(srcdir)/interpose.c'; fi`
-
-bits/libcfa_a-debug.o: bits/debug.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT bits/libcfa_a-debug.o -MD -MP -MF bits/$(DEPDIR)/libcfa_a-debug.Tpo -c -o bits/libcfa_a-debug.o `test -f 'bits/debug.c' || echo '$(srcdir)/'`bits/debug.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) bits/$(DEPDIR)/libcfa_a-debug.Tpo bits/$(DEPDIR)/libcfa_a-debug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='bits/debug.c' object='bits/libcfa_a-debug.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o bits/libcfa_a-debug.o `test -f 'bits/debug.c' || echo '$(srcdir)/'`bits/debug.c
-
-bits/libcfa_a-debug.obj: bits/debug.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT bits/libcfa_a-debug.obj -MD -MP -MF bits/$(DEPDIR)/libcfa_a-debug.Tpo -c -o bits/libcfa_a-debug.obj `if test -f 'bits/debug.c'; then $(CYGPATH_W) 'bits/debug.c'; else $(CYGPATH_W) '$(srcdir)/bits/debug.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) bits/$(DEPDIR)/libcfa_a-debug.Tpo bits/$(DEPDIR)/libcfa_a-debug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='bits/debug.c' object='bits/libcfa_a-debug.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o bits/libcfa_a-debug.obj `if test -f 'bits/debug.c'; then $(CYGPATH_W) 'bits/debug.c'; else $(CYGPATH_W) '$(srcdir)/bits/debug.c'; fi`
-
-libcfa_a-assert.o: assert.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-assert.o -MD -MP -MF $(DEPDIR)/libcfa_a-assert.Tpo -c -o libcfa_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-assert.Tpo $(DEPDIR)/libcfa_a-assert.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='assert.c' object='libcfa_a-assert.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c
-
-libcfa_a-assert.obj: assert.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-assert.obj -MD -MP -MF $(DEPDIR)/libcfa_a-assert.Tpo -c -o libcfa_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-assert.Tpo $(DEPDIR)/libcfa_a-assert.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='assert.c' object='libcfa_a-assert.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi`
-
-libcfa_a-exception.obj: exception.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-exception.obj -MD -MP -MF $(DEPDIR)/libcfa_a-exception.Tpo -c -o libcfa_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-exception.Tpo $(DEPDIR)/libcfa_a-exception.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='exception.c' object='libcfa_a-exception.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi`
-
-libcfa_a-virtual.obj: virtual.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-virtual.obj -MD -MP -MF $(DEPDIR)/libcfa_a-virtual.Tpo -c -o libcfa_a-virtual.obj `if test -f 'virtual.c'; then $(CYGPATH_W) 'virtual.c'; else $(CYGPATH_W) '$(srcdir)/virtual.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-virtual.Tpo $(DEPDIR)/libcfa_a-virtual.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='virtual.c' object='libcfa_a-virtual.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-virtual.obj `if test -f 'virtual.c'; then $(CYGPATH_W) 'virtual.c'; else $(CYGPATH_W) '$(srcdir)/virtual.c'; fi`
-
-libcfa_a-heap.o: heap.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-heap.o -MD -MP -MF $(DEPDIR)/libcfa_a-heap.Tpo -c -o libcfa_a-heap.o `test -f 'heap.c' || echo '$(srcdir)/'`heap.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-heap.Tpo $(DEPDIR)/libcfa_a-heap.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='heap.c' object='libcfa_a-heap.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-heap.o `test -f 'heap.c' || echo '$(srcdir)/'`heap.c
-
-libcfa_a-heap.obj: heap.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-heap.obj -MD -MP -MF $(DEPDIR)/libcfa_a-heap.Tpo -c -o libcfa_a-heap.obj `if test -f 'heap.c'; then $(CYGPATH_W) 'heap.c'; else $(CYGPATH_W) '$(srcdir)/heap.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-heap.Tpo $(DEPDIR)/libcfa_a-heap.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='heap.c' object='libcfa_a-heap.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-heap.obj `if test -f 'heap.c'; then $(CYGPATH_W) 'heap.c'; else $(CYGPATH_W) '$(srcdir)/heap.c'; fi`
-
-libcfa_a-fstream.o: fstream.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c
-
-libcfa_a-fstream.obj: fstream.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`
-
-libcfa_a-iostream.o: iostream.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c
-
-libcfa_a-iostream.obj: iostream.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`
-
-libcfa_a-iterator.o: iterator.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c
-
-libcfa_a-iterator.obj: iterator.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`
-
-libcfa_a-limits.o: limits.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='limits.c' object='libcfa_a-limits.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c
-
-libcfa_a-limits.obj: limits.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='limits.c' object='libcfa_a-limits.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`
-
-libcfa_a-rational.o: rational.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rational.c' object='libcfa_a-rational.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c
-
-libcfa_a-rational.obj: rational.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rational.c' object='libcfa_a-rational.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
-
-libcfa_a-time.o: time.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-time.o -MD -MP -MF $(DEPDIR)/libcfa_a-time.Tpo -c -o libcfa_a-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-time.Tpo $(DEPDIR)/libcfa_a-time.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='time.c' object='libcfa_a-time.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
-
-libcfa_a-time.obj: time.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-time.obj -MD -MP -MF $(DEPDIR)/libcfa_a-time.Tpo -c -o libcfa_a-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-time.Tpo $(DEPDIR)/libcfa_a-time.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='time.c' object='libcfa_a-time.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
-
-libcfa_a-stdlib.o: stdlib.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
-
-libcfa_a-stdlib.obj: stdlib.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`
-
-libcfa_a-common.o: common.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-common.o -MD -MP -MF $(DEPDIR)/libcfa_a-common.Tpo -c -o libcfa_a-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-common.Tpo $(DEPDIR)/libcfa_a-common.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='common.c' object='libcfa_a-common.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c
-
-libcfa_a-common.obj: common.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-common.obj -MD -MP -MF $(DEPDIR)/libcfa_a-common.Tpo -c -o libcfa_a-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-common.Tpo $(DEPDIR)/libcfa_a-common.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='common.c' object='libcfa_a-common.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`
-
-containers/libcfa_a-maybe.o: containers/maybe.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-maybe.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-maybe.Tpo -c -o containers/libcfa_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-maybe.Tpo containers/$(DEPDIR)/libcfa_a-maybe.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_a-maybe.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c
-
-containers/libcfa_a-maybe.obj: containers/maybe.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-maybe.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-maybe.Tpo -c -o containers/libcfa_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-maybe.Tpo containers/$(DEPDIR)/libcfa_a-maybe.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_a-maybe.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi`
-
-containers/libcfa_a-pair.o: containers/pair.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-pair.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-pair.Tpo -c -o containers/libcfa_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-pair.Tpo containers/$(DEPDIR)/libcfa_a-pair.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/pair.c' object='containers/libcfa_a-pair.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c
-
-containers/libcfa_a-pair.obj: containers/pair.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-pair.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-pair.Tpo -c -o containers/libcfa_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-pair.Tpo containers/$(DEPDIR)/libcfa_a-pair.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/pair.c' object='containers/libcfa_a-pair.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi`
-
-containers/libcfa_a-result.o: containers/result.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-result.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-result.Tpo -c -o containers/libcfa_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-result.Tpo containers/$(DEPDIR)/libcfa_a-result.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/result.c' object='containers/libcfa_a-result.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c
-
-containers/libcfa_a-result.obj: containers/result.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-result.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-result.Tpo -c -o containers/libcfa_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-result.Tpo containers/$(DEPDIR)/libcfa_a-result.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/result.c' object='containers/libcfa_a-result.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi`
-
-containers/libcfa_a-vector.o: containers/vector.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c
-
-containers/libcfa_a-vector.obj: containers/vector.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`
-
-concurrency/libcfa_a-coroutine.o: concurrency/coroutine.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-coroutine.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo -c -o concurrency/libcfa_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_a-coroutine.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_a-coroutine.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c
-
-concurrency/libcfa_a-coroutine.obj: concurrency/coroutine.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-coroutine.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo -c -o concurrency/libcfa_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_a-coroutine.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_a-coroutine.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi`
-
-concurrency/libcfa_a-thread.o: concurrency/thread.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-thread.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-thread.Tpo -c -o concurrency/libcfa_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_a-thread.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_a-thread.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c
-
-concurrency/libcfa_a-thread.obj: concurrency/thread.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-thread.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-thread.Tpo -c -o concurrency/libcfa_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_a-thread.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_a-thread.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi`
-
-concurrency/libcfa_a-kernel.o: concurrency/kernel.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-kernel.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo -c -o concurrency/libcfa_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_a-kernel.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_a-kernel.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c
-
-concurrency/libcfa_a-kernel.obj: concurrency/kernel.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-kernel.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo -c -o concurrency/libcfa_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_a-kernel.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_a-kernel.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi`
-
-concurrency/libcfa_a-monitor.o: concurrency/monitor.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-monitor.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo -c -o concurrency/libcfa_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_a-monitor.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_a-monitor.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c
-
-concurrency/libcfa_a-monitor.obj: concurrency/monitor.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-monitor.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo -c -o concurrency/libcfa_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_a-monitor.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_a-monitor.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi`
-
-concurrency/libcfa_a-mutex.o: concurrency/mutex.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-mutex.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-mutex.Tpo -c -o concurrency/libcfa_a-mutex.o `test -f 'concurrency/mutex.c' || echo '$(srcdir)/'`concurrency/mutex.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-mutex.Tpo concurrency/$(DEPDIR)/libcfa_a-mutex.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/mutex.c' object='concurrency/libcfa_a-mutex.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-mutex.o `test -f 'concurrency/mutex.c' || echo '$(srcdir)/'`concurrency/mutex.c
-
-concurrency/libcfa_a-mutex.obj: concurrency/mutex.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-mutex.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-mutex.Tpo -c -o concurrency/libcfa_a-mutex.obj `if test -f 'concurrency/mutex.c'; then $(CYGPATH_W) 'concurrency/mutex.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/mutex.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-mutex.Tpo concurrency/$(DEPDIR)/libcfa_a-mutex.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/mutex.c' object='concurrency/libcfa_a-mutex.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-mutex.obj `if test -f 'concurrency/mutex.c'; then $(CYGPATH_W) 'concurrency/mutex.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/mutex.c'; fi`
-
-concurrency/libcfa_a-alarm.o: concurrency/alarm.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-alarm.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-alarm.Tpo -c -o concurrency/libcfa_a-alarm.o `test -f 'concurrency/alarm.c' || echo '$(srcdir)/'`concurrency/alarm.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-alarm.Tpo concurrency/$(DEPDIR)/libcfa_a-alarm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/alarm.c' object='concurrency/libcfa_a-alarm.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-alarm.o `test -f 'concurrency/alarm.c' || echo '$(srcdir)/'`concurrency/alarm.c
-
-concurrency/libcfa_a-alarm.obj: concurrency/alarm.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-alarm.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-alarm.Tpo -c -o concurrency/libcfa_a-alarm.obj `if test -f 'concurrency/alarm.c'; then $(CYGPATH_W) 'concurrency/alarm.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/alarm.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-alarm.Tpo concurrency/$(DEPDIR)/libcfa_a-alarm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/alarm.c' object='concurrency/libcfa_a-alarm.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-alarm.obj `if test -f 'concurrency/alarm.c'; then $(CYGPATH_W) 'concurrency/alarm.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/alarm.c'; fi`
-
-concurrency/libcfa_a-invoke.obj: concurrency/invoke.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-invoke.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-invoke.Tpo -c -o concurrency/libcfa_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-invoke.Tpo concurrency/$(DEPDIR)/libcfa_a-invoke.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/invoke.c' object='concurrency/libcfa_a-invoke.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-invoke.obj `if test -f 'concurrency/invoke.c'; then $(CYGPATH_W) 'concurrency/invoke.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/invoke.c'; fi`
-
-concurrency/libcfa_a-preemption.o: concurrency/preemption.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-preemption.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-preemption.Tpo -c -o concurrency/libcfa_a-preemption.o `test -f 'concurrency/preemption.c' || echo '$(srcdir)/'`concurrency/preemption.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-preemption.Tpo concurrency/$(DEPDIR)/libcfa_a-preemption.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/preemption.c' object='concurrency/libcfa_a-preemption.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-preemption.o `test -f 'concurrency/preemption.c' || echo '$(srcdir)/'`concurrency/preemption.c
-
-concurrency/libcfa_a-preemption.obj: concurrency/preemption.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-preemption.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-preemption.Tpo -c -o concurrency/libcfa_a-preemption.obj `if test -f 'concurrency/preemption.c'; then $(CYGPATH_W) 'concurrency/preemption.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/preemption.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-preemption.Tpo concurrency/$(DEPDIR)/libcfa_a-preemption.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='concurrency/preemption.c' object='concurrency/libcfa_a-preemption.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-preemption.obj `if test -f 'concurrency/preemption.c'; then $(CYGPATH_W) 'concurrency/preemption.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/preemption.c'; fi`
-install-nobase_cfa_includeHEADERS: $(nobase_cfa_include_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(nobase_cfa_include_HEADERS)'; test -n "$(cfa_includedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(cfa_includedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)" || exit 1; \
-	fi; \
-	$(am__nobase_list) | while read dir files; do \
-	  xfiles=; for file in $$files; do \
-	    if test -f "$$file"; then xfiles="$$xfiles $$file"; \
-	    else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
-	  test -z "$$xfiles" || { \
-	    test "x$$dir" = x. || { \
-	      echo " $(MKDIR_P) '$(DESTDIR)$(cfa_includedir)/$$dir'"; \
-	      $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)/$$dir"; }; \
-	    echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(cfa_includedir)/$$dir'"; \
-	    $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(cfa_includedir)/$$dir" || exit $$?; }; \
-	done
-
-uninstall-nobase_cfa_includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nobase_cfa_include_HEADERS)'; test -n "$(cfa_includedir)" || list=; \
-	$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
-	dir='$(DESTDIR)$(cfa_includedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LIBRARIES) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfa_includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-rm -f bits/$(DEPDIR)/$(am__dirstamp)
-	-rm -f bits/$(am__dirstamp)
-	-rm -f concurrency/$(DEPDIR)/$(am__dirstamp)
-	-rm -f concurrency/$(am__dirstamp)
-	-rm -f containers/$(DEPDIR)/$(am__dirstamp)
-	-rm -f containers/$(am__dirstamp)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLIBRARIES mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR) bits/$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-nobase_cfa_includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR) bits/$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic \
-	maintainer-clean-local
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLIBRARIES \
-	uninstall-nobase_cfa_includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLIBRARIES cscopelist-am ctags ctags-am distclean \
-	distclean-compile distclean-generic distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-libLIBRARIES install-man \
-	install-nobase_cfa_includeHEADERS install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic maintainer-clean-local mostlyclean \
-	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-libLIBRARIES \
-	uninstall-nobase_cfa_includeHEADERS
-
-.PRECIOUS: Makefile
-
-
-libcfa_a-libcfa-prelude.o : libcfa-prelude.c
-	 ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -Wall -O2 -c -o $@ $<
-
-libcfa_d_a-libcfa-prelude.o : libcfa-prelude.c
-	 ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -D__CFA_DEBUG__ -Wall -O0 -c -o $@ $<
-
-# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
-# SKULLDUGGERY in order to make sure this isn't called make the rule always fail but also create a rule for headers
-% : %.c
-	echo "Dummy rule, should never be called"
-	false
-
-# This rule should always match headers and since it has no prerequisite it will never be called
-$(addprefix $(srcdir)/,$(headers)):
-	echo "Dummy rule, should never be called"
-	false
-
-concurrency/libcfa_a-invoke.o : concurrency/invoke.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
-
-libcfa_a-exception.o : exception.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
-
-libcfa_a-virtual.o : virtual.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
-
-concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
-
-libcfa_d_a-exception.o : exception.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
-
-libcfa_d_a-virtual.o : virtual.c
-	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
-
-${libobjs} : @CFACPP@ ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
-
-maintainer-clean-local:
-	-rm -rf ${CFA_INCDIR} ${CFA_LIBDIR}
-
-# 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.
-.NOEXPORT:
Index: c/libcfa/assert.c
===================================================================
--- src/libcfa/assert.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,51 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// assert.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Nov 28 12:27:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 15:10:26 2017
-// Update Count     : 2
-//
-
-#include <assert.h>
-#include <stdarg.h>								// varargs
-#include <stdio.h>								// fprintf
-#include "bits/debug.h"
-
-extern "C" {
-	extern const char * __progname;						// global name of running executable (argv[0])
-
-	#define CFA_ASSERT_FMT "Cforall Assertion error \"%s\" from program \"%s\" in \"%s\" at line %d in file \"%s\""
-
-	// called by macro assert in assert.h
-	void __assert_fail( const char *assertion, const char *file, unsigned int line, const char *function ) {
-		__cfaabi_dbg_bits_print_safe( CFA_ASSERT_FMT ".\n", assertion, __progname, function, line, file );
-		abort();
-	}
-
-	// called by macro assertf
-	void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) {
-		__cfaabi_dbg_bits_acquire();
-		__cfaabi_dbg_bits_print_nolock( CFA_ASSERT_FMT ": ", assertion, __progname, function, line, file );
-
-		va_list args;
-		va_start( args, fmt );
-		__cfaabi_dbg_bits_print_vararg( fmt, args );
-		va_end( args );
-
-		__cfaabi_dbg_bits_print_nolock( "\n" );
-		__cfaabi_dbg_bits_release();
-		abort();
-	}
-}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/bits/algorithms.h
===================================================================
--- src/libcfa/bits/algorithms.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,191 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// bits/algorithms.h -- Builtins for exception handling.
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Oct 30 13:37:34 2017
-// Last Modified By : --
-// Last Modified On : --
-// Update Count     : 0
-//
-
-#pragma once
-
-#ifdef SAFE_SORT
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sort2( T * arr );
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sort3( T * arr );
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sort4( T * arr );
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sort5( T * arr );
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sort6( T * arr );
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } ) static inline void __libcfa_small_sortN( T * arr, size_t dim );
-
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
-static inline void __libcfa_small_sort( T * arr, size_t dim ) {
-	switch( dim ) {
-		case 1 : return;
-		case 2 : __libcfa_small_sort2( arr ); return;
-		case 3 : __libcfa_small_sort3( arr ); return;
-		case 4 : __libcfa_small_sort4( arr ); return;
-		case 5 : __libcfa_small_sort5( arr ); return;
-		case 6 : __libcfa_small_sort6( arr ); return;
-		default: __libcfa_small_sortN( arr, dim ); return;
-	}
-}
-
-#define min(x, y) (y > x ? x : y)
-#define max(x, y) (y > x ? y : x)
-#define SWAP(x,y) { T a = min(arr[x], arr[y]); T b = max(arr[x], arr[y]); arr[x] = a; arr[y] = b;}
-
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
-static inline void __libcfa_small_sort2( T * arr ) {
-	SWAP(0, 1);
-}
-
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
-static inline void __libcfa_small_sort3( T * arr ) {
-	SWAP(1, 2);
-	SWAP(0, 2);
-	SWAP(0, 1);
-}
-
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
-static inline void __libcfa_small_sort4( T * arr ) {
-	SWAP(0, 1);
-	SWAP(2, 3);
-	SWAP(0, 2);
-	SWAP(1, 3);
-	SWAP(1, 2);
-}
-
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
-static inline void __libcfa_small_sort5( T * arr ) {
-	SWAP(0, 1);
-	SWAP(3, 4);
-	SWAP(2, 4);
-	SWAP(2, 3);
-	SWAP(0, 3);
-	SWAP(0, 2);
-	SWAP(1, 4);
-	SWAP(1, 3);
-	SWAP(1, 2);
-}
-
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
-static inline void __libcfa_small_sort6( T * arr ) {
-	SWAP(1, 2);
-	SWAP(4, 5);
-	SWAP(0, 2);
-	SWAP(3, 5);
-	SWAP(0, 1);
-	SWAP(3, 4);
-	SWAP(1, 4);
-	SWAP(0, 3);
-	SWAP(2, 5);
-	SWAP(1, 3);
-	SWAP(2, 4);
-	SWAP(2, 3);
-}
-
-forall( otype T | {  int ?<?( T, T ); int ?>?( T, T ); } )
-static inline void __libcfa_small_sortN( T * arr, size_t dim ) {
-	int i, j;
-	for (i = 1; i < dim; i++) {
-		T tmp = arr[i];
-		for (j = i; j >= 1 && tmp < arr[j-1]; j--) {
-			arr[j] = arr[j-1];
-		}
-		arr[j] = tmp;
-	}
-}
-
-#else
-
-static inline void __libcfa_small_sort2( void* * arr );
-static inline void __libcfa_small_sort3( void* * arr );
-static inline void __libcfa_small_sort4( void* * arr );
-static inline void __libcfa_small_sort5( void* * arr );
-static inline void __libcfa_small_sort6( void* * arr );
-static inline void __libcfa_small_sortN( void* * arr, size_t dim );
-
-forall( dtype T )
-static inline void __libcfa_small_sort( T* * arr, size_t dim ) {
-	switch( dim ) {
-		case 1 : return;
-		case 2 : __libcfa_small_sort2( (void **) arr ); return;
-		case 3 : __libcfa_small_sort3( (void **) arr ); return;
-		case 4 : __libcfa_small_sort4( (void **) arr ); return;
-		case 5 : __libcfa_small_sort5( (void **) arr ); return;
-		case 6 : __libcfa_small_sort6( (void **) arr ); return;
-		default: __libcfa_small_sortN( (void **) arr, dim ); return;
-	}
-}
-
-#define min(x, y) (y > x ? x : y)
-#define max(x, y) (y > x ? y : x)
-#define SWAP(x,y) { void* a = min(arr[x], arr[y]); void* b = max(arr[x], arr[y]); arr[x] = a; arr[y] = b;}
-
-static inline void __libcfa_small_sort2( void* * arr ) {
-	SWAP(0, 1);
-}
-
-static inline void __libcfa_small_sort3( void* * arr ) {
-	SWAP(1, 2);
-	SWAP(0, 2);
-	SWAP(0, 1);
-}
-
-static inline void __libcfa_small_sort4( void* * arr ) {
-	SWAP(0, 1);
-	SWAP(2, 3);
-	SWAP(0, 2);
-	SWAP(1, 3);
-	SWAP(1, 2);
-}
-
-static inline void __libcfa_small_sort5( void* * arr ) {
-	SWAP(0, 1);
-	SWAP(3, 4);
-	SWAP(2, 4);
-	SWAP(2, 3);
-	SWAP(0, 3);
-	SWAP(0, 2);
-	SWAP(1, 4);
-	SWAP(1, 3);
-	SWAP(1, 2);
-}
-
-static inline void __libcfa_small_sort6( void* * arr ) {
-	SWAP(1, 2);
-	SWAP(4, 5);
-	SWAP(0, 2);
-	SWAP(3, 5);
-	SWAP(0, 1);
-	SWAP(3, 4);
-	SWAP(1, 4);
-	SWAP(0, 3);
-	SWAP(2, 5);
-	SWAP(1, 3);
-	SWAP(2, 4);
-	SWAP(2, 3);
-}
-
-static inline void __libcfa_small_sortN( void* * arr, size_t dim ) {
-	int i, j;
-	for (i = 1; i < dim; i++) {
-		void* tmp = arr[i];
-		for (j = i; j >= 1 && tmp < arr[j-1]; j--) {
-			arr[j] = arr[j-1];
-		}
-		arr[j] = tmp;
-	}
-}
-
-#endif
-
-#undef SWAP
-#undef min
-#undef max
Index: c/libcfa/bits/align.h
===================================================================
--- src/libcfa/bits/align.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,62 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// align.h --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Nov 28 12:27:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 23:05:35 2017
-// Update Count     : 2
-//
-// This  library is free  software; you  can redistribute  it and/or  modify it
-// under the terms of the GNU Lesser General Public License as published by the
-// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
-// option) any later version.
-//
-// This library is distributed in the  hope that it will be useful, but WITHOUT
-// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
-// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
-// for more details.
-//
-// You should  have received a  copy of the  GNU Lesser General  Public License
-// along  with this library.
-//
-
-#pragma once
-
-#include <assert.h>
-#include <stdbool.h>
-
-// Minimum size used to align memory boundaries for memory allocations.
-#define libAlign() (sizeof(double))
-
-// Check for power of 2
-static inline bool libPow2( unsigned long int value ) {
-    // clears all bits below value, rounding value down to the next lower multiple of value
-    return (value & (value - 1ul)) == 0ul;
-} // libPow2
-
-
-// Returns value aligned at the floor of align.
-static inline unsigned long int libFloor( unsigned long int value, unsigned long int align ) {
-    assert( libPow2( align ) );
-    // clears all bits above or equal to align, getting (value % align), the phase of value with regards to align
-    return value & -align;
-} // libFloor
-
-
-// Returns value aligned at the ceiling of align.
-
-static inline unsigned long int libCeiling( unsigned long int value, unsigned long int align ) {
-    assert( libPow2( align ) );
-    // "negate, round down, negate" is the same as round up
-    return -libFloor( -value, align );
-} // uCeiling
-
-// Local Variables: //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/bits/containers.h
===================================================================
--- src/libcfa/bits/containers.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,282 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// bits/containers.h -- Intrusive generic containers.h
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Oct 31 16:38:50 2017
-// Last Modified By : --
-// Last Modified On : --
-// Update Count     : 0
-
-#pragma once
-
-#include "bits/align.h"
-#include "bits/defs.h"
-
-//-----------------------------------------------------------------------------
-// Array
-//-----------------------------------------------------------------------------
-
-#ifdef __cforall
-	forall(dtype T)
-#else
-	#define T void
-#endif
-struct __small_array {
-	T *           data;
-	__lock_size_t size;
-};
-#undef T
-
-#ifdef __cforall
-	#define __small_array_t(T) __small_array(T)
-#else
-	#define __small_array_t(T) struct __small_array
-#endif
-
-#ifdef __cforall
-	// forall(otype T | sized(T))
-	// static inline void ?{}(__small_array(T) & this) {}
-
-	forall(dtype T | sized(T))
-	static inline T& ?[?]( __small_array(T) & this, __lock_size_t idx) {
-		return ((typeof(this.data))this.data)[idx];
-	}
-
-	forall(dtype T | sized(T))
-	static inline T& ?[?]( const __small_array(T) & this, __lock_size_t idx) {
-		return ((typeof(this.data))this.data)[idx];
-	}
-
-	forall(dtype T | sized(T))
-	static inline T* begin( const __small_array(T) & this ) {
-		return ((typeof(this.data))this.data);
-	}
-
-	forall(dtype T | sized(T))
-	static inline T* end( const __small_array(T) & this ) {
-		return ((typeof(this.data))this.data) + this.size;
-	}
-#endif
-
-//-----------------------------------------------------------------------------
-// Node Base
-//-----------------------------------------------------------------------------
-
-#ifdef __cforall
-	trait is_node(dtype T) {
-		T*& get_next( T& );
-	};
-#endif
-
-//-----------------------------------------------------------------------------
-// Stack
-//-----------------------------------------------------------------------------
-#ifdef __cforall
-	forall(dtype TYPE | is_node(TYPE))
-	#define T TYPE
-#else
-	#define T void
-#endif
-struct __stack {
-	T * top;
-};
-#undef T
-
-#ifdef __cforall
-#define __stack_t(T) __stack(T)
-#else
-#define __stack_t(T) struct __stack
-#endif
-
-#ifdef __cforall
-	forall(dtype T | is_node(T))
-	static inline void ?{}( __stack(T) & this ) {
-		(this.top){ NULL };
-	}
-
-	forall(dtype T | is_node(T) | sized(T))
-	static inline void push( __stack(T) & this, T * val ) {
-		verify( !get_next( *val ) );
-		get_next( *val ) = this.top;
-		this.top = val;
-	}
-
-	forall(dtype T | is_node(T) | sized(T))
-	static inline T * pop( __stack(T) & this ) {
-		T * top = this.top;
-		if( top ) {
-			this.top = get_next( *top );
-			get_next( *top ) = NULL;
-		}
-		return top;
-	}
-#endif
-
-//-----------------------------------------------------------------------------
-// Queue
-//-----------------------------------------------------------------------------
-#ifdef __cforall
-	forall(dtype TYPE | is_node(TYPE))
-	#define T TYPE
-#else
-	#define T void
-#endif
-struct __queue {
-	T * head;
-	T ** tail;
-};
-#undef T
-
-#ifdef __cforall
-#define __queue_t(T) __queue(T)
-#else
-#define __queue_t(T) struct __queue
-#endif
-
-#ifdef __cforall
-
-	forall(dtype T | is_node(T))
-	static inline void ?{}( __queue(T) & this ) with( this ) {
-		head{ NULL };
-		tail{ &head };
-	}
-
-	forall(dtype T | is_node(T) | sized(T))
-	static inline void append( __queue(T) & this, T * val ) with( this ) {
-		verify(tail != NULL);
-		*tail = val;
-		tail = &get_next( *val );
-	}
-
-	forall(dtype T | is_node(T) | sized(T))
-	static inline T * pop_head( __queue(T) & this ) {
-		T * head = this.head;
-		if( head ) {
-			this.head = get_next( *head );
-			if( !get_next( *head ) ) {
-				this.tail = &this.head;
-			}
-			get_next( *head ) = NULL;
-		}
-		return head;
-	}
-
-	forall(dtype T | is_node(T) | sized(T))
-	static inline T * remove( __queue(T) & this, T ** it ) with( this ) {
-		T * val = *it;
-		verify( val );
-
-		(*it) = get_next( *val );
-
-		if( tail == &get_next( *val ) ) {
-			tail = it;
-		}
-
-		get_next( *val ) = NULL;
-
-		verify( (head == NULL) == (&head == tail) );
-		verify( *tail == NULL );
-		return val;
-	}
-
-	forall(dtype T | is_node(T))
-	static inline bool ?!=?( __queue(T) & this, zero_t zero ) {
-		return this.head != 0;
-	}
-#endif
-
-
-//-----------------------------------------------------------------------------
-// Doubly Linked List
-//-----------------------------------------------------------------------------
-#ifdef __cforall
-	forall(dtype TYPE | sized(TYPE))
-	#define T TYPE
-	#define __getter_t * [T * & next, T * & prev] ( T & )
-#else
-	typedef void (*__generit_c_getter_t)();
-	#define T void
-	#define __getter_t __generit_c_getter_t
-#endif
-struct __dllist {
-	T * head;
-	__getter_t __get;
-};
-#undef T
-#undef __getter_t
-
-#ifdef __cforall
-#define __dllist_t(T) __dllist(T)
-#else
-#define __dllist_t(T) struct __dllist
-#endif
-
-#ifdef __cforall
-
-	forall(dtype T | sized(T))
-	static inline [void] ?{}( __dllist(T) & this, * [T * & next, T * & prev] ( T & ) __get ) {
-		this.head{ NULL };
-		this.__get = __get;
-	}
-
-	#define next 0
-	#define prev 1
-	forall(dtype T | sized(T))
-	static inline void push_front( __dllist(T) & this, T & node ) with( this ) {
-		verify(__get);
-		if ( head ) {
-			__get( node ).next = head;
-			__get( node ).prev = __get( *head ).prev;
-			// inserted node must be consistent before it is seen
-			// prevent code movement across barrier
-			asm( "" : : : "memory" );
-			__get( *head ).prev = &node;
-			T & _prev = *__get( node ).prev;
-			__get( _prev ).next = &node;
-		}
-		else {
-			__get( node ).next = &node;
-			__get( node ).prev = &node;
-		}
-
-		// prevent code movement across barrier
-		asm( "" : : : "memory" );
-		head = &node;
-	}
-
-	forall(dtype T | sized(T))
-	static inline void remove( __dllist(T) & this, T & node ) with( this ) {
-		verify(__get);
-		if ( &node == head ) {
-			if ( __get( *head ).next == head ) {
-				head = NULL;
-			}
-			else {
-				head = __get( *head ).next;
-			}
-		}
-		__get( *__get( node ).next ).prev = __get( node ).prev;
-		__get( *__get( node ).prev ).next = __get( node ).next;
-		__get( node ).next = NULL;
-		__get( node ).prev = NULL;
-	}
-
-	forall(dtype T | sized(T))
-	static inline bool ?!=?( __dllist(T) & this, zero_t zero ) {
-		return this.head != 0;
-	}
-	#undef next
-	#undef prev
-#endif
-
-//-----------------------------------------------------------------------------
-// Tools
-//-----------------------------------------------------------------------------
-#ifdef __cforall
-
-#endif
Index: c/libcfa/bits/debug.c
===================================================================
--- src/libcfa/bits/debug.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,88 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// debug.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Thu Mar 30 12:30:01 2017
-// Last Modified By :
-// Last Modified On :
-// Update Count     : 1
-//
-
-extern "C" {
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <unistd.h>
-}
-
-enum { buffer_size = 512 };
-static char buffer[ buffer_size ];
-
-extern "C" {
-
-	void __cfaabi_dbg_bits_write( const char *in_buffer, int len ) {
-		// ensure all data is written
-		for ( int count = 0, retcode; count < len; count += retcode ) {
-			in_buffer += count;
-
-			for ( ;; ) {
-				retcode = write( STDERR_FILENO, in_buffer, len - count );
-
-				// not a timer interrupt ?
-				if ( retcode != -1 || errno != EINTR ) break;
-			}
-
-			if ( retcode == -1 ) _exit( EXIT_FAILURE );
-		}
-	}
-
-	void __cfaabi_dbg_bits_acquire() __attribute__((__weak__)) {}
-	void __cfaabi_dbg_bits_release() __attribute__((__weak__)) {}
-
-	void __cfaabi_dbg_bits_print_safe  ( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) )) {
-		va_list args;
-
-		va_start( args, fmt );
-		__cfaabi_dbg_bits_acquire();
-
-		int len = vsnprintf( buffer, buffer_size, fmt, args );
-		__cfaabi_dbg_bits_write( buffer, len );
-
-		__cfaabi_dbg_bits_release();
-		va_end( args );
-	}
-
-	void __cfaabi_dbg_bits_print_nolock( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) )) {
-		va_list args;
-
-		va_start( args, fmt );
-
-		int len = vsnprintf( buffer, buffer_size, fmt, args );
-		__cfaabi_dbg_bits_write( buffer, len );
-
-		va_end( args );
-	}
-
-	void __cfaabi_dbg_bits_print_vararg( const char fmt[], va_list args ) {
-		int len = vsnprintf( buffer, buffer_size, fmt, args );
-		__cfaabi_dbg_bits_write( buffer, len );
-	}
-
-	void __cfaabi_dbg_bits_print_buffer( char in_buffer[], int in_buffer_size, const char fmt[], ... ) __attribute__(( format(printf, 3, 4) )) {
-		va_list args;
-
-		va_start( args, fmt );
-
-		int len = vsnprintf( in_buffer, in_buffer_size, fmt, args );
-		__cfaabi_dbg_bits_write( in_buffer, len );
-
-		va_end( args );
-	}
-}
Index: c/libcfa/bits/debug.h
===================================================================
--- src/libcfa/bits/debug.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,74 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// debug.h --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Nov 28 12:27:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  8 12:35:19 2018
-// Update Count     : 2
-//
-
-#pragma once
-
-#ifdef __CFA_DEBUG__
-	#define __cfaabi_dbg_debug_do(...) __VA_ARGS__
-	#define __cfaabi_dbg_no_debug_do(...)
-	#define __cfaabi_dbg_ctx __PRETTY_FUNCTION__
-	#define __cfaabi_dbg_ctx2 , __PRETTY_FUNCTION__
-	#define __cfaabi_dbg_ctx_param const char * caller
-	#define __cfaabi_dbg_ctx_param2 , const char * caller
-#else
-	#define __cfaabi_dbg_debug_do(...)
-	#define __cfaabi_dbg_no_debug_do(...) __VA_ARGS__
-	#define __cfaabi_dbg_ctx
-	#define __cfaabi_dbg_ctx2
-	#define __cfaabi_dbg_ctx_param
-	#define __cfaabi_dbg_ctx_param2
-#endif
-
-#ifdef __cforall
-extern "C" {
-#endif
-	#include <stdarg.h>
-	#include <stdio.h>
-
-      extern void __cfaabi_dbg_bits_write( const char *buffer, int len );
-      extern void __cfaabi_dbg_bits_acquire();
-      extern void __cfaabi_dbg_bits_release();
-      extern void __cfaabi_dbg_bits_print_safe  ( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) ));
-      extern void __cfaabi_dbg_bits_print_nolock( const char fmt[], ... ) __attribute__(( format(printf, 1, 2) ));
-      extern void __cfaabi_dbg_bits_print_vararg( const char fmt[], va_list arg );
-      extern void __cfaabi_dbg_bits_print_buffer( char buffer[], int buffer_size, const char fmt[], ... ) __attribute__(( format(printf, 3, 4) ));
-#ifdef __cforall
-}
-#endif
-
-#ifdef __CFA_DEBUG_PRINT__
-	#define __cfaabi_dbg_write( buffer, len )         __cfaabi_dbg_bits_write( buffer, len )
-	#define __cfaabi_dbg_acquire()                    __cfaabi_dbg_bits_acquire()
-	#define __cfaabi_dbg_release()                    __cfaabi_dbg_bits_release()
-	#define __cfaabi_dbg_print_safe(...)              __cfaabi_dbg_bits_print_safe   (__VA_ARGS__)
-	#define __cfaabi_dbg_print_nolock(...)            __cfaabi_dbg_bits_print_nolock (__VA_ARGS__)
-	#define __cfaabi_dbg_print_buffer(...)            __cfaabi_dbg_bits_print_buffer (__VA_ARGS__)
-	#define __cfaabi_dbg_print_buffer_decl(...)       char __dbg_text[256]; int __dbg_len = snprintf( __dbg_text, 256, __VA_ARGS__ ); __cfaabi_dbg_bits_write( __dbg_text, __dbg_len );
-	#define __cfaabi_dbg_print_buffer_local(...)      __dbg_len = snprintf( __dbg_text, 256, __VA_ARGS__ ); __cfaabi_dbg_bits_write( __dbg_text, __dbg_len );
-#else
-	#define __cfaabi_dbg_write(...)               ((void)0)
-	#define __cfaabi_dbg_acquire()                ((void)0)
-	#define __cfaabi_dbg_release()                ((void)0)
-	#define __cfaabi_dbg_print_safe(...)          ((void)0)
-	#define __cfaabi_dbg_print_nolock(...)        ((void)0)
-	#define __cfaabi_dbg_print_buffer(...)        ((void)0)
-	#define __cfaabi_dbg_print_buffer_decl(...)   ((void)0)
-	#define __cfaabi_dbg_print_buffer_local(...)  ((void)0)
-#endif
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/bits/defs.h
===================================================================
--- src/libcfa/bits/defs.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,42 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// defs.h --
-//
-// Author           : Thierry Delisle
-// Created On       : Thu Nov  9 13:24:10 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  8 16:22:41 2018
-// Update Count     : 8
-//
-
-#pragma once
-
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdint.h>
-
-#define likely(x)   __builtin_expect(!!(x), 1)
-#define unlikely(x) __builtin_expect(!!(x), 0)
-#define thread_local _Thread_local
-
-typedef void (*fptr_t)();
-typedef int_fast16_t __lock_size_t;
-
-#ifdef __cforall
-#define __cfa_anonymous_object(x) inline struct x
-#else
-#define __cfa_anonymous_object(x) x __cfa_anonymous_object
-#endif
-
-#ifdef __cforall
-void abort ( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
-extern "C" {
-#endif
-void __cabi_abort( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
-#ifdef __cforall
-}
-#endif
Index: c/libcfa/bits/locks.h
===================================================================
--- src/libcfa/bits/locks.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,165 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// bits/locks.h -- Fast internal locks.
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Oct 31 15:14:38 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 30 18:18:13 2018
-// Update Count     : 9
-//
-
-#pragma once
-
-#include "bits/debug.h"
-#include "bits/defs.h"
-#include <assert.h>
-
-#ifdef __cforall
-	extern "C" {
-		#include <pthread.h>
-	}
-#endif
-
-// pause to prevent excess processor bus usage
-#if defined( __sparc )
-	#define Pause() __asm__ __volatile__ ( "rd %ccr,%g0" )
-#elif defined( __i386 ) || defined( __x86_64 )
-	#define Pause() __asm__ __volatile__ ( "pause" : : : )
-#elif defined( __ARM_ARCH )
-	#define Pause() __asm__ __volatile__ ( "nop" : : : )
-#else
-	#error unsupported architecture
-#endif
-
-#if defined( __i386 ) || defined( __x86_64 ) || defined( __ARM_ARCH )
-	// Intel recommendation
-	#define __ALIGN__ __attribute__(( aligned (128) ))
-#elif defined( __sparc )
-	#define __ALIGN__ CALIGN
-#else
-	#error unsupported architecture
-#endif
-
-struct __spinlock_t {
-	// Wrap in struct to prevent false sharing with debug info
-	struct {
-		// Align lock on 128-bit boundary
-		__ALIGN__ volatile _Bool lock;
-	};
-	#ifdef __CFA_DEBUG__
-		// previous function to acquire the lock
-		const char * prev_name;
-		// previous thread to acquire the lock
-		void* prev_thrd;
-	#endif
-} __ALIGN__;
-
-#ifdef __cforall
-	extern "C" {
-		extern void disable_interrupts();
-		extern void enable_interrupts_noPoll();
-	}
-
-	extern void yield( unsigned int );
-
-	static inline void ?{}( __spinlock_t & this ) {
-		this.lock = 0;
-	}
-
-
-	#ifdef __CFA_DEBUG__
-		void __cfaabi_dbg_record(__spinlock_t & this, const char * prev_name);
-	#else
-		#define __cfaabi_dbg_record(x, y)
-	#endif
-
-	// Lock the spinlock, return false if already acquired
-	static inline _Bool try_lock  ( __spinlock_t & this __cfaabi_dbg_ctx_param2 ) {
-		_Bool result = (this.lock == 0) && (__atomic_test_and_set( &this.lock, __ATOMIC_ACQUIRE ) == 0);
-		if( result ) {
-			disable_interrupts();
-			__cfaabi_dbg_record( this, caller );
-		}
-		return result;
-	}
-
-	// Lock the spinlock, spin if already acquired
-	static inline void lock( __spinlock_t & this __cfaabi_dbg_ctx_param2 ) {
-		#ifndef NOEXPBACK
-			enum { SPIN_START = 4, SPIN_END = 64 * 1024, };
-			unsigned int spin = SPIN_START;
-		#endif
-
-		for ( unsigned int i = 1;; i += 1 ) {
-			if ( (this.lock == 0) && (__atomic_test_and_set( &this.lock, __ATOMIC_ACQUIRE ) == 0) ) break;
-			#ifndef NOEXPBACK
-				// exponential spin
-				for ( volatile unsigned int s = 0; s < spin; s += 1 ) Pause();
-
-				// slowly increase by powers of 2
-				if ( i % 64 == 0 ) spin += spin;
-
-				// prevent overflow
-				if ( spin > SPIN_END ) spin = SPIN_START;
-			#else
-				Pause();
-			#endif
-		}
-		disable_interrupts();
-		__cfaabi_dbg_record( this, caller );
-	}
-
-	static inline void unlock( __spinlock_t & this ) {
-		enable_interrupts_noPoll();
-		__atomic_clear( &this.lock, __ATOMIC_RELEASE );
-	}
-
-
-	#ifdef __CFA_WITH_VERIFY__
-		extern bool __cfaabi_dbg_in_kernel();
-	#endif
-
-	struct __bin_sem_t {
-		bool     		signaled;
-		pthread_mutex_t 	lock;
-		pthread_cond_t  	cond;
-	};
-
-	static inline void ?{}(__bin_sem_t & this) with( this ) {
-		signaled = false;
-		pthread_mutex_init(&lock, NULL);
-		pthread_cond_init (&cond, NULL);
-	}
-
-	static inline void ^?{}(__bin_sem_t & this) with( this ) {
-		pthread_mutex_destroy(&lock);
-		pthread_cond_destroy (&cond);
-	}
-
-	static inline void wait(__bin_sem_t & this) with( this ) {
-		verify(__cfaabi_dbg_in_kernel());
-		pthread_mutex_lock(&lock);
-			if(!signaled) {   // this must be a loop, not if!
-				pthread_cond_wait(&cond, &lock);
-			}
-			signaled = false;
-		pthread_mutex_unlock(&lock);
-	}
-
-	static inline void post(__bin_sem_t & this) with( this ) {
-		verify(__cfaabi_dbg_in_kernel());
-
-		pthread_mutex_lock(&lock);
-			bool needs_signal = !signaled;
-			signaled = true;
-		pthread_mutex_unlock(&lock);
-
-		if (needs_signal)
-			pthread_cond_signal(&cond);
-	}
-#endif
Index: c/libcfa/bits/signal.h
===================================================================
--- src/libcfa/bits/signal.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,65 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// bits/signal.h -- Helper functions and defines to use signals
-//
-// Author           : Thierry Delisle
-// Created On       : Thu Jan 25 16:06:29 2018
-// Last Modified By :
-// Last Modified On :
-// Update Count     :
-//
-
-#pragma once
-
-#include "bits/debug.h"
-#include "bits/defs.h"
-
-extern "C" {
-#include <errno.h>
-#define __USE_GNU
-#include <signal.h>
-#undef __USE_GNU
-#include <stdlib.h>
-#include <string.h>
-}
-
-// Short hands for signal context information
-#define __CFA_SIGCXT__ ucontext_t *
-#define __CFA_SIGPARMS__ __attribute__((unused)) int sig, __attribute__((unused)) siginfo_t *sfp, __attribute__((unused)) __CFA_SIGCXT__ cxt
-
-// Sigaction wrapper : register an signal handler
-static void __cfaabi_sigaction( int sig, void (*handler)(__CFA_SIGPARMS__), int flags ) {
-	struct sigaction act;
-
-	act.sa_sigaction = (void (*)(int, siginfo_t *, void *))handler;
-	act.sa_flags = flags;
-
-	if ( sigaction( sig, &act, NULL ) == -1 ) {
-		__cfaabi_dbg_print_buffer_decl(
-			" __cfaabi_sigaction( sig:%d, handler:%p, flags:%d ), problem installing signal handler, error(%d) %s.\n",
-			sig, handler, flags, errno, strerror( errno )
-		);
-		_exit( EXIT_FAILURE );
-	}
-}
-
-// Sigaction wrapper : restore default handler
-static void __cfaabi_sigdefault( int sig ) {
-	struct sigaction act;
-
-	act.sa_handler = SIG_DFL;
-	act.sa_flags = 0;
-	sigemptyset( &act.sa_mask );
-
-	if ( sigaction( sig, &act, NULL ) == -1 ) {
-		__cfaabi_dbg_print_buffer_decl(
-			" __cfaabi_sigdefault( sig:%d ), problem reseting signal handler, error(%d) %s.\n",
-			sig, errno, strerror( errno )
-		);
-		_exit( EXIT_FAILURE );
-	}
-}
Index: c/libcfa/clock
===================================================================
--- src/libcfa/clock	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,96 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// clock -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Thu Apr 12 14:36:06 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jul  2 21:40:01 2018
-// Update Count     : 7
-// 
-
-#include <time>
-
-
-//######################### C time #########################
-
-static inline char * ctime( time_t tp ) { char * buf = ctime( &tp ); buf[24] = '\0'; return buf; }
-static inline char * ctime_r( time_t tp, char * buf ) { ctime_r( &tp, buf ); buf[24] = '\0'; return buf; }
-static inline tm * gmtime( time_t tp ) { return gmtime( &tp ); }
-static inline tm * gmtime_r( time_t tp, tm * result ) { return gmtime_r( &tp, result ); }
-static inline tm * localtime( time_t tp ) { return localtime( &tp ); }
-static inline tm * localtime_r( time_t tp, tm * result ) { return localtime_r( &tp, result ); }
-
-
-//######################### Clock #########################
-
-struct Clock {											// private
-	Duration offset;									// for virtual clock: contains offset from real-time
-	int clocktype;										// implementation only -1 (virtual), CLOCK_REALTIME
-};
-
-static inline {
-	void resetClock( Clock & clk ) with( clk ) {
-		clocktype = CLOCK_REALTIME_COARSE;
-	} // Clock::resetClock
-
-	void resetClock( Clock & clk, Duration adj ) with( clk ) {
-		clocktype = -1;
-		offset = adj + __timezone`s;					// timezone (global) is (UTC - local time) in seconds
-	} // resetClock
-
-	void ?{}( Clock & clk ) { resetClock( clk ); }
-	void ?{}( Clock & clk, Duration adj ) { resetClock( clk, adj ); }
-
-	Duration getResNsec() {
-		struct timespec res;
-		clock_getres( CLOCK_REALTIME, &res );
-		return ((int64_t)res.tv_sec * TIMEGRAN + res.tv_nsec)`ns;
-	} // getRes
-
-	Duration getRes() {
-		struct timespec res;
-		clock_getres( CLOCK_REALTIME_COARSE, &res );
-		return ((int64_t)res.tv_sec * TIMEGRAN + res.tv_nsec)`ns;
-	} // getRes
-
-	Time getTimeNsec() {								// with nanoseconds
-		timespec curr;
-		clock_gettime( CLOCK_REALTIME, &curr );
-		return (Time){ curr };
-	} // getTime
-
-	Time getTime() {									// without nanoseconds
-		timespec curr;
-		clock_gettime( CLOCK_REALTIME_COARSE, &curr );
-		curr.tv_nsec = 0;
-		return (Time){ curr };
-	} // getTime
-
-	Time getTime( Clock & clk ) with( clk ) {
-		return getTime() + offset;
-	} // getTime
-
-	Time ?()( Clock & clk ) with( clk ) {				// alternative syntax
-		return getTime() + offset;
-	} // getTime
-
-	timeval getTime( Clock & clk ) {
-		return (timeval){ clk() };
-	} // getTime
-
-	tm getTime( Clock & clk ) with( clk ) {
-		tm ret;
-		localtime_r( getTime( clk ).tv_sec, &ret );
-		return ret;
-	} // getTime
-} // distribution
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/common
===================================================================
--- src/libcfa/common	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,85 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// common -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Jul 11 17:54:36 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 12 08:02:18 2018
-// Update Count     : 5
-// 
-
-#pragma once
-
-//---------------------------------------
-
-[ int, int ] div( int num, int denom );
-[ long int, long int ] div( long int num, long int denom );
-[ long long int, long long int ] div( long long int num, long long int denom );
-forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
-[ T, T ] div( T num, T demon );
-
-//---------------------------------------
-
-extern "C" {
-	int abs( int );										// stdlib.h
-	long int labs( long int );
-	long long int llabs( long long int );
-} // extern "C"
-
-static inline {
-	unsigned char abs( signed char v ) { return abs( (int)v ); }
-	// use default C routine for int
-	unsigned long int abs( long int v ) { return labs( v ); }
-	unsigned long long int abs( long long int v ) { return llabs( v ); }
-} // distribution
-
-extern "C" {
-	double fabs( double );								// math.h
-	float fabsf( float );
-	long double fabsl( long double );
-} // extern "C"
-static inline {
-	float abs( float x ) { return fabsf( x ); }
-	double abs( double x ) { return fabs( x ); }
-	long double abs( long double x ) { return fabsl( x ); }
-} // distribution
-
-extern "C" {
-	double cabs( double _Complex );						// complex.h
-	float cabsf( float _Complex );
-	long double cabsl( long double _Complex );
-} // extern "C"
-static inline {
-	float abs( float _Complex x ) { return cabsf( x ); }
-	double abs( double _Complex x ) { return cabs( x ); }
-	long double abs( long double _Complex x ) { return cabsl( x ); }
-} // distribution
-
-forall( otype T | { void ?{}( T &, zero_t ); int ?<?( T, T ); T -?( T ); } )
-T abs( T );
-
-//---------------------------------------
-
-static inline {
-	forall( otype T | { int ?<?( T, T ); } )
-	T min( T t1, T t2 ) { return t1 < t2 ? t1 : t2; }
-
-	forall( otype T | { int ?>?( T, T ); } )
-	T max( T t1, T t2 ) { return t1 > t2 ? t1 : t2; }
-
-	forall( otype T | { T min( T, T ); T max( T, T ); } )
-	T clamp( T value, T min_val, T max_val ) { return max( min_val, min( value, max_val ) ); }
-
-	forall( otype T )
-	void swap( T & v1, T & v2 ) { T temp = v1; v1 = v2; v2 = temp; }
-} // distribution
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/common.c
===================================================================
--- src/libcfa/common.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,31 +1,0 @@
-//                               -*- Mode: C -*- 
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// common.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Thu Jul 12 08:02:29 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 12 08:38:47 2018
-// Update Count     : 3
-// 
-
-#include "common"
-#include <stdlib.h>					// div_t, *div
-
-//---------------------------------------
-
-[ int, int ] div( int num, int denom ) { div_t qr = div( num, denom ); return [ qr.quot, qr.rem ]; }
-[ long int, long int ] div( long int num, long int denom ) { ldiv_t qr = ldiv( num, denom ); return [ qr.quot, qr.rem ]; }
-[ long long int, long long int ] div( long long int num, long long int denom ) { lldiv_t qr = lldiv( num, denom ); return [ qr.quot, qr.rem ]; }
-forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
-[ T, T ] div( T num, T denom ) { return [ num / denom, num % denom ]; }
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/CtxSwitch-armv7l.S
===================================================================
--- src/libcfa/concurrency/CtxSwitch-armv7l.S	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,62 +1,0 @@
-	@ 32 bit ARM context switch
-	@ This function assumes that r9 has no special meaning on the platform it's
-	@ being built on.
-	@ If r9 is special, uncomment the following line and it will be left alone
-
-	@ #define R9_SPECIAL
-
-	#define PTR_BYTE        4
-	#define SP_OFFSET       ( 0 * PTR_BYTE )
-	#define FP_OFFSET       ( 1 * PTR_BYTE )
-	#define PC_OFFSET       ( 2 * PTR_BYTE )
-
-	.text
-	.align  2
-	.global CtxSwitch
-	.type   CtxSwitch, %function
-
-CtxSwitch:
-	@ save callee-saved registers: r4-r8, r10, r11, r13(sp) (plus r9 depending on platform specification)
-	@ I've seen reference to 31 registers on 64-bit, if this is the case, more need to be saved
-	@ save thread state registers: r14(lr)
-	@ r12(ip) is intra-procedure-call scratch register, does not need saving between function calls
-
-	#ifdef R9_SPECIAL
-	stmfd r13!, {r4-r8,r10,r11,r14}
-	#else
-	stmfd r13!, {r4-r11,r14}
-	#endif // R9_SPECIAL
-
-	@ save floating point registers: s16-s31
-	vstmdb r13!, {s16-s31}
-
-	@ save frame pointer and stack pointer to outgoing datastructure
-	str sp, [r0, #SP_OFFSET]
-	str fp, [r0, #FP_OFFSET]
-
-	@ restore frame pointer and stack pointer from incoming datastructure
-	ldr fp, [r1, #FP_OFFSET]
-	ldr sp, [r1, #SP_OFFSET]
-
-	@ restore floating point registers: s16-s31
-	vldm r13!, {s16-s31}
-	@ restore r14(lr)
-	@ restore 64-bit extra registers?
-	@ restore callee-saved registers: r4-r8, r10, r11, r13
-
-	#ifdef R9_SPECIAL
-	ldmfd r13!, {r4-r8,r10,r11,r15}
-	#else
-	ldmfd r13!, {r4-r11,r14}    @ loading r14 back into r15 returns
-
-	mov r15, r14
-	#endif // R9_SPECIAL
-	
-	.text
-	.align  2
-	.global CtxInvokeStub
-	.type   CtxInvokeStub, %function
-
-CtxInvokeStub:
-        ldmfd r13!, {r0-r1}
-	mov r15, r1
Index: c/libcfa/concurrency/CtxSwitch-i386.S
===================================================================
--- src/libcfa/concurrency/CtxSwitch-i386.S	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,102 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// CtxSwitch-i386.S --
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Dec 6 12:27:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:29:25 2017
-// Update Count     : 1
-//
-// This  library is free  software; you  can redistribute  it and/or  modify it
-// under the terms of the GNU Lesser General Public License as published by the
-// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
-// option) any later version.
-//
-// This library is distributed in the  hope that it will be useful, but WITHOUT
-// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
-// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
-// for more details.
-//
-// You should  have received a  copy of the  GNU Lesser General  Public License
-// along  with this library.
-//
-
-// This context switch routine depends on the fact that the stack of a new
-// thread has been set up to look like the thread has saved its context in
-// the normal manner.
-//
-// void CtxSwitch( machine_context *from, machine_context *to );
-
-// Offsets in the context structure. This needs to be synchronized with the
-// high level code a little better.
-
-#define PTR_BYTE	4
-#define SP_OFFSET	( 0 * PTR_BYTE )
-#define FP_OFFSET	( 1 * PTR_BYTE )
-#define PC_OFFSET	( 2 * PTR_BYTE )
-
-.text
-	.align 2
-.globl	CtxSwitch
-CtxSwitch:
-
-	// Copy the "from" context argument from the stack to register eax
-	// Return address is at 0(%esp), with parameters following
-
-	movl 4(%esp),%eax
-
-	// Save floating & SSE control words on the stack.
-
-        sub    $8,%esp
-        stmxcsr 0(%esp)         // 4 bytes
-        fnstcw  4(%esp)         // 2 bytes
-
-	// Save volatile registers on the stack.
-
-	pushl %ebx
-	pushl %edi
-	pushl %esi
-
-	// Save old context in the "from" area.
-
-	movl %esp,SP_OFFSET(%eax)
-	movl %ebp,FP_OFFSET(%eax)
-//	movl 4(%ebp),%ebx	// save previous eip for debugger
-//	movl %ebx,PC_OFFSET(%eax)
-
-	// Copy the "to" context argument from the stack to register eax
-	// Having pushed three words (= 12 bytes) on the stack, the
-	// argument is now at 8 + 12 = 20(%esp)
-
-	movl 28(%esp),%eax
-
-	// Load new context from the "to" area.
-
-	movl SP_OFFSET(%eax),%esp
-	movl FP_OFFSET(%eax),%ebp
-
-	// Load volatile registers from the stack.
-
-	popl %esi
-	popl %edi
-	popl %ebx
-
-	// Load floating & SSE control words from the stack.
-
-        fldcw   4(%esp)
-        ldmxcsr 0(%esp)
-        add    $8,%esp
-
-	// Return to thread.
-
-	ret
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/CtxSwitch-i686.S
===================================================================
--- src/libcfa/concurrency/CtxSwitch-i686.S	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-CtxSwitch-i386.S
Index: c/libcfa/concurrency/CtxSwitch-x86_64.S
===================================================================
--- src/libcfa/concurrency/CtxSwitch-x86_64.S	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,100 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// CtxSwitch-x86_64.S --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Nov 28 12:27:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:28:11 2017
-// Update Count     : 1
-//
-// This  library is free  software; you  can redistribute  it and/or  modify it
-// under the terms of the GNU Lesser General Public License as published by the
-// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
-// option) any later version.
-//
-// This library is distributed in the  hope that it will be useful, but WITHOUT
-// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
-// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
-// for more details.
-//
-// You should  have received a  copy of the  GNU Lesser General  Public License
-// along  with this library.
-//
-
-// This context switch routine depends on the fact that the stack of a new
-// thread has been set up to look like the thread has saved its context in
-// the normal manner.
-//
-// void CtxSwitch( machine_context *from, machine_context *to );
-
-// Offsets in the context structure. This needs to be synchronized with the
-// high level code a little better.
-
-#define PTR_BYTE	8
-#define SP_OFFSET	( 0 * PTR_BYTE )
-#define FP_OFFSET	( 1 * PTR_BYTE )
-#define PC_OFFSET	( 2 * PTR_BYTE )
-
-.text
-	.align 2
-.globl	CtxSwitch
-CtxSwitch:
-
-	// Save floating & SSE control words on the stack.
-
-	subq   $8,%rsp
-	stmxcsr 0(%rsp)         // 4 bytes
-	fnstcw  4(%rsp)         // 2 bytes
-
-	// Save volatile registers on the stack.
-
-	pushq %r15
-	pushq %r14
-	pushq %r13
-	pushq %r12
-	pushq %rbx
-
-	// Save old context in the "from" area.
-
-	movq %rsp,SP_OFFSET(%rdi)
-	movq %rbp,FP_OFFSET(%rdi)
-
-	// Load new context from the "to" area.
-
-	movq SP_OFFSET(%rsi),%rsp
-	movq FP_OFFSET(%rsi),%rbp
-
-	// Load volatile registers from the stack.
-
-	popq %rbx
-	popq %r12
-	popq %r13
-	popq %r14
-	popq %r15
-
-	// Load floating & SSE control words from the stack.
-
-	fldcw   4(%rsp)
-	ldmxcsr 0(%rsp)
-	addq   $8,%rsp
-
-	// Return to thread.
-
-	ret
-
-.text
-	.align 2
-.globl	CtxInvokeStub
-CtxInvokeStub:
-	movq %rbx, %rdi
-	jmp *%r12
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/alarm.c
===================================================================
--- src/libcfa/concurrency/alarm.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,179 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// alarm.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Fri Jun 2 11:31:25 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri May 25 06:25:47 2018
-// Update Count     : 67
-//
-
-extern "C" {
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/time.h>
-}
-
-#include "alarm.h"
-#include "kernel_private.h"
-#include "preemption.h"
-
-//=============================================================================================
-// Clock logic
-//=============================================================================================
-
-Time __kernel_get_time() {
-	timespec curr;
-	clock_gettime( CLOCK_MONOTONIC_RAW, &curr );		// CLOCK_REALTIME
-	return (Time){ curr };
-}
-
-void __kernel_set_timer( Duration alarm ) {
-	verifyf(alarm >= 1`us || alarm == 0, "Setting timer to < 1us (%jins)", alarm.tv);
-	setitimer( ITIMER_REAL, &(itimerval){ alarm }, NULL );
-}
-
-//=============================================================================================
-// Alarm logic
-//=============================================================================================
-
-void ?{}( alarm_node_t & this, thread_desc * thrd, Time alarm, Duration period ) with( this ) {
-	this.thrd = thrd;
-	this.alarm = alarm;
-	this.period = period;
-	next = 0;
-	set = false;
-	kernel_alarm = false;
-}
-
-void ?{}( alarm_node_t & this, processor   * proc, Time alarm, Duration period ) with( this ) {
-	this.proc = proc;
-	this.alarm = alarm;
-	this.period = period;
-	next = 0;
-	set = false;
-	kernel_alarm = true;
-}
-
-void ^?{}( alarm_node_t & this ) {
-	if( this.set ) {
-		unregister_self( &this );
-	}
-}
-
-#if !defined(NDEBUG) && (defined(__CFA_DEBUG__) || defined(__CFA_VERIFY__))
-bool validate( alarm_list_t * this ) {
-	alarm_node_t ** it = &this->head;
-	while( (*it) ) {
-		it = &(*it)->next;
-	}
-
-	return it == this->tail;
-}
-#endif
-
-static inline void insert_at( alarm_list_t * this, alarm_node_t * n, __alarm_it_t p ) {
-	verify( !n->next );
-	if( p == this->tail ) {
-		this->tail = &n->next;
-	}
-	else {
-		n->next = *p;
-	}
-	*p = n;
-
-	verify( validate( this ) );
-}
-
-void insert( alarm_list_t * this, alarm_node_t * n ) {
-	alarm_node_t ** it = &this->head;
-	while( (*it) && (n->alarm > (*it)->alarm) ) {
-		it = &(*it)->next;
-	}
-
-	insert_at( this, n, it );
-
-	verify( validate( this ) );
-}
-
-alarm_node_t * pop( alarm_list_t * this ) {
-	alarm_node_t * head = this->head;
-	if( head ) {
-		this->head = head->next;
-		if( !head->next ) {
-			this->tail = &this->head;
-		}
-		head->next = NULL;
-	}
-	verify( validate( this ) );
-	return head;
-}
-
-static inline void remove_at( alarm_list_t * this, alarm_node_t * n, __alarm_it_t it ) {
-	verify( it );
-	verify( (*it) == n );
-
-	(*it) = n->next;
-	if( !n-> next ) {
-		this->tail = it;
-	}
-	n->next = NULL;
-
-	verify( validate( this ) );
-}
-
-static inline void remove( alarm_list_t * this, alarm_node_t * n ) {
-	alarm_node_t ** it = &this->head;
-	while( (*it) && (*it) != n ) {
-		it = &(*it)->next;
-	}
-
-	verify( validate( this ) );
-
-	if( *it ) { remove_at( this, n, it ); }
-
-	verify( validate( this ) );
-}
-
-void register_self( alarm_node_t * this ) {
-	alarm_list_t * alarms = &event_kernel->alarms;
-
-	disable_interrupts();
-	lock( event_kernel->lock __cfaabi_dbg_ctx2 );
-	{
-		verify( validate( alarms ) );
-		bool first = !alarms->head;
-
-		insert( alarms, this );
-		if( first ) {
-			__kernel_set_timer( alarms->head->alarm - __kernel_get_time() );
-		}
-	}
-	unlock( event_kernel->lock );
-	this->set = true;
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-
-void unregister_self( alarm_node_t * this ) {
-	disable_interrupts();
-	lock( event_kernel->lock __cfaabi_dbg_ctx2 );
-	{
-		verify( validate( &event_kernel->alarms ) );
-		remove( &event_kernel->alarms, this );
-	}
-	unlock( event_kernel->lock );
-	enable_interrupts( __cfaabi_dbg_ctx );
-	this->set = false;
-}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/alarm.h
===================================================================
--- src/libcfa/concurrency/alarm.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,78 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// alarm.h --
-//
-// Author           : Thierry Delisle
-// Created On       : Fri Jun 2 11:31:25 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Mar 26 16:25:41 2018
-// Update Count     : 11
-//
-
-#pragma once
-
-#include <stdbool.h>
-#include <stdint.h>
-
-#include <assert.h>
-
-#include "time"
-
-struct thread_desc;
-struct processor;
-
-//=============================================================================================
-// Clock logic
-//=============================================================================================
-
-Time __kernel_get_time();
-void __kernel_set_timer( Duration alarm );
-
-//=============================================================================================
-// Alarm logic
-//=============================================================================================
-
-struct alarm_node_t {
-	Time alarm;				// time when alarm goes off
-	Duration period;			// if > 0 => period of alarm
-	alarm_node_t * next;		// intrusive link list field
-
-	union {
-		thread_desc * thrd;	// thrd who created event
-		processor * proc;		// proc who created event
-	};
-
-	bool set		:1;		// whether or not the alarm has be registered
-	bool kernel_alarm	:1;		// true if this is not a user defined alarm
-};
-
-typedef alarm_node_t ** __alarm_it_t;
-
-void ?{}( alarm_node_t & this, thread_desc * thrd, Time alarm, Duration period );
-void ?{}( alarm_node_t & this, processor   * proc, Time alarm, Duration period );
-void ^?{}( alarm_node_t & this );
-
-struct alarm_list_t {
-	alarm_node_t * head;
-	__alarm_it_t tail;
-};
-
-static inline void ?{}( alarm_list_t & this ) with( this ) {
-	head = 0;
-	tail = &head;
-}
-
-void insert( alarm_list_t * this, alarm_node_t * n );
-alarm_node_t * pop( alarm_list_t * this );
-
-void register_self  ( alarm_node_t * this );
-void unregister_self( alarm_node_t * this );
-
-// Local Variables: //
-// mode: c //
-// tab-width: 6 //
-// End: //
Index: c/libcfa/concurrency/coroutine
===================================================================
--- src/libcfa/concurrency/coroutine	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,151 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// coroutine --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Nov 28 12:27:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 30 18:23:45 2018
-// Update Count     : 8
-//
-
-#pragma once
-
-#include <assert.h>
-#include "invoke.h"
-
-//-----------------------------------------------------------------------------
-// Coroutine trait
-// Anything that implements this trait can be resumed.
-// Anything that is resumed is a coroutine.
-trait is_coroutine(dtype T) {
-      void main(T & this);
-      coroutine_desc * get_coroutine(T & this);
-};
-
-#define DECL_COROUTINE(X) static inline coroutine_desc* get_coroutine(X& this) { return &this.__cor; } void main(X& this)
-
-//-----------------------------------------------------------------------------
-// Ctors and dtors
-// void ?{}( coStack_t & this );
-// void ^?{}( coStack_t & this );
-
-void ?{}( coroutine_desc & this, const char * name, void * storage, size_t storageSize );
-void ^?{}( coroutine_desc & this );
-
-static inline void ?{}( coroutine_desc & this)                                       { this{ "Anonymous Coroutine", NULL, 0 }; }
-static inline void ?{}( coroutine_desc & this, size_t stackSize)                     { this{ "Anonymous Coroutine", NULL, stackSize }; }
-static inline void ?{}( coroutine_desc & this, void * storage, size_t storageSize )  { this{ "Anonymous Coroutine", storage, storageSize }; }
-static inline void ?{}( coroutine_desc & this, const char * name)                    { this{ name, NULL, 0 }; }
-static inline void ?{}( coroutine_desc & this, const char * name, size_t stackSize ) { this{ name, NULL, stackSize }; }
-
-//-----------------------------------------------------------------------------
-// Public coroutine API
-static inline void suspend();
-
-forall(dtype T | is_coroutine(T))
-static inline void resume(T & cor);
-
-forall(dtype T | is_coroutine(T))
-void prime(T & cor);
-
-//-----------------------------------------------------------------------------
-// PRIVATE exposed because of inline
-
-// Start coroutine routines
-extern "C" {
-      forall(dtype T | is_coroutine(T))
-      void CtxInvokeCoroutine(T * this);
-
-      forall(dtype T | is_coroutine(T))
-      void CtxStart(T * this, void ( *invoke)(T *));
-}
-
-// Private wrappers for context switch and stack creation
-extern void CoroutineCtxSwitch(coroutine_desc * src, coroutine_desc * dst);
-extern void create_stack( coStack_t * this, unsigned int storageSize );
-
-// Suspend implementation inlined for performance
-static inline void suspend() {
-	// optimization : read TLS once and reuse it
-	// Safety note: this is preemption safe since if
-	// preemption occurs after this line, the pointer
-	// will also migrate which means this value will
-	// stay in syn with the TLS
-	coroutine_desc * src = TL_GET( this_coroutine );
-
-	assertf( src->last != 0,
-		"Attempt to suspend coroutine \"%.256s\" (%p) that has never been resumed.\n"
-		"Possible cause is a suspend executed in a member called by a coroutine user rather than by the coroutine main.",
-		src->name, src );
-	assertf( src->last->state != Halted,
-		"Attempt by coroutine \"%.256s\" (%p) to suspend back to terminated coroutine \"%.256s\" (%p).\n"
-		"Possible cause is terminated coroutine's main routine has already returned.",
-		src->name, src, src->last->name, src->last );
-
-	CoroutineCtxSwitch( src, src->last );
-}
-
-// Resume implementation inlined for performance
-forall(dtype T | is_coroutine(T))
-static inline void resume(T & cor) {
-	// optimization : read TLS once and reuse it
-	// Safety note: this is preemption safe since if
-	// preemption occurs after this line, the pointer
-	// will also migrate which means this value will
-	// stay in syn with the TLS
-	coroutine_desc * src = TL_GET( this_coroutine );
-	coroutine_desc * dst = get_coroutine(cor);
-
-	if( unlikely(!dst->stack.base) ) {
-		create_stack(&dst->stack, dst->stack.size);
-		CtxStart(&cor, CtxInvokeCoroutine);
-	}
-
-	// not resuming self ?
-	if ( src != dst ) {
-		assertf( dst->state != Halted ,
-			"Attempt by coroutine %.256s (%p) to resume terminated coroutine %.256s (%p).\n"
-			"Possible cause is terminated coroutine's main routine has already returned.",
-			src->name, src, dst->name, dst );
-
-		// set last resumer
-		dst->last = src;
-		dst->starter = dst->starter ? dst->starter : src;
-	}
-
-	// always done for performance testing
-	CoroutineCtxSwitch( src, dst );
-}
-
-static inline void resume(coroutine_desc * dst) {
-	// optimization : read TLS once and reuse it
-	// Safety note: this is preemption safe since if
-	// preemption occurs after this line, the pointer
-	// will also migrate which means this value will
-	// stay in syn with the TLS
-	coroutine_desc * src = TL_GET( this_coroutine );
-
-	// not resuming self ?
-	if ( src != dst ) {
-		assertf( dst->state != Halted ,
-			"Attempt by coroutine %.256s (%p) to resume terminated coroutine %.256s (%p).\n"
-			"Possible cause is terminated coroutine's main routine has already returned.",
-			src->name, src, dst->name, dst );
-
-		// set last resumer
-		dst->last = src;
-	}
-
-	// always done for performance testing
-	CoroutineCtxSwitch( src, dst );
-}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/coroutine.c
===================================================================
--- src/libcfa/concurrency/coroutine.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,183 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// coroutine.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Nov 28 12:27:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 30 17:20:57 2018
-// Update Count     : 9
-//
-
-#include "coroutine"
-
-extern "C" {
-#include <stddef.h>
-#include <malloc.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/mman.h>
-}
-
-#include "kernel_private.h"
-
-#define __CFA_INVOKE_PRIVATE__
-#include "invoke.h"
-
-//-----------------------------------------------------------------------------
-// Global state variables
-
-// minimum feasible stack size in bytes
-#define MinStackSize 1000
-static size_t pageSize = 0;				// architecture pagesize HACK, should go in proper runtime singleton
-
-//-----------------------------------------------------------------------------
-// Coroutine ctors and dtors
-void ?{}( coStack_t & this, void * storage, size_t storageSize ) with( this ) {
-      size		 = storageSize == 0 ? 65000 : storageSize; // size of stack
-      this.storage = storage;                                // pointer to stack
-      limit		 = NULL;                                   // stack grows towards stack limit
-      base		 = NULL;                                   // base of stack
-      context	 = NULL;                                   // address of cfa_context_t
-      top		 = NULL;                                   // address of top of storage
-      userStack	 = storage != NULL;
-}
-
-void ^?{}(coStack_t & this) {
-      if ( ! this.userStack && this.storage ) {
-            __cfaabi_dbg_debug_do(
-                  if ( mprotect( this.storage, pageSize, PROT_READ | PROT_WRITE ) == -1 ) {
-                        abort( "(coStack_t *)%p.^?{}() : internal error, mprotect failure, error(%d) %s.", &this, errno, strerror( errno ) );
-                  }
-            );
-            free( this.storage );
-      }
-}
-
-void ?{}( coroutine_desc & this, const char * name, void * storage, size_t storageSize ) with( this ) {
-      (this.stack){storage, storageSize};
-      this.name = name;
-      errno_ = 0;
-      state = Start;
-      starter = NULL;
-      last = NULL;
-}
-
-void ^?{}(coroutine_desc& this) {}
-
-// Part of the Public API
-// Not inline since only ever called once per coroutine
-forall(dtype T | is_coroutine(T))
-void prime(T& cor) {
-      coroutine_desc* this = get_coroutine(cor);
-      assert(this->state == Start);
-
-      this->state = Primed;
-      resume(cor);
-}
-
-// Wrapper for co
-void CoroutineCtxSwitch(coroutine_desc* src, coroutine_desc* dst) {
-      // Safety note : This could cause some false positives due to preemption
-      verify( TL_GET( preemption_state.enabled ) || TL_GET( this_processor )->do_terminate );
-      disable_interrupts();
-
-      // set state of current coroutine to inactive
-      src->state = src->state == Halted ? Halted : Inactive;
-
-      // set new coroutine that task is executing
-      kernelTLS.this_coroutine = dst;
-
-      // context switch to specified coroutine
-      assert( src->stack.context );
-      CtxSwitch( src->stack.context, dst->stack.context );
-      // when CtxSwitch returns we are back in the src coroutine
-
-      // set state of new coroutine to active
-      src->state = Active;
-
-      enable_interrupts( __cfaabi_dbg_ctx );
-      // Safety note : This could cause some false positives due to preemption
-      verify( TL_GET( preemption_state.enabled ) || TL_GET( this_processor )->do_terminate );
-} //ctxSwitchDirect
-
-void create_stack( coStack_t* this, unsigned int storageSize ) with( *this ) {
-      //TEMP HACK do this on proper kernel startup
-      if(pageSize == 0ul) pageSize = sysconf( _SC_PAGESIZE );
-
-      size_t cxtSize = libCeiling( sizeof(machine_context_t), 8 ); // minimum alignment
-
-      if ( !storage ) {
-            __cfaabi_dbg_print_safe("Kernel : Creating stack of size %zu for stack obj %p\n", cxtSize + size + 8, this);
-
-            userStack = false;
-            size = libCeiling( storageSize, 16 );
-            // use malloc/memalign because "new" raises an exception for out-of-memory
-
-            // assume malloc has 8 byte alignment so add 8 to allow rounding up to 16 byte alignment
-            __cfaabi_dbg_debug_do( storage = memalign( pageSize, cxtSize + size + pageSize ) );
-            __cfaabi_dbg_no_debug_do( storage = malloc( cxtSize + size + 8 ) );
-
-            __cfaabi_dbg_debug_do(
-                  if ( mprotect( storage, pageSize, PROT_NONE ) == -1 ) {
-                        abort( "(uMachContext &)%p.createContext() : internal error, mprotect failure, error(%d) %s.", this, (int)errno, strerror( (int)errno ) );
-                  } // if
-            );
-
-            if ( (intptr_t)storage == 0 ) {
-                  abort( "Attempt to allocate %zd bytes of storage for coroutine or task execution-state but insufficient memory available.", size );
-            } // if
-
-            __cfaabi_dbg_debug_do( limit = (char *)storage + pageSize );
-            __cfaabi_dbg_no_debug_do( limit = (char *)libCeiling( (unsigned long)storage, 16 ) ); // minimum alignment
-
-      } else {
-            __cfaabi_dbg_print_safe("Kernel : stack obj %p using user stack %p(%u bytes)\n", this, storage, storageSize);
-
-            assertf( ((size_t)storage & (libAlign() - 1)) == 0ul, "Stack storage %p for task/coroutine must be aligned on %d byte boundary.", storage, (int)libAlign() );
-            userStack = true;
-            size = storageSize - cxtSize;
-
-            if ( size % 16 != 0u ) size -= 8;
-
-            limit = (char *)libCeiling( (unsigned long)storage, 16 ); // minimum alignment
-      } // if
-      assertf( size >= MinStackSize, "Stack size %zd provides less than minimum of %d bytes for a stack.", size, MinStackSize );
-
-      base = (char *)limit + size;
-      context = base;
-      top = (char *)context + cxtSize;
-}
-
-// We need to call suspend from invoke.c, so we expose this wrapper that
-// is not inline (We can't inline Cforall in C)
-extern "C" {
-      void __suspend_internal(void) {
-            suspend();
-      }
-
-      void __leave_coroutine(void) {
-            coroutine_desc * src = TL_GET( this_coroutine ); // optimization
-
-            assertf( src->starter != 0,
-                  "Attempt to suspend/leave coroutine \"%.256s\" (%p) that has never been resumed.\n"
-                  "Possible cause is a suspend executed in a member called by a coroutine user rather than by the coroutine main.",
-                  src->name, src );
-            assertf( src->starter->state != Halted,
-                  "Attempt by coroutine \"%.256s\" (%p) to suspend/leave back to terminated coroutine \"%.256s\" (%p).\n"
-                  "Possible cause is terminated coroutine's main routine has already returned.",
-                  src->name, src, src->starter->name, src->starter );
-
-            CoroutineCtxSwitch( src, src->starter );
-      }
-}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/invoke.c
===================================================================
--- src/libcfa/concurrency/invoke.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,165 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// invoke.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Jan 17 12:27:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Feb  9 16:37:42 2018
-// Update Count     : 5
-//
-
-#include <stdbool.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "invoke.h"
-
-#define __CFA_INVOKE_PRIVATE__
-#include "invoke.h"
-
-// magically invoke the "main" of the most derived class
-// Called from the kernel when starting a coroutine or task so must switch back to user mode.
-
-extern void __suspend_internal(void);
-extern void __leave_coroutine(void);
-extern void __finish_creation(void);
-extern void __leave_thread_monitor( struct thread_desc * this );
-extern void disable_interrupts();
-extern void enable_interrupts( __cfaabi_dbg_ctx_param );
-
-void CtxInvokeCoroutine(
-	void (*main)(void *),
-	struct coroutine_desc *(*get_coroutine)(void *),
-	void *this
-) {
-	struct coroutine_desc* cor = get_coroutine( this );
-
-	if(cor->state == Primed) {
-		__suspend_internal();
-	}
-
-	cor->state = Active;
-
-	enable_interrupts( __cfaabi_dbg_ctx );
-
-	main( this );
-
-	cor->state = Halted;
-
-	//Final suspend, should never return
-	__leave_coroutine();
-	__cabi_abort( "Resumed dead coroutine" );
-}
-
-void CtxInvokeThread(
-	void (*dtor)(void *),
-	void (*main)(void *),
-	struct thread_desc *(*get_thread)(void *),
-	void *this
-) {
-	// First suspend, once the thread arrives here,
-	// the function pointer to main can be invalidated without risk
-	__finish_creation();
-
-	// Fetch the thread handle from the user defined thread structure
-	struct thread_desc* thrd = get_thread( this );
-	thrd->self_cor.last = NULL;
-
-	// Officially start the thread by enabling preemption
-	enable_interrupts( __cfaabi_dbg_ctx );
-
-	// Call the main of the thread
-	main( this );
-
-	// To exit a thread we must :
-	// 1 - Mark it as halted
-	// 2 - Leave its monitor
-	// 3 - Disable the interupts
-	// 4 - Final suspend
-	// The order of these 4 operations is very important
-	//Final suspend, should never return
-	__leave_thread_monitor( thrd );
-	__cabi_abort( "Resumed dead thread" );
-}
-
-
-void CtxStart(
-	void (*main)(void *),
-	struct coroutine_desc *(*get_coroutine)(void *),
-	void *this,
-	void (*invoke)(void *)
-) {
-	struct coStack_t* stack = &get_coroutine( this )->stack;
-
-#if defined( __i386 )
-
-	struct FakeStack {
-	    void *fixedRegisters[3];		  	// fixed registers ebx, edi, esi (popped on 1st uSwitch, values unimportant)
-	    uint32_t mxcr;                        // SSE Status and Control bits (control bits are preserved across function calls)
-	    uint16_t fcw;                         // X97 FPU control word (preserved across function calls)
-	    void *rturn;                          // where to go on return from uSwitch
-	    void *dummyReturn;				// fake return compiler would have pushed on call to uInvoke
-	    void *argument[3];				// for 16-byte ABI, 16-byte alignment starts here
-	    void *padding;				// padding to force 16-byte alignment, as "base" is 16-byte aligned
-	};
-
-	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
-	((struct machine_context_t *)stack->context)->FP = NULL;		// terminate stack with NULL fp
-
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->dummyReturn = NULL;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->argument[0] = this;     // argument to invoke
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->rturn = invoke;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F;  //Vol. 1 8-7
-
-#elif defined( __x86_64 )
-
-	struct FakeStack {
-		void *fixedRegisters[5];            // fixed registers rbx, r12, r13, r14, r15
-		uint32_t mxcr;                      // SSE Status and Control bits (control bits are preserved across function calls)
-		uint16_t fcw;                       // X97 FPU control word (preserved across function calls)
-		void *rturn;                        // where to go on return from uSwitch
-		void *dummyReturn;                  // NULL return address to provide proper alignment
-	};
-
-	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
-	((struct machine_context_t *)stack->context)->FP = NULL;		// terminate stack with NULL fp
-
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->dummyReturn = NULL;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->rturn = CtxInvokeStub;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[0] = this;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[1] = invoke;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F;  //Vol. 1 8-7
-
-#elif defined( __ARM_ARCH )
-
-	struct FakeStack {
-		float fpRegs[16];			// floating point registers
-		void *intRegs[9];			// integer/pointer registers
-		void *arg[2];				// placeholder for this pointer
-	};
-
-	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
-	((struct machine_context_t *)stack->context)->FP = NULL;
-
-	struct FakeStack *fs = (struct FakeStack *)((struct machine_context_t *)stack->context)->SP;
-
-	fs->intRegs[8] = CtxInvokeStub;
-	fs->arg[0] = this;
-	fs->arg[1] = invoke;
-
-#else
-	#error uknown hardware architecture
-#endif
-}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/invoke.h
===================================================================
--- src/libcfa/concurrency/invoke.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,248 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// invoke.h --
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Jan 17 12:27:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 19 08:23:21 2018
-// Update Count     : 31
-//
-
-#include "bits/containers.h"
-#include "bits/defs.h"
-#include "bits/locks.h"
-
-#ifdef __cforall
-extern "C" {
-#endif
-
-#if ! defined(__CFA_INVOKE_PRIVATE__)
-#ifndef _INVOKE_H_
-#define _INVOKE_H_
-
-#ifdef __ARM_ARCH
-	// function prototypes are only really used by these macros on ARM
-	void disable_global_interrupts();
-	void enable_global_interrupts();
-
-	#define TL_GET( member ) ( { __typeof__( kernelTLS.member ) target; \
-                disable_global_interrupts(); \
-                target = kernelTLS.member; \
-                enable_global_interrupts(); \
-                target; } )
-	#define TL_SET( member, value ) disable_global_interrupts(); \
-		kernelTLS.member = value; \
-		enable_global_interrupts();
-#else
-	#define TL_GET( member ) kernelTLS.member
-	#define TL_SET( member, value ) kernelTLS.member = value;
-#endif
-
-	#ifdef __cforall
-	extern "Cforall" {
-		static inline struct thread_desc             * & get_next( struct thread_desc             & this );
-		static inline struct __condition_criterion_t * & get_next( struct __condition_criterion_t & this );
-
-		extern thread_local struct KernelThreadData {
-			struct coroutine_desc * volatile this_coroutine;
-			struct thread_desc    * volatile this_thread;
-			struct processor      * volatile this_processor;
-
-			struct {
-				volatile unsigned short disable_count;
-				volatile bool enabled;
-				volatile bool in_progress;
-			} preemption_state;
-		} kernelTLS;
-	}
-
-	static inline struct coroutine_desc * volatile active_coroutine() { return TL_GET( this_coroutine ); }
-	static inline struct thread_desc    * volatile active_thread   () { return TL_GET( this_thread    ); }
-	static inline struct processor      * volatile active_processor() { return TL_GET( this_processor ); } // UNSAFE
-	#endif
-
-	struct coStack_t {
-		size_t size;									// size of stack
-		void * storage;									// pointer to stack
-		void * limit;									// stack grows towards stack limit
-		void * base;									// base of stack
-		void * context;									// address of cfa_context_t
-		void * top;										// address of top of storage
-		bool userStack;									// whether or not the user allocated the stack
-	};
-
-	enum coroutine_state { Halted, Start, Inactive, Active, Primed };
-
-	struct coroutine_desc {
-		struct coStack_t stack;							// stack information of the coroutine
-		const char * name;								// textual name for coroutine/task, initialized by uC++ generated code
-		int errno_;										// copy of global UNIX variable errno
-		enum coroutine_state state;						// current execution status for coroutine
-		struct coroutine_desc * starter;				// first coroutine to resume this one
-		struct coroutine_desc * last;					// last coroutine to resume this one
-	};
-
-	struct __waitfor_mask_t {
-		// the index of the accepted function, -1 if none
-		short * accepted;
-
-		// list of acceptable functions, null if any
-		__cfa_anonymous_object( __small_array_t(struct __acceptable_t) );
-	};
-
-	struct monitor_desc {
-		// spinlock to protect internal data
-		struct __spinlock_t lock;
-
-		// current owner of the monitor
-		struct thread_desc * owner;
-
-		// queue of threads that are blocked waiting for the monitor
-		__queue_t(struct thread_desc) entry_queue;
-
-		// stack of conditions to run next once we exit the monitor
-		__stack_t(struct __condition_criterion_t) signal_stack;
-
-		// monitor routines can be called recursively, we need to keep track of that
-		unsigned int recursion;
-
-		// mask used to know if some thread is waiting for something while holding the monitor
-		struct __waitfor_mask_t mask;
-
-		// node used to signal the dtor in a waitfor dtor
-		struct __condition_node_t * dtor_node;
-	};
-
-	struct __monitor_group_t {
-		// currently held monitors
-		__cfa_anonymous_object( __small_array_t(monitor_desc*) );
-
-		// last function that acquired monitors
-		fptr_t func;
-	};
-
-	struct thread_desc {
-		// Core threading fields
-		// coroutine body used to store context
-		struct coroutine_desc  self_cor;
-
-		// current active context
-		struct coroutine_desc * curr_cor;
-
-		// monitor body used for mutual exclusion
-		struct monitor_desc    self_mon;
-
-		// pointer to monitor with sufficient lifetime for current monitors
-		struct monitor_desc *  self_mon_p;
-
-		// pointer to the cluster on which the thread is running
-		struct cluster * curr_cluster;
-
-		// monitors currently held by this thread
-		struct __monitor_group_t monitors;
-
-		// Link lists fields
-		// instrusive link field for threads
-		struct thread_desc * next;
-
-		struct {
-			struct thread_desc * next;
-			struct thread_desc * prev;
-		} node;
-     };
-
-     #ifdef __cforall
-     extern "Cforall" {
-		static inline thread_desc * & get_next( thread_desc & this ) {
-			return this.next;
-		}
-
-		static inline [thread_desc *&, thread_desc *& ] __get( thread_desc & this ) {
-			return this.node.[next, prev];
-		}
-
-		static inline struct __condition_criterion_t * & get_next( struct __condition_criterion_t & this );
-
-		static inline void ?{}(__monitor_group_t & this) {
-			(this.data){NULL};
-			(this.size){0};
-			(this.func){NULL};
-		}
-
-		static inline void ?{}(__monitor_group_t & this, struct monitor_desc ** data, __lock_size_t size, fptr_t func) {
-			(this.data){data};
-			(this.size){size};
-			(this.func){func};
-		}
-
-		static inline bool ?==?( const __monitor_group_t & lhs, const __monitor_group_t & rhs ) {
-			if( (lhs.data != 0) != (rhs.data != 0) ) return false;
-			if( lhs.size != rhs.size ) return false;
-			if( lhs.func != rhs.func ) return false;
-
-			// Check that all the monitors match
-			for( int i = 0; i < lhs.size; i++ ) {
-				// If not a match, check next function
-				if( lhs[i] != rhs[i] ) return false;
-			}
-
-			return true;
-		}
-
-		static inline void ?=?(__monitor_group_t & lhs, const __monitor_group_t & rhs) {
-			lhs.data = rhs.data;
-			lhs.size = rhs.size;
-			lhs.func = rhs.func;
-		}
-	}
-	#endif
-
-#endif //_INVOKE_H_
-#else //! defined(__CFA_INVOKE_PRIVATE__)
-#ifndef _INVOKE_PRIVATE_H_
-#define _INVOKE_PRIVATE_H_
-
-	struct machine_context_t {
-		void *SP;
-		void *FP;
-		void *PC;
-	};
-
-	// assembler routines that performs the context switch
-	extern void CtxInvokeStub( void );
-	void CtxSwitch( void * from, void * to ) asm ("CtxSwitch");
-
-	#if   defined( __i386 )
-	#define CtxGet( ctx ) __asm__ ( \
-			"movl %%esp,%0\n"   \
-			"movl %%ebp,%1\n"   \
-		: "=rm" (ctx.SP), "=rm" (ctx.FP) )
-	#elif defined( __x86_64 )
-	#define CtxGet( ctx ) __asm__ ( \
-			"movq %%rsp,%0\n"   \
-			"movq %%rbp,%1\n"   \
-		: "=rm" (ctx.SP), "=rm" (ctx.FP) )
-	#elif defined( __ARM_ARCH )
-	#define CtxGet( ctx ) __asm__ ( \
-			"mov %0,%%sp\n"   \
-			"mov %1,%%r11\n"   \
-		: "=rm" (ctx.SP), "=rm" (ctx.FP) )
-	#else
-		#error unknown hardware architecture
-	#endif
-
-#endif //_INVOKE_PRIVATE_H_
-#endif //! defined(__CFA_INVOKE_PRIVATE__)
-#ifdef __cforall
-}
-#endif
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/kernel
===================================================================
--- src/libcfa/concurrency/kernel	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,205 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// kernel --
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Jan 17 12:27:26 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Apr 10 14:46:49 2018
-// Update Count     : 10
-//
-
-#pragma once
-
-#include <stdbool.h>
-
-#include "invoke.h"
-#include "time_t.h"
-
-extern "C" {
-#include <pthread.h>
-#include <semaphore.h>
-}
-
-//-----------------------------------------------------------------------------
-// Locks
-struct semaphore {
-	__spinlock_t lock;
-	int count;
-	__queue_t(thread_desc) waiting;
-};
-
-void  ?{}(semaphore & this, int count = 1);
-void ^?{}(semaphore & this);
-void   P (semaphore & this);
-void   V (semaphore & this);
-
-
-//-----------------------------------------------------------------------------
-// Processor
-extern struct cluster * mainCluster;
-
-enum FinishOpCode { No_Action, Release, Schedule, Release_Schedule, Release_Multi, Release_Multi_Schedule, Callback };
-
-typedef void (*__finish_callback_fptr_t)(void);
-
-//TODO use union, many of these fields are mutually exclusive (i.e. MULTI vs NOMULTI)
-struct FinishAction {
-	FinishOpCode action_code;
-	/*
-	// Union of possible actions
-	union {
-		// Option 1 : locks and threads
-		struct {
-			// 1 thread or N thread
-			union {
-				thread_desc * thrd;
-				struct {
-					thread_desc ** thrds;
-					unsigned short thrd_count;
-				};
-			};
-			// 1 lock or N lock
-			union {
-				__spinlock_t * lock;
-				struct {
-					__spinlock_t ** locks;
-					unsigned short lock_count;
-				};
-			};
-		};
-		// Option 2 : action pointer
-		__finish_callback_fptr_t callback;
-	};
-	/*/
-	thread_desc * thrd;
-	thread_desc ** thrds;
-	unsigned short thrd_count;
-	__spinlock_t * lock;
-	__spinlock_t ** locks;
-	unsigned short lock_count;
-	__finish_callback_fptr_t callback;
-	//*/
-};
-static inline void ?{}(FinishAction & this) {
-	this.action_code = No_Action;
-	this.thrd = NULL;
-	this.lock = NULL;
-}
-static inline void ^?{}(FinishAction & this) {}
-
-// Processor
-coroutine processorCtx_t {
-	struct processor * proc;
-};
-
-// Wrapper around kernel threads
-struct processor {
-	// Main state
-	// Coroutine ctx who does keeps the state of the processor
-	struct processorCtx_t runner;
-
-	// Cluster from which to get threads
-	struct cluster * cltr;
-
-	// Name of the processor
-	const char * name;
-
-	// Handle to pthreads
-	pthread_t kernel_thread;
-
-	// RunThread data
-	// Action to do after a thread is ran
-	struct FinishAction finish;
-
-	// Preemption data
-	// Node which is added in the discrete event simulaiton
-	struct alarm_node_t * preemption_alarm;
-
-	// If true, a preemption was triggered in an unsafe region, the processor must preempt as soon as possible
-	bool pending_preemption;
-
-	// Idle lock
-	__bin_sem_t idleLock;
-
-	// Termination
-	// Set to true to notify the processor should terminate
-	volatile bool do_terminate;
-
-	// Termination synchronisation
-	semaphore terminated;
-
-	// Link lists fields
-	struct __dbg_node_proc {
-		struct processor * next;
-		struct processor * prev;
-	} node;
-
-#ifdef __CFA_DEBUG__
-	// Last function to enable preemption on this processor
-	const char * last_enable;
-#endif
-};
-
-void  ?{}(processor & this, const char * name, struct cluster & cltr);
-void ^?{}(processor & this);
-
-static inline void  ?{}(processor & this)                    { this{ "Anonymous Processor", *mainCluster}; }
-static inline void  ?{}(processor & this, struct cluster & cltr)    { this{ "Anonymous Processor", cltr}; }
-static inline void  ?{}(processor & this, const char * name) { this{name, *mainCluster }; }
-
-static inline [processor *&, processor *& ] __get( processor & this ) {
-	return this.node.[next, prev];
-}
-
-//-----------------------------------------------------------------------------
-// Cluster
-struct cluster {
-	// Ready queue locks
-	__spinlock_t ready_queue_lock;
-
-	// Ready queue for threads
-	__queue_t(thread_desc) ready_queue;
-
-	// Name of the cluster
-	const char * name;
-
-	// Preemption rate on this cluster
-	Duration preemption_rate;
-
-	// List of processors
-	__spinlock_t proc_list_lock;
-	__dllist_t(struct processor) procs;
-	__dllist_t(struct processor) idles;
-
-	// List of processors
-	__spinlock_t thread_list_lock;
-	__dllist_t(struct thread_desc) threads;
-
-	// Link lists fields
-	struct __dbg_node_cltr {
-		cluster * next;
-		cluster * prev;
-	} node;
-};
-extern Duration default_preemption();
-
-void ?{} (cluster & this, const char * name, Duration preemption_rate);
-void ^?{}(cluster & this);
-
-static inline void ?{} (cluster & this)                           { this{"Anonymous Cluster", default_preemption()}; }
-static inline void ?{} (cluster & this, Duration preemption_rate) { this{"Anonymous Cluster", preemption_rate}; }
-static inline void ?{} (cluster & this, const char * name)        { this{name, default_preemption()}; }
-
-static inline [cluster *&, cluster *& ] __get( cluster & this ) {
-	return this.node.[next, prev];
-}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/kernel.c
===================================================================
--- src/libcfa/concurrency/kernel.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,843 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// kernel.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Jan 17 12:27:26 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Apr  9 16:11:46 2018
-// Update Count     : 24
-//
-
-//C Includes
-#include <stddef.h>
-#include <errno.h>
-#include <string.h>
-extern "C" {
-#include <stdio.h>
-#include <fenv.h>
-#include <sys/resource.h>
-#include <signal.h>
-#include <unistd.h>
-}
-
-//CFA Includes
-#include "time"
-#include "kernel_private.h"
-#include "preemption.h"
-#include "startup.h"
-
-//Private includes
-#define __CFA_INVOKE_PRIVATE__
-#include "invoke.h"
-
-//Start and stop routine for the kernel, declared first to make sure they run first
-static void kernel_startup(void)  __attribute__(( constructor( STARTUP_PRIORITY_KERNEL ) ));
-static void kernel_shutdown(void) __attribute__(( destructor ( STARTUP_PRIORITY_KERNEL ) ));
-
-//-----------------------------------------------------------------------------
-// Kernel storage
-KERNEL_STORAGE(cluster,           mainCluster);
-KERNEL_STORAGE(processor,         mainProcessor);
-KERNEL_STORAGE(thread_desc,       mainThread);
-KERNEL_STORAGE(machine_context_t, mainThreadCtx);
-
-cluster     * mainCluster;
-processor   * mainProcessor;
-thread_desc * mainThread;
-
-extern "C" {
-struct { __dllist_t(cluster) list; __spinlock_t lock; } __cfa_dbg_global_clusters;
-}
-
-//-----------------------------------------------------------------------------
-// Global state
-thread_local struct KernelThreadData kernelTLS = {
-	NULL,
-	NULL,
-	NULL,
-	{ 1, false, false }
-};
-
-//-----------------------------------------------------------------------------
-// Struct to steal stack
-struct current_stack_info_t {
-	machine_context_t ctx;
-	unsigned int size;		// size of stack
-	void *base;				// base of stack
-	void *storage;			// pointer to stack
-	void *limit;			// stack grows towards stack limit
-	void *context;			// address of cfa_context_t
-	void *top;				// address of top of storage
-};
-
-void ?{}( current_stack_info_t & this ) {
-	CtxGet( this.ctx );
-	this.base = this.ctx.FP;
-	this.storage = this.ctx.SP;
-
-	rlimit r;
-	getrlimit( RLIMIT_STACK, &r);
-	this.size = r.rlim_cur;
-
-	this.limit = (void *)(((intptr_t)this.base) - this.size);
-	this.context = &storage_mainThreadCtx;
-	this.top = this.base;
-}
-
-//-----------------------------------------------------------------------------
-// Main thread construction
-void ?{}( coStack_t & this, current_stack_info_t * info) with( this ) {
-	size      = info->size;
-	storage   = info->storage;
-	limit     = info->limit;
-	base      = info->base;
-	context   = info->context;
-	top       = info->top;
-	userStack = true;
-}
-
-void ?{}( coroutine_desc & this, current_stack_info_t * info) with( this ) {
-	stack{ info };
-	name = "Main Thread";
-	errno_ = 0;
-	state = Start;
-	starter = NULL;
-}
-
-void ?{}( thread_desc & this, current_stack_info_t * info) with( this ) {
-	self_cor{ info };
-	curr_cor = &self_cor;
-	curr_cluster = mainCluster;
-	self_mon.owner = &this;
-	self_mon.recursion = 1;
-	self_mon_p = &self_mon;
-	next = NULL;
-
-	node.next = NULL;
-	node.prev = NULL;
-	doregister(curr_cluster, this);
-
-	monitors{ &self_mon_p, 1, (fptr_t)0 };
-}
-
-//-----------------------------------------------------------------------------
-// Processor coroutine
-void ?{}(processorCtx_t & this) {
-
-}
-
-// Construct the processor context of non-main processors
-static void ?{}(processorCtx_t & this, processor * proc, current_stack_info_t * info) {
-	(this.__cor){ info };
-	this.proc = proc;
-}
-
-static void start(processor * this);
-void ?{}(processor & this, const char * name, cluster & cltr) with( this ) {
-	this.name = name;
-	this.cltr = &cltr;
-	terminated{ 0 };
-	do_terminate = false;
-	preemption_alarm = NULL;
-	pending_preemption = false;
-	runner.proc = &this;
-
-	idleLock{};
-
-	start( &this );
-}
-
-void ^?{}(processor & this) with( this ){
-	if( ! __atomic_load_n(&do_terminate, __ATOMIC_ACQUIRE) ) {
-		__cfaabi_dbg_print_safe("Kernel : core %p signaling termination\n", &this);
-
-		__atomic_store_n(&do_terminate, true, __ATOMIC_RELAXED);
-		wake( &this );
-
-		P( terminated );
-		verify( kernelTLS.this_processor != &this);
-	}
-
-	pthread_join( kernel_thread, NULL );
-}
-
-void ?{}(cluster & this, const char * name, Duration preemption_rate) with( this ) {
-	this.name = name;
-	this.preemption_rate = preemption_rate;
-	ready_queue{};
-	ready_queue_lock{};
-
-	procs{ __get };
-	idles{ __get };
-	threads{ __get };
-
-	doregister(this);
-}
-
-void ^?{}(cluster & this) {
-	unregister(this);
-}
-
-//=============================================================================================
-// Kernel Scheduling logic
-//=============================================================================================
-static void runThread(processor * this, thread_desc * dst);
-static void finishRunning(processor * this);
-static void halt(processor * this);
-
-//Main of the processor contexts
-void main(processorCtx_t & runner) {
-	processor * this = runner.proc;
-	verify(this);
-
-	__cfaabi_dbg_print_safe("Kernel : core %p starting\n", this);
-
-	doregister(this->cltr, this);
-
-	{
-		// Setup preemption data
-		preemption_scope scope = { this };
-
-		__cfaabi_dbg_print_safe("Kernel : core %p started\n", this);
-
-		thread_desc * readyThread = NULL;
-		for( unsigned int spin_count = 0; ! __atomic_load_n(&this->do_terminate, __ATOMIC_SEQ_CST); spin_count++ )
-		{
-			readyThread = nextThread( this->cltr );
-
-			if(readyThread)
-			{
-				verify( ! kernelTLS.preemption_state.enabled );
-
-				runThread(this, readyThread);
-
-				verify( ! kernelTLS.preemption_state.enabled );
-
-				//Some actions need to be taken from the kernel
-				finishRunning(this);
-
-				spin_count = 0;
-			}
-			else
-			{
-				// spin(this, &spin_count);
-				halt(this);
-			}
-		}
-
-		__cfaabi_dbg_print_safe("Kernel : core %p stopping\n", this);
-	}
-
-	unregister(this->cltr, this);
-
-	V( this->terminated );
-
-	__cfaabi_dbg_print_safe("Kernel : core %p terminated\n", this);
-}
-
-// KERNEL ONLY
-// runThread runs a thread by context switching
-// from the processor coroutine to the target thread
-static void runThread(processor * this, thread_desc * dst) {
-	assert(dst->curr_cor);
-	coroutine_desc * proc_cor = get_coroutine(this->runner);
-	coroutine_desc * thrd_cor = dst->curr_cor;
-
-	// Reset the terminating actions here
-	this->finish.action_code = No_Action;
-
-	// Update global state
-	kernelTLS.this_thread = dst;
-
-	// Context Switch to the thread
-	ThreadCtxSwitch(proc_cor, thrd_cor);
-	// when ThreadCtxSwitch returns we are back in the processor coroutine
-}
-
-// KERNEL_ONLY
-static void returnToKernel() {
-	coroutine_desc * proc_cor = get_coroutine(kernelTLS.this_processor->runner);
-	coroutine_desc * thrd_cor = kernelTLS.this_thread->curr_cor = kernelTLS.this_coroutine;
-	ThreadCtxSwitch(thrd_cor, proc_cor);
-}
-
-// KERNEL_ONLY
-// Once a thread has finished running, some of
-// its final actions must be executed from the kernel
-static void finishRunning(processor * this) with( this->finish ) {
-	verify( ! kernelTLS.preemption_state.enabled );
-	choose( action_code ) {
-	case No_Action:
-		break;
-	case Release:
-		unlock( *lock );
-	case Schedule:
-		ScheduleThread( thrd );
-	case Release_Schedule:
-		unlock( *lock );
-		ScheduleThread( thrd );
-	case Release_Multi:
-		for(int i = 0; i < lock_count; i++) {
-			unlock( *locks[i] );
-		}
-	case Release_Multi_Schedule:
-		for(int i = 0; i < lock_count; i++) {
-			unlock( *locks[i] );
-		}
-		for(int i = 0; i < thrd_count; i++) {
-			ScheduleThread( thrds[i] );
-		}
-	case Callback:
-		callback();
-	default:
-		abort("KERNEL ERROR: Unexpected action to run after thread");
-	}
-}
-
-// KERNEL_ONLY
-// Context invoker for processors
-// This is the entry point for processors (kernel threads)
-// It effectively constructs a coroutine by stealing the pthread stack
-static void * CtxInvokeProcessor(void * arg) {
-	processor * proc = (processor *) arg;
-	kernelTLS.this_processor = proc;
-	kernelTLS.this_coroutine = NULL;
-	kernelTLS.this_thread    = NULL;
-	kernelTLS.preemption_state.[enabled, disable_count] = [false, 1];
-	// SKULLDUGGERY: We want to create a context for the processor coroutine
-	// which is needed for the 2-step context switch. However, there is no reason
-	// to waste the perfectly valid stack create by pthread.
-	current_stack_info_t info;
-	machine_context_t ctx;
-	info.context = &ctx;
-	(proc->runner){ proc, &info };
-
-	__cfaabi_dbg_print_safe("Coroutine : created stack %p\n", get_coroutine(proc->runner)->stack.base);
-
-	//Set global state
-	kernelTLS.this_coroutine = get_coroutine(proc->runner);
-	kernelTLS.this_thread    = NULL;
-
-	//We now have a proper context from which to schedule threads
-	__cfaabi_dbg_print_safe("Kernel : core %p created (%p, %p)\n", proc, &proc->runner, &ctx);
-
-	// SKULLDUGGERY: Since the coroutine doesn't have its own stack, we can't
-	// resume it to start it like it normally would, it will just context switch
-	// back to here. Instead directly call the main since we already are on the
-	// appropriate stack.
-	get_coroutine(proc->runner)->state = Active;
-	main( proc->runner );
-	get_coroutine(proc->runner)->state = Halted;
-
-	// Main routine of the core returned, the core is now fully terminated
-	__cfaabi_dbg_print_safe("Kernel : core %p main ended (%p)\n", proc, &proc->runner);
-
-	return NULL;
-}
-
-static void start(processor * this) {
-	__cfaabi_dbg_print_safe("Kernel : Starting core %p\n", this);
-
-	pthread_create( &this->kernel_thread, NULL, CtxInvokeProcessor, (void*)this );
-
-	__cfaabi_dbg_print_safe("Kernel : core %p started\n", this);
-}
-
-// KERNEL_ONLY
-void kernel_first_resume(processor * this) {
-	coroutine_desc * src = kernelTLS.this_coroutine;
-	coroutine_desc * dst = get_coroutine(this->runner);
-
-	verify( ! kernelTLS.preemption_state.enabled );
-
-	create_stack(&dst->stack, dst->stack.size);
-	CtxStart(&this->runner, CtxInvokeCoroutine);
-
-	verify( ! kernelTLS.preemption_state.enabled );
-
-	dst->last = src;
-	dst->starter = dst->starter ? dst->starter : src;
-
-	// set state of current coroutine to inactive
-	src->state = src->state == Halted ? Halted : Inactive;
-
-	// set new coroutine that task is executing
-	kernelTLS.this_coroutine = dst;
-
-	// SKULLDUGGERY normally interrupts are enable before leaving a coroutine ctxswitch.
-	// Therefore, when first creating a coroutine, interrupts are enable before calling the main.
-	// This is consistent with thread creation. However, when creating the main processor coroutine,
-	// we wan't interrupts to be disabled. Therefore, we double-disable interrupts here so they will
-	// stay disabled.
-	disable_interrupts();
-
-	// context switch to specified coroutine
-	assert( src->stack.context );
-	CtxSwitch( src->stack.context, dst->stack.context );
-	// when CtxSwitch returns we are back in the src coroutine
-
-	// set state of new coroutine to active
-	src->state = Active;
-
-	verify( ! kernelTLS.preemption_state.enabled );
-}
-
-//-----------------------------------------------------------------------------
-// Scheduler routines
-
-// KERNEL ONLY
-void ScheduleThread( thread_desc * thrd ) {
-	verify( thrd );
-	verify( thrd->self_cor.state != Halted );
-
-	verify( ! kernelTLS.preemption_state.enabled );
-
-	verifyf( thrd->next == NULL, "Expected null got %p", thrd->next );
-
-	with( *thrd->curr_cluster ) {
-		lock  ( ready_queue_lock __cfaabi_dbg_ctx2 );
-		bool was_empty = !(ready_queue != 0);
-		append( ready_queue, thrd );
-		unlock( ready_queue_lock );
-
-		if(was_empty) {
-			lock      (proc_list_lock __cfaabi_dbg_ctx2);
-			if(idles) {
-				wake_fast(idles.head);
-			}
-			unlock    (proc_list_lock);
-		}
-		else if( struct processor * idle = idles.head ) {
-			wake_fast(idle);
-		}
-
-	}
-
-	verify( ! kernelTLS.preemption_state.enabled );
-}
-
-// KERNEL ONLY
-thread_desc * nextThread(cluster * this) with( *this ) {
-	verify( ! kernelTLS.preemption_state.enabled );
-	lock( ready_queue_lock __cfaabi_dbg_ctx2 );
-	thread_desc * head = pop_head( ready_queue );
-	unlock( ready_queue_lock );
-	verify( ! kernelTLS.preemption_state.enabled );
-	return head;
-}
-
-void BlockInternal() {
-	disable_interrupts();
-	verify( ! kernelTLS.preemption_state.enabled );
-	returnToKernel();
-	verify( ! kernelTLS.preemption_state.enabled );
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-
-void BlockInternal( __spinlock_t * lock ) {
-	disable_interrupts();
-	with( *kernelTLS.this_processor ) {
-		finish.action_code = Release;
-		finish.lock        = lock;
-	}
-
-	verify( ! kernelTLS.preemption_state.enabled );
-	returnToKernel();
-	verify( ! kernelTLS.preemption_state.enabled );
-
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-
-void BlockInternal( thread_desc * thrd ) {
-	disable_interrupts();
-	with( * kernelTLS.this_processor ) {
-		finish.action_code = Schedule;
-		finish.thrd        = thrd;
-	}
-
-	verify( ! kernelTLS.preemption_state.enabled );
-	returnToKernel();
-	verify( ! kernelTLS.preemption_state.enabled );
-
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-
-void BlockInternal( __spinlock_t * lock, thread_desc * thrd ) {
-	assert(thrd);
-	disable_interrupts();
-	with( * kernelTLS.this_processor ) {
-		finish.action_code = Release_Schedule;
-		finish.lock        = lock;
-		finish.thrd        = thrd;
-	}
-
-	verify( ! kernelTLS.preemption_state.enabled );
-	returnToKernel();
-	verify( ! kernelTLS.preemption_state.enabled );
-
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-
-void BlockInternal(__spinlock_t * locks [], unsigned short count) {
-	disable_interrupts();
-	with( * kernelTLS.this_processor ) {
-		finish.action_code = Release_Multi;
-		finish.locks       = locks;
-		finish.lock_count  = count;
-	}
-
-	verify( ! kernelTLS.preemption_state.enabled );
-	returnToKernel();
-	verify( ! kernelTLS.preemption_state.enabled );
-
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-
-void BlockInternal(__spinlock_t * locks [], unsigned short lock_count, thread_desc * thrds [], unsigned short thrd_count) {
-	disable_interrupts();
-	with( *kernelTLS.this_processor ) {
-		finish.action_code = Release_Multi_Schedule;
-		finish.locks       = locks;
-		finish.lock_count  = lock_count;
-		finish.thrds       = thrds;
-		finish.thrd_count  = thrd_count;
-	}
-
-	verify( ! kernelTLS.preemption_state.enabled );
-	returnToKernel();
-	verify( ! kernelTLS.preemption_state.enabled );
-
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-
-void BlockInternal(__finish_callback_fptr_t callback) {
-	disable_interrupts();
-	with( *kernelTLS.this_processor ) {
-		finish.action_code = Callback;
-		finish.callback    = callback;
-	}
-
-	verify( ! kernelTLS.preemption_state.enabled );
-	returnToKernel();
-	verify( ! kernelTLS.preemption_state.enabled );
-
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-
-// KERNEL ONLY
-void LeaveThread(__spinlock_t * lock, thread_desc * thrd) {
-	verify( ! kernelTLS.preemption_state.enabled );
-	with( * kernelTLS.this_processor ) {
-		finish.action_code = thrd ? Release_Schedule : Release;
-		finish.lock        = lock;
-		finish.thrd        = thrd;
-	}
-
-	returnToKernel();
-}
-
-//=============================================================================================
-// Kernel Setup logic
-//=============================================================================================
-//-----------------------------------------------------------------------------
-// Kernel boot procedures
-static void kernel_startup(void) {
-	verify( ! kernelTLS.preemption_state.enabled );
-	__cfaabi_dbg_print_safe("Kernel : Starting\n");
-
-	__cfa_dbg_global_clusters.list{ __get };
-	__cfa_dbg_global_clusters.lock{};
-
-	// Initialize the main cluster
-	mainCluster = (cluster *)&storage_mainCluster;
-	(*mainCluster){"Main Cluster"};
-
-	__cfaabi_dbg_print_safe("Kernel : Main cluster ready\n");
-
-	// Start by initializing the main thread
-	// SKULLDUGGERY: the mainThread steals the process main thread
-	// which will then be scheduled by the mainProcessor normally
-	mainThread = (thread_desc *)&storage_mainThread;
-	current_stack_info_t info;
-	(*mainThread){ &info };
-
-	__cfaabi_dbg_print_safe("Kernel : Main thread ready\n");
-
-
-
-	// Construct the processor context of the main processor
-	void ?{}(processorCtx_t & this, processor * proc) {
-		(this.__cor){ "Processor" };
-		this.__cor.starter = NULL;
-		this.proc = proc;
-	}
-
-	void ?{}(processor & this) with( this ) {
-		name = "Main Processor";
-		cltr = mainCluster;
-		terminated{ 0 };
-		do_terminate = false;
-		preemption_alarm = NULL;
-		pending_preemption = false;
-		kernel_thread = pthread_self();
-
-		runner{ &this };
-		__cfaabi_dbg_print_safe("Kernel : constructed main processor context %p\n", &runner);
-	}
-
-	// Initialize the main processor and the main processor ctx
-	// (the coroutine that contains the processing control flow)
-	mainProcessor = (processor *)&storage_mainProcessor;
-	(*mainProcessor){};
-
-	//initialize the global state variables
-	kernelTLS.this_processor = mainProcessor;
-	kernelTLS.this_thread    = mainThread;
-	kernelTLS.this_coroutine = &mainThread->self_cor;
-
-	// Enable preemption
-	kernel_start_preemption();
-
-	// Add the main thread to the ready queue
-	// once resume is called on mainProcessor->runner the mainThread needs to be scheduled like any normal thread
-	ScheduleThread(mainThread);
-
-	// SKULLDUGGERY: Force a context switch to the main processor to set the main thread's context to the current UNIX
-	// context. Hence, the main thread does not begin through CtxInvokeThread, like all other threads. The trick here is that
-	// mainThread is on the ready queue when this call is made.
-	kernel_first_resume( kernelTLS.this_processor );
-
-
-
-	// THE SYSTEM IS NOW COMPLETELY RUNNING
-	__cfaabi_dbg_print_safe("Kernel : Started\n--------------------------------------------------\n\n");
-
-	verify( ! kernelTLS.preemption_state.enabled );
-	enable_interrupts( __cfaabi_dbg_ctx );
-	verify( TL_GET( preemption_state.enabled ) );
-}
-
-static void kernel_shutdown(void) {
-	__cfaabi_dbg_print_safe("\n--------------------------------------------------\nKernel : Shutting down\n");
-
-	verify( TL_GET( preemption_state.enabled ) );
-	disable_interrupts();
-	verify( ! kernelTLS.preemption_state.enabled );
-
-	// SKULLDUGGERY: Notify the mainProcessor it needs to terminates.
-	// When its coroutine terminates, it return control to the mainThread
-	// which is currently here
-	__atomic_store_n(&mainProcessor->do_terminate, true, __ATOMIC_RELEASE);
-	returnToKernel();
-	mainThread->self_cor.state = Halted;
-
-	// THE SYSTEM IS NOW COMPLETELY STOPPED
-
-	// Disable preemption
-	kernel_stop_preemption();
-
-	// Destroy the main processor and its context in reverse order of construction
-	// These were manually constructed so we need manually destroy them
-	^(mainProcessor->runner){};
-	^(mainProcessor){};
-
-	// Final step, destroy the main thread since it is no longer needed
-	// Since we provided a stack to this taxk it will not destroy anything
-	^(mainThread){};
-
-	^(__cfa_dbg_global_clusters.list){};
-	^(__cfa_dbg_global_clusters.lock){};
-
-	__cfaabi_dbg_print_safe("Kernel : Shutdown complete\n");
-}
-
-//=============================================================================================
-// Kernel Quiescing
-//=============================================================================================
-static void halt(processor * this) with( *this ) {
-	// verify( ! __atomic_load_n(&do_terminate, __ATOMIC_SEQ_CST) );
-
-	with( *cltr ) {
-		lock      (proc_list_lock __cfaabi_dbg_ctx2);
-		remove    (procs, *this);
-		push_front(idles, *this);
-		unlock    (proc_list_lock);
-	}
-
-	__cfaabi_dbg_print_safe("Kernel : Processor %p ready to sleep\n", this);
-
-	wait( idleLock );
-
-	__cfaabi_dbg_print_safe("Kernel : Processor %p woke up and ready to run\n", this);
-
-	with( *cltr ) {
-		lock      (proc_list_lock __cfaabi_dbg_ctx2);
-		remove    (idles, *this);
-		push_front(procs, *this);
-		unlock    (proc_list_lock);
-	}
-}
-
-//=============================================================================================
-// Unexpected Terminating logic
-//=============================================================================================
-static __spinlock_t kernel_abort_lock;
-static bool kernel_abort_called = false;
-
-void * kernel_abort(void) __attribute__ ((__nothrow__)) {
-	// abort cannot be recursively entered by the same or different processors because all signal handlers return when
-	// the globalAbort flag is true.
-	lock( kernel_abort_lock __cfaabi_dbg_ctx2 );
-
-	// first task to abort ?
-	if ( kernel_abort_called ) {			// not first task to abort ?
-		unlock( kernel_abort_lock );
-
-		sigset_t mask;
-		sigemptyset( &mask );
-		sigaddset( &mask, SIGALRM );		// block SIGALRM signals
-		sigsuspend( &mask );			// block the processor to prevent further damage during abort
-		_exit( EXIT_FAILURE );			// if processor unblocks before it is killed, terminate it
-	}
-	else {
-		kernel_abort_called = true;
-		unlock( kernel_abort_lock );
-	}
-
-	return kernelTLS.this_thread;
-}
-
-void kernel_abort_msg( void * kernel_data, char * abort_text, int abort_text_size ) {
-	thread_desc * thrd = kernel_data;
-
-	if(thrd) {
-		int len = snprintf( abort_text, abort_text_size, "Error occurred while executing thread %.256s (%p)", thrd->self_cor.name, thrd );
-		__cfaabi_dbg_bits_write( abort_text, len );
-
-		if ( get_coroutine(thrd) != kernelTLS.this_coroutine ) {
-			len = snprintf( abort_text, abort_text_size, " in coroutine %.256s (%p).\n", kernelTLS.this_coroutine->name, kernelTLS.this_coroutine );
-			__cfaabi_dbg_bits_write( abort_text, len );
-		}
-		else {
-			__cfaabi_dbg_bits_write( ".\n", 2 );
-		}
-	}
-	else {
-		int len = snprintf( abort_text, abort_text_size, "Error occurred outside of any thread.\n" );
-		__cfaabi_dbg_bits_write( abort_text, len );
-	}
-}
-
-int kernel_abort_lastframe( void ) __attribute__ ((__nothrow__)) {
-	return get_coroutine(kernelTLS.this_thread) == get_coroutine(mainThread) ? 4 : 2;
-}
-
-static __spinlock_t kernel_debug_lock;
-
-extern "C" {
-	void __cfaabi_dbg_bits_acquire() {
-		lock( kernel_debug_lock __cfaabi_dbg_ctx2 );
-	}
-
-	void __cfaabi_dbg_bits_release() {
-		unlock( kernel_debug_lock );
-	}
-}
-
-//=============================================================================================
-// Kernel Utilities
-//=============================================================================================
-//-----------------------------------------------------------------------------
-// Locks
-void  ?{}( semaphore & this, int count = 1 ) {
-	(this.lock){};
-	this.count = count;
-	(this.waiting){};
-}
-void ^?{}(semaphore & this) {}
-
-void P(semaphore & this) with( this ){
-	lock( lock __cfaabi_dbg_ctx2 );
-	count -= 1;
-	if ( count < 0 ) {
-		// queue current task
-		append( waiting, kernelTLS.this_thread );
-
-		// atomically release spin lock and block
-		BlockInternal( &lock );
-	}
-	else {
-	    unlock( lock );
-	}
-}
-
-void V(semaphore & this) with( this ) {
-	thread_desc * thrd = NULL;
-	lock( lock __cfaabi_dbg_ctx2 );
-	count += 1;
-	if ( count <= 0 ) {
-		// remove task at head of waiting list
-		thrd = pop_head( waiting );
-	}
-
-	unlock( lock );
-
-	// make new owner
-	WakeThread( thrd );
-}
-
-//-----------------------------------------------------------------------------
-// Global Queues
-void doregister( cluster     & cltr ) {
-	lock      ( __cfa_dbg_global_clusters.lock __cfaabi_dbg_ctx2);
-	push_front( __cfa_dbg_global_clusters.list, cltr );
-	unlock    ( __cfa_dbg_global_clusters.lock );
-}
-
-void unregister( cluster     & cltr ) {
-	lock  ( __cfa_dbg_global_clusters.lock __cfaabi_dbg_ctx2);
-	remove( __cfa_dbg_global_clusters.list, cltr );
-	unlock( __cfa_dbg_global_clusters.lock );
-}
-
-void doregister( cluster * cltr, thread_desc & thrd ) {
-	lock      (cltr->thread_list_lock __cfaabi_dbg_ctx2);
-	push_front(cltr->threads, thrd);
-	unlock    (cltr->thread_list_lock);
-}
-
-void unregister( cluster * cltr, thread_desc & thrd ) {
-	lock  (cltr->thread_list_lock __cfaabi_dbg_ctx2);
-	remove(cltr->threads, thrd );
-	unlock(cltr->thread_list_lock);
-}
-
-void doregister( cluster * cltr, processor * proc ) {
-	lock      (cltr->proc_list_lock __cfaabi_dbg_ctx2);
-	push_front(cltr->procs, *proc);
-	unlock    (cltr->proc_list_lock);
-}
-
-void unregister( cluster * cltr, processor * proc ) {
-	lock  (cltr->proc_list_lock __cfaabi_dbg_ctx2);
-	remove(cltr->procs, *proc );
-	unlock(cltr->proc_list_lock);
-}
-
-//-----------------------------------------------------------------------------
-// Debug
-__cfaabi_dbg_debug_do(
-	void __cfaabi_dbg_record(__spinlock_t & this, const char * prev_name) {
-		this.prev_name = prev_name;
-		this.prev_thrd = kernelTLS.this_thread;
-	}
-)
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/kernel_private.h
===================================================================
--- src/libcfa/concurrency/kernel_private.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,114 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// kernel_private.h --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Feb 13 12:27:26 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 29 14:06:40 2018
-// Update Count     : 3
-//
-
-#pragma once
-
-#include "kernel"
-#include "thread"
-
-#include "alarm.h"
-
-
-//-----------------------------------------------------------------------------
-// Scheduler
-
-extern "C" {
-	void disable_interrupts();
-	void enable_interrupts_noPoll();
-	void enable_interrupts( __cfaabi_dbg_ctx_param );
-}
-
-void ScheduleThread( thread_desc * );
-static inline void WakeThread( thread_desc * thrd ) {
-	if( !thrd ) return;
-
-	disable_interrupts();
-	ScheduleThread( thrd );
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-thread_desc * nextThread(cluster * this);
-
-//Block current thread and release/wake-up the following resources
-void BlockInternal(void);
-void BlockInternal(__spinlock_t * lock);
-void BlockInternal(thread_desc * thrd);
-void BlockInternal(__spinlock_t * lock, thread_desc * thrd);
-void BlockInternal(__spinlock_t * locks [], unsigned short count);
-void BlockInternal(__spinlock_t * locks [], unsigned short count, thread_desc * thrds [], unsigned short thrd_count);
-void BlockInternal(__finish_callback_fptr_t callback);
-void LeaveThread(__spinlock_t * lock, thread_desc * thrd);
-
-//-----------------------------------------------------------------------------
-// Processor
-void main(processorCtx_t *);
-
-static inline void wake_fast(processor * this) {
-	__cfaabi_dbg_print_safe("Kernel : Waking up processor %p\n", this);
-	post( this->idleLock );
-}
-
-static inline void wake(processor * this) {
-	disable_interrupts();
-	wake_fast(this);
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-
-struct event_kernel_t {
-	alarm_list_t alarms;
-	__spinlock_t lock;
-};
-
-extern event_kernel_t * event_kernel;
-
-struct __cfa_kernel_preemption_state_t {
-	bool enabled;
-	bool in_progress;
-	unsigned short disable_count;
-};
-
-extern volatile thread_local __cfa_kernel_preemption_state_t preemption_state;
-
-//-----------------------------------------------------------------------------
-// Threads
-extern "C" {
-      forall(dtype T | is_thread(T))
-      void CtxInvokeThread(T * this);
-}
-
-extern void ThreadCtxSwitch(coroutine_desc * src, coroutine_desc * dst);
-
-__cfaabi_dbg_debug_do(
-	extern void __cfaabi_dbg_thread_register  ( thread_desc * thrd );
-	extern void __cfaabi_dbg_thread_unregister( thread_desc * thrd );
-)
-
-//-----------------------------------------------------------------------------
-// Utils
-#define KERNEL_STORAGE(T,X) static char storage_##X[sizeof(T)]
-
-
-void doregister( struct cluster & cltr );
-void unregister( struct cluster & cltr );
-
-void doregister( struct cluster * cltr, struct thread_desc & thrd );
-void unregister( struct cluster * cltr, struct thread_desc & thrd );
-
-void doregister( struct cluster * cltr, struct processor * proc );
-void unregister( struct cluster * cltr, struct processor * proc );
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/monitor
===================================================================
--- src/libcfa/concurrency/monitor	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,149 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// monitor --
-//
-// Author           : Thierry Delisle
-// Created On       : Thd Feb 23 12:27:26 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Oct  7 18:06:45 2017
-// Update Count     : 10
-//
-
-#pragma once
-
-#include <stddef.h>
-
-#include <assert.h>
-#include "invoke.h"
-#include "stdlib"
-
-trait is_monitor(dtype T) {
-	monitor_desc * get_monitor( T & );
-	void ^?{}( T & mutex );
-};
-
-static inline void ?{}(monitor_desc & this) with( this ) {
-	lock{};
-	entry_queue{};
-	signal_stack{};
-	owner         = NULL;
-	recursion     = 0;
-	mask.accepted = NULL;
-	mask.data     = NULL;
-	mask.size     = 0;
-	dtor_node     = NULL;
-}
-
-struct monitor_guard_t {
-	monitor_desc ** 	m;
-	__lock_size_t   	count;
-	__monitor_group_t prev;
-};
-
-void ?{}( monitor_guard_t & this, monitor_desc ** m, __lock_size_t count, void (*func)() );
-void ^?{}( monitor_guard_t & this );
-
-struct monitor_dtor_guard_t {
-	monitor_desc *    m;
-	__monitor_group_t prev;
-};
-
-void ?{}( monitor_dtor_guard_t & this, monitor_desc ** m, void (*func)() );
-void ^?{}( monitor_dtor_guard_t & this );
-
-static inline forall( dtype T | sized(T) | { void ^?{}( T & mutex ); } )
-void delete( T * th ) {
-	^(*th){};
-	free( th );
-}
-
-//-----------------------------------------------------------------------------
-// Internal scheduling
-
-struct __condition_criterion_t {
-	// Whether or not the criterion is met (True if met)
-	bool ready;
-
-	// The monitor this criterion concerns
-	monitor_desc * target;
-
-	// The parent node to which this criterion belongs
-	struct __condition_node_t * owner;
-
-	// Intrusive linked list Next field
-	__condition_criterion_t * next;
-};
-
-static inline __condition_criterion_t * & get_next( __condition_criterion_t & this ) {
-	return this.next;
-}
-
-struct __condition_node_t {
-	// Thread that needs to be woken when all criteria are met
-	thread_desc * waiting_thread;
-
-	// Array of criteria (Criterions are contiguous in memory)
-	__condition_criterion_t * criteria;
-
-	// Number of criterions in the criteria
-	__lock_size_t count;
-
-	// Intrusive linked list Next field
-	__condition_node_t * next;
-
-	// Custom user info accessible before signalling
-	uintptr_t user_info;
-};
-
-static inline __condition_node_t * & get_next( __condition_node_t & this ) {
-	return this.next;
-}
-
-void ?{}(__condition_node_t & this, thread_desc * waiting_thread, __lock_size_t count, uintptr_t user_info );
-void ?{}(__condition_criterion_t & this );
-void ?{}(__condition_criterion_t & this, monitor_desc * target, __condition_node_t * owner );
-
-struct condition {
-	// Link list which contains the blocked threads as-well as the information needed to unblock them
-	__queue_t(__condition_node_t) blocked;
-
-	// Array of monitor pointers (Monitors are NOT contiguous in memory)
-	monitor_desc ** monitors;
-
-	// Number of monitors in the array
-	__lock_size_t monitor_count;
-};
-
-static inline void ?{}( condition & this ) {
-	this.monitors = NULL;
-	this.monitor_count = 0;
-}
-
-static inline void ^?{}( condition & this ) {
-	free( this.monitors );
-}
-
-              void wait        ( condition & this, uintptr_t user_info = 0 );
-              bool signal      ( condition & this );
-              bool signal_block( condition & this );
-static inline bool is_empty    ( condition & this ) { return !this.blocked.head; }
-         uintptr_t front       ( condition & this );
-
-//-----------------------------------------------------------------------------
-// External scheduling
-
-struct __acceptable_t {
-	inline struct __monitor_group_t;
-	bool is_dtor;
-};
-
-void __waitfor_internal( const __waitfor_mask_t & mask, int duration );
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/monitor.c
===================================================================
--- src/libcfa/concurrency/monitor.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,900 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// monitor_desc.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Thd Feb 23 12:27:26 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 30 14:30:26 2018
-// Update Count     : 9
-//
-
-#include "monitor"
-
-#include <stdlib>
-#include <inttypes.h>
-
-#include "kernel_private.h"
-
-#include "bits/algorithms.h"
-
-//-----------------------------------------------------------------------------
-// Forward declarations
-static inline void set_owner ( monitor_desc * this, thread_desc * owner );
-static inline void set_owner ( monitor_desc * storage [], __lock_size_t count, thread_desc * owner );
-static inline void set_mask  ( monitor_desc * storage [], __lock_size_t count, const __waitfor_mask_t & mask );
-static inline void reset_mask( monitor_desc * this );
-
-static inline thread_desc * next_thread( monitor_desc * this );
-static inline bool is_accepted( monitor_desc * this, const __monitor_group_t & monitors );
-
-static inline void lock_all  ( __spinlock_t * locks [], __lock_size_t count );
-static inline void lock_all  ( monitor_desc * source [], __spinlock_t * /*out*/ locks [], __lock_size_t count );
-static inline void unlock_all( __spinlock_t * locks [], __lock_size_t count );
-static inline void unlock_all( monitor_desc * locks [], __lock_size_t count );
-
-static inline void save   ( monitor_desc * ctx [], __lock_size_t count, __spinlock_t * locks [], unsigned int /*out*/ recursions [], __waitfor_mask_t /*out*/ masks [] );
-static inline void restore( monitor_desc * ctx [], __lock_size_t count, __spinlock_t * locks [], unsigned int /*in */ recursions [], __waitfor_mask_t /*in */ masks [] );
-
-static inline void init     ( __lock_size_t count, monitor_desc * monitors [], __condition_node_t & waiter, __condition_criterion_t criteria [] );
-static inline void init_push( __lock_size_t count, monitor_desc * monitors [], __condition_node_t & waiter, __condition_criterion_t criteria [] );
-
-static inline thread_desc *        check_condition   ( __condition_criterion_t * );
-static inline void                 brand_condition   ( condition & );
-static inline [thread_desc *, int] search_entry_queue( const __waitfor_mask_t &, monitor_desc * monitors [], __lock_size_t count );
-
-forall(dtype T | sized( T ))
-static inline __lock_size_t insert_unique( T * array [], __lock_size_t & size, T * val );
-static inline __lock_size_t count_max    ( const __waitfor_mask_t & mask );
-static inline __lock_size_t aggregate    ( monitor_desc * storage [], const __waitfor_mask_t & mask );
-
-//-----------------------------------------------------------------------------
-// Useful defines
-#define wait_ctx(thrd, user_info)                               /* Create the necessary information to use the signaller stack                         */ \
-	__condition_node_t waiter = { thrd, count, user_info };   /* Create the node specific to this wait operation                                     */ \
-	__condition_criterion_t criteria[count];                  /* Create the creteria this wait operation needs to wake up                            */ \
-	init( count, monitors, waiter, criteria );                /* Link everything together                                                            */ \
-
-#define wait_ctx_primed(thrd, user_info)                        /* Create the necessary information to use the signaller stack                         */ \
-	__condition_node_t waiter = { thrd, count, user_info };   /* Create the node specific to this wait operation                                     */ \
-	__condition_criterion_t criteria[count];                  /* Create the creteria this wait operation needs to wake up                            */ \
-	init_push( count, monitors, waiter, criteria );           /* Link everything together and push it to the AS-Stack                                */ \
-
-#define monitor_ctx( mons, cnt )                                /* Define that create the necessary struct for internal/external scheduling operations */ \
-	monitor_desc ** monitors = mons;                          /* Save the targeted monitors                                                          */ \
-	__lock_size_t count = cnt;                                /* Save the count to a local variable                                                  */ \
-	unsigned int recursions[ count ];                         /* Save the current recursion levels to restore them later                             */ \
-	__waitfor_mask_t masks [ count ];                         /* Save the current waitfor masks to restore them later                                */ \
-	__spinlock_t *   locks [ count ];                         /* We need to pass-in an array of locks to BlockInternal                               */ \
-
-#define monitor_save    save   ( monitors, count, locks, recursions, masks )
-#define monitor_restore restore( monitors, count, locks, recursions, masks )
-
-
-//-----------------------------------------------------------------------------
-// Enter/Leave routines
-
-
-extern "C" {
-	// Enter single monitor
-	static void __enter_monitor_desc( monitor_desc * this, const __monitor_group_t & group ) {
-		// Lock the monitor spinlock
-		lock( this->lock __cfaabi_dbg_ctx2 );
-		// Interrupts disable inside critical section
-		thread_desc * thrd = kernelTLS.this_thread;
-
-		__cfaabi_dbg_print_safe( "Kernel : %10p Entering mon %p (%p)\n", thrd, this, this->owner);
-
-		if( !this->owner ) {
-			// No one has the monitor, just take it
-			set_owner( this, thrd );
-
-			__cfaabi_dbg_print_safe( "Kernel :  mon is free \n" );
-		}
-		else if( this->owner == thrd) {
-			// We already have the monitor, just note how many times we took it
-			this->recursion += 1;
-
-			__cfaabi_dbg_print_safe( "Kernel :  mon already owned \n" );
-		}
-		else if( is_accepted( this, group) ) {
-			// Some one was waiting for us, enter
-			set_owner( this, thrd );
-
-			// Reset mask
-			reset_mask( this );
-
-			__cfaabi_dbg_print_safe( "Kernel :  mon accepts \n" );
-		}
-		else {
-			__cfaabi_dbg_print_safe( "Kernel :  blocking \n" );
-
-			// Some one else has the monitor, wait in line for it
-			append( this->entry_queue, thrd );
-
-			BlockInternal( &this->lock );
-
-			__cfaabi_dbg_print_safe( "Kernel : %10p Entered  mon %p\n", thrd, this);
-
-			// BlockInternal will unlock spinlock, no need to unlock ourselves
-			return;
-		}
-
-		__cfaabi_dbg_print_safe( "Kernel : %10p Entered  mon %p\n", thrd, this);
-
-		// Release the lock and leave
-		unlock( this->lock );
-		return;
-	}
-
-	static void __enter_monitor_dtor( monitor_desc * this, fptr_t func ) {
-		// Lock the monitor spinlock
-		lock( this->lock __cfaabi_dbg_ctx2 );
-		// Interrupts disable inside critical section
-		thread_desc * thrd = kernelTLS.this_thread;
-
-		__cfaabi_dbg_print_safe( "Kernel : %10p Entering dtor for mon %p (%p)\n", thrd, this, this->owner);
-
-
-		if( !this->owner ) {
-			__cfaabi_dbg_print_safe( "Kernel : Destroying free mon %p\n", this);
-
-			// No one has the monitor, just take it
-			set_owner( this, thrd );
-
-			unlock( this->lock );
-			return;
-		}
-		else if( this->owner == thrd) {
-			// We already have the monitor... but where about to destroy it so the nesting will fail
-			// Abort!
-			abort( "Attempt to destroy monitor %p by thread \"%.256s\" (%p) in nested mutex.", this, thrd->self_cor.name, thrd );
-		}
-
-		__lock_size_t count = 1;
-		monitor_desc ** monitors = &this;
-		__monitor_group_t group = { &this, 1, func };
-		if( is_accepted( this, group) ) {
-			__cfaabi_dbg_print_safe( "Kernel :  mon accepts dtor, block and signal it \n" );
-
-			// Wake the thread that is waiting for this
-			__condition_criterion_t * urgent = pop( this->signal_stack );
-			verify( urgent );
-
-			// Reset mask
-			reset_mask( this );
-
-			// Create the node specific to this wait operation
-			wait_ctx_primed( thrd, 0 )
-
-			// Some one else has the monitor, wait for him to finish and then run
-			BlockInternal( &this->lock, urgent->owner->waiting_thread );
-
-			// Some one was waiting for us, enter
-			set_owner( this, thrd );
-		}
-		else {
-			__cfaabi_dbg_print_safe( "Kernel :  blocking \n" );
-
-			wait_ctx( thrd, 0 )
-			this->dtor_node = &waiter;
-
-			// Some one else has the monitor, wait in line for it
-			append( this->entry_queue, thrd );
-			BlockInternal( &this->lock );
-
-			// BlockInternal will unlock spinlock, no need to unlock ourselves
-			return;
-		}
-
-		__cfaabi_dbg_print_safe( "Kernel : Destroying %p\n", this);
-
-	}
-
-	// Leave single monitor
-	void __leave_monitor_desc( monitor_desc * this ) {
-		// Lock the monitor spinlock
-		lock( this->lock __cfaabi_dbg_ctx2 );
-
-		__cfaabi_dbg_print_safe( "Kernel : %10p Leaving mon %p (%p)\n", kernelTLS.this_thread, this, this->owner);
-
-		verifyf( kernelTLS.this_thread == this->owner, "Expected owner to be %p, got %p (r: %i, m: %p)", kernelTLS.this_thread, this->owner, this->recursion, this );
-
-		// Leaving a recursion level, decrement the counter
-		this->recursion -= 1;
-
-		// If we haven't left the last level of recursion
-		// it means we don't need to do anything
-		if( this->recursion != 0) {
-			__cfaabi_dbg_print_safe( "Kernel :  recursion still %d\n", this->recursion);
-			unlock( this->lock );
-			return;
-		}
-
-		// Get the next thread, will be null on low contention monitor
-		thread_desc * new_owner = next_thread( this );
-
-		// We can now let other threads in safely
-		unlock( this->lock );
-
-		//We need to wake-up the thread
-		WakeThread( new_owner );
-	}
-
-	// Leave single monitor for the last time
-	void __leave_dtor_monitor_desc( monitor_desc * this ) {
-		__cfaabi_dbg_debug_do(
-			if( TL_GET( this_thread ) != this->owner ) {
-				abort( "Destroyed monitor %p has inconsistent owner, expected %p got %p.\n", this, TL_GET( this_thread ), this->owner);
-			}
-			if( this->recursion != 1 ) {
-				abort( "Destroyed monitor %p has %d outstanding nested calls.\n", this, this->recursion - 1);
-			}
-		)
-	}
-
-	// Leave the thread monitor
-	// last routine called by a thread.
-	// Should never return
-	void __leave_thread_monitor( thread_desc * thrd ) {
-		monitor_desc * this = &thrd->self_mon;
-
-		// Lock the monitor now
-		lock( this->lock __cfaabi_dbg_ctx2 );
-
-		disable_interrupts();
-
-		thrd->self_cor.state = Halted;
-
-		verifyf( thrd == this->owner, "Expected owner to be %p, got %p (r: %i, m: %p)", thrd, this->owner, this->recursion, this );
-
-		// Leaving a recursion level, decrement the counter
-		this->recursion -= 1;
-
-		// If we haven't left the last level of recursion
-		// it must mean there is an error
-		if( this->recursion != 0) { abort( "Thread internal monitor has unbalanced recursion" ); }
-
-		// Fetch the next thread, can be null
-		thread_desc * new_owner = next_thread( this );
-
-		// Leave the thread, this will unlock the spinlock
-		// Use leave thread instead of BlockInternal which is
-		// specialized for this case and supports null new_owner
-		LeaveThread( &this->lock, new_owner );
-
-		// Control flow should never reach here!
-	}
-}
-
-// Enter multiple monitor
-// relies on the monitor array being sorted
-static inline void enter( __monitor_group_t monitors ) {
-	for( __lock_size_t i = 0; i < monitors.size; i++) {
-		__enter_monitor_desc( monitors[i], monitors );
-	}
-}
-
-// Leave multiple monitor
-// relies on the monitor array being sorted
-static inline void leave(monitor_desc * monitors [], __lock_size_t count) {
-	for( __lock_size_t i = count - 1; i >= 0; i--) {
-		__leave_monitor_desc( monitors[i] );
-	}
-}
-
-// Ctor for monitor guard
-// Sorts monitors before entering
-void ?{}( monitor_guard_t & this, monitor_desc * m [], __lock_size_t count, fptr_t func ) {
-	thread_desc * thrd = TL_GET( this_thread );
-
-	// Store current array
-	this.m = m;
-	this.count = count;
-
-	// Sort monitors based on address
-	__libcfa_small_sort(this.m, count);
-
-	// Save previous thread context
-	this.prev = thrd->monitors;
-
-	// Update thread context (needed for conditions)
-	(thrd->monitors){m, count, func};
-
-	// __cfaabi_dbg_print_safe( "MGUARD : enter %d\n", count);
-
-	// Enter the monitors in order
-	__monitor_group_t group = {this.m, this.count, func};
-	enter( group );
-
-	// __cfaabi_dbg_print_safe( "MGUARD : entered\n" );
-}
-
-
-// Dtor for monitor guard
-void ^?{}( monitor_guard_t & this ) {
-	// __cfaabi_dbg_print_safe( "MGUARD : leaving %d\n", this.count);
-
-	// Leave the monitors in order
-	leave( this.m, this.count );
-
-	// __cfaabi_dbg_print_safe( "MGUARD : left\n" );
-
-	// Restore thread context
-	TL_GET( this_thread )->monitors = this.prev;
-}
-
-// Ctor for monitor guard
-// Sorts monitors before entering
-void ?{}( monitor_dtor_guard_t & this, monitor_desc * m [], fptr_t func ) {
-	// optimization
-	thread_desc * thrd = TL_GET( this_thread );
-
-	// Store current array
-	this.m = *m;
-
-	// Save previous thread context
-	this.prev = thrd->monitors;
-
-	// Update thread context (needed for conditions)
-	(thrd->monitors){m, 1, func};
-
-	__enter_monitor_dtor( this.m, func );
-}
-
-// Dtor for monitor guard
-void ^?{}( monitor_dtor_guard_t & this ) {
-	// Leave the monitors in order
-	__leave_dtor_monitor_desc( this.m );
-
-	// Restore thread context
-	TL_GET( this_thread )->monitors = this.prev;
-}
-
-//-----------------------------------------------------------------------------
-// Internal scheduling types
-void ?{}(__condition_node_t & this, thread_desc * waiting_thread, __lock_size_t count, uintptr_t user_info ) {
-	this.waiting_thread = waiting_thread;
-	this.count = count;
-	this.next = NULL;
-	this.user_info = user_info;
-}
-
-void ?{}(__condition_criterion_t & this ) with( this ) {
-	ready  = false;
-	target = NULL;
-	owner  = NULL;
-	next   = NULL;
-}
-
-void ?{}(__condition_criterion_t & this, monitor_desc * target, __condition_node_t & owner ) {
-	this.ready  = false;
-	this.target = target;
-	this.owner  = &owner;
-	this.next   = NULL;
-}
-
-//-----------------------------------------------------------------------------
-// Internal scheduling
-void wait( condition & this, uintptr_t user_info = 0 ) {
-	brand_condition( this );
-
-	// Check that everything is as expected
-	assertf( this.monitors != NULL, "Waiting with no monitors (%p)", this.monitors );
-	verifyf( this.monitor_count != 0, "Waiting with 0 monitors (%"PRIiFAST16")", this.monitor_count );
-	verifyf( this.monitor_count < 32u, "Excessive monitor count (%"PRIiFAST16")", this.monitor_count );
-
-	// Create storage for monitor context
-	monitor_ctx( this.monitors, this.monitor_count );
-
-	// Create the node specific to this wait operation
-	wait_ctx( TL_GET( this_thread ), user_info );
-
-	// Append the current wait operation to the ones already queued on the condition
-	// We don't need locks for that since conditions must always be waited on inside monitor mutual exclusion
-	append( this.blocked, &waiter );
-
-	// Lock all monitors (aggregates the locks as well)
-	lock_all( monitors, locks, count );
-
-	// Find the next thread(s) to run
-	__lock_size_t thread_count = 0;
-	thread_desc * threads[ count ];
-	__builtin_memset( threads, 0, sizeof( threads ) );
-
-	// Save monitor states
-	monitor_save;
-
-	// Remove any duplicate threads
-	for( __lock_size_t i = 0; i < count; i++) {
-		thread_desc * new_owner = next_thread( monitors[i] );
-		insert_unique( threads, thread_count, new_owner );
-	}
-
-	// Everything is ready to go to sleep
-	BlockInternal( locks, count, threads, thread_count );
-
-	// We are back, restore the owners and recursions
-	monitor_restore;
-}
-
-bool signal( condition & this ) {
-	if( is_empty( this ) ) { return false; }
-
-	//Check that everything is as expected
-	verify( this.monitors );
-	verify( this.monitor_count != 0 );
-
-	//Some more checking in debug
-	__cfaabi_dbg_debug_do(
-		thread_desc * this_thrd = TL_GET( this_thread );
-		if ( this.monitor_count != this_thrd->monitors.size ) {
-			abort( "Signal on condition %p made with different number of monitor(s), expected %zi got %zi", &this, this.monitor_count, this_thrd->monitors.size );
-		}
-
-		for(int i = 0; i < this.monitor_count; i++) {
-			if ( this.monitors[i] != this_thrd->monitors[i] ) {
-				abort( "Signal on condition %p made with different monitor, expected %p got %p", &this, this.monitors[i], this_thrd->monitors[i] );
-			}
-		}
-	);
-
-	__lock_size_t count = this.monitor_count;
-
-	// Lock all monitors
-	lock_all( this.monitors, NULL, count );
-
-	//Pop the head of the waiting queue
-	__condition_node_t * node = pop_head( this.blocked );
-
-	//Add the thread to the proper AS stack
-	for(int i = 0; i < count; i++) {
-		__condition_criterion_t * crit = &node->criteria[i];
-		assert( !crit->ready );
-		push( crit->target->signal_stack, crit );
-	}
-
-	//Release
-	unlock_all( this.monitors, count );
-
-	return true;
-}
-
-bool signal_block( condition & this ) {
-	if( !this.blocked.head ) { return false; }
-
-	//Check that everything is as expected
-	verifyf( this.monitors != NULL, "Waiting with no monitors (%p)", this.monitors );
-	verifyf( this.monitor_count != 0, "Waiting with 0 monitors (%"PRIiFAST16")", this.monitor_count );
-
-	// Create storage for monitor context
-	monitor_ctx( this.monitors, this.monitor_count );
-
-	// Lock all monitors (aggregates the locks them as well)
-	lock_all( monitors, locks, count );
-
-
-	// Create the node specific to this wait operation
-	wait_ctx_primed( kernelTLS.this_thread, 0 )
-
-	//save contexts
-	monitor_save;
-
-	//Find the thread to run
-	thread_desc * signallee = pop_head( this.blocked )->waiting_thread;
-	set_owner( monitors, count, signallee );
-
-	__cfaabi_dbg_print_buffer_decl( "Kernel : signal_block condition %p (s: %p)\n", &this, signallee );
-
-	//Everything is ready to go to sleep
-	BlockInternal( locks, count, &signallee, 1 );
-
-
-	// WE WOKE UP
-
-
-	__cfaabi_dbg_print_buffer_local( "Kernel :   signal_block returned\n" );
-
-	//We are back, restore the masks and recursions
-	monitor_restore;
-
-	return true;
-}
-
-// Access the user_info of the thread waiting at the front of the queue
-uintptr_t front( condition & this ) {
-	verifyf( !is_empty(this),
-		"Attempt to access user data on an empty condition.\n"
-		"Possible cause is not checking if the condition is empty before reading stored data."
-	);
-	return ((typeof(this.blocked.head))this.blocked.head)->user_info;
-}
-
-//-----------------------------------------------------------------------------
-// External scheduling
-// cases to handle :
-// 	- target already there :
-// 		block and wake
-// 	- dtor already there
-// 		put thread on signaller stack
-// 	- non-blocking
-// 		return else
-// 	- timeout
-// 		return timeout
-// 	- block
-// 		setup mask
-// 		block
-void __waitfor_internal( const __waitfor_mask_t & mask, int duration ) {
-	// This statment doesn't have a contiguous list of monitors...
-	// Create one!
-	__lock_size_t max = count_max( mask );
-	monitor_desc * mon_storage[max];
-	__builtin_memset( mon_storage, 0, sizeof( mon_storage ) );
-	__lock_size_t actual_count = aggregate( mon_storage, mask );
-
-	__cfaabi_dbg_print_buffer_decl( "Kernel : waitfor %"PRIdFAST16" (s: %"PRIdFAST16", m: %"PRIdFAST16")\n", actual_count, mask.size, (__lock_size_t)max);
-
-	if(actual_count == 0) return;
-
-	__cfaabi_dbg_print_buffer_local( "Kernel : waitfor internal proceeding\n" );
-
-	// Create storage for monitor context
-	monitor_ctx( mon_storage, actual_count );
-
-	// Lock all monitors (aggregates the locks as well)
-	lock_all( monitors, locks, count );
-
-	{
-		// Check if the entry queue
-		thread_desc * next; int index;
-		[next, index] = search_entry_queue( mask, monitors, count );
-
-		if( next ) {
-			*mask.accepted = index;
-			__acceptable_t& accepted = mask[index];
-			if( accepted.is_dtor ) {
-				__cfaabi_dbg_print_buffer_local( "Kernel : dtor already there\n" );
-				verifyf( accepted.size == 1,  "ERROR: Accepted dtor has more than 1 mutex parameter." );
-
-				monitor_desc * mon2dtor = accepted[0];
-				verifyf( mon2dtor->dtor_node, "ERROR: Accepted monitor has no dtor_node." );
-
-				__condition_criterion_t * dtor_crit = mon2dtor->dtor_node->criteria;
-				push( mon2dtor->signal_stack, dtor_crit );
-
-				unlock_all( locks, count );
-			}
-			else {
-				__cfaabi_dbg_print_buffer_local( "Kernel : thread present, baton-passing\n" );
-
-				// Create the node specific to this wait operation
-				wait_ctx_primed( kernelTLS.this_thread, 0 );
-
-				// Save monitor states
-				monitor_save;
-
-				__cfaabi_dbg_print_buffer_local( "Kernel :  baton of %"PRIdFAST16" monitors : ", count );
-				#ifdef __CFA_DEBUG_PRINT__
-					for( int i = 0; i < count; i++) {
-						__cfaabi_dbg_print_buffer_local( "%p %p ", monitors[i], monitors[i]->signal_stack.top );
-					}
-				#endif
-				__cfaabi_dbg_print_buffer_local( "\n" );
-
-				// Set the owners to be the next thread
-				set_owner( monitors, count, next );
-
-				// Everything is ready to go to sleep
-				BlockInternal( locks, count, &next, 1 );
-
-				// We are back, restore the owners and recursions
-				monitor_restore;
-
-				__cfaabi_dbg_print_buffer_local( "Kernel : thread present, returned\n" );
-			}
-
-			__cfaabi_dbg_print_buffer_local( "Kernel : accepted %d\n", *mask.accepted);
-			return;
-		}
-	}
-
-
-	if( duration == 0 ) {
-		__cfaabi_dbg_print_buffer_local( "Kernel : non-blocking, exiting\n" );
-
-		unlock_all( locks, count );
-
-		__cfaabi_dbg_print_buffer_local( "Kernel : accepted %d\n", *mask.accepted);
-		return;
-	}
-
-
-	verifyf( duration < 0, "Timeout on waitfor statments not supported yet." );
-
-	__cfaabi_dbg_print_buffer_local( "Kernel : blocking waitfor\n" );
-
-	// Create the node specific to this wait operation
-	wait_ctx_primed( kernelTLS.this_thread, 0 );
-
-	monitor_save;
-	set_mask( monitors, count, mask );
-
-	for( __lock_size_t i = 0; i < count; i++) {
-		verify( monitors[i]->owner == kernelTLS.this_thread );
-	}
-
-	//Everything is ready to go to sleep
-	BlockInternal( locks, count );
-
-
-	// WE WOKE UP
-
-
-	//We are back, restore the masks and recursions
-	monitor_restore;
-
-	__cfaabi_dbg_print_buffer_local( "Kernel : exiting\n" );
-
-	__cfaabi_dbg_print_buffer_local( "Kernel : accepted %d\n", *mask.accepted);
-}
-
-//-----------------------------------------------------------------------------
-// Utilities
-
-static inline void set_owner( monitor_desc * this, thread_desc * owner ) {
-	// __cfaabi_dbg_print_safe( "Kernal :   Setting owner of %p to %p ( was %p)\n", this, owner, this->owner );
-
-	//Pass the monitor appropriately
-	this->owner = owner;
-
-	//We are passing the monitor to someone else, which means recursion level is not 0
-	this->recursion = owner ? 1 : 0;
-}
-
-static inline void set_owner( monitor_desc * monitors [], __lock_size_t count, thread_desc * owner ) {
-	monitors[0]->owner     = owner;
-	monitors[0]->recursion = 1;
-	for( __lock_size_t i = 1; i < count; i++ ) {
-		monitors[i]->owner     = owner;
-		monitors[i]->recursion = 0;
-	}
-}
-
-static inline void set_mask( monitor_desc * storage [], __lock_size_t count, const __waitfor_mask_t & mask ) {
-	for( __lock_size_t i = 0; i < count; i++) {
-		storage[i]->mask = mask;
-	}
-}
-
-static inline void reset_mask( monitor_desc * this ) {
-	this->mask.accepted = NULL;
-	this->mask.data = NULL;
-	this->mask.size = 0;
-}
-
-static inline thread_desc * next_thread( monitor_desc * this ) {
-	//Check the signaller stack
-	__cfaabi_dbg_print_safe( "Kernel :  mon %p AS-stack top %p\n", this, this->signal_stack.top);
-	__condition_criterion_t * urgent = pop( this->signal_stack );
-	if( urgent ) {
-		//The signaller stack is not empty,
-		//regardless of if we are ready to baton pass,
-		//we need to set the monitor as in use
-		set_owner( this,  urgent->owner->waiting_thread );
-
-		return check_condition( urgent );
-	}
-
-	// No signaller thread
-	// Get the next thread in the entry_queue
-	thread_desc * new_owner = pop_head( this->entry_queue );
-	set_owner( this, new_owner );
-
-	return new_owner;
-}
-
-static inline bool is_accepted( monitor_desc * this, const __monitor_group_t & group ) {
-	__acceptable_t * it = this->mask.data; // Optim
-	__lock_size_t count = this->mask.size;
-
-	// Check if there are any acceptable functions
-	if( !it ) return false;
-
-	// If this isn't the first monitor to test this, there is no reason to repeat the test.
-	if( this != group[0] ) return group[0]->mask.accepted >= 0;
-
-	// For all acceptable functions check if this is the current function.
-	for( __lock_size_t i = 0; i < count; i++, it++ ) {
-		if( *it == group ) {
-			*this->mask.accepted = i;
-			return true;
-		}
-	}
-
-	// No function matched
-	return false;
-}
-
-static inline void init( __lock_size_t count, monitor_desc * monitors [], __condition_node_t & waiter, __condition_criterion_t criteria [] ) {
-	for( __lock_size_t i = 0; i < count; i++) {
-		(criteria[i]){ monitors[i], waiter };
-	}
-
-	waiter.criteria = criteria;
-}
-
-static inline void init_push( __lock_size_t count, monitor_desc * monitors [], __condition_node_t & waiter, __condition_criterion_t criteria [] ) {
-	for( __lock_size_t i = 0; i < count; i++) {
-		(criteria[i]){ monitors[i], waiter };
-		__cfaabi_dbg_print_safe( "Kernel :  target %p = %p\n", criteria[i].target, &criteria[i] );
-		push( criteria[i].target->signal_stack, &criteria[i] );
-	}
-
-	waiter.criteria = criteria;
-}
-
-static inline void lock_all( __spinlock_t * locks [], __lock_size_t count ) {
-	for( __lock_size_t i = 0; i < count; i++ ) {
-		lock( *locks[i] __cfaabi_dbg_ctx2 );
-	}
-}
-
-static inline void lock_all( monitor_desc * source [], __spinlock_t * /*out*/ locks [], __lock_size_t count ) {
-	for( __lock_size_t i = 0; i < count; i++ ) {
-		__spinlock_t * l = &source[i]->lock;
-		lock( *l __cfaabi_dbg_ctx2 );
-		if(locks) locks[i] = l;
-	}
-}
-
-static inline void unlock_all( __spinlock_t * locks [], __lock_size_t count ) {
-	for( __lock_size_t i = 0; i < count; i++ ) {
-		unlock( *locks[i] );
-	}
-}
-
-static inline void unlock_all( monitor_desc * locks [], __lock_size_t count ) {
-	for( __lock_size_t i = 0; i < count; i++ ) {
-		unlock( locks[i]->lock );
-	}
-}
-
-static inline void save(
-	monitor_desc * ctx [],
-	__lock_size_t count,
-	__attribute((unused)) __spinlock_t * locks [],
-	unsigned int /*out*/ recursions [],
-	__waitfor_mask_t /*out*/ masks []
-) {
-	for( __lock_size_t i = 0; i < count; i++ ) {
-		recursions[i] = ctx[i]->recursion;
-		masks[i]      = ctx[i]->mask;
-	}
-}
-
-static inline void restore(
-	monitor_desc * ctx [],
-	__lock_size_t count,
-	__spinlock_t * locks [],
-	unsigned int /*out*/ recursions [],
-	__waitfor_mask_t /*out*/ masks []
-) {
-	lock_all( locks, count );
-	for( __lock_size_t i = 0; i < count; i++ ) {
-		ctx[i]->recursion = recursions[i];
-		ctx[i]->mask      = masks[i];
-	}
-	unlock_all( locks, count );
-}
-
-// Function has 2 different behavior
-// 1 - Marks a monitors as being ready to run
-// 2 - Checks if all the monitors are ready to run
-//     if so return the thread to run
-static inline thread_desc * check_condition( __condition_criterion_t * target ) {
-	__condition_node_t * node = target->owner;
-	unsigned short count = node->count;
-	__condition_criterion_t * criteria = node->criteria;
-
-	bool ready2run = true;
-
-	for(	int i = 0; i < count; i++ ) {
-
-		// __cfaabi_dbg_print_safe( "Checking %p for %p\n", &criteria[i], target );
-		if( &criteria[i] == target ) {
-			criteria[i].ready = true;
-			// __cfaabi_dbg_print_safe( "True\n" );
-		}
-
-		ready2run = criteria[i].ready && ready2run;
-	}
-
-	__cfaabi_dbg_print_safe( "Kernel :  Runing %i (%p)\n", ready2run, ready2run ? node->waiting_thread : NULL );
-	return ready2run ? node->waiting_thread : NULL;
-}
-
-static inline void brand_condition( condition & this ) {
-	thread_desc * thrd = TL_GET( this_thread );
-	if( !this.monitors ) {
-		// __cfaabi_dbg_print_safe( "Branding\n" );
-		assertf( thrd->monitors.data != NULL, "No current monitor to brand condition %p", thrd->monitors.data );
-		this.monitor_count = thrd->monitors.size;
-
-		this.monitors = (monitor_desc **)malloc( this.monitor_count * sizeof( *this.monitors ) );
-		for( int i = 0; i < this.monitor_count; i++ ) {
-			this.monitors[i] = thrd->monitors[i];
-		}
-	}
-}
-
-static inline [thread_desc *, int] search_entry_queue( const __waitfor_mask_t & mask, monitor_desc * monitors [], __lock_size_t count ) {
-
-	__queue_t(thread_desc) & entry_queue = monitors[0]->entry_queue;
-
-	// For each thread in the entry-queue
-	for(	thread_desc ** thrd_it = &entry_queue.head;
-		*thrd_it;
-		thrd_it = &(*thrd_it)->next
-	) {
-		// For each acceptable check if it matches
-		int i = 0;
-		__acceptable_t * end   = end  (mask);
-		__acceptable_t * begin = begin(mask);
-		for( __acceptable_t * it = begin; it != end; it++, i++ ) {
-			// Check if we have a match
-			if( *it == (*thrd_it)->monitors ) {
-
-				// If we have a match return it
-				// after removeing it from the entry queue
-				return [remove( entry_queue, thrd_it ), i];
-			}
-		}
-	}
-
-	return [0, -1];
-}
-
-forall(dtype T | sized( T ))
-static inline __lock_size_t insert_unique( T * array [], __lock_size_t & size, T * val ) {
-	if( !val ) return size;
-
-	for( __lock_size_t i = 0; i <= size; i++) {
-		if( array[i] == val ) return size;
-	}
-
-	array[size] = val;
-	size = size + 1;
-	return size;
-}
-
-static inline __lock_size_t count_max( const __waitfor_mask_t & mask ) {
-	__lock_size_t max = 0;
-	for( __lock_size_t i = 0; i < mask.size; i++ ) {
-		__acceptable_t & accepted = mask[i];
-		max += accepted.size;
-	}
-	return max;
-}
-
-static inline __lock_size_t aggregate( monitor_desc * storage [], const __waitfor_mask_t & mask ) {
-	__lock_size_t size = 0;
-	for( __lock_size_t i = 0; i < mask.size; i++ ) {
-		__acceptable_t & accepted = mask[i];
-		__libcfa_small_sort( accepted.data, accepted.size );
-		for( __lock_size_t j = 0; j < accepted.size; j++) {
-			insert_unique( storage, size, accepted[j] );
-		}
-	}
-	// TODO insertion sort instead of this
-	__libcfa_small_sort( storage, size );
-	return size;
-}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/mutex
===================================================================
--- src/libcfa/concurrency/mutex	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,171 +1,0 @@
-
-//                              -*- Mode: CFA -*-
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// mutex --
-//
-// Author           : Thierry Delisle
-// Created On       : Fri May 25 01:24:09 2018
-// Last Modified By : Thierry Delisle
-// Last Modified On : Fri May 25 01:24:12 2018
-// Update Count     : 0
-//
-
-#pragma once
-
-#include <stdbool.h>
-
-#include "bits/algorithms.h"
-#include "bits/locks.h"
-
-#include "invoke.h"
-#include "time_t.h"
-
-//-----------------------------------------------------------------------------
-// Locks
-
-// Exclusive lock - non-recursive
-// ---
-struct mutex_lock {
-	// Spin lock used for mutual exclusion
-	__spinlock_t lock;
-
-	// List of blocked threads
-	__queue_t(struct thread_desc) blocked_threads;
-
-	// Locked flag
-	bool is_locked;
-};
-
-void ?{}(mutex_lock & this);
-void ^?{}(mutex_lock & this);
-void lock(mutex_lock & this);
-bool try_lock(mutex_lock & this);
-void unlock(mutex_lock & this);
-
-// Exclusive lock - recursive
-// ---
-struct recursive_mutex_lock{
-	// Spin lock used for mutual exclusion
-	__spinlock_t lock;
-
-	// List of blocked threads
-	__queue_t(struct thread_desc) blocked_threads;
-
-	// Current thread owning the lock
-	struct thread_desc * owner;
-
-	// Number of recursion level
-	size_t recursion_count;
-};
-
-void ?{}(recursive_mutex_lock & this);
-void ^?{}(recursive_mutex_lock & this);
-void lock(recursive_mutex_lock & this);
-bool try_lock(recursive_mutex_lock & this);
-void unlock(recursive_mutex_lock & this);
-
-trait is_lock(dtype L | sized(L)) {
-	void lock  (L &);
-	void unlock(L &);
-};
-
-//-----------------------------------------------------------------------------
-// Condition variables
-
-struct condition_variable {
-	// Spin lock used for mutual exclusion
-	__spinlock_t lock;
-
-	// List of blocked threads
-	__queue_t(struct thread_desc) blocked_threads;
-};
-
-void ?{}(condition_variable & this);
-void ^?{}(condition_variable & this);
-
-void notify_one(condition_variable & this);
-void notify_all(condition_variable & this);
-
-void wait(condition_variable & this);
-
-forall(dtype L | is_lock(L))
-void wait(condition_variable & this, L & l);
-
-//-----------------------------------------------------------------------------
-// Scopes
-forall(dtype L | is_lock(L)) {
-	#if !defined( __TUPLE_ARRAYS_EXIST__ )
-	void lock  ( L * locks [], size_t count);
-	void unlock( L * locks [], size_t count);
-
-	struct lock_scope {
-		L **   locks;
-		size_t count;
-	};
-
-	static inline void ?{}(lock_scope(L) & this) {
-		this.locks = NULL;
-		this.count = 0;
-	}
-
-	static inline void ^?{}(lock_scope(L) & this) {
-		if(this.count > 0) {
-			unlock(this.locks, this.count);
-		}
-	}
-
-	static inline lock_scope(L) lock( L * locks [], size_t count, lock_scope(L) & scope) {
-		lock(locks, count);
-		scope.locks = locks;
-		scope.count = count;
-	}
-
-	static inline void unlock( lock_scope(L) & this ) {
-		unlock(this.locks, this.count);
-		this.count = 0;
-	}
-
-	static inline void release( lock_scope(L) & this ) {
-		this.count = 0;
-	}
-	#else
-	void lock( [L &...] locks );
-	void unlock( [L &...] locks );
-
-	forall(size_t N)
-	struct lock_scope {
-		bool released;
-		[L &... N] locks;
-	};
-
-	void ?{}(lock_scope(L) & this) = void;
-	void ?{}(lock_scope(L) & this, lock_scope(L) other) = void;
-	void ?move?(lock_scope(L) & this, lock_scope(L) & other) = default;
-
-	static inline void ^?{}(lock_scope(L) & this) {
-		if( !this.released ) {
-			unlock(this.locks);
-		}
-	}
-
-	forall(size_t N)
-	static inline lock_scope(L, N) lock( [L &...] locks ) {
-		lock(locks);
-		return @{false, locks};
-	}
-
-	static inline void unlock( lock_scope(L) & this ) {
-		unlock(this.locks);
-		this.released = true
-	}
-
-	static inline void release( lock_scope(L) & this ) {
-		this.released = true;
-	}
-	#endif
-}
Index: c/libcfa/concurrency/mutex.c
===================================================================
--- src/libcfa/concurrency/mutex.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,193 +1,0 @@
-
-//                              -*- Mode: CFA -*-
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// mutex.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Fri May 25 01:37:11 2018
-// Last Modified By : Thierry Delisle
-// Last Modified On : Fri May 25 01:37:51 2018
-// Update Count     : 0
-//
-
-#include "mutex"
-
-#include "kernel_private.h"
-
-//-----------------------------------------------------------------------------
-// Locks
-
-// Exclusive lock - non-recursive
-// ---
-void ?{}(mutex_lock & this) {
-	this.lock{};
-	this.blocked_threads{};
-}
-
-void ^?{}(mutex_lock & this) {
-	// default
-}
-
-void lock(mutex_lock & this) with(this) {
-	lock( lock __cfaabi_dbg_ctx2 );
-	if( is_locked ) {
-		append( blocked_threads, kernelTLS.this_thread );
-		BlockInternal( &lock );
-	}
-	else {
-		is_locked = true;
-		unlock( lock );
-	}
-}
-
-bool try_lock(mutex_lock & this) with(this) {
-	bool ret = false;
-	lock( lock __cfaabi_dbg_ctx2 );
-	if( !is_locked ) {
-		ret = true;
-		is_locked = true;
-	}
-	unlock( lock );
-	return ret;
-}
-
-void unlock(mutex_lock & this) {
-	lock( this.lock __cfaabi_dbg_ctx2 );
-	this.is_locked = (this.blocked_threads != 0);
-	WakeThread(
-		pop_head( this.blocked_threads )
-	);
-	unlock( this.lock );
-}
-
-// Exclusive lock - non-recursive
-// ---
-void ?{}(recursive_mutex_lock & this) {
-	this.lock{};
-	this.blocked_threads{};
-	this.owner = NULL;
-	this.recursion_count = 0;
-}
-
-void ^?{}(recursive_mutex_lock & this) {
-	// default
-}
-
-void lock(recursive_mutex_lock & this) with(this) {
-	lock( lock __cfaabi_dbg_ctx2 );
-	if( owner == NULL ) {
-		owner = kernelTLS.this_thread;
-		recursion_count = 1;
-		unlock( lock );
-	}
-	else if( owner == kernelTLS.this_thread ) {
-		recursion_count++;
-		unlock( lock );
-	}
-	else {
-		append( blocked_threads, kernelTLS.this_thread );
-		BlockInternal( &lock );
-	}
-}
-
-bool try_lock(recursive_mutex_lock & this) with(this) {
-	bool ret = false;
-	lock( lock __cfaabi_dbg_ctx2 );
-	if( owner == NULL ) {
-		owner = kernelTLS.this_thread;
-		recursion_count = 1;
-		ret = true;
-	}
-	else if( owner == kernelTLS.this_thread ) {
-		recursion_count++;
-		ret = true;
-	}
-	unlock( lock );
-	return ret;
-}
-
-void unlock(recursive_mutex_lock & this) with(this) {
-	lock( lock __cfaabi_dbg_ctx2 );
-	recursion_count--;
-	if( recursion_count == 0 ) {
-		thread_desc * thrd = pop_head( blocked_threads );
-		owner = thrd;
-		recursion_count = (thrd ? 1 : 0);
-		WakeThread( thrd );
-	}
-	unlock( lock );
-}
-
-//-----------------------------------------------------------------------------
-// Conditions
-void ?{}(condition_variable & this) {
-	this.blocked_threads{};
-}
-
-void ^?{}(condition_variable & this) {
-	// default
-}
-
-void notify_one(condition_variable & this) with(this) {
-	lock( lock __cfaabi_dbg_ctx2 );
-	WakeThread(
-		pop_head( this.blocked_threads )
-	);
-	unlock( lock );
-}
-
-void notify_all(condition_variable & this) with(this) {
-	lock( lock __cfaabi_dbg_ctx2 );
-	while(this.blocked_threads) {
-		WakeThread(
-			pop_head( this.blocked_threads )
-		);
-	}
-	unlock( lock );
-}
-
-void wait(condition_variable & this) {
-	lock( this.lock __cfaabi_dbg_ctx2 );
-	append( this.blocked_threads, kernelTLS.this_thread );
-	BlockInternal( &this.lock );
-}
-
-forall(dtype L | is_lock(L))
-void wait(condition_variable & this, L & l) {
-	lock( this.lock __cfaabi_dbg_ctx2 );
-	append( this.blocked_threads, kernelTLS.this_thread );
-	void __unlock(void) {
-		unlock(l);
-		unlock(this.lock);
-	}
-	BlockInternal( __unlock );
-	lock(l);
-}
-
-//-----------------------------------------------------------------------------
-// Scopes
-forall(dtype L | is_lock(L))
-void lock_all  ( L * locks[], size_t count) {
-	// Sort locks based on addresses
-	__libcfa_small_sort(locks, count);
-
-	// Lock all
-	for(size_t i = 0; i < count; i++) {
-		L * l = locks[i];
-		lock( *l );
-	}
-}
-
-forall(dtype L | is_lock(L))
-void unlock_all( L * locks[], size_t count) {
-	// Lock all
-	for(size_t i = 0; i < count; i++) {
-		L * l = locks[i];
-		unlock( *l );
-	}
-}
Index: c/libcfa/concurrency/preemption.c
===================================================================
--- src/libcfa/concurrency/preemption.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,491 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// signal.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Jun 5 14:20:42 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jun  5 17:35:49 2018
-// Update Count     : 37
-//
-
-#include "preemption.h"
-#include <assert.h>
-
-extern "C" {
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-}
-
-#include "bits/signal.h"
-
-#if !defined(__CFA_DEFAULT_PREEMPTION__)
-#define __CFA_DEFAULT_PREEMPTION__ 10`ms
-#endif
-
-Duration default_preemption() __attribute__((weak)) {
-	return __CFA_DEFAULT_PREEMPTION__;
-}
-
-// FwdDeclarations : timeout handlers
-static void preempt( processor   * this );
-static void timeout( thread_desc * this );
-
-// FwdDeclarations : Signal handlers
-static void sigHandler_ctxSwitch( __CFA_SIGPARMS__ );
-static void sigHandler_segv     ( __CFA_SIGPARMS__ );
-static void sigHandler_ill      ( __CFA_SIGPARMS__ );
-static void sigHandler_fpe      ( __CFA_SIGPARMS__ );
-static void sigHandler_abort    ( __CFA_SIGPARMS__ );
-
-// FwdDeclarations : alarm thread main
-static void * alarm_loop( __attribute__((unused)) void * args );
-
-// Machine specific register name
-#if   defined( __i386 )
-#define CFA_REG_IP gregs[REG_EIP]
-#elif defined( __x86_64 )
-#define CFA_REG_IP gregs[REG_RIP]
-#elif defined( __ARM_ARCH )
-#define CFA_REG_IP arm_pc
-#else
-#error unknown hardware architecture
-#endif
-
-KERNEL_STORAGE(event_kernel_t, event_kernel);         // private storage for event kernel
-event_kernel_t * event_kernel;                        // kernel public handle to even kernel
-static pthread_t alarm_thread;                        // pthread handle to alarm thread
-
-static void ?{}(event_kernel_t & this) with( this ) {
-	alarms{};
-	lock{};
-}
-
-enum {
-	PREEMPT_NORMAL    = 0,
-	PREEMPT_TERMINATE = 1,
-};
-
-//=============================================================================================
-// Kernel Preemption logic
-//=============================================================================================
-
-// Get next expired node
-static inline alarm_node_t * get_expired( alarm_list_t * alarms, Time currtime ) {
-	if( !alarms->head ) return NULL;                          // If no alarms return null
-	if( alarms->head->alarm >= currtime ) return NULL;        // If alarms head not expired return null
-	return pop(alarms);                                       // Otherwise just pop head
-}
-
-// Tick one frame of the Discrete Event Simulation for alarms
-static void tick_preemption() {
-	alarm_node_t * node = NULL;                     // Used in the while loop but cannot be declared in the while condition
-	alarm_list_t * alarms = &event_kernel->alarms;  // Local copy for ease of reading
-	Time currtime = __kernel_get_time();			// Check current time once so we everything "happens at once"
-
-	//Loop throught every thing expired
-	while( node = get_expired( alarms, currtime ) ) {
-		// __cfaabi_dbg_print_buffer_decl( " KERNEL: preemption tick.\n" );
-
-		// Check if this is a kernel
-		if( node->kernel_alarm ) {
-			preempt( node->proc );
-		}
-		else {
-			timeout( node->thrd );
-		}
-
-		// Check if this is a periodic alarm
-		Duration period = node->period;
-		if( period > 0 ) {
-			// __cfaabi_dbg_print_buffer_local( " KERNEL: alarm period is %lu.\n", period.tv );
-			node->alarm = currtime + period;    // Alarm is periodic, add currtime to it (used cached current time)
-			insert( alarms, node );             // Reinsert the node for the next time it triggers
-		}
-		else {
-			node->set = false;                  // Node is one-shot, just mark it as not pending
-		}
-	}
-
-	// If there are still alarms pending, reset the timer
-	if( alarms->head ) {
-		__cfaabi_dbg_print_buffer_decl( " KERNEL: @%ju(%ju) resetting alarm to %ju.\n", currtime.tv, __kernel_get_time().tv, (alarms->head->alarm - currtime).tv);
-		Duration delta = alarms->head->alarm - currtime;
-		Duration caped = max(delta, 50`us);
-		// itimerval tim  = { caped };
-		// __cfaabi_dbg_print_buffer_local( "    Values are %lu, %lu, %lu %lu.\n", delta.tv, caped.tv, tim.it_value.tv_sec, tim.it_value.tv_usec);
-
-		__kernel_set_timer( caped );
-	}
-}
-
-// Update the preemption of a processor and notify interested parties
-void update_preemption( processor * this, Duration duration ) {
-	alarm_node_t * alarm = this->preemption_alarm;
-
-	// Alarms need to be enabled
-	if ( duration > 0 && ! alarm->set ) {
-		alarm->alarm = __kernel_get_time() + duration;
-		alarm->period = duration;
-		register_self( alarm );
-	}
-	// Zero duration but alarm is set
-	else if ( duration == 0 && alarm->set ) {
-		unregister_self( alarm );
-		alarm->alarm = 0;
-		alarm->period = 0;
-	}
-	// If alarm is different from previous, change it
-	else if ( duration > 0 && alarm->period != duration ) {
-		unregister_self( alarm );
-		alarm->alarm = __kernel_get_time() + duration;
-		alarm->period = duration;
-		register_self( alarm );
-	}
-}
-
-//=============================================================================================
-// Kernel Signal Tools
-//=============================================================================================
-
-__cfaabi_dbg_debug_do( static thread_local void * last_interrupt = 0; )
-
-extern "C" {
-	// Disable interrupts by incrementing the counter
-	void disable_interrupts() {
-		with( kernelTLS.preemption_state ) {
-			#if GCC_VERSION > 50000
-			static_assert(__atomic_always_lock_free(sizeof(enabled), &enabled), "Must be lock-free");
-			#endif
-
-			// Set enabled flag to false
-			// should be atomic to avoid preemption in the middle of the operation.
-			// use memory order RELAXED since there is no inter-thread on this variable requirements
-			__atomic_store_n(&enabled, false, __ATOMIC_RELAXED);
-
-			// Signal the compiler that a fence is needed but only for signal handlers
-			__atomic_signal_fence(__ATOMIC_ACQUIRE);
-
-			__attribute__((unused)) unsigned short new_val = disable_count + 1;
-			disable_count = new_val;
-			verify( new_val < 65_000u );              // If this triggers someone is disabling interrupts without enabling them
-		}
-	}
-
-	// Enable interrupts by decrementing the counter
-	// If counter reaches 0, execute any pending CtxSwitch
-	void enable_interrupts( __cfaabi_dbg_ctx_param ) {
-		processor   * proc = kernelTLS.this_processor; // Cache the processor now since interrupts can start happening after the atomic store
-		thread_desc * thrd = kernelTLS.this_thread;	  // Cache the thread now since interrupts can start happening after the atomic store
-
-		with( kernelTLS.preemption_state ){
-			unsigned short prev = disable_count;
-			disable_count -= 1;
-			verify( prev != 0u );                     // If this triggers someone is enabled already enabled interruptsverify( prev != 0u );
-
-			// Check if we need to prempt the thread because an interrupt was missed
-			if( prev == 1 ) {
-				#if GCC_VERSION > 50000
-				static_assert(__atomic_always_lock_free(sizeof(enabled), &enabled), "Must be lock-free");
-				#endif
-
-				// Set enabled flag to true
-				// should be atomic to avoid preemption in the middle of the operation.
-				// use memory order RELAXED since there is no inter-thread on this variable requirements
-				__atomic_store_n(&enabled, true, __ATOMIC_RELAXED);
-
-				// Signal the compiler that a fence is needed but only for signal handlers
-				__atomic_signal_fence(__ATOMIC_RELEASE);
-				if( proc->pending_preemption ) {
-					proc->pending_preemption = false;
-					BlockInternal( thrd );
-				}
-			}
-		}
-
-		// For debugging purposes : keep track of the last person to enable the interrupts
-		__cfaabi_dbg_debug_do( proc->last_enable = caller; )
-	}
-
-	// Disable interrupts by incrementint the counter
-	// Don't execute any pending CtxSwitch even if counter reaches 0
-	void enable_interrupts_noPoll() {
-		unsigned short prev = kernelTLS.preemption_state.disable_count;
-		kernelTLS.preemption_state.disable_count -= 1;
-		verifyf( prev != 0u, "Incremented from %u\n", prev );                     // If this triggers someone is enabled already enabled interrupts
-		if( prev == 1 ) {
-			#if GCC_VERSION > 50000
-			static_assert(__atomic_always_lock_free(sizeof(kernelTLS.preemption_state.enabled), &kernelTLS.preemption_state.enabled), "Must be lock-free");
-			#endif
-			// Set enabled flag to true
-			// should be atomic to avoid preemption in the middle of the operation.
-			// use memory order RELAXED since there is no inter-thread on this variable requirements
-			__atomic_store_n(&kernelTLS.preemption_state.enabled, true, __ATOMIC_RELAXED);
-
-			// Signal the compiler that a fence is needed but only for signal handlers
-			__atomic_signal_fence(__ATOMIC_RELEASE);
-		}
-	}
-}
-
-// sigprocmask wrapper : unblock a single signal
-static inline void signal_unblock( int sig ) {
-	sigset_t mask;
-	sigemptyset( &mask );
-	sigaddset( &mask, sig );
-
-	if ( pthread_sigmask( SIG_UNBLOCK, &mask, NULL ) == -1 ) {
-	    abort( "internal error, pthread_sigmask" );
-	}
-}
-
-// sigprocmask wrapper : block a single signal
-static inline void signal_block( int sig ) {
-	sigset_t mask;
-	sigemptyset( &mask );
-	sigaddset( &mask, sig );
-
-	if ( pthread_sigmask( SIG_BLOCK, &mask, NULL ) == -1 ) {
-	    abort( "internal error, pthread_sigmask" );
-	}
-}
-
-// kill wrapper : signal a processor
-static void preempt( processor * this ) {
-	sigval_t value = { PREEMPT_NORMAL };
-	pthread_sigqueue( this->kernel_thread, SIGUSR1, value );
-}
-
-// reserved for future use
-static void timeout( thread_desc * this ) {
-	//TODO : implement waking threads
-}
-
-// KERNEL ONLY
-// Check if a CtxSwitch signal handler shoud defer
-// If true  : preemption is safe
-// If false : preemption is unsafe and marked as pending
-static inline bool preemption_ready() {
-	// Check if preemption is safe
-	bool ready = kernelTLS.preemption_state.enabled && ! kernelTLS.preemption_state.in_progress;
-
-	// Adjust the pending flag accordingly
-	kernelTLS.this_processor->pending_preemption = !ready;
-	return ready;
-}
-
-//=============================================================================================
-// Kernel Signal Startup/Shutdown logic
-//=============================================================================================
-
-// Startup routine to activate preemption
-// Called from kernel_startup
-void kernel_start_preemption() {
-	__cfaabi_dbg_print_safe( "Kernel : Starting preemption\n" );
-
-	// Start with preemption disabled until ready
-	kernelTLS.preemption_state.enabled = false;
-	kernelTLS.preemption_state.disable_count = 1;
-
-	// Initialize the event kernel
-	event_kernel = (event_kernel_t *)&storage_event_kernel;
-	(*event_kernel){};
-
-	// Setup proper signal handlers
-	__cfaabi_sigaction( SIGUSR1, sigHandler_ctxSwitch, SA_SIGINFO | SA_RESTART );         // CtxSwitch handler
-
-	signal_block( SIGALRM );
-
-	pthread_create( &alarm_thread, NULL, alarm_loop, NULL );
-}
-
-// Shutdown routine to deactivate preemption
-// Called from kernel_shutdown
-void kernel_stop_preemption() {
-	__cfaabi_dbg_print_safe( "Kernel : Preemption stopping\n" );
-
-	// Block all signals since we are already shutting down
-	sigset_t mask;
-	sigfillset( &mask );
-	sigprocmask( SIG_BLOCK, &mask, NULL );
-
-	// Notify the alarm thread of the shutdown
-	sigval val = { 1 };
-	pthread_sigqueue( alarm_thread, SIGALRM, val );
-
-	// Wait for the preemption thread to finish
-	pthread_join( alarm_thread, NULL );
-
-	// Preemption is now fully stopped
-
-	__cfaabi_dbg_print_safe( "Kernel : Preemption stopped\n" );
-}
-
-// Raii ctor/dtor for the preemption_scope
-// Used by thread to control when they want to receive preemption signals
-void ?{}( preemption_scope & this, processor * proc ) {
-	(this.alarm){ proc, (Time){ 0 }, 0`s };
-	this.proc = proc;
-	this.proc->preemption_alarm = &this.alarm;
-
-	update_preemption( this.proc, this.proc->cltr->preemption_rate );
-}
-
-void ^?{}( preemption_scope & this ) {
-	disable_interrupts();
-
-	update_preemption( this.proc, 0`s );
-}
-
-//=============================================================================================
-// Kernel Signal Handlers
-//=============================================================================================
-
-// Context switch signal handler
-// Receives SIGUSR1 signal and causes the current thread to yield
-static void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ) {
-	__cfaabi_dbg_debug_do( last_interrupt = (void *)(cxt->uc_mcontext.CFA_REG_IP); )
-
-	// SKULLDUGGERY: if a thread creates a processor and the immediately deletes it,
-	// the interrupt that is supposed to force the kernel thread to preempt might arrive
-	// before the kernel thread has even started running. When that happens an iterrupt
-	// we a null 'this_processor' will be caught, just ignore it.
-	if(! kernelTLS.this_processor ) return;
-
-	choose(sfp->si_value.sival_int) {
-		case PREEMPT_NORMAL   : ;// Normal case, nothing to do here
-		case PREEMPT_TERMINATE: verify( __atomic_load_n( &kernelTLS.this_processor->do_terminate, __ATOMIC_SEQ_CST ) );
-		default:
-			abort( "internal error, signal value is %d", sfp->si_value.sival_int );
-	}
-
-	// Check if it is safe to preempt here
-	if( !preemption_ready() ) { return; }
-
-	__cfaabi_dbg_print_buffer_decl( " KERNEL: preempting core %p (%p @ %p).\n", kernelTLS.this_processor, kernelTLS.this_thread, (void *)(cxt->uc_mcontext.CFA_REG_IP) );
-
-	// Sync flag : prevent recursive calls to the signal handler
-	kernelTLS.preemption_state.in_progress = true;
-
-	// Clear sighandler mask before context switching.
-	#if GCC_VERSION > 50000
-	static_assert( sizeof( sigset_t ) == sizeof( cxt->uc_sigmask ), "Expected cxt->uc_sigmask to be of sigset_t" );
-	#endif
-	if ( pthread_sigmask( SIG_SETMASK, (sigset_t *)&(cxt->uc_sigmask), NULL ) == -1 ) {
-		abort( "internal error, sigprocmask" );
-	}
-
-	// TODO: this should go in finish action
-	// Clear the in progress flag
-	kernelTLS.preemption_state.in_progress = false;
-
-	// Preemption can occur here
-
-	BlockInternal( kernelTLS.this_thread ); // Do the actual CtxSwitch
-}
-
-// Main of the alarm thread
-// Waits on SIGALRM and send SIGUSR1 to whom ever needs it
-static void * alarm_loop( __attribute__((unused)) void * args ) {
-	// Block sigalrms to control when they arrive
-	sigset_t mask;
-	sigfillset(&mask);
-	if ( pthread_sigmask( SIG_BLOCK, &mask, NULL ) == -1 ) {
-	    abort( "internal error, pthread_sigmask" );
-	}
-
-	sigemptyset( &mask );
-	sigaddset( &mask, SIGALRM );
-
-	// Main loop
-	while( true ) {
-		// Wait for a sigalrm
-		siginfo_t info;
-		int sig = sigwaitinfo( &mask, &info );
-
-		if( sig < 0 ) {
-			//Error!
-			int err = errno;
-			switch( err ) {
-				case EAGAIN :
-				case EINTR :
-					{__cfaabi_dbg_print_buffer_decl( " KERNEL: Spurious wakeup %d.\n", err );}
-					continue;
-       			case EINVAL :
-				 	abort( "Timeout was invalid." );
-				default:
-				 	abort( "Unhandled error %d", err);
-			}
-		}
-
-		// If another signal arrived something went wrong
-		assertf(sig == SIGALRM, "Kernel Internal Error, sigwait: Unexpected signal %d (%d : %d)\n", sig, info.si_code, info.si_value.sival_int);
-
-		// __cfaabi_dbg_print_safe( "Kernel : Caught alarm from %d with %d\n", info.si_code, info.si_value.sival_int );
-		// Switch on the code (a.k.a. the sender) to
-		switch( info.si_code )
-		{
-		// Timers can apparently be marked as sent for the kernel
-		// In either case, tick preemption
-		case SI_TIMER:
-		case SI_KERNEL:
-			// __cfaabi_dbg_print_safe( "Kernel : Preemption thread tick\n" );
-			lock( event_kernel->lock __cfaabi_dbg_ctx2 );
-			tick_preemption();
-			unlock( event_kernel->lock );
-			break;
-		// Signal was not sent by the kernel but by an other thread
-		case SI_QUEUE:
-			// For now, other thread only signal the alarm thread to shut it down
-			// If this needs to change use info.si_value and handle the case here
-			goto EXIT;
-		}
-	}
-
-EXIT:
-	__cfaabi_dbg_print_safe( "Kernel : Preemption thread stopping\n" );
-	return NULL;
-}
-
-//=============================================================================================
-// Kernel Signal Debug
-//=============================================================================================
-
-void __cfaabi_check_preemption() {
-	bool ready = kernelTLS.preemption_state.enabled;
-	if(!ready) { abort("Preemption should be ready"); }
-
-	sigset_t oldset;
-	int ret;
-	ret = pthread_sigmask(0, NULL, &oldset);
-	if(ret != 0) { abort("ERROR sigprocmask returned %d", ret); }
-
-	ret = sigismember(&oldset, SIGUSR1);
-	if(ret <  0) { abort("ERROR sigismember returned %d", ret); }
-	if(ret == 1) { abort("ERROR SIGUSR1 is disabled"); }
-
-	ret = sigismember(&oldset, SIGALRM);
-	if(ret <  0) { abort("ERROR sigismember returned %d", ret); }
-	if(ret == 0) { abort("ERROR SIGALRM is enabled"); }
-
-	ret = sigismember(&oldset, SIGTERM);
-	if(ret <  0) { abort("ERROR sigismember returned %d", ret); }
-	if(ret == 1) { abort("ERROR SIGTERM is disabled"); }
-}
-
-#ifdef __CFA_WITH_VERIFY__
-bool __cfaabi_dbg_in_kernel() {
-	return !kernelTLS.preemption_state.enabled;
-}
-#endif
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/preemption.h
===================================================================
--- src/libcfa/concurrency/preemption.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,36 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// preemption.h --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Jun 5 14:20:42 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 23 17:18:53 2018
-// Update Count     : 2
-//
-
-#pragma once
-
-#include "alarm.h"
-#include "kernel_private.h"
-
-void kernel_start_preemption();
-void kernel_stop_preemption();
-void update_preemption( processor * this, Duration duration );
-
-struct preemption_scope {
-	alarm_node_t alarm;
-	processor * proc;
-};
-
-void ?{}( preemption_scope & this, processor * proc );
-void ^?{}( preemption_scope & this );
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/thread
===================================================================
--- src/libcfa/concurrency/thread	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,96 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// thread --
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Jan 17 12:27:26 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 29 14:07:11 2018
-// Update Count     : 4
-//
-
-#pragma once
-
-#include <assert.h>
-#include "invoke.h"
-
-#include "coroutine"
-#include "kernel"
-#include "monitor"
-
-//-----------------------------------------------------------------------------
-// thread trait
-trait is_thread(dtype T) {
-      void ^?{}(T& mutex this);
-      void main(T& this);
-      thread_desc* get_thread(T& this);
-};
-
-#define DECL_THREAD(X) thread_desc* get_thread(X& this) { return &this.__thrd; } void main(X& this)
-
-forall( dtype T | is_thread(T) )
-static inline coroutine_desc* get_coroutine(T & this) {
-	return &get_thread(this)->self_cor;
-}
-
-forall( dtype T | is_thread(T) )
-static inline monitor_desc* get_monitor(T & this) {
-	return &get_thread(this)->self_mon;
-}
-
-static inline coroutine_desc* get_coroutine(thread_desc * this) {
-	return &this->self_cor;
-}
-
-static inline monitor_desc* get_monitor(thread_desc * this) {
-	return &this->self_mon;
-}
-
-extern struct cluster * mainCluster;
-
-forall( dtype T | is_thread(T) )
-void __thrd_start( T & this );
-
-//-----------------------------------------------------------------------------
-// Ctors and dtors
-void ?{}(thread_desc & this, const char * const name, struct cluster & cl, void * storage, size_t storageSize );
-void ^?{}(thread_desc & this);
-
-static inline void ?{}(thread_desc & this)                                                                  { this{ "Anonymous Thread", *mainCluster, NULL, 0 }; }
-static inline void ?{}(thread_desc & this, size_t stackSize )                                               { this{ "Anonymous Thread", *mainCluster, NULL, stackSize }; }
-static inline void ?{}(thread_desc & this, void * storage, size_t storageSize )                             { this{ "Anonymous Thread", *mainCluster, storage, storageSize }; }
-static inline void ?{}(thread_desc & this, struct cluster & cl )                                            { this{ "Anonymous Thread", cl, NULL, 0 }; }
-static inline void ?{}(thread_desc & this, struct cluster & cl, size_t stackSize )                          { this{ "Anonymous Thread", cl, 0, stackSize }; }
-static inline void ?{}(thread_desc & this, struct cluster & cl, void * storage, size_t storageSize )        { this{ "Anonymous Thread", cl, storage, storageSize }; }
-static inline void ?{}(thread_desc & this, const char * const name)                                         { this{ name, *mainCluster, NULL, 0 }; }
-static inline void ?{}(thread_desc & this, const char * const name, struct cluster & cl )                   { this{ name, cl, NULL, 0 }; }
-static inline void ?{}(thread_desc & this, const char * const name, struct cluster & cl, size_t stackSize ) { this{ name, cl, NULL, stackSize }; }
-
-//-----------------------------------------------------------------------------
-// thread runner
-// Structure that actually start and stop threads
-forall( dtype T | sized(T) | is_thread(T) )
-struct scoped {
-	T handle;
-};
-
-forall( dtype T | sized(T) | is_thread(T) | { void ?{}(T&); } )
-void ?{}( scoped(T)& this );
-
-forall( dtype T, ttype P | sized(T) | is_thread(T) | { void ?{}(T&, P); } )
-void ?{}( scoped(T)& this, P params );
-
-forall( dtype T | sized(T) | is_thread(T) )
-void ^?{}( scoped(T)& this );
-
-void yield();
-void yield( unsigned times );
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/concurrency/thread.c
===================================================================
--- src/libcfa/concurrency/thread.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,135 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// thread.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Jan 17 12:27:26 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 30 17:19:52 2018
-// Update Count     : 8
-//
-
-#include "thread"
-
-#include "kernel_private.h"
-
-#define __CFA_INVOKE_PRIVATE__
-#include "invoke.h"
-
-extern "C" {
-	#include <fenv.h>
-	#include <stddef.h>
-}
-
-//extern volatile thread_local processor * this_processor;
-
-//-----------------------------------------------------------------------------
-// Thread ctors and dtors
-void ?{}(thread_desc & this, const char * const name, cluster & cl, void * storage, size_t storageSize ) with( this ) {
-	self_cor{ name, storage, storageSize };
-	verify(&self_cor);
-	curr_cor = &self_cor;
-	self_mon.owner = &this;
-	self_mon.recursion = 1;
-	self_mon_p = &self_mon;
-	curr_cluster = &cl;
-	next = NULL;
-
-	node.next = NULL;
-	node.prev = NULL;
-	doregister(curr_cluster, this);
-
-	monitors{ &self_mon_p, 1, (fptr_t)0 };
-}
-
-void ^?{}(thread_desc& this) with( this ) {
-	unregister(curr_cluster, this);
-	^self_cor{};
-}
-
-forall( dtype T | sized(T) | is_thread(T) | { void ?{}(T&); } )
-void ?{}( scoped(T)& this ) with( this ) {
-	handle{};
-	__thrd_start(handle);
-}
-
-forall( dtype T, ttype P | sized(T) | is_thread(T) | { void ?{}(T&, P); } )
-void ?{}( scoped(T)& this, P params ) with( this ) {
-	handle{ params };
-	__thrd_start(handle);
-}
-
-forall( dtype T | sized(T) | is_thread(T) )
-void ^?{}( scoped(T)& this ) with( this ) {
-	^handle{};
-}
-
-//-----------------------------------------------------------------------------
-// Starting and stopping threads
-forall( dtype T | is_thread(T) )
-void __thrd_start( T& this ) {
-	coroutine_desc* thrd_c = get_coroutine(this);
-	thread_desc   * thrd_h = get_thread   (this);
-	thrd_c->last = TL_GET( this_coroutine );
-
-	// __cfaabi_dbg_print_safe("Thread start : %p (t %p, c %p)\n", this, thrd_c, thrd_h);
-
-	disable_interrupts();
-	create_stack(&thrd_c->stack, thrd_c->stack.size);
-	kernelTLS.this_coroutine = thrd_c;
-	CtxStart(&this, CtxInvokeThread);
-	assert( thrd_c->last->stack.context );
-	CtxSwitch( thrd_c->last->stack.context, thrd_c->stack.context );
-
-	ScheduleThread(thrd_h);
-	enable_interrupts( __cfaabi_dbg_ctx );
-}
-
-extern "C" {
-	// KERNEL ONLY
-	void __finish_creation(void) {
-		coroutine_desc* thrd_c = kernelTLS.this_coroutine;
-		ThreadCtxSwitch( thrd_c, thrd_c->last );
-	}
-}
-
-void yield( void ) {
-	// Safety note : This could cause some false positives due to preemption
-      verify( TL_GET( preemption_state.enabled ) );
-	BlockInternal( TL_GET( this_thread ) );
-	// Safety note : This could cause some false positives due to preemption
-      verify( TL_GET( preemption_state.enabled ) );
-}
-
-void yield( unsigned times ) {
-	for( unsigned i = 0; i < times; i++ ) {
-		yield();
-	}
-}
-
-// KERNEL ONLY
-void ThreadCtxSwitch(coroutine_desc* src, coroutine_desc* dst) {
-	// set state of current coroutine to inactive
-	src->state = src->state == Halted ? Halted : Inactive;
-	dst->state = Active;
-
-	// set new coroutine that the processor is executing
-	// and context switch to it
-	kernelTLS.this_coroutine = dst;
-	assert( src->stack.context );
-	CtxSwitch( src->stack.context, dst->stack.context );
-	kernelTLS.this_coroutine = src;
-
-	// set state of new coroutine to active
-	dst->state = dst->state == Halted ? Halted : Inactive;
-	src->state = Active;
-}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/containers/maybe
===================================================================
--- src/libcfa/containers/maybe	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,69 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// maybe -- May contain a value.
-//
-// Author           : Andrew Beach
-// Created On       : Wed May 24 14:43:00 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 10:00:52 2017
-// Update Count     : 4
-//
-
-#pragma once
-
-#include <stdbool.h>
-
-// DO NOT USE DIRECTLY!
-forall(otype T)
-struct maybe {
-    bool has_value;
-    T value;
-};
-
-
-forall(otype T)
-void ?{}(maybe(T) & this);
-
-forall(otype T)
-void ?{}(maybe(T) & this, T value);
-
-forall(otype T)
-void ?{}(maybe(T) & this, maybe(T) other);
-
-forall(otype T)
-void ^?{}(maybe(T) & this);
-
-forall(otype T)
-maybe(T) ?=?(maybe(T) & this, maybe(T) other);
-
-forall(otype T)
-bool ?!=?(maybe(T) this, zero_t);
-
-/* Waiting for bug#11 to be fixed.
-forall(otype T)
-maybe(T) maybe_value(T value);
-
-forall(otype T)
-maybe(T) maybe_none();
-*/
-
-forall(otype T)
-bool has_value(maybe(T) * this);
-
-forall(otype T)
-T get(maybe(T) * this);
-
-forall(otype T)
-void set(maybe(T) * this, T value);
-
-forall(otype T)
-void set_none(maybe(T) * this);
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/containers/maybe.c
===================================================================
--- src/libcfa/containers/maybe.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,102 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// maybe.c -- May contain a value.
-//
-// Author           : Andrew Beach
-// Created On       : Wed May 24 15:40:00 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 15:23:50 2017
-// Update Count     : 2
-//
-
-#include <containers/maybe>
-#include <assert.h>
-
-
-forall(otype T)
-void ?{}(maybe(T) & this) {
-	this.has_value = false;
-}
-
-forall(otype T)
-void ?{}(maybe(T) & this, T value) {
-	this.has_value = true;
-	(this.value){value};
-}
-
-forall(otype T)
-void ?{}(maybe(T) & this, maybe(T) other) {
-	this.has_value = other.has_value;
-	if (other.has_value) {
-		(this.value){other.value};
-	}
-}
-
-forall(otype T)
-maybe(T) ?=?(maybe(T) & this, maybe(T) that) {
-	if (this.has_value & that.has_value) {
-		this.value = that.value;
-	} else if (this.has_value) {
-		^(this.value){};
-		this.has_value = false;
-	} else if (that.has_value) {
-		this.has_value = true;
-		(this.value){that.value};
-	}
-	return this;
-}
-
-forall(otype T)
-void ^?{}(maybe(T) & this) {
-	if (this.has_value) {
-		^(this.value){};
-	}
-}
-
-forall(otype T)
-bool ?!=?(maybe(T) this, zero_t) {
-	return this.has_value;
-}
-
-forall(otype T)
-maybe(T) maybe_value(T value) {
-	return (maybe(T)){value};
-}
-
-forall(otype T)
-maybe(T) maybe_none() {
-	return (maybe(T)){};
-}
-
-forall(otype T)
-bool has_value(maybe(T) * this) {
-	return this->has_value;
-}
-
-forall(otype T)
-T get(maybe(T) * this) {
-	assertf(this->has_value, "attempt to get from maybe without value");
-	return this->value;
-}
-
-forall(otype T)
-void set(maybe(T) * this, T value) {
-	if (this->has_value) {
-		this->value = value;
-	} else {
-		this->has_value = true;
-		(this->value){value};
-	}
-}
-
-forall(otype T)
-void set_none(maybe(T) * this) {
-	if (this->has_value) {
-		this->has_value = false;
-		^(this->value){};
-	}
-}
Index: c/libcfa/containers/pair
===================================================================
--- src/libcfa/containers/pair	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,48 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// pair --
-//
-// Author           : Aaron Moss
-// Created On       : Wed Apr 12 15:32:00 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:59:53 2017
-// Update Count     : 2
-//
-
-#pragma once
-
-forall(otype R, otype S) struct pair {
-	R first;
-	S second;
-};
-
-forall(otype R, otype S 
-	| { int ?==?(R, R); int ?<?(R, R); int ?<?(S, S); })
-int ?<?(pair(R, S) p, pair(R, S) q);
-
-forall(otype R, otype S 
-	| { int ?==?(R, R); int ?<?(R, R); int ?<=?(S, S); })
-int ?<=?(pair(R, S) p, pair(R, S) q);
-
-forall(otype R, otype S | { int ?==?(R, R); int ?==?(S, S); })
-int ?==?(pair(R, S) p, pair(R, S) q);
-
-forall(otype R, otype S | { int ?!=?(R, R); int ?!=?(S, S); })
-int ?!=?(pair(R, S) p, pair(R, S) q);
-
-forall(otype R, otype S 
-	| { int ?==?(R, R); int ?>?(R, R); int ?>?(S, S); })
-int ?>?(pair(R, S) p, pair(R, S) q);
-
-forall(otype R, otype S 
-	| { int ?==?(R, R); int ?>?(R, R); int ?>=?(S, S); })
-int ?>=?(pair(R, S) p, pair(R, S) q);
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/containers/pair.c
===================================================================
--- src/libcfa/containers/pair.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,47 +1,0 @@
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// pair.c --
-//
-// Author           : Aaron Moss
-// Created On       : Wed Apr 12 15:32:00 2017
-// Last Modified By : Aaron Moss
-// Last Modified On : Wed Apr 12 15:32:00 2017
-// Update Count     : 1
-//
-
-#include <containers/pair>
-
-forall(otype R, otype S 
-	| { int ?==?(R, R); int ?<?(R, R); int ?<?(S, S); })
-int ?<?(pair(R, S) p, pair(R, S) q) {
-	return p.first < q.first || ( p.first == q.first && p.second < q.second );
-}
-
-forall(otype R, otype S 
-	| { int ?==?(R, R); int ?<?(R, R); int ?<=?(S, S); })
-int ?<=?(pair(R, S) p, pair(R, S) q) {
-	return p.first < q.first || ( p.first == q.first && p.second <= q.second );
-}
-
-forall(otype R, otype S | { int ?==?(R, R); int ?==?(S, S); })
-int ?==?(pair(R, S) p, pair(R, S) q) {
-	return p.first == q.first && p.second == q.second;
-}
-
-forall(otype R, otype S | { int ?!=?(R, R); int ?!=?(S, S); })
-int ?!=?(pair(R, S) p, pair(R, S) q) {
-	return p.first != q.first || p.second != q.second;
-}
-
-forall(otype R, otype S 
-	| { int ?==?(R, R); int ?>?(R, R); int ?>?(S, S); })
-int ?>?(pair(R, S) p, pair(R, S) q) {
-	return p.first > q.first || ( p.first == q.first && p.second > q.second );
-}
-
-forall(otype R, otype S 
-	| { int ?==?(R, R); int ?>?(R, R); int ?>=?(S, S); })
-int ?>=?(pair(R, S) p, pair(R, S) q) {
-	return p.first > q.first || ( p.first == q.first && p.second >= q.second );
-}
Index: c/libcfa/containers/result
===================================================================
--- src/libcfa/containers/result	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,81 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// result -- Contains the expected value or an error value.
-//
-// Author           : Andrew Beach
-// Created On       : Wed May 24 14:45:00 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 10:00:44 2017
-// Update Count     : 3
-//
-
-#pragma once
-
-#include <stdbool.h>
-
-// DO NOT USE DIRECTLY!
-forall(otype T, otype E)
-union inner_result{
-	T value;
-	E error;
-};
-
-forall(otype T, otype E)
-struct result {
-	bool has_value;
-	inline union inner_result(T, E);
-};
-
-
-forall(otype T, otype E)
-void ?{}(result(T, E) & this);
-
-forall(otype T, otype E)
-void ?{}(result(T, E) & this, one_t, T value);
-
-forall(otype T, otype E)
-void ?{}(result(T, E) & this, zero_t, E error);
-
-forall(otype T, otype E)
-void ?{}(result(T, E) & this, result(T, E) other);
-
-forall(otype T, otype E)
-void ^?{}(result(T, E) & this);
-
-forall(otype T, otype E)
-result(T, E) ?=?(result(T, E) & this, result(T, E) other);
-
-forall(otype T, otype E)
-bool ?!=?(result(T, E) this, zero_t);
-
-/* Wating for bug#11 to be fixed.
-forall(otype T, otype E)
-result(T, E) result_value(T value);
-
-forall(otype T, otype E)
-result(T, E) result_error(E error);
-*/
-
-forall(otype T, otype E)
-bool has_value(result(T, E) * this);
-
-forall(otype T, otype E)
-T get(result(T, E) * this);
-
-forall(otype T, otype E)
-E get_error(result(T, E) * this);
-
-forall(otype T, otype E)
-void set(result(T, E) * this, T value);
-
-forall(otype T, otype E)
-void set_error(result(T, E) * this, E error);
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/containers/result.c
===================================================================
--- src/libcfa/containers/result.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,126 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// result.c -- Contains the expected value or an error value.
-//
-// Author           : Andrew Beach
-// Created On       : Wed May 24 15:40:00 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 15:23:58 2017
-// Update Count     : 2
-//
-
-#include <containers/result>
-#include <assert.h>
-
-
-forall(otype T, otype E)
-void ?{}(result(T, E) & this) {
-	this.has_value = false;
-	(this.error){};
-}
-
-forall(otype T, otype E)
-void ?{}(result(T, E) & this, one_t, T value) {
-	this.has_value = true;
-	(this.value){value};
-}
-
-forall(otype T, otype E)
-void ?{}(result(T, E) & this, zero_t, E error) {
-	this.has_value = false;
-	(this.error){error};
-}
-
-forall(otype T, otype E)
-void ?{}(result(T, E) & this, result(T, E) other) {
-	this.has_value = other.has_value;
-	if (other.has_value) {
-		(this.value){other.value};
-	} else {
-		(this.error){other.error};
-	}
-}
-
-forall(otype T, otype E)
-result(T, E) ?=?(result(T, E) & this, result(T, E) that) {
-	if (this.has_value & that.has_value) {
-		this.value = that.value;
-	} else if (this.has_value) {
-		^(this.value){};
-		this.has_value = false;
-		(this.error){that.error};
-	} else if (that.has_value) {
-		^(this.error){};
-		this.has_value = true;
-		(this.value){that.value};
-	} else {
-		this.error = that.error;
-	}
-}
-
-forall(otype T, otype E)
-void ^?{}(result(T, E) & this) {
-	if (this.has_value) {
-		^(this.value){};
-	} else {
-		^(this.error){};
-	}
-}
-
-forall(otype T, otype E)
-bool ?!=?(result(T, E) this, zero_t) {
-	return this.has_value;
-}
-
-forall(otype T, otype E)
-result(T, E) result_value(T value) {
-	return (result(T, E)){1, value};
-}
-
-forall(otype T, otype E)
-result(T, E) result_error(E error) {
-	return (result(T, E)){0, error};
-}
-
-forall(otype T, otype E)
-bool has_value(result(T, E) * this) {
-	return this->has_value;
-}
-
-forall(otype T, otype E)
-T get(result(T, E) * this) {
-	assertf(this->has_value, "attempt to get from result without value");
-	return this->value;
-}
-
-forall(otype T, otype E)
-E get_error(result(T, E) * this) {
-	assertf(!this->has_value, "attempt to get from result without error");
-	return this->error;
-}
-
-forall(otype T, otype E)
-void set(result(T, E) * this, T value) {
-	if (this->has_value) {
-		this->value = value;
-	} else {
-		^(this->error){};
-		this->has_value = true;
-		(this->value){value};
-	}
-}
-
-forall(otype T, otype E)
-void set_error(result(T, E) * this, E error) {
-	if (this->has_value) {
-		^(this->value){};
-		this->has_value = false;
-		(this->error){error};
-	} else {
-		this->error = error;
-	}
-}
Index: c/libcfa/containers/vector
===================================================================
--- src/libcfa/containers/vector	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,170 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// vector --
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Jul  5 18:00:07 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 10:01:18 2017
-// Update Count     : 3
-//
-
-#pragma once
-
-extern "C" {
-#include <stdbool.h>
-}
-
-//------------------------------------------------------------------------------
-//Allocator
-forall(otype T)
-struct heap_allocator
-{
-	T* storage;
-	size_t capacity;
-};
-
-forall(otype T)
-void ?{}(heap_allocator(T)& this);
-
-forall(otype T)
-void ?{}(heap_allocator(T)& this, heap_allocator(T) rhs);
-
-forall(otype T)
-heap_allocator(T) ?=?(heap_allocator(T)& this, heap_allocator(T) rhs);
-
-forall(otype T)
-void ^?{}(heap_allocator(T)& this);
-
-forall(otype T)
-void realloc_storage(heap_allocator(T)* this, size_t size);
-
-forall(otype T)
-static inline T* data(heap_allocator(T)* this)
-{
-	return this->storage;
-}
-
-//------------------------------------------------------------------------------
-//Declaration
-trait allocator_c(otype T, otype allocator_t)
-{
-	void realloc_storage(allocator_t*, size_t);
-	T* data(allocator_t*);
-};
-
-forall(otype T, otype allocator_t = heap_allocator(T) | allocator_c(T, allocator_t))
-struct vector;
-
-//------------------------------------------------------------------------------
-//Initialization
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void ?{}(vector(T, allocator_t)& this);
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void ?{}(vector(T, allocator_t)& this, vector(T, allocator_t) rhs);
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-vector(T, allocator_t) ?=?(vector(T, allocator_t)& this, vector(T, allocator_t) rhs);
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void ^?{}(vector(T, allocator_t)& this);
-
-forall(otype T, otype allocator_t = heap_allocator(T) | allocator_c(T, allocator_t))
-struct vector
-{
-	allocator_t storage;
-	size_t size;
-};
-
-//------------------------------------------------------------------------------
-//Capacity
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-static inline bool empty(vector(T, allocator_t)* this)
-{
-	return this->size == 0;
-}
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-static inline size_t size(vector(T, allocator_t)* this)
-{
-	return this->size;
-}
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-static inline void reserve(vector(T, allocator_t)* this, size_t size)
-{
-	realloc_storage(&this->storage, this->size+1);
-}
-
-//------------------------------------------------------------------------------
-//Element access
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-static inline T at(vector(T, allocator_t)* this, size_t index)
-{
-	return data(&this->storage)[index];
-}
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-static inline T ?[?](vector(T, allocator_t)* this, size_t index)
-{
-	return data(&this->storage)[index];
-}
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-static inline T front(vector(T, allocator_t)* this)
-{
-	return data(&this->storage)[0];
-}
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-static inline T back(vector(T, allocator_t)* this)
-{
-	return data(&this->storage)[this->size - 1];
-}
-
-//------------------------------------------------------------------------------
-//Modifiers
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void push_back(vector(T, allocator_t)* this, T value);
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void pop_back(vector(T, allocator_t)* this);
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void clear(vector(T, allocator_t)* this);
-
-//------------------------------------------------------------------------------
-//Iterators
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-static inline T* begin(vector(T, allocator_t)* this)
-{
-	return data(&this->storage);
-}
-
-// forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-// static inline const T* cbegin(const vector(T, allocator_t)* this)
-// {
-// 	return data(&this->storage);
-// }
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-static inline T* end(vector(T, allocator_t)* this)
-{
-	return data(&this->storage) + this->size;
-}
-
-// forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-// static inline const T* cend(const vector(T, allocator_t)* this)
-// {
-// 	return data(&this->storage) + this->size;
-// }
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/containers/vector.c
===================================================================
--- src/libcfa/containers/vector.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,137 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// vector.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Tue Jul  5 18:07:52 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 18:08:31 2016
-// Update Count     : 2
-//
-
-#include <containers/vector>
-
-#include <stdlib>
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void copy_internal(vector(T, allocator_t)* this, vector(T, allocator_t)* other);
-
-//------------------------------------------------------------------------------
-//Initialization
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void ?{}(vector(T, allocator_t)& this)
-{
-	(this.storage){};
-	this.size = 0;
-}
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void ?{}(vector(T, allocator_t)& this, vector(T, allocator_t) rhs)
-{
-	(this.storage){ rhs.storage };
-	copy_internal(&this, &rhs);
-}
-
-// forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-// vector(T, allocator_t) ?=?(vector(T, allocator_t)* this, vector(T, allocator_t) rhs)
-// {
-// 	(&this->storage){};
-// 	copy_internal(this, &rhs);
-// 	return *this;
-// }
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void ^?{}(vector(T, allocator_t)& this)
-{
-	clear(&this);
-	^(this.storage){};
-}
-
-//------------------------------------------------------------------------------
-//Modifiers
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void push_back(vector(T, allocator_t)* this, T value)
-{
-	realloc_storage(&this->storage, this->size+1);
-	data(&this->storage)[this->size] = value;
-	this->size++;
-}
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void pop_back(vector(T, allocator_t)* this)
-{
-	this->size--;
-	^(data(&this->storage)[this->size]){};
-}
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void clear(vector(T, allocator_t)* this)
-{
-	for(size_t i = 0; i < this->size; i++)
-	{
-		^(data(&this->storage)[this->size]){};
-	}
-	this->size = 0;
-}
-
-//------------------------------------------------------------------------------
-//Internal Helpers
-
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
-void copy_internal(vector(T, allocator_t)* this, vector(T, allocator_t)* other)
-{
-	this->size = other->size;
-	for(size_t i = 0; i < this->size; i++) {
-		(data(&this->storage)[this->size]){ data(&other->storage)[other->size] };
-	}
-}
-
-//------------------------------------------------------------------------------
-//Allocator
-forall(otype T)
-void ?{}(heap_allocator(T)& this)
-{
-	this.storage = 0;
-	this.capacity = 0;
-}
-
-forall(otype T)
-void ?{}(heap_allocator(T)& this, heap_allocator(T) rhs)
-{
-	this.capacity = rhs.capacity;
-	this.storage = (T*)realloc((void*)this.storage, this.capacity * sizeof(T));
-}
-
-forall(otype T)
-heap_allocator(T) ?=?(heap_allocator(T)& this, heap_allocator(T) rhs)
-{
-	this.capacity = rhs.capacity;
-	this.storage = (T*)realloc((void*)this.storage, this.capacity * sizeof(T));
-	return this;
-}
-
-forall(otype T)
-void ^?{}(heap_allocator(T)& this)
-{
-	free(this.storage);
-}
-
-forall(otype T)
-inline void realloc_storage(heap_allocator(T)* this, size_t size)
-{
-	enum { GROWTH_RATE = 2 };
-	if(size > this->capacity)
-	{
-		this->capacity = GROWTH_RATE * size;
-		this->storage = (T*)realloc((void*)this->storage, this->capacity * sizeof(T));
-	}
-}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/exception.c
===================================================================
--- src/libcfa/exception.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,478 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// exception.c --
-//
-// Author           : Andrew Beach
-// Created On       : Mon Jun 26 15:13:00 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb 22 18:17:34 2018
-// Update Count     : 11
-//
-
-#include <stddef.h> // for size_t
-
-#include "exception.h"
-
-// Implementation of the secret header.
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <unwind.h>
-#include <bits/debug.h>
-
-// FIX ME: temporary hack to keep ARM build working
-#ifndef _URC_FATAL_PHASE1_ERROR
-#define _URC_FATAL_PHASE1_ERROR 2
-#endif // ! _URC_FATAL_PHASE1_ERROR
-#ifndef _URC_FATAL_PHASE2_ERROR
-#define _URC_FATAL_PHASE2_ERROR 2
-#endif // ! _URC_FATAL_PHASE2_ERROR
-
-#include "lsda.h"
-
-
-// Base exception vtable is abstract, you should not have base exceptions.
-struct __cfaabi_ehm__base_exception_t_vtable
-		___cfaabi_ehm__base_exception_t_vtable_instance = {
-	.parent = NULL,
-	.size = 0,
-	.copy = NULL,
-	.free = NULL,
-	.msg = NULL
-};
-
-
-// Temperary global exception context. Does not work with concurency.
-struct exception_context_t {
-    struct __cfaabi_ehm__try_resume_node * top_resume;
-    struct __cfaabi_ehm__try_resume_node * current_resume;
-
-    exception_t * current_exception;
-    int current_handler_index;
-} shared_stack = {NULL, NULL, 0, 0};
-
-// Get the current exception context.
-// There can be a single global until multithreading occurs, then each stack
-// needs its own. It will have to be updated to handle that.
-struct exception_context_t * this_exception_context() {
-	return &shared_stack;
-}
-//#define SAVE_EXCEPTION_CONTEXT(to_name)
-//struct exception_context_t * to_name = this_exception_context();
-//exception * this_exception() {
-//    return this_exception_context()->current_exception;
-//}
-
-
-// This macro should be the only thing that needs to change across machines.  Used in the personality function, way down
-// in termination.
-// struct _Unwind_Context * -> _Unwind_Reason_Code(*)(exception_t *)
-#define MATCHER_FROM_CONTEXT(ptr_to_context) \
-	(*(_Unwind_Reason_Code(**)(exception_t *))(_Unwind_GetCFA(ptr_to_context) + 8))
-
-
-// RESUMPTION ================================================================
-
-void __cfaabi_ehm__throw_resume(exception_t * except) {
-
-	__cfaabi_dbg_print_safe("Throwing resumption exception\n");
-
-	struct __cfaabi_ehm__try_resume_node * original_head = shared_stack.current_resume;
-	struct __cfaabi_ehm__try_resume_node * current =
-		(original_head) ? original_head->next : shared_stack.top_resume;
-
-	for ( ; current ; current = current->next) {
-		shared_stack.current_resume = current;
-		if (current->handler(except)) {
-			shared_stack.current_resume = original_head;
-			return;
-		}
-	}
-
-	__cfaabi_dbg_print_safe("Unhandled exception\n");
-	shared_stack.current_resume = original_head;
-
-	// Fall back to termination:
-	__cfaabi_ehm__throw_terminate(except);
-	// TODO: Default handler for resumption.
-}
-
-// Do we control where exceptions get thrown even with concurency?  If not these are not quite thread safe, the cleanup
-// hook has to be added after the node is built but before it is made the top node.
-
-void __cfaabi_ehm__try_resume_setup(struct __cfaabi_ehm__try_resume_node * node,
-                        _Bool (*handler)(exception_t * except)) {
-	node->next = shared_stack.top_resume;
-	node->handler = handler;
-	shared_stack.top_resume = node;
-}
-
-void __cfaabi_ehm__try_resume_cleanup(struct __cfaabi_ehm__try_resume_node * node) {
-	shared_stack.top_resume = node->next;
-}
-
-
-// TERMINATION ===============================================================
-
-// MEMORY MANAGEMENT (still for integers)
-// May have to move to cfa for constructors and destructors (references).
-
-struct __cfaabi_ehm__node {
-	struct __cfaabi_ehm__node * next;
-};
-
-#define NODE_TO_EXCEPT(node) ((exception_t *)(1 + (node)))
-#define EXCEPT_TO_NODE(except) ((struct __cfaabi_ehm__node *)(except) - 1)
-
-// Creates a copy of the indicated exception and sets current_exception to it.
-static void __cfaabi_ehm__allocate_exception( exception_t * except ) {
-	struct exception_context_t * context = this_exception_context();
-
-	// Allocate memory for the exception.
-	struct __cfaabi_ehm__node * store = malloc(
-		sizeof( struct __cfaabi_ehm__node ) + except->virtual_table->size );
-
-	if ( ! store ) {
-		// Failure: cannot allocate exception. Terminate thread.
-		abort(); // <- Although I think it might be the process.
-	}
-
-	// Add the node to the list:
-	store->next = EXCEPT_TO_NODE(context->current_exception);
-	context->current_exception = NODE_TO_EXCEPT(store);
-
-	// Copy the exception to storage.
-	except->virtual_table->copy( context->current_exception, except );
-}
-
-// Delete the provided exception, unsetting current_exception if relivant.
-static void __cfaabi_ehm__delete_exception( exception_t * except ) {
-	struct exception_context_t * context = this_exception_context();
-
-	__cfaabi_dbg_print_safe("Deleting Exception\n");
-
-	// Remove the exception from the list.
-	struct __cfaabi_ehm__node * to_free = EXCEPT_TO_NODE(except);
-	struct __cfaabi_ehm__node * node;
-
-	if ( context->current_exception == except ) {
-		node = to_free->next;
-		context->current_exception = (node) ? NODE_TO_EXCEPT(node) : 0;
-	} else {
-		node = EXCEPT_TO_NODE(context->current_exception);
-		// It may always be in the first or second position.
-		while( to_free != node->next ) {
-			node = node->next;
-		}
-		node->next = to_free->next;
-	}
-
-	// Free the old exception node.
-	except->virtual_table->free( except );
-	free( to_free );
-}
-
-// If this isn't a rethrow (*except==0), delete the provided exception.
-void __cfaabi_ehm__cleanup_terminate( void * except ) {
-	if ( *(void**)except ) __cfaabi_ehm__delete_exception( *(exception_t **)except );
-}
-
-
-// We need a piece of storage to raise the exception
-struct _Unwind_Exception this_exception_storage;
-
-// Function needed by force unwind
-// It basically says to unwind the whole stack and then exit when we reach the end of the stack
-static _Unwind_Reason_Code _Stop_Fn(
-		int version,
-		_Unwind_Action actions,
-		_Unwind_Exception_Class exceptionClass,
-		struct _Unwind_Exception * unwind_exception,
-		struct _Unwind_Context * context,
-		void * some_param) {
-	if( actions & _UA_END_OF_STACK  ) exit(1);
-	if( actions & _UA_CLEANUP_PHASE ) return _URC_NO_REASON;
-
-	return _URC_FATAL_PHASE2_ERROR;
-}
-
-// The exception that is being thrown must already be stored.
-__attribute__((noreturn)) void __cfaabi_ehm__begin_unwind(void) {
-	if ( ! this_exception_context()->current_exception ) {
-		printf("UNWIND ERROR missing exception in begin unwind\n");
-		abort();
-	}
-
-
-	// Call stdlibc to raise the exception
-	_Unwind_Reason_Code ret = _Unwind_RaiseException( &this_exception_storage );
-
-	// If we reach here it means something happened.  For resumption to work we need to find a way to return back to
-	// here.  Most of them will probably boil down to setting a global flag and making the phase 1 either stop or
-	// fail.  Causing an error on purpose may help avoiding unnecessary work but it might have some weird side
-	// effects.  If we just pretend no handler was found that would work but may be expensive for no reason since we
-	// will always search the whole stack.
-
-	if( ret == _URC_END_OF_STACK ) {
-		// No proper handler was found.  This can be handled in several way.  C++ calls std::terminate Here we
-		// force unwind the stack, basically raising a cancellation.
-		printf("Uncaught exception %p\n", &this_exception_storage);
-
-		ret = _Unwind_ForcedUnwind( &this_exception_storage, _Stop_Fn, (void*)0x22 );
-		printf("UNWIND ERROR %d after force unwind\n", ret);
-		abort();
-	}
-
-	// We did not simply reach the end of the stack without finding a handler.  Something wen't wrong
-	printf("UNWIND ERROR %d after raise exception\n", ret);
-	abort();
-}
-
-void __cfaabi_ehm__throw_terminate( exception_t * val ) {
-	__cfaabi_dbg_print_safe("Throwing termination exception\n");
-
-	__cfaabi_ehm__allocate_exception( val );
-	__cfaabi_ehm__begin_unwind();
-}
-
-void __cfaabi_ehm__rethrow_terminate(void) {
-	__cfaabi_dbg_print_safe("Rethrowing termination exception\n");
-
-	__cfaabi_ehm__begin_unwind();
-}
-
-// This is our personality routine.  For every stack frame anotated with ".cfi_personality 0x3,__gcfa_personality_v0".
-// This function will be called twice when unwinding.  Once in the search phased and once in the cleanup phase.
-_Unwind_Reason_Code __gcfa_personality_v0 (
-		int version, _Unwind_Action actions, unsigned long long exceptionClass,
-		struct _Unwind_Exception* unwind_exception,
-		struct _Unwind_Context* context)
-{
-
-	//__cfaabi_dbg_print_safe("CFA: 0x%lx\n", _Unwind_GetCFA(context));
-	__cfaabi_dbg_print_safe("Personality function (%d, %x, %llu, %p, %p):", version, actions, exceptionClass, unwind_exception, context);
-
-	// If we've reached the end of the stack then there is nothing much we can do...
-	if( actions & _UA_END_OF_STACK ) return _URC_END_OF_STACK;
-
-	if (actions & _UA_SEARCH_PHASE) {
-		__cfaabi_dbg_print_safe(" lookup phase");
-	}
-	else if (actions & _UA_CLEANUP_PHASE) {
-		__cfaabi_dbg_print_safe(" cleanup phase");
-	}
-	// Just in case, probably can't actually happen
-	else {
-		printf(" error\n");
-		return _URC_FATAL_PHASE1_ERROR;
-	}
-
-	// Get a pointer to the language specific data from which we will read what we need
-	const unsigned char * lsd = (const unsigned char*) _Unwind_GetLanguageSpecificData( context );
-
-	if( !lsd ) {	//Nothing to do, keep unwinding
-		printf(" no LSD");
-		goto UNWIND;
-	}
-
-	// Get the instuction pointer and a reading pointer into the exception table
-	lsda_header_info lsd_info;
-	const unsigned char * cur_ptr = parse_lsda_header( context, lsd, &lsd_info);
-	_Unwind_Ptr instruction_ptr = _Unwind_GetIP( context );
-
-	// Linearly search the table for stuff to do
-	while( cur_ptr < lsd_info.action_table ) {
-		_Unwind_Ptr callsite_start;
-		_Unwind_Ptr callsite_len;
-		_Unwind_Ptr callsite_landing_pad;
-		_uleb128_t  callsite_action;
-
-		// Decode the common stuff we have in here
-		cur_ptr = read_encoded_value (0, lsd_info.call_site_encoding, cur_ptr, &callsite_start);
-		cur_ptr = read_encoded_value (0, lsd_info.call_site_encoding, cur_ptr, &callsite_len);
-		cur_ptr = read_encoded_value (0, lsd_info.call_site_encoding, cur_ptr, &callsite_landing_pad);
-		cur_ptr = read_uleb128 (cur_ptr, &callsite_action);
-
-		// Have we reach the correct frame info yet?
-		if( lsd_info.Start + callsite_start + callsite_len < instruction_ptr ) {
-#ifdef __CFA_DEBUG_PRINT__
-			void * ls = (void*)lsd_info.Start;
-			void * cs = (void*)callsite_start;
-			void * cl = (void*)callsite_len;
-			void * bp = (void*)lsd_info.Start + callsite_start;
-			void * ep = (void*)lsd_info.Start + callsite_start + callsite_len;
-			void * ip = (void*)instruction_ptr;
-			__cfaabi_dbg_print_safe("\nfound %p - %p (%p, %p, %p), looking for %p\n", bp, ep, ls, cs, cl, ip);
-#endif // __CFA_DEBUG_PRINT__
-			continue;
-		}
-
-		// Have we gone too far
-		if( lsd_info.Start + callsite_start > instruction_ptr ) {
-			printf(" gone too far");
-			break;
-		}
-
-		// Something to do?
-		if( callsite_landing_pad ) {
-			// Which phase are we in
-			if (actions & _UA_SEARCH_PHASE) {
-				// Search phase, this means we probably found a potential handler and must check if it is a match
-
-				// If we have arbitrarily decided that 0 means nothing to do and 1 means there is a potential handler
-				// This doesn't seem to conflict the gcc default behavior
-				if (callsite_action != 0) {
-					// Now we want to run some code to see if the handler matches
-					// This is the tricky part where we want to the power to run arbitrary code
-					// However, generating a new exception table entry and try routine every time
-					// is way more expansive than we might like
-					// The information we have is :
-					//  - The GR (Series of registers)
-					//    GR1=GP Global Pointer of frame ref by context
-					//  - The instruction pointer
-					//  - The instruction pointer info (???)
-					//  - The CFA (Canonical Frame Address)
-					//  - The BSP (Probably the base stack pointer)
-
-
-					// The current apprach uses one exception table entry per try block
-					_uleb128_t imatcher;
-					// Get the relative offset to the
-					cur_ptr = read_uleb128 (cur_ptr, &imatcher);
-
-					// Get a function pointer from the relative offset and call it
-					// _Unwind_Reason_Code (*matcher)() = (_Unwind_Reason_Code (*)())lsd_info.LPStart + imatcher;
-
-					_Unwind_Reason_Code (*matcher)(exception_t *) =
-						MATCHER_FROM_CONTEXT(context);
-					int index = matcher(shared_stack.current_exception);
-					_Unwind_Reason_Code ret = (0 == index)
-						? _URC_CONTINUE_UNWIND : _URC_HANDLER_FOUND;
-					shared_stack.current_handler_index = index;
-
-					// Based on the return value, check if we matched the exception
-					if( ret == _URC_HANDLER_FOUND) {
-						__cfaabi_dbg_print_safe(" handler found\n");
-					} else {
-						__cfaabi_dbg_print_safe(" no handler\n");
-					}
-					return ret;
-				}
-
-				// This is only a cleanup handler, ignore it
-				__cfaabi_dbg_print_safe(" no action");
-			}
-			else if (actions & _UA_CLEANUP_PHASE) {
-
-				if( (callsite_action != 0) && !(actions & _UA_HANDLER_FRAME) ){
-					// If this is a potential exception handler
-					// but not the one that matched the exception in the seach phase,
-					// just ignore it
-					goto UNWIND;
-				}
-
-				// We need to run some clean-up or a handler
-				// These statment do the right thing but I don't know any specifics at all
-				_Unwind_SetGR( context, __builtin_eh_return_data_regno(0), (_Unwind_Ptr) unwind_exception );
-				_Unwind_SetGR( context, __builtin_eh_return_data_regno(1), 0 );
-
-				// I assume this sets the instruction pointer to the adress of the landing pad
-				// It doesn't actually set it, it only state the value that needs to be set once we return _URC_INSTALL_CONTEXT
-				_Unwind_SetIP( context, ((lsd_info.LPStart) + (callsite_landing_pad)) );
-
-				__cfaabi_dbg_print_safe(" action\n");
-
-				// Return have some action to run
-				return _URC_INSTALL_CONTEXT;
-			}
-		}
-
-		// Nothing to do, move along
-		__cfaabi_dbg_print_safe(" no landing pad");
-	}
-	// No handling found
-	__cfaabi_dbg_print_safe(" table end reached\n");
-
-	UNWIND:
-	__cfaabi_dbg_print_safe(" unwind\n");
-
-	// Keep unwinding the stack
-	return _URC_CONTINUE_UNWIND;
-}
-
-// Try statements are hoisted out see comments for details.  With this could probably be unique and simply linked from
-// libcfa but there is one problem left, see the exception table for details
-__attribute__((noinline))
-void __cfaabi_ehm__try_terminate(void (*try_block)(),
-		void (*catch_block)(int index, exception_t * except),
-		__attribute__((unused)) int (*match_block)(exception_t * except)) {
-	//! volatile int xy = 0;
-	//! printf("%p %p %p %p\n", &try_block, &catch_block, &match_block, &xy);
-
-	// Setup statments: These 2 statments won't actually result in any code, they only setup global tables.
-	// However, they clobber gcc cancellation support from gcc.  We can replace the personality routine but
-	// replacing the exception table gcc generates is not really doable, it generates labels based on how the
-	// assembly works.
-
-	// Setup the personality routine
-	asm volatile (".cfi_personality 0x3,__gcfa_personality_v0");
-	// Setup the exception table
-	asm volatile (".cfi_lsda 0x3, .LLSDACFA2");
-
-	// Label which defines the start of the area for which the handler is setup.
-	asm volatile (".TRYSTART:");
-
-	// The actual statements of the try blocks
-	try_block();
-
-	// asm statement to prevent deadcode removal
-	asm volatile goto ("" : : : : CATCH );
-
-	// Normal return
-	return;
-
-	// Exceptionnal path
-	CATCH : __attribute__(( unused ));
-	// Label which defines the end of the area for which the handler is setup.
-	asm volatile (".TRYEND:");
-	// Label which defines the start of the exception landing pad.  Basically what is called when the exception is
-	// caught.  Note, if multiple handlers are given, the multiplexing should be done by the generated code, not the
-	// exception runtime.
-	asm volatile (".CATCH:");
-
-	// Exception handler
-	catch_block( shared_stack.current_handler_index,
-	             shared_stack.current_exception );
-}
-
-// Exception table data we need to generate.  While this is almost generic, the custom data refers to foo_try_match try
-// match, which is no way generic.  Some more works need to be done if we want to have a single call to the try routine.
-
-#if defined( __i386 ) || defined( __x86_64 )
-asm (
-	//HEADER
-	".LFECFA1:\n"
-	"	.globl	__gcfa_personality_v0\n"
-	"	.section	.gcc_except_table,\"a\",@progbits\n"
-	".LLSDACFA2:\n"							//TABLE header
-	"	.byte	0xff\n"
-	"	.byte	0xff\n"
-	"	.byte	0x1\n"
-	"	.uleb128 .LLSDACSECFA2-.LLSDACSBCFA2\n"		// BODY length
-	// Body uses language specific data and therefore could be modified arbitrarily
-	".LLSDACSBCFA2:\n"						// BODY start
-	"	.uleb128 .TRYSTART-__cfaabi_ehm__try_terminate\n"		// Handled area start  (relative to start of function)
-	"	.uleb128 .TRYEND-.TRYSTART\n"				// Handled area length
-	"	.uleb128 .CATCH-__cfaabi_ehm__try_terminate\n"				// Hanlder landing pad adress  (relative to start of function)
-	"	.uleb128 1\n"						// Action code, gcc seems to use always 0
-	".LLSDACSECFA2:\n"						// BODY end
-	"	.text\n"							// TABLE footer
-	"	.size	__cfaabi_ehm__try_terminate, .-__cfaabi_ehm__try_terminate\n"
-	"	.ident	\"GCC: (Ubuntu 6.2.0-3ubuntu11~16.04) 6.2.0 20160901\"\n"
-//	"	.section	.note.GNU-stack,\"x\",@progbits\n"
-);
-#endif // __i386 || __x86_64
Index: c/libcfa/exception.h
===================================================================
--- src/libcfa/exception.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,72 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// exception.h -- Builtins for exception handling.
-//
-// Author           : Andrew Beach
-// Created On       : Mon Jun 26 15:11:00 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb 22 18:11:15 2018
-// Update Count     : 8
-//
-
-#pragma once
-
-
-#ifdef __cforall
-extern "C" {
-#endif
-
-struct __cfaabi_ehm__base_exception_t;
-typedef struct __cfaabi_ehm__base_exception_t exception_t;
-struct __cfaabi_ehm__base_exception_t_vtable {
-	const struct __cfaabi_ehm__base_exception_t_vtable * parent;
-	size_t size;
-	void (*copy)(struct __cfaabi_ehm__base_exception_t *this,
-	             struct __cfaabi_ehm__base_exception_t * other);
-	void (*free)(struct __cfaabi_ehm__base_exception_t *this);
-	const char * (*msg)(struct __cfaabi_ehm__base_exception_t *this);
-};
-struct __cfaabi_ehm__base_exception_t {
-	struct __cfaabi_ehm__base_exception_t_vtable const * virtual_table;
-};
-extern struct __cfaabi_ehm__base_exception_t_vtable
-	___cfaabi_ehm__base_exception_t_vtable_instance;
-
-
-// Used in throw statement translation.
-void __cfaabi_ehm__throw_terminate(exception_t * except) __attribute__((noreturn));
-void __cfaabi_ehm__rethrow_terminate() __attribute__((noreturn));
-void __cfaabi_ehm__throw_resume(exception_t * except);
-
-// Function catches termination exceptions.
-void __cfaabi_ehm__try_terminate(
-    void (*try_block)(),
-    void (*catch_block)(int index, exception_t * except),
-    int (*match_block)(exception_t * except));
-
-// Clean-up the exception in catch blocks.
-void __cfaabi_ehm__cleanup_terminate(void * except);
-
-// Data structure creates a list of resume handlers.
-struct __cfaabi_ehm__try_resume_node {
-    struct __cfaabi_ehm__try_resume_node * next;
-    _Bool (*handler)(exception_t * except);
-};
-
-// These act as constructor and destructor for the resume node.
-void __cfaabi_ehm__try_resume_setup(
-    struct __cfaabi_ehm__try_resume_node * node,
-    _Bool (*handler)(exception_t * except));
-void __cfaabi_ehm__try_resume_cleanup(
-    struct __cfaabi_ehm__try_resume_node * node);
-
-// Check for a standard way to call fake deconstructors.
-struct __cfaabi_ehm__cleanup_hook {};
-
-#ifdef __cforall
-}
-#endif
Index: c/libcfa/expat.h
===================================================================
--- src/libcfa/expat.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,43 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// expat.h -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Sun Jun 28 11:10:15 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Dec 21 08:57:26 2015
-// Update Count     : 4
-
-// This include file uses the CFA keyword "type" as a field name of a structure.
-
-#if ! defined( type )									// nesting ?
-#define type `type`
-#define __CFA_EXPAT1_H__
-#endif // ! type
-
-#if ! defined( context )								// nesting ?
-#define context `context`
-#define __CFA_EXPAT2_H__
-#endif // ! context
-
-#include_next <expat.h>									// has internal check for multiple expansion
-
-#if defined( type ) && defined( __CFA_EXPAT1_H__ )		// reset only if set
-#undef type
-#undef __CFA_EXPAT1_H__
-#endif // type && __CFA_EXPAT1_H__
-
-#if defined( context ) && defined( __CFA_EXPAT2_H__ )	// reset only if set
-#undef context
-#undef __CFA_EXPAT2_H__
-#endif // context && __CFA_EXPAT2_H__
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/fstream
===================================================================
--- src/libcfa/fstream	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,89 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// fstream --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jun  5 10:20:25 2018
-// Update Count     : 131
-//
-
-#pragma once
-
-#include "iostream"
-
-enum { sepSize = 16 };
-struct ofstream {
-	void * file;
-	_Bool sepDefault;
-	_Bool sepOnOff;
-	_Bool sawNL;
-	const char * sepCur;
-	char separator[sepSize];
-	char tupleSeparator[sepSize];
-}; // ofstream
-
-// private
-_Bool sepPrt( ofstream & );
-void sepReset( ofstream & );
-void sepReset( ofstream &, _Bool );
-const char * sepGetCur( ofstream & );
-void sepSetCur( ofstream &, const char * );
-_Bool getNL( ofstream & );
-void setNL( ofstream &, _Bool );
-
-// public
-void sepOn( ofstream & );
-void sepOff( ofstream & );
-_Bool sepDisable( ofstream & );
-_Bool sepEnable( ofstream & );
-
-const char * sepGet( ofstream & );
-void sepSet( ofstream &, const char * );
-const char * sepGetTuple( ofstream & );
-void sepSetTuple( ofstream &, const char * );
-
-int fail( ofstream & );
-int flush( ofstream & );
-void open( ofstream &, const char * name, const char * mode );
-void open( ofstream &, const char * name );
-void close( ofstream & );
-ofstream & write( ofstream &, const char * data, size_t size );
-int fmt( ofstream &, const char fmt[], ... );
-
-void ?{}( ofstream & os );
-void ?{}( ofstream & os, const char * name, const char * mode );
-void ?{}( ofstream & os, const char * name );
-
-extern ofstream & sout, & serr;
-
-
-struct ifstream {
-	void * file;
-}; // ifstream
-
-// public
-int fail( ifstream & is );
-int eof( ifstream & is );
-void open( ifstream & is, const char * name, const char * mode );
-void open( ifstream & is, const char * name );
-void close( ifstream & is );
-ifstream & read( ifstream & is, char * data, size_t size );
-ifstream & ungetc( ifstream & is, char c );
-int fmt( ifstream &, const char fmt[], ... );
-
-void ?{}( ifstream & is );
-void ?{}( ifstream & is, const char * name, const char * mode );
-void ?{}( ifstream & is, const char * name );
-
-extern ifstream & sin;
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/fstream.c
===================================================================
--- src/libcfa/fstream.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,247 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// fstream.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jun  5 17:02:56 2018
-// Update Count     : 281
-//
-
-#include "fstream"
-
-#include <stdio.h>										// vfprintf, vfscanf
-#include <stdlib.h>										// exit
-#include <stdarg.h>										// varargs
-#include <string.h>										// strlen
-#include <stdbool.h>									// true/false
-#include <float.h>										// DBL_DIG, LDBL_DIG
-#include <complex.h>									// creal, cimag
-#include <assert.h>
-
-#define IO_MSG "I/O error: "
-
-void ?{}( ofstream & os, void * file, _Bool sepDefault, _Bool sepOnOff, const char * separator, const char * tupleSeparator ) {
-	os.file = file;
-	os.sepDefault = sepDefault;
-	os.sepOnOff = sepOnOff;
-	sepSet( os, separator );
-	sepSetCur( os, sepGet( os ) );
-	sepSetTuple( os, tupleSeparator );
-}
-
-// private
-_Bool sepPrt( ofstream & os ) { setNL( os, false ); return os.sepOnOff; }
-void sepReset( ofstream & os ) { os.sepOnOff = os.sepDefault; }
-void sepReset( ofstream & os, _Bool reset ) { os.sepDefault = reset; os.sepOnOff = os.sepDefault; }
-const char * sepGetCur( ofstream & os ) { return os.sepCur; }
-void sepSetCur( ofstream & os, const char * sepCur ) { os.sepCur = sepCur; }
-_Bool getNL( ofstream & os ) { return os.sawNL; }
-void setNL( ofstream & os, _Bool state ) { os.sawNL = state; }
-
-// public
-void ?{}( ofstream & os ) { os.file = 0; }
-
-void ?{}( ofstream & os, const char * name, const char * mode ) {
-	open( os, name, mode );
-}
-void ?{}( ofstream & os, const char * name ) {
-	open( os, name, "w" );
-}
-
-void sepOn( ofstream & os ) { os.sepOnOff = ! getNL( os ); }
-void sepOff( ofstream & os ) { os.sepOnOff = false; }
-
-_Bool sepDisable( ofstream & os ) {
-	_Bool temp = os.sepDefault;
-	os.sepDefault = false;
-	sepReset( os );
-	return temp;
-} // sepDisable
-
-_Bool sepEnable( ofstream & os ) {
-	_Bool temp = os.sepDefault;
-	os.sepDefault = true;
-	if ( os.sepOnOff ) sepReset( os );					// start of line ?
-	return temp;
-} // sepEnable
-
-const char * sepGet( ofstream & os ) { return os.separator; }
-void sepSet( ofstream & os, const char * s ) {
-	assert( s );
-	strncpy( os.separator, s, sepSize - 1 );
-	os.separator[sepSize - 1] = '\0';
-} // sepSet
-
-const char * sepGetTuple( ofstream & os ) { return os.tupleSeparator; }
-void sepSetTuple( ofstream & os, const char * s ) {
-	assert( s );
-	strncpy( os.tupleSeparator, s, sepSize - 1 );
-	os.tupleSeparator[sepSize - 1] = '\0';
-} // sepSet
-
-int fail( ofstream & os ) {
-	return os.file == 0 || ferror( (FILE *)(os.file) );
-} // fail
-
-int flush( ofstream & os ) {
-	return fflush( (FILE *)(os.file) );
-} // flush
-
-void open( ofstream & os, const char * name, const char * mode ) {
-	FILE *file = fopen( name, mode );
-	// if ( file == 0 ) {									// do not change unless successful
-	// 	fprintf( stderr, IO_MSG "open output file \"%s\", ", name );
-	// 	perror( 0 );
-	// 	exit( EXIT_FAILURE );
-	// } // if
-	(os){ file, true, false, " ", ", " };
-} // open
-
-void open( ofstream & os, const char * name ) {
-	open( os, name, "w" );
-} // open
-
-void close( ofstream & os ) {
-	if ( (FILE *)(os.file) == stdout || (FILE *)(os.file) == stderr ) return;
-
-	if ( fclose( (FILE *)(os.file) ) == EOF ) {
-		perror( IO_MSG "close output" );
-	} // if
-} // close
-
-ofstream & write( ofstream & os, const char * data, size_t size ) {
-	if ( fail( os ) ) {
-		fprintf( stderr, "attempt write I/O on failed stream\n" );
-		exit( EXIT_FAILURE );
-	} // if
-
-	if ( fwrite( data, 1, size, (FILE *)(os.file) ) != size ) {
-		perror( IO_MSG "write" );
-		exit( EXIT_FAILURE );
-	} // if
-	return os;
-} // write
-
-int fmt( ofstream & os, const char format[], ... ) {
-	va_list args;
-	va_start( args, format );
-	int len = vfprintf( (FILE *)(os.file), format, args );
-	if ( len == EOF ) {
-		if ( ferror( (FILE *)(os.file) ) ) {
-			fprintf( stderr, "invalid write\n" );
-			exit( EXIT_FAILURE );
-		} // if
-	} // if
-	va_end( args );
-
-	sepReset( os );										// reset separator
-	return len;
-} // fmt
-
-static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, " ", ", " };
-ofstream & sout = soutFile;
-static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, " ", ", " };
-ofstream & serr = serrFile;
-
-
-//---------------------------------------
-
-// private
-void ?{}( ifstream & is, void * file ) {
-	is.file = file;
-}
-
-// public
-void ?{}( ifstream & is ) {	is.file = 0; }
-
-void ?{}( ifstream & is, const char * name, const char * mode ) {
-	open( is, name, mode );
-}
-void ?{}( ifstream & is, const char * name ) {
-	open( is, name, "r" );
-}
-
-int fail( ifstream & is ) {
-	return is.file == 0 || ferror( (FILE *)(is.file) );
-} // fail
-
-int eof( ifstream & is ) {
-	return feof( (FILE *)(is.file) );
-} // eof
-
-void open( ifstream & is, const char * name, const char * mode ) {
-	FILE *file = fopen( name, mode );
-	// if ( file == 0 ) {									// do not change unless successful
-	// 	fprintf( stderr, IO_MSG "open input file \"%s\", ", name );
-	// 	perror( 0 );
-	// 	exit( EXIT_FAILURE );
-	// } // if
-	is.file = file;
-} // open
-
-void open( ifstream & is, const char * name ) {
-	open( is, name, "r" );
-} // open
-
-void close( ifstream & is ) {
-	if ( (FILE *)(is.file) == stdin ) return;
-
-	if ( fclose( (FILE *)(is.file) ) == EOF ) {
-		perror( IO_MSG "close input" );
-	} // if
-} // close
-
-ifstream & read( ifstream & is, char * data, size_t size ) {
-	if ( fail( is ) ) {
-		fprintf( stderr, "attempt read I/O on failed stream\n" );
-		exit( EXIT_FAILURE );
-	} // if
-
-	if ( fread( data, size, 1, (FILE *)(is.file) ) == 0 ) {
-		perror( IO_MSG "read" );
-		exit( EXIT_FAILURE );
-	} // if
-	return is;
-} // read
-
-ifstream &ungetc( ifstream & is, char c ) {
-	if ( fail( is ) ) {
-		fprintf( stderr, "attempt ungetc I/O on failed stream\n" );
-		exit( EXIT_FAILURE );
-	} // if
-
-	if ( ungetc( c, (FILE *)(is.file) ) == EOF ) {
-		perror( IO_MSG "ungetc" );
-		exit( EXIT_FAILURE );
-	} // if
-	return is;
-} // ungetc
-
-int fmt( ifstream & is, const char format[], ... ) {
-	va_list args;
-
-	va_start( args, format );
-	int len = vfscanf( (FILE *)(is.file), format, args );
-	if ( len == EOF ) {
-		if ( ferror( (FILE *)(is.file) ) ) {
-			fprintf( stderr, "invalid read\n" );
-			exit( EXIT_FAILURE );
-		} // if
-	} // if
-	va_end( args );
-	return len;
-} // fmt
-
-
-static ifstream sinFile = { (FILE *)(&_IO_2_1_stdin_) };
-ifstream & sin = sinFile;
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/gmp
===================================================================
--- src/libcfa/gmp	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,275 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// gmp --
-//
-// Author           : Peter A. Buhr
-// Created On       : Tue Apr 19 08:43:43 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Dec  7 09:10:41 2017
-// Update Count     : 21
-//
-
-// https://gmplib.org/gmp-man-6.1.1.pdf
-
-#pragma once
-
-#include <gmp.h>										// GNU multi-precise integers
-#include <fstream>										// sout
-
-struct Int { mpz_t mpz; };								// wrap GMP implementation
-
-// constructor
-static inline void ?{}( Int & this ) { mpz_init( this.mpz ); }
-static inline void ?{}( Int & this, Int init ) { mpz_init_set( this.mpz, init.mpz ); }
-static inline void ?{}( Int & this, zero_t ) { mpz_init_set_si( this.mpz, 0 ); }
-static inline void ?{}( Int & this, one_t ) { mpz_init_set_si( this.mpz, 1 ); }
-static inline void ?{}( Int & this, signed long int init ) { mpz_init_set_si( this.mpz, init ); }
-static inline void ?{}( Int & this, unsigned long int init ) { mpz_init_set_ui( this.mpz, init ); }
-static inline void ?{}( Int & this, const char * val ) { if ( mpz_init_set_str( this.mpz, val, 0 ) ) abort(); }
-static inline void ^?{}( Int & this ) { mpz_clear( this.mpz ); }
-
-// literal
-static inline Int ?`mp( signed long int init ) { return (Int){ init }; }
-static inline Int ?`mp( unsigned long int init ) { return (Int){ init }; }
-static inline Int ?`mp( const char * init ) { return (Int){ init }; }
-
-// assignment
-static inline Int ?=?( Int & lhs, Int rhs ) { mpz_set( lhs.mpz, rhs.mpz ); return lhs; }
-static inline Int ?=?( Int & lhs, long int rhs ) { mpz_set_si( lhs.mpz, rhs ); return lhs; }
-static inline Int ?=?( Int & lhs, unsigned long int rhs ) { mpz_set_ui( lhs.mpz, rhs ); return lhs; }
-static inline Int ?=?( Int & lhs, const char * rhs ) { if ( mpz_set_str( lhs.mpz, rhs, 0 ) ) { printf( "invalid string conversion\n" ); abort(); } return lhs; }
-
-static inline char ?=?( char & lhs, Int rhs ) { char val = mpz_get_si( rhs.mpz ); lhs = val; return lhs; }
-static inline short int ?=?( short int & lhs, Int rhs ) { short int val = mpz_get_si( rhs.mpz ); lhs = val; return lhs; }
-static inline int ?=?( int & lhs, Int rhs ) { int val = mpz_get_si( rhs.mpz ); lhs = val; return lhs; }
-static inline long int ?=?( long int & lhs, Int rhs ) { long int val = mpz_get_si( rhs.mpz ); lhs = val; return lhs; }
-static inline unsigned char ?=?( unsigned char & lhs, Int rhs ) { unsigned char val = mpz_get_ui( rhs.mpz ); lhs = val; return lhs; }
-static inline unsigned short int ?=?( unsigned short int & lhs, Int rhs ) { unsigned short int val = mpz_get_ui( rhs.mpz ); lhs = val; return lhs; }
-static inline unsigned int ?=?( unsigned int & lhs, Int rhs ) { unsigned int val = mpz_get_ui( rhs.mpz ); lhs = val; return lhs; }
-static inline unsigned long int ?=?( unsigned long int & lhs, Int rhs ) { unsigned long int val = mpz_get_ui( rhs.mpz ); lhs = val; return lhs; }
-
-// conversions
-static inline long int narrow( Int val ) { return mpz_get_si( val.mpz ); }
-static inline unsigned long int narrow( Int val ) { return mpz_get_ui( val.mpz ); }
-
-// comparison
-static inline int ?==?( Int oper1, Int oper2 ) { return mpz_cmp( oper1.mpz, oper2.mpz ) == 0; }
-static inline int ?==?( Int oper1, long int oper2 ) { return mpz_cmp_si( oper1.mpz, oper2 ) == 0; }
-static inline int ?==?( long int oper2, Int oper1 ) { return mpz_cmp_si( oper1.mpz, oper2 ) == 0; }
-static inline int ?==?( Int oper1, unsigned long int oper2 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) == 0; }
-static inline int ?==?( unsigned long int oper2, Int oper1 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) == 0; }
-
-static inline int ?!=?( Int oper1, Int oper2 ) { return ! ( oper1 == oper2 ); }
-static inline int ?!=?( Int oper1, long int oper2 ) { return ! ( oper1 == oper2 ); }
-static inline int ?!=?( long int oper1, Int oper2 ) { return ! ( oper1 == oper2 ); }
-static inline int ?!=?( Int oper1, unsigned long int oper2 ) { return ! ( oper1 == oper2 ); }
-static inline int ?!=?( unsigned long int oper1, Int oper2 ) { return ! ( oper1 == oper2 ); }
-
-static inline int ?<?( Int oper1, Int oper2 ) { return mpz_cmp( oper1.mpz, oper2.mpz ) < 0; }
-static inline int ?<?( Int oper1, long int oper2 ) { return mpz_cmp_si( oper1.mpz, oper2 ) < 0; }
-static inline int ?<?( long int oper2, Int oper1 ) { return mpz_cmp_si( oper1.mpz, oper2 ) < 0; }
-static inline int ?<?( Int oper1, unsigned long int oper2 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) < 0; }
-static inline int ?<?( unsigned long int oper2, Int oper1 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) < 0; }
-
-static inline int ?<=?( Int oper1, Int oper2 ) { return mpz_cmp( oper1.mpz, oper2.mpz ) <= 0; }
-static inline int ?<=?( Int oper1, long int oper2 ) { return mpz_cmp_si( oper1.mpz, oper2 ) <= 0; }
-static inline int ?<=?( long int oper2, Int oper1 ) { return mpz_cmp_si( oper1.mpz, oper2 ) <= 0; }
-static inline int ?<=?( Int oper1, unsigned long int oper2 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) <= 0; }
-static inline int ?<=?( unsigned long int oper2, Int oper1 ) { return mpz_cmp_ui( oper1.mpz, oper2 ) <= 0; }
-
-static inline int ?>?( Int oper1, Int oper2 ) { return ! ( oper1 <= oper2 ); }
-static inline int ?>?( Int oper1, long int oper2 ) { return ! ( oper1 <= oper2 ); }
-static inline int ?>?( long int oper1, Int oper2 ) { return ! ( oper1 <= oper2 ); }
-static inline int ?>?( Int oper1, unsigned long int oper2 ) { return ! ( oper1 <= oper2 ); }
-static inline int ?>?( unsigned long int oper1, Int oper2 ) { return ! ( oper1 <= oper2 ); }
-
-static inline int ?>=?( Int oper1, Int oper2 ) { return ! ( oper1 < oper2 ); }
-static inline int ?>=?( Int oper1, long int oper2 ) { return ! ( oper1 < oper2 ); }
-static inline int ?>=?( long int oper1, Int oper2 ) { return ! ( oper1 < oper2 ); }
-static inline int ?>=?( Int oper1, unsigned long int oper2 ) { return ! ( oper1 < oper2 ); }
-static inline int ?>=?( unsigned long int oper1, Int oper2 ) { return ! ( oper1 < oper2 ); }
-
-// arithmetic
-static inline Int +?( Int oper ) { Int pos; mpz_set( pos.mpz, oper.mpz ); return pos; }
-static inline Int -?( Int oper ) { Int neg; mpz_neg( neg.mpz, oper.mpz ); return neg; }
-static inline Int ~?( Int oper ) { Int comp; mpz_com( comp.mpz, oper.mpz ); return comp; }
-
-static inline Int ?&?( Int oper1, Int oper2 ) { Int conjunction; mpz_and( conjunction.mpz, oper1.mpz, oper2.mpz ); return conjunction; }
-static inline Int ?&?( Int oper1, long int oper2 ) { Int conjunction, temp; mpz_set_si( temp.mpz, oper2 ); mpz_and( conjunction.mpz, oper1.mpz, temp.mpz ); return conjunction; }
-static inline Int ?&?( long int oper1, Int oper2 ) { Int conjunction, temp; mpz_set_si( temp.mpz, oper1 ); mpz_and( conjunction.mpz, temp.mpz, oper2.mpz ); return conjunction; }
-static inline Int ?&?( Int oper1, unsigned long int oper2 ) { Int conjunction, temp; mpz_set_ui( temp.mpz, oper2 ); mpz_and( conjunction.mpz, oper1.mpz, temp.mpz ); return conjunction; }
-static inline Int ?&?( unsigned long int oper1, Int oper2 ) { Int conjunction, temp; mpz_set_ui( temp.mpz, oper1 ); mpz_and( conjunction.mpz, temp.mpz, oper2.mpz ); return conjunction; }
-static inline Int ?&=?( Int & lhs, Int rhs ) { return lhs = lhs & rhs; }
-
-static inline Int ?|?( Int oper1, Int oper2 ) { Int disjunction; mpz_ior( disjunction.mpz, oper1.mpz, oper2.mpz ); return disjunction; }
-static inline Int ?|?( Int oper1, long int oper2 ) { Int disjunction, temp; mpz_set_si( temp.mpz, oper2 ); mpz_ior( disjunction.mpz, oper1.mpz, temp.mpz ); return disjunction; }
-static inline Int ?|?( long int oper1, Int oper2 ) { Int disjunction, temp; mpz_set_si( temp.mpz, oper1 ); mpz_ior( disjunction.mpz, temp.mpz, oper2.mpz ); return disjunction; }
-static inline Int ?|?( Int oper1, unsigned long int oper2 ) { Int disjunction, temp; mpz_set_ui( temp.mpz, oper2 ); mpz_ior( disjunction.mpz, oper1.mpz, temp.mpz ); return disjunction; }
-static inline Int ?|?( unsigned long int oper1, Int oper2 ) { Int disjunction, temp; mpz_set_ui( temp.mpz, oper1 ); mpz_ior( disjunction.mpz, temp.mpz, oper2.mpz ); return disjunction; }
-static inline Int ?|=?( Int & lhs, Int rhs ) { return lhs = lhs | rhs; }
-
-static inline Int ?^?( Int oper1, Int oper2 ) { Int disjunction; mpz_xor( disjunction.mpz, oper1.mpz, oper2.mpz ); return disjunction; }
-static inline Int ?^?( Int oper1, long int oper2 ) { Int disjunction, temp; mpz_set_si( temp.mpz, oper2 ); mpz_ior( disjunction.mpz, oper1.mpz, temp.mpz ); return disjunction; }
-static inline Int ?^?( long int oper1, Int oper2 ) { Int disjunction, temp; mpz_set_si( temp.mpz, oper1 ); mpz_ior( disjunction.mpz, temp.mpz, oper2.mpz ); return disjunction; }
-static inline Int ?^?( Int oper1, unsigned long int oper2 ) { Int disjunction, temp; mpz_set_ui( temp.mpz, oper2 ); mpz_ior( disjunction.mpz, oper1.mpz, temp.mpz ); return disjunction; }
-static inline Int ?^?( unsigned long int oper1, Int oper2 ) { Int disjunction, temp; mpz_set_ui( temp.mpz, oper1 ); mpz_ior( disjunction.mpz, temp.mpz, oper2.mpz ); return disjunction; }
-static inline Int ?^=?( Int & lhs, Int rhs ) { return lhs = lhs ^ rhs; }
-
-static inline Int ?+?( Int addend1, Int addend2 ) { Int sum; mpz_add( sum.mpz, addend1.mpz, addend2.mpz ); return sum; }
-static inline Int ?+?( Int addend1, long int addend2 ) { Int sum; if ( addend2 >= 0 ) mpz_add_ui( sum.mpz, addend1.mpz, addend2 ); else mpz_sub_ui( sum.mpz, addend1.mpz, -addend2 ); return sum; }
-static inline Int ?+?( long int addend2, Int addend1 ) { Int sum; if ( addend2 >= 0 ) mpz_add_ui( sum.mpz, addend1.mpz, addend2 ); else mpz_sub_ui( sum.mpz, addend1.mpz, -addend2 ); return sum; }
-static inline Int ?+?( Int addend1, unsigned long int addend2 ) { Int sum; mpz_add_ui( sum.mpz, addend1.mpz, addend2 ); return sum; }
-static inline Int ?+?( unsigned long int addend2, Int addend1 ) { Int sum; mpz_add_ui( sum.mpz, addend1.mpz, addend2 ); return sum; }
-static inline Int ?+=?( Int & lhs, Int rhs ) { return lhs = lhs + rhs; }
-static inline Int ?+=?( Int & lhs, long int rhs ) { return lhs = lhs + rhs; }
-static inline Int ?+=?( Int & lhs, unsigned long int rhs ) { return lhs = lhs + rhs; }
-static inline Int ++?( Int & lhs ) { return lhs += 1; }
-static inline Int ?++( Int & lhs ) { Int ret = lhs; lhs += 1; return ret; }
-
-static inline Int ?-?( Int minuend, Int subtrahend ) { Int diff; mpz_sub( diff.mpz, minuend.mpz, subtrahend.mpz ); return diff; }
-static inline Int ?-?( Int minuend, long int subtrahend ) { Int diff; if ( subtrahend >= 0 ) mpz_sub_ui( diff.mpz, minuend.mpz, subtrahend ); else mpz_add_ui( diff.mpz, minuend.mpz, -subtrahend ); return diff; }
-static inline Int ?-?( long int minuend, Int subtrahend ) { Int diff; if ( subtrahend >= 0 ) mpz_ui_sub( diff.mpz, minuend, subtrahend.mpz ); else { mpz_add_ui( diff.mpz, subtrahend.mpz, -minuend ); mpz_neg( diff.mpz, diff.mpz ); } return diff; }
-static inline Int ?-?( Int minuend, unsigned long int subtrahend ) { Int diff; mpz_sub_ui( diff.mpz, minuend.mpz, subtrahend ); return diff; }
-static inline Int ?-?( unsigned long int minuend, Int subtrahend ) { Int diff; mpz_ui_sub( diff.mpz, minuend, subtrahend.mpz ); return diff; }
-static inline Int ?-=?( Int & lhs, Int rhs ) { return lhs = lhs - rhs; }
-static inline Int ?-=?( Int & lhs, long int rhs ) { return lhs = lhs - rhs; }
-static inline Int ?-=?( Int & lhs, unsigned long int rhs ) { return lhs = lhs - rhs; }
-static inline Int --?( Int & lhs ) { return lhs -= 1; }
-static inline Int ?--( Int & lhs ) { Int ret = lhs; lhs -= 1; return ret; }
-
-static inline Int ?*?( Int multiplicator, Int multiplicand ) { Int product; mpz_mul( product.mpz, multiplicator.mpz, multiplicand.mpz ); return product; }
-static inline Int ?*?( Int multiplicator, long int multiplicand ) { Int product; mpz_mul_si( product.mpz, multiplicator.mpz, multiplicand ); return product; }
-static inline Int ?*?( long int multiplicand, Int multiplicator ) { Int product; mpz_mul_si( product.mpz, multiplicator.mpz, multiplicand ); return product; }
-static inline Int ?*?( Int multiplicator, unsigned long int multiplicand ) { Int product; mpz_mul_ui( product.mpz, multiplicator.mpz, multiplicand ); return product; }
-static inline Int ?*?( unsigned long int multiplicand, Int multiplicator ) { Int product; mpz_mul_ui( product.mpz, multiplicator.mpz, multiplicand ); return product; }
-static inline Int ?*=?( Int & lhs, Int rhs ) { return lhs = lhs * rhs; }
-static inline Int ?*=?( Int & lhs, long int rhs ) { return lhs = lhs * rhs; }
-static inline Int ?*=?( Int & lhs, unsigned long int rhs ) { return lhs = lhs * rhs; }
-
-// some code for operators "/" and "%" taken from g++ gmpxx.h
-static inline Int ?/?( Int dividend, Int divisor ) { Int quotient; mpz_tdiv_q( quotient.mpz, dividend.mpz, divisor.mpz ); return quotient; }
-static inline Int ?/?( Int dividend, unsigned long int divisor ) { Int quotient; mpz_tdiv_q_ui( quotient.mpz, dividend.mpz, divisor ); return quotient; }
-static inline Int ?/?( unsigned long int dividend, Int divisor ) {
-	Int quotient;
-    if ( mpz_sgn( divisor.mpz ) >= 0 ) {
-		if ( mpz_fits_ulong_p( divisor.mpz ) )
-			mpz_set_ui( quotient.mpz, dividend / mpz_get_ui( divisor.mpz ) );
-		else
-			mpz_set_ui( quotient.mpz, 0 );
-	} else {
-		mpz_neg( quotient.mpz, divisor.mpz );
-		if ( mpz_fits_ulong_p( quotient.mpz ) ) {
-			mpz_set_ui( quotient.mpz, dividend / mpz_get_ui( quotient.mpz ) );
-			mpz_neg( quotient.mpz, quotient.mpz );
-		} else
-			mpz_set_ui( quotient.mpz, 0 );
-	} // if
-	return quotient;
-} // ?/?
-static inline Int ?/?( Int dividend, long int divisor ) {
-	Int quotient;
-    if ( divisor >= 0 )
-		mpz_tdiv_q_ui( quotient.mpz, dividend.mpz, divisor );
-    else {
-		mpz_tdiv_q_ui( quotient.mpz, dividend.mpz, -divisor );
-		mpz_neg( quotient.mpz, quotient.mpz );
-	} // if
-	return quotient;
-} // ?/?
-static inline Int ?/?( long int dividend, Int divisor ) {
-	Int quotient;
-    if ( mpz_fits_slong_p( divisor.mpz ) )
-		mpz_set_si( quotient.mpz, dividend / mpz_get_si( divisor.mpz ) );
-    else {
-        // if divisor is bigger than a long then the quotient must be zero, unless dividend==LONG_MIN and
-        // dividend==-LONG_MIN in which case the quotient is -1
-        mpz_set_si( quotient.mpz, mpz_cmpabs_ui( divisor.mpz, (dividend >= 0 ? dividend : -dividend)) == 0 ? -1 : 0 );
-	} // if
-	return quotient;
-} // ?/?
-static inline Int ?/=?( Int & lhs, Int rhs ) { return lhs = lhs / rhs; }
-static inline Int ?/=?( Int & lhs, long int rhs ) { return lhs = lhs / rhs; }
-static inline Int ?/=?( Int & lhs, unsigned long int rhs ) { return lhs = lhs / rhs; }
-
-static inline [ Int, Int ] div( Int dividend, Int divisor ) { Int quotient, remainder; mpz_fdiv_qr( quotient.mpz, remainder.mpz, dividend.mpz, divisor.mpz ); return [ quotient, remainder ]; }
-static inline [ Int, Int ] div( Int dividend, unsigned long int divisor ) { Int quotient, remainder; mpz_fdiv_qr_ui( quotient.mpz, remainder.mpz, dividend.mpz, divisor ); return [ quotient, remainder ]; }
-
-static inline Int ?%?( Int dividend, Int divisor ) { Int remainder; mpz_tdiv_r( remainder.mpz, dividend.mpz, divisor.mpz ); return remainder; }
-static inline Int ?%?( Int dividend, unsigned long int divisor ) { Int remainder; mpz_tdiv_r_ui( remainder.mpz, dividend.mpz, divisor ); return remainder; }
-static inline Int ?%?( unsigned long int dividend, Int divisor ) {
-	Int remainder;
-    if ( mpz_sgn( divisor.mpz ) >= 0 ) {
-		if ( mpz_fits_ulong_p( divisor.mpz ) )
-			mpz_set_ui( remainder.mpz, dividend % mpz_get_ui( divisor.mpz ) );
-		else
-			mpz_set_ui( remainder.mpz, dividend );
-	} else {
-		mpz_neg( remainder.mpz, divisor.mpz );
-		if ( mpz_fits_ulong_p( remainder.mpz ) )
-			mpz_set_ui( remainder.mpz, dividend % mpz_get_ui( remainder.mpz ) );
-		else
-			mpz_set_ui( remainder.mpz, dividend );
-	} // if
-	return remainder;
-} // ?%?
-static inline Int ?%?( Int dividend, long int divisor ) {
-	Int remainder;
-    mpz_tdiv_r_ui( remainder.mpz, dividend.mpz, (divisor >= 0 ? divisor : -divisor));
-	return remainder;
-} // ?%?
-static inline Int ?%?( long int dividend, Int divisor ) {
-	Int remainder;
-    if ( mpz_fits_slong_p( divisor.mpz ) )
-		mpz_set_si( remainder.mpz, dividend % mpz_get_si( divisor.mpz ) );
-	else {
-		// if divisor is bigger than a long then the remainder is dividend unchanged, unless dividend==LONG_MIN and
-		// dividend==-LONG_MIN in which case the remainder is 0
-        mpz_set_si( remainder.mpz, mpz_cmpabs_ui( divisor.mpz, (dividend >= 0 ? dividend : -dividend)) == 0 ? 0 : dividend);
-	} // if
-	return remainder;
-} // ?%?
-static inline Int ?%=?( Int & lhs, Int rhs ) { return lhs = lhs % rhs; }
-static inline Int ?%=?( Int & lhs, long int rhs ) { return lhs = lhs % rhs; }
-static inline Int ?%=?( Int & lhs, unsigned long int rhs ) { return lhs = lhs % rhs; }
-
-static inline Int ?<<?( Int shiften, mp_bitcnt_t shift ) { Int shifted; mpz_mul_2exp( shifted.mpz, shiften.mpz, shift ); return shifted; }
-static inline Int ?<<=?( Int & lhs, mp_bitcnt_t shift ) { return lhs = lhs << shift; }
-static inline Int ?>>?( Int shiften, mp_bitcnt_t shift ) { Int shifted; mpz_fdiv_q_2exp( shifted.mpz, shiften.mpz, shift ); return shifted; }
-static inline Int ?>>=?( Int & lhs, mp_bitcnt_t shift ) { return lhs = lhs >> shift; }
-
-// number functions
-static inline Int abs( Int oper ) { Int positive; mpz_abs( positive.mpz, oper.mpz ); return positive; }
-static inline Int fact( unsigned long int N ) { Int factorial; mpz_fac_ui( factorial.mpz, N ); return factorial; }
-static inline Int gcd( Int oper1, Int oper2 ) { Int gcdret; mpz_gcd( gcdret.mpz, oper1.mpz, oper2.mpz ); return gcdret; }
-static inline Int pow( Int base, unsigned long int exponent ) { Int power; mpz_pow_ui( power.mpz, base.mpz, exponent ); return power; }
-static inline Int pow( unsigned long int base, unsigned long int exponent ) { Int power; mpz_ui_pow_ui( power.mpz, base, exponent ); return power; }
-static inline void srandom( gmp_randstate_t state ) { gmp_randinit_default( state ); }
-static inline Int random( gmp_randstate_t state, mp_bitcnt_t n ) { Int rand; mpz_urandomb( rand.mpz, state, n ); return rand; }
-static inline Int random( gmp_randstate_t state, Int n ) { Int rand; mpz_urandomm( rand.mpz, state, n.mpz ); return rand; }
-static inline Int random( gmp_randstate_t state, mp_size_t max_size ) { Int rand; mpz_random( rand.mpz, max_size ); return rand; }
-static inline int sgn( Int oper ) { return mpz_sgn( oper.mpz ); }
-static inline Int sqrt( Int oper ) { Int root; mpz_sqrt( root.mpz, oper.mpz ); return root; }
-
-// I/O
-static inline forall( dtype istype | istream( istype ) )
-istype & ?|?( istype & is, Int & mp ) {
- 	gmp_scanf( "%Zd", &mp );
- 	return is;
-} // ?|?
-
-static inline forall( dtype ostype | ostream( ostype ) )
-ostype & ?|?( ostype & os, Int mp ) {
-	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-	gmp_printf( "%Zd", mp.mpz );
-	sepOn( os );
- 	return os;
-} // ?|?
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/heap.c
===================================================================
--- src/libcfa/heap.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,979 +1,0 @@
-// 
-// 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.
-// 
-// heap.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Dec 19 21:58:35 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul 31 18:08:50 2018
-// Update Count     : 470
-// 
-
-#include <unistd.h>										// sbrk, sysconf
-#include <stdbool.h>									// true, false
-#include <stdio.h>										// snprintf, fileno
-#include <errno.h>										// errno
-extern "C" {
-#include <sys/mman.h>									// mmap, munmap
-} // extern "C"
-
-#include "bits/align.h"									// libPow2
-#include "bits/defs.h"									// likely, unlikely
-#include "bits/locks.h"									// __spinlock_t
-#include "startup.h"									// STARTUP_PRIORITY_MEMORY
-#include "stdlib"										// bsearchl
-#include "malloc.h"
-
-
-enum {
-	__CFA_DEFAULT_MMAP_START__ = (512 * 1024 + 1),
-	__CFA_DEFAULT_HEAP_EXPANSION__ = (1 * 1024 * 1024),
-};
-
-size_t default_mmap_start() __attribute__(( weak )) {
-    return __CFA_DEFAULT_MMAP_START__;
-} // default_mmap_start
-
-size_t default_heap_expansion() __attribute__(( weak )) {
-    return __CFA_DEFAULT_HEAP_EXPANSION__;
-} // default_heap_expansion
-
-
-// supported mallopt options
-#ifndef M_MMAP_THRESHOLD
-#define M_MMAP_THRESHOLD (-1)
-#endif // M_TOP_PAD
-#ifndef M_TOP_PAD
-#define M_TOP_PAD (-2)
-#endif // M_TOP_PAD
-
-#define FASTLOOKUP
-#define __STATISTICS__
-
-#define SPINLOCK 0
-#define LOCKFREE 1
-#define BUCKETLOCK SPINLOCK
-#if BUCKETLOCK == LOCKFREE
-#include <uStackLF.h>
-#endif // LOCKFREE
-
-#define ALIGN 16
-
-// enum { NoBucketSizes = 93,								// number of buckets sizes
-// #ifdef FASTLOOKUP
-// 	   LookupSizes = 65536,								// number of fast lookup sizes
-// #endif // FASTLOOKUP
-// };
-#define NoBucketSizes 93								// number of buckets sizes
-#ifdef FASTLOOKUP
-#define LookupSizes 65536								// number of fast lookup sizes
-#endif // FASTLOOKUP
-
-
-static _Bool traceHeap = false;
-
-inline _Bool traceHeap() {
-	return traceHeap;
-} // traceHeap
-
-_Bool traceHeapOn() {
-	_Bool temp = traceHeap;
-	traceHeap = true;
-	return temp;
-} // traceHeapOn
-
-_Bool traceHeapOff() {
-	_Bool temp = traceHeap;
-	traceHeap = false;
-	return temp;
-} // traceHeapOff
-
-
-static _Bool checkFree = false;
-
-inline _Bool checkFree() {
-	return checkFree;
-} // checkFree
-
-_Bool checkFreeOn() {
-	_Bool temp = checkFree;
-	checkFree = true;
-	return temp;
-} // checkFreeOn
-
-_Bool checkFreeOff() {
-	_Bool temp = checkFree;
-	checkFree = false;
-	return temp;
-} // checkFreeOff
-
-
-// static _Bool traceHeapTerm = false;
-
-// inline _Bool traceHeapTerm() {
-// 	return traceHeapTerm;
-// } // traceHeapTerm
-
-// _Bool traceHeapTermOn() {
-// 	_Bool temp = traceHeapTerm;
-// 	traceHeapTerm = true;
-// 	return temp;
-// } // traceHeapTermOn
-
-// _Bool traceHeapTermOff() {
-// 	_Bool temp = traceHeapTerm;
-// 	traceHeapTerm = false;
-// 	return temp;
-// } // traceHeapTermOff
-
-
-#ifdef __CFA_DEBUG__
-static unsigned int allocfree;							// running total of allocations minus frees
-static unsigned int appStart;							// storage allocation when application starts
-
-static void checkUnfreed() {
-	unsigned int total = allocfree - appStart;
-    if ( total != 0 ) {
-		// DO NOT USE STREAMS AS THEY MAY BE UNAVAILABLE AT THIS POINT.
-		// char helpText[512];
-		// int len = snprintf( helpText, 512, "CFA warning (UNIX pid:%ld) : program terminating with %u(0x%x) bytes of storage allocated but not freed.\n"
-		// 					"Possible cause is unfreed storage allocated by the program or system/library routines called from the program.\n",
-		// 					(long int)getpid(), total, total ); // always print the UNIX pid
-		// __cfaabi_dbg_bits_write( helpText, len );
-    } // if
-} // checkUnfreed
-
-extern "C" {
-void heapAppStart() {									// called by __cfaabi_appready_startup
-	appStart = allocfree;
-} // heapAppStart
-
-void heapAppStop() {									// called by __cfaabi_appready_startdown
-	checkUnfreed();
-} // heapAppStop
-} // extern "C"
-#endif // __CFA_DEBUG__
-
-
-struct HeapManager {
-//	struct FreeHeader;									// forward declaration
-
-	struct Storage {
-	    struct Header {									// header
-			union Kind {
-				struct RealHeader {
-					union {
-						struct {						// 32-bit word => 64-bit header, 64-bit word => 128-bit header
-							#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ && __SIZEOF_POINTER__ == 4
-							uint32_t padding;			// unused, force home/blocksize to overlay alignment in fake header
-							#endif // __ORDER_BIG_ENDIAN__ && __U_WORDSIZE__ == 32
-
-							union {
-//								FreeHeader * home;		// allocated block points back to home locations (must overlay alignment)
-								void * home;			// allocated block points back to home locations (must overlay alignment)
-								size_t blockSize;		// size for munmap (must overlay alignment)
-								#if BUCKLOCK == SPINLOCK
-								Storage * next;			// freed block points next freed block of same size
-								#endif // SPINLOCK
-							};
-
-							#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_POINTER__ == 4
-							uint32_t padding;			// unused, force home/blocksize to overlay alignment in fake header
-							#endif // __ORDER_LITTLE_ENDIAN__ && __U_WORDSIZE__ == 32
-
-						};
-						#if BUCKLOCK == LOCKFREE
-						Stack<Storage>::Link next;		// freed block points next freed block of same size (double-wide)
-						#endif // LOCKFREE
-					};
-				} real;
-				struct FakeHeader {
-					#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-					uint32_t alignment;					// low-order bits of home/blockSize used for tricks
-					#endif // __ORDER_LITTLE_ENDIAN__
-
-					uint32_t offset;
-
-					#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
-					uint32_t alignment;					// low-order bits of home/blockSize used for tricks
-					#endif // __ORDER_BIG_ENDIAN__
-				} fake;
-			} kind;
-	    } header; // Header
-	    char pad[ALIGN - sizeof( Header )];
-	    char data[0];									// storage
-	}; // Storage
-
-	static_assert( ALIGN >= sizeof( Storage ), "ALIGN < sizeof( Storage )" );
-
-	struct FreeHeader {
-		#if BUCKLOCK == SPINLOCK
-	    __spinlock_t lock;								// must be first field for alignment
-	    Storage * freeList;
-		#elif BUCKLOCK == LOCKFREE
-	    StackLF<Storage> freeList;
-		#else
-			#error undefined lock type for bucket lock
-		#endif // SPINLOCK
-	    size_t blockSize;								// size of allocations on this list
-	}; // FreeHeader
-
-	// must be first fields for alignment
-	__spinlock_t extlock;								// protects allocation-buffer extension
-	FreeHeader freeLists[NoBucketSizes];				// buckets for different allocation sizes
-
-	void * heapBegin;									// start of heap
-	void * heapEnd;										// logical end of heap
-	size_t heapRemaining;								// amount of storage not allocated in the current chunk
-}; // HeapManager
-
-static inline size_t getKey( const HeapManager.FreeHeader & freeheader ) { return freeheader.blockSize; }
-// statically allocated variables => zero filled.
-
-
-static size_t pageSize;									// architecture pagesize
-static size_t heapExpand;								// sbrk advance
-static size_t mmapStart;								// cross over point for mmap
-static unsigned int maxBucketsUsed;						// maximum number of buckets in use
-
-// Powers of 2 are common allocation sizes, so make powers of 2 generate the minimum required size.
-static unsigned int bucketSizes[NoBucketSizes] @= {		// different bucket sizes
-    16, 32, 48, 64,
-    64 + sizeof(HeapManager.Storage), 96, 112, 128, 128 + sizeof(HeapManager.Storage), 160, 192, 224,
-    256 + sizeof(HeapManager.Storage), 320, 384, 448, 512 + sizeof(HeapManager.Storage), 640, 768, 896,
-    1_024 + sizeof(HeapManager.Storage), 1_536, 2_048 + sizeof(HeapManager.Storage), 2_560, 3_072, 3_584, 4_096 + sizeof(HeapManager.Storage), 6_144,
-    8_192 + sizeof(HeapManager.Storage), 9_216, 10_240, 11_264, 12_288, 13_312, 14_336, 15_360,
-    16_384 + sizeof(HeapManager.Storage), 18_432, 20_480, 22_528, 24_576, 26_624, 28_672, 30_720,
-    32_768 + sizeof(HeapManager.Storage), 36_864, 40_960, 45_056, 49_152, 53_248, 57_344, 61_440,
-    65_536 + sizeof(HeapManager.Storage), 73_728, 81_920, 90_112, 98_304, 106_496, 114_688, 122_880,
-    131_072 + sizeof(HeapManager.Storage), 147_456, 163_840, 180_224, 196_608, 212_992, 229_376, 245_760,
-    262_144 + sizeof(HeapManager.Storage), 294_912, 327_680, 360_448, 393_216, 425_984, 458_752, 491_520,
-    524_288 + sizeof(HeapManager.Storage), 655_360, 786_432, 917_504, 1_048_576 + sizeof(HeapManager.Storage), 1_179_648, 1_310_720, 1_441_792,
-    1_572_864, 1_703_936, 1_835_008, 1_966_080, 2_097_152 + sizeof(HeapManager.Storage), 2_621_440, 3_145_728, 3_670_016,
-    4_194_304 + sizeof(HeapManager.Storage)
-};
-#ifdef FASTLOOKUP
-static unsigned char lookup[LookupSizes];				// O(1) lookup for small sizes
-#endif // FASTLOOKUP
-static int mmapFd = -1;									// fake or actual fd for anonymous file
-
-
-#ifdef __CFA_DEBUG__
-static _Bool heapBoot = 0;								// detect recursion during boot
-#endif // __CFA_DEBUG__
-static HeapManager heapManager __attribute__(( aligned (128) )) @= {}; // size of cache line to prevent false sharing
-
-
-static inline _Bool setMmapStart( size_t value ) {
-    if ( value < pageSize || bucketSizes[NoBucketSizes - 1] < value ) return true;
-    mmapStart = value;									// set global
-
-    // find the closest bucket size less than or equal to the mmapStart size
-    maxBucketsUsed = bsearchl( (unsigned int)mmapStart, bucketSizes, NoBucketSizes ); // binary search
-    assert( maxBucketsUsed < NoBucketSizes );			// subscript failure ?
-    assert( mmapStart <= bucketSizes[maxBucketsUsed] ); // search failure ?
-    return false;
-} // setMmapStart
-
-
-static void ?{}( HeapManager & manager ) with ( manager ) {
-    pageSize = sysconf( _SC_PAGESIZE );
-    
-    for ( unsigned int i = 0; i < NoBucketSizes; i += 1 ) { // initialize the free lists
-		freeLists[i].blockSize = bucketSizes[i];
-    } // for
-
-	#ifdef FASTLOOKUP
-    unsigned int idx = 0;
-    for ( unsigned int i = 0; i < LookupSizes; i += 1 ) {
-		if ( i > bucketSizes[idx] ) idx += 1;
-		lookup[i] = idx;
-    } // for
-	#endif // FASTLOOKUP
-
-    if ( setMmapStart( default_mmap_start() ) ) {
-		abort( "HeapManager : internal error, mmap start initialization failure." );
-    } // if
-    heapExpand = default_heap_expansion();
-
-    char * End = (char *)sbrk( 0 );
-    sbrk( (char *)libCeiling( (long unsigned int)End, libAlign() ) - End ); // move start of heap to multiple of alignment
-    heapBegin = heapEnd = sbrk( 0 );					// get new start point
-} // HeapManager
-
-
-static void ^?{}( HeapManager & ) {
-	#ifdef __STATISTICS__
-	// if ( traceHeapTerm() ) {
-	// 	printStats();
-	// 	if ( checkfree() ) checkFree( heapManager, true );
-	// } // if
-	#endif // __STATISTICS__
-} // ~HeapManager
-
-
-static void memory_startup( void ) __attribute__(( constructor( STARTUP_PRIORITY_MEMORY ) ));
-void memory_startup( void ) {
-	#ifdef __CFA_DEBUG__
-	if ( unlikely( heapBoot ) ) {					// check for recursion during system boot
-		// DO NOT USE STREAMS AS THEY MAY BE UNAVAILABLE AT THIS POINT.
-		abort( "boot() : internal error, recursively invoked during system boot." );
-	} // if
-	heapBoot = true;
-	#endif // __CFA_DEBUG__
-
-	assert( heapManager.heapBegin == 0 );
-	heapManager{};
-} // memory_startup
-
-static void memory_shutdown( void ) __attribute__(( destructor( STARTUP_PRIORITY_MEMORY ) ));
-void memory_shutdown( void ) {
-	^heapManager{};
-} // memory_shutdown
-
-
-#ifdef __STATISTICS__
-static unsigned long long int mmap_storage;				// heap statistics counters
-static unsigned int mmap_calls;
-static unsigned long long int munmap_storage;
-static unsigned int munmap_calls;
-static unsigned long long int sbrk_storage;
-static unsigned int sbrk_calls;
-static unsigned long long int malloc_storage;
-static unsigned int malloc_calls;
-static unsigned long long int free_storage;
-static unsigned int free_calls;
-static unsigned long long int calloc_storage;
-static unsigned int calloc_calls;
-static unsigned long long int memalign_storage;
-static unsigned int memalign_calls;
-static unsigned long long int cmemalign_storage;
-static unsigned int cmemalign_calls;
-static unsigned long long int realloc_storage;
-static unsigned int realloc_calls;
-
-static int statfd;										// statistics file descriptor (changed by malloc_stats_fd)
-
-
-// Use "write" because streams may be shutdown when calls are made.
-static void printStats() {
-    char helpText[512];
-	__cfaabi_dbg_bits_print_buffer( helpText, 512,
-			"\nHeap statistics:\n"
-			"  malloc: calls %u / storage %llu\n"
-			"  calloc: calls %u / storage %llu\n"
-			"  memalign: calls %u / storage %llu\n"
-			"  cmemalign: calls %u / storage %llu\n"
-			"  realloc: calls %u / storage %llu\n"
-			"  free: calls %u / storage %llu\n"
-			"  mmap: calls %u / storage %llu\n"
-			"  munmap: calls %u / storage %llu\n"
-			"  sbrk: calls %u / storage %llu\n",
-			malloc_calls, malloc_storage,
-			calloc_calls, calloc_storage,
-			memalign_calls, memalign_storage,
-			cmemalign_calls, cmemalign_storage,
-			realloc_calls, realloc_storage,
-			free_calls, free_storage,
-			mmap_calls, mmap_storage,
-			munmap_calls, munmap_storage,
-			sbrk_calls, sbrk_storage
-		);
-} // printStats
-
-
-static int printStatsXML( FILE * stream ) {
-    char helpText[512];
-    int len = snprintf( helpText, 512,
-						"<malloc version=\"1\">\n"
-						"<heap nr=\"0\">\n"
-						"<sizes>\n"
-						"</sizes>\n"
-						"<total type=\"malloc\" count=\"%u\" size=\"%llu\"/>\n"
-						"<total type=\"calloc\" count=\"%u\" size=\"%llu\"/>\n"
-						"<total type=\"memalign\" count=\"%u\" size=\"%llu\"/>\n"
-						"<total type=\"cmemalign\" count=\"%u\" size=\"%llu\"/>\n"
-						"<total type=\"realloc\" count=\"%u\" size=\"%llu\"/>\n"
-						"<total type=\"free\" count=\"%u\" size=\"%llu\"/>\n"
-						"<total type=\"mmap\" count=\"%u\" size=\"%llu\"/>\n"
-						"<total type=\"munmap\" count=\"%u\" size=\"%llu\"/>\n"
-						"<total type=\"sbrk\" count=\"%u\" size=\"%llu\"/>\n"
-						"</malloc>",
-						malloc_calls, malloc_storage,
-						calloc_calls, calloc_storage,
-						memalign_calls, memalign_storage,
-						cmemalign_calls, cmemalign_storage,
-						realloc_calls, realloc_storage,
-						free_calls, free_storage,
-						mmap_calls, mmap_storage,
-						munmap_calls, munmap_storage,
-						sbrk_calls, sbrk_storage
-		);
-    return write( fileno( stream ), helpText, len );	// -1 => error
-} // printStatsXML
-#endif // __STATISTICS__
-
-
-static inline void noMemory() {
-    abort( "Heap memory exhausted at %zu bytes.\n"
-			"Possible cause is very large memory allocation and/or large amount of unfreed storage allocated by the program or system/library routines.",
-			((char *)(sbrk( 0 )) - (char *)(heapManager.heapBegin)) );
-} // noMemory
-
-
-static inline void checkAlign( size_t alignment ) {
-    if ( alignment < sizeof(void *) || ! libPow2( alignment ) ) {
-		abort( "Alignment %zu for memory allocation is less than sizeof(void *) and/or not a power of 2.", alignment );
-    } // if
-} // checkAlign
-
-
-static inline _Bool setHeapExpand( size_t value ) {
-    if ( heapExpand < pageSize ) return true;
-    heapExpand = value;
-    return false;
-} // setHeapExpand
-
-
-static inline void checkHeader( _Bool check, const char * name, void * addr ) {
-    if ( unlikely( check ) ) {							// bad address ?
-		abort( "Attempt to %s storage %p with address outside the heap.\n"
-				"Possible cause is duplicate free on same block or overwriting of memory.",
-				name, addr );
-    } // if
-} // checkHeader
-
-
-static inline void fakeHeader( HeapManager.Storage.Header *& header, size_t & size, size_t & alignment ) {
-    if ( unlikely( (header->kind.fake.alignment & 1) == 1 ) ) { // fake header ?
-		size_t offset = header->kind.fake.offset;
-		alignment = header->kind.fake.alignment & -2;	// remove flag from value
-		#ifdef __CFA_DEBUG__
-		checkAlign( alignment );						// check alignment
-		#endif // __CFA_DEBUG__
-		header = (HeapManager.Storage.Header *)((char *)header - offset);
-    } // if
-} // fakeHeader
-
-
-#define headerAddr( addr ) ((HeapManager.Storage.Header *)( (char *)addr - sizeof(HeapManager.Storage) ))
-
-static inline _Bool headers( const char * name, void * addr, HeapManager.Storage.Header *& header, HeapManager.FreeHeader *& freeElem, size_t & size, size_t & alignment ) with ( heapManager ) {
-    header = headerAddr( addr );
-
-    if ( unlikely( heapEnd < addr ) ) {					// mmapped ?
-		fakeHeader( header, size, alignment );
-		size = header->kind.real.blockSize & -3;		// mmap size
-		return true;
-    } // if
-
-	#ifdef __CFA_DEBUG__
-    checkHeader( addr < heapBegin || header < (HeapManager.Storage.Header *)heapBegin, name, addr ); // bad low address ?
-	#endif // __CFA_DEBUG__
-    // header may be safe to dereference
-    fakeHeader( header, size, alignment );
-	#ifdef __CFA_DEBUG__
-    checkHeader( header < (HeapManager.Storage.Header *)heapBegin || (HeapManager.Storage.Header *)heapEnd < header, name, addr ); // bad address ? (offset could be + or -)
-	#endif // __CFA_DEBUG__
-
-    freeElem = (HeapManager.FreeHeader *)((size_t)header->kind.real.home & -3);
-	#ifdef __CFA_DEBUG__
-    if ( freeElem < &freeLists[0] || &freeLists[NoBucketSizes] <= freeElem ) {
-		abort( "Attempt to %s storage %p with corrupted header.\n"
-			   "Possible cause is duplicate free on same block or overwriting of header information.",
-			   name, addr );
-    } // if
-	#endif // __CFA_DEBUG__
-    size = freeElem->blockSize;
-    return false;
-} // headers
-
-
-static inline void * extend( size_t size ) with ( heapManager ) {
-    lock( extlock __cfaabi_dbg_ctx2 );
-    ptrdiff_t rem = heapRemaining - size;
-    if ( rem < 0 ) {
-		// If the size requested is bigger than the current remaining storage, increase the size of the heap.
-
-		size_t increase = libCeiling( size > heapExpand ? size : heapExpand, libAlign() );
-		if ( sbrk( increase ) == (void *)-1 ) {
-			unlock( extlock );
-			errno = ENOMEM;
-			return 0;
-		} // if
-#ifdef __STATISTICS__
-		sbrk_calls += 1;
-		sbrk_storage += increase;
-#endif // __STATISTICS__
-#ifdef __CFA_DEBUG__
-		// Set new memory to garbage so subsequent uninitialized usages might fail.
-		memset( (char *)heapEnd + heapRemaining, '\377', increase );
-#endif // __CFA_DEBUG__
-		rem = heapRemaining + increase - size;
-    } // if
-
-    HeapManager.Storage * block = (HeapManager.Storage *)heapEnd;
-    heapRemaining = rem;
-    heapEnd = (char *)heapEnd + size;
-    unlock( extlock );
-    return block;
-} // extend
-
-
-static inline void * doMalloc( size_t size ) with ( heapManager ) {
-    HeapManager.Storage * block;
-
-    // Look up size in the size list.  Make sure the user request includes space for the header that must be allocated
-    // along with the block and is a multiple of the alignment size.
-
-    size_t tsize = size + sizeof(HeapManager.Storage);
-    if ( likely( tsize < mmapStart ) ) {				// small size => sbrk
-		HeapManager.FreeHeader * freeElem =
-			#ifdef FASTLOOKUP
-			tsize < LookupSizes ? &freeLists[lookup[tsize]] :
-			#endif // FASTLOOKUP
-			bsearchl( tsize, freeLists, (size_t)maxBucketsUsed ); // binary search
-		assert( freeElem <= &freeLists[maxBucketsUsed] ); // subscripting error ?
-		assert( tsize <= freeElem->blockSize );			// search failure ?
-		tsize = freeElem->blockSize;					// total space needed for request
-
-		// Spin until the lock is acquired for this particular size of block.
-
-		#if defined( SPINLOCK )
-		lock( freeElem->lock __cfaabi_dbg_ctx2 );
-		block = freeElem->freeList;						// remove node from stack
-		#else
-		block = freeElem->freeList.pop();
-		#endif // SPINLOCK
-		if ( unlikely( block == 0 ) ) {					// no free block ?
-			#if defined( SPINLOCK )
-			unlock( freeElem->lock );
-			#endif // SPINLOCK
-			// Freelist for that size was empty, so carve it out of the heap if there's enough left, or get some more
-			// and then carve it off.
-
-			block = (HeapManager.Storage *)extend( tsize );	// mutual exclusion on call
-			if ( unlikely( block == 0 ) ) return 0;
-			#if defined( SPINLOCK )
-		} else {
-			freeElem->freeList = block->header.kind.real.next;
-			unlock( freeElem->lock );
-			#endif // SPINLOCK
-		} // if
-
-		block->header.kind.real.home = freeElem;		// pointer back to free list of apropriate size
-    } else {											// large size => mmap
-		tsize = libCeiling( tsize, pageSize );			// must be multiple of page size
-		#ifdef __STATISTICS__
-		__atomic_add_fetch( &mmap_calls, 1, __ATOMIC_SEQ_CST );
-		__atomic_add_fetch( &mmap_storage, tsize, __ATOMIC_SEQ_CST );
-		#endif // __STATISTICS__
-		block = (HeapManager.Storage *)mmap( 0, tsize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, mmapFd, 0 );
-		if ( block == (HeapManager.Storage *)MAP_FAILED ) {
-			// Do not call strerror( errno ) as it may call malloc.
-			abort( "(HeapManager &)0x%p.doMalloc() : internal error, mmap failure, size:%zu error:%d.", &heapManager, tsize, errno );
-		} // if
-#ifdef __CFA_DEBUG__
-		// Set new memory to garbage so subsequent uninitialized usages might fail.
-		memset( block, '\377', tsize );
-#endif // __CFA_DEBUG__
-		block->header.kind.real.blockSize = tsize;		// storage size for munmap
-    } // if
-
-    void * area = &(block->data);						// adjust off header to user bytes
-
-	#ifdef __CFA_DEBUG__
-    assert( ((uintptr_t)area & (libAlign() - 1)) == 0 ); // minimum alignment ?
-    __atomic_add_fetch( &allocfree, tsize, __ATOMIC_SEQ_CST );
-	if ( traceHeap() ) {
-		enum { BufferSize = 64 };
-		char helpText[BufferSize];
-		int len = snprintf( helpText, BufferSize, "%p = Malloc( %zu ) (allocated %zu)\n", area, size, tsize );
-		// int len = snprintf( helpText, BufferSize, "Malloc %p %zu\n", area, size );
-		__cfaabi_dbg_bits_write( helpText, len );
-	} // if
-	#endif // __CFA_DEBUG__
-
-    return area;
-} // doMalloc
-
-
-static inline void doFree( void * addr ) with ( heapManager ) {
-	#ifdef __CFA_DEBUG__
-    if ( unlikely( heapManager.heapBegin == 0 ) ) {
-		abort( "doFree( %p ) : internal error, called before heap is initialized.", addr );
-    } // if
-	#endif // __CFA_DEBUG__
-
-    HeapManager.Storage.Header * header;
-    HeapManager.FreeHeader * freeElem;
-    size_t size, alignment;								// not used (see realloc)
-
-    if ( headers( "free", addr, header, freeElem, size, alignment ) ) { // mmapped ?
-		#ifdef __STATISTICS__
-		__atomic_add_fetch( &munmap_calls, 1, __ATOMIC_SEQ_CST );
-		__atomic_add_fetch( &munmap_storage, size, __ATOMIC_SEQ_CST );
-		#endif // __STATISTICS__
-		if ( munmap( header, size ) == -1 ) {
-			#ifdef __CFA_DEBUG__
-			abort( "Attempt to deallocate storage %p not allocated or with corrupt header.\n"
-					"Possible cause is invalid pointer.",
-					addr );
-			#endif // __CFA_DEBUG__
-		} // if
-    } else {
-		#ifdef __CFA_DEBUG__
-		// Set free memory to garbage so subsequent usages might fail.
-		memset( ((HeapManager.Storage *)header)->data, '\377', freeElem->blockSize - sizeof( HeapManager.Storage ) );
-		#endif // __CFA_DEBUG__
-
-		#ifdef __STATISTICS__
-		free_storage += size;
-		#endif // __STATISTICS__
-		#if defined( SPINLOCK )
-		lock( freeElem->lock __cfaabi_dbg_ctx2 );		// acquire spin lock
-		header->kind.real.next = freeElem->freeList;	// push on stack
-		freeElem->freeList = (HeapManager.Storage *)header;
-		unlock( freeElem->lock );						// release spin lock
-		#else
-		freeElem->freeList.push( *(HeapManager.Storage *)header );
-		#endif // SPINLOCK
-    } // if
-
-	#ifdef __CFA_DEBUG__
-    __atomic_add_fetch( &allocfree, -size, __ATOMIC_SEQ_CST );
-    if ( traceHeap() ) {
-		enum { BufferSize = 64 };
-		char helpText[BufferSize];
-		int len = snprintf( helpText, BufferSize, "Free( %p ) size:%zu\n", addr, size );
-		__cfaabi_dbg_bits_write( helpText, len );
-    } // if
-	#endif // __CFA_DEBUG__
-} // doFree
-
-
-size_t checkFree( HeapManager & manager ) with ( manager ) {
-    size_t total = 0;
-	#ifdef __STATISTICS__
-    __cfaabi_dbg_bits_acquire();
-    __cfaabi_dbg_bits_print_nolock( "\nBin lists (bin size : free blocks on list)\n" );
-	#endif // __STATISTICS__
-    for ( unsigned int i = 0; i < maxBucketsUsed; i += 1 ) {
-		size_t size = freeLists[i].blockSize;
-		#ifdef __STATISTICS__
-		unsigned int N = 0;
-		#endif // __STATISTICS__
-		#if defined( SPINLOCK )
-		for ( HeapManager.Storage * p = freeLists[i].freeList; p != 0; p = p->header.kind.real.next ) {
-		#else
-		for ( HeapManager.Storage * p = freeLists[i].freeList.top(); p != 0; p = p->header.kind.real.next.top ) {
-		#endif // SPINLOCK
-			total += size;
-			#ifdef __STATISTICS__
-			N += 1;
-			#endif // __STATISTICS__
-	    } // for
-		#ifdef __STATISTICS__
-	    __cfaabi_dbg_bits_print_nolock( "%7zu, %-7u  ", size, N );
-	    if ( (i + 1) % 8 == 0 ) __cfaabi_dbg_bits_print_nolock( "\n" );
-		#endif // __STATISTICS__
-	} // for
-	#ifdef __STATISTICS__
-	__cfaabi_dbg_bits_print_nolock( "\ntotal free blocks:%zu\n", total );
-	__cfaabi_dbg_bits_release();
-	#endif // __STATISTICS__
-	return (char *)heapEnd - (char *)heapBegin - total;
-} // checkFree
-
-
-static inline void * malloc2( size_t size ) {			// necessary for malloc statistics
-	assert( heapManager.heapBegin != 0 );
-    void * area = doMalloc( size );
-    if ( unlikely( area == 0 ) ) errno = ENOMEM;		// POSIX
-    return area;
-} // malloc2
-
-
-static inline void * memalign2( size_t alignment, size_t size ) { // necessary for malloc statistics
-#ifdef __CFA_DEBUG__
-    checkAlign( alignment );							// check alignment
-#endif // __CFA_DEBUG__
-
-    // if alignment <= default alignment, do normal malloc as two headers are unnecessary
-    if ( unlikely( alignment <= libAlign() ) ) return malloc2( size );
-
-    // Allocate enough storage to guarantee an address on the alignment boundary, and sufficient space before it for
-    // administrative storage. NOTE, WHILE THERE ARE 2 HEADERS, THE FIRST ONE IS IMPLICITLY CREATED BY DOMALLOC.
-    //      .-------------v-----------------v----------------v----------,
-    //      | Real Header | ... padding ... |   Fake Header  | data ... |
-    //      `-------------^-----------------^-+--------------^----------'
-    //      |<--------------------------------' offset/align |<-- alignment boundary
-
-    // subtract libAlign() because it is already the minimum alignment
-    // add sizeof(Storage) for fake header
-    char * area = (char *)doMalloc( size + alignment - libAlign() + sizeof(HeapManager.Storage) );
-    if ( unlikely( area == 0 ) ) return area;
-
-    // address in the block of the "next" alignment address
-    char * user = (char *)libCeiling( (uintptr_t)(area + sizeof(HeapManager.Storage)), alignment );
-
-    // address of header from malloc
-    HeapManager.Storage.Header * realHeader = headerAddr( area );
-    // address of fake header * before* the alignment location
-    HeapManager.Storage.Header * fakeHeader = headerAddr( user );
-    // SKULLDUGGERY: insert the offset to the start of the actual storage block and remember alignment
-    fakeHeader->kind.fake.offset = (char *)fakeHeader - (char *)realHeader;
-    // SKULLDUGGERY: odd alignment imples fake header
-    fakeHeader->kind.fake.alignment = alignment | 1;
-
-    return user;
-} // memalign2
-
-
-extern "C" {
-    void * malloc( size_t size ) {
-		#ifdef __STATISTICS__
-		__atomic_add_fetch( &malloc_calls, 1, __ATOMIC_SEQ_CST );
-		__atomic_add_fetch( &malloc_storage, size, __ATOMIC_SEQ_CST );
-		#endif // __STATISTICS__
-
-		return malloc2( size );
-    } // malloc
-
-
-    void * calloc( size_t noOfElems, size_t elemSize ) {
-		size_t size = noOfElems * elemSize;
-		#ifdef __STATISTICS__
-		__atomic_add_fetch( &calloc_calls, 1, __ATOMIC_SEQ_CST );
-		__atomic_add_fetch( &calloc_storage, size, __ATOMIC_SEQ_CST );
-		#endif // __STATISTICS__
-
-		char * area = (char *)malloc2( size );
-		if ( unlikely( area == 0 ) ) return 0;
-		HeapManager.Storage.Header * header;
-		HeapManager.FreeHeader * freeElem;
-		size_t asize, alignment;
-		_Bool mapped __attribute__(( unused )) = headers( "calloc", area, header, freeElem, asize, alignment );
-		#ifndef __CFA_DEBUG__
-		// Mapped storage is zero filled, but in debug mode mapped memory is scrubbed in doMalloc, so it has to be reset to zero. 
-		if ( ! mapped )
-		#endif // __CFA_DEBUG__
-			memset( area, '\0', asize - sizeof(HeapManager.Storage) ); // set to zeros
-		header->kind.real.blockSize |= 2;		// mark as zero filled
-		return area;
-    } // calloc
-
-
-    void * cmemalign( size_t alignment, size_t noOfElems, size_t elemSize ) {
-		size_t size = noOfElems * elemSize;
-		#ifdef __STATISTICS__
-		__atomic_add_fetch( &cmemalign_calls, 1, __ATOMIC_SEQ_CST );
-		__atomic_add_fetch( &cmemalign_storage, size, __ATOMIC_SEQ_CST );
-		#endif // __STATISTICS__
-
-		char * area = (char *)memalign2( alignment, size );
-		if ( unlikely( area == 0 ) ) return 0;
-		HeapManager.Storage.Header * header;
-		HeapManager.FreeHeader * freeElem;
-		size_t asize;
-		_Bool mapped __attribute__(( unused )) = headers( "cmemalign", area, header, freeElem, asize, alignment );
-		#ifndef __CFA_DEBUG__
-		// Mapped storage is zero filled, but in debug mode mapped memory is scrubbed in doMalloc, so it has to be reset to zero. 
-		if ( ! mapped )
-		#endif // __CFA_DEBUG__
-			memset( area, '\0', asize - ( (char *)area - (char *)header ) ); // set to zeros
-		header->kind.real.blockSize |= 2;				// mark as zero filled
-
-		return area;
-    } // cmemalign
-
-
-    void * realloc( void * addr, size_t size ) {
-		#ifdef __STATISTICS__
-		__atomic_add_fetch( &realloc_calls, 1, __ATOMIC_SEQ_CST );
-		#endif // __STATISTICS__
-
-		if ( unlikely( addr == 0 ) ) return malloc2( size ); // special cases
-		if ( unlikely( size == 0 ) ) { free( addr ); return 0; }
-
-		HeapManager.Storage.Header * header;
-		HeapManager.FreeHeader * freeElem;
-		size_t asize, alignment = 0;
-		headers( "realloc", addr, header, freeElem, asize, alignment );
-
-		size_t usize = asize - ( (char *)addr - (char *)header ); // compute the amount of user storage in the block
-		if ( usize >= size ) {							// already sufficient storage
-			// This case does not result in a new profiler entry because the previous one still exists and it must match with
-			// the free for this memory.  Hence, this realloc does not appear in the profiler output.
-			return addr;
-		} // if
-
-		#ifdef __STATISTICS__
-		__atomic_add_fetch( &realloc_storage, size, __ATOMIC_SEQ_CST );
-		#endif // __STATISTICS__
-
-		void * area;
-		if ( unlikely( alignment != 0 ) ) {				// previous request memalign?
-			area = memalign( alignment, size );			// create new area
-		} else {
-			area = malloc2( size );	// create new area
-		} // if
-		if ( unlikely( area == 0 ) ) return 0;
-		if ( unlikely( header->kind.real.blockSize & 2 ) ) { // previous request zero fill (calloc/cmemalign) ?
-			assert( (header->kind.real.blockSize & 1) == 0 );
-			_Bool mapped __attribute__(( unused )) = headers( "realloc", area, header, freeElem, asize, alignment );
-			#ifndef __CFA_DEBUG__
-			// Mapped storage is zero filled, but in debug mode mapped memory is scrubbed in doMalloc, so it has to be reset to zero. 
-			if ( ! mapped )
-			#endif // __CFA_DEBUG__
-				memset( (char *)area + usize, '\0', asize - ( (char *)area - (char *)header ) - usize ); // zero-fill back part
-			header->kind.real.blockSize |= 2;			// mark new request as zero fill
-		} // if
-		memcpy( area, addr, usize );					// copy bytes
-		free( addr );
-		return area;
-    } // realloc
-
-
-    void * memalign( size_t alignment, size_t size ) {
-		#ifdef __STATISTICS__
-		__atomic_add_fetch( &memalign_calls, 1, __ATOMIC_SEQ_CST );
-		__atomic_add_fetch( &memalign_storage, size, __ATOMIC_SEQ_CST );
-		#endif // __STATISTICS__
-
-		void * area = memalign2( alignment, size );
-
-		return area;
-    } // memalign
-
-
-    void * aligned_alloc( size_t alignment, size_t size ) {
-		return memalign( alignment, size );
-    } // aligned_alloc
-
-
-    int posix_memalign( void ** memptr, size_t alignment, size_t size ) {
-		if ( alignment < sizeof(void *) || ! libPow2( alignment ) ) return EINVAL; // check alignment
-		* memptr = memalign( alignment, size );
-		if ( unlikely( * memptr == 0 ) ) return ENOMEM;
-		return 0;
-    } // posix_memalign
-
-
-    void * valloc( size_t size ) {
-		return memalign( pageSize, size );
-    } // valloc
-
-
-    void free( void * addr ) {
-		#ifdef __STATISTICS__
-		__atomic_add_fetch( &free_calls, 1, __ATOMIC_SEQ_CST );
-		#endif // __STATISTICS__
-
-		if ( unlikely( addr == 0 ) ) {					// special case
-			#ifdef __CFA_DEBUG__
-			if ( traceHeap() ) {
-				#define nullmsg "Free( 0x0 ) size:0\n"
-				// Do not debug print free( 0 ), as it can cause recursive entry from sprintf.
-				__cfaabi_dbg_bits_write( nullmsg, sizeof(nullmsg) - 1 );
-			} // if
-			#endif // __CFA_DEBUG__
-			return;
-		} // exit
-
-		doFree( addr );
-    } // free
-
-    int mallopt( int option, int value ) {
-		choose( option ) {
-		  case M_TOP_PAD:
-			if ( setHeapExpand( value ) ) fallthru default;
-		  case M_MMAP_THRESHOLD:
-			if ( setMmapStart( value ) ) fallthru default;
-		  default:
-			return 1;									// success, or unsupported
-		} // switch
-		return 0;										// error
-    } // mallopt
-
-
-	int malloc_trim( size_t ) {
-		return 0;										// => impossible to release memory
-	} // malloc_trim
-
-    size_t malloc_usable_size( void * addr ) {
-		if ( unlikely( addr == 0 ) ) return 0;			// null allocation has 0 size
-		HeapManager.Storage.Header * header;
-		HeapManager.FreeHeader * freeElem;
-		size_t size, alignment;
-
-		headers( "malloc_usable_size", addr, header, freeElem, size, alignment );
-		size_t usize = size - ( (char *)addr - (char *)header ); // compute the amount of user storage in the block
-		return usize;
-    } // malloc_usable_size
-
-
-    size_t malloc_alignment( void * addr ) {
-		if ( unlikely( addr == 0 ) ) return libAlign();	// minimum alignment
-		HeapManager.Storage.Header * header = (HeapManager.Storage.Header *)( (char *)addr - sizeof(HeapManager.Storage) );
-		if ( (header->kind.fake.alignment & 1) == 1 ) {	// fake header ?
-			return header->kind.fake.alignment & -2;	// remove flag from value
-		} else {
-			return libAlign ();							// minimum alignment
-		} // if
-    } // malloc_alignment
-
-
-    _Bool malloc_zero_fill( void * addr ) {
-		if ( unlikely( addr == 0 ) ) return false;		// null allocation is not zero fill
-		HeapManager.Storage.Header * header = (HeapManager.Storage.Header *)( (char *)addr - sizeof(HeapManager.Storage) );
-		if ( (header->kind.fake.alignment & 1) == 1 ) { // fake header ?
-			header = (HeapManager.Storage.Header *)((char *)header - header->kind.fake.offset);
-		} // if
-		return (header->kind.real.blockSize & 2) != 0;	// zero filled (calloc/cmemalign) ?
-    } // malloc_zero_fill
-
-
-    void malloc_stats( void ) {
-		#ifdef __STATISTICS__
-		printStats();
-		if ( checkFree() ) checkFree( heapManager );
-		#endif // __STATISTICS__
-    } // malloc_stats
-
-
-    int malloc_stats_fd( int fd ) {
-		#ifdef __STATISTICS__
-		int temp = statfd;
-		statfd = fd;
-		return temp;
-		#else
-		return -1;
-		#endif // __STATISTICS__
-    } // malloc_stats_fd
-
-
-	int malloc_info( int options, FILE * stream ) {
-		return printStatsXML( stream );
-	} // malloc_info
-
-
-	void * malloc_get_state( void ) {
-		return 0;
-	} // malloc_get_state
-
-
-	int malloc_set_state( void * ptr ) {
-		return 0;
-	} // malloc_set_state
-} // extern "C"
-
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa -nodebug -O2 heap.c" //
-// End: //
Index: c/libcfa/interpose.c
===================================================================
--- src/libcfa/interpose.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,276 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// interpose.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Wed Mar 29 16:10:31 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May  5 11:37:35 2018
-// Update Count     : 111
-//
-
-#include <stdarg.h>										// va_start, va_end
-#include <string.h>										// strlen
-#include <unistd.h>										// _exit, getpid
-#define __USE_GNU
-#include <signal.h>
-#undef __USE_GNU
-extern "C" {
-#include <dlfcn.h>										// dlopen, dlsym
-#include <execinfo.h>									// backtrace, messages
-}
-
-#include "bits/debug.h"
-#include "bits/defs.h"
-#include "bits/signal.h"								// sigHandler_?
-#include "startup.h"									// STARTUP_PRIORITY_CORE
-
-//=============================================================================================
-// Interposing helpers
-//=============================================================================================
-
-void preload_libgcc(void) {
-	dlopen( "libgcc_s.so.1", RTLD_NOW );
-	if ( const char * error = dlerror() ) abort( "interpose_symbol : internal error pre-loading libgcc, %s\n", error );
-}
-
-typedef void (* generic_fptr_t)(void);
-generic_fptr_t interpose_symbol( const char * symbol, const char * version ) {
-	const char * error;
-
-	static void * library;
-	if ( ! library ) {
-		#if defined( RTLD_NEXT )
-			library = RTLD_NEXT;
-		#else
-			// missing RTLD_NEXT => must hard-code library name, assuming libstdc++
-			library = dlopen( "libc.so.6", RTLD_LAZY );
-			error = dlerror();
-			if ( error ) {
-				abort( "interpose_symbol : failed to open libc, %s\n", error );
-			}
-		#endif
-	} // if
-
-	union { generic_fptr_t fptr; void * ptr; } originalFunc;
-
-	#if defined( _GNU_SOURCE )
-		if ( version ) {
-			originalFunc.ptr = dlvsym( library, symbol, version );
-		} else {
-			originalFunc.ptr = dlsym( library, symbol );
-		}
-	#else
-		originalFunc.ptr = dlsym( library, symbol );
-	#endif // _GNU_SOURCE
-
-	error = dlerror();
-	if ( error ) abort( "interpose_symbol : internal error, %s\n", error );
-
-	return originalFunc.fptr;
-}
-
-#define INTERPOSE_LIBC( x, ver ) __cabi_libc.x = (typeof(__cabi_libc.x))interpose_symbol( #x, ver )
-
-//=============================================================================================
-// Interposition Startup logic
-//=============================================================================================
-
-void sigHandler_segv ( __CFA_SIGPARMS__ );
-void sigHandler_ill  ( __CFA_SIGPARMS__ );
-void sigHandler_fpe  ( __CFA_SIGPARMS__ );
-void sigHandler_abort( __CFA_SIGPARMS__ );
-void sigHandler_term ( __CFA_SIGPARMS__ );
-
-struct {
-	void (* exit)( int ) __attribute__(( __noreturn__ ));
-	void (* abort)( void ) __attribute__(( __noreturn__ ));
-} __cabi_libc;
-
-extern "C" {
-	void __cfaabi_interpose_startup(void)  __attribute__(( constructor( STARTUP_PRIORITY_CORE ) ));
-	void __cfaabi_interpose_startup( void ) {
-		const char *version = NULL;
-
-		preload_libgcc();
-
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
-		INTERPOSE_LIBC( abort, version );
-		INTERPOSE_LIBC( exit , version );
-#pragma GCC diagnostic pop
-
-		// Failure handler
-		__cfaabi_sigaction( SIGSEGV, sigHandler_segv , SA_SIGINFO );
-		__cfaabi_sigaction( SIGBUS , sigHandler_segv , SA_SIGINFO );
-		__cfaabi_sigaction( SIGILL , sigHandler_ill  , SA_SIGINFO );
-		__cfaabi_sigaction( SIGFPE , sigHandler_fpe  , SA_SIGINFO );
-		__cfaabi_sigaction( SIGABRT, sigHandler_abort, SA_SIGINFO | SA_RESETHAND);
-		__cfaabi_sigaction( SIGTERM, sigHandler_term , SA_SIGINFO );
-		__cfaabi_sigaction( SIGINT , sigHandler_term , SA_SIGINFO );
-	}
-}
-
-//=============================================================================================
-// Terminating Signals logic
-//=============================================================================================
-
-// Forward declare abort after the __typeof__ call to avoid ambiguities
-void exit( int status, const char fmt[], ... ) __attribute__(( format(printf, 2, 3), __nothrow__, __leaf__, __noreturn__ ));
-void abort( const char fmt[], ... ) __attribute__(( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
-
-extern "C" {
-	void abort( void ) __attribute__(( __nothrow__, __leaf__, __noreturn__ )) {
-		abort( NULL );
-	}
-
-	void __cabi_abort( const char fmt[], ... ) __attribute__(( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ )) {
-		va_list argp;
-		va_start( argp, fmt );
-		abort( fmt, argp );
-		va_end( argp );
-	}
-
-	void exit( int status ) __attribute__(( __nothrow__, __leaf__, __noreturn__ )) {
-		__cabi_libc.exit( status );
-	}
-}
-
-void * kernel_abort    ( void ) __attribute__(( __nothrow__, __leaf__, __weak__ )) { return NULL; }
-void   kernel_abort_msg( void * data, char * buffer, int size ) __attribute__(( __nothrow__, __leaf__, __weak__ )) {}
-int kernel_abort_lastframe( void ) __attribute__(( __nothrow__, __leaf__, __weak__ )) { return 4; }
-
-enum { abort_text_size = 1024 };
-static char abort_text[ abort_text_size ];
-static int abort_lastframe;
-
-void exit( int status, const char fmt[], ... ) __attribute__(( format(printf, 2, 3), __nothrow__, __leaf__, __noreturn__ )) {
-    va_list args;
-    va_start( args, fmt );
-    vfprintf( stderr, fmt, args );
-    va_end( args );
-	__cabi_libc.exit( status );
-}
-
-void abort( const char fmt[], ... ) __attribute__(( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ )) {
-	void * kernel_data = kernel_abort();			// must be done here to lock down kernel
-	int len;
-
-	abort_lastframe = kernel_abort_lastframe();
-	len = snprintf( abort_text, abort_text_size, "Cforall Runtime error (UNIX pid:%ld) ", (long int)getpid() ); // use UNIX pid (versus getPid)
-	__cfaabi_dbg_bits_write( abort_text, len );
-
-	if ( fmt ) {
-		va_list args;
-		va_start( args, fmt );
-
-		len = vsnprintf( abort_text, abort_text_size, fmt, args );
-		va_end( args );
-		__cfaabi_dbg_bits_write( abort_text, len );
-
-		if ( fmt[strlen( fmt ) - 1] != '\n' ) {		// add optional newline if missing at the end of the format text
-			__cfaabi_dbg_bits_write( "\n", 1 );
-		}
-	}
-
-	kernel_abort_msg( kernel_data, abort_text, abort_text_size );
-	__cabi_libc.abort();
-}
-
-static void __cfaabi_backtrace() {
-	enum {
-		Frames = 50,									// maximum number of stack frames
-		Start = 8,										// skip first N stack frames
-	};
-
-	void * array[Frames];
-	size_t size = backtrace( array, Frames );
-	char ** messages = backtrace_symbols( array, size );
-
-	// find executable name
-	*index( messages[0], '(' ) = '\0';
-	__cfaabi_dbg_bits_print_nolock( "Stack back trace for: %s\n", messages[0]);
-
-	for ( int i = Start; i < size - abort_lastframe && messages != NULL; i += 1 ) {
-		char * name = NULL, * offset_begin = NULL, * offset_end = NULL;
-
-		for ( char * p = messages[i]; *p; ++p ) {
-			//__cfaabi_dbg_bits_print_nolock( "X %s\n", p);
-			// find parantheses and +offset
-			if ( *p == '(' ) {
-				name = p;
-			}
-			else if ( *p == '+' ) {
-				offset_begin = p;
-			}
-			else if ( *p == ')' ) {
-				offset_end = p;
-				break;
-			}
-		}
-
-		// if line contains symbol print it
-		int frameNo = i - Start;
-		if ( name && offset_begin && offset_end && name < offset_begin ) {
-			// delimit strings
-			*name++ = '\0';
-			*offset_begin++ = '\0';
-			*offset_end++ = '\0';
-
-			__cfaabi_dbg_bits_print_nolock( "(%i) %s : %s + %s %s\n", frameNo, messages[i], name, offset_begin, offset_end);
-		}
-		// otherwise, print the whole line
-		else {
-			__cfaabi_dbg_bits_print_nolock( "(%i) %s\n", frameNo, messages[i] );
-		}
-	}
-	free( messages );
-}
-
-void sigHandler_segv( __CFA_SIGPARMS__ ) {
-	abort( "Addressing invalid memory at location %p\n"
-			"Possible cause is reading outside the address space or writing to a protected area within the address space with an invalid pointer or subscript.\n",
-			sfp->si_addr );
-}
-
-void sigHandler_ill( __CFA_SIGPARMS__ ) {
-	abort( "Executing illegal instruction at location %p.\n"
-			"Possible cause is stack corruption.\n",
-			sfp->si_addr );
-}
-
-void sigHandler_fpe( __CFA_SIGPARMS__ ) {
-	const char * msg;
-
-	choose( sfp->si_code ) {
-	  case FPE_INTDIV, FPE_FLTDIV: msg = "divide by zero";
-	  case FPE_FLTOVF: msg = "overflow";
-	  case FPE_FLTUND: msg = "underflow";
-	  case FPE_FLTRES: msg = "inexact result";
-	  case FPE_FLTINV: msg = "invalid operation";
-	  default: msg = "unknown";
-	} // choose
-	abort( "Computation error %s at location %p.\n", msg, sfp->si_addr );
-}
-
-void sigHandler_abort( __CFA_SIGPARMS__ ) {
-	__cfaabi_backtrace();
-
-	// reset default signal handler
-	__cfaabi_sigdefault( SIGABRT );
-
-	raise( SIGABRT );
-}
-
-void sigHandler_term( __CFA_SIGPARMS__ ) {
-	abort( "Application stopped by %s signal.", sig == SIGINT ? "an interrupt (SIGINT)" : "a terminate (SIGTERM)" );
-}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/iostream
===================================================================
--- src/libcfa/iostream	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,175 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// iostream --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul  1 12:12:22 2018
-// Update Count     : 155
-//
-
-#pragma once
-
-#include "iterator"
-
-trait ostream( dtype ostype ) {
-	// private
-	_Bool sepPrt( ostype & );							// return separator state (on/off)
-	void sepReset( ostype & );							// set separator state to default state
-	void sepReset( ostype &, _Bool );					// set separator and default state
-	const char * sepGetCur( ostype & );					// get current separator string
-	void sepSetCur( ostype &, const char * );			// set current separator string
-	_Bool getNL( ostype & );							// check newline
-	void setNL( ostype &, _Bool );						// saw newline
-	// public
-	void sepOn( ostype & );								// turn separator state on
-	void sepOff( ostype & );							// turn separator state off
-	_Bool sepDisable( ostype & );						// set default state to off, and return previous state
-	_Bool sepEnable( ostype & );						// set default state to on, and return previous state
-
-	const char * sepGet( ostype & );					// get separator string
-	void sepSet( ostype &, const char * );				// set separator to string (15 character maximum)
-	const char * sepGetTuple( ostype & );				// get tuple separator string
-	void sepSetTuple( ostype &, const char * );			// set tuple separator to string (15 character maximum)
-
-	int fail( ostype & );
-	int flush( ostype & );
-	void open( ostype & os, const char * name, const char * mode );
-	void close( ostype & os );
-	ostype & write( ostype &, const char *, size_t );
-	int fmt( ostype &, const char fmt[], ... );
-}; // ostream
-
-// trait writeable( otype T ) {
-// 	forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype &, T );
-// }; // writeable
-
-trait writeable( otype T, dtype ostype | ostream( ostype ) ) {
-	ostype & ?|?( ostype &, T );
-}; // writeable
-
-// implement writable for intrinsic types
-
-forall( dtype ostype | ostream( ostype ) ) {
-	ostype & ?|?( ostype &, _Bool );
-
-	ostype & ?|?( ostype &, char );
-	ostype & ?|?( ostype &, signed char );
-	ostype & ?|?( ostype &, unsigned char );
-
-	ostype & ?|?( ostype &, short int );
-	ostype & ?|?( ostype &, unsigned short int );
-	ostype & ?|?( ostype &, int );
-	ostype & ?|?( ostype &, unsigned int );
-	ostype & ?|?( ostype &, long int );
-	ostype & ?|?( ostype &, long long int );
-	ostype & ?|?( ostype &, unsigned long int );
-	ostype & ?|?( ostype &, unsigned long long int );
-
-	ostype & ?|?( ostype &, float ); // FIX ME: should not be required
-	ostype & ?|?( ostype &, double );
-	ostype & ?|?( ostype &, long double );
-
-	ostype & ?|?( ostype &, float _Complex );
-	ostype & ?|?( ostype &, double _Complex );
-	ostype & ?|?( ostype &, long double _Complex );
-
-	ostype & ?|?( ostype &, const char * );
-	// ostype & ?|?( ostype &, const char16_t * );
-#if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous
-	// ostype & ?|?( ostype &, const char32_t * );
-#endif // ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 )
-	// ostype & ?|?( ostype &, const wchar_t * );
-	ostype & ?|?( ostype &, const void * );
-
-	// manipulators
-	ostype & ?|?( ostype &, ostype & (*)( ostype & ) );
-	ostype & endl( ostype & );
-	ostype & sep( ostype & );
-	ostype & sepTuple( ostype & );
-	ostype & sepOn( ostype & );
-	ostype & sepOff( ostype & );
-	ostype & sepDisable( ostype & );
-	ostype & sepEnable( ostype & );
-} // distribution
-
-// tuples
-forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } )
-ostype & ?|?( ostype & os, T arg, Params rest );
-
-// writes the range [begin, end) to the given stream
-forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
-void write( iterator_type begin, iterator_type end, ostype & os );
-
-forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
-void write_reverse( iterator_type begin, iterator_type end, ostype & os );
-
-//---------------------------------------
-
-trait istream( dtype istype ) {
-	int fail( istype & );
-	int eof( istype & );
-	void open( istype & is, const char * name );
-	void close( istype & is );
-	istype & read( istype &, char *, size_t );
-	istype & ungetc( istype &, char );
-	int fmt( istype &, const char fmt[], ... );
-}; // istream
-
-trait readable( otype T ) {
-	forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, T );
-}; // readable
-
-forall( dtype istype | istream( istype ) ) {
-	istype & ?|?( istype &, _Bool & );
-
-	istype & ?|?( istype &, char & );
-	istype & ?|?( istype &, signed char & );
-	istype & ?|?( istype &, unsigned char & );
-
-	istype & ?|?( istype &, short int & );
-	istype & ?|?( istype &, unsigned short int & );
-	istype & ?|?( istype &, int & );
-	istype & ?|?( istype &, unsigned int & );
-	istype & ?|?( istype &, long int & );
-	istype & ?|?( istype &, long long int & );
-	istype & ?|?( istype &, unsigned long int & );
-	istype & ?|?( istype &, unsigned long long int & );
-
-	istype & ?|?( istype &, float & );
-	istype & ?|?( istype &, double & );
-	istype & ?|?( istype &, long double & );
-
-	istype & ?|?( istype &, float _Complex & );
-	istype & ?|?( istype &, double _Complex & );
-	istype & ?|?( istype &, long double _Complex & );
-
-	// manipulators
-	istype & ?|?( istype &, istype & (*)( istype & ) );
-	istype & endl( istype & is );
-} // distribution
-
-struct _Istream_cstrUC { char * s; };
-_Istream_cstrUC cstr( char * );
-forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, _Istream_cstrUC );
-
-struct _Istream_cstrC { char * s; int size; };
-_Istream_cstrC cstr( char *, int size );
-forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, _Istream_cstrC );
-
-
-#include <time_t.h>										// Duration (constructors) / Time (constructors)
-
-forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Duration dur );
-forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Time time );
-
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/iostream.c
===================================================================
--- src/libcfa/iostream.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,413 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// iostream.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jun  2 08:24:56 2018
-// Update Count     : 471
-//
-
-#include "iostream"
-
-extern "C" {
-#include <stdio.h>
-#include <stdbool.h>									// true/false
-//#include <string.h>										// strlen, strcmp
-extern int strcmp (const char *__s1, const char *__s2) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
-extern size_t strlen (const char *__s) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
-#include <float.h>										// DBL_DIG, LDBL_DIG
-#include <complex.h>									// creal, cimag
-}
-
-forall( dtype ostype | ostream( ostype ) ) {
-	ostype & ?|?( ostype & os, _Bool b ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%s", b ? "true" : "false" );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, char ch ) {
-		fmt( os, "%c", ch );
-		if ( ch == '\n' ) setNL( os, true );
-		sepOff( os );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, signed char c ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%hhd", c );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, unsigned char c ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%hhu", c );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, short int si ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%hd", si );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, unsigned short int usi ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%hu", usi );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, int i ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%d", i );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, unsigned int ui ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%u", ui );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, long int li ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%ld", li );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, unsigned long int uli ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%lu", uli );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, long long int lli ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%lld", lli );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, unsigned long long int ulli ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%llu", ulli );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, float f ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%g", f );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, double d ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%.*lg", DBL_DIG, d );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, long double ld ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%.*Lg", LDBL_DIG, ld );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, float _Complex fc ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%g%+gi", crealf( fc ), cimagf( fc ) );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, double _Complex dc ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%.*lg%+.*lgi", DBL_DIG, creal( dc ), DBL_DIG, cimag( dc ) );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, long double _Complex ldc ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%.*Lg%+.*Lgi", LDBL_DIG, creall( ldc ), LDBL_DIG, cimagl( ldc ) );
-		return os;
-	} // ?|?
-
-	ostype & ?|?( ostype & os, const char * str ) {
-		enum { Open = 1, Close, OpenClose };
-		static const unsigned char mask[256] @= {
-			// opening delimiters, no space after
-			['('] : Open, ['['] : Open, ['{'] : Open,
-			['='] : Open, ['$'] : Open, [(unsigned char)'£'] : Open, [(unsigned char)'¥'] : Open,
-			[(unsigned char)'¡'] : Open, [(unsigned char)'¿'] : Open, [(unsigned char)'«'] : Open,
-			// closing delimiters, no space before
-			[','] : Close, ['.'] : Close, [';'] : Close, ['!'] : Close, ['?'] : Close,
-			['%'] : Close, [(unsigned char)'¢'] : Close, [(unsigned char)'»'] : Close,
-			[')'] : Close, [']'] : Close, ['}'] : Close,
-			// opening-closing delimiters, no space before or after
-			['\''] : OpenClose, ['`'] : OpenClose, ['"'] : OpenClose, [':'] : OpenClose,
-			[' '] : OpenClose, ['\f'] : OpenClose, ['\n'] : OpenClose, ['\r'] : OpenClose, ['\t'] : OpenClose, ['\v'] : OpenClose, // isspace
-		}; // mask
-
-	  if ( str[0] == '\0' ) { sepOff( os ); return os; } // null string => no separator
-
-		// first character IS NOT spacing or closing punctuation => add left separator
-		unsigned char ch = str[0];						// must make unsigned
-		if ( sepPrt( os ) && mask[ ch ] != Close && mask[ ch ] != OpenClose ) {
-			fmt( os, "%s", sepGetCur( os ) );
-		} // if
-
-		// if string starts line, must reset to determine open state because separator is off
-		sepReset( os );									// reset separator
-
-		// last character IS spacing or opening punctuation => turn off separator for next item
-		size_t len = strlen( str );
-		ch = str[len - 1];								// must make unsigned
-		if ( sepPrt( os ) && mask[ ch ] != Open && mask[ ch ] != OpenClose ) {
-			sepOn( os );
-		} else {
-			sepOff( os );
-		} // if
-		if ( ch == '\n' ) setNL( os, true );			// check *AFTER* sepPrt call above as it resets NL flag
-		return write( os, str, len );
-	} // ?|?
-
-// 	ostype & ?|?( ostype & os, const char16_t * str ) {
-// 		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-// 		fmt( os, "%ls", str );
-// 		return os;
-// 	} // ?|?
-
-// #if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous
-// 	ostype & ?|?( ostype & os, const char32_t * str ) {
-// 		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-// 		fmt( os, "%ls", str );
-// 		return os;
-// 	} // ?|?
-// #endif // ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 )
-
-// 	ostype & ?|?( ostype & os, const wchar_t * str ) {
-// 		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-// 		fmt( os, "%ls", str );
-// 		return os;
-// 	} // ?|?
-
-	ostype & ?|?( ostype & os, const void * p ) {
-		if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
-		fmt( os, "%p", p );
-		return os;
-	} // ?|?
-
-
-	// manipulators
-	ostype & ?|?( ostype & os, ostype & (* manip)( ostype & ) ) {
-		return manip( os );
-	} // ?|?
-
-	ostype & sep( ostype & os ) {
-		os | sepGet( os );
-		return os;
-	} // sep
-
-	ostype & sepTuple( ostype & os ) {
-		os | sepGetTuple( os );
-		return os;
-	} // sepTuple
-
-	ostype & endl( ostype & os ) {
-		os | '\n';
-		setNL( os, true );
-		flush( os );
-		sepOff( os );									// prepare for next line
-		return os;
-	} // endl
-
-	ostype & sepOn( ostype & os ) {
-		sepOn( os );
-		return os;
-	} // sepOn
-
-	ostype & sepOff( ostype & os ) {
-		sepOff( os );
-		return os;
-	} // sepOff
-
-	ostype & sepEnable( ostype & os ) {
-		sepEnable( os );
-		return os;
-	} // sepEnable
-
-	ostype & sepDisable( ostype & os ) {
-		sepDisable( os );
-		return os;
-	} // sepDisable
-} // distribution
-
-
-// tuples
-forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } )
-ostype & ?|?( ostype & os, T arg, Params rest ) {
-	os | arg;											// print first argument
-	sepSetCur( os, sepGetTuple( os ) );					// switch to tuple separator
-	os | rest;											// print remaining arguments
-	sepSetCur( os, sepGet( os ) );						// switch to regular separator
-	return os;
-} // ?|?
-
-//---------------------------------------
-
-// writes the range [begin, end) to the given stream
-forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
-void write( iterator_type begin, iterator_type end, ostype & os ) {
-	void print( elt_type i ) { os | i; }
-	for_each( begin, end, print );
-} // ?|?
-
-forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
-void write_reverse( iterator_type begin, iterator_type end, ostype & os ) {
-	void print( elt_type i ) { os | i; }
-	for_each_reverse( begin, end, print );
-} // ?|?
-
-//---------------------------------------
-
-forall( dtype istype | istream( istype ) ) {
-	istype & ?|?( istype & is, _Bool & b ) {
-		char val[6];
-		fmt( is, "%5s", val );
-		if ( strcmp( val, "true" ) == 0 ) b = true;
-		else if ( strcmp( val, "false" ) == 0 ) b = false;
-		else {
-			fprintf( stderr, "invalid _Bool constant\n" );
-			abort();
-		} // if
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, char & c ) {
-		fmt( is, "%c", &c );							// must pass pointer through varg to fmt
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, signed char & sc ) {
-		fmt( is, "%hhd", &sc );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, unsigned char & usc ) {
-		fmt( is, "%hhu", &usc );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, short int & si ) {
-		fmt( is, "%hd", &si );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, unsigned short int & usi ) {
-		fmt( is, "%hu", &usi );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, int & i ) {
-		fmt( is, "%d", &i );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, unsigned int & ui ) {
-		fmt( is, "%u", &ui );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, long int & li ) {
-		fmt( is, "%ld", &li );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, unsigned long int & ulli ) {
-		fmt( is, "%lu", &ulli );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, long long int & lli ) {
-		fmt( is, "%lld", &lli );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, unsigned long long int & ulli ) {
-		fmt( is, "%llu", &ulli );
-		return is;
-	} // ?|?
-
-
-	istype & ?|?( istype & is, float & f ) {
-		fmt( is, "%f", &f );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, double & d ) {
-		fmt( is, "%lf", &d );
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, long double & ld ) {
-		fmt( is, "%Lf", &ld );
-		return is;
-	} // ?|?
-
-
-	istype & ?|?( istype & is, float _Complex & fc ) {
-		float re, im;
-		fmt( is, "%g%gi", &re, &im );
-		fc = re + im * _Complex_I;
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, double _Complex & dc ) {
-		double re, im;
-		fmt( is, "%lf%lfi", &re, &im );
-		dc = re + im * _Complex_I;
-		return is;
-	} // ?|?
-
-	istype & ?|?( istype & is, long double _Complex & ldc ) {
-		long double re, im;
-		fmt( is, "%Lf%Lfi", &re, &im );
-		ldc = re + im * _Complex_I;
-		return is;
-	} // ?|?
-
-
-	// manipulators
-	istype & ?|?( istype & is, istype & (* manip)( istype & ) ) {
-		return manip( is );
-	} // ?|?
-
-	istype & endl( istype & is ) {
-		fmt( is, "%*[ \t\f\n\r\v]" );					// ignore whitespace
-		return is;
-	} // endl
-} // distribution
-
-_Istream_cstrUC cstr( char * str ) { return (_Istream_cstrUC){ str }; }
-forall( dtype istype | istream( istype ) )
-istype & ?|?( istype & is, _Istream_cstrUC cstr ) {
-	fmt( is, "%s", cstr.s );
-	return is;
-} // cstr
-
-_Istream_cstrC cstr( char * str, int size ) { return (_Istream_cstrC){ str, size }; }
-forall( dtype istype | istream( istype ) )
-istype & ?|?( istype & is, _Istream_cstrC cstr ) {
-	char buf[16];
-	sprintf( buf, "%%%ds", cstr.size );
-	fmt( is, buf, cstr.s );
-	return is;
-} // cstr
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa iostream.c" //
-// End: //
Index: c/libcfa/iterator
===================================================================
--- src/libcfa/iterator	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,48 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// iterator --
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul  7 08:37:25 2017
-// Update Count     : 10
-//
-
-#pragma once
-
-// An iterator can be used to traverse a data structure.
-trait iterator( otype iterator_type, otype elt_type ) {
-	// point to the next element
-//	iterator_type ?++( iterator_type & );
-	iterator_type ++?( iterator_type & );
-	iterator_type --?( iterator_type & );
-
-	// can be tested for equality with other iterators
-	int ?==?( iterator_type, iterator_type );
-	int ?!=?( iterator_type, iterator_type );
-
-	// dereference to get the pointed-at element
-	elt_type & *?( iterator_type );
-};
-
-trait iterator_for( otype iterator_type, otype collection_type, otype elt_type | iterator( iterator_type, elt_type ) ) {
-//	[ iterator_type begin, iterator_type end ] get_iterators( collection_type );
-	iterator_type begin( collection_type );
-	iterator_type end( collection_type );
-};
-
-forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) )
-void for_each( iterator_type begin, iterator_type end, void (* func)( elt_type ) );
-
-forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) )
-void for_each_reverse( iterator_type begin, iterator_type end, void (* func)( elt_type ) );
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/iterator.c
===================================================================
--- src/libcfa/iterator.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,36 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// iterator.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul  7 08:38:23 2017
-// Update Count     : 28
-//
-
-#include "iterator"
-
-forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) )
-void for_each( iterator_type begin, iterator_type end, void (* func)( elt_type ) ) {
-	for ( iterator_type i = begin; i != end; ++i ) {
-		func( *i );
-	} // for
-} // for_each
-
-forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) )
-void for_each_reverse( iterator_type begin, iterator_type end, void (* func)( elt_type ) ) {
-	for ( iterator_type i = end; i != begin; ) {
-		--i;
-		func( *i );
-	} // for
-} // for_each_reverse
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa iterator.c" //
-// End: //
Index: c/libcfa/limits
===================================================================
--- src/libcfa/limits	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,151 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// limits --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Apr  6 18:06:52 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar  1 16:20:54 2018
-// Update Count     : 13
-//
-
-#pragma once
-
-// Integral Constants
-
-extern const signed char MIN;
-extern const unsigned char MIN;
-extern const short int MIN;
-extern const unsigned short int MIN;
-extern const int MIN;
-extern const unsigned int MIN;
-extern const long int MIN;
-extern const unsigned long int MIN;
-extern const long long int MIN;
-extern const unsigned long long int MIN;
-
-extern const signed char MAX;
-extern const unsigned char MAX;
-extern const short int MAX;
-extern const unsigned short int MAX;
-extern const int MAX;
-extern const unsigned int MAX;
-extern const long int MAX;
-extern const unsigned long int MAX;
-extern const long long int MAX;
-extern const unsigned long long int MAX;
-
-// Floating-Point Constants
-
-extern const float MIN;
-extern const double MIN;
-extern const long double MIN;
-extern const float _Complex MIN;
-extern const double _Complex MIN;
-extern const long double _Complex MIN;
-
-extern const float MAX;
-extern const double MAX;
-extern const long double MAX;
-extern const float _Complex MAX;
-extern const double _Complex MAX;
-extern const long double _Complex MAX;
-
-extern const float PI;									// pi
-extern const float PI_2;								// pi / 2
-extern const float PI_4;								// pi / 4
-extern const float _1_PI;								// 1 / pi
-extern const float _2_PI;								// 2 / pi
-extern const float _2_SQRT_PI;							// 2 / sqrt(pi)
-
-extern const double PI;									// pi
-extern const double PI_2;								// pi / 2
-extern const double PI_4;								// pi / 4
-extern const double _1_PI;								// 1 / pi
-extern const double _2_PI;								// 2 / pi
-extern const double _2_SQRT_PI;							// 2 / sqrt(pi)
-
-extern const long double PI;							// pi
-extern const long double PI_2;							// pi / 2
-extern const long double PI_4;							// pi / 4
-extern const long double _1_PI;							// 1 / pi
-extern const long double _2_PI;							// 2 / pi
-extern const long double _2_SQRT_PI;					// 2 / sqrt(pi)
-
-extern const float _Complex PI;							// pi
-extern const float _Complex PI_2;						// pi / 2
-extern const float _Complex PI_4;						// pi / 4
-extern const float _Complex _1_PI;						// 1 / pi
-extern const float _Complex _2_PI;						// 2 / pi
-extern const float _Complex _2_SQRT_PI;					// 2 / sqrt(pi)
-
-extern const double _Complex PI;						// pi
-extern const double _Complex PI_2;						// pi / 2
-extern const double _Complex PI_4;						// pi / 4
-extern const double _Complex _1_PI;						// 1 / pi
-extern const double _Complex _2_PI;						// 2 / pi
-extern const double _Complex _2_SQRT_PI;				// 2 / sqrt(pi)
-
-extern const long double _Complex PI;					// pi
-extern const long double _Complex PI_2;					// pi / 2
-extern const long double _Complex PI_4;					// pi / 4
-extern const long double _Complex _1_PI;				// 1 / pi
-extern const long double _Complex _2_PI;				// 2 / pi
-extern const long double _Complex _2_SQRT_PI;			// 2 / sqrt(pi)
-
-extern const float E;									// e
-extern const float LOG2_E;								// log_2(e)
-extern const float LOG10_E;								// log_10(e)
-extern const float LN_2;								// log_e(2)
-extern const float LN_10;								// log_e(10)
-extern const float SQRT_2;								// sqrt(2)
-extern const float _1_SQRT_2;							// 1 / sqrt(2)
-
-extern const double E;									// e
-extern const double LOG2_E;								// log_2(e)
-extern const double LOG10_E;							// log_10(e)
-extern const double LN_2;								// log_e(2)
-extern const double LN_10;								// log_e(10)
-extern const double SQRT_2;								// sqrt(2)
-extern const double _1_SQRT_2;							// 1 / sqrt(2)
-
-extern const long double E;								// e
-extern const long double LOG2_E;						// log_2(e)
-extern const long double LOG10_E;						// log_10(e)
-extern const long double LN_2;							// log_e(2)
-extern const long double LN_10;							// log_e(10)
-extern const long double SQRT_2;						// sqrt(2)
-extern const long double _1_SQRT_2;						// 1/sqrt(2)
-
-extern const float _Complex E;							// e
-extern const float _Complex LOG2_E;						// log_2(e)
-extern const float _Complex LOG10_E;					// log_10(e)
-extern const float _Complex LN_2;						// log_e(2)
-extern const float _Complex LN_10;						// log_e(10)
-extern const float _Complex SQRT_2;						// sqrt(2)
-extern const float _Complex _1_SQRT_2;					// 1 / sqrt(2)
-
-extern const double _Complex E;							// e
-extern const double _Complex LOG2_E;					// log_2(e)
-extern const double _Complex LOG10_E;					// log_10(e)
-extern const double _Complex LN_2;						// log_e(2)
-extern const double _Complex LN_10;						// log_e(10)
-extern const double _Complex SQRT_2;					// sqrt(2)
-extern const double _Complex _1_SQRT_2;					// 1 / sqrt(2)
-
-extern const long double _Complex E;					// e
-extern const long double _Complex LOG2_E;				// log_2(e)
-extern const long double _Complex LOG10_E;				// log_10(e)
-extern const long double _Complex LN_2;					// log_e(2)
-extern const long double _Complex LN_10;				// log_e(10)
-extern const long double _Complex SQRT_2;				// sqrt(2)
-extern const long double _Complex _1_SQRT_2;			// 1 / sqrt(2)
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/limits.c
===================================================================
--- src/libcfa/limits.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,156 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// limits.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Apr  6 18:06:52 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar  1 16:22:51 2018
-// Update Count     : 74
-// 
-
-#include <limits.h>
-#include <float.h>
-#define __USE_GNU										// get M_* constants
-#include <math.h>
-#include <complex.h>
-#include "limits"
-
-// Integral Constants
-
-const signed char MIN = SCHAR_MIN;
-const unsigned char MIN = 0;
-const short int MIN = SHRT_MIN;
-const unsigned short int MIN = 0;
-const int MIN = INT_MIN;
-const unsigned int MIN = 0;
-const long int MIN = LONG_MIN;
-const unsigned long int MIN = 0;
-const long long int MIN = LLONG_MIN;
-const unsigned long long int MIN = 0;
-
-const signed char MAX = SCHAR_MAX;
-const unsigned char MAX = UCHAR_MAX;
-const short int MAX = SHRT_MAX;
-const unsigned short int MAX = USHRT_MAX;
-const int MAX = INT_MAX;
-const unsigned int MAX = UINT_MAX;
-const long int MAX = LONG_MAX;
-const unsigned long int MAX = ULONG_MAX;
-const long long int MAX = LLONG_MAX;
-const unsigned long long int MAX = ULLONG_MAX;
-
-// Floating-Point Constants
-
-const float MIN = FLT_MIN;
-const double MIN = DBL_MIN;
-const long double MIN = LDBL_MIN;
-const float _Complex MIN = __FLT_MIN__ + __FLT_MIN__ * I;
-const double _Complex MIN = DBL_MIN +  DBL_MIN * I;
-const long double _Complex MIN = LDBL_MIN + LDBL_MIN * I;
-
-const float MAX = FLT_MAX;
-const double MAX = DBL_MAX;
-const long double MAX = LDBL_MAX;
-const float _Complex MAX = FLT_MAX + FLT_MAX * I;
-const double _Complex MAX = DBL_MAX + DBL_MAX * I;
-const long double _Complex MAX = LDBL_MAX + LDBL_MAX * I;
-
-const float PI = (float)M_PI;							// pi
-const float PI_2 = (float)M_PI_2;						// pi / 2
-const float PI_4 = (float)M_PI_4;						// pi / 4
-const float _1_PI = (float)M_1_PI;						// 1 / pi
-const float _2_PI = (float)M_2_PI;						// 2 / pi
-const float _2_SQRT_PI = (float)M_2_SQRTPI;				// 2 / sqrt(pi)
-
-const double PI = M_PI;									// pi
-const double PI_2 = M_PI_2;								// pi / 2
-const double PI_4 = M_PI_4;								// pi / 4
-const double _1_PI = M_1_PI;							// 1 / pi
-const double _2_PI = M_2_PI;							// 2 / pi
-const double _2_SQRT_PI = M_2_SQRTPI;					// 2 / sqrt(pi)
-
-const long double PI = M_PIl;							// pi
-const long double PI_2 = M_PI_2l;						// pi / 2
-const long double PI_4 = M_PI_4l;						// pi / 4
-const long double _1_PI = M_1_PIl;						// 1 / pi
-const long double _2_PI = M_2_PIl;						// 2 / pi
-const long double _2_SQRT_PI = M_2_SQRTPIl;				// 2 / sqrt(pi)
-
-const float _Complex PI = (float)M_PI + 0.0_iF;			// pi
-const float _Complex PI_2 = (float)M_PI_2 + 0.0_iF;		// pi / 2
-const float _Complex PI_4 = (float)M_PI_4 + 0.0_iF;		// pi / 4
-const float _Complex _1_PI = (float)M_1_PI + 0.0_iF;	// 1 / pi
-const float _Complex _2_PI = (float)M_2_PI + 0.0_iF;	// 2 / pi
-const float _Complex _2_SQRT_PI = (float)M_2_SQRTPI + 0.0_iF; // 2 / sqrt(pi)
-
-const double _Complex PI = M_PI + 0.0_iD;				// pi
-const double _Complex PI_2 = M_PI_2 + 0.0_iD;			// pi / 2
-const double _Complex PI_4 = M_PI_4 + 0.0_iD;			// pi / 4
-const double _Complex _1_PI = M_1_PI + 0.0_iD;			// 1 / pi
-const double _Complex _2_PI = M_2_PI + 0.0_iD;			// 2 / pi
-const double _Complex _2_SQRT_PI = M_2_SQRTPI + 0.0_iD;	// 2 / sqrt(pi)
-
-const long double _Complex PI = M_PIl + 0.0_iL;			// pi
-const long double _Complex PI_2 = M_PI_2l + 0.0_iL;		// pi / 2
-const long double _Complex PI_4 = M_PI_4l + 0.0_iL;		// pi / 4
-const long double _Complex _1_PI = M_1_PIl + 0.0_iL;	// 1 / pi
-const long double _Complex _2_PI = M_2_PIl + 0.0_iL;	// 2 / pi
-const long double _Complex _2_SQRT_PI = M_2_SQRTPIl + 0.0_iL; // 2 / sqrt(pi)
-
-const float E = (float)M_E;								// e
-const float LOG2_E = (float)M_LOG2E;					// log_2(e)
-const float LOG10_E = (float)M_LOG10E;					// log_10(e)
-const float LN_2 = (float)M_LN2;						// log_e(2)
-const float LN_10 = (float)M_LN10;						// log_e(10)
-const float SQRT_2 = (float)M_SQRT2;					// sqrt(2)
-const float _1_SQRT_2 = (float)M_SQRT1_2;				// 1 / sqrt(2)
-
-const double E = M_E;									// e
-const double LOG2_E = M_LOG2E;							// log_2(e)
-const double LOG10_E = M_LOG10E;						// log_10(e)
-const double LN_2 = M_LN2;								// log_e(2)
-const double LN_10 = M_LN10;							// log_e(10)
-const double SQRT_2 = M_SQRT2;							// sqrt(2)
-const double _1_SQRT_2 = M_SQRT1_2;						// 1 / sqrt(2)
-
-const long double E = M_El;								// e
-const long double LOG2_E = M_LOG2El;					// log_2(e)
-const long double LOG10_E = M_LOG10El;					// log_10(e)
-const long double LN_2 = M_LN2l;						// log_e(2)
-const long double LN_10 = M_LN10l;						// log_e(10)
-const long double SQRT_2 = M_SQRT2l;					// sqrt(2)
-const long double _1_SQRT_2 = M_SQRT1_2l;				// 1 / sqrt(2)
-
-const float _Complex E = M_E + 0.0_iF;					// e
-const float _Complex LOG2_E = M_LOG2E + 0.0_iF;			// log_2(e)
-const float _Complex LOG10_E = M_LOG10E + 0.0_iF;		// log_10(e)
-const float _Complex LN_2 = M_LN2 + 0.0_iF;				// log_e(2)
-const float _Complex LN_10 = M_LN10 + 0.0_iF;			// log_e(10)
-const float _Complex SQRT_2 = M_SQRT2 + 0.0_iF;			// sqrt(2)
-const float _Complex _1_SQRT_2 = M_SQRT1_2 + 0.0_iF;	// 1 / sqrt(2)
-
-const double _Complex E = M_E + 0.0_iD;					// e
-const double _Complex LOG2_E = M_LOG2E + 0.0_iD;		// log_2(e)
-const double _Complex LOG10_E = M_LOG10E + 0.0_iD;		// log_10(e)
-const double _Complex LN_2 = M_LN2 + 0.0_iD;			// log_e(2)
-const double _Complex LN_10 = M_LN10 + 0.0_iD;			// log_e(10)
-const double _Complex SQRT_2 = M_SQRT2 + 0.0_iD;		// sqrt(2)
-const double _Complex _1_SQRT_2 = M_SQRT1_2 + 0.0_iD;	// 1 / sqrt(2)
-
-const long double _Complex E = M_El + 0.0_iL;			// e
-const long double _Complex LOG2_E = M_LOG2El + 0.0_iL;	// log_2(e)
-const long double _Complex LOG10_E = M_LOG10El + 0.0_iL; // log_10(e)
-const long double _Complex LN_2 = M_LN2l + 0.0_iL;		// log_e(2)
-const long double _Complex LN_10 = M_LN10l + 0.0_iL;	// log_e(10)
-const long double _Complex SQRT_2 = M_SQRT2l + 0.0_iL;	// sqrt(2)
-const long double _Complex _1_SQRT_2 = M_SQRT1_2l + 0.0_iL; // 1 / sqrt(2)
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/lsda.h
===================================================================
--- src/libcfa/lsda.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,262 +1,0 @@
-//This code was stolen from gcc to read exception tables
-
-
-/* If using C++, references to abort have to be qualified with std::.  */
-#if __cplusplus
-#define __gxx_abort std::abort
-#else
-#define __gxx_abort abort
-#endif
-
-/* Pointer encodings, from dwarf2.h.  */
-#define DW_EH_PE_absptr         0x00
-#define DW_EH_PE_omit           0xff
-
-#define DW_EH_PE_uleb128        0x01
-#define DW_EH_PE_udata2         0x02
-#define DW_EH_PE_udata4         0x03
-#define DW_EH_PE_udata8         0x04
-#define DW_EH_PE_sleb128        0x09
-#define DW_EH_PE_sdata2         0x0A
-#define DW_EH_PE_sdata4         0x0B
-#define DW_EH_PE_sdata8         0x0C
-#define DW_EH_PE_signed         0x08
-
-#define DW_EH_PE_pcrel          0x10
-#define DW_EH_PE_textrel        0x20
-#define DW_EH_PE_datarel        0x30
-#define DW_EH_PE_funcrel        0x40
-#define DW_EH_PE_aligned        0x50
-
-#define DW_EH_PE_indirect	0x80
-
-
-
-int handler_found = 0;
-
-/* Given an encoding, return the number of bytes the format occupies.
-This is only defined for fixed-size encodings, and so does not
-include leb128.  */
-static unsigned int size_of_encoded_value (unsigned char encoding) __attribute__ ((unused));
-
-static unsigned int size_of_encoded_value (unsigned char encoding)
-{
-	if (encoding == DW_EH_PE_omit) return 0;
-
-	switch (encoding & 0x07) {
-		case DW_EH_PE_absptr: return sizeof (void *);
-		case DW_EH_PE_udata2: return 2;
-		case DW_EH_PE_udata4: return 4;
-		case DW_EH_PE_udata8: return 8;
-	}
-	__gxx_abort ();
-}
-
-/* Given an encoding and an _Unwind_Context, return the base to which
-the encoding is relative.  This base may then be passed to
-read_encoded_value_with_base for use when the _Unwind_Context is
-not available.  */
-static _Unwind_Ptr base_of_encoded_value (unsigned char encoding, struct _Unwind_Context *context)
-{
-	if (encoding == DW_EH_PE_omit) return 0;
-
-	switch (encoding & 0x70) {
-		case DW_EH_PE_absptr:
-		case DW_EH_PE_pcrel:
-		case DW_EH_PE_aligned:
-			return 0;
-		case DW_EH_PE_textrel:
-			return _Unwind_GetTextRelBase (context);
-		case DW_EH_PE_datarel:
-			return _Unwind_GetDataRelBase (context);
-		case DW_EH_PE_funcrel:
-			return _Unwind_GetRegionStart (context);
-	}
-	__gxx_abort ();
-}
-
-/* Read an unsigned leb128 value from P, store the value in VAL, return
-P incremented past the value.  We assume that a word is large enough to
-hold any value so encoded; if it is smaller than a pointer on some target,
-pointers should not be leb128 encoded on that target.  */
-static const unsigned char * read_uleb128 (const unsigned char *p, _uleb128_t *val)
-{
-	unsigned int shift = 0;
-	unsigned char byte;
-	_uleb128_t result;
-
-	result = 0;
-	do
-	{
-		byte = *p++;
-		result |= ((_uleb128_t)byte & 0x7f) << shift;
-		shift += 7;
-	}
-	while (byte & 0x80);
-
-	*val = result;
-	return p;
-}
-
-/* Similar, but read a signed leb128 value.  */
-static const unsigned char * read_sleb128 (const unsigned char *p, _sleb128_t *val)
-{
-	unsigned int shift = 0;
-	unsigned char byte;
-	_uleb128_t result;
-
-	result = 0;
-	do
-	{
-		byte = *p++;
-		result |= ((_uleb128_t)byte & 0x7f) << shift;
-		shift += 7;
-	}
-	while (byte & 0x80);
-
-	/* Sign-extend a negative value.  */
-	if (shift < 8 * sizeof(result) && (byte & 0x40) != 0) result |= -(((_uleb128_t)1L) << shift);
-
-	*val = (_sleb128_t) result;
-	return p;
-}
-
-/* Load an encoded value from memory at P.  The value is returned in VAL;
-The function returns P incremented past the value.  BASE is as given
-by base_of_encoded_value for this encoding in the appropriate context.  */
-
-static const unsigned char * read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base, const unsigned char *p, _Unwind_Ptr *val)
-{
-	union unaligned
-	{
-		void *ptr;
-		unsigned u2 __attribute__ ((mode (HI)));
-		unsigned u4 __attribute__ ((mode (SI)));
-		unsigned u8 __attribute__ ((mode (DI)));
-		signed s2 __attribute__ ((mode (HI)));
-		signed s4 __attribute__ ((mode (SI)));
-		signed s8 __attribute__ ((mode (DI)));
-	} __attribute__((__packed__));
-
-	const union unaligned *u = (const union unaligned *) p;
-	_Unwind_Internal_Ptr result;
-
-	if (encoding == DW_EH_PE_aligned)
-	{
-		_Unwind_Internal_Ptr a = (_Unwind_Internal_Ptr) p;
-		a = (a + sizeof (void *) - 1) & - sizeof(void *);
-		result = *(_Unwind_Internal_Ptr *) a;
-		p = (const unsigned char *) (_Unwind_Internal_Ptr) (a + sizeof (void *));
-	}
-	else
-	{
-		switch (encoding & 0x0f)
-		{
-			case DW_EH_PE_absptr:
-				result = (_Unwind_Internal_Ptr) u->ptr;
-				p += sizeof (void *);
-				break;
-			case DW_EH_PE_uleb128:
-			{
-				_uleb128_t tmp;
-				p = read_uleb128 (p, &tmp);
-				result = (_Unwind_Internal_Ptr) tmp;
-			}
-			break;
-
-			case DW_EH_PE_sleb128:
-			{
-				_sleb128_t tmp;
-				p = read_sleb128 (p, &tmp);
-				result = (_Unwind_Internal_Ptr) tmp;
-			}
-			break;
-
-			case DW_EH_PE_udata2:
-				result = u->u2;
-				p += 2;
-				break;
-			case DW_EH_PE_udata4:
-				result = u->u4;
-				p += 4;
-				break;
-			case DW_EH_PE_udata8:
-				result = u->u8;
-				p += 8;
-				break;
-			case DW_EH_PE_sdata2:
-				result = u->s2;
-				p += 2;
-				break;
-			case DW_EH_PE_sdata4:
-				result = u->s4;
-				p += 4;
-				break;
-			case DW_EH_PE_sdata8:
-				result = u->s8;
-				p += 8;
-				break;
-			default:
-				__gxx_abort();
-		}
-
-		if (result != 0)
-		{
-			result += ((encoding & 0x70) == DW_EH_PE_pcrel ? (_Unwind_Internal_Ptr) u : base);
-			
-			if (encoding & DW_EH_PE_indirect) result = *(_Unwind_Internal_Ptr *) result;
-		}
-	}
-
-	*val = result;
-	return p;
-}
-
-/* Like read_encoded_value_with_base, but get the base from the context
-rather than providing it directly.  */
-static inline const unsigned char * read_encoded_value (struct _Unwind_Context *context, unsigned char encoding, const unsigned char *p, _Unwind_Ptr *val)
-{
-	return read_encoded_value_with_base (encoding, base_of_encoded_value (encoding, context), p, val);
-}
-
-typedef struct
-{
-	_Unwind_Ptr Start;
-	_Unwind_Ptr LPStart;
-	_Unwind_Ptr ttype_base;
-	const unsigned char *TType;
-	const unsigned char *action_table;
-	unsigned char ttype_encoding;
-	unsigned char call_site_encoding;
-} lsda_header_info;
-
-static const unsigned char * parse_lsda_header (struct _Unwind_Context *context, const unsigned char *p, lsda_header_info *info)
-{
-	_uleb128_t tmp;
-	unsigned char lpstart_encoding;
-
-	info->Start = (context ? _Unwind_GetRegionStart (context) : 0);
-
-	/* Find @LPStart, the base to which landing pad offsets are relative.  */
-	lpstart_encoding = *p++;
-	if (lpstart_encoding != DW_EH_PE_omit) p = read_encoded_value (context, lpstart_encoding, p, &info->LPStart);
-
-	else info->LPStart = info->Start;
-
-	/* Find @TType, the base of the handler and exception spec type data.  */
-	info->ttype_encoding = *p++;
-	if (info->ttype_encoding != DW_EH_PE_omit)
-	{
-		p = read_uleb128 (p, &tmp);
-		info->TType = p + tmp;
-	}
-	else info->TType = 0;
-
-	/* The encoding and length of the call-site table; the action table
-	immediately follows.  */
-	info->call_site_encoding = *p++;
-	p = read_uleb128 (p, &tmp);
-	info->action_table = p + tmp;
-
-	return p;
-}
Index: c/libcfa/math
===================================================================
--- src/libcfa/math	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,368 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// math --
-//
-// Author           : Peter A. Buhr
-// Created On       : Mon Apr 18 23:37:04 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 13 11:02:15 2018
-// Update Count     : 116
-//
-
-#pragma once
-
-#include <math.h>
-#include <complex.h>
-
-//---------------------- General ----------------------
-
-static inline float ?%?( float x, float y ) { return fmodf( x, y ); }
-static inline float fmod( float x, float y ) { return fmodf( x, y ); }
-static inline double ?%?( double x, double y ) { return fmod( x, y ); }
-// extern "C" { double fmod( double, double ); }
-static inline long double ?%?( long double x, long double y ) { return fmodl( x, y ); }
-static inline long double fmod( long double x, long double y ) { return fmodl( x, y ); }
-
-static inline float remainder( float x, float y ) { return remainderf( x, y ); }
-// extern "C" { double remainder( double, double ); }
-static inline long double remainder( long double x, long double y ) { return remainderl( x, y ); }
-
-static inline float remquo( float x, float y, int * quo ) { return remquof( x, y, quo ); }
-// extern "C" { double remquo( double x, double y, int * quo ); }
-static inline long double remquo( long double x, long double y, int * quo ) { return remquol( x, y, quo ); }
-static inline [ int, float ] remquo( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }
-static inline [ int, double ] remquo( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }
-static inline [ int, long double ] remquo( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }
-
-static inline [ float, float ] div( float x, float y ) { y = modff( x / y, &x ); return [ x, y ]; }
-static inline [ double, double ] div( double x, double y ) { y = modf( x / y, &x ); return [ x, y ]; }
-static inline [ long double, long double ] div( long double x, long double y ) { y = modfl( x / y, &x ); return [ x, y ]; }
-
-static inline float fma( float x, float y, float z ) { return fmaf( x, y, z ); }
-// extern "C" { double fma( double, double, double ); }
-static inline long double fma( long double x, long double y, long double z ) { return fmal( x, y, z ); }
-
-static inline float fdim( float x, float y ) { return fdimf( x, y ); }
-// extern "C" { double fdim( double, double ); }
-static inline long double fdim( long double x, long double y ) { return fdiml( x, y ); }
-
-static inline float nan( const char * tag ) { return nanf( tag ); }
-// extern "C" { double nan( const char * ); }
-static inline long double nan( const char * tag ) { return nanl( tag ); }
-
-//---------------------- Exponential ----------------------
-
-static inline float exp( float x ) { return expf( x ); }
-// extern "C" { double exp( double ); }
-static inline long double exp( long double x ) { return expl( x ); }
-static inline float _Complex exp( float _Complex x ) { return cexpf( x ); }
-static inline double _Complex exp( double _Complex x ) { return cexp( x ); }
-static inline long double _Complex exp( long double _Complex x ) { return cexpl( x ); }
-
-static inline float exp2( float x ) { return exp2f( x ); }
-// extern "C" { double exp2( double ); }
-static inline long double exp2( long double x ) { return exp2l( x ); }
-//static inline float _Complex exp2( float _Complex x ) { return cexp2f( x ); }
-//static inline double _Complex exp2( double _Complex x ) { return cexp2( x ); }
-//static inline long double _Complex exp2( long double _Complex x ) { return cexp2l( x ); }
-
-static inline float expm1( float x ) { return expm1f( x ); }
-// extern "C" { double expm1( double ); }
-static inline long double expm1( long double x ) { return expm1l( x ); }
-
-static inline float pow( float x, float y ) { return powf( x, y ); }
-// extern "C" { double pow( double, double ); }
-static inline long double pow( long double x, long double y ) { return powl( x, y ); }
-static inline float _Complex pow( float _Complex x, float _Complex y ) { return cpowf( x, y ); }
-static inline double _Complex pow( double _Complex x, double _Complex y ) { return cpow( x, y ); }
-static inline long double _Complex pow( long double _Complex x, long double _Complex y ) { return cpowl( x, y ); }
-
-//---------------------- Logarithm ----------------------
-
-static inline float log( float x ) { return logf( x ); }
-// extern "C" { double log( double ); }
-static inline long double log( long double x ) { return logl( x ); }
-static inline float _Complex log( float _Complex x ) { return clogf( x ); }
-static inline double _Complex log( double _Complex x ) { return clog( x ); }
-static inline long double _Complex log( long double _Complex x ) { return clogl( x ); }
-
-static inline float log2( float x ) { return log2f( x ); }
-// extern "C" { double log2( double ); }
-static inline long double log2( long double x ) { return log2l( x ); }
-// static inline float _Complex log2( float _Complex x ) { return clog2f( x ); }
-// static inline double _Complex log2( double _Complex x ) { return clog2( x ); }
-// static inline long double _Complex log2( long double _Complex x ) { return clog2l( x ); }
-
-static inline float log10( float x ) { return log10f( x ); }
-// extern "C" { double log10( double ); }
-static inline long double log10( long double x ) { return log10l( x ); }
-// static inline float _Complex log10( float _Complex x ) { return clog10f( x ); }
-// static inline double _Complex log10( double _Complex x ) { return clog10( x ); }
-// static inline long double _Complex log10( long double _Complex x ) { return clog10l( x ); }
-
-static inline float log1p( float x ) { return log1pf( x ); }
-// extern "C" { double log1p( double ); }
-static inline long double log1p( long double x ) { return log1pl( x ); }
-
-static inline int ilogb( float x ) { return ilogbf( x ); }
-// extern "C" { int ilogb( double ); }
-static inline int ilogb( long double x ) { return ilogbl( x ); }
-
-static inline float logb( float x ) { return logbf( x ); }
-// extern "C" { double logb( double ); }
-static inline long double logb( long double x ) { return logbl( x ); }
-
-static inline float sqrt( float x ) { return sqrtf( x ); }
-// extern "C" { double sqrt( double ); }
-static inline long double sqrt( long double x ) { return sqrtl( x ); }
-static inline float _Complex sqrt( float _Complex x ) { return csqrtf( x ); }
-static inline double _Complex sqrt( double _Complex x ) { return csqrt( x ); }
-static inline long double _Complex sqrt( long double _Complex x ) { return csqrtl( x ); }
-
-static inline float cbrt( float x ) { return cbrtf( x ); }
-// extern "C" { double cbrt( double ); }
-static inline long double cbrt( long double x ) { return cbrtl( x ); }
-
-static inline float hypot( float x, float y ) { return hypotf( x, y ); }
-// extern "C" { double hypot( double, double ); }
-static inline long double hypot( long double x, long double y ) { return hypotl( x, y ); }
-
-//---------------------- Trigonometric ----------------------
-
-static inline float sin( float x ) { return sinf( x ); }
-// extern "C" { double sin( double ); }
-static inline long double sin( long double x ) { return sinl( x ); }
-static inline float _Complex sin( float _Complex x ) { return csinf( x ); }
-static inline double _Complex sin( double _Complex x ) { return csin( x ); }
-static inline long double _Complex sin( long double _Complex x ) { return csinl( x ); }
-
-static inline float cos( float x ) { return cosf( x ); }
-// extern "C" { double cos( double ); }
-static inline long double cos( long double x ) { return cosl( x ); }
-static inline float _Complex cos( float _Complex x ) { return ccosf( x ); }
-static inline double _Complex cos( double _Complex x ) { return ccos( x ); }
-static inline long double _Complex cos( long double _Complex x ) { return ccosl( x ); }
-
-static inline float tan( float x ) { return tanf( x ); }
-// extern "C" { double tan( double ); }
-static inline long double tan( long double x ) { return tanl( x ); }
-static inline float _Complex tan( float _Complex x ) { return ctanf( x ); }
-static inline double _Complex tan( double _Complex x ) { return ctan( x ); }
-static inline long double _Complex tan( long double _Complex x ) { return ctanl( x ); }
-
-static inline float asin( float x ) { return asinf( x ); }
-// extern "C" { double asin( double ); }
-static inline long double asin( long double x ) { return asinl( x ); }
-static inline float _Complex asin( float _Complex x ) { return casinf( x ); }
-static inline double _Complex asin( double _Complex x ) { return casin( x ); }
-static inline long double _Complex asin( long double _Complex x ) { return casinl( x ); }
-
-static inline float acos( float x ) { return acosf( x ); }
-// extern "C" { double acos( double ); }
-static inline long double acos( long double x ) { return acosl( x ); }
-static inline float _Complex acos( float _Complex x ) { return cacosf( x ); }
-static inline double _Complex acos( double _Complex x ) { return cacos( x ); }
-static inline long double _Complex acos( long double _Complex x ) { return cacosl( x ); }
-
-static inline float atan( float x ) { return atanf( x ); }
-// extern "C" { double atan( double ); }
-static inline long double atan( long double x ) { return atanl( x ); }
-static inline float _Complex atan( float _Complex x ) { return catanf( x ); }
-static inline double _Complex atan( double _Complex x ) { return catan( x ); }
-static inline long double _Complex atan( long double _Complex x ) { return catanl( x ); }
-
-static inline float atan2( float x, float y ) { return atan2f( x, y ); }
-// extern "C" { double atan2( double, double ); }
-static inline long double atan2( long double x, long double y ) { return atan2l( x, y ); }
-
-// alternative name for atan2
-static inline float atan( float x, float y ) { return atan2f( x, y ); }
-static inline double atan( double x, double y ) { return atan2( x, y ); }
-static inline long double atan( long double x, long double y ) { return atan2l( x, y ); }
-
-//---------------------- Hyperbolic ----------------------
-
-static inline float sinh( float x ) { return sinhf( x ); }
-// extern "C" { double sinh( double ); }
-static inline long double sinh( long double x ) { return sinhl( x ); }
-static inline float _Complex sinh( float _Complex x ) { return csinhf( x ); }
-static inline double _Complex sinh( double _Complex x ) { return csinh( x ); }
-static inline long double _Complex sinh( long double _Complex x ) { return csinhl( x ); }
-
-static inline float cosh( float x ) { return coshf( x ); }
-// extern "C" { double cosh( double ); }
-static inline long double cosh( long double x ) { return coshl( x ); }
-static inline float _Complex cosh( float _Complex x ) { return ccoshf( x ); }
-static inline double _Complex cosh( double _Complex x ) { return ccosh( x ); }
-static inline long double _Complex cosh( long double _Complex x ) { return ccoshl( x ); }
-
-static inline float tanh( float x ) { return tanhf( x ); }
-// extern "C" { double tanh( double ); }
-static inline long double tanh( long double x ) { return tanhl( x ); }
-static inline float _Complex tanh( float _Complex x ) { return ctanhf( x ); }
-static inline double _Complex tanh( double _Complex x ) { return ctanh( x ); }
-static inline long double _Complex tanh( long double _Complex x ) { return ctanhl( x ); }
-
-static inline float asinh( float x ) { return asinhf( x ); }
-// extern "C" { double asinh( double ); }
-static inline long double asinh( long double x ) { return asinhl( x ); }
-static inline float _Complex asinh( float _Complex x ) { return casinhf( x ); }
-static inline double _Complex asinh( double _Complex x ) { return casinh( x ); }
-static inline long double _Complex asinh( long double _Complex x ) { return casinhl( x ); }
-
-static inline float acosh( float x ) { return acoshf( x ); }
-// extern "C" { double acosh( double ); }
-static inline long double acosh( long double x ) { return acoshl( x ); }
-static inline float _Complex acosh( float _Complex x ) { return cacoshf( x ); }
-static inline double _Complex acosh( double _Complex x ) { return cacosh( x ); }
-static inline long double _Complex acosh( long double _Complex x ) { return cacoshl( x ); }
-
-static inline float atanh( float x ) { return atanhf( x ); }
-// extern "C" { double atanh( double ); }
-static inline long double atanh( long double x ) { return atanhl( x ); }
-static inline float _Complex atanh( float _Complex x ) { return catanhf( x ); }
-static inline double _Complex atanh( double _Complex x ) { return catanh( x ); }
-static inline long double _Complex atanh( long double _Complex x ) { return catanhl( x ); }
-
-//---------------------- Error / Gamma ----------------------
-
-static inline float erf( float x ) { return erff( x ); }
-// extern "C" { double erf( double ); }
-static inline long double erf( long double x ) { return erfl( x ); }
-// float _Complex erf( float _Complex );
-// double _Complex erf( double _Complex );
-// long double _Complex erf( long double _Complex );
-
-static inline float erfc( float x ) { return erfcf( x ); }
-// extern "C" { double erfc( double ); }
-static inline long double erfc( long double x ) { return erfcl( x ); }
-// float _Complex erfc( float _Complex );
-// double _Complex erfc( double _Complex );
-// long double _Complex erfc( long double _Complex );
-
-static inline float lgamma( float x ) { return lgammaf( x ); }
-// extern "C" { double lgamma( double ); }
-static inline long double lgamma( long double x ) { return lgammal( x ); }
-static inline float lgamma( float x, int * sign ) { return lgammaf_r( x, sign ); }
-static inline double lgamma( double x, int * sign ) { return lgamma_r( x, sign ); }
-static inline long double lgamma( long double x, int * sign ) { return lgammal_r( x, sign ); }
-
-static inline float tgamma( float x ) { return tgammaf( x ); }
-// extern "C" { double tgamma( double ); }
-static inline long double tgamma( long double x ) { return tgammal( x ); }
-
-//---------------------- Nearest Integer ----------------------
-
-static inline float floor( float x ) { return floorf( x ); }
-// extern "C" { double floor( double ); }
-static inline long double floor( long double x ) { return floorl( x ); }
-
-static inline float ceil( float x ) { return ceilf( x ); }
-// extern "C" { double ceil( double ); }
-static inline long double ceil( long double x ) { return ceill( x ); }
-
-static inline float trunc( float x ) { return truncf( x ); }
-// extern "C" { double trunc( double ); }
-static inline long double trunc( long double x ) { return truncl( x ); }
-
-static inline float rint( float x ) { return rintf( x ); }
-// extern "C" { double rint( double x ); }
-static inline long double rint( long double x ) { return rintl( x ); }
-static inline long int rint( float x ) { return lrintf( x ); }
-static inline long int rint( double x ) { return lrint( x ); }
-static inline long int rint( long double x ) { return lrintl( x ); }
-static inline long long int rint( float x ) { return llrintf( x ); }
-static inline long long int rint( double x ) { return llrint( x ); }
-static inline long long int rint( long double x ) { return llrintl( x ); }
-
-static inline long int lrint( float x ) { return lrintf( x ); }
-// extern "C" { long int lrint( double ); }
-static inline long int lrint( long double x ) { return lrintl( x ); }
-static inline long long int llrint( float x ) { return llrintf( x ); }
-// extern "C" { long long int llrint( double ); }
-static inline long long int llrint( long double x ) { return llrintl( x ); }
-
-static inline float nearbyint( float x ) { return nearbyintf( x ); }
-// extern "C" { double nearbyint( double ); }
-static inline long double nearbyint( long double x ) { return nearbyintl( x ); }
-
-static inline float round( float x ) { return roundf( x ); }
-// extern "C" { double round( double x ); }
-static inline long double round( long double x ) { return roundl( x ); }
-static inline long int round( float x ) { return lroundf( x ); }
-static inline long int round( double x ) { return lround( x ); }
-static inline long int round( long double x ) { return lroundl( x ); }
-static inline long long int round( float x ) { return llroundf( x ); }
-static inline long long int round( double x ) { return llround( x ); }
-static inline long long int round( long double x ) { return llroundl( x ); }
-
-static inline long int lround( float x ) { return lroundf( x ); }
-// extern "C" { long int lround( double ); }
-static inline long int lround( long double x ) { return lroundl( x ); }
-static inline long long int llround( float x ) { return llroundf( x ); }
-// extern "C" { long long int llround( double ); }
-static inline long long int llround( long double x ) { return llroundl( x ); }
-
-//---------------------- Manipulation ----------------------
-
-static inline float copysign( float x, float y ) { return copysignf( x, y ); }
-// extern "C" { double copysign( double, double ); }
-static inline long double copysign( long double x, long double y ) { return copysignl( x, y ); }
-
-static inline float frexp( float x, int * ip ) { return frexpf( x, ip ); }
-// extern "C" { double frexp( double, int * ); }
-static inline long double frexp( long double x, int * ip ) { return frexpl( x, ip ); }
-
-static inline float ldexp( float x, int exp2 ) { return ldexpf( x, exp2 ); }
-// extern "C" { double ldexp( double, int ); }
-static inline long double ldexp( long double x, int exp2 ) { return ldexpl( x, exp2 ); }
-
-static inline [ float, float ] modf( float x ) { float i; x = modff( x, &i ); return [ i, x ]; }
-static inline float modf( float x, float * i ) { return modff( x, i ); }
-static inline [ double, double ] modf( double x ) { double i; x = modf( x, &i ); return [ i, x ]; }
-// extern "C" { double modf( double, double * ); }
-static inline [ long double, long double ] modf( long double x ) { long double i; x = modfl( x, &i ); return [ i, x ]; }
-static inline long double modf( long double x, long double * i ) { return modfl( x, i ); }
-
-static inline float nextafter( float x, float y ) { return nextafterf( x, y ); }
-// extern "C" { double nextafter( double, double ); }
-static inline long double nextafter( long double x, long double y ) { return nextafterl( x, y ); }
-
-static inline float nexttoward( float x, long double y ) { return nexttowardf( x, y ); }
-// extern "C" { double nexttoward( double, long double ); }
-static inline long double nexttoward( long double x, long double y ) { return nexttowardl( x, y ); }
-
-static inline float scalbn( float x, int exp ) { return scalbnf( x, exp ); }
-// extern "C" { double scalbn( double, int ); }
-static inline long double scalbn( long double x, int exp ) { return scalbnl( x, exp ); }
-static inline float scalbn( float x, long int exp ) { return scalblnf( x, exp ); }
-static inline double scalbn( double x, long int exp ) { return scalbln( x, exp ); }
-static inline long double scalbn( long double x, long int exp ) { return scalblnl( x, exp ); }
-
-static inline float scalbln( float x, long int exp ) { return scalblnf( x, exp ); }
-// extern "C" { double scalbln( double, long int ); }
-static inline long double scalbln( long double x, long int exp ) { return scalblnl( x, exp ); }
-
-//---------------------------------------
-
-#include "common"
-
-//---------------------------------------
-
-forall( otype T | { void ?{}( T &, one_t ); T ?+?( T, T ); T ?-?( T, T );T ?*?( T, T ); } )
-T lerp( T x, T y, T a ) { return x * ((T){1} - a) + y * a; }
-
-forall( otype T | { void ?{}( T &, zero_t ); void ?{}( T &, one_t ); int ?<?( T, T ); } )
-T step( T edge, T x ) { return x < edge ? (T){0} : (T){1}; }
-
-forall( otype T | { void ?{}( T &, int ); T clamp( T, T, T ); T ?-?( T, T ); T ?*?( T, T ); T ?/?( T, T ); } )
-T smoothstep( T edge0, T edge1, T x ) { T t = clamp( (x - edge0) / (edge1 - edge0), (T){0}, (T){1} ); return t * t * ((T){3} - (T){2} * t); }
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/memcheck.awk
===================================================================
--- src/libcfa/memcheck.awk	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,26 +1,0 @@
-#!/usr/bin/nawk -f
-
-BEGIN {
-	print "Freed but not allocated:"
-}
-
-/malloc/ {
-	alloc[ $2 ] = $3;
-}
-
-/free/ {
-	if ( $2 in alloc ) {
-		delete alloc[ $2 ];
-	} else {
-		print $2;
-	} # if
-}
-
-END {
-	print "Allocated but not freed:"
-	for ( i in alloc ) {
-		print i, alloc[ i ];
-		total += alloc[ i ]
-	} # for
-	print "total", total;
-}
Index: c/libcfa/rational
===================================================================
--- src/libcfa/rational	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,107 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// rational -- Rational numbers are numbers written as a ratio, i.e., as a fraction, where the numerator (top number)
-//     and the denominator (bottom number) are whole numbers. When creating and computing with rational numbers, results
-//     are constantly reduced to keep the numerator and denominator as small as possible.
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Apr  6 17:56:25 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jun  2 09:10:01 2018
-// Update Count     : 105
-//
-
-#pragma once
-
-#include "iostream"
-
-trait scalar( otype T ) {
-};
-
-trait arithmetic( otype T | scalar( T ) ) {
-	int !?( T );
-	int ?==?( T, T );
-	int ?!=?( T, T );
-	int ?<?( T, T );
-	int ?<=?( T, T );
-	int ?>?( T, T );
-	int ?>=?( T, T );
-	void ?{}( T &, zero_t );
-	void ?{}( T &, one_t );
-	T +?( T );
-	T -?( T );
-	T ?+?( T, T );
-	T ?-?( T, T );
-	T ?*?( T, T );
-	T ?/?( T, T );
-	T ?%?( T, T );
-	T ?/=?( T &, T );
-	T abs( T );
-};
-
-// implementation
-
-forall( otype RationalImpl | arithmetic( RationalImpl ) ) {
-	struct Rational {
-		RationalImpl numerator, denominator;			// invariant: denominator > 0
-	}; // Rational
-
-	// constructors
-
-	void ?{}( Rational(RationalImpl) & r );
-	void ?{}( Rational(RationalImpl) & r, RationalImpl n );
-	void ?{}( Rational(RationalImpl) & r, RationalImpl n, RationalImpl d );
-	void ?{}( Rational(RationalImpl) & r, zero_t );
-	void ?{}( Rational(RationalImpl) & r, one_t );
-
-	// numerator/denominator getter
-
-	RationalImpl numerator( Rational(RationalImpl) r );
-	RationalImpl denominator( Rational(RationalImpl) r );
-	[ RationalImpl, RationalImpl ] ?=?( & [ RationalImpl, RationalImpl ] dest, Rational(RationalImpl) src );
-
-	// numerator/denominator setter
-
-	RationalImpl numerator( Rational(RationalImpl) r, RationalImpl n );
-	RationalImpl denominator( Rational(RationalImpl) r, RationalImpl d );
-
-	// comparison
-
-	int ?==?( Rational(RationalImpl) l, Rational(RationalImpl) r );
-	int ?!=?( Rational(RationalImpl) l, Rational(RationalImpl) r );
-	int ?<?( Rational(RationalImpl) l, Rational(RationalImpl) r );
-	int ?<=?( Rational(RationalImpl) l, Rational(RationalImpl) r );
-	int ?>?( Rational(RationalImpl) l, Rational(RationalImpl) r );
-	int ?>=?( Rational(RationalImpl) l, Rational(RationalImpl) r );
-
-	// arithmetic
-
-	Rational(RationalImpl) +?( Rational(RationalImpl) r );
-	Rational(RationalImpl) -?( Rational(RationalImpl) r );
-	Rational(RationalImpl) ?+?( Rational(RationalImpl) l, Rational(RationalImpl) r );
-	Rational(RationalImpl) ?-?( Rational(RationalImpl) l, Rational(RationalImpl) r );
-	Rational(RationalImpl) ?*?( Rational(RationalImpl) l, Rational(RationalImpl) r );
-	Rational(RationalImpl) ?/?( Rational(RationalImpl) l, Rational(RationalImpl) r );
-
-	// I/O
-	forall( dtype istype | istream( istype ) | { istype & ?|?( istype &, RationalImpl & ); } )
-	istype & ?|?( istype &, Rational(RationalImpl) & );
-
-	forall( dtype ostype | ostream( ostype ) | { ostype & ?|?( ostype &, RationalImpl ); } )
-	ostype & ?|?( ostype &, Rational(RationalImpl ) );
-} // distribution
-
-// conversion
-forall( otype RationalImpl | arithmetic( RationalImpl ) | { double convert( RationalImpl ); } )
-double widen( Rational(RationalImpl) r );
-forall( otype RationalImpl | arithmetic( RationalImpl ) | { double convert( RationalImpl );  RationalImpl convert( double );} )
-Rational(RationalImpl) narrow( double f, RationalImpl md );
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/rational.c
===================================================================
--- src/libcfa/rational.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,221 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// rational.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Apr  6 17:54:28 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jun  2 09:24:33 2018
-// Update Count     : 162
-//
-
-#include "rational"
-#include "fstream"
-#include "stdlib"
-
-forall( otype RationalImpl | arithmetic( RationalImpl ) ) {
-	// helper routines
-
-	// Calculate greatest common denominator of two numbers, the first of which may be negative. Used to reduce
-	// rationals.  alternative: https://en.wikipedia.org/wiki/Binary_GCD_algorithm
-	static RationalImpl gcd( RationalImpl a, RationalImpl b ) {
-		for ( ;; ) {									// Euclid's algorithm
-			RationalImpl r = a % b;
-		  if ( r == (RationalImpl){0} ) break;
-			a = b;
-			b = r;
-		} // for
-		return b;
-	} // gcd
-
-	static RationalImpl simplify( RationalImpl & n, RationalImpl & d ) {
-		if ( d == (RationalImpl){0} ) {
-			serr | "Invalid rational number construction: denominator cannot be equal to 0." | endl;
-			exit( EXIT_FAILURE );
-		} // exit
-		if ( d < (RationalImpl){0} ) { d = -d; n = -n; } // move sign to numerator
-		return gcd( abs( n ), d );						// simplify
-	} // Rationalnumber::simplify
-
-	// constructors
-
-	void ?{}( Rational(RationalImpl) & r ) {
-		r{ (RationalImpl){0}, (RationalImpl){1} };
-	} // rational
-
-	void ?{}( Rational(RationalImpl) & r, RationalImpl n ) {
-		r{ n, (RationalImpl){1} };
-	} // rational
-
-	void ?{}( Rational(RationalImpl) & r, RationalImpl n, RationalImpl d ) {
-		RationalImpl t = simplify( n, d );				// simplify
-		r.numerator = n / t;
-		r.denominator = d / t;
-	} // rational
-
-
-	// getter for numerator/denominator
-
-	RationalImpl numerator( Rational(RationalImpl) r ) {
-		return r.numerator;
-	} // numerator
-
-	RationalImpl denominator( Rational(RationalImpl) r ) {
-		return r.denominator;
-	} // denominator
-
-	[ RationalImpl, RationalImpl ] ?=?( & [ RationalImpl, RationalImpl ] dest, Rational(RationalImpl) src ) {
-		return dest = src.[ numerator, denominator ];
-	} // ?=?
-
-	// setter for numerator/denominator
-
-	RationalImpl numerator( Rational(RationalImpl) r, RationalImpl n ) {
-		RationalImpl prev = r.numerator;
-		RationalImpl t = gcd( abs( n ), r.denominator ); // simplify
-		r.numerator = n / t;
-		r.denominator = r.denominator / t;
-		return prev;
-	} // numerator
-
-	RationalImpl denominator( Rational(RationalImpl) r, RationalImpl d ) {
-		RationalImpl prev = r.denominator;
-		RationalImpl t = simplify( r.numerator, d );	// simplify
-		r.numerator = r.numerator / t;
-		r.denominator = d / t;
-		return prev;
-	} // denominator
-
-	// comparison
-
-	int ?==?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
-		return l.numerator * r.denominator == l.denominator * r.numerator;
-	} // ?==?
-
-	int ?!=?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
-		return ! ( l == r );
-	} // ?!=?
-
-	int ?<?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
-		return l.numerator * r.denominator < l.denominator * r.numerator;
-	} // ?<?
-
-	int ?<=?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
-		return l.numerator * r.denominator <= l.denominator * r.numerator;
-	} // ?<=?
-
-	int ?>?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
-		return ! ( l <= r );
-	} // ?>?
-
-	int ?>=?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
-		return ! ( l < r );
-	} // ?>=?
-
-	// arithmetic
-
-	Rational(RationalImpl) +?( Rational(RationalImpl) r ) {
-		Rational(RationalImpl) t = { r.numerator, r.denominator };
-		return t;
-	} // +?
-
-	Rational(RationalImpl) -?( Rational(RationalImpl) r ) {
-		Rational(RationalImpl) t = { -r.numerator, r.denominator };
-		return t;
-	} // -?
-
-	Rational(RationalImpl) ?+?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
-		if ( l.denominator == r.denominator ) {			// special case
-			Rational(RationalImpl) t = { l.numerator + r.numerator, l.denominator };
-			return t;
-		} else {
-			Rational(RationalImpl) t = { l.numerator * r.denominator + l.denominator * r.numerator, l.denominator * r.denominator };
-			return t;
-		} // if
-	} // ?+?
-
-	Rational(RationalImpl) ?-?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
-		if ( l.denominator == r.denominator ) {			// special case
-			Rational(RationalImpl) t = { l.numerator - r.numerator, l.denominator };
-			return t;
-		} else {
-			Rational(RationalImpl) t = { l.numerator * r.denominator - l.denominator * r.numerator, l.denominator * r.denominator };
-			return t;
-		} // if
-	} // ?-?
-
-	Rational(RationalImpl) ?*?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
-		Rational(RationalImpl) t = { l.numerator * r.numerator, l.denominator * r.denominator };
-		return t;
-	} // ?*?
-
-	Rational(RationalImpl) ?/?( Rational(RationalImpl) l, Rational(RationalImpl) r ) {
-		if ( r.numerator < (RationalImpl){0} ) {
-			r.numerator = -r.numerator;
-			r.denominator = -r.denominator;
-		} // if
-		Rational(RationalImpl) t = { l.numerator * r.denominator, l.denominator * r.numerator };
-		return t;
-	} // ?/?
-
-	// I/O
-
-	forall( dtype istype | istream( istype ) | { istype & ?|?( istype &, RationalImpl & ); } )
-	istype & ?|?( istype & is, Rational(RationalImpl) & r ) {
-		RationalImpl t;
-		is | r.numerator | r.denominator;
-		t = simplify( r.numerator, r.denominator );
-		r.numerator /= t;
-		r.denominator /= t;
-		return is;
-	} // ?|?
-
-	forall( dtype ostype | ostream( ostype ) | { ostype & ?|?( ostype &, RationalImpl ); } )
-	ostype & ?|?( ostype & os, Rational(RationalImpl ) r ) {
-		return os | r.numerator | '/' | r.denominator;
-	} // ?|?
-} // distribution
-
-// conversion
-
-forall( otype RationalImpl | arithmetic( RationalImpl ) | { double convert( RationalImpl ); } )
-double widen( Rational(RationalImpl) r ) {
- 	return convert( r.numerator ) / convert( r.denominator );
-} // widen
-
-forall( otype RationalImpl | arithmetic( RationalImpl ) | { double convert( RationalImpl ); RationalImpl convert( double ); } )
-Rational(RationalImpl) narrow( double f, RationalImpl md ) {
-	// http://www.ics.uci.edu/~eppstein/numth/frap.c
-	if ( md <= (RationalImpl){1} ) {					// maximum fractional digits too small?
-		return (Rational(RationalImpl)){ convert( f ), (RationalImpl){1}}; // truncate fraction
-	} // if
-
-	// continued fraction coefficients
-	RationalImpl m00 = {1}, m11 = { 1 }, m01 = { 0 }, m10 = { 0 };
-	RationalImpl ai, t;
-
-	// find terms until denom gets too big
-	for ( ;; ) {
-		ai = convert( f );
-	  if ( ! (m10 * ai + m11 <= md) ) break;
-		t = m00 * ai + m01;
-		m01 = m00;
-		m00 = t;
-		t = m10 * ai + m11;
-		m11 = m10;
-		m10 = t;
-		double temp = convert( ai );
-	  if ( f == temp ) break;							// prevent division by zero
-		f = 1 / (f - temp);
-	  if ( f > (double)0x7FFFFFFF ) break;				// representation failure
-	} // for
-	return (Rational(RationalImpl)){ m00, m10 };
-} // narrow
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/startup.c
===================================================================
--- src/libcfa/startup.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,47 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// startup.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Tue Jul 24 16:21:57 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul 25 16:42:01 2018
-// Update Count     : 11
-//
-
-#include "startup.h"
-#include <unistd.h>
-
-
-extern "C" {
-    static void __cfaabi_appready_startup( void ) __attribute__(( constructor( STARTUP_PRIORITY_APPREADY ) ));
-    void __cfaabi_appready_startup( void ) {
-		#ifdef __CFA_DEBUG__
-		extern void heapAppStart();
-		heapAppStart();
-		#endif // __CFA_DEBUG__
-    } // __cfaabi_appready_startup
-
-    static void __cfaabi_appready_shutdown( void ) __attribute__(( destructor( STARTUP_PRIORITY_APPREADY ) ));
-    void __cfaabi_appready_shutdown( void ) {
-		#ifdef __CFA_DEBUG__
-		extern void heapAppStop();
-		heapAppStop();
-		#endif // __CFA_DEBUG__
-    } // __cfaabi_appready_shutdown
-
-    void disable_interrupts() __attribute__(( weak )) {}
-    void enable_interrupts_noPoll() __attribute__(( weak )) {}
-} // extern "C"
-
-struct __spinlock_t;
-void __cfaabi_dbg_record(struct __spinlock_t & this, const char * prev_name) __attribute__(( weak )) {}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/startup.h
===================================================================
--- src/libcfa/startup.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,39 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// startup.h --
-//
-// Author           : Thierry Delisle
-// Created On       : Wed Mar 29 15:56:41 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul 24 16:16:37 2018
-// Update Count     : 4
-//
-
-#pragma once
-
-#if GCC_VERSION > 50000
-extern "C" {
-	enum {
-		STARTUP_PRIORITY_MEMORY     = 101,
-		STARTUP_PRIORITY_CORE       = 102,
-		STARTUP_PRIORITY_KERNEL     = 103,
-		STARTUP_PRIORITY_IOSTREAM   = 104,
-		STARTUP_PRIORITY_APPREADY   = 105,
-	};
-}
-#else
-#define STARTUP_PRIORITY_MEMORY     101
-#define STARTUP_PRIORITY_CORE       102
-#define STARTUP_PRIORITY_KERNEL     103
-#define STARTUP_PRIORITY_IOSTREAM   104
-#define STARTUP_PRIORITY_APPREADY   105
-#endif
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/stdhdr/assert.h
===================================================================
--- src/libcfa/stdhdr/assert.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,49 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// assert.h --
-//
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jul 31 23:09:32 2017
-// Update Count     : 13
-//
-
-#ifdef __cforall
-extern "C" {
-#endif //__cforall
-
-#include_next <assert.h>
-
-#ifdef NDEBUG
-	#define assertf( expr, fmt, ... ) ((void)0)
-#else
-	#define __STRINGIFY__(str) #str
-	#define __VSTRINGIFY__(str) __STRINGIFY__(str)
-	#define assertf( expr, fmt, ... ) ((expr) ? ((void)0) : __assert_fail_f(__VSTRINGIFY__(expr), __FILE__, __LINE__, __PRETTY_FUNCTION__, fmt, ## __VA_ARGS__ ))
-
-	void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) __attribute__((noreturn, format( printf, 5, 6) ));
-#endif
-
-#if !defined(NDEBUG) && (defined(__CFA_DEBUG__) || defined(__CFA_VERIFY__))
-	#define verify(x) assert(x)
-	#define verifyf(x, ...) assertf(x, __VA_ARGS__)
-	#define __CFA_WITH_VERIFY__
-#else
-	#define verify(x)
-	#define verifyf(x, ...)
-#endif
-
-#ifdef __cforall
-} // extern "C"
-#endif //__cforall
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/bfdlink.h
===================================================================
--- src/libcfa/stdhdr/bfdlink.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,33 +1,0 @@
-// 
-// 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.
-// 
-// bfdlink.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Jul 18 07:26:04 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul 22 13:49:30 2018
-// Update Count     : 4
-// 
-
-// include file uses the CFA keyword "with".
-#if ! defined( with )									// nesting ?
-#define with `with`										// make keyword an identifier
-#define __CFA_BFDLINK_H__
-#endif
-
-#include_next <bfdlink.h>								// has internal check for multiple expansion
-
-#if defined( with ) && defined( __CFA_BFDLINK_H__ )		// reset only if set
-#undef with
-#undef __CFA_BFDLINK_H__
-#endif
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/complex.h
===================================================================
--- src/libcfa/stdhdr/complex.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// complex.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:28:33 2016
-// Update Count     : 6
-// 
-
-extern "C" {
-#include_next <complex.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/ctype.h
===================================================================
--- src/libcfa/stdhdr/ctype.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// ctype.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:34:11 2016
-// Update Count     : 6
-// 
-
-extern "C" {
-#include_next <ctype.h>									// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/errno.h
===================================================================
--- src/libcfa/stdhdr/errno.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// errno.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:27:03 2016
-// Update Count     : 4
-// 
-
-extern "C" {
-#include_next <errno.h>									// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/fenv.h
===================================================================
--- src/libcfa/stdhdr/fenv.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// fenv.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:29:46 2016
-// Update Count     : 6
-// 
-
-extern "C" {
-#include_next <fenv.h>									// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/float.h
===================================================================
--- src/libcfa/stdhdr/float.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// float.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:30:25 2016
-// Update Count     : 7
-// 
-
-extern "C" {
-#include_next <float.h>									// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/gmp.h
===================================================================
--- src/libcfa/stdhdr/gmp.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// gmp.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Sun May 14 23:46:01 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 18:10:52 2017
-// Update Count     : 4
-// 
-
-extern "C" {
-#include_next <gmp.h>									// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/hwloc.h
===================================================================
--- src/libcfa/stdhdr/hwloc.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,33 +1,0 @@
-// 
-// 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.
-// 
-// hwloc.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Jul 18 07:45:00 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul 22 13:49:58 2018
-// Update Count     : 4
-// 
-
-// include file uses the CFA keyword "thread".
-#if ! defined( thread )									// nesting ?
-#define thread `thread`									// make keyword an identifier
-#define __CFA_HWLOC_H__
-#endif
-
-#include_next <hwloc.h>									// has internal check for multiple expansion
-
-#if defined( thread ) && defined( __CFA_HWLOC_H__ )		// reset only if set
-#undef thread
-#undef __CFA_HWLOC_H__
-#endif
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/inttypes.h
===================================================================
--- src/libcfa/stdhdr/inttypes.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// inttypes.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:30:58 2016
-// Update Count     : 8
-// 
-
-extern "C" {
-#include_next <inttypes.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/iso646.h
===================================================================
--- src/libcfa/stdhdr/iso646.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// ios646.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:35:36 2016
-// Update Count     : 9
-// 
-
-extern "C" {
-#include_next <ios646.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/krb5.h
===================================================================
--- src/libcfa/stdhdr/krb5.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,33 +1,0 @@
-// 
-// 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.
-// 
-// krb5.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Jul 18 07:55:44 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul 22 13:50:24 2018
-// Update Count     : 4
-// 
-
-// include file uses the CFA keyword "enable".
-#if ! defined( enable )									// nesting ?
-#define enable `enable`									// make keyword an identifier
-#define __CFA_KRB5_H__
-#endif
-
-#include_next <krb5.h>									// has internal check for multiple expansion
-
-#if defined( enable ) && defined( __CFA_KRB5_H__ )		// reset only if set
-#undef enable
-#undef __CFA_KRB5_H__
-#endif
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/limits.h
===================================================================
--- src/libcfa/stdhdr/limits.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// limits.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:35:58 2016
-// Update Count     : 10
-// 
-
-extern "C" {
-#include_next <limits.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/locale.h
===================================================================
--- src/libcfa/stdhdr/locale.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// locale.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:37:56 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <locale.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/malloc.h
===================================================================
--- src/libcfa/stdhdr/malloc.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,47 +1,0 @@
-// 
-// 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.
-// 
-// malloc.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Thu Jul 20 15:58:16 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul 31 10:01:10 2018
-// Update Count     : 9
-// 
-
-
-size_t default_mmap_start();							// CFA extras
-size_t default_heap_expansion();
-
-_Bool traceHeap();
-_Bool traceHeapOn();
-_Bool traceHeapOff();
-
-_Bool traceHeapTerm();
-_Bool traceHeapTermOn();
-_Bool traceHeapTermOff();
-
-_Bool checkFree();
-_Bool checkFreeOn();
-_Bool checkFreeOff();
-
-extern "C" {
-size_t malloc_alignment( void * );
-_Bool malloc_zero_fill( void * );
-int malloc_stats_fd( int fd );
-void * cmemalign( size_t alignment, size_t noOfElems, size_t elemSize );
-} // extern "C"
-
-extern "C" {
-#include_next <malloc.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/math.h
===================================================================
--- src/libcfa/stdhdr/math.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,34 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// math.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb 22 18:16:07 2018
-// Update Count     : 13
-// 
-
-extern "C" {
-#if ! defined( exception )								// nesting ?
-#define exception `exception`							// make keyword an identifier
-#define __CFA_MATH_H__
-#endif
-
-#include_next <math.h>									// has internal check for multiple expansion
-
-#if defined( exception ) && defined( __CFA_MATH_H__ )	// reset only if set
-#undef exception
-#undef __CFA_MATH_H__
-#endif
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/setjmp.h
===================================================================
--- src/libcfa/stdhdr/setjmp.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// setjmp.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:38:33 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <setjmp.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/signal.h
===================================================================
--- src/libcfa/stdhdr/signal.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// signal.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:38:48 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <signal.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/stdalign.h
===================================================================
--- src/libcfa/stdhdr/stdalign.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// stdalign.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:39:11 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <stdalign.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/stdarg.h
===================================================================
--- src/libcfa/stdhdr/stdarg.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// stdarg.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:39:25 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <stdarg.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/stdatomic.h
===================================================================
--- src/libcfa/stdhdr/stdatomic.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// stdatomic.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:39:38 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <stdatomic.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/stdbool.h
===================================================================
--- src/libcfa/stdhdr/stdbool.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// stdbool.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:39:51 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <stdbool.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/stddef.h
===================================================================
--- src/libcfa/stdhdr/stddef.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,26 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// stddef.h --
-//
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:40:01 2016
-// Update Count     : 12
-//
-
-extern "C" {
-#include_next <stddef.h>                // has internal check for multiple expansion
-#undef NULL
-#define NULL 0                          // define NULL as 0 rather than (void*)0 to take advantage of zero_t
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/stdint.h
===================================================================
--- src/libcfa/stdhdr/stdint.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// stdint.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:40:11 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <stdint.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/stdio.h
===================================================================
--- src/libcfa/stdhdr/stdio.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// stdio.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jul  4 23:33:37 2016
-// Update Count     : 3
-// 
-
-extern "C" {
-#include_next <stdio.h>									// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/stdlib.h
===================================================================
--- src/libcfa/stdhdr/stdlib.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// stdlib.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:40:28 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <stdlib.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/stdnoreturn.h
===================================================================
--- src/libcfa/stdhdr/stdnoreturn.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// stdnoreturn.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:40:37 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <stdnoreturn.h>							// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/string.h
===================================================================
--- src/libcfa/stdhdr/string.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// string.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:40:47 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <string.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/sys/ucontext.h
===================================================================
--- src/libcfa/stdhdr/sys/ucontext.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,32 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// uco.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Thu Feb  8 23:48:16 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  8 23:50:44 2018
-// Update Count     : 4
-// 
-
-#if ! defined( ftype )									// nesting ?
-#define ftype `ftype`									// make keyword an identifier
-#define __CFA_UCONTEXT_H__
-#endif
-
-#include_next <sys/ucontext.h>							// must have internal check for multiple expansion
-
-#if defined( ftype ) && defined( __CFA_UCONTEXT_H__ )	// reset only if set
-#undef ftype
-#undef __CFA_UCONTEXT_H__
-#endif
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/tgmath.h
===================================================================
--- src/libcfa/stdhdr/tgmath.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// tgmath.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:40:56 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <tgmath.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/threads.h
===================================================================
--- src/libcfa/stdhdr/threads.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// threads.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:41:04 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <threads.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/time.h
===================================================================
--- src/libcfa/stdhdr/time.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// time.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:41:24 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <time.h>									// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/uchar.h
===================================================================
--- src/libcfa/stdhdr/uchar.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// uchar.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:41:33 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <uchar.h>									// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/unistd.h
===================================================================
--- src/libcfa/stdhdr/unistd.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// unistd.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 21:06:59 2016
-// Update Count     : 13
-// 
-
-extern "C" {
-#include_next <unistd.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/wchar.h
===================================================================
--- src/libcfa/stdhdr/wchar.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// wchar.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:41:43 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <wchar.h>									// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdhdr/wctype.h
===================================================================
--- src/libcfa/stdhdr/wctype.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// wctype.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 23:25:26 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul  5 20:41:53 2016
-// Update Count     : 12
-// 
-
-extern "C" {
-#include_next <wctype.h>								// has internal check for multiple expansion
-} // extern "C"
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/libcfa/stdlib
===================================================================
--- src/libcfa/stdlib	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,258 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// stdlib --
-//
-// Author           : Peter A. Buhr
-// Created On       : Thu Jan 28 17:12:35 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 27 07:21:36 2018
-// Update Count     : 345
-//
-
-#pragma once
-
-#include <stdlib.h>										// *alloc, strto*, ato*
-extern "C" {
-	void * memalign( size_t align, size_t size );		// malloc.h
-	void * memset( void * dest, int fill, size_t size ); // string.h
-	void * memcpy( void * dest, const void * src, size_t size ); // string.h
-    void * cmemalign( size_t alignment, size_t noOfElems, size_t elemSize ); // CFA
-} // extern "C"
-
-//---------------------------------------
-
-#ifndef EXIT_FAILURE
-#define	EXIT_FAILURE	1								// failing exit status
-#define	EXIT_SUCCESS	0								// successful exit status
-#endif // ! EXIT_FAILURE
-
-//---------------------------------------
-
-static inline forall( dtype T | sized(T) ) {
-	// C dynamic allocation
-
-	T * malloc( void ) {
-		return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc
-	} // malloc
-
-	// T & malloc( void ) {
-	// 	int & p = *(T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc
-	// 	printf( "& malloc %p\n", &p );
-	// 	return p;
-	// 	//	return (T &)*(T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc
-	// } // malloc
-
-	T * calloc( size_t dim ) {
-		return (T *)(void *)calloc( dim, sizeof(T) );	// C calloc
-	} // calloc
-
-	T * realloc( T * ptr, size_t size ) {
-		return (T *)(void *)realloc( (void *)ptr, size );
-	} // realloc
-
-	T * memalign( size_t align ) {
-		return (T *)memalign( align, sizeof(T) );
-	} // memalign
-
-	T * aligned_alloc( size_t align ) {
-		return (T *)aligned_alloc( align, sizeof(T) );
-	} // aligned_alloc
-
-	int posix_memalign( T ** ptr, size_t align ) {
-		return posix_memalign( (void **)ptr, align, sizeof(T) ); // C posix_memalign
-	} // posix_memalign
-
-
-	// Cforall dynamic allocation
-
-	T * alloc( void ) {
-		return (T *)(void *)malloc( (size_t)sizeof(T) ); // C malloc
-	} // alloc
-
-	T * alloc( char fill ) {
-		T * ptr = (T *)(void *)malloc( (size_t)sizeof(T) );	// C malloc
-		return (T *)memset( ptr, (int)fill, sizeof(T) );	// initial with fill value
-	} // alloc
-
-	T * alloc( size_t dim ) {
-		return (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc
-	} // alloc
-
-	T * alloc( size_t dim, char fill ) {
-		T * ptr = (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc
-		return (T *)memset( ptr, (int)fill, dim * sizeof(T) );	  // initial with fill value
-	} // alloc
-
-	T * alloc( T ptr[], size_t dim ) {
-		return (T *)(void *)realloc( (void *)ptr, dim * (size_t)sizeof(T) ); // C realloc
-	} // alloc
-} // distribution
-
-
-forall( dtype T | sized(T) ) T * alloc( T ptr[], size_t dim, char fill );
-
-
-static inline forall( dtype T | sized(T) ) {
-	T * align_alloc( size_t align ) {
-		return (T *)memalign( align, sizeof(T) );
-	} // align_alloc
-
-	T * align_alloc( size_t align, char fill ) {
-		T * ptr = (T *)memalign( align, sizeof(T) );
-		return (T *)memset( ptr, (int)fill, sizeof(T) );
-	} // align_alloc
-
-	T * align_alloc( size_t align, size_t dim ) {
-		return (T *)memalign( align, dim * sizeof(T) );
-	} // align_alloc
-
-	T * align_alloc( size_t align, size_t dim, char fill ) {
-		T * ptr;
-		if ( fill == '\0' ) {
-			ptr = (T *)cmemalign( align, dim, sizeof(T) );
-		} else {
-			ptr = (T *)memalign( align, dim * sizeof(T) );
-			return (T *)memset( ptr, (int)fill, dim * sizeof(T) );
-		} // if
-		return ptr;
-	} // align_alloc
-} // distribution
-
-
-static inline forall( dtype T | sized(T) ) {
-	// data, non-array types
-
-	T * memset( T * dest, char fill ) {
-		return (T *)memset( dest, fill, sizeof(T) );
-	} // memset
-
-	T * memcpy( T * dest, const T * src ) {
-		return (T *)memcpy( dest, src, sizeof(T) );
-	} // memcpy
-} // distribution
-
-static inline forall( dtype T | sized(T) ) {
-	// data, array types
-
-	T * amemset( T dest[], char fill, size_t dim ) {
-		return (T *)(void *)memset( dest, fill, dim * sizeof(T) ); // C memset
-	} // amemset
-
-	T * amemcpy( T dest[], const T src[], size_t dim ) {
-		return (T *)(void *)memcpy( dest, src, dim * sizeof(T) ); // C memcpy
-	} // amemcpy
-} // distribution
-
-// allocation/deallocation and constructor/destructor, non-array types
-forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } ) T * new( Params p );
-forall( dtype T | sized(T) | { void ^?{}( T & ); } ) void delete( T * ptr );
-forall( dtype T, ttype Params | sized(T) | { void ^?{}( T & ); void delete( Params ); } ) void delete( T * ptr, Params rest );
-
-// allocation/deallocation and constructor/destructor, array types
-forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } ) T * anew( size_t dim, Params p );
-forall( dtype T | sized(T) | { void ^?{}( T & ); } ) void adelete( size_t dim, T arr[] );
-forall( dtype T | sized(T) | { void ^?{}( T & ); }, ttype Params | { void adelete( Params ); } ) void adelete( size_t dim, T arr[], Params rest );
-
-//---------------------------------------
-
-static inline {
-	int strto( const char * sptr, char ** eptr, int base ) { return (int)strtol( sptr, eptr, base ); }
-	unsigned int strto( const char * sptr, char ** eptr, int base ) { return (unsigned int)strtoul( sptr, eptr, base ); }
-	long int strto( const char * sptr, char ** eptr, int base ) { return strtol( sptr, eptr, base ); }
-	unsigned long int strto( const char * sptr, char ** eptr, int base ) { return strtoul( sptr, eptr, base ); }
-	long long int strto( const char * sptr, char ** eptr, int base ) { return strtoll( sptr, eptr, base ); }
-	unsigned long long int strto( const char * sptr, char ** eptr, int base ) { return strtoull( sptr, eptr, base ); }
-
-	float strto( const char * sptr, char ** eptr ) { return strtof( sptr, eptr ); }
-	double strto( const char * sptr, char ** eptr ) { return strtod( sptr, eptr ); }
-	long double strto( const char * sptr, char ** eptr ) { return strtold( sptr, eptr ); }
-} // distribution
-
-float _Complex strto( const char * sptr, char ** eptr );
-double _Complex strto( const char * sptr, char ** eptr );
-long double _Complex strto( const char * sptr, char ** eptr );
-
-static inline {
-	int ato( const char * sptr ) {return (int)strtol( sptr, 0, 10 ); }
-	unsigned int ato( const char * sptr ) { return (unsigned int)strtoul( sptr, 0, 10 ); }
-	long int ato( const char * sptr ) { return strtol( sptr, 0, 10 ); }
-	unsigned long int ato( const char * sptr ) { return strtoul( sptr, 0, 10 ); }
-	long long int ato( const char * sptr ) { return strtoll( sptr, 0, 10 ); }
-	unsigned long long int ato( const char * sptr ) { return strtoull( sptr, 0, 10 ); }
-
-	float ato( const char * sptr ) { return strtof( sptr, 0 ); }
-	double ato( const char * sptr ) { return strtod( sptr, 0 ); }
-	long double ato( const char * sptr ) { return strtold( sptr, 0 ); }
-
-	float _Complex ato( const char * sptr ) { return strto( sptr, NULL ); }
-	double _Complex ato( const char * sptr ) { return strto( sptr, NULL ); }
-	long double _Complex ato( const char * sptr ) { return strto( sptr, NULL ); }
-} // distribution
-
-//---------------------------------------
-
-forall( otype E | { int ?<?( E, E ); } ) {
-	E * bsearch( E key, const E * vals, size_t dim );
-	size_t bsearch( E key, const E * vals, size_t dim );
-	E * bsearchl( E key, const E * vals, size_t dim );
-	size_t bsearchl( E key, const E * vals, size_t dim );
-	E * bsearchu( E key, const E * vals, size_t dim );
-	size_t bsearchu( E key, const E * vals, size_t dim );
-} // distribution
-
-forall( otype K, otype E | { int ?<?( K, K ); K getKey( const E & ); } ) {
-	E * bsearch( K key, const E * vals, size_t dim );
-	size_t bsearch( K key, const E * vals, size_t dim );
-	E * bsearchl( K key, const E * vals, size_t dim );
-	size_t bsearchl( K key, const E * vals, size_t dim );
-	E * bsearchu( K key, const E * vals, size_t dim );
-	size_t bsearchu( K key, const E * vals, size_t dim );
-} // distribution
-
-forall( otype E | { int ?<?( E, E ); } ) {
-	void qsort( E * vals, size_t dim );
-} // distribution
-
-//---------------------------------------
-
-extern "C" {											// override C version
-	void srandom( unsigned int seed );
-	long int random( void );
-} // extern "C"
-
-static inline {
-	long int random( long int l, long int u ) { if ( u < l ) [u, l] = [l, u]; return lrand48() % (u - l) + l; } // [l,u)
-	long int random( long int u ) { if ( u < 0 ) return random( u, 0 ); else return random( 0, u ); } // [0,u)
-	unsigned long int random( void ) { return lrand48(); }
-	unsigned long int random( unsigned long int l, unsigned long int u ) { if ( u < l ) [u, l] = [l, u]; return lrand48() % (u - l) + l; } // [l,u)
-	unsigned long int random( unsigned long int u ) { return lrand48() % u; } // [0,u)
-
-	char random( void ) { return (unsigned long int)random(); }
-	char random( char u ) { return random( (unsigned long int)u ); } // [0,u)
-	char random( char l, char u ) { return random( (unsigned long int)l, (unsigned long int)u ); } // [l,u)
-	int random( void ) { return (long int)random(); }
-	int random( int u ) { return random( (long int)u ); } // [0,u]
-	int random( int l, int u ) { return random( (long int)l, (long int)u ); } // [l,u)
-	unsigned int random( void ) { return (unsigned long int)random(); }
-	unsigned int random( unsigned int u ) { return random( (unsigned long int)u ); } // [0,u]
-	unsigned int random( unsigned int l, unsigned int u ) { return random( (unsigned long int)l, (unsigned long int)u ); } // [l,u)
-} // distribution
-
-float random( void );									// [0.0, 1.0)
-double random( void );									// [0.0, 1.0)
-float _Complex random( void );							// [0.0, 1.0)+[0.0, 1.0)i
-double _Complex random( void );							// [0.0, 1.0)+[0.0, 1.0)i
-long double _Complex random( void );					// [0.0, 1.0)+[0.0, 1.0)i
-
-//---------------------------------------
-
-#include "common"
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/stdlib.c
===================================================================
--- src/libcfa/stdlib.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,257 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// stdlib.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Thu Jan 28 17:10:29 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 12 08:03:59 2018
-// Update Count     : 458
-//
-
-#include "stdlib"
-
-//---------------------------------------
-
-#define _XOPEN_SOURCE 600								// posix_memalign, *rand48
-#include <string.h>										// memcpy, memset
-#include <malloc.h>										// malloc_usable_size
-#include <math.h>										// fabsf, fabs, fabsl
-#include <complex.h>									// _Complex_I
-#include <assert.h>
-
-//---------------------------------------
-
-// resize, non-array types
-forall( dtype T | sized(T) ) T * alloc( T ptr[], size_t dim, char fill ) {
-	size_t olen = malloc_usable_size( ptr );			// current allocation
-    char * nptr = (void *)realloc( (void *)ptr, dim * (size_t)sizeof(T) ); // C realloc
-	size_t nlen = malloc_usable_size( nptr );			// new allocation
-	if ( nlen > olen ) {								// larger ?
-		memset( nptr + olen, (int)fill, nlen - olen );	// initialize added storage
-	} //
-    return (T *)nptr;
-} // alloc
-
-// allocation/deallocation and constructor/destructor, non-array types
-forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } )
-T * new( Params p ) {
-	return &(*malloc()){ p };								// run constructor
-} // new
-
-forall( dtype T | sized(T) | { void ^?{}( T & ); } )
-void delete( T * ptr ) {
-	if ( ptr ) {										// ignore null
-		^(*ptr){};											// run destructor
-		free( ptr );
-	} // if
-} // delete
-
-forall( dtype T, ttype Params | sized(T) | { void ^?{}( T & ); void delete( Params ); } )
-void delete( T * ptr, Params rest ) {
-	if ( ptr ) {										// ignore null
-		^(*ptr){};											// run destructor
-		free( ptr );
-	} // if
-	delete( rest );
-} // delete
-
-
-// allocation/deallocation and constructor/destructor, array types
-forall( dtype T | sized(T), ttype Params | { void ?{}( T &, Params ); } )
-T * anew( size_t dim, Params p ) {
-	T *arr = alloc( dim );
-	for ( unsigned int i = 0; i < dim; i += 1 ) {
-		(arr[i]){ p };									// run constructor
-	} // for
-	return arr;
-} // anew
-
-forall( dtype T | sized(T) | { void ^?{}( T & ); } )
-void adelete( size_t dim, T arr[] ) {
-	if ( arr ) {										// ignore null
-		for ( int i = dim - 1; i >= 0; i -= 1 ) {		// reverse allocation order, must be unsigned
-			^(arr[i]){};								// run destructor
-		} // for
-		free( arr );
-	} // if
-} // adelete
-
-forall( dtype T | sized(T) | { void ^?{}( T & ); }, ttype Params | { void adelete( Params ); } )
-void adelete( size_t dim, T arr[], Params rest ) {
-	if ( arr ) {										// ignore null
-		for ( int i = dim - 1; i >= 0; i -= 1 ) {		// reverse allocation order, must be unsigned
-			^(arr[i]){};								// run destructor
-		} // for
-		free( arr );
-	} // if
-	adelete( rest );
-} // adelete
-
-//---------------------------------------
-
-float _Complex strto( const char * sptr, char ** eptr ) {
-	float re, im;
-	char * eeptr;
-	re = strtof( sptr, &eeptr );
-	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
-	im = strtof( eeptr, &eeptr );
-	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
-	if ( *eeptr != 'i' ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
-	return re + im * _Complex_I;
-} // strto
-
-double _Complex strto( const char * sptr, char ** eptr ) {
-	double re, im;
-	char * eeptr;
-	re = strtod( sptr, &eeptr );
-	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
-	im = strtod( eeptr, &eeptr );
-	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
-	if ( *eeptr != 'i' ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
-	return re + im * _Complex_I;
-} // strto
-
-long double _Complex strto( const char * sptr, char ** eptr ) {
-	long double re, im;
-	char * eeptr;
-	re = strtold( sptr, &eeptr );
-	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
-	im = strtold( eeptr, &eeptr );
-	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
-	if ( *eeptr != 'i' ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
-	return re + im * _Complex_I;
-} // strto
-
-//---------------------------------------
-
-forall( otype E | { int ?<?( E, E ); } ) {
-	E * bsearch( E key, const E * vals, size_t dim ) {
-		int cmp( const void * t1, const void * t2 ) {
-			return *(E *)t1 < *(E *)t2 ? -1 : *(E *)t2 < *(E *)t1 ? 1 : 0;
-		} // cmp
-		return (E *)bsearch( &key, vals, dim, sizeof(E), cmp );
-	} // bsearch
-
-	size_t bsearch( E key, const E * vals, size_t dim ) {
-		E * result = bsearch( key, vals, dim );
-		return result ? result - vals : dim;			// pointer subtraction includes sizeof(E)
-	} // bsearch
-
-	size_t bsearchl( E key, const E * vals, size_t dim ) {
-		size_t l = 0, m, h = dim;
-		while ( l < h ) {
-			m = (l + h) / 2;
-			if ( (E &)(vals[m]) < key ) {				// cast away const
-				l = m + 1;
-			} else {
-				h = m;
-			} // if
-		} // while
-		return l;
-	} // bsearchl
-
-	E * bsearchl( E key, const E * vals, size_t dim ) {
-		size_t posn = bsearchl( key, vals, dim );
-		return (E *)(&vals[posn]);						// cast away const
-	} // bsearchl
-
-	size_t bsearchu( E key, const E * vals, size_t dim ) {
-		size_t l = 0, m, h = dim;
-		while ( l < h ) {
-			m = (l + h) / 2;
-			if ( ! ( key < (E &)(vals[m]) ) ) {			// cast away const
-				l = m + 1;
-			} else {
-				h = m;
-			} // if
-		} // while
-		return l;
-	} // bsearchu
-
-	E * bsearchu( E key, const E * vals, size_t dim ) {
-		size_t posn = bsearchu( key, vals, dim );
-		return (E *)(&vals[posn]);
-	} // bsearchu
-
-
-	void qsort( E * vals, size_t dim ) {
-		int cmp( const void * t1, const void * t2 ) {
-			return *(E *)t1 < *(E *)t2 ? -1 : *(E *)t2 < *(E *)t1 ? 1 : 0;
-		} // cmp
-		qsort( vals, dim, sizeof(E), cmp );
-	} // qsort
-} // distribution
-
-
-forall( otype K, otype E | { int ?<?( K, K ); K getKey( const E & ); } ) {
-	E * bsearch( K key, const E * vals, size_t dim ) {
-		int cmp( const void * t1, const void * t2 ) {
-			return *(K *)t1 < getKey( *(E *)t2 ) ? -1 : getKey( *(E *)t2 ) < *(K *)t1 ? 1 : 0;
-		} // cmp
-		return (E *)bsearch( &key, vals, dim, sizeof(E), cmp );
-	} // bsearch
-
-	size_t bsearch( K key, const E * vals, size_t dim ) {
-		E * result = bsearch( key, vals, dim );
-		return result ? result - vals : dim;			// pointer subtraction includes sizeof(E)
-	} // bsearch
-
-	size_t bsearchl( K key, const E * vals, size_t dim ) {
-		size_t l = 0, m, h = dim;
-		while ( l < h ) {
-			m = (l + h) / 2;
-			if ( getKey( vals[m] ) < key ) {
-				l = m + 1;
-			} else {
-				h = m;
-			} // if
-		} // while
-		return l;
-	} // bsearchl
-
-	E * bsearchl( K key, const E * vals, size_t dim ) {
-		size_t posn = bsearchl( key, vals, dim );
-		return (E *)(&vals[posn]);						// cast away const
-	} // bsearchl
-
-	size_t bsearchu( K key, const E * vals, size_t dim ) {
-		size_t l = 0, m, h = dim;
-		while ( l < h ) {
-			m = (l + h) / 2;
-			if ( ! ( key < getKey( vals[m] ) ) ) {
-				l = m + 1;
-			} else {
-				h = m;
-			} // if
-		} // while
-		return l;
-	} // bsearchu
-
-	E * bsearchu( K key, const E * vals, size_t dim ) {
-		size_t posn = bsearchu( key, vals, dim );
-		return (E *)(&vals[posn]);
-	} // bsearchu
-} // distribution
-
-//---------------------------------------
-
-extern "C" {											// override C version
-	void srandom( unsigned int seed ) { srand48( (long int)seed ); }
-	long int random( void ) { return mrand48(); }
-} // extern "C"
-
-float random( void ) { return (float)drand48(); }		// cast otherwise float uses lrand48
-double random( void ) { return drand48(); }
-float _Complex random( void ) { return (float)drand48() + (float _Complex)(drand48() * _Complex_I); }
-double _Complex random( void ) { return drand48() + (double _Complex)(drand48() * _Complex_I); }
-long double _Complex random( void ) { return (long double)drand48() + (long double _Complex)(drand48() * _Complex_I); }
-
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/time
===================================================================
--- src/libcfa/time	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,210 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// time --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Mar 14 23:18:57 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jul  2 21:28:38 2018
-// Update Count     : 641
-//
-
-#pragma once
-
-// http://en.cppreference.com/w/cpp/header/chrono
-// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r5.html#refcc
-
-#include <time.h>										// timespec
-extern "C" {
-#include <sys/time.h>									// timeval
-}
-#include <time_t.h>										// Duration/Time types
-
-enum { TIMEGRAN = 1_000_000_000LL };					// nanosecond granularity, except for timeval
-
-//######################### Duration #########################
-
-static inline {
-	Duration ?=?( Duration & dur, zero_t ) { return dur{ 0 }; }
-
-	Duration +?( Duration rhs ) with( rhs ) {	return (Duration)@{ +tv }; }
-	Duration ?+?( Duration & lhs, Duration rhs ) { return (Duration)@{ lhs.tv + rhs.tv }; }
-	Duration ?+=?( Duration & lhs, Duration rhs ) { lhs = lhs + rhs; return lhs; }
-
-	Duration -?( Duration rhs ) with( rhs ) { return (Duration)@{ -tv }; }
-	Duration ?-?( Duration & lhs, Duration rhs ) { return (Duration)@{ lhs.tv - rhs.tv }; }
-	Duration ?-=?( Duration & lhs, Duration rhs ) { lhs = lhs - rhs; return lhs; }
-
-	Duration ?*?( Duration lhs, int64_t rhs ) { return (Duration)@{ lhs.tv * rhs }; }
-	Duration ?*?( int64_t lhs, Duration rhs ) { return (Duration)@{ lhs * rhs.tv }; }
-	Duration ?*=?( Duration & lhs, int64_t rhs ) { lhs = lhs * rhs; return lhs; }
-
-	int64_t ?/?( Duration lhs, Duration rhs ) { return lhs.tv / rhs.tv; }
-	Duration ?/?( Duration lhs, int64_t rhs ) { return (Duration)@{ lhs.tv / rhs }; }
-	Duration ?/=?( Duration & lhs, int64_t rhs ) { lhs = lhs / rhs; return lhs; }
-	double div( Duration lhs, Duration rhs ) { return (double)lhs.tv / (double)rhs.tv; }
-
-	Duration ?%?( Duration lhs, Duration rhs ) { return (Duration)@{ lhs.tv % rhs.tv }; }
-	Duration ?%=?( Duration & lhs, Duration rhs ) { lhs = lhs % rhs; return lhs; }
-
-	_Bool ?==?( Duration lhs, Duration rhs ) { return lhs.tv == rhs.tv; }
-	_Bool ?!=?( Duration lhs, Duration rhs ) { return lhs.tv != rhs.tv; }
-	_Bool ?<? ( Duration lhs, Duration rhs ) { return lhs.tv <  rhs.tv; }
-	_Bool ?<=?( Duration lhs, Duration rhs ) { return lhs.tv <= rhs.tv; }
-	_Bool ?>? ( Duration lhs, Duration rhs ) { return lhs.tv >  rhs.tv; }
-	_Bool ?>=?( Duration lhs, Duration rhs ) { return lhs.tv >= rhs.tv; }
-
-	_Bool ?==?( Duration lhs, zero_t ) { return lhs.tv == 0; }
-	_Bool ?!=?( Duration lhs, zero_t ) { return lhs.tv != 0; }
-	_Bool ?<? ( Duration lhs, zero_t ) { return lhs.tv <  0; }
-	_Bool ?<=?( Duration lhs, zero_t ) { return lhs.tv <= 0; }
-	_Bool ?>? ( Duration lhs, zero_t ) { return lhs.tv >  0; }
-	_Bool ?>=?( Duration lhs, zero_t ) { return lhs.tv >= 0; }
-
-	Duration abs( Duration rhs ) { return rhs.tv >= 0 ? rhs : -rhs; }
-
-	Duration ?`ns( int64_t nsec ) { return (Duration)@{ nsec }; }
-	Duration ?`us( int64_t usec ) { return (Duration)@{ usec * (TIMEGRAN / 1_000_000LL) }; }
-	Duration ?`ms( int64_t msec ) { return (Duration)@{ msec * (TIMEGRAN / 1_000LL) }; }
-	Duration ?`s( int64_t sec ) { return (Duration)@{ sec * TIMEGRAN }; }
-	Duration ?`s( double sec ) { return (Duration)@{ sec * TIMEGRAN }; }
-	Duration ?`m( int64_t min ) { return (Duration)@{ min * (60LL * TIMEGRAN) }; }
-	Duration ?`m( double min ) { return (Duration)@{ min * (60LL * TIMEGRAN) }; }
-	Duration ?`h( int64_t hours ) { return (Duration)@{ hours * (60LL * 60LL * TIMEGRAN) }; }
-	Duration ?`h( double hours ) { return (Duration)@{ hours * (60LL * 60LL * TIMEGRAN) }; }
-	Duration ?`d( int64_t days ) { return (Duration)@{ days * (24LL * 60LL * 60LL * TIMEGRAN) }; }
-	Duration ?`d( double days ) { return (Duration)@{ days * (24LL * 60LL * 60LL * TIMEGRAN) }; }
-	Duration ?`w( int64_t weeks ) { return (Duration)@{ weeks * (7LL * 24LL * 60LL * 60LL * TIMEGRAN) }; }
-	Duration ?`w( double weeks ) { return (Duration)@{ weeks * (7LL * 24LL * 60LL * 60LL * TIMEGRAN) }; }
-
-	int64_t ?`ns( Duration dur ) { return dur.tv; }
-	int64_t ?`us( Duration dur ) { return dur.tv / (TIMEGRAN / 1_000_000LL); }
-	int64_t ?`ms( Duration dur ) { return dur.tv / (TIMEGRAN / 1_000LL); }
-	int64_t ?`s( Duration dur ) { return dur.tv / TIMEGRAN; }
-	int64_t ?`m( Duration dur ) { return dur.tv / (60LL * TIMEGRAN); }
-	int64_t ?`h( Duration dur ) { return dur.tv / (60LL * 60LL * TIMEGRAN); }
-	int64_t ?`d( Duration dur ) { return dur.tv / (24LL * 60LL * 60LL * TIMEGRAN); }
-	int64_t ?`w( Duration dur ) { return dur.tv / (7LL * 24LL * 60LL * 60LL * TIMEGRAN); }
-
-	Duration max( Duration lhs, Duration rhs ) { return  (lhs.tv < rhs.tv) ? rhs : lhs;}
-	Duration min( Duration lhs, Duration rhs ) { return !(rhs.tv < lhs.tv) ? lhs : rhs;}
-} // distribution
-
-//######################### C timeval #########################
-
-static inline {
-	void ?{}( timeval & t ) {}
-	void ?{}( timeval & t, time_t sec, suseconds_t usec ) { t.tv_sec = sec; t.tv_usec = usec; }
-	void ?{}( timeval & t, time_t sec ) { t{ sec, 0 }; }
-	void ?{}( timeval & t, zero_t ) { t{ 0, 0 }; }
-
-	timeval ?=?( timeval & t, zero_t ) { return t{ 0 }; }
-	timeval ?+?( timeval & lhs, timeval rhs ) { return (timeval)@{ lhs.tv_sec + rhs.tv_sec, lhs.tv_usec + rhs.tv_usec }; }
-	timeval ?-?( timeval & lhs, timeval rhs ) { return (timeval)@{ lhs.tv_sec - rhs.tv_sec, lhs.tv_usec - rhs.tv_usec }; }
-	_Bool ?==?( timeval lhs, timeval rhs ) { return lhs.tv_sec == rhs.tv_sec && lhs.tv_usec == rhs.tv_usec; }
-	_Bool ?!=?( timeval lhs, timeval rhs ) { return lhs.tv_sec != rhs.tv_sec || lhs.tv_usec != rhs.tv_usec; }
-} // distribution
-
-//######################### C timespec #########################
-
-static inline {
-	void ?{}( timespec & t ) {}
-	void ?{}( timespec & t, time_t sec, __syscall_slong_t nsec ) { t.tv_sec = sec; t.tv_nsec = nsec; }
-	void ?{}( timespec & t, time_t sec ) { t{ sec, 0}; }
-	void ?{}( timespec & t, zero_t ) { t{ 0, 0 }; }
-
-	timespec ?=?( timespec & t, zero_t ) { return t{ 0 }; }
-	timespec ?+?( timespec & lhs, timespec rhs ) { return (timespec)@{ lhs.tv_sec + rhs.tv_sec, lhs.tv_nsec + rhs.tv_nsec }; }
-	timespec ?-?( timespec & lhs, timespec rhs ) { return (timespec)@{ lhs.tv_sec - rhs.tv_sec, lhs.tv_nsec - rhs.tv_nsec }; }
-	_Bool ?==?( timespec lhs, timespec rhs ) { return lhs.tv_sec == rhs.tv_sec && lhs.tv_nsec == rhs.tv_nsec; }
-	_Bool ?!=?( timespec lhs, timespec rhs ) { return lhs.tv_sec != rhs.tv_sec || lhs.tv_nsec != rhs.tv_nsec; }
-} // distribution
-
-//######################### C itimerval #########################
-
-static inline {
-	void ?{}( itimerval & itv, Duration alarm ) with( itv ) {
-		// itimerval contains durations but but uses time data-structure timeval.
-		it_value{ alarm`s, (alarm % 1`s)`us };			// seconds, microseconds
-		it_interval{ 0 };								// 0 seconds, 0 microseconds
-	} // itimerval
-
-	void ?{}( itimerval & itv, Duration alarm, Duration interval ) with( itv ) {
-		// itimerval contains durations but but uses time data-structure timeval.
-		it_value{ alarm`s, (alarm % 1`s)`us };			// seconds, microseconds
-		it_interval{ interval`s, interval`us };			// seconds, microseconds
-	} // itimerval
-} // distribution
-
-//######################### Time #########################
-
-void ?{}( Time & time, int year, int month = 0, int day = 0, int hour = 0, int min = 0, int sec = 0, int nsec = 0 );
-static inline {
-	Time ?=?( Time & time, zero_t ) { return time{ 0 }; }
-
-	void ?{}( Time & time, timeval t ) with( time ) { tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_usec * 1000; }
-	Time ?=?( Time & time, timeval t ) with( time ) {
-		tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_usec * (TIMEGRAN / 1_000_000LL);
-		return time;
-	} // ?=?
-
-	void ?{}( Time & time, timespec t ) with( time ) { tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_nsec; }
-	Time ?=?( Time & time, timespec t ) with( time ) {
-		tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_nsec;
-		return time;
-	} // ?=?
-
-	Time ?+?( Time & lhs, Duration rhs ) { return (Time)@{ lhs.tv + rhs.tv }; }
-	Time ?+?( Duration lhs, Time rhs ) { return rhs + lhs; }
-	Time ?+=?( Time & lhs, Duration rhs ) { lhs = lhs + rhs; return lhs; }
-
-	Duration ?-?( Time lhs, Time rhs ) { return (Duration)@{ lhs.tv - rhs.tv }; }
-	Time ?-?( Time lhs, Duration rhs ) { return (Time)@{ lhs.tv - rhs.tv }; }
-	Time ?-=?( Time & lhs, Duration rhs ) { lhs = lhs - rhs; return lhs; }
-	_Bool ?==?( Time lhs, Time rhs ) { return lhs.tv == rhs.tv; }
-	_Bool ?!=?( Time lhs, Time rhs ) { return lhs.tv != rhs.tv; }
-	_Bool ?<?( Time lhs, Time rhs ) { return lhs.tv < rhs.tv; }
-	_Bool ?<=?( Time lhs, Time rhs ) { return lhs.tv <= rhs.tv; }
-	_Bool ?>?( Time lhs, Time rhs ) { return lhs.tv > rhs.tv; }
-	_Bool ?>=?( Time lhs, Time rhs ) { return lhs.tv >= rhs.tv; }
-} // distribution
-
-char * yy_mm_dd( Time time, char * buf );
-static inline char * ?`ymd( Time time, char * buf ) {	// short form
-	return yy_mm_dd( time, buf );
-} // ymd
-
-char * mm_dd_yy( Time time, char * buf );
-static inline char * ?`mdy( Time time, char * buf ) {	// short form
-	return mm_dd_yy( time, buf );
-} // mdy
-
-char * dd_mm_yy( Time time, char * buf );
-static inline char * ?`dmy( Time time, char * buf ) {	// short form
-	return dd_mm_yy( time, buf );;
-} // dmy
-
-size_t strftime( char * buf, size_t size, const char * fmt, Time time );
-
-//------------------------- timeval (cont) -------------------------
-
-static inline void ?{}( timeval & t, Time time ) with( t, time ) {
-	tv_sec = tv / TIMEGRAN;								// seconds
-	tv_usec = tv % TIMEGRAN / (TIMEGRAN / 1_000_000LL);	// microseconds
-} // ?{}
-
-//------------------------- timespec (cont) -------------------------
-
-static inline void ?{}( timespec & t, Time time ) with( t, time ) {
-	tv_sec = tv / TIMEGRAN;								// seconds
-	tv_nsec = tv % TIMEGRAN;							// nanoseconds
-} // ?{}
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/time.c
===================================================================
--- src/libcfa/time.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,161 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// time.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Mar 27 13:33:14 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun May  6 22:26:00 2018
-// Update Count     : 37
-// 
-
-#include "time"
-#include "iostream"
-#include <stdio.h>										// snprintf
-#include <assert.h>
-
-static char * nanomsd( long int ns, char * buf ) {		// most significant digits
-	snprintf( buf, 16, ".%09ld", ns );
-	int i;
-	for ( i = 9; buf[i] == '0' ; i -= 1 );				// find least significant digit
-	buf[i + 1] = '\0';
-	return buf;
-} // nanomsd
-
-
-//######################### Duration #########################
-
-
-forall( dtype ostype | ostream( ostype ) )
-ostype & ?|?( ostype & os, Duration dur ) with( dur ) {
-	os | tv / TIMEGRAN;									// print seconds
-	long int ns = (tv < 0 ? -tv : tv) % TIMEGRAN;		// compute nanoseconds
-	if ( ns != 0 ) {									// some ?
-		char buf[16];
-		os | nanomsd( ns, buf );						// print nanoseconds
-	} // if
-	return os;
-} // ?|?
-
-
-//######################### Time #########################
-
-
-#ifdef __CFA_DEBUG__
-#define CreateFmt "Attempt to create Time( year=%d (>=1970), month=%d (1-12), day=%d (1-31), hour=%d (0-23), min=%d (0-59), sec=%d (0-60), nsec=%d (0-999_999_999), " \
-	"which exceeds range 00:00:00 UTC, January 1, 1970 to 03:14:07 UTC, January 19, 2038."
-#endif // __CFA_DEBUG__
-
-void ?{}( Time & time, int year, int month, int day, int hour, int min, int sec, int nsec ) with( time ) {
-	tm tm;
-
-	tm.tm_isdst = -1;									// let mktime determine if alternate timezone is in effect
-	tm.tm_year = year - 1900;							// mktime uses 1900 as its starting point
-#ifdef __CFA_DEBUG__
-	if ( month < 1 || 12 < month ) {
-		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
-	} // if
-#endif // __CFA_DEBUG__
-	tm.tm_mon = month - 1;								// mktime uses range 0-11
-#ifdef __CFA_DEBUG__
-	if ( day < 1 || 31 < day ) {
-		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
-	} // if
-#endif // __CFA_DEBUG__
-	tm.tm_mday = day;									// mktime uses range 1-31
-	tm.tm_hour = hour;
-	tm.tm_min = min;
-	tm.tm_sec = sec;
-	time_t epochsec = mktime( &tm );
-#ifdef __CFA_DEBUG__
-	if ( epochsec == (time_t)-1 ) {
-		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
-	} // if
-#endif // __CFA_DEBUG__
-	tv = (int64_t)(epochsec) * TIMEGRAN + nsec;			// convert to nanoseconds
-#ifdef __CFA_DEBUG__
-	if ( tv > 2147483647LL * TIMEGRAN ) {				// between 00:00:00 UTC, January 1, 1970 and 03:14:07 UTC, January 19, 2038.
-		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
-	} // if
-#endif // __CFA_DEBUG__
-} // ?{}
-
-char * yy_mm_dd( Time time, char * buf ) with( time ) {
-	time_t s = tv / TIMEGRAN;
-	tm tm;
-	gmtime_r( &s, &tm );								// tm_mon <= 11, tm_mday <= 31
-#if defined(__GNUC__) && __GNUC__ >= 7
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wformat-truncation"
-#endif
-	snprintf( buf, 9, "%02d/%02d/%02d", tm.tm_year % 99, tm.tm_mon + 1, tm.tm_mday );
-#if defined(__GNUC__) && __GNUC__ >= 7
-#pragma GCC diagnostic pop
-#endif
-	return buf;
-} // yy_mm_dd
-
-char * mm_dd_yy( Time time, char * buf ) with( time ) {
-	time_t s = tv / TIMEGRAN;
-	tm tm;
-	gmtime_r( &s, &tm );								// tm_mon <= 11, tm_mday <= 31
-#if defined(__GNUC__) && __GNUC__ >= 7
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wformat-truncation"
-#endif
-	snprintf( buf, 9, "%02d/%02d/%02d", tm.tm_mon + 1, tm.tm_mday, tm.tm_year % 99 );
-#if defined(__GNUC__) && __GNUC__ >= 7
-#pragma GCC diagnostic pop
-#endif
-	return buf;
-} // mm_dd_yy
-
-char * dd_mm_yy( Time time, char * buf ) with( time ) {
-	time_t s = tv / TIMEGRAN;
-	tm tm;
-	gmtime_r( &s, &tm );								// tm_mon <= 11, tm_mday <= 31
-#if defined(__GNUC__) && __GNUC__ >= 7
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wformat-truncation"
-#endif
-	snprintf( buf, 9, "%02d/%02d/%02d", tm.tm_mday, tm.tm_mon + 1, tm.tm_year % 99 );
-#if defined(__GNUC__) && __GNUC__ >= 7
-#pragma GCC diagnostic pop
-#endif
-	return buf;
-} // dd_mm_yy
-
-size_t strftime( char * buf, size_t size, const char * fmt, Time time ) with( time ) {
-	time_t s = tv / TIMEGRAN;
-	tm tm;
-	gmtime_r( &s, &tm );
-	return strftime( buf, size, fmt, &tm );
-} // strftime
-
-forall( dtype ostype | ostream( ostype ) )
-ostype & ?|?( ostype & os, Time time ) with( time ) {
-	char buf[32];										// at least 26
-	time_t s = tv / TIMEGRAN;
-    ctime_r( &s, (char *)&buf );						// 26 characters: "Wed Jun 30 21:49:08 1993\n"
-	buf[24] = '\0';										// remove trailing '\n'
-	long int ns = (tv < 0 ? -tv : tv) % TIMEGRAN;		// compute nanoseconds
-	if ( ns == 0 ) {									// none ?
-		os | buf;										// print date/time/year
-	} else {
-		buf[19] = '\0';									// truncate to "Wed Jun 30 21:49:08"
-		os | buf;										// print date/time
-		char buf2[16];
-		nanomsd( ns, buf2 );							// compute nanoseconds
-		os | buf2 | ' ' | &buf[20];						// print nanoseconds and year
-	} // if
-	return os;
-} // ?|?
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/time_t.h
===================================================================
--- src/libcfa/time_t.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,41 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// time_t.h -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Apr 10 14:42:03 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Apr 13 07:51:47 2018
-// Update Count     : 6
-// 
-
-#pragma once
-
-
-//######################### Duration #########################
-
-struct Duration {										// private
-	int64_t tv;											// nanoseconds
-}; // Duration
-
-static inline void ?{}( Duration & dur ) with( dur ) { tv = 0; }
-static inline void ?{}( Duration & dur, zero_t ) with( dur ) { tv = 0; }
-
-
-//######################### Time #########################
-
-struct Time {											// private
-	uint64_t tv;										// nanoseconds since UNIX epoch
-}; // Time
-
-static inline void ?{}( Time & time ) with( time ) { tv = 0; }
-static inline void ?{}( Time & time, zero_t ) with( time ) { tv = 0; }
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/libcfa/virtual.c
===================================================================
--- src/libcfa/virtual.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,31 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// virtual.c --
-//
-// Author           : Andrew Beach
-// Created On       : Tus Jul 11 15:10:00 2017
-// Last Modified By : Andrew Beach
-// Last Modified On : Wed Jul 26 14:24:00 2017
-// Update Count     : 1
-//
-
-#include "virtual.h"
-
-int __cfa__is_parent( struct __cfa__parent_vtable const * parent,
-    	struct __cfa__parent_vtable const * child ) {
-	do {
-		if ( parent == child )
-			return 1;
-		child = child->parent;
-	} while ( child );
-	return 0;
-}
-
-void * __cfa__virtual_cast( struct __cfa__parent_vtable const * parent,
-    	struct __cfa__parent_vtable const * const * child ) {
-	return (__cfa__is_parent(parent, *child)) ? (void *)child : (void *)0;
-}
Index: c/libcfa/virtual.h
===================================================================
--- src/libcfa/virtual.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,39 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// virtual.h -- Builtins for hierarchy objects.
-//
-// Author           : Andrew Beach
-// Created On       : Tus Jul 11 15:08:00 2017
-// Last Modified By : Andrew Beach
-// Last Modified On : Wed Jul 26 14:18:00 2017
-// Update Count     : 1
-//
-
-#pragma once
-
-#ifdef __cforall
-extern "C" {
-#endif
-
-// All strict/explicate vtables should have this head, showing their parent.
-struct __cfa__parent_vtable {
-    struct __cfa__parent_vtable const * const parent;
-};
-
-// Takes in two non-null pointers to type_objects.
-int __cfa__is_parent( struct __cfa__parent_vtable const * parent,
-		struct __cfa__parent_vtable const * child );
-
-// If parent is a parent of child then return child, otherwise return NULL.
-// Input pointers are none-null, child's first level should be an object with
-// a vtable
-void * __cfa__virtual_cast( struct __cfa__parent_vtable const * parent,
-		struct __cfa__parent_vtable const * const * child );
-
-#ifdef __cforall
-}
-#endif
Index: src/main.cc
===================================================================
--- src/main.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ src/main.cc	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -73,4 +73,6 @@
 DeclarationNode * parseTree = nullptr;					// program parse tree
 
+std::string PreludeDirector = "";
+
 static void parse_cmdline( int argc, char *argv[], const char *& filename );
 static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit = false );
@@ -182,11 +184,13 @@
 			// -l is for initial build ONLY and builtins.cf is not in the lib directory so access it here.
 
+			assertf( !PreludeDirector.empty(), "Can't find prelude without option --prelude-dir must be used." );
+
 			// Read to gcc builtins, if not generating the cfa library
-			FILE * gcc_builtins = fopen( buildingLibrary() ? "../prelude/gcc-builtins.cf" : CFA_LIBDIR "/gcc-builtins.cf", "r" );
+			FILE * gcc_builtins = fopen( (PreludeDirector + "/gcc-builtins.cf").c_str(), "r" );
 			assertf( gcc_builtins, "cannot open gcc-builtins.cf\n" );
 			parse( gcc_builtins, LinkageSpec::Compiler );
 
 			// read the extra prelude in, if not generating the cfa library
-			FILE * extras = fopen( buildingLibrary() ? "../prelude/extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
+			FILE * extras = fopen( (PreludeDirector + "/extras.cf").c_str(), "r" );
 			assertf( extras, "cannot open extras.cf\n" );
 			parse( extras, LinkageSpec::BuiltinC );
@@ -194,10 +198,10 @@
 			if ( ! libcfap ) {
 				// read the prelude in, if not generating the cfa library
-				FILE * prelude = fopen( buildingLibrary() ? "../prelude/prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
+				FILE * prelude = fopen( (PreludeDirector + "/prelude.cf").c_str(), "r" );
 				assertf( prelude, "cannot open prelude.cf\n" );
 				parse( prelude, LinkageSpec::Intrinsic );
 
 				// Read to cfa builtins, if not generating the cfa library
-				FILE * builtins = fopen( buildingLibrary() ? "../prelude/builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
+				FILE * builtins = fopen( (PreludeDirector + "/builtins.cf").c_str(), "r" );
 				assertf( builtins, "cannot open builtins.cf\n" );
 				parse( builtins, LinkageSpec::BuiltinCFA );
@@ -323,5 +327,5 @@
 		PASS( "codegen", CodeGen::generate( translationUnit, *output, ! noprotop, prettycodegenp, true, linemarks ) );
 
-		CodeGen::FixMain::fix( *output, treep ? "../prelude/bootloader.c" : CFA_LIBDIR "/bootloader.c" );
+		CodeGen::FixMain::fix( *output, (PreludeDirector + "/bootloader.c").c_str() );
 		if ( output != &cout ) {
 			delete output;
@@ -372,5 +376,5 @@
 
 void parse_cmdline( int argc, char * argv[], const char *& filename ) {
-	enum { Ast, Bbox, Bresolver, CtorInitFix, DeclStats, Expr, ExprAlt, Grammar, LibCFA, Linemarks, Nolinemarks, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, TupleExpansion, Validate, };
+	enum { Ast, Bbox, Bresolver, CtorInitFix, DeclStats, Expr, ExprAlt, Grammar, LibCFA, Linemarks, Nolinemarks, Nopreamble, Parse, PreludeDir, Prototypes, Resolver, Symbol, Tree, TupleExpansion, Validate, };
 
 	static struct option long_opts[] = {
@@ -388,4 +392,5 @@
 		{ "no-preamble", no_argument, 0, Nopreamble },
 		{ "parse", no_argument, 0, Parse },
+		{ "prelude-dir", required_argument, 0, PreludeDir },
 		{ "no-prototypes", no_argument, 0, Prototypes },
 		{ "resolver", no_argument, 0, Resolver },
@@ -460,4 +465,7 @@
 		  case 'p':										// generate prototypes for preamble functions
 			noprotop = true;
+			break;
+		  case PreludeDir:
+		  	PreludeDirector = optarg;
 			break;
 		  case 'm':										// don't replace the main
Index: c/prelude/Makefile.am
===================================================================
--- src/prelude/Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,69 +1,0 @@
-######################## -*- Mode: Makefile-Automake -*- ######################
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.am --
-##
-## Author           : Peter A. Buhr
-## Created On       : Sun May 31 08:54:01 2015
-## Last Modified By : Peter A. Buhr
-## Last Modified On : Wed Dec 14 15:00:35 2016
-## Update Count     : 205
-###############################################################################
-
-# create object files in directory with source files
-AUTOMAKE_OPTIONS = subdir-objects
-
-# put into lib for now
-cfalibdir = ${CFA_LIBDIR}
-cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cf bootloader.c
-noinst_DATA = ../libcfa/libcfa-prelude.c
-
-CC = @CFACC@
-
-$(DEPDIR) :
-	mkdir $(DEPDIR)
-
-$(DEPDIR)/builtins.Po : $(DEPDIR)
-	touch ${@}
-
-# create extra forward types/declarations to reduce inclusion of library files
-extras.cf : ${srcdir}/extras.regx ${srcdir}/extras.c
-	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f ${srcdir}/extras.regx > extras.cf
-
-# create forward declarations for gcc builtins
-gcc-builtins.cf : gcc-builtins.c ${srcdir}/prototypes.sed
-	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -I${srcdir} -E -P $< | sed -r -f ${srcdir}/prototypes.sed > $@
-
-gcc-builtins.c : ${srcdir}/builtins.def ${srcdir}/prototypes.awk ${srcdir}/sync-builtins.cf ${srcdir}/prototypes.c
-	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -I${srcdir} -E ${srcdir}/prototypes.c | awk -f ${srcdir}/prototypes.awk > $@
-
-prelude.cf : prelude-gen.cc
-	${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${<} -o prelude-gen -Wall -Wextra -O2 -g -std=c++14
-	@./prelude-gen > $@
-	@rm ./prelude-gen
-
-builtins.def :
-
-prototypes.awk :
-
-# create forward declarations for cfa builtins
-builtins.cf : builtins.c ${CC}
-	${AM_V_GEN}${CC} -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po
-	${AM_V_at}sed -i 's/builtins.o/builtins.cf/g' $(DEPDIR)/builtins.Po
-
-include $(DEPDIR)/builtins.Po
-
-../libcfa/libcfa-prelude.c : prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
-	${AM_V_GEN}@CFACPP@ -l prelude.cf $@  # use src/cfa-cpp as not in lib until after install
-
-bootloader.c : ${srcdir}/bootloader.cf prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
-	${AM_V_GEN}@CFACPP@ -tpm ${srcdir}/bootloader.cf $@  # use src/cfa-cpp as not in lib until after install
-
-maintainer-clean-local :
-	rm -rf $(DEPDIR)
-
-MAINTAINERCLEANFILES = gcc-builtins.c gcc-builtins.cf builtins.cf extras.cf bootloader.c prelude.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
Index: c/prelude/Makefile.in
===================================================================
--- src/prelude/Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,544 +1,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-######################## -*- Mode: Makefile-Automake -*- ######################
-###############################################################################
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src/prelude
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(cfalibdir)"
-DATA = $(cfalib_DATA) $(noinst_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BACKEND_CC = @BACKEND_CC@
-BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
-CC = @CFACC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFACC = @CFACC@
-CFACPP = @CFACPP@
-CFA_BACKEND_CC = @CFA_BACKEND_CC@
-CFA_BINDIR = @CFA_BINDIR@
-CFA_FLAGS = @CFA_FLAGS@
-CFA_INCDIR = @CFA_INCDIR@
-CFA_LIBDIR = @CFA_LIBDIR@
-CFA_NAME = @CFA_NAME@
-CFA_PREFIX = @CFA_PREFIX@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DRIVER_DIR = @DRIVER_DIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-# create object files in directory with source files
-AUTOMAKE_OPTIONS = subdir-objects
-
-# put into lib for now
-cfalibdir = ${CFA_LIBDIR}
-cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cf bootloader.c
-noinst_DATA = ../libcfa/libcfa-prelude.c
-MAINTAINERCLEANFILES = gcc-builtins.c gcc-builtins.cf builtins.cf extras.cf bootloader.c prelude.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/prelude/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/prelude/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-cfalibDATA: $(cfalib_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(cfalibdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(cfalibdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cfalibdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(cfalibdir)" || exit $$?; \
-	done
-
-uninstall-cfalibDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(cfalibdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-cfalibDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic \
-	maintainer-clean-local
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-cfalibDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
-	ctags-am distclean distclean-generic distdir dvi dvi-am html \
-	html-am info info-am install install-am install-cfalibDATA \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic maintainer-clean-local mostlyclean \
-	mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-cfalibDATA
-
-.PRECIOUS: Makefile
-
-
-$(DEPDIR) :
-	mkdir $(DEPDIR)
-
-$(DEPDIR)/builtins.Po : $(DEPDIR)
-	touch ${@}
-
-# create extra forward types/declarations to reduce inclusion of library files
-extras.cf : ${srcdir}/extras.regx ${srcdir}/extras.c
-	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f ${srcdir}/extras.regx > extras.cf
-
-# create forward declarations for gcc builtins
-gcc-builtins.cf : gcc-builtins.c ${srcdir}/prototypes.sed
-	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -I${srcdir} -E -P $< | sed -r -f ${srcdir}/prototypes.sed > $@
-
-gcc-builtins.c : ${srcdir}/builtins.def ${srcdir}/prototypes.awk ${srcdir}/sync-builtins.cf ${srcdir}/prototypes.c
-	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -I${srcdir} -E ${srcdir}/prototypes.c | awk -f ${srcdir}/prototypes.awk > $@
-
-prelude.cf : prelude-gen.cc
-	${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${<} -o prelude-gen -Wall -Wextra -O2 -g -std=c++14
-	@./prelude-gen > $@
-	@rm ./prelude-gen
-
-builtins.def :
-
-prototypes.awk :
-
-# create forward declarations for cfa builtins
-builtins.cf : builtins.c ${CC}
-	${AM_V_GEN}${CC} -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po
-	${AM_V_at}sed -i 's/builtins.o/builtins.cf/g' $(DEPDIR)/builtins.Po
-
-include $(DEPDIR)/builtins.Po
-
-../libcfa/libcfa-prelude.c : prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
-	${AM_V_GEN}@CFACPP@ -l prelude.cf $@  # use src/cfa-cpp as not in lib until after install
-
-bootloader.c : ${srcdir}/bootloader.cf prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
-	${AM_V_GEN}@CFACPP@ -tpm ${srcdir}/bootloader.cf $@  # use src/cfa-cpp as not in lib until after install
-
-maintainer-clean-local :
-	rm -rf $(DEPDIR)
-
-# 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.
-.NOEXPORT:
Index: c/prelude/bootloader.cf
===================================================================
--- src/prelude/bootloader.cf	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,5 +1,0 @@
-extern "C" { static inline int invoke_main(int argc, char* argv[], char* envp[]); }
-
-int main(int argc, char* argv[], char* envp[]) {
-	return invoke_main(argc, argv, envp);
-}
Index: c/prelude/builtins.c
===================================================================
--- src/prelude/builtins.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,116 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// builtins.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Fri Jul 21 16:21:03 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  8 12:47:59 2018
-// Update Count     : 19
-//
-
-// exception implementation
-
-typedef unsigned long long __cfaabi_abi_exception_type_t;
-
-#include "../libcfa/virtual.h"
-#include "../libcfa/exception.h"
-
-void exit( int status, const char fmt[], ... ) __attribute__ (( format(printf, 2, 3), __nothrow__, __leaf__, __noreturn__ ));
-void abort ( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
-
-// increment/decrement unification
-
-static inline forall( dtype T | { T& ?+=?( T&, one_t ); } )
-T& ++? ( T& x ) { return x += 1; }
-
-static inline forall( dtype T | sized(T) | { void ?{}( T&, T ); void ^?{}( T& ); T& ?+=?( T&, one_t ); } )
-T& ?++ ( T& x ) { T tmp = x; x += 1; return tmp; }
-
-static inline forall( dtype T | { T& ?-=?( T&, one_t ); } )
-T& --? ( T& x ) { return x -= 1; }
-
-static inline forall( dtype T | sized(T) | { void ?{}( T&, T ); void ^?{}( T& ); T& ?-=?( T&, one_t ); } )
-T& ?-- ( T& x ) { T tmp = x; x -= 1; return tmp; }
-
-// exponentiation operator implementation
-
-extern "C" {
-	float powf( float x, float y );
-	double pow( double x, double y );
-	long double powl( long double x, long double y );
-	float _Complex cpowf( float _Complex x, _Complex float z );
-	double _Complex cpow( double _Complex x, _Complex double z );
-	long double _Complex cpowl( long double _Complex x, _Complex long double z );
-} // extern "C"
-
-static inline float ?\?( float x, float y ) { return powf( x, y ); }
-static inline double ?\?( double x, double y ) { return pow( x, y ); }
-static inline long double ?\?( long double x, long double y ) { return powl( x, y ); }
-static inline float _Complex ?\?( float _Complex x, _Complex float y ) { return cpowf(x, y ); }
-static inline double _Complex ?\?( double _Complex x, _Complex double y ) { return cpow( x, y ); }
-static inline long double _Complex ?\?( long double _Complex x, _Complex long double y ) { return cpowl( x, y ); }
-
-static inline long int ?\?( long int ep, unsigned long int y ) { // disallow negative exponent
-	if ( y == 0 ) return 1;								// base case
-	if ( ep == 2 ) return ep << (y - 1);				// special case, positive shifting only
-	typeof( ep ) op = 1;								// accumulate odd product
-	for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
-		if ( (y & 1) == 1 ) op *= ep;					// odd ?
-		ep *= ep;
-	} // for
-	return ep * op;
-} // ?\?
-
-static inline forall( otype T | { void ?{}( T & this, one_t ); T ?*?( T, T ); } )
-T ?\?( T ep, unsigned long int y ) {
-	if ( y == 0 ) return 1;
-	T op = 1;
-	for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
-		if ( (y & 1) == 1 ) op = op * ep;				// odd ?
-		ep = ep * ep;
-	} // for
-	return ep * op;
-} // ?\?
-
-// unsigned computation may be faster and larger
-static inline unsigned long int ?\?( unsigned long int ep, unsigned long int y ) { // disallow negative exponent
-	if ( y == 0 ) return 1;								// base case
-	if ( ep == 2 ) return ep << (y - 1);				// special case, positive shifting only
-	typeof( ep ) op = 1;								// accumulate odd product
-	for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
-		if ( (y & 1) == 1 ) op *= ep;					// odd ?
-		ep *= ep;
-	} // for
-	return ep * op;
-} // ?\?
-
-static inline double ?\?( long int x, signed long int y ) {	// allow negative exponent
-	if ( y >=  0 ) return (double)(x \ (unsigned long int)y);
-	else return 1.0 / x \ (unsigned int)(-y);
-} // ?\?
-
-// FIXME (x \ (unsigned long int)y) relies on X ?\?(T, unsigned long) a function that is neither
-// defined, nor passed as an assertion parameter. Without user-defined conversions, cannot specify
-// X as a type that casts to double, yet it doesn't make sense to write functions with that type
-// signature where X is double.
-
-// static inline forall( otype T | { void ?{}( T & this, one_t ); T ?*?( T, T ); double ?/?( double, T ); } )
-// double ?\?( T x, signed long int y ) {
-//     if ( y >=  0 ) return (double)(x \ (unsigned long int)y);
-//     else return 1.0 / x \ (unsigned long int)(-y);
-// } // ?\?
-
-static inline long int ?\=?( long int & x, unsigned long int y ) { x = x \ y; return x; }
-static inline unsigned long int ?\=?( unsigned long int & x, unsigned long int y ) { x = x \ y; return x; }
-static inline int ?\=?( int & x, unsigned long int y ) { x = x \ y; return x; }
-static inline unsigned int ?\=?( unsigned int & x, unsigned long int y ) { x = x \ y; return x; }
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// End: //
Index: c/prelude/builtins.def
===================================================================
--- src/prelude/builtins.def	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,953 +1,0 @@
-/* This file contains the definitions and documentation for the
-   builtins used in the GNU compiler.
-   Copyright (C) 2000-2016 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-/* Before including this file, you should define a macro:
-
-     DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,
-                  FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND)
-
-   This macro will be called once for each builtin function.  The
-   ENUM will be of type `enum built_in_function', and will indicate
-   which builtin function is being processed.  The NAME of the builtin
-   function (which will always start with `__builtin_') is a string
-   literal.  The CLASS is of type `enum built_in_class' and indicates
-   what kind of builtin is being processed.
-
-   Some builtins are actually two separate functions.  For example,
-   for `strcmp' there are two builtin functions; `__builtin_strcmp'
-   and `strcmp' itself.  Both behave identically.  Other builtins
-   define only the `__builtin' variant.  If BOTH_P is TRUE, then this
-   builtin has both variants; otherwise, it is has only the first
-   variant.
-
-   TYPE indicates the type of the function.  The symbols correspond to
-   enumerals from builtin-types.def.  If BOTH_P is true, then LIBTYPE
-   is the type of the non-`__builtin_' variant.  Otherwise, LIBTYPE
-   should be ignored.
-
-   If FALLBACK_P is true then, if for some reason, the compiler cannot
-   expand the builtin function directly, it will call the
-   corresponding library function (which does not have the
-   `__builtin_' prefix.
-
-   If NONANSI_P is true, then the non-`__builtin_' variant is not an
-   ANSI/ISO library function, and so we should pretend it does not
-   exist when compiling in ANSI conformant mode.
-
-   ATTRs is an attribute list as defined in builtin-attrs.def that
-   describes the attributes of this builtin function.
-
-   IMPLICIT specifies condition when the builtin can be produced by
-   compiler.  For instance C90 reserves floorf function, but does not
-   define it's meaning.  When user uses floorf we may assume that the
-   floorf has the meaning we expect, but we can't produce floorf by
-   simplifying floor((double)float) since the runtime need not implement
-   it.
-
-   The builtins is registered only if COND is true.  */
-
-/* A macro for builtins where the
-   BUILT_IN_*_CHKP = BUILT_IN_* + BEGIN_CHKP_BUILTINS + 1
-   enums should be defined too.  */
-#ifndef DEF_BUILTIN_CHKP
-#define DEF_BUILTIN_CHKP(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,	\
-			 FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND)	\
-  DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P,	\
-	      NONANSI_P, ATTRS, IMPLICIT, COND)
-#endif
-
-/* A GCC builtin (like __builtin_saveregs) is provided by the
-   compiler, but does not correspond to a function in the standard
-   library.  */
-#undef DEF_GCC_BUILTIN
-#define DEF_GCC_BUILTIN(ENUM, NAME, TYPE, ATTRS)		\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,	\
-	       false, false, false, ATTRS, true, true)
-
-/* Like DEF_GCC_BUILTIN, except we don't prepend "__builtin_".  */
-#undef DEF_SYNC_BUILTIN
-#define DEF_SYNC_BUILTIN(ENUM, NAME, TYPE, ATTRS)		\
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,	\
-	       false, false, false, ATTRS, true, true)
-
-/* A library builtin (like __builtin_strchr) is a builtin equivalent
-   of an ANSI/ISO standard library function.  In addition to the
-   `__builtin' version, we will create an ordinary version (e.g,
-   `strchr') as well.  If we cannot compute the answer using the
-   builtin function, we will fall back to the standard library
-   version.  */
-#undef DEF_LIB_BUILTIN
-#define DEF_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, false, ATTRS, true, true)
-#undef DEF_LIB_BUILTIN_CHKP
-#define DEF_LIB_BUILTIN_CHKP(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE,	\
-		    TYPE, true, true, false, ATTRS, true, true)
-
-/* Like DEF_LIB_BUILTIN, except that the function is not one that is
-   specified by ANSI/ISO C.  So, when we're being fully conformant we
-   ignore the version of these builtins that does not begin with
-   __builtin.  */
-#undef DEF_EXT_LIB_BUILTIN
-#define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, true, ATTRS, false, true)
-#undef DEF_EXT_LIB_BUILTIN_CHKP
-#define DEF_EXT_LIB_BUILTIN_CHKP(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE,	\
-		    TYPE, true, true, true, ATTRS, false, true)
-
-/* Like DEF_LIB_BUILTIN, except that the function is only a part of
-   the standard in C94 or above.  */
-#undef DEF_C94_BUILTIN
-#define DEF_C94_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc94, ATTRS, targetm.libc_has_function (function_c94), true)
-
-/* Like DEF_LIB_BUILTIN, except that the function is only a part of
-   the standard in C99 or above.  */
-#undef DEF_C99_BUILTIN
-#define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
-
-/* Like DEF_LIB_BUILTIN, except that the function is only a part of
-   the standard in C11 or above.  */
-#undef DEF_C11_BUILTIN
-#define DEF_C11_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc11, ATTRS, targetm.libc_has_function (function_c11_misc), true)
-
-/* Like DEF_C99_BUILTIN, but for complex math functions.  */
-#undef DEF_C99_COMPL_BUILTIN
-#define DEF_C99_COMPL_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_math_complex), true)
-
-/* Builtin that is specified by C99 and C90 reserve the name for future use.
-   We can still recognize the builtin in C90 mode but we can't produce it
-   implicitly.  */
-#undef DEF_C99_C90RES_BUILTIN
-#define DEF_C99_C90RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
-
-/* Builtin that C99 reserve the name for future use. We can still recognize
-   the builtin in C99 mode but we can't produce it implicitly.  */
-#undef DEF_EXT_C99RES_BUILTIN
-#define DEF_EXT_C99RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
-	      true, true, true, ATTRS, false, true)
-
-/* Allocate the enum and the name for a builtin, but do not actually
-   define it here at all.  */
-#undef DEF_BUILTIN_STUB
-#define DEF_BUILTIN_STUB(ENUM, NAME) \
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_LAST, BT_LAST, false, false, \
-	       false, ATTR_LAST, false, false)
-
-/* Builtin used by the implementation of OpenACC and OpenMP.  Few of these are
-   actually implemented in the compiler; most are in libgomp.  */
-/* These builtins also need to be enabled in offloading compilers invoked from
-   mkoffload; for that purpose, we're checking the -foffload-abi flag here.  */
-#undef DEF_GOACC_BUILTIN
-#define DEF_GOACC_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-	       false, true, true, ATTRS, false, \
-	       (flag_openacc \
-		|| flag_offload_abi != OFFLOAD_ABI_UNSET))
-#undef DEF_GOACC_BUILTIN_COMPILER
-#define DEF_GOACC_BUILTIN_COMPILER(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-	       flag_openacc, true, true, ATTRS, false, true)
-#undef DEF_GOMP_BUILTIN
-#define DEF_GOMP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-               false, true, true, ATTRS, false, \
-	       (flag_openacc \
-		|| flag_openmp \
-		|| flag_tree_parallelize_loops > 1 \
-		|| flag_cilkplus \
-		|| flag_offload_abi != OFFLOAD_ABI_UNSET))
-
-/* Builtin used by implementation of Cilk Plus.  Most of these are decomposed
-   by the compiler but a few are implemented in libcilkrts.  */
-#undef DEF_CILK_BUILTIN_STUB
-#define DEF_CILK_BUILTIN_STUB(ENUM, NAME) \
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_LAST, BT_LAST, false, false, \
-	       false, ATTR_LAST, false, false)
-
-/* Builtin used by the implementation of GNU TM.  These
-   functions are mapped to the actual implementation of the STM library. */
-#undef DEF_TM_BUILTIN
-#define DEF_TM_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-	       true, true, true, ATTRS, false, flag_tm)
-
-/* Builtin used by the implementation of libsanitizer. These
-   functions are mapped to the actual implementation of the
-   libtsan library. */
-#undef DEF_SANITIZER_BUILTIN
-#define DEF_SANITIZER_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-	       true, true, true, ATTRS, true, \
-	      (flag_sanitize & (SANITIZE_ADDRESS | SANITIZE_THREAD \
-				| SANITIZE_UNDEFINED | SANITIZE_NONDEFAULT) \
-	       || flag_sanitize_coverage))
-
-#undef DEF_CILKPLUS_BUILTIN
-#define DEF_CILKPLUS_BUILTIN(ENUM, NAME, TYPE, ATTRS)  \
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_FN_INT_VAR, BT_LAST, \
-  	       false, false, false, ATTRS, false, flag_cilkplus)
-
-/* Builtin used by the implementation of Pointer Bounds Checker.  */
-#undef DEF_CHKP_BUILTIN
-#define DEF_CHKP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE,	\
-		    TYPE, true, true, false, ATTRS, true, true)
-
-/* Define an attribute list for math functions that are normally
-   "impure" because some of them may write into global memory for
-   `errno'.  If !flag_errno_math they are instead "const".  */
-#undef ATTR_MATHFN_ERRNO
-#define ATTR_MATHFN_ERRNO (flag_errno_math ? \
-	ATTR_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
-
-/* Define an attribute list for math functions that are normally
-   "const" but if flag_rounding_math is set they are instead "pure".
-   This distinction accounts for the fact that some math functions
-   check the rounding mode which is akin to examining global
-   memory.  */
-#undef ATTR_MATHFN_FPROUNDING
-#define ATTR_MATHFN_FPROUNDING (flag_rounding_math ? \
-	ATTR_PURE_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
-
-/* Define an attribute list for math functions that are normally
-   "impure" because some of them may write into global memory for
-   `errno'.  If !flag_errno_math, we can possibly use "pure" or
-   "const" depending on whether we care about FP rounding.  */
-#undef ATTR_MATHFN_FPROUNDING_ERRNO
-#define ATTR_MATHFN_FPROUNDING_ERRNO (flag_errno_math ? \
-	ATTR_NOTHROW_LEAF_LIST : ATTR_MATHFN_FPROUNDING)
-
-/* Define an attribute list for math functions that need to mind FP
-   rounding, but because they store into memory they are never "const"
-   or "pure".  Use of this macro is mainly for documentation and
-   maintenance purposes.  */
-#undef ATTR_MATHFN_FPROUNDING_STORE
-#define ATTR_MATHFN_FPROUNDING_STORE ATTR_NOTHROW_LEAF_LIST
-
-/* Define an attribute list for leaf functions that do not throw
-   exceptions normally, but may throw exceptions when using
-   -fnon-call-exceptions.  */
-#define ATTR_NOTHROWCALL_LEAF_LIST (flag_non_call_exceptions ? \
-	ATTR_LEAF_LIST : ATTR_NOTHROW_LEAF_LIST)
-
-/* Make sure 0 is not a legitimate builtin.  */
-DEF_BUILTIN_STUB(BUILT_IN_NONE, (const char *)0)
-
-/* Category: math builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_ACOS, "acos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSF, "acosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ACOSH, "acosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ACOSHF, "acoshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ACOSHL, "acoshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, "acosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C11_BUILTIN        (BUILT_IN_ALIGNED_ALLOC, "aligned_alloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ASIN, "asin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, "asinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ASINH, "asinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ASINHF, "asinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ASINHL, "asinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINL, "asinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_ATAN, "atan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_ATAN2, "atan2", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2F, "atan2f", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2L, "atan2l", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANF, "atanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ATANH, "atanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ATANHF, "atanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ATANHL, "atanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANL, "atanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_CBRT, "cbrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_CBRTF, "cbrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_CBRTL, "cbrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_CEIL, "ceil", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILF, "ceilf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILL, "ceill", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_COPYSIGN, "copysign", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNF, "copysignf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNL, "copysignl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_COS, "cos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSF, "cosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_COSH, "cosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHF, "coshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHL, "coshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSL, "cosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREM, "drem", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREMF, "dremf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREML, "dreml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERF, "erf", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ERFC, "erfc", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERFCF, "erfcf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERFCL, "erfcl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERFF, "erff", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ERFL, "erfl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_EXP, "exp", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10, "exp10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10F, "exp10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10L, "exp10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXP2, "exp2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXP2F, "exp2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXP2L, "exp2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPF, "expf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPL, "expl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXPM1, "expm1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXPM1F, "expm1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXPM1L, "expm1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_FABS, "fabs", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSF, "fabsf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSL, "fabsl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FABSD32, "fabsd32", BT_FN_DFLOAT32_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FABSD64, "fabsd64", BT_FN_DFLOAT64_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FABSD128, "fabsd128", BT_FN_DFLOAT128_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FDIM, "fdim", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_FDIMF, "fdimf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_FDIML, "fdiml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_FLOOR, "floor", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORF, "floorf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORL, "floorl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMA, "fma", BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_FMAF, "fmaf", BT_FN_FLOAT_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_FMAL, "fmal", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_FMAX, "fmax", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMAXF, "fmaxf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMAXL, "fmaxl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMIN, "fmin", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMINF, "fminf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMINL, "fminl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FMOD, "fmod", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODF, "fmodf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODL, "fmodl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_FREXP, "frexp", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPF, "frexpf", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPL, "frexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA, "gamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF, "gammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL, "gammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA_R, "gamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF_R, "gammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL_R, "gammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VAL, "huge_val", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALF, "huge_valf", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALL, "huge_vall", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_HYPOT, "hypot", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_HYPOTF, "hypotf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_HYPOTL, "hypotl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_ICEIL, "iceil", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ICEILF, "iceilf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ICEILL, "iceill", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IFLOOR, "ifloor", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IFLOORF, "ifloorf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IFLOORL, "ifloorl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ILOGB, "ilogb", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ILOGBF, "ilogbf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ILOGBL, "ilogbl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_INF, "inf", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFF, "inff", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFL, "infl", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN	       (BUILT_IN_INFD32, "infd32", BT_FN_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFD64, "infd64", BT_FN_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFD128, "infd128", BT_FN_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IRINT, "irint", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IRINTF, "irintf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IRINTL, "irintl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IROUND, "iround", BT_FN_INT_DOUBLE, ATTR_MATHFN_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IROUNDF, "iroundf", BT_FN_INT_FLOAT, ATTR_MATHFN_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IROUNDL, "iroundl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0, "j0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0F, "j0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0L, "j0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1, "j1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1F, "j1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1L, "j1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_JN, "jn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNF, "jnf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNL, "jnl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_LCEIL, "lceil", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LCEILF, "lceilf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LCEILL, "lceill", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_LDEXP, "ldexp", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPF, "ldexpf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPL, "ldexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_LFLOOR, "lfloor", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LFLOORF, "lfloorf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LFLOORL, "lfloorl", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_LGAMMA, "lgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_LGAMMAF, "lgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_LGAMMAL, "lgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMA_R, "lgamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAF_R, "lgammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAL_R, "lgammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_GCC_BUILTIN        (BUILT_IN_LLCEIL, "llceil", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLCEILF, "llceilf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLCEILL, "llceill", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLFLOOR, "llfloor", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORF, "llfloorf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORL, "llfloorl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_LLRINT, "llrint", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLRINTF, "llrintf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLRINTL, "llrintl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLROUND, "llround", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLROUNDF, "llroundf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLROUNDL, "llroundl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_LOG, "log", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_LOG10, "log10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10F, "log10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10L, "log10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG1P, "log1p", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG1PF, "log1pf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG1PL, "log1pl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG2, "log2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG2F, "log2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG2L, "log2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOGB, "logb", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOGBF, "logbf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOGBL, "logbl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGF, "logf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGL, "logl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LRINT, "lrint", BT_FN_LONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LRINTF, "lrintf", BT_FN_LONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LRINTL, "lrintl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LROUND, "lround", BT_FN_LONG_DOUBLE, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LROUNDF, "lroundf", BT_FN_LONG_FLOAT, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LROUNDL, "lroundl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_MODF, "modf", BT_FN_DOUBLE_DOUBLE_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFF, "modff", BT_FN_FLOAT_FLOAT_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFL, "modfl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_C99_BUILTIN        (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_C99_BUILTIN        (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NAND32, "nand32", BT_FN_DFLOAT32_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NAND64, "nand64", BT_FN_DFLOAT64_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NAND128, "nand128", BT_FN_DFLOAT128_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANS, "nans", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANSF, "nansf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANSL, "nansl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_C99_BUILTIN        (BUILT_IN_NEARBYINT, "nearbyint", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTF, "nearbyintf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTL, "nearbyintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTER, "nextafter", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERF, "nextafterf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERL, "nextafterl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARD, "nexttoward", BT_FN_DOUBLE_DOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDF, "nexttowardf", BT_FN_FLOAT_FLOAT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDL, "nexttowardl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_POW, "pow", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10, "pow10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10F, "pow10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10L, "pow10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_POWF, "powf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_POWI, "powi", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_POWIF, "powif", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_POWIL, "powil", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_POWL, "powl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMAINDER, "remainder", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMAINDERF, "remainderf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMAINDERL, "remainderl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMQUO, "remquo", BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_REMQUOF, "remquof", BT_FN_FLOAT_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_REMQUOL, "remquol", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ROUND, "round", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ROUNDF, "roundf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ROUNDL, "roundl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALB, "scalb", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBF, "scalbf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBL, "scalbl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBLN, "scalbln", BT_FN_DOUBLE_DOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBLNF, "scalblnf", BT_FN_FLOAT_FLOAT_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBLNL, "scalblnl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBN, "scalbn", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBNF, "scalbnf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBNL, "scalbnl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITF, "signbitf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITL, "signbitl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD32, "signbitd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD64, "signbitd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD128, "signbitd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICAND, "significand", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDF, "significandf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDL, "significandl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_SIN, "sin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOS, "sincos", BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSF, "sincosf", BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSL, "sincosl", BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINF, "sinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_SINH, "sinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHF, "sinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHL, "sinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINL, "sinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_SQRT, "sqrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTF, "sqrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTL, "sqrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_TAN, "tan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANF, "tanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_TANH, "tanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHF, "tanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHL, "tanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANL, "tanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_TGAMMA, "tgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_TGAMMAF, "tgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_TGAMMAL, "tgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_TRUNC, "trunc", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_TRUNCF, "truncf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_TRUNCL, "truncl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0, "y0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0F, "y0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0L, "y0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1, "y1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1F, "y1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1L, "y1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_YN, "yn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNF, "ynf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNL, "ynl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-
-/* Category: _Complex math builtins.  */
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABS, "cabs", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSF, "cabsf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSL, "cabsl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOS, "cacos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSF, "cacosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSH, "cacosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHF, "cacoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHL, "cacoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSL, "cacosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARG, "carg", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGF, "cargf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGL, "cargl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASIN, "casin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINF, "casinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINH, "casinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHF, "casinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHL, "casinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINL, "casinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATAN, "catan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANF, "catanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANH, "catanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHF, "catanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHL, "catanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANL, "catanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOS, "ccos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSF, "ccosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSH, "ccosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHF, "ccoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHL, "ccoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSL, "ccosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXP, "cexp", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPF, "cexpf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPL, "cexpl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_CEXPI, "cexpi", BT_FN_COMPLEX_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_CEXPIF, "cexpif", BT_FN_COMPLEX_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_CEXPIL, "cexpil", BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAG, "cimag", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAGF, "cimagf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAGL, "cimagl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOG, "clog", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGF, "clogf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGL, "clogl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10, "clog10", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10F, "clog10f", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10L, "clog10l", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJ, "conj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJF, "conjf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJL, "conjl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOW, "cpow", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWF, "cpowf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWL, "cpowl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJ, "cproj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJF, "cprojf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJL, "cprojl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREAL, "creal", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALF, "crealf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALL, "creall", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSIN, "csin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINF, "csinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINH, "csinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHF, "csinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHL, "csinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINL, "csinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRT, "csqrt", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTF, "csqrtf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTL, "csqrtl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTAN, "ctan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANF, "ctanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANH, "ctanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHF, "ctanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHL, "ctanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANL, "ctanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-
-/* Category: string/memory builtins.  */
-/* bcmp, bcopy and bzero have traditionally accepted NULL pointers
-   when the length parameter is zero, so don't apply attribute "nonnull".  */
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCMP, "bcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCOPY, "bcopy", BT_FN_VOID_CONST_PTR_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_BZERO, "bzero", BT_FN_VOID_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_INDEX, "index", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMCHR, "memchr", BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMCMP, "memcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN_CHKP   (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN_CHKP   (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN_CHKP   (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_RINDEX, "rindex", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY, "stpncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCASECMP, "strcasecmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCMP, "strcmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCSPN, "strcspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRDUP, "strdup", BT_FN_STRING_CONST_STRING, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNDUP, "strndup", BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCASECMP, "strncasecmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRNCAT, "strncat", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRNCMP, "strncmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRNCPY, "strncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRPBRK, "strpbrk", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRRCHR, "strrchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRSPN, "strspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRSTR, "strstr", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-
-/* Category: stdio builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_FPRINTF, "fprintf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_UNLOCKED, "fprintf_unlocked", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_PUTC, "putc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTC_UNLOCKED, "putc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FPUTC, "fputc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTC_UNLOCKED, "fputc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FPUTS, "fputs", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTS_UNLOCKED, "fputs_unlocked", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FSCANF, "fscanf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_SCANF_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_FWRITE, "fwrite", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FWRITE_UNLOCKED, "fwrite_unlocked", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_PRINTF, "printf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_UNLOCKED, "printf_unlocked", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
-DEF_LIB_BUILTIN        (BUILT_IN_PUTCHAR, "putchar", BT_FN_INT_INT, ATTR_NULL)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTCHAR_UNLOCKED, "putchar_unlocked", BT_FN_INT_INT, ATTR_NULL)
-DEF_LIB_BUILTIN        (BUILT_IN_PUTS, "puts", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTS_UNLOCKED, "puts_unlocked", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_SCANF, "scanf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_SCANF_1_2)
-DEF_C99_BUILTIN        (BUILT_IN_SNPRINTF, "snprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_3_4)
-DEF_LIB_BUILTIN        (BUILT_IN_SPRINTF, "sprintf", BT_FN_INT_STRING_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_SSCANF, "sscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_FORMAT_SCANF_NOTHROW_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_VFPRINTF, "vfprintf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
-DEF_C99_BUILTIN        (BUILT_IN_VFSCANF, "vfscanf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_2_0)
-DEF_LIB_BUILTIN        (BUILT_IN_VPRINTF, "vprintf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_1_0)
-DEF_C99_BUILTIN        (BUILT_IN_VSCANF, "vscanf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_1_0)
-DEF_C99_BUILTIN        (BUILT_IN_VSNPRINTF, "vsnprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_3_0)
-DEF_LIB_BUILTIN        (BUILT_IN_VSPRINTF, "vsprintf", BT_FN_INT_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_2_0)
-DEF_C99_BUILTIN        (BUILT_IN_VSSCANF, "vsscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_NOTHROW_2_0)
-
-/* Category: ctype builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_ISALNUM, "isalnum", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISALPHA, "isalpha", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISASCII, "isascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ISBLANK, "isblank", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISCNTRL, "iscntrl", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISDIGIT, "isdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISGRAPH, "isgraph", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISLOWER, "islower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISPRINT, "isprint", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISPUNCT, "ispunct", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISSPACE, "isspace", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISUPPER, "isupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISXDIGIT, "isxdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_TOASCII, "toascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_TOLOWER, "tolower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_TOUPPER, "toupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-
-/* Category: wctype builtins.  */
-DEF_C94_BUILTIN        (BUILT_IN_ISWALNUM, "iswalnum", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWALPHA, "iswalpha", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ISWBLANK, "iswblank", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWCNTRL, "iswcntrl", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWDIGIT, "iswdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWGRAPH, "iswgraph", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWLOWER, "iswlower", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWPRINT, "iswprint", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWPUNCT, "iswpunct", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWSPACE, "iswspace", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWUPPER, "iswupper", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWXDIGIT, "iswxdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_TOWLOWER, "towlower", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_TOWUPPER, "towupper", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-
-/* Category: integer overflow checking builtins.  */
-DEF_GCC_BUILTIN        (BUILT_IN_ADD_OVERFLOW, "add_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_SUB_OVERFLOW, "sub_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_MUL_OVERFLOW, "mul_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)
-/* Clang compatibility.  */
-DEF_GCC_BUILTIN        (BUILT_IN_SADD_OVERFLOW, "sadd_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SADDL_OVERFLOW, "saddl_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SADDLL_OVERFLOW, "saddll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SSUB_OVERFLOW, "ssub_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SSUBL_OVERFLOW, "ssubl_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SSUBLL_OVERFLOW, "ssubll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SMUL_OVERFLOW, "smul_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SMULL_OVERFLOW, "smull_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SMULLL_OVERFLOW, "smulll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UADD_OVERFLOW, "uadd_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UADDL_OVERFLOW, "uaddl_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UADDLL_OVERFLOW, "uaddll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_USUB_OVERFLOW, "usub_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_USUBL_OVERFLOW, "usubl_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_USUBLL_OVERFLOW, "usubll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UMUL_OVERFLOW, "umul_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UMULL_OVERFLOW, "umull_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UMULLL_OVERFLOW, "umulll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
-
-/* Category: miscellaneous builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_ABORT, "abort", BT_FN_VOID, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ABS, "abs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_AGGREGATE_INCOMING_ADDRESS, "aggregate_incoming_address", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ALLOCA, "alloca", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_APPLY, "apply", BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_APPLY_ARGS, "apply_args", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_BSWAP16, "bswap16", BT_FN_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_BSWAP32, "bswap32", BT_FN_UINT32_UINT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_BSWAP64, "bswap64", BT_FN_UINT64_UINT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_CLEAR_CACHE, "__clear_cache", BT_FN_VOID_PTR_PTR, ATTR_NOTHROW_LEAF_LIST)
-/* [trans-mem]: Adjust BUILT_IN_TM_CALLOC if BUILT_IN_CALLOC is changed.  */
-DEF_LIB_BUILTIN        (BUILT_IN_CALLOC, "calloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLASSIFY_TYPE, "classify_type", BT_FN_INT_VAR, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZ, "clz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZIMAX, "clzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZL, "clzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZLL, "clzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CONSTANT_P, "constant_p", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZ, "ctz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZIMAX, "ctzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZL, "ctzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZLL, "ctzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSB, "clrsb", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSBIMAX, "clrsbimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSBL, "clrsbl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSBLL, "clrsbll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DCGETTEXT, "dcgettext", BT_FN_STRING_CONST_STRING_CONST_STRING_INT, ATTR_FORMAT_ARG_2)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DGETTEXT, "dgettext", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_FORMAT_ARG_2)
-DEF_GCC_BUILTIN        (BUILT_IN_DWARF_CFA, "dwarf_cfa", BT_FN_PTR, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_DWARF_SP_COLUMN, "dwarf_sp_column", BT_FN_UINT, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN, "eh_return", BT_FN_VOID_PTRMODE_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN_DATA_REGNO, "eh_return_data_regno", BT_FN_INT_INT, ATTR_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECL, "execl", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLP, "execlp", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLE, "execle", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_NOTHROW_SENTINEL_1)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECV, "execv", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVP, "execvp", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVE, "execve", BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_EXIT, "exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EXPECT, "expect", BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ASSUME_ALIGNED, "assume_aligned", BT_FN_PTR_CONST_PTR_SIZE_VAR, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EXTEND_POINTER, "extend_pointer", BT_FN_UNWINDWORD_PTR, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EXTRACT_RETURN_ADDR, "extract_return_addr", BT_FN_PTR_PTR, ATTR_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFS, "ffs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSIMAX, "ffsimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSL, "ffsl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSLL, "ffsll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_FORK, "fork", BT_FN_PID, ATTR_NOTHROW_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FRAME_ADDRESS, "frame_address", BT_FN_PTR_UINT, ATTR_NULL)
-/* [trans-mem]: Adjust BUILT_IN_TM_FREE if BUILT_IN_FREE is changed.  */
-DEF_LIB_BUILTIN        (BUILT_IN_FREE, "free", BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FROB_RETURN_ADDR, "frob_return_addr", BT_FN_PTR_PTR, ATTR_NULL)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GETTEXT, "gettext", BT_FN_STRING_CONST_STRING, ATTR_FORMAT_ARG_1)
-DEF_C99_BUILTIN        (BUILT_IN_IMAXABS, "imaxabs", BT_FN_INTMAX_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INIT_DWARF_REG_SIZES, "init_dwarf_reg_size_table", BT_FN_VOID_PTR, ATTR_NULL)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITE, "finite", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEF, "finitef", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEL, "finitel", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED32, "finited32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED64, "finited64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED128, "finited128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FPCLASSIFY, "fpclassify", BT_FN_INT_INT_INT_INT_INT_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISFINITE, "isfinite", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISINF_SIGN, "isinf_sign", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ISINF, "isinf", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFF, "isinff", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFL, "isinfl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD32, "isinfd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD64, "isinfd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD128, "isinfd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ISNAN, "isnan", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANF, "isnanf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANL, "isnanl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND32, "isnand32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND64, "isnand64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND128, "isnand128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ISNORMAL, "isnormal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISGREATER, "isgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISGREATEREQUAL, "isgreaterequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISLESS, "isless", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISLESSEQUAL, "islessequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISLESSGREATER, "islessgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISUNORDERED, "isunordered", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_LABS, "labs", BT_FN_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_LLABS, "llabs", BT_FN_LONGLONG_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LONGJMP, "longjmp", BT_FN_VOID_PTR_INT, ATTR_NORETURN_NOTHROW_LIST)
-/* [trans-mem]: Adjust BUILT_IN_TM_MALLOC if BUILT_IN_MALLOC is changed.  */
-DEF_LIB_BUILTIN        (BUILT_IN_MALLOC, "malloc", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_NEXT_ARG, "next_arg", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITY, "parity", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITYIMAX, "parityimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITYL, "parityl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITYLL, "parityll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNT, "popcount", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTIMAX, "popcountimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTL, "popcountl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTLL, "popcountll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POSIX_MEMALIGN, "posix_memalign", BT_FN_INT_PTRPTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_PREFETCH, "prefetch", BT_FN_VOID_CONST_PTR_VAR, ATTR_NOVOPS_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_REALLOC, "realloc", BT_FN_PTR_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_RETURN, "return", BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_RETURN_ADDRESS, "return_address", BT_FN_PTR_UINT, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SAVEREGS, "saveregs", BT_FN_PTR_VAR, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_SETJMP, "setjmp", BT_FN_INT_PTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRFMON, "strfmon", BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_STRFMON_NOTHROW_3_4)
-DEF_LIB_BUILTIN        (BUILT_IN_STRFTIME, "strftime", BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR, ATTR_FORMAT_STRFTIME_NOTHROW_3_0)
-DEF_GCC_BUILTIN        (BUILT_IN_TRAP, "trap", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UNREACHABLE, "unreachable", BT_FN_VOID, ATTR_CONST_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UNWIND_INIT, "unwind_init", BT_FN_VOID, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_UPDATE_SETJMP_BUF, "update_setjmp_buf", BT_FN_VOID_PTR_INT, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_END, "va_end", BT_FN_VOID_VALIST_REF, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_START, "va_start", BT_FN_VOID_VALIST_REF_VAR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK, "va_arg_pack", BT_FN_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK_LEN, "va_arg_pack_len", BT_FN_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN__EXIT, "_exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN__EXIT2, "_Exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-
-/* Implementing nested functions.  */
-DEF_BUILTIN_STUB (BUILT_IN_INIT_TRAMPOLINE, "__builtin_init_trampoline")
-DEF_BUILTIN_STUB (BUILT_IN_INIT_HEAP_TRAMPOLINE, "__builtin_init_heap_trampoline")
-DEF_BUILTIN_STUB (BUILT_IN_ADJUST_TRAMPOLINE, "__builtin_adjust_trampoline")
-DEF_BUILTIN_STUB (BUILT_IN_NONLOCAL_GOTO, "__builtin_nonlocal_goto")
-
-/* Implementing __builtin_setjmp.  */
-DEF_BUILTIN_STUB (BUILT_IN_SETJMP_SETUP, "__builtin_setjmp_setup")
-DEF_BUILTIN_STUB (BUILT_IN_SETJMP_RECEIVER, "__builtin_setjmp_receiver")
-
-/* Implementing variable sized local variables.  */
-DEF_BUILTIN_STUB (BUILT_IN_STACK_SAVE, "__builtin_stack_save")
-DEF_BUILTIN_STUB (BUILT_IN_STACK_RESTORE, "__builtin_stack_restore")
-DEF_BUILTIN_STUB (BUILT_IN_ALLOCA_WITH_ALIGN, "__builtin_alloca_with_align")
-
-/* Object size checking builtins.  */
-DEF_GCC_BUILTIN	       (BUILT_IN_OBJECT_SIZE, "object_size", BT_FN_SIZE_CONST_PTR_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY_CHK, "__stpncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCAT_CHK, "__strncat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCPY_CHK, "__strncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SNPRINTF_CHK, "__snprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_5_6)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SPRINTF_CHK, "__sprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_4_5)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSNPRINTF_CHK, "__vsnprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_5_0)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSPRINTF_CHK, "__vsprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_4_0)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_CHK, "__fprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_3_4)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_CHK, "__printf_chk", BT_FN_INT_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VFPRINTF_CHK, "__vfprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_3_0)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VPRINTF_CHK, "__vprintf_chk", BT_FN_INT_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
-
-/* Profiling hooks.  */
-DEF_BUILTIN (BUILT_IN_PROFILE_FUNC_ENTER, "__cyg_profile_func_enter", BUILT_IN_NORMAL, BT_FN_VOID_PTR_PTR, BT_LAST,
-	     false, false, false, ATTR_NULL, true, true)
-DEF_BUILTIN (BUILT_IN_PROFILE_FUNC_EXIT, "__cyg_profile_func_exit", BUILT_IN_NORMAL, BT_FN_VOID_PTR_PTR, BT_LAST,
-	     false, false, false, ATTR_NULL, true, true)
-
-/* TLS thread pointer related builtins.  */
-DEF_BUILTIN (BUILT_IN_THREAD_POINTER, "__builtin_thread_pointer",
-	     BUILT_IN_NORMAL, BT_FN_PTR, BT_LAST,
-	     false, false, true, ATTR_CONST_NOTHROW_LIST, true,
-	     targetm.have_tls)
-
-DEF_BUILTIN (BUILT_IN_SET_THREAD_POINTER, "__builtin_set_thread_pointer",
-	     BUILT_IN_NORMAL, BT_FN_VOID_PTR, BT_LAST,
-	     false, false, true, ATTR_NOTHROW_LIST, true,
-	     targetm.have_tls)
-
-/* TLS emulation.  */
-DEF_BUILTIN (BUILT_IN_EMUTLS_GET_ADDRESS, targetm.emutls.get_address,
-	     BUILT_IN_NORMAL,
-	     BT_FN_PTR_PTR,  BT_FN_PTR_PTR,
-	     true, true, true, ATTR_CONST_NOTHROW_NONNULL_LEAF, false,
-	     !targetm.have_tls)
-DEF_BUILTIN (BUILT_IN_EMUTLS_REGISTER_COMMON,
-	     targetm.emutls.register_common, BUILT_IN_NORMAL,
-	     BT_FN_VOID_PTR_WORD_WORD_PTR, BT_FN_VOID_PTR_WORD_WORD_PTR,
-	     true, true, true, ATTR_NOTHROW_LEAF_LIST, false,
-	     !targetm.have_tls)
-
-/* Exception support.  */
-DEF_BUILTIN_STUB (BUILT_IN_UNWIND_RESUME, "__builtin_unwind_resume")
-DEF_BUILTIN_STUB (BUILT_IN_CXA_END_CLEANUP, "__builtin_cxa_end_cleanup")
-DEF_BUILTIN_STUB (BUILT_IN_EH_POINTER, "__builtin_eh_pointer")
-DEF_BUILTIN_STUB (BUILT_IN_EH_FILTER, "__builtin_eh_filter")
-DEF_BUILTIN_STUB (BUILT_IN_EH_COPY_VALUES, "__builtin_eh_copy_values")
-
-/* __FILE__, __LINE__, __FUNCTION__ as builtins.  */
-DEF_GCC_BUILTIN (BUILT_IN_FILE, "FILE", BT_FN_CONST_STRING, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN (BUILT_IN_FUNCTION, "FUNCTION", BT_FN_CONST_STRING, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN (BUILT_IN_LINE, "LINE", BT_FN_INT, ATTR_NOTHROW_LEAF_LIST)
-
-#if 0 //Ifdefed out because we hard-coded the proper overloadings of the atomic built-ins
-/* Synchronization Primitives.  */
-#include "sync-builtins.def"
-
-/* Offloading and Multi Processing builtins.  */
-#include "omp-builtins.def"
-
-/* Cilk keywords builtins.  */
-#include "cilk-builtins.def"
-
-/* GTM builtins. */
-#include "gtm-builtins.def"
-
-/* Sanitizer builtins. */
-#include "sanitizer.def"
-
-/* Cilk Plus builtins.  */
-#include "cilkplus.def"
-
-/* Pointer Bounds Checker builtins.  */
-#include "chkp-builtins.def"
-#endif
-
-#undef DEF_BUILTIN_CHKP
-#undef DEF_BUILTIN
Index: c/prelude/extras.c
===================================================================
--- src/prelude/extras.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,6 +1,0 @@
-#include <stddef.h>					// size_t, ptrdiff_t
-#include <stdint.h>					// intX_t, uintX_t, where X is 8, 16, 32, 64
-#include <uchar.h>					// char16_t, char32_t
-#include <wchar.h>					// wchar_t
-#include <stdlib.h>					// malloc, free, exit, atexit, abort
-#include <stdio.h>					// printf
Index: c/prelude/extras.regx
===================================================================
--- src/prelude/extras.regx	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,27 +1,0 @@
-typedef.* size_t;
-typedef.* ptrdiff_t;
-typedef.* __int8_t;
-typedef.* __int16_t;
-typedef.* __int32_t;
-typedef.* __int64_t;
-typedef.* __uint8_t;
-typedef.* __uint16_t;
-typedef.* __uint32_t;
-typedef.* __uint64_t;
-typedef.* int8_t;
-typedef.* int16_t;
-typedef.* int32_t;
-typedef.* int64_t;
-typedef.* uint8_t;
-typedef.* uint16_t;
-typedef.* uint32_t;
-typedef.* uint64_t;
-typedef.* char16_t;
-typedef.* char32_t;
-typedef.* wchar_t;
-extern.*\*malloc\(.*\).*
-extern.* free\(.*\).*
-extern.* exit\(.*\).*
-extern.* atexit\(.*\).*
-extern.* abort\(.*\).*
-extern.* printf\(.*\).*
Index: c/prelude/prelude-gen.cc
===================================================================
--- src/prelude/prelude-gen.cc	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,388 +1,0 @@
-#include <algorithm>
-#include <array>
-#include <iostream>
-#include <string>
-#include <vector>
-using namespace std;
-
-static struct{
-	const string name;
-	bool isFloat;
-	bool hasComparison;
-} basicTypes[] = {
-	// { "char"                  , false, true , },
-	// { "signed char"           , false, true , },
-	// { "unsigned char"         , false, true , },
-	{ "signed short"          , false, true , },
-	{ "unsigned short"        , false, true , },
-	{ "signed int"            , false, true , },
-	{ "unsigned int"          , false, true , },
-	{ "signed long int"       , false, true , },
-	{ "unsigned long int"     , false, true , },
-	{ "signed long long int"  , false, true , },
-	{ "unsigned long long int", false, true , },
-	{ "float"                 , true , true , },
-	{ "double"                , true , true , },
-	{ "long double"           , true , true , },
-	{ "float _Complex"        , true , false, },
-	{ "double _Complex"       , true , false, },
-	{ "long double _Complex"  , true , false, },
-#if defined(__SIZEOF_INT128__)
-	{ "__int128"              , false, true , },
-	{ "unsigned __int128"     , false, true , },
-#endif
-#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
-	{ "__float80"             , true , true , },
-	{ "_Float128"             , true , true , },
-#endif
-};
-
-struct {
-	const string name;
-	bool assignment = false;
-	bool floatCompat = true;
-	bool isComparison = false;
-	bool isEqual = false;
-} arithmeticOperators[] = {
-	{ "?++"  , true , true, false, false },
-	{ "?--"  , true , true, false, false },
-	{ "++?"  , true , true, false, false },
-	{ "--?"  , true , true, false, false },
-	{ "+?"   , false, true , false, false },
-	{ "-?"   , false, true , false, false },
-	{ "~?"   , false, false, false, false },
-	{ "!?"   , false, true , false, true  },
-	{ "?*?"  , false, true , false, false },
-	{ "?/?"  , false, true , false, false },
-	{ "?%?"  , false, false, false, false },
-	{ "?+?"  , false, true , false, false },
-	{ "?-?"  , false, true , false, false },
-	{ "?<<?" , false, false, false, false },
-	{ "?>>?" , false, false, false, false },
-	{ "?<?"  , false, true , true , false },
-	{ "?<=?" , false, true , true , true  },
-	{ "?>?"  , false, true , true , false },
-	{ "?>=?" , false, true , true , true  },
-	{ "?==?" , false, true , false, true  },
-	{ "?!=?" , false, true , false, true  },
-	{ "?&?"  , false, false, false, false },
-	{ "?^?"  , false, false, false, false },
-	{ "?|?"  , false, false, false, false },
-	{ "?=?"  , true , true , false, false },
-	{ "?+=?" , true , true , false, false },
-	{ "?-=?" , true , true , false, false },
-	{ "?*=?" , true , true , false, false },
-	{ "?/=?" , true , true , false, false },
-	{ "?%=?" , true , false, false, false },
-	{ "?<<=?", true , false, false, false },
-	{ "?>>=?", true , false, false, false },
-	{ "?&=?" , true , false, false, false },
-	{ "?|=?" , true , false, false, false },
-	{ "?^=?" , true , false, false, false },
-};
-
-enum ArgType { Normal, PtrDiff, CommPtrDiff };
-
-struct {
-	const string name;
-	bool assignment = false;
-	string diffReturn;
-	ArgType diffArg2 = Normal;
-	string sized;
-} pointerOperators[] = {
-	{ "?++", true, "", Normal, " | sized(DT)" },
-	{ "?--", true, "", Normal, " | sized(DT)" },
-	{ "++?", true, "", Normal, " | sized(DT)" },
-	{ "--?", true, "", Normal, " | sized(DT)" },
-	{ "!?" , false, "int", Normal, "" },
-	{ "?<?", false, "signed int", Normal, "" },
-	{ "?<=?", false, "signed int", Normal, "" },
-	{ "?>?", false, "signed int", Normal, "" },
-	{ "?>=?", false, "signed int", Normal, "" },
-	{ "?==?", false, "signed int", Normal, "" },
-	{ "?!=?", false, "signed int", Normal, "" },
-	{ "?=?", true, "", Normal, "" }, // void * LHS, zero_t RHS ???
-	{ "*?", false, "&", Normal, " | sized(DT)" }, // & ???
-
-	{ "?-?", false, "ptrdiff_t", Normal, " | sized(DT)" },
-	{ "?-?", false, "", PtrDiff, " | sized(DT)" },
-	{ "?-=?", true, "", PtrDiff, " | sized(DT)" },
-
-	{ "?+?", false, "", CommPtrDiff, " | sized(DT)" },
-	{ "?[?]", false, "&", CommPtrDiff, " | sized(DT)" }, // & ???
-	{ "?+=?" , true, "", PtrDiff, " | sized(DT)" },
-};
-
-template<size_t N>
-string mask2string(unsigned int mask, array<string, N> names) {
-	string result = "";
-	int i = 0;
-	for(auto name : names) {
-		if(mask & (1 << i)) {
-			result += name;
-		} else {
-			result.append(name.size(), ' ');
-		}
-		i++;
-	}
-	return result;
-}
-
-template <typename... T>
-constexpr auto make_array(T&&... values) ->
-    std::array<
-        typename std::decay<typename std::common_type<T...>::type>::type,
-        sizeof...(T)>
-{
-    return std::array<
-        typename std::decay<
-            typename std::common_type<T...>::type>::type,
-        sizeof...(T)>{{std::forward<T>(values)...}};
-}
-
-int main() {
-	cout << "# 2 \"prelude.cf\"  // needed for error messages from this file" << endl;
-	cout << "trait sized(dtype T) {};" << endl;
-
-	cout << "//////////////////////////" << endl;
-	cout << "// Arithmetic Operators //" << endl;
-	cout << "//////////////////////////" << endl;
-	cout << endl;
-
-	cout << "signed int ?==?( zero_t, zero_t ),							?!=?( zero_t, zero_t );" << endl;
-	cout << "signed int ?==?( one_t, one_t ),							?!=?( one_t, one_t );" << endl;
-	cout << "signed int ?==?( _Bool, _Bool ),							?!=?( _Bool, _Bool );" << endl;
-	cout << "signed int	!?( _Bool );" << endl;
-
-	for (auto op : arithmeticOperators) {
-		for (auto type : basicTypes ) {
-			auto operands = count(op.name.begin(), op.name.end(), '?');
-			if (! op.floatCompat && type.isFloat) continue;
-			if (op.isComparison && ! type.hasComparison) continue;
-			if (op.assignment) {
-				const char * qualifiers[] = { "", "volatile " };
-				for (auto q : qualifiers){
-					cout << type.name << " " << op.name << "(";
-					cout << q << type.name << " &";
-					for (int i = 1; i < operands; ++i) {
-						cout << ", " << type.name;
-					}
-					cout << ");" << endl;
-				}
-			} else {
-				if (op.isComparison || op.isEqual) cout << "signed int";
-				else cout << type.name;
-				cout << " " << op.name << "(";
-				for (int i = 0; i < operands; ++i) {
-					cout << type.name;
-					if ((i+1) != operands) cout << ", ";
-				}
-				cout << ");" << endl;
-			}
-		}
-		cout << endl;
-	}
-	cout << endl;
-
-	cout << "/////////////////////////////" << endl;
-	cout << "// Arithmetic Constructors //" << endl;
-	cout << "/////////////////////////////" << endl;
-	auto otype = [](const std::string & type, bool do_volatile = false) {
-		cout << "void \t?{} ( " << type << " & );" << endl;
-		cout << "void \t?{} ( " << type << " &, " << type << " );" << endl;
-		cout << type << " \t?=? ( " << type << " &, " << type << " )";
-		if( do_volatile ) {
-			cout << ", \t?=?( volatile " << type << " &, " << type << " )";
-		}
-		cout << ";" << endl;
-		cout << "void \t^?{}( " << type << " & );" << endl;
-	};
-
-	otype("zero_t");
-	otype("one_t");
-	otype("_Bool", true);
-	otype("char", true);
-	otype("signed char", true);
-	otype("unsigned char", true);
-
-	for (auto type : basicTypes) {
-		cout << "void  ?{}(" << type.name << " &);" << endl;
-		cout << "void  ?{}(" << type.name << " &, " << type.name << ");" << endl;
-		cout << "void ^?{}(" << type.name << " &);" << endl;
-		cout << endl;
-	}
-	cout << endl;
-
-	cout << "//////////////////////////" << endl;
-	cout << "// Pointer Constructors //" << endl;
-	cout << "//////////////////////////" << endl;
-	cout << "forall(ftype FT) void  ?{}( FT *&, FT * );" << endl;
-	cout << "forall(ftype FT) void  ?{}( FT * volatile &, FT * );" << endl;
-
-	// generate qualifiers
-	vector<string> qualifiersSingle;
-	vector<pair<const string, const string>> qualifiersPair;
-	const unsigned int NQ = 2;
-	for(unsigned int lhs = 0; lhs < (1<<NQ); lhs++) {
-		// for parameter of default constructor and destructor
-		qualifiersSingle.push_back(mask2string(lhs, make_array("const "s, "volatile "s)));
-
-		// for first and second parameters of copy constructors
-		for(unsigned int rhs = 0; rhs < (1<<NQ); rhs++) {
-			if((lhs & rhs) == rhs) {
-				qualifiersPair.push_back({
-					mask2string(lhs, make_array("const "s, "volatile "s)),
-					mask2string(rhs, make_array("const "s, "volatile "s))
-				});
-			}
-		}
-	}
-
-	for (auto type : { "  DT", "void" }) {
-		for (auto cvq : qualifiersPair) {
-			for (auto is_vol : { "        ", "volatile" }) {
-				cout << "forall(dtype DT) void  ?{}(" << cvq.first << type << " * " << is_vol << " &, " << cvq.second << "DT *);" << endl;
-			}
-		}
-		for (auto cvq : qualifiersSingle) {
-			for (auto is_vol : { "        ", "volatile" }) {
-				cout << "forall(dtype DT) void  ?{}(" << cvq << type << " * " << is_vol << " &);" << endl;
-			}
-			for (auto is_vol : { "        ", "volatile" }) {
-				cout << "forall(dtype DT) void ^?{}(" << cvq << type << " * " << is_vol << " &);" << endl;
-			}
-		}
-	}
-
-	{
-		auto type = "  DT";
-		for (auto is_vol : { "        ", "volatile" }) {
-			for (auto cvq : qualifiersSingle) {
-				cout << "forall(dtype DT) void ?{}( " << cvq << type << " * " << is_vol << " &, zero_t);" << endl;
-			}
-		}
-	}
-
-	cout << endl;
-
-	cout << "forall(ftype FT) void	?{}( FT *	   &, zero_t );	" << endl;
-	cout << "forall(ftype FT) FT *			?=?( FT *	   &, zero_t );" << endl;
-	cout << "forall(ftype FT) FT *			?=?( FT * volatile &, zero_t );" << endl;
-	cout << "forall( ftype FT ) void	?{}( FT *	   & );" << endl;
-	cout << "forall( ftype FT ) void	^?{}( FT *	   & );" << endl;
-	cout << endl;
-
-	cout << "///////////////////////" << endl;
-	cout << "// Pointer Operators //" << endl;
-	cout << "///////////////////////" << endl;
-
-	cout << "forall( ftype FT ) FT *			?=?( FT *&, FT * );" << endl;
-	cout << "forall( ftype FT ) FT *			?=?( FT * volatile &, FT * );" << endl;
-	cout << "forall( ftype FT ) int !?( FT * );" << endl;
-	cout << "forall( ftype FT ) signed int ?==?( FT *, FT * );" << endl;
-	cout << "forall( ftype FT ) signed int ?!=?( FT *, FT * );" << endl;
-	cout << "forall( ftype FT ) FT &		 *?( FT * );" << endl;
-
-
-	for (auto op : pointerOperators) {
-		auto forall = [&op]() {
-			cout << "forall(dtype DT" << op.sized << ") ";
-		};
-		for (auto type : { "DT"/*, "void"*/ } ) {
-			auto operands = count(op.name.begin(), op.name.end(), '?');
-			if (op.assignment) {
-				// const char * qualifiers[] = { "", "volatile ", "const ", "const volatile " };
-				switch(op.diffArg2) {
-					case Normal:
-						if (operands == 1) {
-							for (auto q : qualifiersSingle){
-								for (auto q2 : { "        ", "volatile" }) {
-									forall();
-									cout << q << type << " * " << op.name << "(";
-									cout << q << type << " * " << q2 << " &";
-									cout << ");" << endl;
-								}
-							}
-						} else {
-							for (auto q : qualifiersPair){
-								for (auto q2 : { "        ", "volatile" }) {
-									forall();
-									cout << q.first << type << " * " << op.name << "(";
-									cout << q.first << type << " * " << q2 << " &";
-
-									for (int i = 1; i < operands; ++i) {
-										cout << ", " << q.second << type << " *";
-									}
-									cout << ");" << endl;
-								}
-							}
-						}
-						break;
-					case PtrDiff:
-						for (auto q : qualifiersSingle){
-							for (auto q2 : { "        ", "volatile" }) {
-								forall();
-								cout << q << type << " * " << op.name << "(";
-								cout << q << type << " * " << q2 << " &";
-
-								for (int i = 1; i < operands; ++i) {
-									cout << ", ptrdiff_t";
-								}
-								cout << ");" << endl;
-							}
-						}
-						break;
-					default:
-						abort();
-					}
-			} else {
-				auto name_and_arg1 = [&op, &type](const std::string & q) {
-					if (op.diffReturn == "&") cout << q << type << " &"; // -- qualifiers
-					else if (op.diffReturn != "") cout << op.diffReturn;
-					else cout << q << type << " *";
-					cout << " " << op.name << "(";
-				};
-				switch(op.diffArg2) {
-					case Normal:
-						for (auto q : qualifiersSingle) {
-							forall();
-							name_and_arg1( q );
-							for (int i = 0; i < operands; ++i) {
-								cout << q << type << " *";
-								if ((i+1) != operands) cout << ", ";
-							}
-							cout << ");" << endl;
-						}
-						break;
-					case CommPtrDiff:
-						for (auto q : qualifiersSingle) {
-							forall();
-							name_and_arg1( q );
-							cout << "ptrdiff_t, " << q << type << " *);" << endl;
-						}
-						// fallthrough
-					case PtrDiff:
-						for (auto q : qualifiersSingle) {
-							forall();
-							name_and_arg1( q );
-							cout << q << type << " *, ptrdiff_t);" << endl;
-						}
-						break;
-				}
-			}
-		}
-		cout << endl;
-	}
-	cout << endl;
-
-	for (auto is_vol : { "        ", "volatile" }) {
-		for (auto cvq : qualifiersPair) {
-				cout << "forall(dtype DT) " << cvq.first << "void * ?=?( " << cvq.first << "void * " << is_vol << " &, " << cvq.second << "DT *);" << endl;
-		}
-		for (auto cvq : qualifiersSingle) {
-			cout << "forall(dtype DT) " << cvq <<   "  DT * ?=?( " << cvq << "  DT * " << is_vol << " &, zero_t);" << endl;
-		}
-	}
-	cout << endl;
-}
-
Index: c/prelude/prelude.old.cf
===================================================================
--- src/prelude/prelude.old.cf	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,783 +1,0 @@
-//
-// Copyright (C) Glen Ditchfield 1994, 1999
-//
-// prelude.cf -- Standard Cforall Preample for C99
-//
-// Author           : Glen Ditchfield
-// Created On       : Sat Nov 29 07:23:41 2014
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Apr 22 13:21:47 2018
-// Update Count     : 103
-//
-
-# 2 "prelude.cf"  // needed for error messages from this file
-
-// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
-
-// ------------------------------------------------------------
-//
-// Section 6.7.11 Trait Declarations
-// Note: the sized trait is used in declarations later in this
-// file, so it must be out of order.
-//
-// ------------------------------------------------------------
-
-trait sized(dtype T) {};
-
-// ------------------------------------------------------------
-//
-// Section 4.1 Primary Expressions
-//
-// ------------------------------------------------------------
-
-//We have none
-
-// ------------------------------------------------------------
-//
-// Section 4.2 Postfix Operators
-//
-// ------------------------------------------------------------
-
-signed short		?++( signed short & ),			?++( volatile signed short & );
-signed short		?--( signed short & ),			?--( volatile signed short & );
-unsigned short		?++( unsigned short & ),		?++( volatile unsigned short & );
-unsigned short		?--( unsigned short & ),		?--( volatile unsigned short & );
-signed int		?++( signed int & ),			?++( volatile signed int & );
-signed int		?--( signed int & ),			?--( volatile signed int & );
-unsigned int		?++( unsigned int & ),			?++( volatile unsigned int & );
-unsigned int		?--( unsigned int & ),			?--( volatile unsigned int & );
-signed long int		?++( signed long int & ),		?++( volatile signed long int & );
-signed long int		?--( signed long int & ),		?--( volatile signed long int & );
-unsigned long int	?++( unsigned long int & ),		?++( volatile unsigned long int & );
-unsigned long int	?--( unsigned long int & ),		?--( volatile unsigned long int & );
-signed long long int	?++( signed long long int & ),		?++( volatile signed long long int & );
-signed long long int	?--( signed long long int & ),		?--( volatile signed long long int & );
-unsigned long long int	?++( unsigned long long int & ),	?++( volatile unsigned long long int & );
-unsigned long long int	?--( unsigned long long int & ),	?--( volatile unsigned long long int & );
-float			?++( float & ),				?++( volatile float & );
-float			?--( float & ),				?--( volatile float & );
-double			?++( double & ),			?++( volatile double & );
-double			?--( double & ),			?--( volatile double & );
-long double		?++( long double & ),			?++( volatile long double & );
-long double		?--( long double & ),			?--( volatile long double & );
-float _Complex		?++( float _Complex & ),		?++( volatile float _Complex & );
-float _Complex		?--( float _Complex & ),		?--( volatile float _Complex & );
-double _Complex		?++( double _Complex & ),		?++( volatile double _Complex & );
-double _Complex		?--( double _Complex & ),		?--( volatile double _Complex & );
-long double _Complex	?++( long double _Complex & ),		?++( volatile long double _Complex & );
-long double _Complex	?--( long double _Complex & ),		?--( volatile long double _Complex & );
-
-forall( dtype T | sized(T) ) T *			 ?++(		     T *& );
-forall( dtype T | sized(T) ) const T *		 ?++( const	     T *& );
-forall( dtype T | sized(T) ) volatile T *		 ?++(	    volatile T *& );
-forall( dtype T | sized(T) ) const volatile T *	 ?++( const volatile T *& );
-forall( dtype T | sized(T) ) T *			 ?--(		     T *& );
-forall( dtype T | sized(T) ) const T *		 ?--( const	     T *& );
-forall( dtype T | sized(T) ) volatile T *		 ?--(	    volatile T *& );
-forall( dtype T | sized(T) ) const volatile T *	 ?--( const volatile T *& );
-
-forall( dtype T | sized(T) ) T &		 ?[?](		      T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) const T &	 ?[?]( const	      T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T &	 ?[?](       volatile T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T & ?[?]( const volatile T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) T &		 ?[?](		ptrdiff_t,		  T * );
-forall( dtype T | sized(T) ) const T &	 ?[?](		ptrdiff_t, const	  T * );
-forall( dtype T | sized(T) ) volatile T &	 ?[?](		ptrdiff_t,	 volatile T * );
-forall( dtype T | sized(T) ) const volatile T & ?[?](		ptrdiff_t, const volatile T * );
-
-// ------------------------------------------------------------
-//
-// Section 4.3 Unary Operators
-//
-// ------------------------------------------------------------
-
-signed short	++?( signed short & ),			--?( signed short & );
-signed int		++?( signed int & ),			--?( signed int & );
-unsigned short		++?( unsigned int & ),			--?( unsigned int & );
-unsigned int		++?( unsigned short & ),		--?( unsigned short & );
-signed long int		++?( signed long int & ),		--?( signed long int & );
-unsigned long int	++?( unsigned long int & ),		--?( unsigned long int & );
-signed long long int	++?( signed long long int & ),		--?( signed long long int & );
-unsigned long long int	++?( unsigned long long int & ),	--?( unsigned long long int & );
-float			++?( float & ),				--?( float & );
-double			++?( double & ),			--?( double & );
-long double		++?( long double & ),			--?( long double & );
-float _Complex		++?( float _Complex & ),		--?( float _Complex & );
-double _Complex		++?( double _Complex & ),		--?( double _Complex & );
-long double _Complex	++?( long double _Complex & ),		--?( long double _Complex & );
-
-forall( dtype T | sized(T) ) T *			 ++?(		     T *& );
-forall( dtype T | sized(T) ) const T *		 ++?( const	     T *& );
-forall( dtype T | sized(T) ) volatile T *		 ++?(	    volatile T *& );
-forall( dtype T | sized(T) ) const volatile T *	 ++?( const volatile T *& );
-forall( dtype T | sized(T) ) T *			 --?(		     T *& );
-forall( dtype T | sized(T) ) const T *		 --?( const	     T *& );
-forall( dtype T | sized(T) ) volatile T *		 --?(	    volatile T *& );
-forall( dtype T | sized(T) ) const volatile T *	 --?( const volatile T *& );
-
-forall( dtype T | sized(T) ) T &		 *?(		     T * );
-forall( dtype T | sized(T) ) const T &		 *?( const	     T * );
-forall( dtype T | sized(T) ) volatile T &	 *?(       volatile  T * );
-forall( dtype T | sized(T) ) const volatile T & *?( const volatile  T * );
-forall( ftype FT ) FT &		 *?( FT * );
-
-_Bool			+?( _Bool ),			-?( _Bool );
-signed int		+?( signed int ),		-?( signed int ),		~?( signed int );
-unsigned int		+?( unsigned int ),		-?( unsigned int ),		~?( unsigned int );
-signed long int		+?( signed long int ),		-?( signed long int ),		~?( signed long int );
-unsigned long int	+?( unsigned long int ),	-?( unsigned long int ),	~?( unsigned long int );
-signed long long int	+?( signed long long int ),	-?( signed long long int ),	~?( signed long long int );
-unsigned long long int	+?( unsigned long long int ),	-?( unsigned long long int ),	~?( unsigned long long int );
-float			+?( float ),			-?( float );
-double			+?( double ),			-?( double );
-long double		+?( long double ),		-?( long double );
-float _Complex		+?( float _Complex ),		-?( float _Complex );
-double _Complex		+?( double _Complex ),		-?( double _Complex );
-long double _Complex	+?( long double _Complex ),	-?( long double _Complex );
-
-signed int	!?( signed int ),		!?( unsigned int ),
-		!?( long int ),			!?( unsigned long int ),
-		!?( long long int ),		!?( unsigned long long int ),
-		!?( float ),			!?( double ),			!?( long double ),
-		!?( float _Complex ),		!?( double _Complex ),		!?( long double _Complex );
-
-forall( dtype DT ) int !?(                DT * );
-forall( dtype DT ) int !?( const          DT * );
-forall( dtype DT ) int !?(       volatile DT * );
-forall( dtype DT ) int !?( const volatile DT * );
-forall( ftype FT ) int !?( FT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.5 Multiplicative Operators
-//
-// ------------------------------------------------------------
-
-signed int		?*?( signed int, signed int ),				?/?( signed int, signed int ),			?%?( signed int, signed int );
-unsigned int		?*?( unsigned int, unsigned int ),			?/?( unsigned int, unsigned int ),		?%?( unsigned int, unsigned int );
-signed long int		?*?( signed long int, signed long int ),		?/?( signed long int, signed long int ),	?%?( signed long int, signed long int );
-unsigned long int	?*?( unsigned long int, unsigned long int ),		?/?( unsigned long int, unsigned long int ),	?%?( unsigned long int, unsigned long int );
-signed long long int	?*?( signed long long int, signed long long int ),	?/?( signed long long int, signed long long int ), ?%?( signed long long int, signed long long int );
-unsigned long long int	?*?( unsigned long long int, unsigned long long int ),	?/?( unsigned long long int, unsigned long long int ), ?%?( unsigned long long int, unsigned long long int );
-float			?*?( float, float ),					?/?( float, float );
-double			?*?( double, double ),					?/?( double, double );
-long double		?*?( long double, long double ),			?/?( long double, long double );
-// gcc does not support _Imaginary
-//float _Imaginary	?*?( float _Imaginary, float _Imaginary),		?/?( float _Imaginary, float _Imaginary );
-//double _Imaginary	?*?( double _Imaginary, double _Imaginary),		?/?( double _Imaginary, double _Imaginary );
-//long double _Imaginary	?*?( long double _Imaginary, long double _Imaginary),	?/?( long double _Imaginary, long double _Imaginary );
-float _Complex		?*?( float _Complex, float _Complex ),			?/?( float _Complex, float _Complex );
-double _Complex		?*?( double _Complex, double _Complex ),		?/?( double _Complex, double _Complex );
-long double _Complex	?*?( long double _Complex, long double _Complex ),	?/?( long double _Complex, long double _Complex );
-
-// ------------------------------------------------------------
-//
-// Section 4.6 Additive Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?+?( _Bool, _Bool ),					?-?( _Bool, _Bool );
-signed int		?+?( signed int, signed int ),				?-?( signed int, signed int );
-unsigned int		?+?( unsigned int, unsigned int ),			?-?( unsigned int, unsigned int );
-signed long int		?+?( signed long int, signed long int ),		?-?( signed long int, signed long int );
-unsigned long int	?+?( unsigned long int, unsigned long int ),		?-?( unsigned long int, unsigned long int );
-signed long long int	?+?( signed long long int, long long int  signed),	?-?( signed long long int, signed long long int );
-unsigned long long int	?+?( unsigned long long int, unsigned long long int ),	?-?( unsigned long long int, unsigned long long int );
-float			?+?( float, float ),					?-?( float, float );
-double			?+?( double, double ),					?-?( double, double );
-long double		?+?( long double, long double ),			?-?( long double, long double );
-float _Complex		?+?( float _Complex, float _Complex ),			?-?( float _Complex, float _Complex );
-double _Complex		?+?( double _Complex, double _Complex ),		?-?( double _Complex, double _Complex );
-long double _Complex	?+?( long double _Complex, long double _Complex ),	?-?( long double _Complex, long double _Complex );
-
-forall( dtype T | sized(T) ) T *		?+?(		    T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) T *		?+?(	      ptrdiff_t,		T * );
-forall( dtype T | sized(T) ) const T *		?+?( const	    T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?+?(	      ptrdiff_t, const		T * );
-forall( dtype T | sized(T) ) volatile T *	?+?(	   volatile T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?+?(	      ptrdiff_t,       volatile T * );
-forall( dtype T | sized(T) ) const volatile T *	?+?( const volatile T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?+?(	      ptrdiff_t, const volatile T * );
-forall( dtype T | sized(T) ) T *		?-?(		    T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?-?( const	    T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?-?(	   volatile T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?-?( const volatile T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) ptrdiff_t		?-?( const volatile T *, const volatile T * );
-
-// ------------------------------------------------------------
-//
-// Section 4.7 Bitwise Shift Operators
-//
-// ------------------------------------------------------------
-
-signed int		?<<?( signed int, signed int ),				?>>?( signed int, signed int );
-unsigned int		?<<?( unsigned int, unsigned int ),			?>>?( unsigned int, unsigned int );
-signed long int		?<<?( signed long int, signed long int ),		?>>?( signed long int, signed long int );
-unsigned long int	?<<?( unsigned long int, unsigned long int ),		?>>?( unsigned long int, unsigned long int );
-signed long long int	?<<?( signed long long int, signed long long int ),	?>>?( signed long long int, signed long long int );
-unsigned long long int	?<<?( unsigned long long int, unsigned long long int ),	?>>?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.8 Relational Operators
-//
-// ------------------------------------------------------------
-
-signed int ?<?( _Bool, _Bool ),						?<=?( _Bool, _Bool ),
-	   ?>?( _Bool, _Bool ),						?>=?( _Bool, _Bool );
-signed int ?<?( char, char ),						?<=?( char, char ),
-	   ?>?( char, char ),						?>=?( char, char );
-signed int ?<?( signed char, signed char ),				?<=?( signed char, signed char ),
-	   ?>?( signed char, signed char ),				?>=?( signed char, signed char );
-signed int ?<?( unsigned char, unsigned char ),				?<=?( unsigned char, unsigned char ),
-	   ?>?( unsigned char, unsigned char ),				?>=?( unsigned char, unsigned char );
-signed int ?<?( signed short, signed short ),				?<=?( signed short, signed short ),
-	   ?>?( signed short, signed short ),				?>=?( signed short, signed short );
-signed int ?<?( unsigned short, unsigned short ),			?<=?( unsigned short, unsigned short ),
-	   ?>?( unsigned short, unsigned short ),			?>=?( unsigned short, unsigned short );
-signed int ?<?( signed int, signed int ),				?<=?( signed int, signed int ),
-	   ?>?( signed int, signed int ),				?>=?( signed int, signed int );
-signed int ?<?( unsigned int, unsigned int ),				?<=?( unsigned int, unsigned int ),
-	   ?>?( unsigned int, unsigned int ),				?>=?( unsigned int, unsigned int );
-signed int ?<?( signed long int, signed long int ),			?<=?( signed long int, signed long int ),
-	   ?>?( signed long int, signed long int ),			?>=?( signed long int, signed long int );
-signed int ?<?( unsigned long int, unsigned long int ),			?<=?( unsigned long int, unsigned long int ),
-	   ?>?( unsigned long int, unsigned long int ),			?>=?( unsigned long int, unsigned long int );
-signed int ?<?( signed long long int, signed long long int ),		?<=?( signed long long int, signed long long int ),
-	   ?>?( signed long long int, signed long long int ),		?>=?( signed long long int, signed long long int );
-signed int ?<?( unsigned long long int, unsigned long long int ),	?<=?( unsigned long long int, unsigned long long int ),
-	   ?>?( unsigned long long int, unsigned long long int ),	?>=?( unsigned long long int, unsigned long long int );
-signed int ?<?( float, float ),						?<=?( float, float ),
-	   ?>?( float, float ),						?>=?( float, float );
-signed int ?<?( double, double ),					?<=?( double, double ),
-	   ?>?( double, double ),					?>=?( double, double );
-signed int ?<?( long double, long double ),				?<=?( long double, long double ),
-	   ?>?( long double, long double ),				?>=?( long double, long double );
-
-forall( dtype DT ) signed int ?<?(                 DT *,                DT * );
-forall( dtype DT ) signed int ?<?(  const          DT *, const          DT * );
-forall( dtype DT ) signed int ?<?(        volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
-
-forall( dtype DT ) signed int ?>?(                 DT *,                DT * );
-forall( dtype DT ) signed int ?>?(  const          DT *, const          DT * );
-forall( dtype DT ) signed int ?>?(        volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
-
-forall( dtype DT ) signed int ?<=?(                 DT *,                DT * );
-forall( dtype DT ) signed int ?<=?(  const          DT *, const          DT * );
-forall( dtype DT ) signed int ?<=?(        volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
-
-forall( dtype DT ) signed int ?>=?(                 DT *,                DT * );
-forall( dtype DT ) signed int ?>=?(  const          DT *, const          DT * );
-forall( dtype DT ) signed int ?>=?(        volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.9 Equality Operators
-//
-// ------------------------------------------------------------
-
-signed int ?==?( _Bool, _Bool ),							?!=?( _Bool, _Bool );
-signed int ?==?( char, char ),								?!=?( char, char );
-signed int ?==?( signed char, signed char ),				?!=?( signed char, signed char );
-signed int ?==?( unsigned char, unsigned char ),			?!=?( unsigned char, unsigned char );
-signed int ?==?( signed short, signed short ),				?!=?( signed short, signed short );
-signed int ?==?( unsigned short, unsigned short ),			?!=?( unsigned short, unsigned short );
-signed int ?==?( signed int, signed int ),					?!=?( signed int, signed int );
-signed int ?==?( unsigned int, unsigned int ),					?!=?( unsigned int, unsigned int );
-signed int ?==?( signed long int, signed long int ),				?!=?( signed long int, signed long int );
-signed int ?==?( unsigned long int, unsigned long int ),			?!=?( unsigned long int, unsigned long int );
-signed int ?==?( signed long long int, long long int  signed),		?!=?( signed long long int, signed long long int );
-signed int ?==?( unsigned long long int, unsigned long long int ),	?!=?( unsigned long long int, unsigned long long int );
-signed int ?==?( float, float ),							?!=?( float, float );
-signed int ?==?( double, double ),							?!=?( double, double );
-signed int ?==?( long double, long double ),					?!=?( long double, long double );
-signed int ?==?( float _Complex, float _Complex ),				?!=?( float _Complex, float _Complex );
-signed int ?==?( double _Complex, double _Complex ),				?!=?( double _Complex, double _Complex );
-signed int ?==?( long double _Complex, long double _Complex ),		?!=?( long double _Complex, long double _Complex );
-signed int ?==?( zero_t, zero_t ),							?!=?( zero_t, zero_t );
-signed int ?==?( one_t, one_t ),							?!=?( one_t, one_t );
-
-forall( dtype DT ) signed int ?==?(		   DT *,		DT * );
-forall( dtype DT ) signed int ?==?( const	   DT *, const		DT * );
-forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
-forall( ftype FT ) signed int ?==?( FT *, FT * );
-forall( dtype DT ) signed int ?!=?(		   DT *,		DT * );
-forall( dtype DT ) signed int ?!=?( const	   DT *, const		DT * );
-forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
-forall( ftype FT ) signed int ?!=?( FT *, FT * );
-
-// forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
-// forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
-// forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
-// forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
-
-// forall( dtype DT ) signed int ?==?( const volatile DT *, zero_t );
-// forall( dtype DT ) signed int ?==?( zero_t, const volatile DT * );
-// forall( ftype FT ) signed int ?==?( FT *, zero_t );
-// forall( ftype FT ) signed int ?==?( zero_t, FT * );
-// forall( dtype DT ) signed int ?!=?( const volatile DT *, zero_t );
-// forall( dtype DT ) signed int ?!=?( zero_t, const volatile DT * );
-// forall( ftype FT ) signed int ?!=?( FT *, zero_t );
-// forall( ftype FT ) signed int ?!=?( zero_t, FT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.10 Bitwise AND Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?&?( _Bool, _Bool );
-signed int		?&?( signed int, signed int );
-unsigned int		?&?( unsigned int, unsigned int );
-signed long int		?&?( signed long int, signed long int );
-unsigned long int	?&?( unsigned long int, unsigned long int );
-signed long long int	?&?( signed long long int, signed long long int );
-unsigned long long int	?&?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.11 Bitwise XOR Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?^?( _Bool, _Bool );
-signed int		?^?( signed int, signed int );
-unsigned int		?^?( unsigned int, unsigned int );
-signed long int		?^?( signed long int, signed long int );
-unsigned long int	?^?( unsigned long int, unsigned long int );
-signed long long int	?^?( signed long long int, signed long long int );
-unsigned long long int	?^?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.12 Bitwise OR Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?|?( _Bool, _Bool );
-signed int		?|?( signed int, signed int );
-unsigned int		?|?( unsigned int, unsigned int );
-signed long int		?|?( signed long int, signed long int );
-unsigned long int	?|?( unsigned long int, unsigned long int );
-signed long long int	?|?( signed long long int, signed long long int );
-unsigned long long int	?|?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.16 Assignment Operator
-//
-// ------------------------------------------------------------
-
-forall( ftype FT ) FT *			?=?( FT *&, FT * );
-forall( ftype FT ) FT *			?=?( FT * volatile &, FT * );
-
-forall( dtype DT ) DT *			?=?(		     DT *	   &,			DT * );
-forall( dtype DT ) DT *			?=?(		     DT * volatile &,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   &,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile &,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   &, const		DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile &, const		DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   &,			DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile &,			DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   &,	    volatile	DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile &,	    volatile	DT * );
-
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   &,			DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &,			DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &, const		DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &, const		DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &,	    volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &,	    volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &, const volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &, const volatile	DT * );
-
-forall( dtype DT ) void *		 ?=?(		     void *	     &,			DT * );
-forall( dtype DT ) void *		 ?=?(		     void * volatile &,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void *	     &,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void * volatile &,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void *	     &, const		DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void * volatile &, const		DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     &,			DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile &,			DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     &,	      volatile	DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile &,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &,			DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,			DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &, const		DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const		DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &, const volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const volatile	DT * );
-
-//forall( dtype DT ) DT *			?=?(		    DT *	  &, zero_t );
-//forall( dtype DT ) DT *			?=?(		    DT * volatile &, zero_t );
-forall( dtype DT ) const DT *		?=?( const	    DT *	  &, zero_t );
-forall( dtype DT ) const DT *		?=?( const	    DT * volatile &, zero_t );
-//forall( dtype DT ) volatile DT *	?=?( volatile	    DT *	  &, zero_t );
-//forall( dtype DT ) volatile DT *	?=?( volatile	    DT * volatile &, zero_t );
-forall( dtype DT ) const volatile DT *	?=?( const volatile DT *	  &, zero_t );
-forall( dtype DT ) const volatile DT *	?=?( const volatile DT * volatile &, zero_t );
-
-forall( ftype FT ) FT *			?=?( FT *	   &, zero_t );
-forall( ftype FT ) FT *			?=?( FT * volatile &, zero_t );
-
-forall( dtype T | sized(T) ) T *		?+=?(		     T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) T *		?+=?(		     T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?+=?( const	     T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?+=?( const	     T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?+=?(	    volatile T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?+=?(	    volatile T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?+=?( const volatile T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?+=?( const volatile T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) T *		?-=?(		     T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) T *		?-=?(		     T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?-=?( const	     T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?-=?( const	     T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?-=?(	    volatile T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?-=?(	    volatile T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?-=?( const volatile T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?-=?( const volatile T * volatile &, ptrdiff_t );
-
-_Bool			?=?( _Bool &, _Bool ),					?=?( volatile _Bool &, _Bool );
-char			?=?( char &, char ),					?=?( volatile char &, char );
-char signed		?=?( char signed &, char signed ),			?=?( volatile char signed &, char signed );
-char unsigned		?=?( char unsigned &, char unsigned ),			?=?( volatile char unsigned &, char unsigned );
-int short		?=?( int short &, int short ),				?=?( volatile int short &, int short );
-int short unsigned	?=?( int short unsigned &, int short unsigned ),	?=?( volatile int short unsigned &, int short unsigned );
-signed int		?=?( signed int &, signed int ),			?=?( volatile signed int &, signed int );
-unsigned int		?=?( unsigned &, unsigned ),				?=?( volatile unsigned &, unsigned );
-signed long int		?=?( signed long int &, signed long int ),		?=?( volatile signed long int &, signed long int );
-unsigned long int	?=?( unsigned long int &, unsigned long int ),		?=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?=?( signed long long int &, signed long long int ),	?=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?=?( unsigned long long int &, unsigned long long int ), ?=?( volatile unsigned long long int &, unsigned long long int );
-zero_t			?=?( zero_t &, zero_t );
-one_t			?=?( one_t &, one_t );
-
-
-char			?*=?( char &, char ),					?*=?( volatile char &, char );
-char signed		?*=?( char signed &, char signed ),			?*=?( volatile char signed &, char signed );
-char unsigned		?*=?( char unsigned &, char unsigned ),			?*=?( volatile char unsigned &, char unsigned );
-int short		?*=?( int short &, int short ),				?*=?( volatile int short &, int short );
-int short unsigned	?*=?( int short unsigned &, int short unsigned ),	?*=?( volatile int short unsigned &, int short unsigned );
-signed int		?*=?( signed int &, signed int ),			?*=?( volatile signed int &, signed int );
-unsigned int		?*=?( unsigned &, unsigned ),				?*=?( volatile unsigned &, unsigned );
-signed long int		?*=?( signed long int &, signed long int ),		?*=?( volatile signed long int &, signed long int );
-unsigned long int	?*=?( unsigned long int &, unsigned long int ),		?*=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?*=?( signed long long int &, signed long long int ),	?*=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?*=?( unsigned long long int &, unsigned long long int ), ?*=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?/=?( _Bool &, _Bool ),					?/=?( volatile _Bool &, _Bool );
-char			?/=?( char &, char ),					?/=?( volatile char &, char );
-char signed		?/=?( char signed &, char signed ),			?/=?( volatile char signed &, char signed );
-char unsigned		?/=?( char unsigned &, char unsigned ),			?/=?( volatile char unsigned &, char unsigned );
-int short		?/=?( int short &, int short ),				?/=?( volatile int short &, int short );
-int short unsigned	?/=?( int short unsigned &, int short unsigned ),	?/=?( volatile int short unsigned &, int short unsigned );
-signed int		?/=?( signed int &, signed int ),			?/=?( volatile signed int &, signed int );
-unsigned int		?/=?( unsigned &, unsigned ),				?/=?( volatile unsigned &, unsigned );
-signed long int		?/=?( signed long int &, signed long int ),		?/=?( volatile signed long int &, signed long int );
-unsigned long int	?/=?( unsigned long int &, unsigned long int ),		?/=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?/=?( signed long long int &, signed long long int ),	?/=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?/=?( unsigned long long int &, unsigned long long int ), ?/=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?%=?( _Bool &, _Bool ),					?%=?( volatile _Bool &, _Bool );
-char			?%=?( char &, char ),					?%=?( volatile char &, char );
-char signed		?%=?( char signed &, char signed ),			?%=?( volatile char signed &, char signed );
-char unsigned		?%=?( char unsigned &, char unsigned ),			?%=?( volatile char unsigned &, char unsigned );
-int short		?%=?( int short &, int short ),				?%=?( volatile int short &, int short );
-int short unsigned	?%=?( int short unsigned &, int short unsigned ),	?%=?( volatile int short unsigned &, int short unsigned );
-signed int		?%=?( signed int &, signed int ),			?%=?( volatile signed int &, signed int );
-unsigned int		?%=?( unsigned &, unsigned ),				?%=?( volatile unsigned &, unsigned );
-signed long int		?%=?( signed long int &, signed long int ),		?%=?( volatile signed long int &, signed long int );
-unsigned long int	?%=?( unsigned long int &, unsigned long int ),		?%=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?%=?( signed long long int &, signed long long int ),	?%=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?%=?( unsigned long long int &, unsigned long long int ), ?%=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?+=?( _Bool &, _Bool ),					?+=?( volatile _Bool &, _Bool );
-char			?+=?( char &, char ),					?+=?( volatile char &, char );
-char signed		?+=?( char signed &, char signed ),			?+=?( volatile char signed &, char signed );
-char unsigned		?+=?( char unsigned &, char unsigned ),			?+=?( volatile char unsigned &, char unsigned );
-int short		?+=?( int short &, int short ),				?+=?( volatile int short &, int short );
-int short unsigned	?+=?( int short unsigned &, int short unsigned ),	?+=?( volatile int short unsigned &, int short unsigned );
-signed int		?+=?( signed int &, signed int ),			?+=?( volatile signed int &, signed int );
-unsigned int		?+=?( unsigned &, unsigned ),				?+=?( volatile unsigned &, unsigned );
-signed long int		?+=?( signed long int &, signed long int ),		?+=?( volatile signed long int &, signed long int );
-unsigned long int	?+=?( unsigned long int &, unsigned long int ),		?+=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?+=?( signed long long int &, signed long long int ),	?+=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?+=?( unsigned long long int &, unsigned long long int ), ?+=?( volatile unsigned long long int &, unsigned long long int );
-//signed int128		?+=?( signed int128 &, signed int128 ),			?+=?( volatile signed int128 &, signed int128 );
-//unsigned int128		?+=?( unsigned int128 &, unsigned int128 ),		?+=?( volatile unsigned int128 &, unsigned int128 );
-
-_Bool			?-=?( _Bool &, _Bool ),					?-=?( volatile _Bool &, _Bool );
-char			?-=?( char &, char ),					?-=?( volatile char &, char );
-char signed		?-=?( char signed &, char signed ),			?-=?( volatile char signed &, char signed );
-char unsigned		?-=?( char unsigned &, char unsigned ),			?-=?( volatile char unsigned &, char unsigned );
-int short		?-=?( int short &, int short ),				?-=?( volatile int short &, int short );
-int short unsigned	?-=?( int short unsigned &, int short unsigned ),	?-=?( volatile int short unsigned &, int short unsigned );
-signed int		?-=?( signed int &, signed int ),			?-=?( volatile signed int &, signed int );
-unsigned int		?-=?( unsigned &, unsigned ),				?-=?( volatile unsigned &, unsigned );
-signed long int		?-=?( signed long int &, signed long int ),		?-=?( volatile signed long int &, signed long int );
-unsigned long int	?-=?( unsigned long int &, unsigned long int ),		?-=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?-=?( signed long long int &, signed long long int ),	?-=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?-=?( unsigned long long int &, unsigned long long int ), ?-=?( volatile unsigned long long int &, unsigned long long int );
-
-char			?<<=?( char &, char ),					?<<=?( volatile char &, char );
-char signed		?<<=?( char signed &, char signed ),			?<<=?( volatile char signed &, char signed );
-char unsigned		?<<=?( char unsigned &, char unsigned ),		?<<=?( volatile char unsigned &, char unsigned );
-int short		?<<=?( int short &, int short ),			?<<=?( volatile int short &, int short );
-int short unsigned	?<<=?( int short unsigned &, int short unsigned ),	?<<=?( volatile int short unsigned &, int short unsigned );
-signed int		?<<=?( signed int &, signed int ),			?<<=?( volatile signed int &, signed int );
-unsigned int		?<<=?( unsigned &, unsigned ),				?<<=?( volatile unsigned &, unsigned );
-signed long int		?<<=?( signed long int &, signed long int ),		?<<=?( volatile signed long int &, signed long int );
-unsigned long int	?<<=?( unsigned long int &, unsigned long int ),	?<<=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?<<=?( signed long long int &, signed long long int ),	?<<=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?<<=?( unsigned long long int &, unsigned long long int ), ?<<=?( volatile unsigned long long int &, unsigned long long int );
-
-char			?>>=?( char &, char ),					?>>=?( volatile char &, char );
-char signed		?>>=?( char signed &, char signed ),			?>>=?( volatile char signed &, char signed );
-char unsigned		?>>=?( char unsigned &, char unsigned ),		?>>=?( volatile char unsigned &, char unsigned );
-int short		?>>=?( int short &, int short ),			?>>=?( volatile int short &, int short );
-int short unsigned	?>>=?( int short unsigned &, int short unsigned ),	?>>=?( volatile int short unsigned &, int short unsigned );
-signed int		?>>=?( signed int &, signed int ),			?>>=?( volatile signed int &, signed int );
-unsigned int		?>>=?( unsigned &, unsigned ),				?>>=?( volatile unsigned &, unsigned );
-signed long int		?>>=?( signed long int &, signed long int ),		?>>=?( volatile signed long int &, signed long int );
-unsigned long int	?>>=?( unsigned long int &, unsigned long int ),	?>>=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?>>=?( signed long long int &, signed long long int ),	?>>=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?>>=?( unsigned long long int &, unsigned long long int ), ?>>=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?&=?( _Bool &, _Bool ),					?&=?( volatile _Bool &, _Bool );
-char			?&=?( char &, char ),					?&=?( volatile char &, char );
-char signed		?&=?( char signed &, char signed ),			?&=?( volatile char signed &, char signed );
-char unsigned		?&=?( char unsigned &, char unsigned ),			?&=?( volatile char unsigned &, char unsigned );
-int short		?&=?( int short &, int short ),				?&=?( volatile int short &, int short );
-int short unsigned	?&=?( int short unsigned &, int short unsigned ),	?&=?( volatile int short unsigned &, int short unsigned );
-signed int		?&=?( signed int &, signed int ),			?&=?( volatile signed int &, signed int );
-unsigned int		?&=?( unsigned &, unsigned ),				?&=?( volatile unsigned &, unsigned );
-signed long int		?&=?( signed long int &, signed long int ),		?&=?( volatile signed long int &, signed long int );
-unsigned long int	?&=?( unsigned long int &, unsigned long int ),		?&=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?&=?( signed long long int &, signed long long int ),	?&=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?&=?( unsigned long long int &, unsigned long long int ), ?&=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?|=?( _Bool &, _Bool ),					?|=?( volatile _Bool &, _Bool );
-char			?|=?( char &, char ),					?|=?( volatile char &, char );
-char signed		?|=?( char signed &, char signed ),			?|=?( volatile char signed &, char signed );
-char unsigned		?|=?( char unsigned &, char unsigned ),			?|=?( volatile char unsigned &, char unsigned );
-int short		?|=?( int short &, int short ),				?|=?( volatile int short &, int short );
-int short unsigned	?|=?( int short unsigned &, int short unsigned ),	?|=?( volatile int short unsigned &, int short unsigned );
-signed int		?|=?( signed int &, signed int ),			?|=?( volatile signed int &, signed int );
-unsigned int		?|=?( unsigned &, unsigned ),				?|=?( volatile unsigned &, unsigned );
-signed long int		?|=?( signed long int &, signed long int ),		?|=?( volatile signed long int &, signed long int );
-unsigned long int	?|=?( unsigned long int &, unsigned long int ),		?|=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?|=?( signed long long int &, signed long long int ),	?|=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?|=?( unsigned long long int &, unsigned long long int ), ?|=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?^=?( _Bool &, _Bool ),					?^=?( volatile _Bool &, _Bool );
-char			?^=?( char &, char ),					?^=?( volatile char &, char );
-char signed		?^=?( char signed &, char signed ),			?^=?( volatile char signed &, char signed );
-char unsigned		?^=?( char unsigned &, char unsigned ),			?^=?( volatile char unsigned &, char unsigned );
-int short		?^=?( int short &, int short ),				?^=?( volatile int short &, int short );
-int short unsigned	?^=?( int short unsigned &, int short unsigned ),	?^=?( volatile int short unsigned &, int short unsigned );
-signed int		?^=?( signed int &, signed int ),			?^=?( volatile signed int &, signed int );
-unsigned int		?^=?( unsigned &, unsigned ),				?^=?( volatile unsigned &, unsigned );
-signed long int		?^=?( signed long int &, signed long int ),		?^=?( volatile signed long int &, signed long int );
-unsigned long int	?^=?( unsigned long int &, unsigned long int ),		?^=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?^=?( signed long long int &, signed long long int ),	?^=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?^=?( unsigned long long int &, unsigned long long int ), ?^=?( volatile unsigned long long int &, unsigned long long int );
-
-float			?=?(  float &, float ), ?=?(  volatile float &, float ),
-			?*=?( float &, float ), ?*=?( volatile float &, float ),
-			?/=?( float &, float ), ?/=?( volatile float &, float ),
-			?+=?( float &, float ), ?+=?( volatile float &, float ),
-			?-=?( float &, float ), ?-=?( volatile float &, float );
-
-double			?=?(  double &, double ), ?=?(  volatile double &, double ),
-			?*=?( double &, double ), ?*=?( volatile double &, double ),
-			?/=?( double &, double ), ?/=?( volatile double &, double ),
-			?+=?( double &, double ), ?+=?( volatile double &, double ),
-			?-=?( double &, double ), ?-=?( volatile double &, double );
-
-long double		?=?(  long double &, long double ), ?=?(  volatile long double &, long double ),
-			?*=?( long double &, long double ), ?*=?( volatile long double &, long double ),
-			?/=?( long double &, long double ), ?/=?( volatile long double &, long double ),
-			?+=?( long double &, long double ), ?+=?( volatile long double &, long double ),
-			?-=?( long double &, long double ), ?-=?( volatile long double &, long double );
-
-float _Complex		?=?(  float _Complex &, float _Complex ), ?=?(  volatile float _Complex &, float _Complex ),
-			?*=?( float _Complex &, float _Complex ), ?*=?( volatile float _Complex &, float _Complex ),
-			?/=?( float _Complex &, float _Complex ), ?/=?( volatile float _Complex &, float _Complex ),
-			?+=?( float _Complex &, float _Complex ), ?+=?( volatile float _Complex &, float _Complex ),
-			?-=?( float _Complex &, float _Complex ), ?-=?( volatile float _Complex &, float _Complex );
-
-double _Complex		?=?(  double _Complex &, double _Complex ), ?=?(  volatile double _Complex &, double _Complex ),
-			?*=?( double _Complex &, double _Complex ), ?*=?( volatile double _Complex &, double _Complex ),
-			?/=?( double _Complex &, double _Complex ), ?/=?( volatile double _Complex &, double _Complex ),
-			?+=?( double _Complex &, double _Complex ), ?+=?( volatile double _Complex &, double _Complex ),
-			?-=?( double _Complex &, double _Complex ), ?-=?( volatile double _Complex &, double _Complex );
-
-long double _Complex	?=?(  long double _Complex &, long double _Complex ), ?=?(  volatile long double _Complex &, long double _Complex ),
-			?*=?( long double _Complex &, long double _Complex ), ?*=?( volatile long double _Complex &, long double _Complex ),
-			?/=?( long double _Complex &, long double _Complex ), ?/=?( volatile long double _Complex &, long double _Complex ),
-			?+=?( long double _Complex &, long double _Complex ), ?+=?( volatile long double _Complex &, long double _Complex ),
-			?-=?( long double _Complex &, long double _Complex ), ?-=?( volatile long double _Complex &, long double _Complex );
-
-
-// ------------------------------------------------------------
-//
-// Section ??? Constructors and Destructors
-//
-// ------------------------------------------------------------
-
-// default ctor
-void	?{}( _Bool & );
-void	?{}( char & );
-void	?{}( unsigned char & );
-void	?{}( char signed & );
-void	?{}( int short & );
-void	?{}( int short unsigned & );
-void	?{}( signed int & );
-void	?{}( unsigned int & );
-void	?{}( signed long int & );
-void	?{}( unsigned long int & );
-void	?{}( signed long long int & );
-void	?{}( unsigned long long int & );
-void	?{}( float & );
-void	?{}( double & );
-void	?{}( long double & );
-void	?{}( float _Complex & );
-void	?{}( double _Complex & );
-void	?{}( long double _Complex & );
-void	?{}( zero_t & );
-void	?{}( one_t & );
-
-// copy ctor
-void	?{}( _Bool &, _Bool );
-void	?{}( char &, char );
-void	?{}( unsigned char &, unsigned char );
-void	?{}( char signed &, char signed );
-void	?{}( int short &, int short );
-void	?{}( int short unsigned &, int short unsigned );
-void	?{}( signed int &, signed int);
-void	?{}( unsigned int &, unsigned int);
-void	?{}( signed long int &, signed long int);
-void	?{}( unsigned long int &, unsigned long int);
-void	?{}( signed long long int &, signed long long int);
-void	?{}( unsigned long long int &, unsigned long long int);
-void	?{}( float &, float);
-void	?{}( double &, double);
-void	?{}( long double &, long double);
-void	?{}( float _Complex &, float _Complex);
-void	?{}( double _Complex &, double _Complex);
-void	?{}( long double _Complex &, long double _Complex);
-void	?{}( zero_t &, zero_t );
-void	?{}( one_t &, one_t );
-
-// dtor
-void	^?{}( _Bool & );
-void	^?{}( char & );
-void	^?{}( char unsigned & );
-void	^?{}( char signed & );
-void	^?{}( int short & );
-void	^?{}( int short unsigned & );
-void	^?{}( signed int & );
-void	^?{}( unsigned int & );
-void	^?{}( signed long int & );
-void	^?{}( unsigned long int & );
-void	^?{}( signed long long int & );
-void	^?{}( unsigned long long int & );
-void	^?{}( float & );
-void	^?{}( double & );
-void	^?{}( long double & );
-void	^?{}( float _Complex & );
-void	^?{}( double _Complex & );
-void	^?{}( long double _Complex & );
-void	^?{}( zero_t & );
-void	^?{}( one_t & );
-
-// // default ctor
-// forall( dtype DT ) void	 ?{}(		     DT ** );
-// forall( dtype DT ) void	 ?{}( const	     DT ** );
-// forall( dtype DT ) void	 ?{}(	    volatile DT ** );
-// forall( dtype DT ) void	 ?{}( const volatile DT ** );
-
-// // copy ctor
-// forall( dtype DT ) void	 ?{}(		     DT **, DT* );
-// forall( dtype DT ) void	 ?{}( const	     DT **, DT* );
-// forall( dtype DT ) void	 ?{}(	    volatile DT **, DT* );
-// forall( dtype DT ) void	 ?{}( const volatile DT **, DT* );
-
-// // dtor
-// forall( dtype DT ) void	^?{}(		     DT ** );
-// forall( dtype DT ) void	^?{}( const	     DT ** );
-// forall( dtype DT ) void	^?{}(	    volatile DT ** );
-// forall( dtype DT ) void	^?{}( const volatile DT ** );
-
-// copied from assignment section
-// copy constructors
-forall( ftype FT ) void ?{}( FT *&, FT * );
-forall( ftype FT ) void ?{}( FT * volatile &, FT * );
-
-forall( dtype DT ) void ?{}(		     DT *	   &,			DT * );
-forall( dtype DT ) void ?{}( const	     DT *	   &,			DT * );
-forall( dtype DT ) void ?{}( const	     DT *	   &, const		DT * );
-forall( dtype DT ) void ?{}(	   volatile  DT *	   &,			DT * );
-forall( dtype DT ) void ?{}(	   volatile  DT *	   &,	    volatile	DT * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   &,			DT * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   &, const		DT * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   &,	    volatile	DT * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   &, const volatile	DT * );
-
-forall( dtype DT ) void ?{}(		     void *	     &,			DT * );
-forall( dtype DT ) void ?{}( const	     void *	     &,			DT * );
-forall( dtype DT ) void ?{}( const	     void *	     &, const		DT * );
-forall( dtype DT ) void ?{}(	    volatile void *	     &,			DT * );
-forall( dtype DT ) void ?{}(	    volatile void *	     &,	      volatile	DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     &,			DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     &, const		DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     &,	      volatile	DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     &, const volatile	DT * );
-
-//forall( dtype DT ) void ?{}(		    DT *	  &, zero_t );
-//forall( dtype DT ) void ?{}(		    DT * volatile &, zero_t );
-forall( dtype DT ) void ?{}( const	    DT *	  &, zero_t );
-//forall( dtype DT ) void ?{}( volatile	    DT *	  &, zero_t );
-//forall( dtype DT ) void ?{}( volatile	    DT * volatile &, zero_t );
-forall( dtype DT ) void ?{}( const volatile DT *	  &, zero_t );
-
-forall( ftype FT ) void	?{}( FT *	   &, zero_t );
-
-// default ctors
-forall( ftype FT ) void	?{}( FT *	   & );
-
-forall( dtype DT ) void	?{}(		     DT *	   &);
-forall( dtype DT ) void	?{}( const	     DT *	   &);
-forall( dtype DT ) void	?{}(	   volatile  DT *	   &);
-forall( dtype DT ) void ?{}( const volatile  DT *	   &);
-
-void 	?{}(		    void *	    &);
-void 	?{}( const	    void *	    &);
-void 	?{}(	   volatile void *	    &);
-void 	?{}( const volatile void *	    &);
-
-// dtors
-forall( ftype FT ) void	^?{}( FT *	   & );
-
-forall( dtype DT ) void	^?{}(		     DT *	   &);
-forall( dtype DT ) void	^?{}( const	     DT *	   &);
-forall( dtype DT ) void	^?{}(	   volatile  DT *	   &);
-forall( dtype DT ) void ^?{}( const volatile  DT *	   &);
-
-void ^?{}(		    void *	    &);
-void ^?{}( const	    void *	    &);
-void ^?{}(	   volatile void *	    &);
-void ^?{}( const   volatile void *	    &);
-
-// Local Variables: //
-// mode: c //
-// tab-width: 8 //
-// End: //
Index: c/prelude/prototypes.awk
===================================================================
--- src/prelude/prototypes.awk	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,160 +1,0 @@
-#
-# Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-#
-# The contents of this file are covered under the licence agreement in the
-# file "LICENCE" distributed with Cforall.
-#
-# prototypes.awk --
-#
-# Author           : Peter A. Buhr
-# Created On       : Sat May 16 07:57:37 2015
-# Last Modified By : Peter A. Buhr
-# Last Modified On : Tue Jul  5 14:32:52 2016
-# Update Count     : 32
-#
-
-# http://llvm.org/svn/llvm-project/cfe/trunk/include/clang/Basic/Builtins.def
-
-BEGIN {
-  FS = "[( )]"
-    # order so string search is longest string
-    i=-1
-    types[i+=1] = "BOOL";						          vtypes[i] = "_Bool"
-    types[i+=1] = "UINTMAX";					        vtypes[i] = "unsigned long int"
-    types[i+=1] = "UINT16";					          vtypes[i] = "short int"
-    types[i+=1] = "UINT32";					          vtypes[i] = "int"
-    types[i+=1] = "UINT64";					          vtypes[i] = "long long int"
-    types[i+=1] = "UINT";						          vtypes[i] = "unsigned int"
-    types[i+=1] = "INTMAX";					          vtypes[i] = "long int"
-    types[i+=1] = "INTPTR";					          vtypes[i] = "int *"
-    types[i+=1] = "WINT";						          vtypes[i] = "unsigned int"
-    types[i+=1] = "INT";						          vtypes[i] = "int"
-    types[i+=1] = "ULONGLONG";				        vtypes[i] = "unsigned long long"
-    types[i+=1] = "ULONG";					          vtypes[i] = "unsigned long"
-    types[i+=1] = "UNSIGNED";					        vtypes[i] = "unsigned"
-    types[i+=1] = "COMPLEX_LONGDOUBLE";		    vtypes[i] = "_Complex long double"
-    types[i+=1] = "COMPLEX_DOUBLE";			      vtypes[i] = "_Complex double"
-    types[i+=1] = "COMPLEX_FLOAT";			      vtypes[i] = "_Complex float"
-    types[i+=1] = "LONGDOUBLEPTR";			      vtypes[i] = "long double *"
-    types[i+=1] = "LONGDOUBLE";				        vtypes[i] = "long double"
-    types[i+=1] = "LONGLONG";					        vtypes[i] = "long long"
-    types[i+=1] = "LONG";						          vtypes[i] = "long"
-    types[i+=1] = "DFLOAT32";					        vtypes[i] = "__Unsupported"
-    types[i+=1] = "DFLOAT64";					        vtypes[i] = "__Unsupported"
-    types[i+=1] = "DFLOAT128";				        vtypes[i] = "__Unsupported"
-    types[i+=1] = "DOUBLEPTR";			    	    vtypes[i] = "double *"
-    types[i+=1] = "DOUBLE";					          vtypes[i] = "double"
-    types[i+=1] = "FLOATPTR";					        vtypes[i] = "float *"
-    types[i+=1] = "FLOAT128X";						    vtypes[i] = "__Unsupported"
-    types[i+=1] = "FLOAT128";						      vtypes[i] = "__Unsupported"
-    types[i+=1] = "FLOAT64X";						      vtypes[i] = "__Unsupported"
-    types[i+=1] = "FLOAT64";						      vtypes[i] = "__Unsupported"
-    types[i+=1] = "FLOAT32X";						      vtypes[i] = "__Unsupported"
-    types[i+=1] = "FLOAT32";						      vtypes[i] = "__Unsupported"
-    types[i+=1] = "FLOAT16";						      vtypes[i] = "__Unsupported"
-    types[i+=1] = "FLOAT";					          vtypes[i] = "float"
-    types[i+=1] = "CONST_VPTR";					      vtypes[i] = "const volatile void *"
-    types[i+=1] = "CONST_PTR";				        vtypes[i] = "const void *"
-    types[i+=1] = "CONST_STRING";				      vtypes[i] = "const char *"
-    types[i+=1] = "CONST_TM_PTR";			        vtypes[i] = "const struct tm *"
-    types[i+=1] = "PTR_FN_VOID_VAR_PTR_SIZE";	vtypes[i] = ""
-    types[i+=1] = "PTR_CONST_STRING";			    vtypes[i] = "char *const"
-    types[i+=1] = "PTRMODE_PTR";				      vtypes[i] = ""
-    types[i+=1] = "PTRPTR";					          vtypes[i] = "void **"
-    types[i+=1] = "VPTR";					            vtypes[i] = "volatile void *"
-    types[i+=1] = "PTR";						          vtypes[i] = "void *"
-    types[i+=1] = "VOID";						          vtypes[i] = "void"
-    types[i+=1] = "STRING";					          vtypes[i] = "char *"
-    types[i+=1] = "FILEPTR";					        vtypes[i] = "struct _IO_FILE *"
-    types[i+=1] = "SIZE";						          vtypes[i] = "unsigned long"
-    types[i+=1] = "VAR";						          vtypes[i] = "..."
-    types[i+=1] = "VALIST_ARG";				        vtypes[i] = "__builtin_va_list"
-    types[i+=1] = "VALIST_REF";				        vtypes[i] = "__builtin_va_list"
-    types[i+=1] = "UNWINDWORD";				        vtypes[i] = "void *"
-    types[i+=1] = "WORD";						          vtypes[i] = ""
-    types[i+=1] = "SSIZE";					          vtypes[i] = "long int"
-    types[i+=1] = "PID";						          vtypes[i] = "int"
-    types[i+=1] = "I16";						          vtypes[i] = "__int128"
-    types[i+=1] = "I8";						            vtypes[i] = "long long int"
-    types[i+=1] = "I4";						            vtypes[i] = "int"
-    types[i+=1] = "I2";						            vtypes[i] = "short"
-    types[i+=1] = "I1";						            vtypes[i] = "char"
-    N = i + 1
-} # BEGIN
-
-/BT_FN/ {
-    for (i = 1; i <= NF; i++) {
-      if( match($i, "BT_FN") != 0 ) {
-        prototypes[$i] = $i
-      }
-    }
-  }
-
-END {
-    printf( "#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)\n" );
-    printf( "#define FUNC_SIMPLE(RETURN, NAME, ARGS...) RETURN NAME(ARGS);\n" );
-    printf( "#define BT_LAST(NAME) FUNC_SIMPLE(void, NAME)\n\n" );
-
-    # generate C types for macros names
-    for ( i = 0; i < N; i += 1 ) {
-		printf( "#define BT_%s %s\n", types[i], vtypes[i] )
-    } # for
-    printf( "\n" )
-
-    for ( prototype in prototypes ) {
-      # printf( "//\"%s\"\n", prototype )
-      if ( index( "BT_LAST", prototype ) == 1 ) {
-        continue
-      } # if
-
-      printf( "#define %s(NAME) FUNC_SIMPLE(", prototype )
-
-      if ( sub( "BT_FN_", "", prototype ) == 0 ) {
-        printf( "\n********** BAD MACRO NAME \"%s\" **********\n", prototype )
-        exit 0
-      } # if
-
-      # generate function return type as macro
-      for ( t = 0; t < N; t += 1 ) {					# find longest match
-        type = types[t];
-        if ( index( prototype, type ) == 1 ) {		# found match
-          printf( "BT_%s, NAME", type )
-          sub( type, "", prototype )
-          break;
-        } # if
-      } # for
-
-      # generate function parameter types as macro
-      if ( index( prototype, "VAR" ) != 2 ) {			# C-style empty parameters ?
-        for ( p = 0; length( prototype ) > 0; p += 1 ) { # until all parameters types are removed
-          sub( "_", "", prototype)				# remove "_"
-          printf( ", ", type )
-          temp = prototype
-          for ( t = 0; t < N; t += 1 ) {			# find longest match
-            type = types[t];
-            if ( index( prototype, type ) == 1 ) { # found match
-              printf( "BT_%s", type )
-              sub( type, "", prototype )
-              break;
-            } # if
-          } # for
-          if ( temp == prototype ) {				# no match found for parameter in macro table
-            printf( "\n********** MISSING TYPE \"%s\" **********\n", prototype )
-            exit 0
-          } # if
-        } # for
-      } # if
-      printf( ")\n" )
-    } # for
-
-	# extras
-	printf( "\n#include \"builtins.def\"\n\n" );
-	printf( "\n#include \"sync-builtins.cf\"\n\n" );
-	printf( "extern const char *__PRETTY_FUNCTION__;\n" );
-} # END
-
-# Local Variables: #
-# tab-width: 4 #
-# mode: awk #
-# compile-command: "make install" #
-# End: #
Index: c/prelude/prototypes.c
===================================================================
--- src/prelude/prototypes.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)
-#include "builtins.def"
Index: c/prelude/prototypes.sed
===================================================================
--- src/prelude/prototypes.sed	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,22 +1,0 @@
-s/; /;\n/g  				#Make multi declaration lines into multiple lines
-/targetm/s/.*//				#Remove targetm declarations
-/__Unsupported/s/.*//			#Remove Unsupported types declarations
-s/void \(const char \*\)0\(\);//	#Remove void (const char \*)0();
-s/\"//g 					#Remove extraenous quotes in declarations
-/__builtin_/s/_ /_/g			#Remove extraenous spaces in declarations
-
-#Fix gcc overloading
-# various sed rules for the gcc sync builtins which are overloaded
-# kept here because they generate an acceptable approximate of the correct prototypes
-
-#/__sync_/s/_[0-9][0-9]*\(.*\)/\(\);/g	#hack since it will accept any parameters
-#/__atomic_/s/_[0-9][0-9]*\(.*\)/\(\);/g	#hack since it will accept any parameters
-
-#/_16/s/void \*/__int128 \*/g
-#/_8/s/void \*/long long int \*/g
-#/_4/s/void \*/int \*/g
-#/_2/s/void \*/short \*/g
-#/_1/s/void \*/char \*/g
-
-#s/([a-zA-Z0-9_ ]+)\s+__sync([a-z_]+)_([0-9]+)\((.*)\);/\1 __sync\2\(\4\,...); \1 __sync\2_\3\(\4\,...);/
-#s/([a-zA-Z0-9_ ]+)\s+__atomic([a-z_]+)_([0-9]+)\((.*)\);/\1 __atomic\2\(\4\); \1 __atomic\2_\3\(\4\);/
Index: c/prelude/sync-builtins.cf
===================================================================
--- src/prelude/sync-builtins.cf	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,889 +1,0 @@
-char __sync_fetch_and_add(volatile char *, char,...);
-char __sync_fetch_and_add_1(volatile char *, char,...);
-signed char __sync_fetch_and_add(volatile signed char *, signed char,...);
-signed char __sync_fetch_and_add_1(volatile signed char *, signed char,...);
-unsigned char __sync_fetch_and_add(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_fetch_and_add_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_fetch_and_add(volatile signed short *, signed short,...);
-signed short __sync_fetch_and_add_2(volatile signed short *, signed short,...);
-unsigned short __sync_fetch_and_add(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_fetch_and_add_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_fetch_and_add(volatile signed int *, signed int,...);
-signed int __sync_fetch_and_add_4(volatile signed int *, signed int,...);
-unsigned int __sync_fetch_and_add(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_fetch_and_add_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_fetch_and_add(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_fetch_and_add_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_fetch_and_add(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_fetch_and_add_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_fetch_and_add(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_fetch_and_add_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_fetch_and_add(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_fetch_and_add_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_fetch_and_sub(volatile char *, char,...);
-char __sync_fetch_and_sub_1(volatile char *, char,...);
-signed char __sync_fetch_and_sub(volatile signed char *, signed char,...);
-signed char __sync_fetch_and_sub_1(volatile signed char *, signed char,...);
-unsigned char __sync_fetch_and_sub(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_fetch_and_sub_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_fetch_and_sub(volatile signed short *, signed short,...);
-signed short __sync_fetch_and_sub_2(volatile signed short *, signed short,...);
-unsigned short __sync_fetch_and_sub(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_fetch_and_sub_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_fetch_and_sub(volatile signed int *, signed int,...);
-signed int __sync_fetch_and_sub_4(volatile signed int *, signed int,...);
-unsigned int __sync_fetch_and_sub(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_fetch_and_sub_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_fetch_and_sub(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_fetch_and_sub_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_fetch_and_sub(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_fetch_and_sub_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_fetch_and_sub(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_fetch_and_sub_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_fetch_and_sub(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_fetch_and_sub_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_fetch_and_or(volatile char *, char,...);
-char __sync_fetch_and_or_1(volatile char *, char,...);
-signed char __sync_fetch_and_or(volatile signed char *, signed char,...);
-signed char __sync_fetch_and_or_1(volatile signed char *, signed char,...);
-unsigned char __sync_fetch_and_or(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_fetch_and_or_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_fetch_and_or(volatile signed short *, signed short,...);
-signed short __sync_fetch_and_or_2(volatile signed short *, signed short,...);
-unsigned short __sync_fetch_and_or(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_fetch_and_or_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_fetch_and_or(volatile signed int *, signed int,...);
-signed int __sync_fetch_and_or_4(volatile signed int *, signed int,...);
-unsigned int __sync_fetch_and_or(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_fetch_and_or_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_fetch_and_or(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_fetch_and_or_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_fetch_and_or(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_fetch_and_or_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_fetch_and_or(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_fetch_and_or_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_fetch_and_or(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_fetch_and_or_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_fetch_and_and(volatile char *, char,...);
-char __sync_fetch_and_and_1(volatile char *, char,...);
-signed char __sync_fetch_and_and(volatile signed char *, signed char,...);
-signed char __sync_fetch_and_and_1(volatile signed char *, signed char,...);
-unsigned char __sync_fetch_and_and(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_fetch_and_and_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_fetch_and_and(volatile signed short *, signed short,...);
-signed short __sync_fetch_and_and_2(volatile signed short *, signed short,...);
-unsigned short __sync_fetch_and_and(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_fetch_and_and_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_fetch_and_and(volatile signed int *, signed int,...);
-signed int __sync_fetch_and_and_4(volatile signed int *, signed int,...);
-unsigned int __sync_fetch_and_and(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_fetch_and_and_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_fetch_and_and(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_fetch_and_and_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_fetch_and_and(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_fetch_and_and_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_fetch_and_and(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_fetch_and_and_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_fetch_and_and(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_fetch_and_and_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_fetch_and_xor(volatile char *, char,...);
-char __sync_fetch_and_xor_1(volatile char *, char,...);
-signed char __sync_fetch_and_xor(volatile signed char *, signed char,...);
-signed char __sync_fetch_and_xor_1(volatile signed char *, signed char,...);
-unsigned char __sync_fetch_and_xor(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_fetch_and_xor_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_fetch_and_xor(volatile signed short *, signed short,...);
-signed short __sync_fetch_and_xor_2(volatile signed short *, signed short,...);
-unsigned short __sync_fetch_and_xor(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_fetch_and_xor_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_fetch_and_xor(volatile signed int *, signed int,...);
-signed int __sync_fetch_and_xor_4(volatile signed int *, signed int,...);
-unsigned int __sync_fetch_and_xor(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_fetch_and_xor_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_fetch_and_xor(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_fetch_and_xor_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_fetch_and_xor(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_fetch_and_xor_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_fetch_and_xor(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_fetch_and_xor_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_fetch_and_xor(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_fetch_and_xor_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_fetch_and_nand(volatile char *, char,...);
-char __sync_fetch_and_nand_1(volatile char *, char,...);
-signed char __sync_fetch_and_nand(volatile signed char *, signed char,...);
-signed char __sync_fetch_and_nand_1(volatile signed char *, signed char,...);
-unsigned char __sync_fetch_and_nand(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_fetch_and_nand_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_fetch_and_nand(volatile signed short *, signed short,...);
-signed short __sync_fetch_and_nand_2(volatile signed short *, signed short,...);
-unsigned short __sync_fetch_and_nand(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_fetch_and_nand_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_fetch_and_nand(volatile signed int *, signed int,...);
-signed int __sync_fetch_and_nand_4(volatile signed int *, signed int,...);
-unsigned int __sync_fetch_and_nand(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_fetch_and_nand_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_fetch_and_nand(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_fetch_and_nand_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_fetch_and_nand(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_fetch_and_nand_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_fetch_and_nand(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_fetch_and_nand_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_fetch_and_nand(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_fetch_and_nand_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_add_and_fetch(volatile char *, char,...);
-char __sync_add_and_fetch_1(volatile char *, char,...);
-signed char __sync_add_and_fetch(volatile signed char *, signed char,...);
-signed char __sync_add_and_fetch_1(volatile signed char *, signed char,...);
-unsigned char __sync_add_and_fetch(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_add_and_fetch_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_add_and_fetch(volatile signed short *, signed short,...);
-signed short __sync_add_and_fetch_2(volatile signed short *, signed short,...);
-unsigned short __sync_add_and_fetch(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_add_and_fetch_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_add_and_fetch(volatile signed int *, signed int,...);
-signed int __sync_add_and_fetch_4(volatile signed int *, signed int,...);
-signed int __sync_add_and_fetch(volatile signed int *, signed int,...);
-signed int __sync_add_and_fetch_4(volatile signed int *, signed int,...);
-signed long long int __sync_add_and_fetch(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_add_and_fetch_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_add_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_add_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_add_and_fetch(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_add_and_fetch_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_add_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_add_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_sub_and_fetch(volatile char *, char,...);
-char __sync_sub_and_fetch_1(volatile char *, char,...);
-signed char __sync_sub_and_fetch(volatile signed char *, signed char,...);
-signed char __sync_sub_and_fetch_1(volatile signed char *, signed char,...);
-unsigned char __sync_sub_and_fetch(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_sub_and_fetch_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_sub_and_fetch(volatile signed short *, signed short,...);
-signed short __sync_sub_and_fetch_2(volatile signed short *, signed short,...);
-unsigned short __sync_sub_and_fetch(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_sub_and_fetch_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_sub_and_fetch(volatile signed int *, signed int,...);
-signed int __sync_sub_and_fetch_4(volatile signed int *, signed int,...);
-unsigned int __sync_sub_and_fetch(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_sub_and_fetch_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_sub_and_fetch(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_sub_and_fetch_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_sub_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_sub_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_sub_and_fetch(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_sub_and_fetch_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_sub_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_sub_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_or_and_fetch(volatile char *, char,...);
-char __sync_or_and_fetch_1(volatile char *, char,...);
-signed char __sync_or_and_fetch(volatile signed char *, signed char,...);
-signed char __sync_or_and_fetch_1(volatile signed char *, signed char,...);
-unsigned char __sync_or_and_fetch(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_or_and_fetch_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_or_and_fetch(volatile signed short *, signed short,...);
-signed short __sync_or_and_fetch_2(volatile signed short *, signed short,...);
-unsigned short __sync_or_and_fetch(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_or_and_fetch_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_or_and_fetch(volatile signed int *, signed int,...);
-signed int __sync_or_and_fetch_4(volatile signed int *, signed int,...);
-unsigned int __sync_or_and_fetch(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_or_and_fetch_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_or_and_fetch(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_or_and_fetch_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_or_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_or_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_or_and_fetch(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_or_and_fetch_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_or_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_or_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_and_and_fetch(volatile char *, char,...);
-char __sync_and_and_fetch_1(volatile char *, char,...);
-signed char __sync_and_and_fetch(volatile signed char *, signed char,...);
-signed char __sync_and_and_fetch_1(volatile signed char *, signed char,...);
-unsigned char __sync_and_and_fetch(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_and_and_fetch_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_and_and_fetch(volatile signed short *, signed short,...);
-signed short __sync_and_and_fetch_2(volatile signed short *, signed short,...);
-unsigned short __sync_and_and_fetch(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_and_and_fetch_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_and_and_fetch(volatile signed int *, signed int,...);
-signed int __sync_and_and_fetch_4(volatile signed int *, signed int,...);
-unsigned int __sync_and_and_fetch(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_and_and_fetch_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_and_and_fetch(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_and_and_fetch_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_and_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_and_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_and_and_fetch(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_and_and_fetch_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_and_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_and_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_xor_and_fetch(volatile char *, char,...);
-char __sync_xor_and_fetch_1(volatile char *, char,...);
-signed char __sync_xor_and_fetch(volatile signed char *, signed char,...);
-signed char __sync_xor_and_fetch_1(volatile signed char *, signed char,...);
-unsigned char __sync_xor_and_fetch(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_xor_and_fetch_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_xor_and_fetch(volatile signed short *, signed short,...);
-signed short __sync_xor_and_fetch_2(volatile signed short *, signed short,...);
-unsigned short __sync_xor_and_fetch(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_xor_and_fetch_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_xor_and_fetch(volatile signed int *, signed int,...);
-signed int __sync_xor_and_fetch_4(volatile signed int *, signed int,...);
-unsigned int __sync_xor_and_fetch(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_xor_and_fetch_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_xor_and_fetch(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_xor_and_fetch_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_xor_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_xor_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_xor_and_fetch(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_xor_and_fetch_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_xor_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_xor_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-char __sync_nand_and_fetch(volatile char *, char,...);
-char __sync_nand_and_fetch_1(volatile char *, char,...);
-signed char __sync_nand_and_fetch(volatile signed char *, signed char,...);
-signed char __sync_nand_and_fetch_1(volatile signed char *, signed char,...);
-unsigned char __sync_nand_and_fetch(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_nand_and_fetch_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_nand_and_fetch(volatile signed short *, signed short,...);
-signed short __sync_nand_and_fetch_2(volatile signed short *, signed short,...);
-unsigned short __sync_nand_and_fetch(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_nand_and_fetch_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_nand_and_fetch(volatile signed int *, signed int,...);
-signed int __sync_nand_and_fetch_4(volatile signed int *, signed int,...);
-unsigned int __sync_nand_and_fetch(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_nand_and_fetch_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_nand_and_fetch(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_nand_and_fetch_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_nand_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_nand_and_fetch_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_nand_and_fetch(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_nand_and_fetch_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_nand_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_nand_and_fetch_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-_Bool __sync_bool_compare_and_swap(volatile char *, char, char,...);
-_Bool __sync_bool_compare_and_swap_1(volatile char *, char, char,...);
-_Bool __sync_bool_compare_and_swap(volatile signed char *, signed char, signed char,...);
-_Bool __sync_bool_compare_and_swap_1(volatile signed char *, signed char, signed char,...);
-_Bool __sync_bool_compare_and_swap(volatile unsigned char *, unsigned char, unsigned char,...);
-_Bool __sync_bool_compare_and_swap_1(volatile unsigned char *, unsigned char, unsigned char,...);
-_Bool __sync_bool_compare_and_swap(volatile short *, signed short, signed short,...);
-_Bool __sync_bool_compare_and_swap_2(volatile short *, signed short, signed short,...);
-_Bool __sync_bool_compare_and_swap(volatile short *, unsigned short, unsigned short,...);
-_Bool __sync_bool_compare_and_swap_2(volatile short *, unsigned short, unsigned short,...);
-_Bool __sync_bool_compare_and_swap(volatile signed int *, signed int, signed int,...);
-_Bool __sync_bool_compare_and_swap_4(volatile signed int *, signed int, signed int,...);
-_Bool __sync_bool_compare_and_swap(volatile unsigned int *, unsigned int, unsigned int,...);
-_Bool __sync_bool_compare_and_swap_4(volatile unsigned int *, unsigned int, unsigned int,...);
-_Bool __sync_bool_compare_and_swap(volatile signed long long int *, signed long long int, signed long long int,...);
-_Bool __sync_bool_compare_and_swap_8(volatile signed long long int *, signed long long int, signed long long int,...);
-_Bool __sync_bool_compare_and_swap(volatile unsigned long long int *, unsigned long long int, unsigned long long int,...);
-_Bool __sync_bool_compare_and_swap_8(volatile unsigned long long int *, unsigned long long int, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-_Bool __sync_bool_compare_and_swap(volatile signed __int128 *, signed __int128, signed __int128,...);
-_Bool __sync_bool_compare_and_swap_16(volatile signed __int128 *, signed __int128, signed __int128,...);
-_Bool __sync_bool_compare_and_swap(volatile unsigned __int128 *, unsigned __int128, unsigned __int128,...);
-_Bool __sync_bool_compare_and_swap_16(volatile unsigned __int128 *, unsigned __int128, unsigned __int128,...);
-#endif
-
-char __sync_val_compare_and_swap(volatile char *, char, char,...);
-char __sync_val_compare_and_swap_1(volatile char *, char, char,...);
-signed char __sync_val_compare_and_swap(volatile signed char *, signed char, signed char,...);
-signed char __sync_val_compare_and_swap_1(volatile signed char *, signed char, signed char,...);
-unsigned char __sync_val_compare_and_swap(volatile unsigned char *, unsigned char, unsigned char,...);
-unsigned char __sync_val_compare_and_swap_1(volatile unsigned char *, unsigned char, unsigned char,...);
-signed short __sync_val_compare_and_swap(volatile signed short *, signed short, signed short,...);
-signed short __sync_val_compare_and_swap_2(volatile signed short *, signed short, signed short,...);
-unsigned short __sync_val_compare_and_swap(volatile unsigned short *, unsigned short, unsigned short,...);
-unsigned short __sync_val_compare_and_swap_2(volatile unsigned short *, unsigned short, unsigned short,...);
-signed int __sync_val_compare_and_swap(volatile signed int *, signed int, signed int,...);
-signed int __sync_val_compare_and_swap_4(volatile signed int *, signed int, signed int,...);
-unsigned int __sync_val_compare_and_swap(volatile unsigned int *, unsigned int, unsigned int,...);
-unsigned int __sync_val_compare_and_swap_4(volatile unsigned int *, unsigned int, unsigned int,...);
-signed long long int __sync_val_compare_and_swap(volatile signed long long int *, signed long long int, signed long long int,...);
-signed long long int __sync_val_compare_and_swap_8(volatile signed long long int *, signed long long int, signed long long int,...);
-unsigned long long int __sync_val_compare_and_swap(volatile unsigned long long int *, unsigned long long int, unsigned long long int,...);
-unsigned long long int __sync_val_compare_and_swap_8(volatile unsigned long long int *, unsigned long long int, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_val_compare_and_swap(volatile signed __int128 *, signed __int128, signed __int128,...);
-signed __int128 __sync_val_compare_and_swap_16(volatile signed __int128 *, signed __int128, signed __int128,...);
-unsigned __int128 __sync_val_compare_and_swap(volatile unsigned __int128 *, unsigned __int128, unsigned __int128,...);
-unsigned __int128 __sync_val_compare_and_swap_16(volatile unsigned __int128 *, unsigned __int128, unsigned __int128,...);
-#endif
-
-char __sync_lock_test_and_set(volatile char *, char,...);
-char __sync_lock_test_and_set_1(volatile char *, char,...);
-signed char __sync_lock_test_and_set(volatile signed char *, signed char,...);
-signed char __sync_lock_test_and_set_1(volatile signed char *, signed char,...);
-unsigned char __sync_lock_test_and_set(volatile unsigned char *, unsigned char,...);
-unsigned char __sync_lock_test_and_set_1(volatile unsigned char *, unsigned char,...);
-signed short __sync_lock_test_and_set(volatile signed short *, signed short,...);
-signed short __sync_lock_test_and_set_2(volatile signed short *, signed short,...);
-unsigned short __sync_lock_test_and_set(volatile unsigned short *, unsigned short,...);
-unsigned short __sync_lock_test_and_set_2(volatile unsigned short *, unsigned short,...);
-signed int __sync_lock_test_and_set(volatile signed int *, signed int,...);
-signed int __sync_lock_test_and_set_4(volatile signed int *, signed int,...);
-unsigned int __sync_lock_test_and_set(volatile unsigned int *, unsigned int,...);
-unsigned int __sync_lock_test_and_set_4(volatile unsigned int *, unsigned int,...);
-signed long long int __sync_lock_test_and_set(volatile signed long long int *, signed long long int,...);
-signed long long int __sync_lock_test_and_set_8(volatile signed long long int *, signed long long int,...);
-unsigned long long int __sync_lock_test_and_set(volatile unsigned long long int *, unsigned long long int,...);
-unsigned long long int __sync_lock_test_and_set_8(volatile unsigned long long int *, unsigned long long int,...);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __sync_lock_test_and_set(volatile signed __int128 *, signed __int128,...);
-signed __int128 __sync_lock_test_and_set_16(volatile signed __int128 *, signed __int128,...);
-unsigned __int128 __sync_lock_test_and_set(volatile unsigned __int128 *, unsigned __int128,...);
-unsigned __int128 __sync_lock_test_and_set_16(volatile unsigned __int128 *, unsigned __int128,...);
-#endif
-
-void __sync_lock_release(volatile char *,...);
-void __sync_lock_release_1(volatile char *,...);
-void __sync_lock_release(volatile signed char *,...);
-void __sync_lock_release_1(volatile signed char *,...);
-void __sync_lock_release(volatile unsigned char *,...);
-void __sync_lock_release_1(volatile unsigned char *,...);
-void __sync_lock_release(volatile signed short *,...);
-void __sync_lock_release_2(volatile signed short *,...);
-void __sync_lock_release(volatile unsigned short *,...);
-void __sync_lock_release_2(volatile unsigned short *,...);
-void __sync_lock_release(volatile signed int *,...);
-void __sync_lock_release_4(volatile signed int *,...);
-void __sync_lock_release(volatile unsigned int *,...);
-void __sync_lock_release_4(volatile unsigned int *,...);
-void __sync_lock_release(volatile signed long long int *,...);
-void __sync_lock_release_8(volatile signed long long int *,...);
-void __sync_lock_release(volatile unsigned long long int *,...);
-void __sync_lock_release_8(volatile unsigned long long int *,...);
-#if defined(__SIZEOF_INT128__)
-void __sync_lock_release(volatile signed __int128 *,...);
-void __sync_lock_release_16(volatile signed __int128 *,...);
-void __sync_lock_release(volatile unsigned __int128 *,...);
-void __sync_lock_release_16(volatile unsigned __int128 *,...);
-#endif
-
-void __sync_synchronize();
-
-
-
-
-_Bool __atomic_test_and_set(volatile _Bool *, int);
-_Bool __atomic_test_and_set(volatile char *, int);
-_Bool __atomic_test_and_set(volatile signed char *, int);
-_Bool __atomic_test_and_set(volatile unsigned char *, int);
-_Bool __atomic_test_and_set(volatile signed short *, int);
-_Bool __atomic_test_and_set(volatile unsigned short *, int);
-_Bool __atomic_test_and_set(volatile signed int *, int);
-_Bool __atomic_test_and_set(volatile unsigned int *, int);
-_Bool __atomic_test_and_set(volatile signed long long int *, int);
-_Bool __atomic_test_and_set(volatile unsigned long long int *, int);
-#if defined(__SIZEOF_INT128__)
-_Bool __atomic_test_and_set(volatile signed __int128 *, int);
-_Bool __atomic_test_and_set(volatile unsigned __int128 *, int);
-#endif
-
-void __atomic_clear(volatile _Bool *, int);
-void __atomic_clear(volatile char *, int);
-void __atomic_clear(volatile signed char *, int);
-void __atomic_clear(volatile unsigned char *, int);
-void __atomic_clear(volatile signed short *, int);
-void __atomic_clear(volatile unsigned short *, int);
-void __atomic_clear(volatile signed int *, int);
-void __atomic_clear(volatile unsigned int *, int);
-void __atomic_clear(volatile signed long long int *, int);
-void __atomic_clear(volatile unsigned long long int *, int);
-#if defined(__SIZEOF_INT128__)
-void __atomic_clear(volatile signed __int128 *, int);
-void __atomic_clear(volatile unsigned __int128 *, int);
-#endif
-
-char __atomic_exchange_n(volatile char *, volatile char *, int);
-char __atomic_exchange_1(volatile char *, char, int);
-void __atomic_exchange(volatile char *, volatile char *, volatile char *, int);
-signed char __atomic_exchange_n(volatile signed char *, volatile signed char *, int);
-signed char __atomic_exchange_1(volatile signed char *, signed char, int);
-void __atomic_exchange(volatile signed char *, volatile signed char *, volatile signed char *, int);
-unsigned char __atomic_exchange_n(volatile unsigned char *, volatile unsigned char *, int);
-unsigned char __atomic_exchange_1(volatile unsigned char *, unsigned char, int);
-void __atomic_exchange(volatile unsigned char *, volatile unsigned char *, volatile unsigned char *, int);
-signed short __atomic_exchange_n(volatile signed short *, volatile signed short *, int);
-signed short __atomic_exchange_2(volatile signed short *, signed short, int);
-void __atomic_exchange(volatile signed short *, volatile signed short *, volatile signed short *, int);
-unsigned short __atomic_exchange_n(volatile unsigned short *, volatile unsigned short *, int);
-unsigned short __atomic_exchange_2(volatile unsigned short *, unsigned short, int);
-void __atomic_exchange(volatile unsigned short *, volatile unsigned short *, volatile unsigned short *, int);
-signed int __atomic_exchange_n(volatile signed int *, volatile signed int *, int);
-signed int __atomic_exchange_4(volatile signed int *, signed int, int);
-void __atomic_exchange(volatile signed int *, volatile signed int *, volatile signed int *, int);
-unsigned int __atomic_exchange_n(volatile unsigned int *, volatile unsigned int *, int);
-unsigned int __atomic_exchange_4(volatile unsigned int *, unsigned int, int);
-void __atomic_exchange(volatile unsigned int *, volatile unsigned int *, volatile unsigned int *, int);
-signed long long int __atomic_exchange_n(volatile signed long long int *, volatile signed long long int *, int);
-signed long long int __atomic_exchange_8(volatile signed long long int *, signed long long int, int);
-void __atomic_exchange(volatile signed long long int *, volatile signed long long int *, volatile signed long long int *, int);
-unsigned long long int __atomic_exchange_n(volatile unsigned long long int *, volatile unsigned long long int *, int);
-unsigned long long int __atomic_exchange_8(volatile unsigned long long int *, unsigned long long int, int);
-void __atomic_exchange(volatile unsigned long long int *, volatile unsigned long long int *, volatile unsigned long long int *, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_exchange_n(volatile signed __int128 *, volatile signed __int128 *, int);
-signed __int128 __atomic_exchange_16(volatile signed __int128 *, signed __int128, int);
-void __atomic_exchange(volatile signed __int128 *, volatile signed __int128 *, volatile signed __int128 *, int);
-unsigned __int128 __atomic_exchange_n(volatile unsigned __int128 *, volatile unsigned __int128 *, int);
-unsigned __int128 __atomic_exchange_16(volatile unsigned __int128 *, unsigned __int128, int);
-void __atomic_exchange(volatile unsigned __int128 *, volatile unsigned __int128 *, volatile unsigned __int128 *, int);
-#endif
-
-_Bool __atomic_load_n(const volatile _Bool *, int);
-void __atomic_load(const volatile _Bool *, volatile _Bool *, int);
-char __atomic_load_n(const volatile char *, int);
-char __atomic_load_1(const volatile char *, int);
-void __atomic_load(const volatile char *, volatile char *, int);
-signed char __atomic_load_n(const volatile signed char *, int);
-signed char __atomic_load_1(const volatile signed char *, int);
-void __atomic_load(const volatile signed char *, volatile signed char *, int);
-unsigned char __atomic_load_n(const volatile unsigned char *, int);
-unsigned char __atomic_load_1(const volatile unsigned char *, int);
-void __atomic_load(const volatile unsigned char *, volatile unsigned char *, int);
-signed short __atomic_load_n(const volatile signed short *, int);
-signed short __atomic_load_2(const volatile signed short *, int);
-void __atomic_load(const volatile signed short *, volatile signed short *, int);
-unsigned short __atomic_load_n(const volatile unsigned short *, int);
-unsigned short __atomic_load_2(const volatile unsigned short *, int);
-void __atomic_load(const volatile unsigned short *, volatile unsigned short *, int);
-signed int __atomic_load_n(const volatile signed int *, int);
-signed int __atomic_load_4(const volatile signed int *, int);
-void __atomic_load(const volatile signed int *, volatile signed int *, int);
-unsigned int __atomic_load_n(const volatile unsigned int *, int);
-unsigned int __atomic_load_4(const volatile unsigned int *, int);
-void __atomic_load(const volatile unsigned int *, volatile unsigned int *, int);
-signed long long int __atomic_load_n(const volatile signed long long int *, int);
-signed long long int __atomic_load_8(const volatile signed long long int *, int);
-void __atomic_load(const volatile signed long long int *, volatile signed long long int *, int);
-unsigned long long int __atomic_load_n(const volatile unsigned long long int *, int);
-unsigned long long int __atomic_load_8(const volatile unsigned long long int *, int);
-void __atomic_load(const volatile unsigned long long int *, volatile unsigned long long int *, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_load_n(const volatile signed __int128 *, int);
-signed __int128 __atomic_load_16(const volatile signed __int128 *, int);
-void __atomic_load(const volatile signed __int128 *, volatile signed __int128 *, int);
-unsigned __int128 __atomic_load_n(const volatile unsigned __int128 *, int);
-unsigned __int128 __atomic_load_16(const volatile unsigned __int128 *, int);
-void __atomic_load(const volatile unsigned __int128 *, volatile unsigned __int128 *, int);
-#endif
-
-_Bool __atomic_compare_exchange_n(volatile char *, char *, char, _Bool, int, int);
-_Bool __atomic_compare_exchange_1(volatile char *, char *, char, _Bool, int, int);
-_Bool __atomic_compare_exchange  (volatile char *, char *, char *, _Bool, int, int);
-_Bool __atomic_compare_exchange_n(volatile signed char *, signed char *, signed char, _Bool, int, int);
-_Bool __atomic_compare_exchange_1(volatile signed char *, signed char *, signed char, _Bool, int, int);
-_Bool __atomic_compare_exchange  (volatile signed char *, signed char *, signed char *, _Bool, int, int);
-_Bool __atomic_compare_exchange_n(volatile unsigned char *, unsigned char *, unsigned char, _Bool, int, int);
-_Bool __atomic_compare_exchange_1(volatile unsigned char *, unsigned char *, unsigned char, _Bool, int, int);
-_Bool __atomic_compare_exchange  (volatile unsigned char *, unsigned char *, unsigned char *, _Bool, int, int);
-_Bool __atomic_compare_exchange_n(volatile signed short *, signed short *, signed short, _Bool, int, int);
-_Bool __atomic_compare_exchange_2(volatile signed short *, signed short *, signed short, _Bool, int, int);
-_Bool __atomic_compare_exchange  (volatile signed short *, signed short *, signed short *, _Bool, int, int);
-_Bool __atomic_compare_exchange_n(volatile unsigned short *, unsigned short *, unsigned short, _Bool, int, int);
-_Bool __atomic_compare_exchange_2(volatile unsigned short *, unsigned short *, unsigned short, _Bool, int, int);
-_Bool __atomic_compare_exchange  (volatile unsigned short *, unsigned short *, unsigned short *, _Bool, int, int);
-_Bool __atomic_compare_exchange_n(volatile signed int *, signed int *, signed int, _Bool, int, int);
-_Bool __atomic_compare_exchange_4(volatile signed int *, signed int *, signed int, _Bool, int, int);
-_Bool __atomic_compare_exchange  (volatile signed int *, signed int *, signed int *, _Bool, int, int);
-_Bool __atomic_compare_exchange_n(volatile unsigned int *, unsigned int *, unsigned int, _Bool, int, int);
-_Bool __atomic_compare_exchange_4(volatile unsigned int *, unsigned int *, unsigned int, _Bool, int, int);
-_Bool __atomic_compare_exchange  (volatile unsigned int *, unsigned int *, unsigned int *, _Bool, int, int);
-_Bool __atomic_compare_exchange_n(volatile signed long long int *, signed long long int *, signed long long int, _Bool, int, int);
-_Bool __atomic_compare_exchange_8(volatile signed long long int *, signed long long int *, signed long long int, _Bool, int, int);
-_Bool __atomic_compare_exchange  (volatile signed long long int *, signed long long int *, signed long long int *, _Bool, int, int);
-_Bool __atomic_compare_exchange_n(volatile unsigned long long int *, unsigned long long int *, unsigned long long int, _Bool, int, int);
-_Bool __atomic_compare_exchange_8(volatile unsigned long long int *, unsigned long long int *, unsigned long long int, _Bool, int, int);
-_Bool __atomic_compare_exchange  (volatile unsigned long long int *, unsigned long long int *, unsigned long long int *, _Bool, int, int);
-#if defined(__SIZEOF_INT128__)
-_Bool __atomic_compare_exchange_n (volatile signed __int128 *, signed __int128 *, signed __int128, _Bool, int, int);
-_Bool __atomic_compare_exchange_16(volatile signed __int128 *, signed __int128 *, signed __int128, _Bool, int, int);
-_Bool __atomic_compare_exchange   (volatile signed __int128 *, signed __int128 *, signed __int128 *, _Bool, int, int);
-_Bool __atomic_compare_exchange_n (volatile unsigned __int128 *, unsigned __int128 *, unsigned __int128, _Bool, int, int);
-_Bool __atomic_compare_exchange_16(volatile unsigned __int128 *, unsigned __int128 *, unsigned __int128, _Bool, int, int);
-_Bool __atomic_compare_exchange   (volatile unsigned __int128 *, unsigned __int128 *, unsigned __int128 *, _Bool, int, int);
-#endif
-
-void __atomic_store_n(volatile _Bool *, _Bool, int);
-void __atomic_store(volatile _Bool *, _Bool *, int);
-void __atomic_store_n(volatile char *, char, int);
-void __atomic_store_1(volatile char *, char, int);
-void __atomic_store(volatile char *, char *, int);
-void __atomic_store_n(volatile signed char *, signed char, int);
-void __atomic_store_1(volatile signed char *, signed char, int);
-void __atomic_store(volatile signed char *, signed char *, int);
-void __atomic_store_n(volatile unsigned char *, unsigned char, int);
-void __atomic_store_1(volatile unsigned char *, unsigned char, int);
-void __atomic_store(volatile unsigned char *, unsigned char *, int);
-void __atomic_store_n(volatile signed short *, signed short, int);
-void __atomic_store_2(volatile signed short *, signed short, int);
-void __atomic_store(volatile signed short *, signed short *, int);
-void __atomic_store_n(volatile unsigned short *, unsigned short, int);
-void __atomic_store_2(volatile unsigned short *, unsigned short, int);
-void __atomic_store(volatile unsigned short *, unsigned short *, int);
-void __atomic_store_n(volatile signed int *, signed int, int);
-void __atomic_store_4(volatile signed int *, signed int, int);
-void __atomic_store(volatile signed int *, signed int *, int);
-void __atomic_store_n(volatile unsigned int *, unsigned int, int);
-void __atomic_store_4(volatile unsigned int *, unsigned int, int);
-void __atomic_store(volatile unsigned int *, unsigned int *, int);
-void __atomic_store_n(volatile signed long long int *, signed long long int, int);
-void __atomic_store_8(volatile signed long long int *, signed long long int, int);
-void __atomic_store(volatile signed long long int *, signed long long int *, int);
-void __atomic_store_n(volatile unsigned long long int *, unsigned long long int, int);
-void __atomic_store_8(volatile unsigned long long int *, unsigned long long int, int);
-void __atomic_store(volatile unsigned long long int *, unsigned long long int *, int);
-#if defined(__SIZEOF_INT128__)
-void __atomic_store_n(volatile signed __int128 *, signed __int128, int);
-void __atomic_store_16(volatile signed __int128 *, signed __int128, int);
-void __atomic_store(volatile signed __int128 *, signed __int128 *, int);
-void __atomic_store_n(volatile unsigned __int128 *, unsigned __int128, int);
-void __atomic_store_16(volatile unsigned __int128 *, unsigned __int128, int);
-void __atomic_store(volatile unsigned __int128 *, unsigned __int128 *, int);
-#endif
-
-char __atomic_add_fetch  (volatile char *, char, int);
-char __atomic_add_fetch_1(volatile char *, char, int);
-signed char __atomic_add_fetch  (volatile signed char *, signed char, int);
-signed char __atomic_add_fetch_1(volatile signed char *, signed char, int);
-unsigned char __atomic_add_fetch  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_add_fetch_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_add_fetch  (volatile signed short *, signed short, int);
-signed short __atomic_add_fetch_2(volatile signed short *, signed short, int);
-unsigned short __atomic_add_fetch  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_add_fetch_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_add_fetch  (volatile signed int *, signed int, int);
-signed int __atomic_add_fetch_4(volatile signed int *, signed int, int);
-unsigned int __atomic_add_fetch  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_add_fetch_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_add_fetch  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_add_fetch_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_add_fetch  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_add_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_add_fetch   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_add_fetch_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_add_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_add_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_sub_fetch  (volatile char *, char, int);
-char __atomic_sub_fetch_1(volatile char *, char, int);
-signed char __atomic_sub_fetch  (volatile signed char *, signed char, int);
-signed char __atomic_sub_fetch_1(volatile signed char *, signed char, int);
-unsigned char __atomic_sub_fetch  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_sub_fetch_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_sub_fetch  (volatile signed short *, signed short, int);
-signed short __atomic_sub_fetch_2(volatile signed short *, signed short, int);
-unsigned short __atomic_sub_fetch  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_sub_fetch_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_sub_fetch  (volatile signed int *, signed int, int);
-signed int __atomic_sub_fetch_4(volatile signed int *, signed int, int);
-unsigned int __atomic_sub_fetch  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_sub_fetch_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_sub_fetch  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_sub_fetch_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_sub_fetch  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_sub_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_sub_fetch   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_sub_fetch_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_sub_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_sub_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_and_fetch  (volatile char *, char, int);
-char __atomic_and_fetch_1(volatile char *, char, int);
-signed char __atomic_and_fetch  (volatile signed char *, signed char, int);
-signed char __atomic_and_fetch_1(volatile signed char *, signed char, int);
-unsigned char __atomic_and_fetch  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_and_fetch_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_and_fetch  (volatile signed short *, signed short, int);
-signed short __atomic_and_fetch_2(volatile signed short *, signed short, int);
-unsigned short __atomic_and_fetch  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_and_fetch_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_and_fetch  (volatile signed int *, signed int, int);
-signed int __atomic_and_fetch_4(volatile signed int *, signed int, int);
-unsigned int __atomic_and_fetch  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_and_fetch_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_and_fetch  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_and_fetch_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_and_fetch  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_and_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_and_fetch   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_and_fetch_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_and_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_and_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_nand_fetch  (volatile char *, char, int);
-char __atomic_nand_fetch_1(volatile char *, char, int);
-signed char __atomic_nand_fetch  (volatile signed char *, signed char, int);
-signed char __atomic_nand_fetch_1(volatile signed char *, signed char, int);
-unsigned char __atomic_nand_fetch  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_nand_fetch_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_nand_fetch  (volatile signed short *, signed short, int);
-signed short __atomic_nand_fetch_2(volatile signed short *, signed short, int);
-unsigned short __atomic_nand_fetch  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_nand_fetch_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_nand_fetch  (volatile signed int *, signed int, int);
-signed int __atomic_nand_fetch_4(volatile signed int *, signed int, int);
-unsigned int __atomic_nand_fetch  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_nand_fetch_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_nand_fetch  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_nand_fetch_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_nand_fetch  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_nand_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_nand_fetch   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_nand_fetch_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_nand_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_nand_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_xor_fetch  (volatile char *, char, int);
-char __atomic_xor_fetch_1(volatile char *, char, int);
-signed char __atomic_xor_fetch  (volatile signed char *, signed char, int);
-signed char __atomic_xor_fetch_1(volatile signed char *, signed char, int);
-unsigned char __atomic_xor_fetch  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_xor_fetch_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_xor_fetch  (volatile signed short *, signed short, int);
-signed short __atomic_xor_fetch_2(volatile signed short *, signed short, int);
-unsigned short __atomic_xor_fetch  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_xor_fetch_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_xor_fetch  (volatile signed int *, signed int, int);
-signed int __atomic_xor_fetch_4(volatile signed int *, signed int, int);
-unsigned int __atomic_xor_fetch  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_xor_fetch_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_xor_fetch  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_xor_fetch_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_xor_fetch  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_xor_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_xor_fetch   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_xor_fetch_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_xor_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_xor_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_or_fetch  (volatile char *, char, int);
-char __atomic_or_fetch_1(volatile char *, char, int);
-signed char __atomic_or_fetch  (volatile signed char *, signed char, int);
-signed char __atomic_or_fetch_1(volatile signed char *, signed char, int);
-unsigned char __atomic_or_fetch  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_or_fetch_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_or_fetch  (volatile signed short *, signed short, int);
-signed short __atomic_or_fetch_2(volatile signed short *, signed short, int);
-unsigned short __atomic_or_fetch  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_or_fetch_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_or_fetch  (volatile signed int *, signed int, int);
-signed int __atomic_or_fetch_4(volatile signed int *, signed int, int);
-unsigned int __atomic_or_fetch  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_or_fetch_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_or_fetch  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_or_fetch_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_or_fetch  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_or_fetch_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_or_fetch   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_or_fetch_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_or_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_or_fetch_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_fetch_add  (volatile char *, char, int);
-char __atomic_fetch_add_1(volatile char *, char, int);
-signed char __atomic_fetch_add  (volatile signed char *, signed char, int);
-signed char __atomic_fetch_add_1(volatile signed char *, signed char, int);
-unsigned char __atomic_fetch_add  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_fetch_add_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_fetch_add  (volatile signed short *, signed short, int);
-signed short __atomic_fetch_add_2(volatile signed short *, signed short, int);
-unsigned short __atomic_fetch_add  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_fetch_add_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_fetch_add  (volatile signed int *, signed int, int);
-signed int __atomic_fetch_add_4(volatile signed int *, signed int, int);
-unsigned int __atomic_fetch_add  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_fetch_add_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_fetch_add  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_fetch_add_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_fetch_add  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_fetch_add_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_fetch_add   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_fetch_add_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_fetch_add   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_fetch_add_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_fetch_sub  (volatile char *, char, int);
-char __atomic_fetch_sub_1(volatile char *, char, int);
-signed char __atomic_fetch_sub  (volatile signed char *, signed char, int);
-signed char __atomic_fetch_sub_1(volatile signed char *, signed char, int);
-unsigned char __atomic_fetch_sub  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_fetch_sub_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_fetch_sub  (volatile signed short *, signed short, int);
-signed short __atomic_fetch_sub_2(volatile signed short *, signed short, int);
-unsigned short __atomic_fetch_sub  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_fetch_sub_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_fetch_sub  (volatile signed int *, signed int, int);
-signed int __atomic_fetch_sub_4(volatile signed int *, signed int, int);
-unsigned int __atomic_fetch_sub  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_fetch_sub_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_fetch_sub  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_fetch_sub_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_fetch_sub  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_fetch_sub_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_fetch_sub   (volatile signed  __int128 *, signed __int128, int);
-signed __int128 __atomic_fetch_sub_16(volatile signed  __int128 *, signed __int128, int);
-unsigned __int128 __atomic_fetch_sub   (volatile unsigned  __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_fetch_sub_16(volatile unsigned  __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_fetch_and  (volatile char *, char, int);
-char __atomic_fetch_and_1(volatile char *, char, int);
-signed char __atomic_fetch_and  (volatile signed char *, signed char, int);
-signed char __atomic_fetch_and_1(volatile signed char *, signed char, int);
-unsigned char __atomic_fetch_and  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_fetch_and_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_fetch_and  (volatile signed short *, signed short, int);
-signed short __atomic_fetch_and_2(volatile signed short *, signed short, int);
-unsigned short __atomic_fetch_and  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_fetch_and_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_fetch_and  (volatile signed int *, signed int, int);
-signed int __atomic_fetch_and_4(volatile signed int *, signed int, int);
-unsigned int __atomic_fetch_and  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_fetch_and_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_fetch_and  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_fetch_and_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_fetch_and  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_fetch_and_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_fetch_and   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_fetch_and_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_fetch_and   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_fetch_and_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_fetch_nand  (volatile char *, char, int);
-char __atomic_fetch_nand_1(volatile char *, char, int);
-signed char __atomic_fetch_nand  (volatile signed char *, signed char, int);
-signed char __atomic_fetch_nand_1(volatile signed char *, signed char, int);
-unsigned char __atomic_fetch_nand  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_fetch_nand_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_fetch_nand  (volatile signed short *, signed short, int);
-signed short __atomic_fetch_nand_2(volatile signed short *, signed short, int);
-unsigned short __atomic_fetch_nand  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_fetch_nand_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_fetch_nand  (volatile signed int *, signed int, int);
-signed int __atomic_fetch_nand_4(volatile signed int *, signed int, int);
-unsigned int __atomic_fetch_nand  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_fetch_nand_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_fetch_nand  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_fetch_nand_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_fetch_nand  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_fetch_nand_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_fetch_nand   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_fetch_nand_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_fetch_nand   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_fetch_nand_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_fetch_xor  (volatile char *, char, int);
-char __atomic_fetch_xor_1(volatile char *, char, int);
-signed char __atomic_fetch_xor  (volatile signed char *, signed char, int);
-signed char __atomic_fetch_xor_1(volatile signed char *, signed char, int);
-unsigned char __atomic_fetch_xor  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_fetch_xor_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_fetch_xor  (volatile signed short *, signed short, int);
-signed short __atomic_fetch_xor_2(volatile signed short *, signed short, int);
-unsigned short __atomic_fetch_xor  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_fetch_xor_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_fetch_xor  (volatile signed int *, signed int, int);
-signed int __atomic_fetch_xor_4(volatile signed int *, signed int, int);
-unsigned int __atomic_fetch_xor  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_fetch_xor_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_fetch_xor  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_fetch_xor_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_fetch_xor  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_fetch_xor_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_fetch_xor   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_fetch_xor_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_fetch_xor   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_fetch_xor_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-char __atomic_fetch_or  (volatile char *, char, int);
-char __atomic_fetch_or_1(volatile char *, char, int);
-signed char __atomic_fetch_or  (volatile signed char *, signed char, int);
-signed char __atomic_fetch_or_1(volatile signed char *, signed char, int);
-unsigned char __atomic_fetch_or  (volatile unsigned char *, unsigned char, int);
-unsigned char __atomic_fetch_or_1(volatile unsigned char *, unsigned char, int);
-signed short __atomic_fetch_or  (volatile signed short *, signed short, int);
-signed short __atomic_fetch_or_2(volatile signed short *, signed short, int);
-unsigned short __atomic_fetch_or  (volatile unsigned short *, unsigned short, int);
-unsigned short __atomic_fetch_or_2(volatile unsigned short *, unsigned short, int);
-signed int __atomic_fetch_or  (volatile signed int *, signed int, int);
-signed int __atomic_fetch_or_4(volatile signed int *, signed int, int);
-unsigned int __atomic_fetch_or  (volatile unsigned int *, unsigned int, int);
-unsigned int __atomic_fetch_or_4(volatile unsigned int *, unsigned int, int);
-signed long long int __atomic_fetch_or  (volatile signed long long int *, signed long long int, int);
-signed long long int __atomic_fetch_or_8(volatile signed long long int *, signed long long int, int);
-unsigned long long int __atomic_fetch_or  (volatile unsigned long long int *, unsigned long long int, int);
-unsigned long long int __atomic_fetch_or_8(volatile unsigned long long int *, unsigned long long int, int);
-#if defined(__SIZEOF_INT128__)
-signed __int128 __atomic_fetch_or   (volatile signed __int128 *, signed __int128, int);
-signed __int128 __atomic_fetch_or_16(volatile signed __int128 *, signed __int128, int);
-unsigned __int128 __atomic_fetch_or   (volatile unsigned __int128 *, unsigned __int128, int);
-unsigned __int128 __atomic_fetch_or_16(volatile unsigned __int128 *, unsigned __int128, int);
-#endif
-
-_Bool __atomic_always_lock_free(unsigned long, const volatile void *);
-_Bool __atomic_is_lock_free(unsigned long, const volatile void *);
-
-void __atomic_thread_fence (int);
-void __atomic_signal_fence (int);
-void __atomic_feraiseexcept(int);
Index: c/prelude/sync-builtins.def
===================================================================
--- src/prelude/sync-builtins.def	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,614 +1,0 @@
-/* This file contains the definitions and documentation for the
-   synchronization builtins used in the GNU compiler.
-   Copyright (C) 2005-2016 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-/* Before including this file, you should define a macro:
-
-     DEF_SYNC_BUILTIN (ENUM, NAME, TYPE, ATTRS)
-
-   See builtins.def for details.  */
-
-/* Synchronization Primitives.  The "_N" version is the one that the user
-   is supposed to be using.  It's overloaded, and is resolved to one of the
-   "_1" through "_16" versions, plus some extra casts.  */
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_N, "__sync_fetch_and_add",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_1, "__sync_fetch_and_add_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_2, "__sync_fetch_and_add_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_4, "__sync_fetch_and_add_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_8, "__sync_fetch_and_add_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_16, "__sync_fetch_and_add_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_N, "__sync_fetch_and_sub",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_1, "__sync_fetch_and_sub_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_2, "__sync_fetch_and_sub_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_4, "__sync_fetch_and_sub_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_8, "__sync_fetch_and_sub_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_16, "__sync_fetch_and_sub_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_N, "__sync_fetch_and_or",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_1, "__sync_fetch_and_or_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_2, "__sync_fetch_and_or_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_4, "__sync_fetch_and_or_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_8, "__sync_fetch_and_or_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_16, "__sync_fetch_and_or_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_N, "__sync_fetch_and_and",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_1, "__sync_fetch_and_and_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_2, "__sync_fetch_and_and_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_4, "__sync_fetch_and_and_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_8, "__sync_fetch_and_and_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_16, "__sync_fetch_and_and_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_N, "__sync_fetch_and_xor",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_1, "__sync_fetch_and_xor_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_2, "__sync_fetch_and_xor_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_4, "__sync_fetch_and_xor_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_8, "__sync_fetch_and_xor_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_16, "__sync_fetch_and_xor_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_N, "__sync_fetch_and_nand",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_1, "__sync_fetch_and_nand_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_2, "__sync_fetch_and_nand_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_4, "__sync_fetch_and_nand_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_8, "__sync_fetch_and_nand_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_16, "__sync_fetch_and_nand_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_N, "__sync_add_and_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_1, "__sync_add_and_fetch_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_2, "__sync_add_and_fetch_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_4, "__sync_add_and_fetch_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_8, "__sync_add_and_fetch_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_16, "__sync_add_and_fetch_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_N, "__sync_sub_and_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_1, "__sync_sub_and_fetch_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_2, "__sync_sub_and_fetch_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_4, "__sync_sub_and_fetch_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_8, "__sync_sub_and_fetch_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_16, "__sync_sub_and_fetch_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_N, "__sync_or_and_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_1, "__sync_or_and_fetch_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_2, "__sync_or_and_fetch_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_4, "__sync_or_and_fetch_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_8, "__sync_or_and_fetch_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_16, "__sync_or_and_fetch_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_N, "__sync_and_and_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_1, "__sync_and_and_fetch_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_2, "__sync_and_and_fetch_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_4, "__sync_and_and_fetch_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_8, "__sync_and_and_fetch_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_16, "__sync_and_and_fetch_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_N, "__sync_xor_and_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_1, "__sync_xor_and_fetch_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_2, "__sync_xor_and_fetch_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_4, "__sync_xor_and_fetch_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_8, "__sync_xor_and_fetch_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_16, "__sync_xor_and_fetch_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_N, "__sync_nand_and_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_1, "__sync_nand_and_fetch_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_2, "__sync_nand_and_fetch_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_4, "__sync_nand_and_fetch_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_8, "__sync_nand_and_fetch_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_16, "__sync_nand_and_fetch_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_N,
-		  "__sync_bool_compare_and_swap",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1,
-		  "__sync_bool_compare_and_swap_1",
-		  BT_FN_BOOL_VPTR_I1_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2,
-		  "__sync_bool_compare_and_swap_2",
-		  BT_FN_BOOL_VPTR_I2_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4,
-		  "__sync_bool_compare_and_swap_4",
-		  BT_FN_BOOL_VPTR_I4_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8,
-		  "__sync_bool_compare_and_swap_8",
-		  BT_FN_BOOL_VPTR_I8_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_16,
-		  "__sync_bool_compare_and_swap_16",
-		  BT_FN_BOOL_VPTR_I16_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_N,
-		  "__sync_val_compare_and_swap",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1,
-		  "__sync_val_compare_and_swap_1",
-		  BT_FN_I1_VPTR_I1_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2,
-		  "__sync_val_compare_and_swap_2",
-		  BT_FN_I2_VPTR_I2_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4,
-		  "__sync_val_compare_and_swap_4",
-		  BT_FN_I4_VPTR_I4_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8,
-		  "__sync_val_compare_and_swap_8",
-		  BT_FN_I8_VPTR_I8_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_16,
-		  "__sync_val_compare_and_swap_16",
-		  BT_FN_I16_VPTR_I16_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_N,
-		  "__sync_lock_test_and_set",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_1,
-		  "__sync_lock_test_and_set_1",
-		  BT_FN_I1_VPTR_I1, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_2,
-		  "__sync_lock_test_and_set_2",
-		  BT_FN_I2_VPTR_I2, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_4,
-		  "__sync_lock_test_and_set_4",
-		  BT_FN_I4_VPTR_I4, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_8,
-		  "__sync_lock_test_and_set_8",
-		  BT_FN_I8_VPTR_I8, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_16,
-		  "__sync_lock_test_and_set_16",
-		  BT_FN_I16_VPTR_I16, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_N, "__sync_lock_release",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_1, "__sync_lock_release_1",
-		  BT_FN_VOID_VPTR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_2, "__sync_lock_release_2",
-		  BT_FN_VOID_VPTR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_4, "__sync_lock_release_4",
-		  BT_FN_VOID_VPTR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_8, "__sync_lock_release_8",
-		  BT_FN_VOID_VPTR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_16, "__sync_lock_release_16",
-		  BT_FN_VOID_VPTR, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SYNCHRONIZE, "__sync_synchronize",
-		  BT_FN_VOID, ATTR_NOTHROWCALL_LEAF_LIST)
-
-/* __sync* builtins for the C++ memory model.  */
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_TEST_AND_SET, "__atomic_test_and_set",
-		  BT_FN_BOOL_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_CLEAR, "__atomic_clear", BT_FN_VOID_VPTR_INT,
-		  ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE,
-		  "__atomic_exchange",
-		  BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_N,
-		  "__atomic_exchange_n",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_1,
-		  "__atomic_exchange_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_2,
-		  "__atomic_exchange_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_4,
-		  "__atomic_exchange_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_8,
-		  "__atomic_exchange_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_16,
-		  "__atomic_exchange_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD,
-		  "__atomic_load",
-		  BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT,
-		  ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_N,
-		  "__atomic_load_n",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_1,
-		  "__atomic_load_1",
-		  BT_FN_I1_CONST_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_2,
-		  "__atomic_load_2",
-		  BT_FN_I2_CONST_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_4,
-		  "__atomic_load_4",
-		  BT_FN_I4_CONST_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_8,
-		  "__atomic_load_8",
-		  BT_FN_I8_CONST_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_16,
-		  "__atomic_load_16",
-		  BT_FN_I16_CONST_VPTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE,
-		  "__atomic_compare_exchange",
-		  BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT,
-		  ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_N,
-		  "__atomic_compare_exchange_n",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1,
-		  "__atomic_compare_exchange_1",
-		  BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT,
-		  ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2,
-		  "__atomic_compare_exchange_2",
-		  BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT,
-		  ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4,
-		  "__atomic_compare_exchange_4",
-		  BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT,
-		  ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8,
-		  "__atomic_compare_exchange_8",
-		  BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT,
-		  ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16,
-		  "__atomic_compare_exchange_16",
-		  BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT,
-		  ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE,
-		  "__atomic_store",
-		  BT_FN_VOID_SIZE_VPTR_PTR_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_N,
-		  "__atomic_store_n",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_1,
-		  "__atomic_store_1",
-		  BT_FN_VOID_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_2,
-		  "__atomic_store_2",
-		  BT_FN_VOID_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_4,
-		  "__atomic_store_4",
-		  BT_FN_VOID_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_8,
-		  "__atomic_store_8",
-		  BT_FN_VOID_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_16,
-		  "__atomic_store_16",
-		  BT_FN_VOID_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_N,
-		  "__atomic_add_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_1,
-		  "__atomic_add_fetch_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_2,
-		  "__atomic_add_fetch_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_4,
-		  "__atomic_add_fetch_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_8,
-		  "__atomic_add_fetch_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_16,
-		  "__atomic_add_fetch_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_N,
-		  "__atomic_sub_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_1,
-		  "__atomic_sub_fetch_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_2,
-		  "__atomic_sub_fetch_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_4,
-		  "__atomic_sub_fetch_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_8,
-		  "__atomic_sub_fetch_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_16,
-		  "__atomic_sub_fetch_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_N,
-		  "__atomic_and_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_1,
-		  "__atomic_and_fetch_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_2,
-		  "__atomic_and_fetch_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_4,
-		  "__atomic_and_fetch_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_8,
-		  "__atomic_and_fetch_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_16,
-		  "__atomic_and_fetch_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_N,
-		  "__atomic_nand_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_1,
-		  "__atomic_nand_fetch_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_2,
-		  "__atomic_nand_fetch_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_4,
-		  "__atomic_nand_fetch_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_8,
-		  "__atomic_nand_fetch_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_16,
-		  "__atomic_nand_fetch_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_N,
-		  "__atomic_xor_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_1,
-		  "__atomic_xor_fetch_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_2,
-		  "__atomic_xor_fetch_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_4,
-		  "__atomic_xor_fetch_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_8,
-		  "__atomic_xor_fetch_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_16,
-		  "__atomic_xor_fetch_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_N,
-		  "__atomic_or_fetch",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_1,
-		  "__atomic_or_fetch_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_2,
-		  "__atomic_or_fetch_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_4,
-		  "__atomic_or_fetch_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_8,
-		  "__atomic_or_fetch_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_16,
-		  "__atomic_or_fetch_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_N,
-		  "__atomic_fetch_add",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_1,
-		  "__atomic_fetch_add_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_2,
-		  "__atomic_fetch_add_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_4,
-		  "__atomic_fetch_add_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_8,
-		  "__atomic_fetch_add_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_16,
-		  "__atomic_fetch_add_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_N,
-		  "__atomic_fetch_sub",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_1,
-		  "__atomic_fetch_sub_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_2,
-		  "__atomic_fetch_sub_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_4,
-		  "__atomic_fetch_sub_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_8,
-		  "__atomic_fetch_sub_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_16,
-		  "__atomic_fetch_sub_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_N,
-		  "__atomic_fetch_and",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_1,
-		  "__atomic_fetch_and_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_2,
-		  "__atomic_fetch_and_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_4,
-		  "__atomic_fetch_and_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_8,
-		  "__atomic_fetch_and_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_16,
-		  "__atomic_fetch_and_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_N,
-		  "__atomic_fetch_nand",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_1,
-		  "__atomic_fetch_nand_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_2,
-		  "__atomic_fetch_nand_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_4,
-		  "__atomic_fetch_nand_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_8,
-		  "__atomic_fetch_nand_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_16,
-		  "__atomic_fetch_nand_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_N,
-		  "__atomic_fetch_xor",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_1,
-		  "__atomic_fetch_xor_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_2,
-		  "__atomic_fetch_xor_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_4,
-		  "__atomic_fetch_xor_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_8,
-		  "__atomic_fetch_xor_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_16,
-		  "__atomic_fetch_xor_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_N,
-		  "__atomic_fetch_or",
-		  BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_1,
-		  "__atomic_fetch_or_1",
-		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_2,
-		  "__atomic_fetch_or_2",
-		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_4,
-		  "__atomic_fetch_or_4",
-		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_8,
-		  "__atomic_fetch_or_8",
-		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_16,
-		  "__atomic_fetch_or_16",
-		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ALWAYS_LOCK_FREE,
-		  "__atomic_always_lock_free",
-		  BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_IS_LOCK_FREE,
-		  "__atomic_is_lock_free",
-		  BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST)
-
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_THREAD_FENCE,
-		  "__atomic_thread_fence",
-		  BT_FN_VOID_INT, ATTR_NOTHROW_LEAF_LIST)
-
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SIGNAL_FENCE,
-		  "__atomic_signal_fence",
-		  BT_FN_VOID_INT, ATTR_NOTHROW_LEAF_LIST)
-
-/* This one is actually a function in libatomic and not expected to be
-   inlined, declared here for convenience of targets generating calls
-   to it.  */
-DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FERAISEEXCEPT,
-		  "__atomic_feraiseexcept",
-		  BT_FN_VOID_INT, ATTR_LEAF_LIST)
Index: c/tests/.expect/KRfunctions.x64.txt
===================================================================
--- src/tests/.expect/KRfunctions.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,93 +1,0 @@
-signed int __f0__Fi_iPCii__1(signed int __a__i_1, const signed int *__b__PCi_1, signed int __c__i_1){
-    __attribute__ ((unused)) signed int ___retval_f0__i_1;
-}
-signed int __f1__Fi_PiiPi__1(signed int *__a__Pi_1, __attribute__ ((unused)) signed int __b__i_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_f1__i_1;
-}
-signed int __f2__Fi_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_f2__i_1;
-}
-struct S {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __i__i_1);
-static inline void ___constructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1=___src__2sS_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1) /* ^?{} */);
-}
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    struct S ___ret__2sS_1;
-    ((void)((*___dst__2sS_1).__i__i_1=___src__2sS_1.__i__i_1));
-    ((void)___constructor__F_2sS2sS_autogen___1((&___ret__2sS_1), (*___dst__2sS_1)));
-    return ___ret__2sS_1;
-}
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __i__i_1){
-    ((void)((*___dst__2sS_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-signed int __f3__Fi_2sS2sSPi__1(struct S __a__2sS_1, struct S __b__2sS_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_f3__i_1;
-    struct S __s__2sS_2;
-}
-signed int __f4__Fi_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_f4__i_1;
-}
-signed int __f5__Fi_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_f5__i_1;
-}
-signed int (*__f6__FFi_i__iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))(signed int __anonymous_object0){
-    __attribute__ ((unused)) signed int (*___retval_f6__Fi_i__1)(signed int __anonymous_object1);
-}
-signed int (*__f7__FFi_ii__iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))(signed int __a__i_1, signed int __b__i_1){
-    __attribute__ ((unused)) signed int (*___retval_f7__Fi_ii__1)(signed int __a__i_1, signed int __b__i_1);
-}
-signed int *__f8__FPi_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int *___retval_f8__Pi_1;
-}
-signed int *const __f9__FPi_PiiPi__1(signed int *__a__Pi_1, signed int __b__i_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int *const ___retval_f9__CPi_1;
-}
-signed int *(*__f10__FFPi_ii__iPiPid__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1, double __y__d_1))(signed int __x__i_1, signed int __y__i_1){
-    __attribute__ ((unused)) signed int *(*___retval_f10__FPi_ii__1)(signed int __x__i_1, signed int __y__i_1);
-    signed int *__x__FPi_ii__2(signed int __anonymous_object2, signed int __anonymous_object3);
-    ((void)(___retval_f10__FPi_ii__1=__x__FPi_ii__2) /* ?{} */);
-    return ___retval_f10__FPi_ii__1;
-}
-signed int (*__f11__FPA0i_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))[]{
-    __attribute__ ((unused)) signed int (*___retval_f11__PA0i_1)[];
-}
-signed int (*__f12__FPA0A0i_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))[][((unsigned long int )10)]{
-    __attribute__ ((unused)) signed int (*___retval_f12__PA0A0i_1)[][((unsigned long int )10)];
-}
-signed int (*__f13__FPA0A0i_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))[][((unsigned long int )10)]{
-    __attribute__ ((unused)) signed int (*___retval_f13__PA0A0i_1)[][((unsigned long int )10)];
-}
-signed int (*__f14__FPA0A0i_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))[][((unsigned long int )10)]{
-    __attribute__ ((unused)) signed int (*___retval_f14__PA0A0i_1)[][((unsigned long int )10)];
-}
-signed int __f15__Fi_iii__1(signed int __a__i_1, signed int __b__i_1, signed int __c__i_1){
-    __attribute__ ((unused)) signed int ___retval_f15__i_1;
-}
-const signed int __fred__Fi___1(){
-    __attribute__ ((unused)) const signed int ___retval_fred__Ci_1;
-    signed int *(*__x__FPi_ii__2)(signed int __anonymous_object4, signed int __anonymous_object5);
-    signed int __a__i_2;
-    signed int __b__i_2;
-    signed int *(*_tmp_cp_ret2)(signed int __x__i_1, signed int __y__i_1);
-    ((void)(__x__FPi_ii__2=(((void)(_tmp_cp_ret2=__f10__FFPi_ii__iPiPid__1(3, (&__a__i_2), (&__b__i_2), 3.5))) , _tmp_cp_ret2)));
-    ((void)(_tmp_cp_ret2) /* ^?{} */);
-    const signed int __f1__Fi_iPiPi__2(signed int __a__i_2, signed int *__b__Pi_2, signed int *__c__Pi_2){
-        __attribute__ ((unused)) const signed int ___retval_f1__Ci_2;
-    }
-    const signed int __f2__Fi_iii__2(signed int __a__i_2, signed int __b__i_2, signed int __c__i_2){
-        __attribute__ ((unused)) const signed int ___retval_f2__Ci_2;
-    }
-}
Index: c/tests/.expect/KRfunctions.x86.txt
===================================================================
--- src/tests/.expect/KRfunctions.x86.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,93 +1,0 @@
-signed int __f0__Fi_iPCii__1(signed int __a__i_1, const signed int *__b__PCi_1, signed int __c__i_1){
-    __attribute__ ((unused)) signed int ___retval_f0__i_1;
-}
-signed int __f1__Fi_PiiPi__1(signed int *__a__Pi_1, __attribute__ ((unused)) signed int __b__i_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_f1__i_1;
-}
-signed int __f2__Fi_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_f2__i_1;
-}
-struct S {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __i__i_1);
-static inline void ___constructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1=___src__2sS_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1) /* ^?{} */);
-}
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    struct S ___ret__2sS_1;
-    ((void)((*___dst__2sS_1).__i__i_1=___src__2sS_1.__i__i_1));
-    ((void)___constructor__F_2sS2sS_autogen___1((&___ret__2sS_1), (*___dst__2sS_1)));
-    return ___ret__2sS_1;
-}
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __i__i_1){
-    ((void)((*___dst__2sS_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-signed int __f3__Fi_2sS2sSPi__1(struct S __a__2sS_1, struct S __b__2sS_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_f3__i_1;
-    struct S __s__2sS_2;
-}
-signed int __f4__Fi_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_f4__i_1;
-}
-signed int __f5__Fi_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_f5__i_1;
-}
-signed int (*__f6__FFi_i__iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))(signed int __anonymous_object0){
-    __attribute__ ((unused)) signed int (*___retval_f6__Fi_i__1)(signed int __anonymous_object1);
-}
-signed int (*__f7__FFi_ii__iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))(signed int __a__i_1, signed int __b__i_1){
-    __attribute__ ((unused)) signed int (*___retval_f7__Fi_ii__1)(signed int __a__i_1, signed int __b__i_1);
-}
-signed int *__f8__FPi_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int *___retval_f8__Pi_1;
-}
-signed int *const __f9__FPi_PiiPi__1(signed int *__a__Pi_1, signed int __b__i_1, signed int *__c__Pi_1){
-    __attribute__ ((unused)) signed int *const ___retval_f9__CPi_1;
-}
-signed int *(*__f10__FFPi_ii__iPiPid__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1, double __y__d_1))(signed int __x__i_1, signed int __y__i_1){
-    __attribute__ ((unused)) signed int *(*___retval_f10__FPi_ii__1)(signed int __x__i_1, signed int __y__i_1);
-    signed int *__x__FPi_ii__2(signed int __anonymous_object2, signed int __anonymous_object3);
-    ((void)(___retval_f10__FPi_ii__1=__x__FPi_ii__2) /* ?{} */);
-    return ___retval_f10__FPi_ii__1;
-}
-signed int (*__f11__FPA0i_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))[]{
-    __attribute__ ((unused)) signed int (*___retval_f11__PA0i_1)[];
-}
-signed int (*__f12__FPA0A0i_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))[][((unsigned int )10)]{
-    __attribute__ ((unused)) signed int (*___retval_f12__PA0A0i_1)[][((unsigned int )10)];
-}
-signed int (*__f13__FPA0A0i_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))[][((unsigned int )10)]{
-    __attribute__ ((unused)) signed int (*___retval_f13__PA0A0i_1)[][((unsigned int )10)];
-}
-signed int (*__f14__FPA0A0i_iPiPi__1(signed int __a__i_1, signed int *__b__Pi_1, signed int *__c__Pi_1))[][((unsigned int )10)]{
-    __attribute__ ((unused)) signed int (*___retval_f14__PA0A0i_1)[][((unsigned int )10)];
-}
-signed int __f15__Fi_iii__1(signed int __a__i_1, signed int __b__i_1, signed int __c__i_1){
-    __attribute__ ((unused)) signed int ___retval_f15__i_1;
-}
-const signed int __fred__Fi___1(){
-    __attribute__ ((unused)) const signed int ___retval_fred__Ci_1;
-    signed int *(*__x__FPi_ii__2)(signed int __anonymous_object4, signed int __anonymous_object5);
-    signed int __a__i_2;
-    signed int __b__i_2;
-    signed int *(*_tmp_cp_ret2)(signed int __x__i_1, signed int __y__i_1);
-    ((void)(__x__FPi_ii__2=(((void)(_tmp_cp_ret2=__f10__FFPi_ii__iPiPid__1(3, (&__a__i_2), (&__b__i_2), 3.5))) , _tmp_cp_ret2)));
-    ((void)(_tmp_cp_ret2) /* ^?{} */);
-    const signed int __f1__Fi_iPiPi__2(signed int __a__i_2, signed int *__b__Pi_2, signed int *__c__Pi_2){
-        __attribute__ ((unused)) const signed int ___retval_f1__Ci_2;
-    }
-    const signed int __f2__Fi_iii__2(signed int __a__i_2, signed int __b__i_2, signed int __c__i_2){
-        __attribute__ ((unused)) const signed int ___retval_f2__Ci_2;
-    }
-}
Index: c/tests/.expect/abs.txt
===================================================================
--- src/tests/.expect/abs.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,10 +1,0 @@
-char			-65	abs 65
-signed int		-65	abs 65
-signed long int		-65	abs 65
-signed long long int	-65	abs 65
-float			-65	abs 65
-double			-65	abs 65
-long double		-65	abs 65
-float _Complex		-65-2i	abs 65.0308
-double _Complex		-65-2i	abs 65.0307619515564
-long double _Complex	-65-2i	abs 65.0307619515564342
Index: c/tests/.expect/alloc-ERROR.txt
===================================================================
--- src/tests/.expect/alloc-ERROR.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,64 +1,0 @@
-alloc.c:265:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: ?=?
-...to: 
-  Name: p
-  Applying untyped: 
-    Name: realloc
-  ...to: 
-    Name: stp
-    Applying untyped: 
-      Name: ?*?
-    ...to: 
-      Name: dim
-      Sizeof Expression on: Applying untyped: 
-          Name: *?
-        ...to: 
-          Name: stp
-
-
-
-
-alloc.c:266:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: ?=?
-...to: 
-  Name: p
-  Applying untyped: 
-    Name: alloc
-  ...to: 
-    Name: stp
-    Applying untyped: 
-      Name: ?*?
-    ...to: 
-      Name: dim
-      Sizeof Expression on: Applying untyped: 
-          Name: *?
-        ...to: 
-          Name: stp
-
-
-
-
-alloc.c:267:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: ?=?
-...to: 
-  Name: p
-  Applying untyped: 
-    Name: memset
-  ...to: 
-    Name: stp
-    constant expression (10 10: signed int)
-
-
-alloc.c:268:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: ?=?
-...to: 
-  Name: p
-  Applying untyped: 
-    Name: memcpy
-  ...to: 
-    Address of:
-      Name: st1
-    Address of:
-      Name: st
-
-
Index: c/tests/.expect/alloc.txt
===================================================================
--- src/tests/.expect/alloc.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,61 +1,0 @@
-C   malloc 0xdeadbeef
-CFA malloc 0xdeadbeef
-CFA alloc 0xdeadbeef
-CFA alloc, fill ffffffff
-
-C   array calloc, fill 0
-0 0 0 0 0 0 0 0 0 0 
-CFA array calloc, fill 0
-0 0 0 0 0 0 0 0 0 0 
-CFA array alloc, no fill
-0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 
-CFA array alloc, fill 0xff
-0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 
-
-C   realloc
-0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 
-CFA realloc
-0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 
-
-CFA resize alloc
-0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 
-CFA resize array alloc
-0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 
-CFA resize array alloc
-0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 
-CFA resize array alloc, fill
-0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 
-CFA resize array alloc, fill
-0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 
-CFA resize array alloc, fill
-0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 
-
-C   memalign 42 42.5
-CFA memalign 42 42.5
-CFA posix_memalign 42 42.5
-CFA posix_memalign 42 42.5
-CFA aligned_alloc 42 42.5
-CFA align_alloc 42 42.5
-CFA align_alloc fill 0xffffffff -nan
-
-CFA array align_alloc
-42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 
-CFA array align_alloc, fill
-0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 
-
-CFA memset 0xffffffff -nan
-CFA memcpy 0xffffffff -nan
-
-CFA array memset
-0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 
-CFA array memcpy
-0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 
-
-CFA new initialize
-42 42.5 42 42.5
-CFA array new initialize
-42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 
-42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 
-
-pointer arithmetic 0
-CFA deep malloc 0xdeadbeef
Index: c/tests/.expect/ato.txt
===================================================================
--- src/tests/.expect/ato.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,27 +1,0 @@
--123 -123
-123 123
--123 -123
-123 123
--123 -123
-123 123
--123.456 -123.456
--123.456789012346 -123.4567890123456
--123.456789012345679 -123.45678901234567890123456789
--123.456-123.456i -123.456-123.456i
--123.456789012346+123.456789012346i -123.4567890123456+123.4567890123456i
-123.456789012345679-123.456789012345679i 123.45678901234567890123456789-123.45678901234567890123456789i
-123.45678901234-123.456789i 123.45678901234-123.4567890i
--123 -123
-123 123
--123 -123
-123 123
--123 -123
-123 123
--123.456 -123.456
--123.456789012346 -123.4567890123456
--123.456789012345679 -123.45678901234567890123456789
--123.456-123.456i -123.456-123.456i
-0+0i 2  3
--123.456789012346+123.456789012346i -123.4567890123456+123.4567890123456i
-123.456789012345679-123.456789012345679i 123.45678901234567890123456789-123.45678901234567890123456789i
-123.45678901234-123.456789i 123.45678901234-123.4567890i
Index: c/tests/.expect/attributes.x64.txt
===================================================================
--- src/tests/.expect/attributes.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,387 +1,0 @@
-signed int __la__Fi___1(){
-    __attribute__ ((unused)) signed int ___retval_la__i_1;
-    L: __attribute__ ((unused)) ((void)1);
-}
-struct __attribute__ ((unused)) __anonymous0 {
-};
-static inline void ___constructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1);
-static inline void ___constructor__F_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
-static inline void ___destructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1);
-static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
-static inline void ___constructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1){
-}
-static inline void ___constructor__F_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
-}
-static inline void ___destructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1){
-}
-static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
-    struct __anonymous0 ___ret__13s__anonymous0_1;
-    ((void)___constructor__F_13s__anonymous013s__anonymous0_autogen___1((&___ret__13s__anonymous0_1), (*___dst__13s__anonymous0_1)));
-    return ___ret__13s__anonymous0_1;
-}
-struct __attribute__ ((unused)) Agn1;
-struct __attribute__ ((unused)) Agn2 {
-};
-static inline void ___constructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1);
-static inline void ___constructor__F_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1);
-static inline void ___destructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1);
-static inline struct Agn2 ___operator_assign__F5sAgn2_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1);
-static inline void ___constructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1){
-}
-static inline void ___constructor__F_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1){
-}
-static inline void ___destructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1){
-}
-static inline struct Agn2 ___operator_assign__F5sAgn2_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1){
-    struct Agn2 ___ret__5sAgn2_1;
-    ((void)___constructor__F_5sAgn25sAgn2_autogen___1((&___ret__5sAgn2_1), (*___dst__5sAgn2_1)));
-    return ___ret__5sAgn2_1;
-}
-enum __attribute__ ((unused)) __anonymous1 {
-    __E1__C13e__anonymous1_1,
-};
-enum __attribute__ ((unused)) Agn3;
-enum __attribute__ ((packed)) Agn3 {
-    __E2__C5eAgn3_1,
-};
-struct __attribute__ ((unused)) __anonymous2 {
-};
-static inline void ___constructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1);
-static inline void ___constructor__F_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
-static inline void ___destructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1);
-static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
-static inline void ___constructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1){
-}
-static inline void ___constructor__F_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
-}
-static inline void ___destructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1){
-}
-static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
-    struct __anonymous2 ___ret__13s__anonymous2_1;
-    ((void)___constructor__F_13s__anonymous213s__anonymous2_autogen___1((&___ret__13s__anonymous2_1), (*___dst__13s__anonymous2_1)));
-    return ___ret__13s__anonymous2_1;
-}
-struct __attribute__ ((unused)) Agn4 {
-};
-static inline void ___constructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1);
-static inline void ___constructor__F_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1);
-static inline void ___destructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1);
-static inline struct Agn4 ___operator_assign__F5sAgn4_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1);
-static inline void ___constructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1){
-}
-static inline void ___constructor__F_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1){
-}
-static inline void ___destructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1){
-}
-static inline struct Agn4 ___operator_assign__F5sAgn4_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1){
-    struct Agn4 ___ret__5sAgn4_1;
-    ((void)___constructor__F_5sAgn45sAgn4_autogen___1((&___ret__5sAgn4_1), (*___dst__5sAgn4_1)));
-    return ___ret__5sAgn4_1;
-}
-struct Fdl {
-    __attribute__ ((unused)) signed int __f1__i_1;
-    __attribute__ ((unused)) signed int __f2__i_1;
-    __attribute__ ((unused,unused)) signed int __f3__i_1;
-    __attribute__ ((unused)) signed int __f4__i_1;
-    __attribute__ ((unused,unused)) signed int __f5__i_1;
-    __attribute__ ((used,packed)) signed int __f6__i_1;
-    __attribute__ ((used,unused,unused)) signed int __f7__i_1;
-    __attribute__ ((used,used,unused)) signed int __f8__i_1;
-    __attribute__ ((unused,unused)) signed int *__f9__Pi_1;
-};
-static inline void ___constructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1);
-static inline void ___constructor__F_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1);
-static inline void ___destructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1);
-static inline struct Fdl ___operator_assign__F4sFdl_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1);
-static inline void ___constructor__F_4sFdli_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1);
-static inline void ___constructor__F_4sFdlii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1);
-static inline void ___constructor__F_4sFdliii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1);
-static inline void ___constructor__F_4sFdliiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1);
-static inline void ___constructor__F_4sFdliiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1);
-static inline void ___constructor__F_4sFdliiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1);
-static inline void ___constructor__F_4sFdliiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1);
-static inline void ___constructor__F_4sFdliiiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1);
-static inline void ___constructor__F_4sFdliiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused,unused)) signed int *__f9__Pi_1);
-static inline void ___constructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=___src__4sFdl_1.__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=___src__4sFdl_1.__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=___src__4sFdl_1.__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=___src__4sFdl_1.__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=___src__4sFdl_1.__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1=___src__4sFdl_1.__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1=___src__4sFdl_1.__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1) /* ?{} */);
-}
-static inline void ___destructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f1__i_1) /* ^?{} */);
-}
-static inline struct Fdl ___operator_assign__F4sFdl_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1){
-    struct Fdl ___ret__4sFdl_1;
-    ((void)((*___dst__4sFdl_1).__f1__i_1=___src__4sFdl_1.__f1__i_1));
-    ((void)((*___dst__4sFdl_1).__f2__i_1=___src__4sFdl_1.__f2__i_1));
-    ((void)((*___dst__4sFdl_1).__f3__i_1=___src__4sFdl_1.__f3__i_1));
-    ((void)((*___dst__4sFdl_1).__f4__i_1=___src__4sFdl_1.__f4__i_1));
-    ((void)((*___dst__4sFdl_1).__f5__i_1=___src__4sFdl_1.__f5__i_1));
-    ((void)((*___dst__4sFdl_1).__f6__i_1=___src__4sFdl_1.__f6__i_1));
-    ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1));
-    ((void)((*___dst__4sFdl_1).__f8__i_1=___src__4sFdl_1.__f8__i_1));
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1));
-    ((void)___constructor__F_4sFdl4sFdl_autogen___1((&___ret__4sFdl_1), (*___dst__4sFdl_1)));
-    return ___ret__4sFdl_1;
-}
-static inline void ___constructor__F_4sFdli_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdlii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused,unused)) signed int *__f9__Pi_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1=__f9__Pi_1) /* ?{} */);
-}
-__attribute__ ((unused)) signed int __f__Fi___1() asm ( "xyz" );
-__attribute__ ((used,used)) const signed int __vd1__Ci_1;
-__attribute__ ((used,unused)) const signed int __vd2__Ci_1;
-__attribute__ ((used,used,used,used)) const signed int *__vd3__PCi_1;
-__attribute__ ((used,used,unused,used,unused)) const signed int *__vd4__PCi_1;
-__attribute__ ((used,used,used)) const signed int __vd5__A0Ci_1[((unsigned long int )5)];
-__attribute__ ((used,used,unused,used)) const signed int __vd6__A0Ci_1[((unsigned long int )5)];
-__attribute__ ((used,used,used,used)) const signed int (*__vd7__Fi___1)();
-__attribute__ ((used,used,unused,used,used)) const signed int (*__vd8__Fi___1)();
-__attribute__ ((unused,used)) signed int __f1__Fi___1();
-__attribute__ ((unused)) signed int __f1__Fi___1(){
-    __attribute__ ((unused)) signed int ___retval_f1__i_1;
-}
-__attribute__ ((unused,unused,unused,used)) signed int **const __f2__FPPi___1();
-__attribute__ ((unused,unused,unused)) signed int **const __f2__FPPi___1(){
-    __attribute__ ((unused)) signed int **const ___retval_f2__CPPi_1;
-}
-__attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object0))[];
-__attribute__ ((unused,unused)) signed int (*__f3__FPA0i_i__1(signed int __p__i_1))[]{
-    __attribute__ ((unused)) signed int (*___retval_f3__PA0i_1)[];
-}
-__attribute__ ((unused,used,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object1);
-__attribute__ ((unused,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object2){
-    __attribute__ ((unused)) signed int (*___retval_f4__Fi_i__1)(signed int __anonymous_object3);
-}
-signed int __vtr__Fi___1(){
-    __attribute__ ((unused)) signed int ___retval_vtr__i_1;
-    __attribute__ ((unused,unused,used)) signed int __t1__i_2;
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int **__t2__PPi_2;
-    __attribute__ ((unused,unused,unused)) signed int __t3__A0i_2[((unsigned long int )5)];
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int **__t4__A0PPi_2[((unsigned long int )5)];
-    __attribute__ ((unused,unused,unused)) signed int __t5__Fi___2();
-    __attribute__ ((unused,unused,unused,unused)) signed int *__t6__FPi___2();
-}
-signed int __ipd1__Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int __p__i_1, __attribute__ ((unused,unused,unused)) signed int __q__i_1);
-signed int __ipd1__Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int __p__i_1, __attribute__ ((unused,unused,unused)) signed int __q__i_1){
-    __attribute__ ((unused)) signed int ___retval_ipd1__i_1;
-}
-signed int __ipd2__Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1);
-signed int __ipd2__Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_ipd2__i_1;
-}
-signed int __ipd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1);
-signed int __ipd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_ipd3__i_1;
-}
-signed int __ipd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__p__Fi___1)(), __attribute__ ((unused,unused,unused)) signed int (*__q__Fi___1)());
-signed int __ipd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__p__Fi___1)(), __attribute__ ((unused,unused,unused)) signed int (*__q__Fi___1)()){
-    __attribute__ ((unused)) signed int ___retval_ipd4__i_1;
-}
-signed int __tpr1__Fi_i__1(__attribute__ ((unused,unused,unused)) signed int __Foo__i_1);
-signed int __tpr2__Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **__Foo__PPi_1);
-signed int __tpr3__Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *__Foo__Pi_1);
-signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object4)(__attribute__ ((unused,unused)) signed int __anonymous_object5[((unsigned long int )5)]));
-signed int __tpr5__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)());
-signed int __tpr6__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)());
-signed int __tpr7__Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object6)(__attribute__ ((unused)) signed int (*__anonymous_object7)(__attribute__ ((unused,unused)) signed int __anonymous_object8)));
-signed int __ad__Fi___1(){
-    __attribute__ ((unused)) signed int ___retval_ad__i_1;
-    __attribute__ ((used,unused)) signed int __ad1__i_2;
-    __attribute__ ((unused,unused,unused)) signed int *__ad2__Pi_2;
-    __attribute__ ((unused,unused,unused)) signed int __ad3__A0i_2[((unsigned long int )5)];
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int (*__ad4__PA0i_2)[((unsigned long int )10)];
-    __attribute__ ((unused,unused,unused,unused,used)) signed int __ad5__i_2;
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int __ad6__Fi___2();
-    ((void)sizeof(__attribute__ ((unused,unused)) signed int ));
-    ((void)sizeof(__attribute__ ((unused,unused,unused,unused)) signed int **));
-    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int [((unsigned long int )5)]));
-    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int (*)[((unsigned long int )10)]));
-    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int ()));
-    struct __attribute__ ((unused)) __anonymous3 {
-        signed int __i__i_2;
-    };
-    inline void ___constructor__F_13s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2){
-        ((void)((*___dst__13s__anonymous3_2).__i__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_13s__anonymous313s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2, struct __anonymous3 ___src__13s__anonymous3_2){
-        ((void)((*___dst__13s__anonymous3_2).__i__i_2=___src__13s__anonymous3_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_13s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2){
-        ((void)((*___dst__13s__anonymous3_2).__i__i_2) /* ^?{} */);
-    }
-    inline struct __anonymous3 ___operator_assign__F13s__anonymous3_13s__anonymous313s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2, struct __anonymous3 ___src__13s__anonymous3_2){
-        struct __anonymous3 ___ret__13s__anonymous3_2;
-        ((void)((*___dst__13s__anonymous3_2).__i__i_2=___src__13s__anonymous3_2.__i__i_2));
-        ((void)___constructor__F_13s__anonymous313s__anonymous3_autogen___2((&___ret__13s__anonymous3_2), (*___dst__13s__anonymous3_2)));
-        return ___ret__13s__anonymous3_2;
-    }
-    inline void ___constructor__F_13s__anonymous3i_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2, signed int __i__i_2){
-        ((void)((*___dst__13s__anonymous3_2).__i__i_2=__i__i_2) /* ?{} */);
-    }
-    ((void)sizeof(struct __anonymous3 ));
-    enum __attribute__ ((unused)) __anonymous4 {
-        __R__C13e__anonymous4_2,
-    };
-    inline void ___constructor__F_13e__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *___dst__13e__anonymous4_2){
-    }
-    inline void ___constructor__F_13e__anonymous413e__anonymous4_intrinsic___2(enum __anonymous4 *___dst__13e__anonymous4_2, enum __anonymous4 ___src__13e__anonymous4_2){
-        ((void)((*___dst__13e__anonymous4_2)=___src__13e__anonymous4_2) /* ?{} */);
-    }
-    inline void ___destructor__F_13e__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *___dst__13e__anonymous4_2){
-    }
-    inline enum __anonymous4 ___operator_assign__F13e__anonymous4_13e__anonymous413e__anonymous4_intrinsic___2(enum __anonymous4 *___dst__13e__anonymous4_2, enum __anonymous4 ___src__13e__anonymous4_2){
-        enum __anonymous4 ___ret__13e__anonymous4_2;
-        ((void)((*___dst__13e__anonymous4_2)=___src__13e__anonymous4_2));
-        ((void)(___ret__13e__anonymous4_2=(*___dst__13e__anonymous4_2)) /* ?{} */);
-        return ___ret__13e__anonymous4_2;
-    }
-    ((void)sizeof(enum __anonymous4 ));
-}
-signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object9, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object10);
-signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object11, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object12);
-signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object13, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object14);
-signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)());
-signed int __apd5__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __anonymous_object18), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object19)(__attribute__ ((unused)) signed int __anonymous_object20));
-signed int __apd6__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object22)());
-signed int __apd7__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object23)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26));
-struct Vad {
-    __attribute__ ((unused)) signed int __anonymous_object27:4;
-    __attribute__ ((unused)) signed int __anonymous_object28:4;
-    __attribute__ ((unused,unused)) signed int __anonymous_object29:6;
-};
-static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1);
-static inline void ___constructor__F_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1);
-static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1);
-static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1);
-static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){
-}
-static inline void ___constructor__F_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){
-}
-static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){
-}
-static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){
-    struct Vad ___ret__4sVad_1;
-    ((void)___constructor__F_4sVad4sVad_autogen___1((&___ret__4sVad_1), (*___dst__4sVad_1)));
-    return ___ret__4sVad_1;
-}
Index: c/tests/.expect/attributes.x86.txt
===================================================================
--- src/tests/.expect/attributes.x86.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,387 +1,0 @@
-signed int __la__Fi___1(){
-    __attribute__ ((unused)) signed int ___retval_la__i_1;
-    L: __attribute__ ((unused)) ((void)1);
-}
-struct __attribute__ ((unused)) __anonymous0 {
-};
-static inline void ___constructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1);
-static inline void ___constructor__F_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
-static inline void ___destructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1);
-static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
-static inline void ___constructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1){
-}
-static inline void ___constructor__F_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
-}
-static inline void ___destructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1){
-}
-static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
-    struct __anonymous0 ___ret__13s__anonymous0_1;
-    ((void)___constructor__F_13s__anonymous013s__anonymous0_autogen___1((&___ret__13s__anonymous0_1), (*___dst__13s__anonymous0_1)));
-    return ___ret__13s__anonymous0_1;
-}
-struct __attribute__ ((unused)) Agn1;
-struct __attribute__ ((unused)) Agn2 {
-};
-static inline void ___constructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1);
-static inline void ___constructor__F_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1);
-static inline void ___destructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1);
-static inline struct Agn2 ___operator_assign__F5sAgn2_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1);
-static inline void ___constructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1){
-}
-static inline void ___constructor__F_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1){
-}
-static inline void ___destructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1){
-}
-static inline struct Agn2 ___operator_assign__F5sAgn2_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1){
-    struct Agn2 ___ret__5sAgn2_1;
-    ((void)___constructor__F_5sAgn25sAgn2_autogen___1((&___ret__5sAgn2_1), (*___dst__5sAgn2_1)));
-    return ___ret__5sAgn2_1;
-}
-enum __attribute__ ((unused)) __anonymous1 {
-    __E1__C13e__anonymous1_1,
-};
-enum __attribute__ ((unused)) Agn3;
-enum __attribute__ ((packed)) Agn3 {
-    __E2__C5eAgn3_1,
-};
-struct __attribute__ ((unused)) __anonymous2 {
-};
-static inline void ___constructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1);
-static inline void ___constructor__F_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
-static inline void ___destructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1);
-static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
-static inline void ___constructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1){
-}
-static inline void ___constructor__F_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
-}
-static inline void ___destructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1){
-}
-static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
-    struct __anonymous2 ___ret__13s__anonymous2_1;
-    ((void)___constructor__F_13s__anonymous213s__anonymous2_autogen___1((&___ret__13s__anonymous2_1), (*___dst__13s__anonymous2_1)));
-    return ___ret__13s__anonymous2_1;
-}
-struct __attribute__ ((unused)) Agn4 {
-};
-static inline void ___constructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1);
-static inline void ___constructor__F_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1);
-static inline void ___destructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1);
-static inline struct Agn4 ___operator_assign__F5sAgn4_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1);
-static inline void ___constructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1){
-}
-static inline void ___constructor__F_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1){
-}
-static inline void ___destructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1){
-}
-static inline struct Agn4 ___operator_assign__F5sAgn4_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1){
-    struct Agn4 ___ret__5sAgn4_1;
-    ((void)___constructor__F_5sAgn45sAgn4_autogen___1((&___ret__5sAgn4_1), (*___dst__5sAgn4_1)));
-    return ___ret__5sAgn4_1;
-}
-struct Fdl {
-    __attribute__ ((unused)) signed int __f1__i_1;
-    __attribute__ ((unused)) signed int __f2__i_1;
-    __attribute__ ((unused,unused)) signed int __f3__i_1;
-    __attribute__ ((unused)) signed int __f4__i_1;
-    __attribute__ ((unused,unused)) signed int __f5__i_1;
-    __attribute__ ((used,packed)) signed int __f6__i_1;
-    __attribute__ ((used,unused,unused)) signed int __f7__i_1;
-    __attribute__ ((used,used,unused)) signed int __f8__i_1;
-    __attribute__ ((unused,unused)) signed int *__f9__Pi_1;
-};
-static inline void ___constructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1);
-static inline void ___constructor__F_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1);
-static inline void ___destructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1);
-static inline struct Fdl ___operator_assign__F4sFdl_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1);
-static inline void ___constructor__F_4sFdli_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1);
-static inline void ___constructor__F_4sFdlii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1);
-static inline void ___constructor__F_4sFdliii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1);
-static inline void ___constructor__F_4sFdliiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1);
-static inline void ___constructor__F_4sFdliiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1);
-static inline void ___constructor__F_4sFdliiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1);
-static inline void ___constructor__F_4sFdliiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1);
-static inline void ___constructor__F_4sFdliiiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1);
-static inline void ___constructor__F_4sFdliiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused,unused)) signed int *__f9__Pi_1);
-static inline void ___constructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=___src__4sFdl_1.__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=___src__4sFdl_1.__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=___src__4sFdl_1.__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=___src__4sFdl_1.__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=___src__4sFdl_1.__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1=___src__4sFdl_1.__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1=___src__4sFdl_1.__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1) /* ?{} */);
-}
-static inline void ___destructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1) /* ^?{} */);
-    ((void)((*___dst__4sFdl_1).__f1__i_1) /* ^?{} */);
-}
-static inline struct Fdl ___operator_assign__F4sFdl_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1){
-    struct Fdl ___ret__4sFdl_1;
-    ((void)((*___dst__4sFdl_1).__f1__i_1=___src__4sFdl_1.__f1__i_1));
-    ((void)((*___dst__4sFdl_1).__f2__i_1=___src__4sFdl_1.__f2__i_1));
-    ((void)((*___dst__4sFdl_1).__f3__i_1=___src__4sFdl_1.__f3__i_1));
-    ((void)((*___dst__4sFdl_1).__f4__i_1=___src__4sFdl_1.__f4__i_1));
-    ((void)((*___dst__4sFdl_1).__f5__i_1=___src__4sFdl_1.__f5__i_1));
-    ((void)((*___dst__4sFdl_1).__f6__i_1=___src__4sFdl_1.__f6__i_1));
-    ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1));
-    ((void)((*___dst__4sFdl_1).__f8__i_1=___src__4sFdl_1.__f8__i_1));
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1));
-    ((void)___constructor__F_4sFdl4sFdl_autogen___1((&___ret__4sFdl_1), (*___dst__4sFdl_1)));
-    return ___ret__4sFdl_1;
-}
-static inline void ___constructor__F_4sFdli_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdlii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
-}
-static inline void ___constructor__F_4sFdliiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused,unused)) signed int *__f9__Pi_1){
-    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */);
-    ((void)((*___dst__4sFdl_1).__f9__Pi_1=__f9__Pi_1) /* ?{} */);
-}
-__attribute__ ((unused)) signed int __f__Fi___1() asm ( "xyz" );
-__attribute__ ((used,used)) const signed int __vd1__Ci_1;
-__attribute__ ((used,unused)) const signed int __vd2__Ci_1;
-__attribute__ ((used,used,used,used)) const signed int *__vd3__PCi_1;
-__attribute__ ((used,used,unused,used,unused)) const signed int *__vd4__PCi_1;
-__attribute__ ((used,used,used)) const signed int __vd5__A0Ci_1[((unsigned int )5)];
-__attribute__ ((used,used,unused,used)) const signed int __vd6__A0Ci_1[((unsigned int )5)];
-__attribute__ ((used,used,used,used)) const signed int (*__vd7__Fi___1)();
-__attribute__ ((used,used,unused,used,used)) const signed int (*__vd8__Fi___1)();
-__attribute__ ((unused,used)) signed int __f1__Fi___1();
-__attribute__ ((unused)) signed int __f1__Fi___1(){
-    __attribute__ ((unused)) signed int ___retval_f1__i_1;
-}
-__attribute__ ((unused,unused,unused,used)) signed int **const __f2__FPPi___1();
-__attribute__ ((unused,unused,unused)) signed int **const __f2__FPPi___1(){
-    __attribute__ ((unused)) signed int **const ___retval_f2__CPPi_1;
-}
-__attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object0))[];
-__attribute__ ((unused,unused)) signed int (*__f3__FPA0i_i__1(signed int __p__i_1))[]{
-    __attribute__ ((unused)) signed int (*___retval_f3__PA0i_1)[];
-}
-__attribute__ ((unused,used,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object1);
-__attribute__ ((unused,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object2){
-    __attribute__ ((unused)) signed int (*___retval_f4__Fi_i__1)(signed int __anonymous_object3);
-}
-signed int __vtr__Fi___1(){
-    __attribute__ ((unused)) signed int ___retval_vtr__i_1;
-    __attribute__ ((unused,unused,used)) signed int __t1__i_2;
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int **__t2__PPi_2;
-    __attribute__ ((unused,unused,unused)) signed int __t3__A0i_2[((unsigned int )5)];
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int **__t4__A0PPi_2[((unsigned int )5)];
-    __attribute__ ((unused,unused,unused)) signed int __t5__Fi___2();
-    __attribute__ ((unused,unused,unused,unused)) signed int *__t6__FPi___2();
-}
-signed int __ipd1__Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int __p__i_1, __attribute__ ((unused,unused,unused)) signed int __q__i_1);
-signed int __ipd1__Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int __p__i_1, __attribute__ ((unused,unused,unused)) signed int __q__i_1){
-    __attribute__ ((unused)) signed int ___retval_ipd1__i_1;
-}
-signed int __ipd2__Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1);
-signed int __ipd2__Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_ipd2__i_1;
-}
-signed int __ipd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1);
-signed int __ipd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1){
-    __attribute__ ((unused)) signed int ___retval_ipd3__i_1;
-}
-signed int __ipd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__p__Fi___1)(), __attribute__ ((unused,unused,unused)) signed int (*__q__Fi___1)());
-signed int __ipd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__p__Fi___1)(), __attribute__ ((unused,unused,unused)) signed int (*__q__Fi___1)()){
-    __attribute__ ((unused)) signed int ___retval_ipd4__i_1;
-}
-signed int __tpr1__Fi_i__1(__attribute__ ((unused,unused,unused)) signed int __Foo__i_1);
-signed int __tpr2__Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **__Foo__PPi_1);
-signed int __tpr3__Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *__Foo__Pi_1);
-signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object4)(__attribute__ ((unused,unused)) signed int __anonymous_object5[((unsigned int )5)]));
-signed int __tpr5__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)());
-signed int __tpr6__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)());
-signed int __tpr7__Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object6)(__attribute__ ((unused)) signed int (*__anonymous_object7)(__attribute__ ((unused,unused)) signed int __anonymous_object8)));
-signed int __ad__Fi___1(){
-    __attribute__ ((unused)) signed int ___retval_ad__i_1;
-    __attribute__ ((used,unused)) signed int __ad1__i_2;
-    __attribute__ ((unused,unused,unused)) signed int *__ad2__Pi_2;
-    __attribute__ ((unused,unused,unused)) signed int __ad3__A0i_2[((unsigned int )5)];
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int (*__ad4__PA0i_2)[((unsigned int )10)];
-    __attribute__ ((unused,unused,unused,unused,used)) signed int __ad5__i_2;
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int __ad6__Fi___2();
-    ((void)sizeof(__attribute__ ((unused,unused)) signed int ));
-    ((void)sizeof(__attribute__ ((unused,unused,unused,unused)) signed int **));
-    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int [5]));
-    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int (*)[10]));
-    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int ()));
-    struct __attribute__ ((unused)) __anonymous3 {
-        signed int __i__i_2;
-    };
-    inline void ___constructor__F_13s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2){
-        ((void)((*___dst__13s__anonymous3_2).__i__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_13s__anonymous313s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2, struct __anonymous3 ___src__13s__anonymous3_2){
-        ((void)((*___dst__13s__anonymous3_2).__i__i_2=___src__13s__anonymous3_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_13s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2){
-        ((void)((*___dst__13s__anonymous3_2).__i__i_2) /* ^?{} */);
-    }
-    inline struct __anonymous3 ___operator_assign__F13s__anonymous3_13s__anonymous313s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2, struct __anonymous3 ___src__13s__anonymous3_2){
-        struct __anonymous3 ___ret__13s__anonymous3_2;
-        ((void)((*___dst__13s__anonymous3_2).__i__i_2=___src__13s__anonymous3_2.__i__i_2));
-        ((void)___constructor__F_13s__anonymous313s__anonymous3_autogen___2((&___ret__13s__anonymous3_2), (*___dst__13s__anonymous3_2)));
-        return ___ret__13s__anonymous3_2;
-    }
-    inline void ___constructor__F_13s__anonymous3i_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2, signed int __i__i_2){
-        ((void)((*___dst__13s__anonymous3_2).__i__i_2=__i__i_2) /* ?{} */);
-    }
-    ((void)sizeof(struct __anonymous3 ));
-    enum __attribute__ ((unused)) __anonymous4 {
-        __R__C13e__anonymous4_2,
-    };
-    inline void ___constructor__F_13e__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *___dst__13e__anonymous4_2){
-    }
-    inline void ___constructor__F_13e__anonymous413e__anonymous4_intrinsic___2(enum __anonymous4 *___dst__13e__anonymous4_2, enum __anonymous4 ___src__13e__anonymous4_2){
-        ((void)((*___dst__13e__anonymous4_2)=___src__13e__anonymous4_2) /* ?{} */);
-    }
-    inline void ___destructor__F_13e__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *___dst__13e__anonymous4_2){
-    }
-    inline enum __anonymous4 ___operator_assign__F13e__anonymous4_13e__anonymous413e__anonymous4_intrinsic___2(enum __anonymous4 *___dst__13e__anonymous4_2, enum __anonymous4 ___src__13e__anonymous4_2){
-        enum __anonymous4 ___ret__13e__anonymous4_2;
-        ((void)((*___dst__13e__anonymous4_2)=___src__13e__anonymous4_2));
-        ((void)(___ret__13e__anonymous4_2=(*___dst__13e__anonymous4_2)) /* ?{} */);
-        return ___ret__13e__anonymous4_2;
-    }
-    ((void)sizeof(enum __anonymous4 ));
-}
-signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object9, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object10);
-signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object11, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object12);
-signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object13, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object14);
-signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)());
-signed int __apd5__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __anonymous_object18), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object19)(__attribute__ ((unused)) signed int __anonymous_object20));
-signed int __apd6__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object22)());
-signed int __apd7__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object23)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26));
-struct Vad {
-    __attribute__ ((unused)) signed int __anonymous_object27:4;
-    __attribute__ ((unused)) signed int __anonymous_object28:4;
-    __attribute__ ((unused,unused)) signed int __anonymous_object29:6;
-};
-static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1);
-static inline void ___constructor__F_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1);
-static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1);
-static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1);
-static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){
-}
-static inline void ___constructor__F_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){
-}
-static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){
-}
-static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){
-    struct Vad ___ret__4sVad_1;
-    ((void)___constructor__F_4sVad4sVad_autogen___1((&___ret__4sVad_1), (*___dst__4sVad_1)));
-    return ___ret__4sVad_1;
-}
Index: c/tests/.expect/avl_test.txt
===================================================================
--- src/tests/.expect/avl_test.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,3 +1,0 @@
-3 13 0
-foo bar baz
-world bar cheese
Index: c/tests/.expect/castError.txt
===================================================================
--- src/tests/.expect/castError.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,36 +1,0 @@
-castError.c:7:1 error: Cannot choose between 3 alternatives for expression
-Cast of:
-  Name: f
-... to:
-  charAlternatives are:
-Cost ( 1, 0, 0, 0 ): Cast of:
-     Variable Expression: f: function
-       accepting unspecified arguments
-     ... returning nothing 
-
-   ... to:
-     char
- (types:
-   char
- )
- Environment: 
-
-Cost ( 1, 0, 0, 0 ): Cast of:
-     Variable Expression: f: double
-   ... to:
-     char
- (types:
-   char
- )
- Environment: 
-
-Cost ( 1, 0, 0, 0 ): Cast of:
-     Variable Expression: f: signed int
-   ... to:
-     char
- (types:
-   char
- )
- Environment: 
-
-
Index: c/tests/.expect/completeTypeError.txt
===================================================================
--- src/tests/.expect/completeTypeError.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,45 +1,0 @@
-completeTypeError.c:33:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: *?
-...to: 
-  Name: v
-
-completeTypeError.c:34:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: *?
-...to: 
-  Name: y
-
-completeTypeError.c:35:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: foo
-...to: 
-  Name: v
-
-completeTypeError.c:36:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: baz
-...to: 
-  Name: v
-
-completeTypeError.c:37:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: quux
-...to: 
-  Name: v
-
-completeTypeError.c:58:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: baz
-...to: 
-  Name: y
-
-completeTypeError.c:59:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: quux
-...to: 
-  Name: y
-
-completeTypeError.c:60:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: *?
-...to: 
-  Name: y
-
-completeTypeError.c:72:1 error: No reasonable alternatives for expression Applying untyped: 
-  Name: baz
-...to: 
-  Name: z
-
Index: c/tests/.expect/complex.txt
===================================================================
--- src/tests/.expect/complex.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,4 +1,0 @@
-x:3+2i y:4+5i z:7+7i
-x:3+2i y:4+5i z:7+7i
-x:2.1+1.3i y:3.2+4.5i z:5.3+5.8i
-x:2.1+1.3i y:3.2+4.5i z:5.3+5.8i
Index: c/tests/.expect/counter.txt
===================================================================
--- src/tests/.expect/counter.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-45
-42
Index: c/tests/.expect/declarationErrors.txt
===================================================================
--- src/tests/.expect/declarationErrors.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,70 +1,0 @@
-declarationErrors.c:16:1 error: duplicate static in declaration of x1: static const volatile short int 
-
-declarationErrors.c:17:1 error: conflicting extern & static in declaration of x2: extern const volatile short int 
-
-declarationErrors.c:18:1 error: conflicting extern & auto, conflicting extern & static, conflicting extern & static, duplicate extern in declaration of x3: extern const volatile short int 
-
-declarationErrors.c:19:1 error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous0
-  with members 
-    i: int 
-   with body 
-
-
-declarationErrors.c:20:1 error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous1
-  with members 
-    i: int 
-   with body 
-
-
-declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile Int
-
-declarationErrors.c:24:1 error: duplicate const in declaration of f01: static inline function
-  with no parameters 
-  returning const volatile int 
-
-
-declarationErrors.c:25:1 error: duplicate volatile in declaration of f02: static inline function
-  with no parameters 
-  returning const volatile int 
-
-
-declarationErrors.c:26:1 error: duplicate const in declaration of f03: static inline function
-  with no parameters 
-  returning const volatile int 
-
-
-declarationErrors.c:27:1 error: duplicate volatile in declaration of f04: static inline function
-  with no parameters 
-  returning const volatile int 
-
-
-declarationErrors.c:28:1 error: duplicate const in declaration of f05: static inline function
-  with no parameters 
-  returning const volatile int 
-
-
-declarationErrors.c:29:1 error: duplicate volatile in declaration of f06: static inline function
-  with no parameters 
-  returning const volatile int 
-
-
-declarationErrors.c:30:1 error: duplicate const in declaration of f07: static inline function
-  with no parameters 
-  returning const volatile int 
-
-
-declarationErrors.c:31:1 error: duplicate const, duplicate volatile in declaration of f08: static inline function
-  with no parameters 
-  returning const volatile int 
-
-
-declarationErrors.c:33:1 error: duplicate const, duplicate volatile in declaration of f09: static inline function
-  with no parameters 
-  returning const volatile int 
-
-
-declarationErrors.c:34:1 error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function
-  with no parameters 
-  returning const restrict volatile _Atomic int 
-
-
Index: c/tests/.expect/declarationSpecifier.x64.txt
===================================================================
--- src/tests/.expect/declarationSpecifier.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,704 +1,0 @@
-volatile const signed short int __x1__CVs_1;
-static volatile const signed short int __x2__CVs_1;
-static volatile const signed short int __x3__CVs_1;
-static volatile const signed short int __x4__CVs_1;
-static volatile const signed short int __x5__CVs_1;
-static volatile const signed short int __x6__CVs_1;
-static volatile const signed short int __x7__CVs_1;
-static volatile const signed short int __x8__CVs_1;
-struct __anonymous0 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1);
-static inline void ___constructor__F_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
-static inline void ___destructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1);
-static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
-static inline void ___constructor__F_13s__anonymous0i_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1){
-    ((void)((*___dst__13s__anonymous0_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
-    ((void)((*___dst__13s__anonymous0_1).__i__i_1=___src__13s__anonymous0_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1){
-    ((void)((*___dst__13s__anonymous0_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
-    struct __anonymous0 ___ret__13s__anonymous0_1;
-    ((void)((*___dst__13s__anonymous0_1).__i__i_1=___src__13s__anonymous0_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous013s__anonymous0_autogen___1((&___ret__13s__anonymous0_1), (*___dst__13s__anonymous0_1)));
-    return ___ret__13s__anonymous0_1;
-}
-static inline void ___constructor__F_13s__anonymous0i_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous0_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-volatile const struct __anonymous0 __x10__CV13s__anonymous0_1;
-struct __anonymous1 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1);
-static inline void ___constructor__F_13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1);
-static inline void ___destructor__F_13s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1);
-static inline struct __anonymous1 ___operator_assign__F13s__anonymous1_13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1);
-static inline void ___constructor__F_13s__anonymous1i_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1){
-    ((void)((*___dst__13s__anonymous1_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
-    ((void)((*___dst__13s__anonymous1_1).__i__i_1=___src__13s__anonymous1_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1){
-    ((void)((*___dst__13s__anonymous1_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous1 ___operator_assign__F13s__anonymous1_13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
-    struct __anonymous1 ___ret__13s__anonymous1_1;
-    ((void)((*___dst__13s__anonymous1_1).__i__i_1=___src__13s__anonymous1_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous113s__anonymous1_autogen___1((&___ret__13s__anonymous1_1), (*___dst__13s__anonymous1_1)));
-    return ___ret__13s__anonymous1_1;
-}
-static inline void ___constructor__F_13s__anonymous1i_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous1_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-volatile const struct __anonymous1 __x11__CV13s__anonymous1_1;
-struct __anonymous2 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1);
-static inline void ___constructor__F_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
-static inline void ___destructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1);
-static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
-static inline void ___constructor__F_13s__anonymous2i_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1){
-    ((void)((*___dst__13s__anonymous2_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
-    ((void)((*___dst__13s__anonymous2_1).__i__i_1=___src__13s__anonymous2_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1){
-    ((void)((*___dst__13s__anonymous2_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
-    struct __anonymous2 ___ret__13s__anonymous2_1;
-    ((void)((*___dst__13s__anonymous2_1).__i__i_1=___src__13s__anonymous2_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous213s__anonymous2_autogen___1((&___ret__13s__anonymous2_1), (*___dst__13s__anonymous2_1)));
-    return ___ret__13s__anonymous2_1;
-}
-static inline void ___constructor__F_13s__anonymous2i_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous2_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-volatile const struct __anonymous2 __x12__CV13s__anonymous2_1;
-struct __anonymous3 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1);
-static inline void ___constructor__F_13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1);
-static inline void ___destructor__F_13s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1);
-static inline struct __anonymous3 ___operator_assign__F13s__anonymous3_13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1);
-static inline void ___constructor__F_13s__anonymous3i_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1){
-    ((void)((*___dst__13s__anonymous3_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
-    ((void)((*___dst__13s__anonymous3_1).__i__i_1=___src__13s__anonymous3_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1){
-    ((void)((*___dst__13s__anonymous3_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous3 ___operator_assign__F13s__anonymous3_13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
-    struct __anonymous3 ___ret__13s__anonymous3_1;
-    ((void)((*___dst__13s__anonymous3_1).__i__i_1=___src__13s__anonymous3_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous313s__anonymous3_autogen___1((&___ret__13s__anonymous3_1), (*___dst__13s__anonymous3_1)));
-    return ___ret__13s__anonymous3_1;
-}
-static inline void ___constructor__F_13s__anonymous3i_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous3_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static volatile const struct __anonymous3 __x13__CV13s__anonymous3_1;
-struct __anonymous4 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1);
-static inline void ___constructor__F_13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1);
-static inline void ___destructor__F_13s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1);
-static inline struct __anonymous4 ___operator_assign__F13s__anonymous4_13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1);
-static inline void ___constructor__F_13s__anonymous4i_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1){
-    ((void)((*___dst__13s__anonymous4_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
-    ((void)((*___dst__13s__anonymous4_1).__i__i_1=___src__13s__anonymous4_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1){
-    ((void)((*___dst__13s__anonymous4_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous4 ___operator_assign__F13s__anonymous4_13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
-    struct __anonymous4 ___ret__13s__anonymous4_1;
-    ((void)((*___dst__13s__anonymous4_1).__i__i_1=___src__13s__anonymous4_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous413s__anonymous4_autogen___1((&___ret__13s__anonymous4_1), (*___dst__13s__anonymous4_1)));
-    return ___ret__13s__anonymous4_1;
-}
-static inline void ___constructor__F_13s__anonymous4i_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous4_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static volatile const struct __anonymous4 __x14__CV13s__anonymous4_1;
-struct __anonymous5 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1);
-static inline void ___constructor__F_13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1);
-static inline void ___destructor__F_13s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1);
-static inline struct __anonymous5 ___operator_assign__F13s__anonymous5_13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1);
-static inline void ___constructor__F_13s__anonymous5i_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1){
-    ((void)((*___dst__13s__anonymous5_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
-    ((void)((*___dst__13s__anonymous5_1).__i__i_1=___src__13s__anonymous5_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1){
-    ((void)((*___dst__13s__anonymous5_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous5 ___operator_assign__F13s__anonymous5_13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
-    struct __anonymous5 ___ret__13s__anonymous5_1;
-    ((void)((*___dst__13s__anonymous5_1).__i__i_1=___src__13s__anonymous5_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous513s__anonymous5_autogen___1((&___ret__13s__anonymous5_1), (*___dst__13s__anonymous5_1)));
-    return ___ret__13s__anonymous5_1;
-}
-static inline void ___constructor__F_13s__anonymous5i_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous5_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static volatile const struct __anonymous5 __x15__CV13s__anonymous5_1;
-struct __anonymous6 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1);
-static inline void ___constructor__F_13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1);
-static inline void ___destructor__F_13s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1);
-static inline struct __anonymous6 ___operator_assign__F13s__anonymous6_13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1);
-static inline void ___constructor__F_13s__anonymous6i_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1){
-    ((void)((*___dst__13s__anonymous6_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
-    ((void)((*___dst__13s__anonymous6_1).__i__i_1=___src__13s__anonymous6_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1){
-    ((void)((*___dst__13s__anonymous6_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous6 ___operator_assign__F13s__anonymous6_13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
-    struct __anonymous6 ___ret__13s__anonymous6_1;
-    ((void)((*___dst__13s__anonymous6_1).__i__i_1=___src__13s__anonymous6_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous613s__anonymous6_autogen___1((&___ret__13s__anonymous6_1), (*___dst__13s__anonymous6_1)));
-    return ___ret__13s__anonymous6_1;
-}
-static inline void ___constructor__F_13s__anonymous6i_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous6_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static volatile const struct __anonymous6 __x16__CV13s__anonymous6_1;
-struct __anonymous7 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1);
-static inline void ___constructor__F_13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1);
-static inline void ___destructor__F_13s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1);
-static inline struct __anonymous7 ___operator_assign__F13s__anonymous7_13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1);
-static inline void ___constructor__F_13s__anonymous7i_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1){
-    ((void)((*___dst__13s__anonymous7_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
-    ((void)((*___dst__13s__anonymous7_1).__i__i_1=___src__13s__anonymous7_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1){
-    ((void)((*___dst__13s__anonymous7_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous7 ___operator_assign__F13s__anonymous7_13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
-    struct __anonymous7 ___ret__13s__anonymous7_1;
-    ((void)((*___dst__13s__anonymous7_1).__i__i_1=___src__13s__anonymous7_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous713s__anonymous7_autogen___1((&___ret__13s__anonymous7_1), (*___dst__13s__anonymous7_1)));
-    return ___ret__13s__anonymous7_1;
-}
-static inline void ___constructor__F_13s__anonymous7i_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous7_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static volatile const struct __anonymous7 __x17__CV13s__anonymous7_1;
-volatile const signed short int __x20__CVs_1;
-static volatile const signed short int __x21__CVs_1;
-static volatile const signed short int __x22__CVs_1;
-static volatile const signed short int __x23__CVs_1;
-static volatile const signed short int __x24__CVs_1;
-static volatile const signed short int __x25__CVs_1;
-static volatile const signed short int __x26__CVs_1;
-static volatile const signed short int __x27__CVs_1;
-struct __anonymous8 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_13s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1);
-static inline void ___constructor__F_13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1);
-static inline void ___destructor__F_13s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1);
-static inline struct __anonymous8 ___operator_assign__F13s__anonymous8_13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1);
-static inline void ___constructor__F_13s__anonymous8s_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, signed short int __i__s_1);
-static inline void ___constructor__F_13s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1){
-    ((void)((*___dst__13s__anonymous8_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
-    ((void)((*___dst__13s__anonymous8_1).__i__s_1=___src__13s__anonymous8_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1){
-    ((void)((*___dst__13s__anonymous8_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous8 ___operator_assign__F13s__anonymous8_13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
-    struct __anonymous8 ___ret__13s__anonymous8_1;
-    ((void)((*___dst__13s__anonymous8_1).__i__s_1=___src__13s__anonymous8_1.__i__s_1));
-    ((void)___constructor__F_13s__anonymous813s__anonymous8_autogen___1((&___ret__13s__anonymous8_1), (*___dst__13s__anonymous8_1)));
-    return ___ret__13s__anonymous8_1;
-}
-static inline void ___constructor__F_13s__anonymous8s_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, signed short int __i__s_1){
-    ((void)((*___dst__13s__anonymous8_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-volatile const struct __anonymous8 __x29__CV13s__anonymous8_1;
-struct __anonymous9 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_13s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1);
-static inline void ___constructor__F_13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1);
-static inline void ___destructor__F_13s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1);
-static inline struct __anonymous9 ___operator_assign__F13s__anonymous9_13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1);
-static inline void ___constructor__F_13s__anonymous9s_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, signed short int __i__s_1);
-static inline void ___constructor__F_13s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1){
-    ((void)((*___dst__13s__anonymous9_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
-    ((void)((*___dst__13s__anonymous9_1).__i__s_1=___src__13s__anonymous9_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1){
-    ((void)((*___dst__13s__anonymous9_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous9 ___operator_assign__F13s__anonymous9_13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
-    struct __anonymous9 ___ret__13s__anonymous9_1;
-    ((void)((*___dst__13s__anonymous9_1).__i__s_1=___src__13s__anonymous9_1.__i__s_1));
-    ((void)___constructor__F_13s__anonymous913s__anonymous9_autogen___1((&___ret__13s__anonymous9_1), (*___dst__13s__anonymous9_1)));
-    return ___ret__13s__anonymous9_1;
-}
-static inline void ___constructor__F_13s__anonymous9s_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, signed short int __i__s_1){
-    ((void)((*___dst__13s__anonymous9_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-volatile const struct __anonymous9 __x30__CV13s__anonymous9_1;
-struct __anonymous10 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1);
-static inline void ___constructor__F_14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1);
-static inline void ___destructor__F_14s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1);
-static inline struct __anonymous10 ___operator_assign__F14s__anonymous10_14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1);
-static inline void ___constructor__F_14s__anonymous10s_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1){
-    ((void)((*___dst__14s__anonymous10_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
-    ((void)((*___dst__14s__anonymous10_1).__i__s_1=___src__14s__anonymous10_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1){
-    ((void)((*___dst__14s__anonymous10_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous10 ___operator_assign__F14s__anonymous10_14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
-    struct __anonymous10 ___ret__14s__anonymous10_1;
-    ((void)((*___dst__14s__anonymous10_1).__i__s_1=___src__14s__anonymous10_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1014s__anonymous10_autogen___1((&___ret__14s__anonymous10_1), (*___dst__14s__anonymous10_1)));
-    return ___ret__14s__anonymous10_1;
-}
-static inline void ___constructor__F_14s__anonymous10s_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous10_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-volatile const struct __anonymous10 __x31__CV14s__anonymous10_1;
-struct __anonymous11 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1);
-static inline void ___constructor__F_14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1);
-static inline void ___destructor__F_14s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1);
-static inline struct __anonymous11 ___operator_assign__F14s__anonymous11_14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1);
-static inline void ___constructor__F_14s__anonymous11s_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1){
-    ((void)((*___dst__14s__anonymous11_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
-    ((void)((*___dst__14s__anonymous11_1).__i__s_1=___src__14s__anonymous11_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1){
-    ((void)((*___dst__14s__anonymous11_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous11 ___operator_assign__F14s__anonymous11_14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
-    struct __anonymous11 ___ret__14s__anonymous11_1;
-    ((void)((*___dst__14s__anonymous11_1).__i__s_1=___src__14s__anonymous11_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1114s__anonymous11_autogen___1((&___ret__14s__anonymous11_1), (*___dst__14s__anonymous11_1)));
-    return ___ret__14s__anonymous11_1;
-}
-static inline void ___constructor__F_14s__anonymous11s_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous11_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-static volatile const struct __anonymous11 __x32__CV14s__anonymous11_1;
-struct __anonymous12 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1);
-static inline void ___constructor__F_14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1);
-static inline void ___destructor__F_14s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1);
-static inline struct __anonymous12 ___operator_assign__F14s__anonymous12_14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1);
-static inline void ___constructor__F_14s__anonymous12s_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1){
-    ((void)((*___dst__14s__anonymous12_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
-    ((void)((*___dst__14s__anonymous12_1).__i__s_1=___src__14s__anonymous12_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1){
-    ((void)((*___dst__14s__anonymous12_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous12 ___operator_assign__F14s__anonymous12_14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
-    struct __anonymous12 ___ret__14s__anonymous12_1;
-    ((void)((*___dst__14s__anonymous12_1).__i__s_1=___src__14s__anonymous12_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1214s__anonymous12_autogen___1((&___ret__14s__anonymous12_1), (*___dst__14s__anonymous12_1)));
-    return ___ret__14s__anonymous12_1;
-}
-static inline void ___constructor__F_14s__anonymous12s_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous12_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-static volatile const struct __anonymous12 __x33__CV14s__anonymous12_1;
-struct __anonymous13 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1);
-static inline void ___constructor__F_14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1);
-static inline void ___destructor__F_14s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1);
-static inline struct __anonymous13 ___operator_assign__F14s__anonymous13_14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1);
-static inline void ___constructor__F_14s__anonymous13s_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1){
-    ((void)((*___dst__14s__anonymous13_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
-    ((void)((*___dst__14s__anonymous13_1).__i__s_1=___src__14s__anonymous13_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1){
-    ((void)((*___dst__14s__anonymous13_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous13 ___operator_assign__F14s__anonymous13_14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
-    struct __anonymous13 ___ret__14s__anonymous13_1;
-    ((void)((*___dst__14s__anonymous13_1).__i__s_1=___src__14s__anonymous13_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1314s__anonymous13_autogen___1((&___ret__14s__anonymous13_1), (*___dst__14s__anonymous13_1)));
-    return ___ret__14s__anonymous13_1;
-}
-static inline void ___constructor__F_14s__anonymous13s_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous13_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-static volatile const struct __anonymous13 __x34__CV14s__anonymous13_1;
-struct __anonymous14 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1);
-static inline void ___constructor__F_14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1);
-static inline void ___destructor__F_14s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1);
-static inline struct __anonymous14 ___operator_assign__F14s__anonymous14_14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1);
-static inline void ___constructor__F_14s__anonymous14s_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1){
-    ((void)((*___dst__14s__anonymous14_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
-    ((void)((*___dst__14s__anonymous14_1).__i__s_1=___src__14s__anonymous14_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1){
-    ((void)((*___dst__14s__anonymous14_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous14 ___operator_assign__F14s__anonymous14_14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
-    struct __anonymous14 ___ret__14s__anonymous14_1;
-    ((void)((*___dst__14s__anonymous14_1).__i__s_1=___src__14s__anonymous14_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1414s__anonymous14_autogen___1((&___ret__14s__anonymous14_1), (*___dst__14s__anonymous14_1)));
-    return ___ret__14s__anonymous14_1;
-}
-static inline void ___constructor__F_14s__anonymous14s_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous14_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-static volatile const struct __anonymous14 __x35__CV14s__anonymous14_1;
-struct __anonymous15 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1);
-static inline void ___constructor__F_14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1);
-static inline void ___destructor__F_14s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1);
-static inline struct __anonymous15 ___operator_assign__F14s__anonymous15_14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1);
-static inline void ___constructor__F_14s__anonymous15s_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1){
-    ((void)((*___dst__14s__anonymous15_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
-    ((void)((*___dst__14s__anonymous15_1).__i__s_1=___src__14s__anonymous15_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1){
-    ((void)((*___dst__14s__anonymous15_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous15 ___operator_assign__F14s__anonymous15_14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
-    struct __anonymous15 ___ret__14s__anonymous15_1;
-    ((void)((*___dst__14s__anonymous15_1).__i__s_1=___src__14s__anonymous15_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1514s__anonymous15_autogen___1((&___ret__14s__anonymous15_1), (*___dst__14s__anonymous15_1)));
-    return ___ret__14s__anonymous15_1;
-}
-static inline void ___constructor__F_14s__anonymous15s_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous15_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-static volatile const struct __anonymous15 __x36__CV14s__anonymous15_1;
-static inline volatile const signed int __f11__Fi___1();
-static inline volatile const signed int __f12__Fi___1();
-static inline volatile const signed int __f13__Fi___1();
-static inline volatile const signed int __f14__Fi___1();
-static inline volatile const signed int __f15__Fi___1();
-static inline volatile const signed int __f16__Fi___1();
-static inline volatile const signed int __f17__Fi___1();
-static inline volatile const signed int __f18__Fi___1();
-static inline volatile const signed short int __f21__Fs___1();
-static inline volatile const signed short int __f22__Fs___1();
-static inline volatile const signed short int __f23__Fs___1();
-static inline volatile const signed short int __f24__Fs___1();
-static inline volatile const signed short int __f25__Fs___1();
-static inline volatile const signed short int __f26__Fs___1();
-static inline volatile const signed short int __f27__Fs___1();
-static inline volatile const signed short int __f28__Fs___1();
-struct __anonymous16 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1);
-static inline void ___constructor__F_14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1);
-static inline void ___destructor__F_14s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1);
-static inline struct __anonymous16 ___operator_assign__F14s__anonymous16_14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1);
-static inline void ___constructor__F_14s__anonymous16i_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1){
-    ((void)((*___dst__14s__anonymous16_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
-    ((void)((*___dst__14s__anonymous16_1).__i__i_1=___src__14s__anonymous16_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1){
-    ((void)((*___dst__14s__anonymous16_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous16 ___operator_assign__F14s__anonymous16_14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
-    struct __anonymous16 ___ret__14s__anonymous16_1;
-    ((void)((*___dst__14s__anonymous16_1).__i__i_1=___src__14s__anonymous16_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous1614s__anonymous16_autogen___1((&___ret__14s__anonymous16_1), (*___dst__14s__anonymous16_1)));
-    return ___ret__14s__anonymous16_1;
-}
-static inline void ___constructor__F_14s__anonymous16i_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous16_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous16 __f31__F14s__anonymous16___1();
-struct __anonymous17 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1);
-static inline void ___constructor__F_14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1);
-static inline void ___destructor__F_14s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1);
-static inline struct __anonymous17 ___operator_assign__F14s__anonymous17_14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1);
-static inline void ___constructor__F_14s__anonymous17i_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1){
-    ((void)((*___dst__14s__anonymous17_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
-    ((void)((*___dst__14s__anonymous17_1).__i__i_1=___src__14s__anonymous17_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1){
-    ((void)((*___dst__14s__anonymous17_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous17 ___operator_assign__F14s__anonymous17_14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
-    struct __anonymous17 ___ret__14s__anonymous17_1;
-    ((void)((*___dst__14s__anonymous17_1).__i__i_1=___src__14s__anonymous17_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous1714s__anonymous17_autogen___1((&___ret__14s__anonymous17_1), (*___dst__14s__anonymous17_1)));
-    return ___ret__14s__anonymous17_1;
-}
-static inline void ___constructor__F_14s__anonymous17i_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous17_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous17 __f32__F14s__anonymous17___1();
-struct __anonymous18 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1);
-static inline void ___constructor__F_14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1);
-static inline void ___destructor__F_14s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1);
-static inline struct __anonymous18 ___operator_assign__F14s__anonymous18_14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1);
-static inline void ___constructor__F_14s__anonymous18i_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1){
-    ((void)((*___dst__14s__anonymous18_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
-    ((void)((*___dst__14s__anonymous18_1).__i__i_1=___src__14s__anonymous18_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1){
-    ((void)((*___dst__14s__anonymous18_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous18 ___operator_assign__F14s__anonymous18_14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
-    struct __anonymous18 ___ret__14s__anonymous18_1;
-    ((void)((*___dst__14s__anonymous18_1).__i__i_1=___src__14s__anonymous18_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous1814s__anonymous18_autogen___1((&___ret__14s__anonymous18_1), (*___dst__14s__anonymous18_1)));
-    return ___ret__14s__anonymous18_1;
-}
-static inline void ___constructor__F_14s__anonymous18i_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous18_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous18 __f33__F14s__anonymous18___1();
-struct __anonymous19 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1);
-static inline void ___constructor__F_14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1);
-static inline void ___destructor__F_14s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1);
-static inline struct __anonymous19 ___operator_assign__F14s__anonymous19_14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1);
-static inline void ___constructor__F_14s__anonymous19i_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1){
-    ((void)((*___dst__14s__anonymous19_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
-    ((void)((*___dst__14s__anonymous19_1).__i__i_1=___src__14s__anonymous19_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1){
-    ((void)((*___dst__14s__anonymous19_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous19 ___operator_assign__F14s__anonymous19_14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
-    struct __anonymous19 ___ret__14s__anonymous19_1;
-    ((void)((*___dst__14s__anonymous19_1).__i__i_1=___src__14s__anonymous19_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous1914s__anonymous19_autogen___1((&___ret__14s__anonymous19_1), (*___dst__14s__anonymous19_1)));
-    return ___ret__14s__anonymous19_1;
-}
-static inline void ___constructor__F_14s__anonymous19i_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous19_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous19 __f34__F14s__anonymous19___1();
-struct __anonymous20 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1);
-static inline void ___constructor__F_14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1);
-static inline void ___destructor__F_14s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1);
-static inline struct __anonymous20 ___operator_assign__F14s__anonymous20_14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1);
-static inline void ___constructor__F_14s__anonymous20i_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1){
-    ((void)((*___dst__14s__anonymous20_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
-    ((void)((*___dst__14s__anonymous20_1).__i__i_1=___src__14s__anonymous20_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1){
-    ((void)((*___dst__14s__anonymous20_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous20 ___operator_assign__F14s__anonymous20_14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
-    struct __anonymous20 ___ret__14s__anonymous20_1;
-    ((void)((*___dst__14s__anonymous20_1).__i__i_1=___src__14s__anonymous20_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous2014s__anonymous20_autogen___1((&___ret__14s__anonymous20_1), (*___dst__14s__anonymous20_1)));
-    return ___ret__14s__anonymous20_1;
-}
-static inline void ___constructor__F_14s__anonymous20i_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous20_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous20 __f35__F14s__anonymous20___1();
-struct __anonymous21 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1);
-static inline void ___constructor__F_14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1);
-static inline void ___destructor__F_14s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1);
-static inline struct __anonymous21 ___operator_assign__F14s__anonymous21_14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1);
-static inline void ___constructor__F_14s__anonymous21i_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1){
-    ((void)((*___dst__14s__anonymous21_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
-    ((void)((*___dst__14s__anonymous21_1).__i__i_1=___src__14s__anonymous21_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1){
-    ((void)((*___dst__14s__anonymous21_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous21 ___operator_assign__F14s__anonymous21_14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
-    struct __anonymous21 ___ret__14s__anonymous21_1;
-    ((void)((*___dst__14s__anonymous21_1).__i__i_1=___src__14s__anonymous21_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous2114s__anonymous21_autogen___1((&___ret__14s__anonymous21_1), (*___dst__14s__anonymous21_1)));
-    return ___ret__14s__anonymous21_1;
-}
-static inline void ___constructor__F_14s__anonymous21i_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous21_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous21 __f36__F14s__anonymous21___1();
-struct __anonymous22 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1);
-static inline void ___constructor__F_14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1);
-static inline void ___destructor__F_14s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1);
-static inline struct __anonymous22 ___operator_assign__F14s__anonymous22_14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1);
-static inline void ___constructor__F_14s__anonymous22i_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1){
-    ((void)((*___dst__14s__anonymous22_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
-    ((void)((*___dst__14s__anonymous22_1).__i__i_1=___src__14s__anonymous22_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1){
-    ((void)((*___dst__14s__anonymous22_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous22 ___operator_assign__F14s__anonymous22_14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
-    struct __anonymous22 ___ret__14s__anonymous22_1;
-    ((void)((*___dst__14s__anonymous22_1).__i__i_1=___src__14s__anonymous22_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous2214s__anonymous22_autogen___1((&___ret__14s__anonymous22_1), (*___dst__14s__anonymous22_1)));
-    return ___ret__14s__anonymous22_1;
-}
-static inline void ___constructor__F_14s__anonymous22i_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous22_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous22 __f37__F14s__anonymous22___1();
-struct __anonymous23 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1);
-static inline void ___constructor__F_14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1);
-static inline void ___destructor__F_14s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1);
-static inline struct __anonymous23 ___operator_assign__F14s__anonymous23_14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1);
-static inline void ___constructor__F_14s__anonymous23i_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1){
-    ((void)((*___dst__14s__anonymous23_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
-    ((void)((*___dst__14s__anonymous23_1).__i__i_1=___src__14s__anonymous23_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1){
-    ((void)((*___dst__14s__anonymous23_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous23 ___operator_assign__F14s__anonymous23_14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
-    struct __anonymous23 ___ret__14s__anonymous23_1;
-    ((void)((*___dst__14s__anonymous23_1).__i__i_1=___src__14s__anonymous23_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous2314s__anonymous23_autogen___1((&___ret__14s__anonymous23_1), (*___dst__14s__anonymous23_1)));
-    return ___ret__14s__anonymous23_1;
-}
-static inline void ___constructor__F_14s__anonymous23i_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous23_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous23 __f38__F14s__anonymous23___1();
-static inline volatile const signed short int __f41__Fs___1();
-static inline volatile const signed short int __f42__Fs___1();
-static inline volatile const signed short int __f43__Fs___1();
-static inline volatile const signed short int __f44__Fs___1();
-static inline volatile const signed short int __f45__Fs___1();
-static inline volatile const signed short int __f46__Fs___1();
-static inline volatile const signed short int __f47__Fs___1();
-static inline volatile const signed short int __f48__Fs___1();
-signed int __main__Fi_iPPCc__1(signed int __argc__i_1, const char **__argv__PPCc_1){
-    __attribute__ ((unused)) signed int ___retval_main__i_1;
-    ((void)(___retval_main__i_1=((signed int )0)) /* ?{} */);
-    return ___retval_main__i_1;
-    ((void)(___retval_main__i_1=0) /* ?{} */);
-    return ___retval_main__i_1;
-}
-static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return __main__Fi_iPPCc__1((signed int )argc, (const char **)argv); }
-static inline signed int invoke_main(signed int argc, char **argv, char **envp);
-signed int main(signed int __argc__i_1, char **__argv__PPc_1, char **__envp__PPc_1){
-    __attribute__ ((unused)) signed int ___retval_main__i_1;
-    signed int _tmp_cp_ret2;
-    ((void)(___retval_main__i_1=(((void)(_tmp_cp_ret2=invoke_main(__argc__i_1, __argv__PPc_1, __envp__PPc_1))) , _tmp_cp_ret2)) /* ?{} */);
-    ((void)(_tmp_cp_ret2) /* ^?{} */);
-    return ___retval_main__i_1;
-}
Index: c/tests/.expect/declarationSpecifier.x86.txt
===================================================================
--- src/tests/.expect/declarationSpecifier.x86.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,704 +1,0 @@
-volatile const signed short int __x1__CVs_1;
-static volatile const signed short int __x2__CVs_1;
-static volatile const signed short int __x3__CVs_1;
-static volatile const signed short int __x4__CVs_1;
-static volatile const signed short int __x5__CVs_1;
-static volatile const signed short int __x6__CVs_1;
-static volatile const signed short int __x7__CVs_1;
-static volatile const signed short int __x8__CVs_1;
-struct __anonymous0 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1);
-static inline void ___constructor__F_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
-static inline void ___destructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1);
-static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
-static inline void ___constructor__F_13s__anonymous0i_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1){
-    ((void)((*___dst__13s__anonymous0_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
-    ((void)((*___dst__13s__anonymous0_1).__i__i_1=___src__13s__anonymous0_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1){
-    ((void)((*___dst__13s__anonymous0_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
-    struct __anonymous0 ___ret__13s__anonymous0_1;
-    ((void)((*___dst__13s__anonymous0_1).__i__i_1=___src__13s__anonymous0_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous013s__anonymous0_autogen___1((&___ret__13s__anonymous0_1), (*___dst__13s__anonymous0_1)));
-    return ___ret__13s__anonymous0_1;
-}
-static inline void ___constructor__F_13s__anonymous0i_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous0_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-volatile const struct __anonymous0 __x10__CV13s__anonymous0_1;
-struct __anonymous1 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1);
-static inline void ___constructor__F_13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1);
-static inline void ___destructor__F_13s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1);
-static inline struct __anonymous1 ___operator_assign__F13s__anonymous1_13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1);
-static inline void ___constructor__F_13s__anonymous1i_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1){
-    ((void)((*___dst__13s__anonymous1_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
-    ((void)((*___dst__13s__anonymous1_1).__i__i_1=___src__13s__anonymous1_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1){
-    ((void)((*___dst__13s__anonymous1_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous1 ___operator_assign__F13s__anonymous1_13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
-    struct __anonymous1 ___ret__13s__anonymous1_1;
-    ((void)((*___dst__13s__anonymous1_1).__i__i_1=___src__13s__anonymous1_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous113s__anonymous1_autogen___1((&___ret__13s__anonymous1_1), (*___dst__13s__anonymous1_1)));
-    return ___ret__13s__anonymous1_1;
-}
-static inline void ___constructor__F_13s__anonymous1i_autogen___1(struct __anonymous1 *___dst__13s__anonymous1_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous1_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-volatile const struct __anonymous1 __x11__CV13s__anonymous1_1;
-struct __anonymous2 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1);
-static inline void ___constructor__F_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
-static inline void ___destructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1);
-static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
-static inline void ___constructor__F_13s__anonymous2i_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1){
-    ((void)((*___dst__13s__anonymous2_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
-    ((void)((*___dst__13s__anonymous2_1).__i__i_1=___src__13s__anonymous2_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1){
-    ((void)((*___dst__13s__anonymous2_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
-    struct __anonymous2 ___ret__13s__anonymous2_1;
-    ((void)((*___dst__13s__anonymous2_1).__i__i_1=___src__13s__anonymous2_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous213s__anonymous2_autogen___1((&___ret__13s__anonymous2_1), (*___dst__13s__anonymous2_1)));
-    return ___ret__13s__anonymous2_1;
-}
-static inline void ___constructor__F_13s__anonymous2i_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous2_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-volatile const struct __anonymous2 __x12__CV13s__anonymous2_1;
-struct __anonymous3 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1);
-static inline void ___constructor__F_13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1);
-static inline void ___destructor__F_13s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1);
-static inline struct __anonymous3 ___operator_assign__F13s__anonymous3_13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1);
-static inline void ___constructor__F_13s__anonymous3i_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1){
-    ((void)((*___dst__13s__anonymous3_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
-    ((void)((*___dst__13s__anonymous3_1).__i__i_1=___src__13s__anonymous3_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1){
-    ((void)((*___dst__13s__anonymous3_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous3 ___operator_assign__F13s__anonymous3_13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
-    struct __anonymous3 ___ret__13s__anonymous3_1;
-    ((void)((*___dst__13s__anonymous3_1).__i__i_1=___src__13s__anonymous3_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous313s__anonymous3_autogen___1((&___ret__13s__anonymous3_1), (*___dst__13s__anonymous3_1)));
-    return ___ret__13s__anonymous3_1;
-}
-static inline void ___constructor__F_13s__anonymous3i_autogen___1(struct __anonymous3 *___dst__13s__anonymous3_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous3_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static volatile const struct __anonymous3 __x13__CV13s__anonymous3_1;
-struct __anonymous4 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1);
-static inline void ___constructor__F_13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1);
-static inline void ___destructor__F_13s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1);
-static inline struct __anonymous4 ___operator_assign__F13s__anonymous4_13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1);
-static inline void ___constructor__F_13s__anonymous4i_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1){
-    ((void)((*___dst__13s__anonymous4_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
-    ((void)((*___dst__13s__anonymous4_1).__i__i_1=___src__13s__anonymous4_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1){
-    ((void)((*___dst__13s__anonymous4_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous4 ___operator_assign__F13s__anonymous4_13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
-    struct __anonymous4 ___ret__13s__anonymous4_1;
-    ((void)((*___dst__13s__anonymous4_1).__i__i_1=___src__13s__anonymous4_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous413s__anonymous4_autogen___1((&___ret__13s__anonymous4_1), (*___dst__13s__anonymous4_1)));
-    return ___ret__13s__anonymous4_1;
-}
-static inline void ___constructor__F_13s__anonymous4i_autogen___1(struct __anonymous4 *___dst__13s__anonymous4_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous4_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static volatile const struct __anonymous4 __x14__CV13s__anonymous4_1;
-struct __anonymous5 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1);
-static inline void ___constructor__F_13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1);
-static inline void ___destructor__F_13s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1);
-static inline struct __anonymous5 ___operator_assign__F13s__anonymous5_13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1);
-static inline void ___constructor__F_13s__anonymous5i_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1){
-    ((void)((*___dst__13s__anonymous5_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
-    ((void)((*___dst__13s__anonymous5_1).__i__i_1=___src__13s__anonymous5_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1){
-    ((void)((*___dst__13s__anonymous5_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous5 ___operator_assign__F13s__anonymous5_13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
-    struct __anonymous5 ___ret__13s__anonymous5_1;
-    ((void)((*___dst__13s__anonymous5_1).__i__i_1=___src__13s__anonymous5_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous513s__anonymous5_autogen___1((&___ret__13s__anonymous5_1), (*___dst__13s__anonymous5_1)));
-    return ___ret__13s__anonymous5_1;
-}
-static inline void ___constructor__F_13s__anonymous5i_autogen___1(struct __anonymous5 *___dst__13s__anonymous5_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous5_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static volatile const struct __anonymous5 __x15__CV13s__anonymous5_1;
-struct __anonymous6 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1);
-static inline void ___constructor__F_13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1);
-static inline void ___destructor__F_13s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1);
-static inline struct __anonymous6 ___operator_assign__F13s__anonymous6_13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1);
-static inline void ___constructor__F_13s__anonymous6i_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1){
-    ((void)((*___dst__13s__anonymous6_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
-    ((void)((*___dst__13s__anonymous6_1).__i__i_1=___src__13s__anonymous6_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1){
-    ((void)((*___dst__13s__anonymous6_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous6 ___operator_assign__F13s__anonymous6_13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
-    struct __anonymous6 ___ret__13s__anonymous6_1;
-    ((void)((*___dst__13s__anonymous6_1).__i__i_1=___src__13s__anonymous6_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous613s__anonymous6_autogen___1((&___ret__13s__anonymous6_1), (*___dst__13s__anonymous6_1)));
-    return ___ret__13s__anonymous6_1;
-}
-static inline void ___constructor__F_13s__anonymous6i_autogen___1(struct __anonymous6 *___dst__13s__anonymous6_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous6_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static volatile const struct __anonymous6 __x16__CV13s__anonymous6_1;
-struct __anonymous7 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_13s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1);
-static inline void ___constructor__F_13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1);
-static inline void ___destructor__F_13s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1);
-static inline struct __anonymous7 ___operator_assign__F13s__anonymous7_13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1);
-static inline void ___constructor__F_13s__anonymous7i_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, signed int __i__i_1);
-static inline void ___constructor__F_13s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1){
-    ((void)((*___dst__13s__anonymous7_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
-    ((void)((*___dst__13s__anonymous7_1).__i__i_1=___src__13s__anonymous7_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1){
-    ((void)((*___dst__13s__anonymous7_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous7 ___operator_assign__F13s__anonymous7_13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
-    struct __anonymous7 ___ret__13s__anonymous7_1;
-    ((void)((*___dst__13s__anonymous7_1).__i__i_1=___src__13s__anonymous7_1.__i__i_1));
-    ((void)___constructor__F_13s__anonymous713s__anonymous7_autogen___1((&___ret__13s__anonymous7_1), (*___dst__13s__anonymous7_1)));
-    return ___ret__13s__anonymous7_1;
-}
-static inline void ___constructor__F_13s__anonymous7i_autogen___1(struct __anonymous7 *___dst__13s__anonymous7_1, signed int __i__i_1){
-    ((void)((*___dst__13s__anonymous7_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static volatile const struct __anonymous7 __x17__CV13s__anonymous7_1;
-volatile const signed short int __x20__CVs_1;
-static volatile const signed short int __x21__CVs_1;
-static volatile const signed short int __x22__CVs_1;
-static volatile const signed short int __x23__CVs_1;
-static volatile const signed short int __x24__CVs_1;
-static volatile const signed short int __x25__CVs_1;
-static volatile const signed short int __x26__CVs_1;
-static volatile const signed short int __x27__CVs_1;
-struct __anonymous8 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_13s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1);
-static inline void ___constructor__F_13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1);
-static inline void ___destructor__F_13s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1);
-static inline struct __anonymous8 ___operator_assign__F13s__anonymous8_13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1);
-static inline void ___constructor__F_13s__anonymous8s_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, signed short int __i__s_1);
-static inline void ___constructor__F_13s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1){
-    ((void)((*___dst__13s__anonymous8_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
-    ((void)((*___dst__13s__anonymous8_1).__i__s_1=___src__13s__anonymous8_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1){
-    ((void)((*___dst__13s__anonymous8_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous8 ___operator_assign__F13s__anonymous8_13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
-    struct __anonymous8 ___ret__13s__anonymous8_1;
-    ((void)((*___dst__13s__anonymous8_1).__i__s_1=___src__13s__anonymous8_1.__i__s_1));
-    ((void)___constructor__F_13s__anonymous813s__anonymous8_autogen___1((&___ret__13s__anonymous8_1), (*___dst__13s__anonymous8_1)));
-    return ___ret__13s__anonymous8_1;
-}
-static inline void ___constructor__F_13s__anonymous8s_autogen___1(struct __anonymous8 *___dst__13s__anonymous8_1, signed short int __i__s_1){
-    ((void)((*___dst__13s__anonymous8_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-volatile const struct __anonymous8 __x29__CV13s__anonymous8_1;
-struct __anonymous9 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_13s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1);
-static inline void ___constructor__F_13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1);
-static inline void ___destructor__F_13s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1);
-static inline struct __anonymous9 ___operator_assign__F13s__anonymous9_13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1);
-static inline void ___constructor__F_13s__anonymous9s_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, signed short int __i__s_1);
-static inline void ___constructor__F_13s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1){
-    ((void)((*___dst__13s__anonymous9_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
-    ((void)((*___dst__13s__anonymous9_1).__i__s_1=___src__13s__anonymous9_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_13s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1){
-    ((void)((*___dst__13s__anonymous9_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous9 ___operator_assign__F13s__anonymous9_13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
-    struct __anonymous9 ___ret__13s__anonymous9_1;
-    ((void)((*___dst__13s__anonymous9_1).__i__s_1=___src__13s__anonymous9_1.__i__s_1));
-    ((void)___constructor__F_13s__anonymous913s__anonymous9_autogen___1((&___ret__13s__anonymous9_1), (*___dst__13s__anonymous9_1)));
-    return ___ret__13s__anonymous9_1;
-}
-static inline void ___constructor__F_13s__anonymous9s_autogen___1(struct __anonymous9 *___dst__13s__anonymous9_1, signed short int __i__s_1){
-    ((void)((*___dst__13s__anonymous9_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-volatile const struct __anonymous9 __x30__CV13s__anonymous9_1;
-struct __anonymous10 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1);
-static inline void ___constructor__F_14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1);
-static inline void ___destructor__F_14s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1);
-static inline struct __anonymous10 ___operator_assign__F14s__anonymous10_14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1);
-static inline void ___constructor__F_14s__anonymous10s_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1){
-    ((void)((*___dst__14s__anonymous10_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
-    ((void)((*___dst__14s__anonymous10_1).__i__s_1=___src__14s__anonymous10_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1){
-    ((void)((*___dst__14s__anonymous10_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous10 ___operator_assign__F14s__anonymous10_14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
-    struct __anonymous10 ___ret__14s__anonymous10_1;
-    ((void)((*___dst__14s__anonymous10_1).__i__s_1=___src__14s__anonymous10_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1014s__anonymous10_autogen___1((&___ret__14s__anonymous10_1), (*___dst__14s__anonymous10_1)));
-    return ___ret__14s__anonymous10_1;
-}
-static inline void ___constructor__F_14s__anonymous10s_autogen___1(struct __anonymous10 *___dst__14s__anonymous10_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous10_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-volatile const struct __anonymous10 __x31__CV14s__anonymous10_1;
-struct __anonymous11 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1);
-static inline void ___constructor__F_14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1);
-static inline void ___destructor__F_14s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1);
-static inline struct __anonymous11 ___operator_assign__F14s__anonymous11_14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1);
-static inline void ___constructor__F_14s__anonymous11s_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1){
-    ((void)((*___dst__14s__anonymous11_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
-    ((void)((*___dst__14s__anonymous11_1).__i__s_1=___src__14s__anonymous11_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1){
-    ((void)((*___dst__14s__anonymous11_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous11 ___operator_assign__F14s__anonymous11_14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
-    struct __anonymous11 ___ret__14s__anonymous11_1;
-    ((void)((*___dst__14s__anonymous11_1).__i__s_1=___src__14s__anonymous11_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1114s__anonymous11_autogen___1((&___ret__14s__anonymous11_1), (*___dst__14s__anonymous11_1)));
-    return ___ret__14s__anonymous11_1;
-}
-static inline void ___constructor__F_14s__anonymous11s_autogen___1(struct __anonymous11 *___dst__14s__anonymous11_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous11_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-static volatile const struct __anonymous11 __x32__CV14s__anonymous11_1;
-struct __anonymous12 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1);
-static inline void ___constructor__F_14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1);
-static inline void ___destructor__F_14s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1);
-static inline struct __anonymous12 ___operator_assign__F14s__anonymous12_14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1);
-static inline void ___constructor__F_14s__anonymous12s_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1){
-    ((void)((*___dst__14s__anonymous12_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
-    ((void)((*___dst__14s__anonymous12_1).__i__s_1=___src__14s__anonymous12_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1){
-    ((void)((*___dst__14s__anonymous12_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous12 ___operator_assign__F14s__anonymous12_14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
-    struct __anonymous12 ___ret__14s__anonymous12_1;
-    ((void)((*___dst__14s__anonymous12_1).__i__s_1=___src__14s__anonymous12_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1214s__anonymous12_autogen___1((&___ret__14s__anonymous12_1), (*___dst__14s__anonymous12_1)));
-    return ___ret__14s__anonymous12_1;
-}
-static inline void ___constructor__F_14s__anonymous12s_autogen___1(struct __anonymous12 *___dst__14s__anonymous12_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous12_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-static volatile const struct __anonymous12 __x33__CV14s__anonymous12_1;
-struct __anonymous13 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1);
-static inline void ___constructor__F_14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1);
-static inline void ___destructor__F_14s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1);
-static inline struct __anonymous13 ___operator_assign__F14s__anonymous13_14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1);
-static inline void ___constructor__F_14s__anonymous13s_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1){
-    ((void)((*___dst__14s__anonymous13_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
-    ((void)((*___dst__14s__anonymous13_1).__i__s_1=___src__14s__anonymous13_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1){
-    ((void)((*___dst__14s__anonymous13_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous13 ___operator_assign__F14s__anonymous13_14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
-    struct __anonymous13 ___ret__14s__anonymous13_1;
-    ((void)((*___dst__14s__anonymous13_1).__i__s_1=___src__14s__anonymous13_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1314s__anonymous13_autogen___1((&___ret__14s__anonymous13_1), (*___dst__14s__anonymous13_1)));
-    return ___ret__14s__anonymous13_1;
-}
-static inline void ___constructor__F_14s__anonymous13s_autogen___1(struct __anonymous13 *___dst__14s__anonymous13_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous13_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-static volatile const struct __anonymous13 __x34__CV14s__anonymous13_1;
-struct __anonymous14 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1);
-static inline void ___constructor__F_14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1);
-static inline void ___destructor__F_14s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1);
-static inline struct __anonymous14 ___operator_assign__F14s__anonymous14_14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1);
-static inline void ___constructor__F_14s__anonymous14s_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1){
-    ((void)((*___dst__14s__anonymous14_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
-    ((void)((*___dst__14s__anonymous14_1).__i__s_1=___src__14s__anonymous14_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1){
-    ((void)((*___dst__14s__anonymous14_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous14 ___operator_assign__F14s__anonymous14_14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
-    struct __anonymous14 ___ret__14s__anonymous14_1;
-    ((void)((*___dst__14s__anonymous14_1).__i__s_1=___src__14s__anonymous14_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1414s__anonymous14_autogen___1((&___ret__14s__anonymous14_1), (*___dst__14s__anonymous14_1)));
-    return ___ret__14s__anonymous14_1;
-}
-static inline void ___constructor__F_14s__anonymous14s_autogen___1(struct __anonymous14 *___dst__14s__anonymous14_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous14_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-static volatile const struct __anonymous14 __x35__CV14s__anonymous14_1;
-struct __anonymous15 {
-    signed short int __i__s_1;
-};
-static inline void ___constructor__F_14s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1);
-static inline void ___constructor__F_14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1);
-static inline void ___destructor__F_14s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1);
-static inline struct __anonymous15 ___operator_assign__F14s__anonymous15_14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1);
-static inline void ___constructor__F_14s__anonymous15s_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, signed short int __i__s_1);
-static inline void ___constructor__F_14s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1){
-    ((void)((*___dst__14s__anonymous15_1).__i__s_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
-    ((void)((*___dst__14s__anonymous15_1).__i__s_1=___src__14s__anonymous15_1.__i__s_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1){
-    ((void)((*___dst__14s__anonymous15_1).__i__s_1) /* ^?{} */);
-}
-static inline struct __anonymous15 ___operator_assign__F14s__anonymous15_14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
-    struct __anonymous15 ___ret__14s__anonymous15_1;
-    ((void)((*___dst__14s__anonymous15_1).__i__s_1=___src__14s__anonymous15_1.__i__s_1));
-    ((void)___constructor__F_14s__anonymous1514s__anonymous15_autogen___1((&___ret__14s__anonymous15_1), (*___dst__14s__anonymous15_1)));
-    return ___ret__14s__anonymous15_1;
-}
-static inline void ___constructor__F_14s__anonymous15s_autogen___1(struct __anonymous15 *___dst__14s__anonymous15_1, signed short int __i__s_1){
-    ((void)((*___dst__14s__anonymous15_1).__i__s_1=__i__s_1) /* ?{} */);
-}
-static volatile const struct __anonymous15 __x36__CV14s__anonymous15_1;
-static inline volatile const signed int __f11__Fi___1();
-static inline volatile const signed int __f12__Fi___1();
-static inline volatile const signed int __f13__Fi___1();
-static inline volatile const signed int __f14__Fi___1();
-static inline volatile const signed int __f15__Fi___1();
-static inline volatile const signed int __f16__Fi___1();
-static inline volatile const signed int __f17__Fi___1();
-static inline volatile const signed int __f18__Fi___1();
-static inline volatile const signed short int __f21__Fs___1();
-static inline volatile const signed short int __f22__Fs___1();
-static inline volatile const signed short int __f23__Fs___1();
-static inline volatile const signed short int __f24__Fs___1();
-static inline volatile const signed short int __f25__Fs___1();
-static inline volatile const signed short int __f26__Fs___1();
-static inline volatile const signed short int __f27__Fs___1();
-static inline volatile const signed short int __f28__Fs___1();
-struct __anonymous16 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1);
-static inline void ___constructor__F_14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1);
-static inline void ___destructor__F_14s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1);
-static inline struct __anonymous16 ___operator_assign__F14s__anonymous16_14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1);
-static inline void ___constructor__F_14s__anonymous16i_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1){
-    ((void)((*___dst__14s__anonymous16_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
-    ((void)((*___dst__14s__anonymous16_1).__i__i_1=___src__14s__anonymous16_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1){
-    ((void)((*___dst__14s__anonymous16_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous16 ___operator_assign__F14s__anonymous16_14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
-    struct __anonymous16 ___ret__14s__anonymous16_1;
-    ((void)((*___dst__14s__anonymous16_1).__i__i_1=___src__14s__anonymous16_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous1614s__anonymous16_autogen___1((&___ret__14s__anonymous16_1), (*___dst__14s__anonymous16_1)));
-    return ___ret__14s__anonymous16_1;
-}
-static inline void ___constructor__F_14s__anonymous16i_autogen___1(struct __anonymous16 *___dst__14s__anonymous16_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous16_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous16 __f31__F14s__anonymous16___1();
-struct __anonymous17 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1);
-static inline void ___constructor__F_14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1);
-static inline void ___destructor__F_14s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1);
-static inline struct __anonymous17 ___operator_assign__F14s__anonymous17_14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1);
-static inline void ___constructor__F_14s__anonymous17i_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1){
-    ((void)((*___dst__14s__anonymous17_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
-    ((void)((*___dst__14s__anonymous17_1).__i__i_1=___src__14s__anonymous17_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1){
-    ((void)((*___dst__14s__anonymous17_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous17 ___operator_assign__F14s__anonymous17_14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
-    struct __anonymous17 ___ret__14s__anonymous17_1;
-    ((void)((*___dst__14s__anonymous17_1).__i__i_1=___src__14s__anonymous17_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous1714s__anonymous17_autogen___1((&___ret__14s__anonymous17_1), (*___dst__14s__anonymous17_1)));
-    return ___ret__14s__anonymous17_1;
-}
-static inline void ___constructor__F_14s__anonymous17i_autogen___1(struct __anonymous17 *___dst__14s__anonymous17_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous17_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous17 __f32__F14s__anonymous17___1();
-struct __anonymous18 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1);
-static inline void ___constructor__F_14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1);
-static inline void ___destructor__F_14s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1);
-static inline struct __anonymous18 ___operator_assign__F14s__anonymous18_14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1);
-static inline void ___constructor__F_14s__anonymous18i_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1){
-    ((void)((*___dst__14s__anonymous18_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
-    ((void)((*___dst__14s__anonymous18_1).__i__i_1=___src__14s__anonymous18_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1){
-    ((void)((*___dst__14s__anonymous18_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous18 ___operator_assign__F14s__anonymous18_14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
-    struct __anonymous18 ___ret__14s__anonymous18_1;
-    ((void)((*___dst__14s__anonymous18_1).__i__i_1=___src__14s__anonymous18_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous1814s__anonymous18_autogen___1((&___ret__14s__anonymous18_1), (*___dst__14s__anonymous18_1)));
-    return ___ret__14s__anonymous18_1;
-}
-static inline void ___constructor__F_14s__anonymous18i_autogen___1(struct __anonymous18 *___dst__14s__anonymous18_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous18_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous18 __f33__F14s__anonymous18___1();
-struct __anonymous19 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1);
-static inline void ___constructor__F_14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1);
-static inline void ___destructor__F_14s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1);
-static inline struct __anonymous19 ___operator_assign__F14s__anonymous19_14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1);
-static inline void ___constructor__F_14s__anonymous19i_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1){
-    ((void)((*___dst__14s__anonymous19_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
-    ((void)((*___dst__14s__anonymous19_1).__i__i_1=___src__14s__anonymous19_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1){
-    ((void)((*___dst__14s__anonymous19_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous19 ___operator_assign__F14s__anonymous19_14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
-    struct __anonymous19 ___ret__14s__anonymous19_1;
-    ((void)((*___dst__14s__anonymous19_1).__i__i_1=___src__14s__anonymous19_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous1914s__anonymous19_autogen___1((&___ret__14s__anonymous19_1), (*___dst__14s__anonymous19_1)));
-    return ___ret__14s__anonymous19_1;
-}
-static inline void ___constructor__F_14s__anonymous19i_autogen___1(struct __anonymous19 *___dst__14s__anonymous19_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous19_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous19 __f34__F14s__anonymous19___1();
-struct __anonymous20 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1);
-static inline void ___constructor__F_14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1);
-static inline void ___destructor__F_14s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1);
-static inline struct __anonymous20 ___operator_assign__F14s__anonymous20_14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1);
-static inline void ___constructor__F_14s__anonymous20i_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1){
-    ((void)((*___dst__14s__anonymous20_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
-    ((void)((*___dst__14s__anonymous20_1).__i__i_1=___src__14s__anonymous20_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1){
-    ((void)((*___dst__14s__anonymous20_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous20 ___operator_assign__F14s__anonymous20_14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
-    struct __anonymous20 ___ret__14s__anonymous20_1;
-    ((void)((*___dst__14s__anonymous20_1).__i__i_1=___src__14s__anonymous20_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous2014s__anonymous20_autogen___1((&___ret__14s__anonymous20_1), (*___dst__14s__anonymous20_1)));
-    return ___ret__14s__anonymous20_1;
-}
-static inline void ___constructor__F_14s__anonymous20i_autogen___1(struct __anonymous20 *___dst__14s__anonymous20_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous20_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous20 __f35__F14s__anonymous20___1();
-struct __anonymous21 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1);
-static inline void ___constructor__F_14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1);
-static inline void ___destructor__F_14s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1);
-static inline struct __anonymous21 ___operator_assign__F14s__anonymous21_14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1);
-static inline void ___constructor__F_14s__anonymous21i_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1){
-    ((void)((*___dst__14s__anonymous21_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
-    ((void)((*___dst__14s__anonymous21_1).__i__i_1=___src__14s__anonymous21_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1){
-    ((void)((*___dst__14s__anonymous21_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous21 ___operator_assign__F14s__anonymous21_14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
-    struct __anonymous21 ___ret__14s__anonymous21_1;
-    ((void)((*___dst__14s__anonymous21_1).__i__i_1=___src__14s__anonymous21_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous2114s__anonymous21_autogen___1((&___ret__14s__anonymous21_1), (*___dst__14s__anonymous21_1)));
-    return ___ret__14s__anonymous21_1;
-}
-static inline void ___constructor__F_14s__anonymous21i_autogen___1(struct __anonymous21 *___dst__14s__anonymous21_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous21_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous21 __f36__F14s__anonymous21___1();
-struct __anonymous22 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1);
-static inline void ___constructor__F_14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1);
-static inline void ___destructor__F_14s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1);
-static inline struct __anonymous22 ___operator_assign__F14s__anonymous22_14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1);
-static inline void ___constructor__F_14s__anonymous22i_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1){
-    ((void)((*___dst__14s__anonymous22_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
-    ((void)((*___dst__14s__anonymous22_1).__i__i_1=___src__14s__anonymous22_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1){
-    ((void)((*___dst__14s__anonymous22_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous22 ___operator_assign__F14s__anonymous22_14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
-    struct __anonymous22 ___ret__14s__anonymous22_1;
-    ((void)((*___dst__14s__anonymous22_1).__i__i_1=___src__14s__anonymous22_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous2214s__anonymous22_autogen___1((&___ret__14s__anonymous22_1), (*___dst__14s__anonymous22_1)));
-    return ___ret__14s__anonymous22_1;
-}
-static inline void ___constructor__F_14s__anonymous22i_autogen___1(struct __anonymous22 *___dst__14s__anonymous22_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous22_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous22 __f37__F14s__anonymous22___1();
-struct __anonymous23 {
-    signed int __i__i_1;
-};
-static inline void ___constructor__F_14s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1);
-static inline void ___constructor__F_14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1);
-static inline void ___destructor__F_14s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1);
-static inline struct __anonymous23 ___operator_assign__F14s__anonymous23_14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1);
-static inline void ___constructor__F_14s__anonymous23i_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, signed int __i__i_1);
-static inline void ___constructor__F_14s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1){
-    ((void)((*___dst__14s__anonymous23_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
-    ((void)((*___dst__14s__anonymous23_1).__i__i_1=___src__14s__anonymous23_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_14s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1){
-    ((void)((*___dst__14s__anonymous23_1).__i__i_1) /* ^?{} */);
-}
-static inline struct __anonymous23 ___operator_assign__F14s__anonymous23_14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
-    struct __anonymous23 ___ret__14s__anonymous23_1;
-    ((void)((*___dst__14s__anonymous23_1).__i__i_1=___src__14s__anonymous23_1.__i__i_1));
-    ((void)___constructor__F_14s__anonymous2314s__anonymous23_autogen___1((&___ret__14s__anonymous23_1), (*___dst__14s__anonymous23_1)));
-    return ___ret__14s__anonymous23_1;
-}
-static inline void ___constructor__F_14s__anonymous23i_autogen___1(struct __anonymous23 *___dst__14s__anonymous23_1, signed int __i__i_1){
-    ((void)((*___dst__14s__anonymous23_1).__i__i_1=__i__i_1) /* ?{} */);
-}
-static inline volatile const struct __anonymous23 __f38__F14s__anonymous23___1();
-static inline volatile const signed short int __f41__Fs___1();
-static inline volatile const signed short int __f42__Fs___1();
-static inline volatile const signed short int __f43__Fs___1();
-static inline volatile const signed short int __f44__Fs___1();
-static inline volatile const signed short int __f45__Fs___1();
-static inline volatile const signed short int __f46__Fs___1();
-static inline volatile const signed short int __f47__Fs___1();
-static inline volatile const signed short int __f48__Fs___1();
-signed int __main__Fi_iPPCc__1(signed int __argc__i_1, const char **__argv__PPCc_1){
-    __attribute__ ((unused)) signed int ___retval_main__i_1;
-    ((void)(___retval_main__i_1=((signed int )0)) /* ?{} */);
-    return ___retval_main__i_1;
-    ((void)(___retval_main__i_1=0) /* ?{} */);
-    return ___retval_main__i_1;
-}
-static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return __main__Fi_iPPCc__1((signed int )argc, (const char **)argv); }
-static inline signed int invoke_main(signed int argc, char **argv, char **envp);
-signed int main(signed int __argc__i_1, char **__argv__PPc_1, char **__envp__PPc_1){
-    __attribute__ ((unused)) signed int ___retval_main__i_1;
-    signed int _tmp_cp_ret2;
-    ((void)(___retval_main__i_1=(((void)(_tmp_cp_ret2=invoke_main(__argc__i_1, __argv__PPc_1, __envp__PPc_1))) , _tmp_cp_ret2)) /* ?{} */);
-    ((void)(_tmp_cp_ret2) /* ^?{} */);
-    return ___retval_main__i_1;
-}
Index: c/tests/.expect/designations.txt
===================================================================
--- src/tests/.expect/designations.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,53 +1,0 @@
-=====A=====
-(A){ 2 3 (nil) }
-(A){ 2 3 (nil) }
-(A){ 0 3 (nil) }
-=====A=====
-
-=====B=====
-(B){
-  (A){ 5 0 (nil) }
-  (A){ 0 0 (nil) }
-}
-(B){
-  (A){ 5 2 (nil) }
-  (A){ 6 0 (nil) }
-}
-(B){
-  (A){ 1 0 (nil) }
-  (A){ 2 3 (nil) }
-}
-(B){
-  (A){ 1 2 (nil) }
-  (A){ 4 5 (nil) }
-}
-(B){
-  (A){ 1 0 (nil) }
-  (A){ 2 3 (nil) }
-}
-(B){
-  (A){ 1 0 (nil) }
-  (A){ 2 3 (nil) }
-}
-=====B=====
-
-=====C=====
-(C){
-  (int[]{ 2 3 4 }
-  (B){
-    (A){ 5 6 (nil) }
-    (A){ 7 8 (nil) }
-  }
-}
-=====C=====
-
-=====E=====
-(A){ 2 3 (nil) }
-(A){ 2 3 (nil) }
-(A){ 2 3 (nil) }
-(B){
-  (A){ 2 3 (nil) }
-  (A){ 5 6 (nil) }
-}
-=====E=====
-
Index: c/tests/.expect/div.txt
===================================================================
--- src/tests/.expect/div.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,3 +1,0 @@
-div 2, 3 2, 3 2, 3
-div 2, 3
-div 2, 3
Index: c/tests/.expect/extension.x64.txt
===================================================================
--- src/tests/.expect/extension.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,201 +1,0 @@
-__extension__ signed int __a__i_1;
-__extension__ signed int __b__i_1;
-__extension__ signed int __c__i_1;
-__extension__ struct S {
-    __extension__ signed int __a__i_1;
-    __extension__ signed int __b__i_1;
-    __extension__ signed int __c__i_1;
-};
-static inline void ___constructor__F_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1);
-static inline void ___constructor__F_2sSii_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1, signed int __b__i_1);
-static inline void ___constructor__F_2sSiii_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1, signed int __b__i_1, signed int __c__i_1);
-static inline void ___constructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__a__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__c__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    ((void)((*___dst__2sS_1).__a__i_1=___src__2sS_1.__a__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1=___src__2sS_1.__b__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__c__i_1=___src__2sS_1.__c__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__c__i_1) /* ^?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1) /* ^?{} */);
-    ((void)((*___dst__2sS_1).__a__i_1) /* ^?{} */);
-}
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    struct S ___ret__2sS_1;
-    ((void)((*___dst__2sS_1).__a__i_1=___src__2sS_1.__a__i_1));
-    ((void)((*___dst__2sS_1).__b__i_1=___src__2sS_1.__b__i_1));
-    ((void)((*___dst__2sS_1).__c__i_1=___src__2sS_1.__c__i_1));
-    ((void)___constructor__F_2sS2sS_autogen___1((&___ret__2sS_1), (*___dst__2sS_1)));
-    return ___ret__2sS_1;
-}
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1){
-    ((void)((*___dst__2sS_1).__a__i_1=__a__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__c__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_2sSii_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1, signed int __b__i_1){
-    ((void)((*___dst__2sS_1).__a__i_1=__a__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1=__b__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__c__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_2sSiii_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1, signed int __b__i_1, signed int __c__i_1){
-    ((void)((*___dst__2sS_1).__a__i_1=__a__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1=__b__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__c__i_1=__c__i_1) /* ?{} */);
-}
-__extension__ union U {
-    __extension__ signed int __a__i_1;
-    __extension__ signed int __b__i_1;
-    __extension__ signed int __c__i_1;
-};
-static inline void ___constructor__F_2uU_autogen___1(__attribute__ ((unused)) union U *___dst__2uU_1);
-static inline void ___constructor__F_2uU2uU_autogen___1(union U *___dst__2uU_1, union U ___src__2uU_1);
-static inline void ___destructor__F_2uU_autogen___1(__attribute__ ((unused)) union U *___dst__2uU_1);
-static inline union U ___operator_assign__F2uU_2uU2uU_autogen___1(union U *___dst__2uU_1, union U ___src__2uU_1);
-static inline void ___constructor__F_2uUi_autogen___1(union U *___dst__2uU_1, signed int __a__i_1);
-static inline void ___constructor__F_2uU_autogen___1(__attribute__ ((unused)) union U *___dst__2uU_1){
-}
-static inline void ___constructor__F_2uU2uU_autogen___1(union U *___dst__2uU_1, union U ___src__2uU_1){
-    ((void)__builtin_memcpy(((void *)___dst__2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
-}
-static inline void ___destructor__F_2uU_autogen___1(__attribute__ ((unused)) union U *___dst__2uU_1){
-}
-static inline union U ___operator_assign__F2uU_2uU2uU_autogen___1(union U *___dst__2uU_1, union U ___src__2uU_1){
-    union U ___ret__2uU_1;
-    ((void)__builtin_memcpy(((void *)___dst__2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
-    ((void)___constructor__F_2uU2uU_autogen___1((&___ret__2uU_1), (*___dst__2uU_1)));
-    return ___ret__2uU_1;
-}
-static inline void ___constructor__F_2uUi_autogen___1(union U *___dst__2uU_1, signed int __a__i_1){
-    ((void)__builtin_memcpy(((void *)___dst__2uU_1), ((const void *)(&__a__i_1)), sizeof(signed int )));
-}
-__extension__ enum E {
-    __R__C2eE_1,
-    __G__C2eE_1,
-    __B__C2eE_1,
-};
-__extension__ signed int __f__Fi___1();
-__extension__ signed int i;
-__extension__ signed int j;
-__extension__ signed int __fred__Fi_i__1(signed int __p__i_1){
-    __attribute__ ((unused)) signed int ___retval_fred__i_1;
-    __extension__ struct S {
-        __extension__ signed int __a__i_2;
-        __extension__ signed int __b__i_2;
-        __extension__ signed int __c__i_2;
-        __extension__ signed int *__x__Pi_2;
-        __extension__ signed int *__y__Pi_2;
-        __extension__ signed int *__z__Pi_2;
-    };
-    inline void ___constructor__F_2sS_autogen___2(struct S *___dst__2sS_2){
-        ((void)((*___dst__2sS_2).__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sS2sS_autogen___2(struct S *___dst__2sS_2, struct S ___src__2sS_2){
-        ((void)((*___dst__2sS_2).__a__i_2=___src__2sS_2.__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=___src__2sS_2.__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=___src__2sS_2.__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2=___src__2sS_2.__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2=___src__2sS_2.__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2=___src__2sS_2.__z__Pi_2) /* ?{} */);
-    }
-    inline void ___destructor__F_2sS_autogen___2(struct S *___dst__2sS_2){
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__a__i_2) /* ^?{} */);
-    }
-    inline struct S ___operator_assign__F2sS_2sS2sS_autogen___2(struct S *___dst__2sS_2, struct S ___src__2sS_2){
-        struct S ___ret__2sS_2;
-        ((void)((*___dst__2sS_2).__a__i_2=___src__2sS_2.__a__i_2));
-        ((void)((*___dst__2sS_2).__b__i_2=___src__2sS_2.__b__i_2));
-        ((void)((*___dst__2sS_2).__c__i_2=___src__2sS_2.__c__i_2));
-        ((void)((*___dst__2sS_2).__x__Pi_2=___src__2sS_2.__x__Pi_2));
-        ((void)((*___dst__2sS_2).__y__Pi_2=___src__2sS_2.__y__Pi_2));
-        ((void)((*___dst__2sS_2).__z__Pi_2=___src__2sS_2.__z__Pi_2));
-        ((void)___constructor__F_2sS2sS_autogen___2((&___ret__2sS_2), (*___dst__2sS_2)));
-        return ___ret__2sS_2;
-    }
-    inline void ___constructor__F_2sSi_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSii_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSiii_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2, signed int __c__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSiiiPi_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2, signed int __c__i_2, signed int *__x__Pi_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2=__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSiiiPiPi_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2, signed int __c__i_2, signed int *__x__Pi_2, signed int *__y__Pi_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2=__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2=__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSiiiPiPiPi_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2, signed int __c__i_2, signed int *__x__Pi_2, signed int *__y__Pi_2, signed int *__z__Pi_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2=__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2=__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2=__z__Pi_2) /* ?{} */);
-    }
-    signed int __i__i_2 = (__extension__ __a__i_1+__extension__ 3);
-    ((void)__extension__ 3);
-    ((void)__extension__ __a__i_1);
-    __extension__ signed int __a__i_2;
-    __extension__ signed int __b__i_2;
-    __extension__ signed int __c__i_2;
-    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
-    signed int _tmp_cp_ret2;
-    ((void)(((void)(_tmp_cp_ret2=__extension__ __fred__Fi_i__1(3))) , _tmp_cp_ret2));
-    ((void)(_tmp_cp_ret2) /* ^?{} */);
-    __extension__ signed int __mary__Fi_i__2(signed int __p__i_2){
-        __attribute__ ((unused)) signed int ___retval_mary__i_2;
-    }
-    ((void)__extension__ sizeof(3));
-    ((void)__extension__ ((3!=((signed int )0)) || (4!=((signed int )0))));
-    ((void)__extension__ __alignof__(__extension__ __a__i_2));
-    ((void)((__extension__ __a__i_2!=((signed int )0)) || (((__extension__ __b__i_2!=((signed int )0)) && (__extension__ __c__i_2!=((signed int )0)))!=((signed int )0))));
-    ((void)(((__extension__ __a__i_2>__extension__ __b__i_2)!=((signed int )0)) ? __extension__ __c__i_2 : __extension__ __c__i_2));
-    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
-    ((void)(((void)(((void)__extension__ __a__i_2) , __extension__ __b__i_2)) , __extension__ __c__i_2));
-}
Index: c/tests/.expect/extension.x86.txt
===================================================================
--- src/tests/.expect/extension.x86.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,201 +1,0 @@
-__extension__ signed int __a__i_1;
-__extension__ signed int __b__i_1;
-__extension__ signed int __c__i_1;
-__extension__ struct S {
-    __extension__ signed int __a__i_1;
-    __extension__ signed int __b__i_1;
-    __extension__ signed int __c__i_1;
-};
-static inline void ___constructor__F_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1);
-static inline void ___constructor__F_2sSii_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1, signed int __b__i_1);
-static inline void ___constructor__F_2sSiii_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1, signed int __b__i_1, signed int __c__i_1);
-static inline void ___constructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__a__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__c__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    ((void)((*___dst__2sS_1).__a__i_1=___src__2sS_1.__a__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1=___src__2sS_1.__b__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__c__i_1=___src__2sS_1.__c__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__c__i_1) /* ^?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1) /* ^?{} */);
-    ((void)((*___dst__2sS_1).__a__i_1) /* ^?{} */);
-}
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    struct S ___ret__2sS_1;
-    ((void)((*___dst__2sS_1).__a__i_1=___src__2sS_1.__a__i_1));
-    ((void)((*___dst__2sS_1).__b__i_1=___src__2sS_1.__b__i_1));
-    ((void)((*___dst__2sS_1).__c__i_1=___src__2sS_1.__c__i_1));
-    ((void)___constructor__F_2sS2sS_autogen___1((&___ret__2sS_1), (*___dst__2sS_1)));
-    return ___ret__2sS_1;
-}
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1){
-    ((void)((*___dst__2sS_1).__a__i_1=__a__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__c__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_2sSii_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1, signed int __b__i_1){
-    ((void)((*___dst__2sS_1).__a__i_1=__a__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1=__b__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__c__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_2sSiii_autogen___1(struct S *___dst__2sS_1, signed int __a__i_1, signed int __b__i_1, signed int __c__i_1){
-    ((void)((*___dst__2sS_1).__a__i_1=__a__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__b__i_1=__b__i_1) /* ?{} */);
-    ((void)((*___dst__2sS_1).__c__i_1=__c__i_1) /* ?{} */);
-}
-__extension__ union U {
-    __extension__ signed int __a__i_1;
-    __extension__ signed int __b__i_1;
-    __extension__ signed int __c__i_1;
-};
-static inline void ___constructor__F_2uU_autogen___1(__attribute__ ((unused)) union U *___dst__2uU_1);
-static inline void ___constructor__F_2uU2uU_autogen___1(union U *___dst__2uU_1, union U ___src__2uU_1);
-static inline void ___destructor__F_2uU_autogen___1(__attribute__ ((unused)) union U *___dst__2uU_1);
-static inline union U ___operator_assign__F2uU_2uU2uU_autogen___1(union U *___dst__2uU_1, union U ___src__2uU_1);
-static inline void ___constructor__F_2uUi_autogen___1(union U *___dst__2uU_1, signed int __a__i_1);
-static inline void ___constructor__F_2uU_autogen___1(__attribute__ ((unused)) union U *___dst__2uU_1){
-}
-static inline void ___constructor__F_2uU2uU_autogen___1(union U *___dst__2uU_1, union U ___src__2uU_1){
-    ((void)__builtin_memcpy(((void *)___dst__2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
-}
-static inline void ___destructor__F_2uU_autogen___1(__attribute__ ((unused)) union U *___dst__2uU_1){
-}
-static inline union U ___operator_assign__F2uU_2uU2uU_autogen___1(union U *___dst__2uU_1, union U ___src__2uU_1){
-    union U ___ret__2uU_1;
-    ((void)__builtin_memcpy(((void *)___dst__2uU_1), ((const void *)(&___src__2uU_1)), sizeof(union U )));
-    ((void)___constructor__F_2uU2uU_autogen___1((&___ret__2uU_1), (*___dst__2uU_1)));
-    return ___ret__2uU_1;
-}
-static inline void ___constructor__F_2uUi_autogen___1(union U *___dst__2uU_1, signed int __a__i_1){
-    ((void)__builtin_memcpy(((void *)___dst__2uU_1), ((const void *)(&__a__i_1)), sizeof(signed int )));
-}
-__extension__ enum E {
-    __R__C2eE_1,
-    __G__C2eE_1,
-    __B__C2eE_1,
-};
-__extension__ signed int __f__Fi___1();
-__extension__ signed int i;
-__extension__ signed int j;
-__extension__ signed int __fred__Fi_i__1(signed int __p__i_1){
-    __attribute__ ((unused)) signed int ___retval_fred__i_1;
-    __extension__ struct S {
-        __extension__ signed int __a__i_2;
-        __extension__ signed int __b__i_2;
-        __extension__ signed int __c__i_2;
-        __extension__ signed int *__x__Pi_2;
-        __extension__ signed int *__y__Pi_2;
-        __extension__ signed int *__z__Pi_2;
-    };
-    inline void ___constructor__F_2sS_autogen___2(struct S *___dst__2sS_2){
-        ((void)((*___dst__2sS_2).__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sS2sS_autogen___2(struct S *___dst__2sS_2, struct S ___src__2sS_2){
-        ((void)((*___dst__2sS_2).__a__i_2=___src__2sS_2.__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=___src__2sS_2.__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=___src__2sS_2.__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2=___src__2sS_2.__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2=___src__2sS_2.__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2=___src__2sS_2.__z__Pi_2) /* ?{} */);
-    }
-    inline void ___destructor__F_2sS_autogen___2(struct S *___dst__2sS_2){
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__a__i_2) /* ^?{} */);
-    }
-    inline struct S ___operator_assign__F2sS_2sS2sS_autogen___2(struct S *___dst__2sS_2, struct S ___src__2sS_2){
-        struct S ___ret__2sS_2;
-        ((void)((*___dst__2sS_2).__a__i_2=___src__2sS_2.__a__i_2));
-        ((void)((*___dst__2sS_2).__b__i_2=___src__2sS_2.__b__i_2));
-        ((void)((*___dst__2sS_2).__c__i_2=___src__2sS_2.__c__i_2));
-        ((void)((*___dst__2sS_2).__x__Pi_2=___src__2sS_2.__x__Pi_2));
-        ((void)((*___dst__2sS_2).__y__Pi_2=___src__2sS_2.__y__Pi_2));
-        ((void)((*___dst__2sS_2).__z__Pi_2=___src__2sS_2.__z__Pi_2));
-        ((void)___constructor__F_2sS2sS_autogen___2((&___ret__2sS_2), (*___dst__2sS_2)));
-        return ___ret__2sS_2;
-    }
-    inline void ___constructor__F_2sSi_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSii_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSiii_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2, signed int __c__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSiiiPi_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2, signed int __c__i_2, signed int *__x__Pi_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2=__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSiiiPiPi_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2, signed int __c__i_2, signed int *__x__Pi_2, signed int *__y__Pi_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2=__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2=__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSiiiPiPiPi_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2, signed int __c__i_2, signed int *__x__Pi_2, signed int *__y__Pi_2, signed int *__z__Pi_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=__c__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__x__Pi_2=__x__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__y__Pi_2=__y__Pi_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__z__Pi_2=__z__Pi_2) /* ?{} */);
-    }
-    signed int __i__i_2 = (__extension__ __a__i_1+__extension__ 3);
-    ((void)__extension__ 3);
-    ((void)__extension__ __a__i_1);
-    __extension__ signed int __a__i_2;
-    __extension__ signed int __b__i_2;
-    __extension__ signed int __c__i_2;
-    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
-    signed int _tmp_cp_ret2;
-    ((void)(((void)(_tmp_cp_ret2=__extension__ __fred__Fi_i__1(3))) , _tmp_cp_ret2));
-    ((void)(_tmp_cp_ret2) /* ^?{} */);
-    __extension__ signed int __mary__Fi_i__2(signed int __p__i_2){
-        __attribute__ ((unused)) signed int ___retval_mary__i_2;
-    }
-    ((void)__extension__ sizeof(3));
-    ((void)__extension__ ((3!=((signed int )0)) || (4!=((signed int )0))));
-    ((void)__extension__ __alignof__(__extension__ __a__i_2));
-    ((void)((__extension__ __a__i_2!=((signed int )0)) || (((__extension__ __b__i_2!=((signed int )0)) && (__extension__ __c__i_2!=((signed int )0)))!=((signed int )0))));
-    ((void)(((__extension__ __a__i_2>__extension__ __b__i_2)!=((signed int )0)) ? __extension__ __c__i_2 : __extension__ __c__i_2));
-    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
-    ((void)(((void)(((void)__extension__ __a__i_2) , __extension__ __b__i_2)) , __extension__ __c__i_2));
-}
Index: c/tests/.expect/fallthrough.txt
===================================================================
--- src/tests/.expect/fallthrough.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,20 +1,0 @@
-case 1
-case 2
-case 3
-default
-
-case 1
-case 1
-0
-1
-2
-common
-default
-
-case 5
-common2
-
-case 5
-check
-common
-default
Index: c/tests/.expect/fstream_test.txt
===================================================================
--- src/tests/.expect/fstream_test.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,5 +1,0 @@
-Entrez un nombre, s'il vous plaît:
-Vous avez entré -2
-le nombre -2 est négatif
-Entrez trois nombres, s'il vous plaît: 
-Vous avez entré i:2 j:3 k:4
Index: c/tests/.expect/function-operator.txt
===================================================================
--- src/tests/.expect/function-operator.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,32 +1,0 @@
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-Found 5 in x.
-Did not find 5 in y.
-0
-2
-4
-6
-8
-10
-12
-14
-16
-18
Index: c/tests/.expect/functions.x64.txt
===================================================================
--- src/tests/.expect/functions.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,249 +1,0 @@
-void __h__F___1(void){
-}
-signed int __f__Fi_Fi__Fi_i_Fi__Fi_i_F____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__F___1)(void)){
-    __attribute__ ((unused)) signed int ___retval_f__i_1;
-    ((void)(*__g__F___1)());
-    ((void)__g__F___1());
-    ((void)(__g__F___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__FFi_____1())(){
-    __attribute__ ((unused)) signed int (*___retval_f3__Fi___1)();
-}
-signed int *__f4__FPi___1(){
-    __attribute__ ((unused)) signed int *___retval_f4__Pi_1;
-}
-signed int (*__f5__FFi_____1())(){
-    __attribute__ ((unused)) signed int (*___retval_f5__Fi___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__Fi_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__Fi_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__FPi___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__Fi_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__Fi_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__Fd___1();
-const double __bar2__Fd_i__1(signed int __anonymous_object17);
-const double __bar3__Fd_d__1(double __anonymous_object18);
-const double __foo__Fd___1(void);
-const double __foo__Fd_i__1(signed int __anonymous_object19);
-const double __foo__Fd_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_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __i__i_1);
-static inline void ___constructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1=___src__2sS_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1) /* ^?{} */);
-}
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    struct S ___ret__2sS_1;
-    ((void)((*___dst__2sS_1).__i__i_1=___src__2sS_1.__i__i_1));
-    ((void)___constructor__F_2sS2sS_autogen___1((&___ret__2sS_1), (*___dst__2sS_1)));
-    return ___ret__2sS_1;
-}
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __i__i_1){
-    ((void)((*___dst__2sS_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_Fi_ii_Fi_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__PA0Fi_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__FPCi___1(void){
-    __attribute__ ((unused)) const signed int *___retval_f2__PCi_1;
-}
-static inline signed int *const __f3__FPi___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__FTPii____1(void){
-    __attribute__ ((unused)) const struct _conc__tuple2_3 ___retval_f4__CTPii__1;
-}
-static const struct _conc__tuple2_3 __f5__FTPiCi____1(void){
-    __attribute__ ((unused)) const struct _conc__tuple2_3 ___retval_f5__CTPiCi__1;
-}
-signed int __f__Fi_Fi__FPi__FPPi__FPCPi__FPCPi__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_Fi__FPi__FPPi__FPCPi__FPCPi__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: c/tests/.expect/functions.x86.txt
===================================================================
--- src/tests/.expect/functions.x86.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,249 +1,0 @@
-void __h__F___1(void){
-}
-signed int __f__Fi_Fi__Fi_i_Fi__Fi_i_F____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__F___1)(void)){
-    __attribute__ ((unused)) signed int ___retval_f__i_1;
-    ((void)(*__g__F___1)());
-    ((void)__g__F___1());
-    ((void)(__g__F___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__FFi_____1())(){
-    __attribute__ ((unused)) signed int (*___retval_f3__Fi___1)();
-}
-signed int *__f4__FPi___1(){
-    __attribute__ ((unused)) signed int *___retval_f4__Pi_1;
-}
-signed int (*__f5__FFi_____1())(){
-    __attribute__ ((unused)) signed int (*___retval_f5__Fi___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 int )3)]{
-    __attribute__ ((unused)) signed int (*___retval_f11__PA0A0i_1)[][((unsigned int )3)];
-}
-signed int (*__f12__FPA0A0i___1())[][((unsigned int )3)]{
-    __attribute__ ((unused)) signed int (*___retval_f12__PA0A0i_1)[][((unsigned 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__Fi_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__Fi_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__FPi___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__Fi_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__Fi_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__Fd___1();
-const double __bar2__Fd_i__1(signed int __anonymous_object17);
-const double __bar3__Fd_d__1(double __anonymous_object18);
-const double __foo__Fd___1(void);
-const double __foo__Fd_i__1(signed int __anonymous_object19);
-const double __foo__Fd_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_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1);
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1);
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __i__i_1);
-static inline void ___constructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1) /* ?{} */);
-}
-static inline void ___constructor__F_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1=___src__2sS_1.__i__i_1) /* ?{} */);
-}
-static inline void ___destructor__F_2sS_autogen___1(struct S *___dst__2sS_1){
-    ((void)((*___dst__2sS_1).__i__i_1) /* ^?{} */);
-}
-static inline struct S ___operator_assign__F2sS_2sS2sS_autogen___1(struct S *___dst__2sS_1, struct S ___src__2sS_1){
-    struct S ___ret__2sS_1;
-    ((void)((*___dst__2sS_1).__i__i_1=___src__2sS_1.__i__i_1));
-    ((void)___constructor__F_2sS2sS_autogen___1((&___ret__2sS_1), (*___dst__2sS_1)));
-    return ___ret__2sS_1;
-}
-static inline void ___constructor__F_2sSi_autogen___1(struct S *___dst__2sS_1, signed int __i__i_1){
-    ((void)((*___dst__2sS_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_Fi_ii_Fi_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 int )10)])[][((unsigned int )3)];
-    signed int (*(*__p__PA0A0PA0A0i_2)[][((unsigned int )10)])[][((unsigned int )3)];
-    signed int (*(*__p__PA0Fi_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__FPCi___1(void){
-    __attribute__ ((unused)) const signed int *___retval_f2__PCi_1;
-}
-static inline signed int *const __f3__FPi___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__FTPii____1(void){
-    __attribute__ ((unused)) const struct _conc__tuple2_3 ___retval_f4__CTPii__1;
-}
-static const struct _conc__tuple2_3 __f5__FTPiCi____1(void){
-    __attribute__ ((unused)) const struct _conc__tuple2_3 ___retval_f5__CTPiCi__1;
-}
-signed int __f__Fi_Fi__FPi__FPPi__FPCPi__FPCPi__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 int )10)], signed int **__anonymous_object34, signed int *__anonymous_object35[((unsigned int )10)], signed int ***__anonymous_object36, signed int **__anonymous_object37[((unsigned int )10)], signed int *const **__anonymous_object38, signed int *const *__anonymous_object39[((unsigned int )10)], signed int *const *const *__anonymous_object40, signed int *const *const __anonymous_object41[((unsigned int )10)]);
-signed int __f__Fi_Fi__FPi__FPPi__FPCPi__FPCPi__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 int )10)], signed int **__anonymous_object49, signed int *__anonymous_object50[((unsigned int )10)], signed int ***__anonymous_object51, signed int **__anonymous_object52[((unsigned int )10)], signed int *const **__anonymous_object53, signed int *const *__anonymous_object54[((unsigned int )10)], signed int *const *const *__anonymous_object55, signed int *const *const __anonymous_object56[((unsigned 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: c/tests/.expect/gccExtensions.x64.txt
===================================================================
--- src/tests/.expect/gccExtensions.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,177 +1,0 @@
-extern signed int __x__i_1 asm ( "xx" );
-signed int __main__Fi_iPPCc__1(signed int __argc__i_1, const char **__argv__PPCc_1){
-    __attribute__ ((unused)) signed int ___retval_main__i_1;
-    asm ( "nop" :  :  :  );
-    asm ( "nop" :  :  :  );
-    asm ( "nop" :  :  :  );
-    static signed int __y__i_2 asm ( "yy" );
-    static signed int *__z__Pi_2 asm ( "zz" );
-    signed int __src__i_2;
-    signed int __dst__i_2;
-    asm volatile ( "mov %1, %0\n\t" "add $1, %0" :  :  :  );
-    asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=" "r" ( __dst__i_2 ) :  :  );
-    asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( __dst__i_2 ) : "r" ( __src__i_2 ) :  );
-    asm ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( __dst__i_2 ), "=r" ( __src__i_2 ) : [ __src__i_2 ] "r" ( __dst__i_2 ) : "r0" );
-    L2: L1: asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5" :  : "r" ( __src__i_2 ), "r" ( (&__dst__i_2) ) : "r5", "memory" : L1, L2 );
-    double _Complex __c1__Xd_2;
-    double _Complex __c2__Xd_2;
-    const signed int __i1__Ci_2;
-    const signed int __i2__Ci_2;
-    const signed int __i3__Ci_2;
-    inline signed int __f1__Fi___2(){
-        __attribute__ ((unused)) signed int ___retval_f1__i_2;
-    }
-    inline signed int __f2__Fi___2(){
-        __attribute__ ((unused)) signed int ___retval_f2__i_2;
-    }
-    signed int __s1__i_2;
-    signed int __s2__i_2;
-    volatile signed int __v1__Vi_2;
-    volatile signed int __v2__Vi_2;
-    signed int __t1__i_2;
-    signed int __t2__i_2;
-    __extension__ const signed int __ex__Ci_2;
-    struct S {
-        __extension__ signed int __a__i_2;
-        __extension__ signed int __b__i_2;
-        __extension__ signed int __c__i_2;
-    };
-    inline void ___constructor__F_2sS_autogen___2(struct S *___dst__2sS_2){
-        ((void)((*___dst__2sS_2).__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sS2sS_autogen___2(struct S *___dst__2sS_2, struct S ___src__2sS_2){
-        ((void)((*___dst__2sS_2).__a__i_2=___src__2sS_2.__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=___src__2sS_2.__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=___src__2sS_2.__c__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_2sS_autogen___2(struct S *___dst__2sS_2){
-        ((void)((*___dst__2sS_2).__c__i_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__a__i_2) /* ^?{} */);
-    }
-    inline struct S ___operator_assign__F2sS_2sS2sS_autogen___2(struct S *___dst__2sS_2, struct S ___src__2sS_2){
-        struct S ___ret__2sS_2;
-        ((void)((*___dst__2sS_2).__a__i_2=___src__2sS_2.__a__i_2));
-        ((void)((*___dst__2sS_2).__b__i_2=___src__2sS_2.__b__i_2));
-        ((void)((*___dst__2sS_2).__c__i_2=___src__2sS_2.__c__i_2));
-        ((void)___constructor__F_2sS2sS_autogen___2((&___ret__2sS_2), (*___dst__2sS_2)));
-        return ___ret__2sS_2;
-    }
-    inline void ___constructor__F_2sSi_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSii_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSiii_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2, signed int __c__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=__c__i_2) /* ?{} */);
-    }
-    signed int __i__i_2 = __extension__ 3;
-    __extension__ signed int __a__i_2;
-    __extension__ signed int __b__i_2;
-    __extension__ signed int __c__i_2;
-    ((void)(((void)(((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)));
-    signed int __a1__i_2;
-    const signed int __a2__Ci_2;
-    static const signed int __a3__Ci_2;
-    static const signed int __a4__Ci_2;
-    static const signed int __a5__Ci_2;
-    static const signed int __a6__Ci_2;
-    static const signed int __a7__Ci_2;
-    signed int *__p1__Pi_2;
-    signed int *__p2__Pi_2;
-    struct s1;
-    struct s2 {
-        signed int __i__i_2;
-    };
-    inline void ___constructor__F_3ss2_autogen___2(struct s2 *___dst__3ss2_2){
-        ((void)((*___dst__3ss2_2).__i__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_3ss23ss2_autogen___2(struct s2 *___dst__3ss2_2, struct s2 ___src__3ss2_2){
-        ((void)((*___dst__3ss2_2).__i__i_2=___src__3ss2_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_3ss2_autogen___2(struct s2 *___dst__3ss2_2){
-        ((void)((*___dst__3ss2_2).__i__i_2) /* ^?{} */);
-    }
-    inline struct s2 ___operator_assign__F3ss2_3ss23ss2_autogen___2(struct s2 *___dst__3ss2_2, struct s2 ___src__3ss2_2){
-        struct s2 ___ret__3ss2_2;
-        ((void)((*___dst__3ss2_2).__i__i_2=___src__3ss2_2.__i__i_2));
-        ((void)___constructor__F_3ss23ss2_autogen___2((&___ret__3ss2_2), (*___dst__3ss2_2)));
-        return ___ret__3ss2_2;
-    }
-    inline void ___constructor__F_3ss2i_autogen___2(struct s2 *___dst__3ss2_2, signed int __i__i_2){
-        ((void)((*___dst__3ss2_2).__i__i_2=__i__i_2) /* ?{} */);
-    }
-    struct s3 {
-        signed int __i__i_2;
-    };
-    inline void ___constructor__F_3ss3_autogen___2(struct s3 *___dst__3ss3_2){
-        ((void)((*___dst__3ss3_2).__i__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_3ss33ss3_autogen___2(struct s3 *___dst__3ss3_2, struct s3 ___src__3ss3_2){
-        ((void)((*___dst__3ss3_2).__i__i_2=___src__3ss3_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_3ss3_autogen___2(struct s3 *___dst__3ss3_2){
-        ((void)((*___dst__3ss3_2).__i__i_2) /* ^?{} */);
-    }
-    inline struct s3 ___operator_assign__F3ss3_3ss33ss3_autogen___2(struct s3 *___dst__3ss3_2, struct s3 ___src__3ss3_2){
-        struct s3 ___ret__3ss3_2;
-        ((void)((*___dst__3ss3_2).__i__i_2=___src__3ss3_2.__i__i_2));
-        ((void)___constructor__F_3ss33ss3_autogen___2((&___ret__3ss3_2), (*___dst__3ss3_2)));
-        return ___ret__3ss3_2;
-    }
-    inline void ___constructor__F_3ss3i_autogen___2(struct s3 *___dst__3ss3_2, signed int __i__i_2){
-        ((void)((*___dst__3ss3_2).__i__i_2=__i__i_2) /* ?{} */);
-    }
-    struct s3 __x1__3ss3_2;
-    struct s3 __y1__3ss3_2;
-    struct s4 {
-        signed int __i__i_2;
-    };
-    inline void ___constructor__F_3ss4_autogen___2(struct s4 *___dst__3ss4_2){
-        ((void)((*___dst__3ss4_2).__i__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_3ss43ss4_autogen___2(struct s4 *___dst__3ss4_2, struct s4 ___src__3ss4_2){
-        ((void)((*___dst__3ss4_2).__i__i_2=___src__3ss4_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_3ss4_autogen___2(struct s4 *___dst__3ss4_2){
-        ((void)((*___dst__3ss4_2).__i__i_2) /* ^?{} */);
-    }
-    inline struct s4 ___operator_assign__F3ss4_3ss43ss4_autogen___2(struct s4 *___dst__3ss4_2, struct s4 ___src__3ss4_2){
-        struct s4 ___ret__3ss4_2;
-        ((void)((*___dst__3ss4_2).__i__i_2=___src__3ss4_2.__i__i_2));
-        ((void)___constructor__F_3ss43ss4_autogen___2((&___ret__3ss4_2), (*___dst__3ss4_2)));
-        return ___ret__3ss4_2;
-    }
-    inline void ___constructor__F_3ss4i_autogen___2(struct s4 *___dst__3ss4_2, signed int __i__i_2){
-        ((void)((*___dst__3ss4_2).__i__i_2=__i__i_2) /* ?{} */);
-    }
-    struct s4 __x2__3ss4_2;
-    struct s4 __y2__3ss4_2;
-    signed int __m1__A0i_2[((unsigned long int )10)];
-    signed int __m2__A0A0i_2[((unsigned long int )10)][((unsigned long int )10)];
-    signed int __m3__A0A0i_2[((unsigned long int )10)][((unsigned long int )10)];
-    ((void)(___retval_main__i_1=((signed int )0)) /* ?{} */);
-    return ___retval_main__i_1;
-    ((void)(___retval_main__i_1=0) /* ?{} */);
-    return ___retval_main__i_1;
-}
-static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return __main__Fi_iPPCc__1((signed int )argc, (const char **)argv); }
-static inline signed int invoke_main(signed int argc, char **argv, char **envp);
-signed int main(signed int __argc__i_1, char **__argv__PPc_1, char **__envp__PPc_1){
-    __attribute__ ((unused)) signed int ___retval_main__i_1;
-    signed int _tmp_cp_ret2;
-    ((void)(___retval_main__i_1=(((void)(_tmp_cp_ret2=invoke_main(__argc__i_1, __argv__PPc_1, __envp__PPc_1))) , _tmp_cp_ret2)) /* ?{} */);
-    ((void)(_tmp_cp_ret2) /* ^?{} */);
-    return ___retval_main__i_1;
-}
Index: c/tests/.expect/gccExtensions.x86.txt
===================================================================
--- src/tests/.expect/gccExtensions.x86.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,177 +1,0 @@
-extern signed int __x__i_1 asm ( "xx" );
-signed int __main__Fi_iPPCc__1(signed int __argc__i_1, const char **__argv__PPCc_1){
-    __attribute__ ((unused)) signed int ___retval_main__i_1;
-    asm ( "nop" :  :  :  );
-    asm ( "nop" :  :  :  );
-    asm ( "nop" :  :  :  );
-    static signed int __y__i_2 asm ( "yy" );
-    static signed int *__z__Pi_2 asm ( "zz" );
-    signed int __src__i_2;
-    signed int __dst__i_2;
-    asm volatile ( "mov %1, %0\n\t" "add $1, %0" :  :  :  );
-    asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=" "r" ( __dst__i_2 ) :  :  );
-    asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( __dst__i_2 ) : "r" ( __src__i_2 ) :  );
-    asm ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( __dst__i_2 ), "=r" ( __src__i_2 ) : [ __src__i_2 ] "r" ( __dst__i_2 ) : "r0" );
-    L2: L1: asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5" :  : "r" ( __src__i_2 ), "r" ( (&__dst__i_2) ) : "r5", "memory" : L1, L2 );
-    double _Complex __c1__Xd_2;
-    double _Complex __c2__Xd_2;
-    const signed int __i1__Ci_2;
-    const signed int __i2__Ci_2;
-    const signed int __i3__Ci_2;
-    inline signed int __f1__Fi___2(){
-        __attribute__ ((unused)) signed int ___retval_f1__i_2;
-    }
-    inline signed int __f2__Fi___2(){
-        __attribute__ ((unused)) signed int ___retval_f2__i_2;
-    }
-    signed int __s1__i_2;
-    signed int __s2__i_2;
-    volatile signed int __v1__Vi_2;
-    volatile signed int __v2__Vi_2;
-    signed int __t1__i_2;
-    signed int __t2__i_2;
-    __extension__ const signed int __ex__Ci_2;
-    struct S {
-        __extension__ signed int __a__i_2;
-        __extension__ signed int __b__i_2;
-        __extension__ signed int __c__i_2;
-    };
-    inline void ___constructor__F_2sS_autogen___2(struct S *___dst__2sS_2){
-        ((void)((*___dst__2sS_2).__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sS2sS_autogen___2(struct S *___dst__2sS_2, struct S ___src__2sS_2){
-        ((void)((*___dst__2sS_2).__a__i_2=___src__2sS_2.__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=___src__2sS_2.__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=___src__2sS_2.__c__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_2sS_autogen___2(struct S *___dst__2sS_2){
-        ((void)((*___dst__2sS_2).__c__i_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ^?{} */);
-        ((void)((*___dst__2sS_2).__a__i_2) /* ^?{} */);
-    }
-    inline struct S ___operator_assign__F2sS_2sS2sS_autogen___2(struct S *___dst__2sS_2, struct S ___src__2sS_2){
-        struct S ___ret__2sS_2;
-        ((void)((*___dst__2sS_2).__a__i_2=___src__2sS_2.__a__i_2));
-        ((void)((*___dst__2sS_2).__b__i_2=___src__2sS_2.__b__i_2));
-        ((void)((*___dst__2sS_2).__c__i_2=___src__2sS_2.__c__i_2));
-        ((void)___constructor__F_2sS2sS_autogen___2((&___ret__2sS_2), (*___dst__2sS_2)));
-        return ___ret__2sS_2;
-    }
-    inline void ___constructor__F_2sSi_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSii_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_2sSiii_autogen___2(struct S *___dst__2sS_2, signed int __a__i_2, signed int __b__i_2, signed int __c__i_2){
-        ((void)((*___dst__2sS_2).__a__i_2=__a__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__b__i_2=__b__i_2) /* ?{} */);
-        ((void)((*___dst__2sS_2).__c__i_2=__c__i_2) /* ?{} */);
-    }
-    signed int __i__i_2 = __extension__ 3;
-    __extension__ signed int __a__i_2;
-    __extension__ signed int __b__i_2;
-    __extension__ signed int __c__i_2;
-    ((void)(((void)(((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)));
-    signed int __a1__i_2;
-    const signed int __a2__Ci_2;
-    static const signed int __a3__Ci_2;
-    static const signed int __a4__Ci_2;
-    static const signed int __a5__Ci_2;
-    static const signed int __a6__Ci_2;
-    static const signed int __a7__Ci_2;
-    signed int *__p1__Pi_2;
-    signed int *__p2__Pi_2;
-    struct s1;
-    struct s2 {
-        signed int __i__i_2;
-    };
-    inline void ___constructor__F_3ss2_autogen___2(struct s2 *___dst__3ss2_2){
-        ((void)((*___dst__3ss2_2).__i__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_3ss23ss2_autogen___2(struct s2 *___dst__3ss2_2, struct s2 ___src__3ss2_2){
-        ((void)((*___dst__3ss2_2).__i__i_2=___src__3ss2_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_3ss2_autogen___2(struct s2 *___dst__3ss2_2){
-        ((void)((*___dst__3ss2_2).__i__i_2) /* ^?{} */);
-    }
-    inline struct s2 ___operator_assign__F3ss2_3ss23ss2_autogen___2(struct s2 *___dst__3ss2_2, struct s2 ___src__3ss2_2){
-        struct s2 ___ret__3ss2_2;
-        ((void)((*___dst__3ss2_2).__i__i_2=___src__3ss2_2.__i__i_2));
-        ((void)___constructor__F_3ss23ss2_autogen___2((&___ret__3ss2_2), (*___dst__3ss2_2)));
-        return ___ret__3ss2_2;
-    }
-    inline void ___constructor__F_3ss2i_autogen___2(struct s2 *___dst__3ss2_2, signed int __i__i_2){
-        ((void)((*___dst__3ss2_2).__i__i_2=__i__i_2) /* ?{} */);
-    }
-    struct s3 {
-        signed int __i__i_2;
-    };
-    inline void ___constructor__F_3ss3_autogen___2(struct s3 *___dst__3ss3_2){
-        ((void)((*___dst__3ss3_2).__i__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_3ss33ss3_autogen___2(struct s3 *___dst__3ss3_2, struct s3 ___src__3ss3_2){
-        ((void)((*___dst__3ss3_2).__i__i_2=___src__3ss3_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_3ss3_autogen___2(struct s3 *___dst__3ss3_2){
-        ((void)((*___dst__3ss3_2).__i__i_2) /* ^?{} */);
-    }
-    inline struct s3 ___operator_assign__F3ss3_3ss33ss3_autogen___2(struct s3 *___dst__3ss3_2, struct s3 ___src__3ss3_2){
-        struct s3 ___ret__3ss3_2;
-        ((void)((*___dst__3ss3_2).__i__i_2=___src__3ss3_2.__i__i_2));
-        ((void)___constructor__F_3ss33ss3_autogen___2((&___ret__3ss3_2), (*___dst__3ss3_2)));
-        return ___ret__3ss3_2;
-    }
-    inline void ___constructor__F_3ss3i_autogen___2(struct s3 *___dst__3ss3_2, signed int __i__i_2){
-        ((void)((*___dst__3ss3_2).__i__i_2=__i__i_2) /* ?{} */);
-    }
-    struct s3 __x1__3ss3_2;
-    struct s3 __y1__3ss3_2;
-    struct s4 {
-        signed int __i__i_2;
-    };
-    inline void ___constructor__F_3ss4_autogen___2(struct s4 *___dst__3ss4_2){
-        ((void)((*___dst__3ss4_2).__i__i_2) /* ?{} */);
-    }
-    inline void ___constructor__F_3ss43ss4_autogen___2(struct s4 *___dst__3ss4_2, struct s4 ___src__3ss4_2){
-        ((void)((*___dst__3ss4_2).__i__i_2=___src__3ss4_2.__i__i_2) /* ?{} */);
-    }
-    inline void ___destructor__F_3ss4_autogen___2(struct s4 *___dst__3ss4_2){
-        ((void)((*___dst__3ss4_2).__i__i_2) /* ^?{} */);
-    }
-    inline struct s4 ___operator_assign__F3ss4_3ss43ss4_autogen___2(struct s4 *___dst__3ss4_2, struct s4 ___src__3ss4_2){
-        struct s4 ___ret__3ss4_2;
-        ((void)((*___dst__3ss4_2).__i__i_2=___src__3ss4_2.__i__i_2));
-        ((void)___constructor__F_3ss43ss4_autogen___2((&___ret__3ss4_2), (*___dst__3ss4_2)));
-        return ___ret__3ss4_2;
-    }
-    inline void ___constructor__F_3ss4i_autogen___2(struct s4 *___dst__3ss4_2, signed int __i__i_2){
-        ((void)((*___dst__3ss4_2).__i__i_2=__i__i_2) /* ?{} */);
-    }
-    struct s4 __x2__3ss4_2;
-    struct s4 __y2__3ss4_2;
-    signed int __m1__A0i_2[((unsigned int )10)];
-    signed int __m2__A0A0i_2[((unsigned int )10)][((unsigned int )10)];
-    signed int __m3__A0A0i_2[((unsigned int )10)][((unsigned int )10)];
-    ((void)(___retval_main__i_1=((signed int )0)) /* ?{} */);
-    return ___retval_main__i_1;
-    ((void)(___retval_main__i_1=0) /* ?{} */);
-    return ___retval_main__i_1;
-}
-static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return __main__Fi_iPPCc__1((signed int )argc, (const char **)argv); }
-static inline signed int invoke_main(signed int argc, char **argv, char **envp);
-signed int main(signed int __argc__i_1, char **__argv__PPc_1, char **__envp__PPc_1){
-    __attribute__ ((unused)) signed int ___retval_main__i_1;
-    signed int _tmp_cp_ret2;
-    ((void)(___retval_main__i_1=(((void)(_tmp_cp_ret2=invoke_main(__argc__i_1, __argv__PPc_1, __envp__PPc_1))) , _tmp_cp_ret2)) /* ?{} */);
-    ((void)(_tmp_cp_ret2) /* ^?{} */);
-    return ___retval_main__i_1;
-}
Index: c/tests/.expect/genericUnion.txt
===================================================================
--- src/tests/.expect/genericUnion.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-00000000 ffffffff
-00000000 ffffffff
Index: c/tests/.expect/gmp.x64.txt
===================================================================
--- src/tests/.expect/gmp.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,279 +1,0 @@
-constructors
-50000000000000000000 3 50000000000000000003
-x:50000000000000000000 y:3 z:50000000000000000003
-conversions
-y:97
-y:12345678901234567890123456789
-y:200
-y:-400
-y:24691357802469135780246913578
-y:3
-y:-3
-y:4
-y:3
-y:3 b:3 si:3
-comparison
-1
-0
-0
-1
-0
-1
-arithmetic
-z:100000000000000000006
-z:50000000000000000000
-z:-3
-z:-450000000000000000000
-z:150000000000000000000
-z:150000000000000000000
-z:16666666666666666666
-16666666666666666666, 2 16666666666666666666, 2
-x:16666666666666666666 y:2
-
-12345678901234567890123456789 12345678901234567890123456789 12345678901234567890123456789
-
-Fibonacci Numbers
-0 0
-1 1
-2 1
-3 2
-4 3
-5 5
-6 8
-7 13
-8 21
-9 34
-10 55
-11 89
-12 144
-13 233
-14 377
-15 610
-16 987
-17 1597
-18 2584
-19 4181
-20 6765
-21 10946
-22 17711
-23 28657
-24 46368
-25 75025
-26 121393
-27 196418
-28 317811
-29 514229
-30 832040
-31 1346269
-32 2178309
-33 3524578
-34 5702887
-35 9227465
-36 14930352
-37 24157817
-38 39088169
-39 63245986
-40 102334155
-41 165580141
-42 267914296
-43 433494437
-44 701408733
-45 1134903170
-46 1836311903
-47 2971215073
-48 4807526976
-49 7778742049
-50 12586269025
-51 20365011074
-52 32951280099
-53 53316291173
-54 86267571272
-55 139583862445
-56 225851433717
-57 365435296162
-58 591286729879
-59 956722026041
-60 1548008755920
-61 2504730781961
-62 4052739537881
-63 6557470319842
-64 10610209857723
-65 17167680177565
-66 27777890035288
-67 44945570212853
-68 72723460248141
-69 117669030460994
-70 190392490709135
-71 308061521170129
-72 498454011879264
-73 806515533049393
-74 1304969544928657
-75 2111485077978050
-76 3416454622906707
-77 5527939700884757
-78 8944394323791464
-79 14472334024676221
-80 23416728348467685
-81 37889062373143906
-82 61305790721611591
-83 99194853094755497
-84 160500643816367088
-85 259695496911122585
-86 420196140727489673
-87 679891637638612258
-88 1100087778366101931
-89 1779979416004714189
-90 2880067194370816120
-91 4660046610375530309
-92 7540113804746346429
-93 12200160415121876738
-94 19740274219868223167
-95 31940434634990099905
-96 51680708854858323072
-97 83621143489848422977
-98 135301852344706746049
-99 218922995834555169026
-100 354224848179261915075
-101 573147844013817084101
-102 927372692193078999176
-103 1500520536206896083277
-104 2427893228399975082453
-105 3928413764606871165730
-106 6356306993006846248183
-107 10284720757613717413913
-108 16641027750620563662096
-109 26925748508234281076009
-110 43566776258854844738105
-111 70492524767089125814114
-112 114059301025943970552219
-113 184551825793033096366333
-114 298611126818977066918552
-115 483162952612010163284885
-116 781774079430987230203437
-117 1264937032042997393488322
-118 2046711111473984623691759
-119 3311648143516982017180081
-120 5358359254990966640871840
-121 8670007398507948658051921
-122 14028366653498915298923761
-123 22698374052006863956975682
-124 36726740705505779255899443
-125 59425114757512643212875125
-126 96151855463018422468774568
-127 155576970220531065681649693
-128 251728825683549488150424261
-129 407305795904080553832073954
-130 659034621587630041982498215
-131 1066340417491710595814572169
-132 1725375039079340637797070384
-133 2791715456571051233611642553
-134 4517090495650391871408712937
-135 7308805952221443105020355490
-136 11825896447871834976429068427
-137 19134702400093278081449423917
-138 30960598847965113057878492344
-139 50095301248058391139327916261
-140 81055900096023504197206408605
-141 131151201344081895336534324866
-142 212207101440105399533740733471
-143 343358302784187294870275058337
-144 555565404224292694404015791808
-145 898923707008479989274290850145
-146 1454489111232772683678306641953
-147 2353412818241252672952597492098
-148 3807901929474025356630904134051
-149 6161314747715278029583501626149
-150 9969216677189303386214405760200
-151 16130531424904581415797907386349
-152 26099748102093884802012313146549
-153 42230279526998466217810220532898
-154 68330027629092351019822533679447
-155 110560307156090817237632754212345
-156 178890334785183168257455287891792
-157 289450641941273985495088042104137
-158 468340976726457153752543329995929
-159 757791618667731139247631372100066
-160 1226132595394188293000174702095995
-161 1983924214061919432247806074196061
-162 3210056809456107725247980776292056
-163 5193981023518027157495786850488117
-164 8404037832974134882743767626780173
-165 13598018856492162040239554477268290
-166 22002056689466296922983322104048463
-167 35600075545958458963222876581316753
-168 57602132235424755886206198685365216
-169 93202207781383214849429075266681969
-170 150804340016807970735635273952047185
-171 244006547798191185585064349218729154
-172 394810887814999156320699623170776339
-173 638817435613190341905763972389505493
-174 1033628323428189498226463595560281832
-175 1672445759041379840132227567949787325
-176 2706074082469569338358691163510069157
-177 4378519841510949178490918731459856482
-178 7084593923980518516849609894969925639
-179 11463113765491467695340528626429782121
-180 18547707689471986212190138521399707760
-181 30010821454963453907530667147829489881
-182 48558529144435440119720805669229197641
-183 78569350599398894027251472817058687522
-184 127127879743834334146972278486287885163
-185 205697230343233228174223751303346572685
-186 332825110087067562321196029789634457848
-187 538522340430300790495419781092981030533
-188 871347450517368352816615810882615488381
-189 1409869790947669143312035591975596518914
-190 2281217241465037496128651402858212007295
-191 3691087032412706639440686994833808526209
-192 5972304273877744135569338397692020533504
-193 9663391306290450775010025392525829059713
-194 15635695580168194910579363790217849593217
-195 25299086886458645685589389182743678652930
-196 40934782466626840596168752972961528246147
-197 66233869353085486281758142155705206899077
-198 107168651819712326877926895128666735145224
-199 173402521172797813159685037284371942044301
-200 280571172992510140037611932413038677189525
-
-Factorial Numbers
-0 1
-1 1
-2 2
-3 6
-4 24
-5 120
-6 720
-7 5040
-8 40320
-9 362880
-10 3628800
-11 39916800
-12 479001600
-13 6227020800
-14 87178291200
-15 1307674368000
-16 20922789888000
-17 355687428096000
-18 6402373705728000
-19 121645100408832000
-20 2432902008176640000
-21 51090942171709440000
-22 1124000727777607680000
-23 25852016738884976640000
-24 620448401733239439360000
-25 15511210043330985984000000
-26 403291461126605635584000000
-27 10888869450418352160768000000
-28 304888344611713860501504000000
-29 8841761993739701954543616000000
-30 265252859812191058636308480000000
-31 8222838654177922817725562880000000
-32 263130836933693530167218012160000000
-33 8683317618811886495518194401280000000
-34 295232799039604140847618609643520000000
-35 10333147966386144929666651337523200000000
-36 371993326789901217467999448150835200000000
-37 13763753091226345046315979581580902400000000
-38 523022617466601111760007224100074291200000000
-39 20397882081197443358640281739902897356800000000
-40 815915283247897734345611269596115894272000000000
Index: c/tests/.expect/hello.txt
===================================================================
--- src/tests/.expect/hello.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,12 +1,0 @@
-Hello world!
-Bonjour le monde!
-Hola Mundo!
-Hallo Welt!
-Kaixo Mundua!
-Chào thế giới!
-Привет мир!
-שלום עולם!
-你好，世界!
-こんにちは世界!
-안녕하세요 세계!
-नमस्ते दुनिया!
Index: c/tests/.expect/identity.txt
===================================================================
--- src/tests/.expect/identity.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,13 +1,0 @@
-char			z
-signed int		4
-unsigned int		4
-signed long int		4
-unsigned long int	4
-signed long long int	4
-unsigned long long int	4
-float			4.1
-double			4.1
-long double		4.1
-float _Complex		-4.1-2i
-double _Complex		-4.1-2i
-long double _Complex	-4.1-2i
Index: c/tests/.expect/ifwhileCtl.txt
===================================================================
--- src/tests/.expect/ifwhileCtl.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,7 +1,0 @@
-x != 0 correct
-x != 0 && y != 0 correct
-x == y correct
-s.i < 4 correct
-x != 0 correct
-x == y correct
-s.i < 4 correct
Index: c/tests/.expect/io1.txt
===================================================================
--- src/tests/.expect/io1.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-9 6 28 0 7 1 2
-1 2 3
-123
-123
-
-opening delimiters
-x (1 x [2 x {3 x =4 x $5 x £6 x ¥7 x ¡8 x ¿9 x «10
-
-closing delimiters
-1, x 2. x 3; x 4! x 5? x 6% x 7¢ x 8» x 9) x 10] x 11} x
-
-opening/closing delimiters
-x`1`x'2'x"3"x:4:x 5 x	6	x
-7
-x
-8
-x
-9
-x
-10
-x
-
-override opening/closing delimiters
-x ( 1 ) x 2 , x 3 :x: 4
-
Index: c/tests/.expect/io2.txt
===================================================================
--- src/tests/.expect/io2.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,60 +1,0 @@
-input bacis types
-
-output basic types
-false
-A 23 93
-1 2 3 4 5 6 7 8
-1.1 1.2 1.3
-1.1+2.3i 1.1-2.3i 1.1-2.3i
-
-tuples
-1, 2, 3 4, 5, 6
-
-toggle separator
-1.11.21.3
-1.1+2.3i1.1-2.3i1.1-2.3i
-1.1+2.3i 1.1-2.3i1.1-2.3i
-1.1+2.3i 1.1-2.3i 1.1-2.3i
-1.1+2.3i1.1-2.3i 1.1-2.3i
-abcxyz
-abcxyz
-
-change separator
-from " " to ", $"
-1.1, $1.2, $1.3
-1.1+2.3i, $1.1-2.3i, $1.1-2.3i
-abc, $xyz
-1, 2, 3, $4, 5, 6
-
-from ", $" to " "
-1.1 1.2 1.3
-1.1+2.3i 1.1-2.3i 1.1-2.3i
-abc xyz
-1, 2, 3 4, 5, 6
-
-check sepOn/sepOff
-1 2 3
-12 3
-1 2 3
-1 2 3
-
-1 2 3
-
-check enable/disable
-123
-1 23
-1 2 3
-123
-1 2 3
-123
-1 2 3
-
-1 2 3 4 5 6 " "
-1, 2, 3 4, 5, 6 " "
-1, 2, 3 4, 5, 6
-
-3, 4, a, 7.2
-3, 4, a, 7.2
-3 4 a 7.2
-3 4 a 7.234a7.23 4 a 7.2
-3-4-a-7.2^3^4^3-4-a-7.2
Index: c/tests/.expect/literals.txt
===================================================================
--- src/tests/.expect/literals.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,6 +1,0 @@
-char a
-signed char 20
-unsigned char 21
-signed short int 22
-unsigned short int 23
-size_t 24
Index: c/tests/.expect/math1.x64.txt
===================================================================
--- src/tests/.expect/math1.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,13 +1,0 @@
-fmod:1 1 1 1 1 1
-remainder:-1 -1 -1
-remquo:7 0.0999999 7 0.1 7 0.0999999999999999999
-div:7, 0.2 7, 0.2 7, 0.2
-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
-pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614627i
-\ 16 256
-\ 912673 256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i
Index: c/tests/.expect/math1.x86.txt
===================================================================
--- src/tests/.expect/math1.x86.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,13 +1,0 @@
-fmod:1 1 1 1 1 1
-remainder:-1 -1 -1
-remquo:7 0.0999999 7 0.1 7 0.0999999999999999999
-div:7, 0.2 7, 0.2 7, 0.2
-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
-pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614628i
-\ 16 256
-\ 912673 256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i
Index: c/tests/.expect/math2.x64.txt
===================================================================
--- src/tests/.expect/math2.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,16 +1,0 @@
-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
-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
Index: c/tests/.expect/math2.x86.txt
===================================================================
--- src/tests/.expect/math2.x86.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,16 +1,0 @@
-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
-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
Index: c/tests/.expect/math3.x64.txt
===================================================================
--- src/tests/.expect/math3.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,11 +1,0 @@
-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
Index: c/tests/.expect/math3.x86.txt
===================================================================
--- src/tests/.expect/math3.x86.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,11 +1,0 @@
-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
Index: c/tests/.expect/math4.x64.txt
===================================================================
--- src/tests/.expect/math4.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,23 +1,0 @@
-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
-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: c/tests/.expect/minmax.txt
===================================================================
--- src/tests/.expect/minmax.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,21 +1,0 @@
-char			z a	min a
-signed int		4 3	min 3
-unsigned int		4 3	min 3
-signed long int		4 3	min 3
-unsigned long int	4 3	min 3
-signed long long int	4 3	min 3
-unsigned long long int	4 3	min 3
-float			4 3.1	min 3.1
-double			4 3.1	min 3.1
-long double		4 3.1	min 3.1
-
-char			z a	max z
-signed int		4 3	max 4
-unsigned int		4 3	max 4
-signed long int		4 3	max 4
-unsigned long int	4 3	max 4
-signed long long int	4 3	max 4
-unsigned long long int	4 3	max 4
-float			4 3.1	max 4
-double			4 3.1	max 4
-long double		4 3.1	max 4
Index: c/tests/.expect/nested-types-ERR1.txt
===================================================================
--- src/tests/.expect/nested-types-ERR1.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-nested-types.c:70:1 error: Use of undefined type T
Index: c/tests/.expect/nested-types-ERR2.txt
===================================================================
--- src/tests/.expect/nested-types-ERR2.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,6 +1,0 @@
-nested-types.c:73:1 error: Use of undefined global type Z
-nested-types.c:74:1 error: Qualified type requires an aggregate on the left, but has: signed int
-nested-types.c:75:1 error: Undefined type in qualified type: Qualified Type: 
-  instance of struct S with body 1 
-  instance of type Z (not function type) 
-
Index: c/tests/.expect/polymorphism.txt
===================================================================
--- src/tests/.expect/polymorphism.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-123 456 456
-5 5
Index: c/tests/.expect/quoted_keyword.txt
===================================================================
--- src/tests/.expect/quoted_keyword.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-10
Index: c/tests/.expect/random.txt
===================================================================
--- src/tests/.expect/random.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,20 +1,0 @@
-õ
-=
-V
--911259971
-6
--4
-1232105397
-0
-18
--914096085
-1
-15
-2077092859
-1
-11
-0.677254
-0.678106775246139
-0.298107+0.951551i
-0.724141628787955+0.18815430330314i
-0.358747528448063235+0.27913860468074958i
Index: c/tests/.expect/rational.txt
===================================================================
--- src/tests/.expect/rational.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,36 +1,0 @@
-constructor
-3/1 4/1 0/1
-1/2 5/7
-2/3 -3/2
--2/3 3/2
-logical
--2/1 -3/2
-1
-1
-1
-0
-0
-arithmetic
--2/1 -3/2
--7/2
--1/2
-3/1
-4/3
-conversion
-0.75
-0.142857142857143
-3.14159292035398
-3/4
-1/7
-355/113
-decompose
-more tests
--3/2
-0
-1/2 1 1/2
-2/1 1 2/1
-0/1
-1/2 1 1/2
-2/2147483647
-5/2147483647
-2/3 4/5
Index: c/tests/.expect/references.txt
===================================================================
--- src/tests/.expect/references.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,43 +1,0 @@
-3 3 1
-12 12 1
-12 12 1 1
-13 1 12
-14 14
-x = 6 ; x2 = 789
-x = 6 ; x2 = 999
-x = 12345 ; x2 = 999
-x = 22222 ; x2 = 999
-Default constructing a Y
-Copy constructing a Y
-Copy constructing a Y
-Copy constructing a Y
-Destructing a Y
-Destructing a Y
-Default constructing a Y
-Copy constructing a Y
-Value constructing a Y 56
-Value constructing a Y 78
-Copy constructing a Y
-Copy constructing a Y
-Assigning a Y
-Copy constructing a Y
-Destructing a Y
-Destructing a Y
-Copy constructing a Y
-Assigning a Y
-Copy constructing a Y
-Destructing a Y
-Destructing a Y
-Copy constructing a Y
-Destructing a Y
-Destructing a Y
-3 3
-3
-3
-3 9 { 1, 7 }, [1, 2, 3]
-Destructing a Y
-Destructing a Y
-Destructing a Y
-Destructing a Y
-Destructing a Y
-Destructing a Y
Index: c/tests/.expect/scopeErrors.txt
===================================================================
--- src/tests/.expect/scopeErrors.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,12 +1,0 @@
-scopeErrors.c:2:1 error: duplicate object definition for thisIsAnError: signed int
-scopeErrors.c:20:1 error: duplicate function definition for butThisIsAnError: function
-... with parameters
-  double
-... returning 
-  _retval_butThisIsAnError: double
-  ... with attributes: 
-    Attribute with name: unused
-
-... with body 
-  CompoundStmt
-
Index: c/tests/.expect/searchsort.txt
===================================================================
--- src/tests/.expect/searchsort.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,26 +1,0 @@
-10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 
-
-1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
-10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1, 
-10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1, 
-10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1, 
-
-1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
-10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 
-10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1, 
-10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1, 
-
-10.5, 9.5, 8.5, 7.5, 6.5, 5.5, 4.5, 3.5, 2.5, 1.5, 
-1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 
-10.5:10.5, 9.5:9.5, 8.5:8.5, 7.5:7.5, 6.5:6.5, 5.5:5.5, 4.5:4.5, 3.5:3.5, 2.5:2.5, 1.5:1.5, 
-10.5:10.5, 9.5:9.5, 8.5:8.5, 7.5:7.5, 6.5:6.5, 5.5:5.5, 4.5:4.5, 3.5:3.5, 2.5:2.5, 1.5:1.5, 
-
-10 11, 9 10, 8 9, 7 8, 6 7, 5 6, 4 5, 3 4, 2 3, 1 2, 
-1 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 8, 8 9, 9 10, 10 11, 
-10 11:10 11, 9 10:9 10, 8 9:8 9, 7 8:7 8, 6 7:6 7, 5 6:5 6, 4 5:4 5, 3 4:3 4, 2 3:2 3, 1 2:1 2, 
-10 11:10 11, 9 10:9 10, 8 9:8 9, 7 8:7 8, 6 7:6 7, 5 6:5 6, 4 5:4 5, 3 4:3 4, 2 3:2 3, 1 2:1 2, 
-
-1 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 8, 8 9, 9 10, 10 11, 
-11:10 11, 10:9 10, 9:8 9, 8:7 8, 7:6 7, 6:5 6, 5:4 5, 4:3 4, 3:2 3, 2:1 2, 
-11:10 11, 10:9 10, 9:8 9, 8:7 8, 7:6 7, 6:5 6, 5:4 5, 4:3 4, 3:2 3, 2:1 2, 
-
Index: c/tests/.expect/shortCircuit.txt
===================================================================
--- src/tests/.expect/shortCircuit.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,4 +1,0 @@
-1 0 
-1 
-0 
-0 1 
Index: c/tests/.expect/simpleGenericTriple.txt
===================================================================
--- src/tests/.expect/simpleGenericTriple.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-132 1001 459
-132 1001.12 459
Index: c/tests/.expect/sum.txt
===================================================================
--- src/tests/.expect/sum.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,6 +1,0 @@
-sum from 5 to 15 is 95, check 95
-sum from 5 to 15 is 95, check 95
-sum from 0.5 to 1.5 is 9.5, check 9.5
-sum from 0.5 to 1.5 is 9.5, check 9.5
-sum from 5 to 15 is 95 95, check 95 95
-sum from 5 to 15 is 95, check 95
Index: c/tests/.expect/swap.txt
===================================================================
--- src/tests/.expect/swap.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,14 +1,0 @@
-char			a b			swap 	b a
-signed int		-1 -2			swap 	-2 -1
-unsigned int		1 2			swap 	2 1
-signed long int		-1 -2			swap 	-2 -1
-unsigned long int	1 2			swap 	2 1
-signed long long int	-1 -2			swap 	-2 -1
-unsigned long long int	1 2			swap 	2 1
-float			1.5 2.5			swap 	2.5 1.5
-double			1.5 2.5			swap 	2.5 1.5
-long double		1.5 2.5			swap 	2.5 1.5
-float _Complex		1.5+1.5i 2.5+2.5i	swap 	2.5+2.5i 1.5+1.5i
-double _Complex		1.5+1.5i 2.5+2.5i	swap 	2.5+2.5i 1.5+1.5i
-long double _Complex	1.5+1.5i 2.5+2.5i	swap 	2.5+2.5i 1.5+1.5i
-struct S		1 2, 2 1		swap 	2 1, 1 2
Index: c/tests/.expect/time.x64.txt
===================================================================
--- src/tests/.expect/time.x64.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,19 +1,0 @@
-10800 2 3.07 12 1.00001
-0 2 3.07
-7 7 7
-14
-false false false
-3.5
-
-Fri Jan  2 00:00:00.01 1970
-Fri Jan  2 00:00:14.01 1970 104414010000000
-Fri Jan  2 00:00:14.01 1970 104414010000000
-0 Fri Jan  2 00:00:15.01001 1970 104414010000000
-yy/mm/dd 70/01/02 mm/dd/yy 01/02/70 mm/dd/yy 01/02/70 dd/yy/mm 02/01/70
-Wed Jul  4 00:00:01 2001 994219201000000000
-Wed Jul  4 00:00:01 2001 994219201000000000
-
-1 hour + 2*10 min + 70/10 sec = 4807 seconds
-Dividing that by 2 minutes gives 40
-Dividing that by 2 gives 2403.5 seconds
-4807 seconds is 1 hours, 20 minutes, 7 seconds
Index: c/tests/.expect/time.x86.txt
===================================================================
--- src/tests/.expect/time.x86.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,19 +1,0 @@
-10800 2 3.069999999 12 1.00001
-0 2 3.069999999
-7 7 7
-14
-false false false
-3.5
-
-Fri Jan  2 00:00:00.01 1970
-Fri Jan  2 00:00:14.01 1970 104414010000000
-Fri Jan  2 00:00:14.01 1970 104414010000000
-0 Fri Jan  2 00:00:15.01001 1970 104414010000000
-yy/mm/dd 70/01/02 mm/dd/yy 01/02/70 mm/dd/yy 01/02/70 dd/yy/mm 02/01/70
-Wed Jul  4 00:00:01 2001 994219201000000000
-Wed Jul  4 00:00:01 2001 994219201000000000
-
-1 hour + 2*10 min + 70/10 sec = 4807 seconds
-Dividing that by 2 minutes gives 40
-Dividing that by 2 gives 2403.5 seconds
-4807 seconds is 1 hours, 20 minutes, 7 seconds
Index: c/tests/.expect/typedefRedef-ERR1.txt
===================================================================
--- src/tests/.expect/typedefRedef-ERR1.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-typedefRedef.c:4:1 error: Cannot redefine typedef: Foo
-typedefRedef.c:60:1 error: Cannot redefine typedef: ARR
Index: c/tests/.expect/user_literals.txt
===================================================================
--- src/tests/.expect/user_literals.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-11.0714285714286
-15
-11.0714285714286
-24.8
-11.248
-11.0714285714286
-28.0657142857143
-secs 1
-secs 23
-mins 23
-hours 23
-_A_ 23
-_thingy_ 1234
-secs 65535
-mins 65535
-hours 65535
-_A_ 65535
-_thingy_ 65535
-secs 10
-hours 10
-mins 10
-_A_ 10
-_thingy_ 10
-secs abc
-_thingy_ abc
Index: c/tests/.expect/vector.txt
===================================================================
--- src/tests/.expect/vector.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,5 +1,0 @@
-0
-1
-2
-3
-0
Index: c/tests/.expect/with-statement.txt
===================================================================
--- src/tests/.expect/with-statement.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,6 +1,0 @@
-12345 12345 12345
-12345
-called mk
-444 444 444
-123456789 123456789 123456789
-123456789 123456789 123456789
Index: c/tests/.gitignore
===================================================================
--- src/tests/.gitignore	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,3 +1,0 @@
-.out/
-.err/
-.type
Index: c/tests/.in/fstream_test.txt
===================================================================
--- src/tests/.in/fstream_test.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,3 +1,0 @@
--2
-2 3
-4
Index: c/tests/.in/gmp.txt
===================================================================
--- src/tests/.in/gmp.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-12345678901234567890123456789 12345678901234567890123456789 12345678901234567890123456789
Index: c/tests/.in/io.data
===================================================================
--- src/tests/.in/io.data	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-falseA 23 93 1 2 3 4 5 6 7 8 1.1 1.2 1.3 1.1+2.3 1.1-2.3 1.1-2.3 abc xyz
Index: c/tests/.in/rational.txt
===================================================================
--- src/tests/.in/rational.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-2 3 4 5
Index: c/tests/KRfunctions.c
===================================================================
--- src/tests/KRfunctions.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,52 +1,0 @@
-// 
-// 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.
-// 
-// KRfunctions.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Thu Feb 16 15:23:17 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Aug 20 07:34:17 2017
-// Update Count     : 7
-// 
-
-f0( a, b, c ) const int * b; {}
-f1( a, b, c ) int b __attribute__ (( unused )), * a, c[]; {}
-(f2)( a, b, c ) int a, * b, c[]; {}
-
-struct S { int i; };
-int f3( a, b, c ) struct S a; struct S b; int c[]; { struct S s;}
-int (f4)( a, b, c ) int a, * b, c[]; {}
-int (f5( a, b, c )) int a, * b, c[]; {}
-
-int (* f6( a, b, c ))(int) int a, * b, c[]; {}
-int (* f7( a, b, c ))(int a, int b) int a, * b, c[]; {}
-int * f8( a, b, c ) int a, * b, c[]; {}
-int * const f9( a, b, c ) int b, * a, c[]; {}
-
-int (* (* f10( a, b, c, y ))( int x, int y ) ) int a, * b, c[]; double y; {
-    int *x( int, int );
-    return x;
-}
-
-int (* f11( a, b, c ))[] int a, * b, c[]; {}
-int (* f12( a, b, c ))[][10] int a, * b, c[]; {}
-int ((* f13( a, b, c ))[])[10] int a, * b, c[]; {}
-int (((* f14( a, b, c ))[])[10]) int a, * b, c[]; {}
-f15( a, b, c ) {}
-
-const fred() {
-    int *(*x)( int, int );
-    int a, b;
-    x = f10( 3, &a, &b, 3.5 );
-    const f1( a, b, c ) int a, * b, c[]; {}
-    const f2( int a, int b, int c ) {}
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa KRfunctions.c" //
-// End: //
Index: c/tests/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,150 +1,0 @@
-######################## -*- Mode: Makefile-Automake -*- ######################
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.am --
-##
-## Author           : Peter A. Buhr
-## Created On       : Sun May 31 09:08:15 2015
-## Last Modified By : Peter A. Buhr
-## Last Modified On : Wed Jun  6 16:42:20 2018
-## Update Count     : 49
-###############################################################################
-
-
-debug=yes
-
-quick_test=avl_test operators numericConstants expression enum array typeof cast raii/dtor-early-exit raii/init_once attributes
-
-if BUILD_CONCURRENCY
-concurrent=
-else
-concurrent='-Econcurrent'
-endif
-
-TEST_PY = python ${srcdir}/test.py
-
-# applies to both programs
-AM_CFLAGS = $(if $(test), 2> $(test), ) \
-	-g \
-	-Wall \
-	-Wno-unused-function \
-	-quiet @CFA_FLAGS@ \
-	-DIN_DIR="${srcdir}/.in/" \
-	@BUILD_IN_TREE_FLAGS@
-
-if !BUILD_DEBUG
-AM_CFLAGS += -nodebug
-else
-if !BUILD_RELEASE
-AM_CFLAGS += -debug
-else
-AM_CFLAGS += ${DEBUG_FLAGS}
-endif
-endif
-
-CC = @CFACC@
-
-.PHONY : list
-EXTRA_PROGRAMS = fstream_test avl_test # build but do not install
-
-fstream_test_SOURCES = fstream_test.c
-
-avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
-
-all-local :
-	@+${TEST_PY} --debug=${debug} ${concurrent} ${quick_test}
-
-all-tests :
-	@+${TEST_PY} --all --debug=${debug} ${concurrent}		# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
-
-clean-local :
-	rm -f ${EXTRA_PROGRAMS}
-
-list :
-	@+${TEST_PY} --list ${concurrent}
-
-concurrency :
-	@+${TEST_PY} --debug=${debug} -Iconcurrent
-
-# SKULLDUGGERY like libcfa/Makefile.am prevent extensionless headers from being generated
-# however, here it is more complicated because it must match the dependencies based on how
-# they are generated by gcc
-headers = $(shell find $(top_srcdir)/src/libcfa -type f ! -name "*.*")
-headers_real = $(shell realpath --relative-to=$(top_srcdir)/src/libcfa $(headers))
-headers_deps = $(addprefix %/, $(headers_real))
-$(headers_deps) :
-	echo "Dummy rule, should never be called"
-
-# %/stdlib:
-# 	echo "Dummy rule, should never be called"
-
-# implicit rule so not all test require a rule
-% : %.c $(CC)
-	$(COMPILE) $(abspath ${<}) -o ${@}
-
-declarationSpecifier: declarationSpecifier.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-gccExtensions : gccExtensions.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-extension : extension.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-attributes : attributes.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-functions: functions.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-KRfunctions : KRfunctions.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-sched-ext-parse : sched-ext-parse.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-gmp : gmp.c $(CC)
-	$(COMPILE) -lgmp $(abspath ${<}) -o ${@}
-
-completeTypeError : completeTypeError.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-typedefRedef-ERR1: typedefRedef.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-alloc-ERROR: alloc.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-fallthrough-ERROR: fallthrough.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-nested-types-ERR1: nested-types.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-nested-types-ERR2: nested-types.c $(CC)
-	$(COMPILE) -DERR2 $(abspath ${<}) -o ${@}
-
-# Constructor/destructor tests
-raii/dtor-early-exit-ERR1: raii/dtor-early-exit.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-raii/dtor-early-exit-ERR2: raii/dtor-early-exit.c $(CC)
-	$(COMPILE) -DERR2 $(abspath ${<}) -o ${@}
-
-raii/memberCtors-ERR1: raii/memberCtors.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-raii/ctor-autogen-ERR1: raii/ctor-autogen.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-# Warnings
-warnings/self-assignment: warnings/self-assignment.c $(CC)
-	$(COMPILE) $(abspath ${<}) 2> ${@} -fsyntax-only
-
-#builtins
-builtins/sync: builtins/sync.c $(CC)
-	$(COMPILE) $(abspath ${<}) 2> ${@} -fsyntax-only
Index: c/tests/Makefile.in
===================================================================
--- src/tests/Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,710 +1,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-######################## -*- Mode: Makefile-Automake -*- ######################
-###############################################################################
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@BUILD_DEBUG_FALSE@am__append_1 = -nodebug
-@BUILD_DEBUG_TRUE@@BUILD_RELEASE_FALSE@am__append_2 = -debug
-@BUILD_DEBUG_TRUE@@BUILD_RELEASE_TRUE@am__append_3 = ${DEBUG_FLAGS}
-EXTRA_PROGRAMS = fstream_test$(EXEEXT) avl_test$(EXEEXT)
-subdir = src/tests
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = config.py
-CONFIG_CLEAN_VPATH_FILES = test.py
-am__dirstamp = $(am__leading_dot)dirstamp
-am_avl_test_OBJECTS = avltree/avl_test.$(OBJEXT) \
-	avltree/avl0.$(OBJEXT) avltree/avl1.$(OBJEXT) \
-	avltree/avl2.$(OBJEXT) avltree/avl3.$(OBJEXT) \
-	avltree/avl4.$(OBJEXT) avltree/avl-private.$(OBJEXT)
-avl_test_OBJECTS = $(am_avl_test_OBJECTS)
-avl_test_LDADD = $(LDADD)
-am_fstream_test_OBJECTS = fstream_test.$(OBJEXT)
-fstream_test_OBJECTS = $(am_fstream_test_OBJECTS)
-fstream_test_LDADD = $(LDADD)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES)
-DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.py.in \
-	$(srcdir)/test.py $(top_srcdir)/automake/depcomp
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BACKEND_CC = @BACKEND_CC@
-BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
-CC = @CFACC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFACC = @CFACC@
-CFACPP = @CFACPP@
-CFA_BACKEND_CC = @CFA_BACKEND_CC@
-CFA_BINDIR = @CFA_BINDIR@
-CFA_FLAGS = @CFA_FLAGS@
-CFA_INCDIR = @CFA_INCDIR@
-CFA_LIBDIR = @CFA_LIBDIR@
-CFA_NAME = @CFA_NAME@
-CFA_PREFIX = @CFA_PREFIX@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DRIVER_DIR = @DRIVER_DIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-debug = yes
-quick_test = avl_test operators numericConstants expression enum array typeof cast raii/dtor-early-exit raii/init_once attributes
-@BUILD_CONCURRENCY_FALSE@concurrent = '-Econcurrent'
-@BUILD_CONCURRENCY_TRUE@concurrent = 
-TEST_PY = python ${srcdir}/test.py
-
-# applies to both programs
-AM_CFLAGS = $(if $(test), 2> $(test), ) -g -Wall -Wno-unused-function \
-	-quiet @CFA_FLAGS@ -DIN_DIR="${srcdir}/.in/" \
-	@BUILD_IN_TREE_FLAGS@ $(am__append_1) $(am__append_2) \
-	$(am__append_3)
-fstream_test_SOURCES = fstream_test.c
-avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
-
-# SKULLDUGGERY like libcfa/Makefile.am prevent extensionless headers from being generated
-# however, here it is more complicated because it must match the dependencies based on how
-# they are generated by gcc
-headers = $(shell find $(top_srcdir)/src/libcfa -type f ! -name "*.*")
-headers_real = $(shell realpath --relative-to=$(top_srcdir)/src/libcfa $(headers))
-headers_deps = $(addprefix %/, $(headers_real))
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tests/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/tests/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-config.py: $(top_builddir)/config.status $(srcdir)/config.py.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-avltree/$(am__dirstamp):
-	@$(MKDIR_P) avltree
-	@: > avltree/$(am__dirstamp)
-avltree/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) avltree/$(DEPDIR)
-	@: > avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl_test.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl0.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl1.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl2.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl3.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl4.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-avltree/avl-private.$(OBJEXT): avltree/$(am__dirstamp) \
-	avltree/$(DEPDIR)/$(am__dirstamp)
-
-avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES) 
-	@rm -f avl_test$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS)
-
-fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES) 
-	@rm -f fstream_test$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-	-rm -f avltree/*.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl-private.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl0.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl3.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl4.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile all-local
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-rm -f avltree/$(DEPDIR)/$(am__dirstamp)
-	-rm -f avltree/$(am__dirstamp)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-local mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR) avltree/$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR) avltree/$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
-	clean-generic clean-local cscopelist-am ctags ctags-am \
-	distclean distclean-compile distclean-generic distclean-tags \
-	distdir dvi dvi-am html html-am info info-am install \
-	install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am
-
-.PRECIOUS: Makefile
-
-
-.PHONY : list
-
-all-local :
-	@+${TEST_PY} --debug=${debug} ${concurrent} ${quick_test}
-
-all-tests :
-	@+${TEST_PY} --all --debug=${debug} ${concurrent}		# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
-
-clean-local :
-	rm -f ${EXTRA_PROGRAMS}
-
-list :
-	@+${TEST_PY} --list ${concurrent}
-
-concurrency :
-	@+${TEST_PY} --debug=${debug} -Iconcurrent
-$(headers_deps) :
-	echo "Dummy rule, should never be called"
-
-# %/stdlib:
-# 	echo "Dummy rule, should never be called"
-
-# implicit rule so not all test require a rule
-% : %.c $(CC)
-	$(COMPILE) $(abspath ${<}) -o ${@}
-
-declarationSpecifier: declarationSpecifier.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-gccExtensions : gccExtensions.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-extension : extension.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-attributes : attributes.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-functions: functions.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-KRfunctions : KRfunctions.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-sched-ext-parse : sched-ext-parse.c $(CC)
-	$(COMPILE) -CFA -XCFA -p $(abspath ${<}) -o ${@}
-
-gmp : gmp.c $(CC)
-	$(COMPILE) -lgmp $(abspath ${<}) -o ${@}
-
-completeTypeError : completeTypeError.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-typedefRedef-ERR1: typedefRedef.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-alloc-ERROR: alloc.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-fallthrough-ERROR: fallthrough.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-nested-types-ERR1: nested-types.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-nested-types-ERR2: nested-types.c $(CC)
-	$(COMPILE) -DERR2 $(abspath ${<}) -o ${@}
-
-# Constructor/destructor tests
-raii/dtor-early-exit-ERR1: raii/dtor-early-exit.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-raii/dtor-early-exit-ERR2: raii/dtor-early-exit.c $(CC)
-	$(COMPILE) -DERR2 $(abspath ${<}) -o ${@}
-
-raii/memberCtors-ERR1: raii/memberCtors.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-raii/ctor-autogen-ERR1: raii/ctor-autogen.c $(CC)
-	$(COMPILE) -DERR1 $(abspath ${<}) -o ${@}
-
-# Warnings
-warnings/self-assignment: warnings/self-assignment.c $(CC)
-	$(COMPILE) $(abspath ${<}) 2> ${@} -fsyntax-only
-
-#builtins
-builtins/sync: builtins/sync.c $(CC)
-	$(COMPILE) $(abspath ${<}) 2> ${@} -fsyntax-only
-
-# 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.
-.NOEXPORT:
Index: c/tests/abs.c
===================================================================
--- src/tests/abs.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,36 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// abs.c -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Thu Jan 28 18:26:16 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 22 22:31:03 2017
-// Update Count     : 52
-//
-
-#include <fstream>
-#include <stdlib>										// abs
-
-int main( void ) {
-	signed char ch = -65;
-	sout | "char\t\t\t"					| ch     | "\tabs " | abs( ch ) | endl;
-	sout | "signed int\t\t"				| -65    | "\tabs" | abs( -65 ) | endl;
-	sout | "signed long int\t\t" 		| -65l   | "\tabs" | abs( -65l ) | endl;
-	sout | "signed long long int\t"		| -65ll  | "\tabs" | abs( -65ll ) | endl;
-	sout | "float\t\t\t" 				| -65.0f | "\tabs" | abs( -65.0f ) | endl;
-	sout | "double\t\t\t"				| -65.0  | "\tabs" | abs( -65.0 ) | endl;
-	sout | "long double\t\t"			| -65.0l | "\tabs" | abs( -65.0l ) | endl;
-	sout | "float _Complex\t\t"			| -65.0F-2.0iF | "\tabs" | abs( -65.0F-2.0iF ) | endl;
-	sout | "double _Complex\t\t"		| -65.0D-2.0iD | "\tabs" | abs( -65.0D-2.0iD ) | endl;
-	sout | "long double _Complex\t"		| -65.0L-2.0iL | "\tabs" | abs( -65.0L-2.0iL ) | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa abs.c" //
-// End: //
Index: c/tests/alloc.c
===================================================================
--- src/tests/alloc.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,275 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// alloc.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Feb  3 07:56:22 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 26 20:58:05 2018
-// Update Count     : 334
-//
-
-#include <assert.h>
-#include <malloc.h>										// malloc_usable_size
-#include <stdint.h>										// uintptr_t
-#include <stdlib.h>										// posix_memalign
-#include <fstream>
-#include <stdlib>										// access C malloc, realloc
-
-int * foo( int * p, int c ) { return p; }
-int * bar( int * p, int c ) { return p; }
-int * baz( int * p, int c ) { return p; }
-
-int main( void ) {
-	size_t dim = 10;
-	char fill = '\xff';
-	int * p;
-
-	// allocation, non-array types
-
-	// int & r = malloc();
-	// r = 0xdeadbeef;
-	// printf( "C   malloc %#x\n", r );
-	// free( &r );
-
-	p = (int *)malloc( sizeof(*p) );					// C malloc, type unsafe
-	*p = 0xdeadbeef;
-	printf( "C   malloc %#x\n", *p );
-	free( p );
-
-	p = malloc();                                       // CFA malloc, type safe
-	*p = 0xdeadbeef;
-	printf( "CFA malloc %#x\n", *p );
-	free( p );
-
-	p = alloc();                                        // CFA alloc, type safe
-	*p = 0xdeadbeef;
-	printf( "CFA alloc %#x\n", *p );
-	free( p );
-
-	p = alloc( fill );                                  // CFA alloc, fill
-	printf( "CFA alloc, fill %08x\n", *p );
-	free( p );
-
-
-	// allocation, array types
-	printf( "\n" );
-
-	p = (int *)calloc( dim, sizeof( *p ) );				// C array calloc, type unsafe
-	printf( "C   array calloc, fill 0\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-	free( p );
-
-	p = calloc( dim );                                  // CFA array calloc, type safe
-	printf( "CFA array calloc, fill 0\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-	free( p );
-
-	p = alloc( dim );                                   // CFA array alloc, type safe
-	for ( int i = 0; i < dim; i += 1 ) { p[i] = 0xdeadbeef; }
-	printf( "CFA array alloc, no fill\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-	free( p );
-
-	p = alloc( 2 * dim, fill );                         // CFA array alloc, fill
-	printf( "CFA array alloc, fill %#hhx\n", fill );
-	for ( int i = 0; i < 2 * dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-	// do not free
-
-
-	// resize, non-array types
-	printf( "\n" );
-
-	p = (int *)realloc( p, dim * sizeof(*p) );			// C realloc
-	for ( int i = 0; i < dim; i += 1 ) { p[i] = 0xdeadbeef; }
-	printf( "C   realloc\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-
-	p = realloc( p, 2 * dim * sizeof(*p) );             // CFA realloc
-	for ( int i = dim; i < 2 * dim; i += 1 ) { p[i] = 0x1010101; }
-	printf( "CFA realloc\n" );
-	for ( int i = 0; i < 2 * dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-	// do not free
-
-
-	// resize, array types
-	printf( "\n" );
-
-	p = alloc( p, dim );                                // CFA resize array alloc
-	for ( int i = 0; i < dim; i += 1 ) { p[i] = 0xdeadbeef; }
-	printf( "CFA resize alloc\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-
-	p = alloc( p, 2 * dim );                            // CFA resize array alloc
-	for ( int i = dim; i < 2 * dim; i += 1 ) { p[i] = 0x1010101; }
-	printf( "CFA resize array alloc\n" );
-	for ( int i = 0; i < 2 * dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-
-	p = alloc( p, dim );                                // CFA array alloc
-	printf( "CFA resize array alloc\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-
-	free( p );
-	p = 0;
-
-	p = alloc( p, dim, fill );                          // CFA array alloc, fill
-	printf( "CFA resize array alloc, fill\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-
-	p = alloc( p, 2 * dim, fill );                      // CFA array alloc, fill
-	printf( "CFA resize array alloc, fill\n" );
-	for ( int i = 0; i < 2 * dim; i += 1 ) { printf( "%#x ", p[i] ); }
-	printf( "\n" );
-
-	p = alloc( p, dim, fill );                          // CFA array alloc, fill
-	printf( "CFA resize array alloc, fill\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] );; }
-	printf( "\n" );
-	free( p );
-
-
-	struct Struct { int x; double y; };
-	Struct st, st1, sta[dim], sta1[dim], * stp, * stp1;
-
-	// alignment, non-array types
-	printf( "\n" );
-	enum { Alignment = 128 };
-
-	stp = &(*(Struct*)memalign( Alignment, sizeof( *stp ) ) ){ 42, 42.5 }; // C memalign
-	assert( (uintptr_t)stp % Alignment == 0 );
-	printf( "C   memalign %d %g\n", stp->x, stp->y );
-	free( stp );
-
-	stp = &(*memalign( Alignment )){ 42, 42.5 };          // CFA memalign
-	assert( (uintptr_t)stp % Alignment == 0 );
-	printf( "CFA memalign %d %g\n", stp->x, stp->y );
-	free( stp );
-
-	posix_memalign( (void **)&stp, Alignment, sizeof( *stp ) ); // C posix_memalign
-	*stp = (Struct){ 42, 42.5 };
-	assert( (uintptr_t)stp % Alignment == 0 );
-	printf( "CFA posix_memalign %d %g\n", stp->x, stp->y );
-	free( stp );
-
-	posix_memalign( &stp, Alignment );                  // CFA posix_memalign
-	*stp = (Struct){ 42, 42.5 };
-	assert( (uintptr_t)stp % Alignment == 0 );
-	printf( "CFA posix_memalign %d %g\n", stp->x, stp->y );
-	free( stp );
-
-	stp = &(*aligned_alloc( Alignment )){ 42, 42.5 };     // CFA aligned_alloc
-	assert( (uintptr_t)stp % Alignment == 0 );
-	printf( "CFA aligned_alloc %d %g\n", stp->x, stp->y );
-	free( stp );
-
-	stp = &(*align_alloc( Alignment )){ 42, 42.5 };       // CFA align_alloc
-	assert( (uintptr_t)stp % Alignment == 0 );
-	printf( "CFA align_alloc %d %g\n", stp->x, stp->y );
-	free( stp );
-
-	stp = align_alloc( Alignment, fill );               // CFA memalign, fill
-	assert( (uintptr_t)stp % Alignment == 0 );
-	printf( "CFA align_alloc fill %#x %a\n", stp->x, stp->y );
-	free( stp );
-
-
-	// alignment, array types
-	printf( "\n" );
-
-	stp = align_alloc( Alignment, dim );                // CFA array memalign
-	assert( (uintptr_t)stp % Alignment == 0 );
-	for ( int i = 0; i < dim; i += 1 ) { stp[i] = (Struct){ 42, 42.5 }; }
-	printf( "CFA array align_alloc\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%d %g, ", stp[i].x, stp[i].y ); }
-	printf( "\n" );
-	free( stp );
-
-	stp = align_alloc( Alignment, dim, fill );          // CFA array memalign, fill
-	assert( (uintptr_t)stp % Alignment == 0 );
-	printf( "CFA array align_alloc, fill\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x %a, ", stp[i].x, stp[i].y ); }
-	printf( "\n" );
-	free( stp );
-
-
-	// data, non-array types
-	printf( "\n" );
-
-	memset( &st, fill );                                // CFA memset, type safe
-	printf( "CFA memset %#x %a\n", st.x, st.y );
-	memcpy( &st1, &st );                                // CFA memcpy, type safe
-	printf( "CFA memcpy %#x %a\n", st1.x, st1.y );
-
-
-	// data, array types
-	printf( "\n" );
-
-	amemset( sta, fill, dim );							// CFA array memset, type safe
-	printf( "CFA array memset\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x %a, ", sta[i].x, sta[i].y ); }
-	printf( "\n" );
-
-	amemcpy( sta1, sta, dim );							// CFA array memcpy, type safe
-	printf( "CFA array memcpy\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%#x %a, ", sta1[i].x, sta1[i].y ); }
-	printf( "\n" );
-
-
-	// new, non-array types
-	printf( "\n" );
-
-	stp = new( 42, 42.5 );
-	stp1 = new( 42, 42.5 );
-	printf( "CFA new initialize\n%d %g %d %g\n", stp->x, stp->y, stp1->x, stp1->y );
-	delete( stp, stp1 );
-
-	// new, array types
-	stp = anew( dim, 42, 42.5 );
-	printf( "CFA array new initialize\n" );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%d %g, ", stp[i].x, stp[i].y ); }
-	printf( "\n" );
-	stp1 = anew( dim, 42, 42.5 );
-	for ( int i = 0; i < dim; i += 1 ) { printf( "%d %g, ", stp1[i].x, stp1[i].y ); }
-	printf( "\n" );
-	adelete( dim, stp, dim, stp1 );
-
-	// extras
-	printf( "\n" );
-
-	float * fp = malloc() + 1;
-	printf( "pointer arithmetic %d\n", fp == fp - 1 );
-	free( fp - 1 );
-
-	p = foo( bar( baz( malloc(), 0 ), 0 ), 0 );
-	*p = 0xdeadbeef;
-	printf( "CFA deep malloc %#x\n", *p );
-	free( p );
-
-#ifdef ERR1
-	stp = malloc();
-	printf( "\nSHOULD FAIL\n" );
-	p = realloc( stp, dim * sizeof( *stp ) );
-	p = alloc( stp, dim * sizeof( *stp ) );
-	p = memset( stp, 10 );
-	p = memcpy( &st1, &st );
-#endif
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa alloc.c" //
-// End: //
Index: c/tests/array.c
===================================================================
--- src/tests/array.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,40 +1,0 @@
-//Testing array declarations
-int a1[];
-//int a2[*];
-//double a4[3.0];
-
-int m1[][3];
-//int m2[*][*];
-int m4[3][3];
-
-typedef int T;
-
-int fred() {
-//	int a1[];
-//	int a2[*];
-	int a4[3];
-	int T[3];
-}
-
-int mary( int T[3],
-		  int p1[const 3],
-		  int p2[static 3],
-		  int p3[static const 3]
-	) {
-}
-
-int (*tom())[3] {
-}
-
-int (*(jane)())( int T[3],
-				 int p1[const 3],
-				 int p2[static 3],
-				 int p3[static const 3]
-	) {
-}
-
-//Dummy main
-int main(int argc, char const *argv[])
-{
-	return 0;
-}
Index: c/tests/ato.c
===================================================================
--- src/tests/ato.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,123 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// ato.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Thu Feb  4 08:10:57 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Nov 16 18:31:56 2017
-// Update Count     : 89
-// 
-
-#include <fstream>
-#include <stdlib>										// ato, strto
-
-int main( void ) {
-	const char * sptr = "-123";
-	int i = ato( sptr );
-	sout | i | sptr | endl;
-	sptr = "123";
-	unsigned int ui = ato( sptr );
-	sout | ui | sptr | endl;
-
-	sptr = "-123";
-	long int li = ato( sptr );
-	sout | li | sptr | endl;
-	sptr = "123";
-	unsigned long int uli = ato( sptr );
-	sout | uli | sptr | endl;
-
-	sptr = "-123";
-	long long int lli = ato( sptr );
-	sout | lli | sptr | endl;
-	sptr = "123";
-	unsigned long long int ulli = ato( sptr );
-	sout | ulli | sptr | endl;
-
-	sptr = "-123.456";
-	float f = ato( sptr );
-	sout | f | sptr | endl;
-	sptr = "-123.4567890123456";
-	double d = ato( sptr );
-	sout | d | sptr | endl;
-	sptr = "-123.45678901234567890123456789";
-	long double ld = ato( sptr );
-	sout | ld | sptr | endl;
-
-	sptr = "-123.456-123.456i";
-	float _Complex fc = ato( sptr );
-	sout | fc | sptr | endl;
-	sptr = "-123.4567890123456+123.4567890123456i";
-	double _Complex dc = ato( sptr );
-	sout | dc | sptr | endl;
-	sptr = "123.45678901234567890123456789-123.45678901234567890123456789i";
-	long double _Complex ldc = ato( sptr );
-	sout | ldc | sptr | endl;
-	sptr = "123.45678901234-123.4567890i";
-	long double _Complex ldc2 = ato( sptr );
-	sout | ldc2 | sptr | endl;
-
-
-	sptr = "-123";
-	i = strto( sptr, 0, 10 );
-	sout | i | sptr | endl;
-	sptr = "123";
-	ui = strto( sptr, 0, 10 );
-	sout | ui | sptr | endl;
-
-	sptr = "-123";
-	li = strto( sptr, 0, 10 );
-	sout | li | sptr | endl;
-	sptr = "123";
-	uli = strto( sptr, 0, 10 );
-	sout | uli | sptr | endl;
-
-	sptr = "-123";
-	lli = strto( sptr, 0, 10 );
-	sout | lli | sptr | endl;
-	sptr = "123";
-	ulli = strto( sptr, 0, 10 );
-	sout | ulli | sptr | endl;
-
-	sptr = "-123.456";
-	f = strto( sptr, 0 );
-	sout | f | sptr | endl;
-	sptr = "-123.4567890123456";
-	d = strto( sptr, 0 );
-	sout | d | sptr | endl;
-	sptr = "-123.45678901234567890123456789";
-	ld = strto( sptr, 0 );
-	sout | ld | sptr | endl;
-
-	sptr = "-123.456-123.456i";
-	fc = strto( sptr, 0 );
-	sout | fc | sptr | endl;
-
-	char * eptr = 0;
-	// sptr = "2fred";
-	// fc = strto( sptr, &eptr );
-	// sout | fc | sptr | eptr | endl;
-
-	sptr = "2  3";
-	fc = strto( sptr, &eptr );
-	sout | fc | sptr | eptr | endl;
-
-	sptr = "-123.4567890123456+123.4567890123456i";
-	dc = strto( sptr, 0 );
-	sout | dc | sptr | endl;
-	sptr = "123.45678901234567890123456789-123.45678901234567890123456789i";
-	ldc = strto( sptr, 0 );
-	sout | ldc | sptr | endl;
-	sptr = "123.45678901234-123.4567890i";
-	ldc2 = strto( sptr, 0 );
-	sout | ldc2 | sptr | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa ato.c" //
-// End: //
Index: c/tests/attributes.c
===================================================================
--- src/tests/attributes.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,157 +1,0 @@
-// 
-// 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.
-// 
-// attributes.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Feb  6 16:07:02 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 19 13:50:51 2018
-// Update Count     : 15
-// 
-
-
-// label attribute
-int la() {
-  L: __attribute__(( unused )) 1;
-}
-
-
-// aggregate_name
-struct __attribute__(( unused )) {};
-struct __attribute__(( unused )) Agn1;
-struct __attribute__(( unused )) Agn2 {};
-enum __attribute__(( unused )) { E1 };
-enum __attribute__(( unused )) Agn3;
-enum __attribute__(( packed )) Agn3 { E2 };
-#ifdef __CFA__
-struct __attribute__(( unused )) {} ( int );
-struct __attribute__(( unused )) Agn4 {} ( int );
-#endif // __CFA__
-
-
-// field_declaring_list
-struct Fdl {
-    int f1 __attribute__(( unused ));
-    int __attribute__(( unused )) f2;
-    int __attribute__(( unused )) f3 __attribute__(( unused ));
-    __attribute__(( unused )) int f4;
-    __attribute__(( unused )) int f5 __attribute__(( unused ));
-    __attribute__(( used )) int f6 __attribute__(( packed )), f7 __attribute__(( unused )) __attribute__(( unused )), __attribute__(( used )) f8 __attribute__(( unused ));
-    int ( ( * (f9) __attribute__(( unused )) ) __attribute__(( unused )) );
-};
-
-
-// asm_name_opt
-int f() asm( "xyz" ) __attribute__(( unused ));
-
-
-// variable_declarator
-const __attribute__(( used )) int vd1 __attribute__(( used )), __attribute__(( unused )) vd2;
-const __attribute__(( used )) int __attribute__(( used )) * __attribute__(( used )) vd3 __attribute__(( used )), __attribute__(( unused )) (* __attribute__(( unused )) (vd4)) __attribute__(( used ));
-const __attribute__(( used )) int __attribute__(( used )) vd5[5] __attribute__(( used )), __attribute__(( unused )) ((vd6)[5]) __attribute__(( used ));
-const __attribute__(( used )) int __attribute__(( used )) (* __attribute__(( used )) vd7)() __attribute__(( used )), __attribute__(( unused )) ((* __attribute__(( used )) vd8)()) __attribute__(( used ));
-
-
-// function_declarator
-__attribute__(( unused )) int f1() __attribute__(( used ));
-__attribute__(( unused )) int f1() {}
-__attribute__(( unused )) int * __attribute__(( unused )) * const __attribute__(( unused )) f2() __attribute__(( used ));
-__attribute__(( unused )) int * __attribute__(( unused )) * const __attribute__(( unused )) f2() {}
-__attribute__(( unused )) int (* __attribute__(( unused )) f3(int))[] __attribute__(( used ));
-__attribute__(( unused )) int (* __attribute__(( unused )) f3(int p))[] {}
-__attribute__(( unused )) int (* __attribute__(( unused )) f4())(int) __attribute__(( used ));
-__attribute__(( unused )) int (* __attribute__(( unused )) f4())(int) {}
-
-
-// variable_type_redeclarator
-typedef int t1, t2, t3, t4, t5, t6, t7, t8;
-int vtr() {
-    // redefine typedef name in new scope
-    __attribute__(( unused )) int __attribute__(( unused )) t1 __attribute__(( used ));
-    __attribute__(( unused )) int __attribute__(( unused )) (* (* t2 __attribute__(( unused )) ) __attribute__(( unused )) ) __attribute__(( unused ));
-    __attribute__(( unused )) int __attribute__(( unused )) t3[5] __attribute__(( unused ));
-    __attribute__(( unused )) int __attribute__(( unused )) (* (* __attribute__(( unused )) t4[5]) __attribute__(( unused )) ) __attribute__(( unused ));
-    __attribute__(( unused )) int __attribute__(( unused )) t5() __attribute__(( unused ));
-    __attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )) ((t6))() __attribute__(( unused ));
-}
-
-
-// identifier_parameter_declarator
-int ipd1( __attribute__(( unused )) int __attribute__(( unused )) p __attribute__(( unused )),
-	  __attribute__(( unused )) int __attribute__(( unused )) q __attribute__(( unused )) );
-int ipd1( __attribute__(( unused )) int __attribute__(( unused )) p __attribute__(( unused )),
-	  __attribute__(( unused )) int __attribute__(( unused )) q __attribute__(( unused )) ) {}
-int ipd2( __attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )) p __attribute__(( unused )),
-	  __attribute__(( unused )) int __attribute__(( unused )) (* (q)) __attribute__(( unused )) );
-int ipd2( __attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )) p __attribute__(( unused )),
-	  __attribute__(( unused )) int __attribute__(( unused )) (* (q)) __attribute__(( unused )) ) {}
-int ipd3( __attribute__(( unused )) int __attribute__(( unused )) p[] __attribute__(( unused )),
-	  __attribute__(( unused )) int __attribute__(( unused )) ((q)[]) __attribute__(( unused )) );
-int ipd3( __attribute__(( unused )) int __attribute__(( unused )) p[] __attribute__(( unused )),
-	  __attribute__(( unused )) int __attribute__(( unused )) ((q)[]) __attribute__(( unused )) ) {}
-int ipd4( __attribute__(( unused )) int __attribute__(( unused )) p() __attribute__(( unused )),
-	  __attribute__(( unused )) int __attribute__(( unused )) ((q)()) __attribute__(( unused )) );
-int ipd4( __attribute__(( unused )) int __attribute__(( unused )) p() __attribute__(( unused )),
-	  __attribute__(( unused )) int __attribute__(( unused )) ((q)()) __attribute__(( unused )) ) {}
-
-
-// type_parameter_redeclarator
-typedef int Foo;
-int tpr1( __attribute__(( unused )) int __attribute__(( unused )) Foo __attribute__(( unused )) );
-int tpr2( __attribute__(( unused )) int __attribute__(( unused )) (* __attribute__(( unused )) (* __attribute__(( unused )) Foo) __attribute__(( unused )) ) __attribute__(( unused )) );
-int tpr3( __attribute__(( unused )) int __attribute__(( unused )) Foo[]  __attribute__(( unused )));
-int tpr4( __attribute__(( unused )) int __attribute__(( unused )) ( __attribute__(( unused )) Foo[5] __attribute__(( unused )) ) );
-int tpr5( __attribute__(( unused )) int __attribute__(( unused )) (*Foo)() __attribute__(( unused )) );
-int tpr6( __attribute__(( unused )) int __attribute__(( unused )) Foo() __attribute__(( unused )) );
-int tpr7( __attribute__(( unused )) int __attribute__(( unused )) ( __attribute__(( unused )) Foo( __attribute__(( unused )) int __attribute__(( unused )) ) ) );
-
-
-// abstract_declarator
-int ad() {
-    typeof( int __attribute__(( used )) ) ad1 __attribute__(( unused ));
-    typeof( int __attribute__(( unused )) * __attribute__(( unused )) ) ad2 __attribute__(( unused ));
-    typeof( int __attribute__(( unused )) [5] ) __attribute__(( unused )) ad3 __attribute__(( unused ));
-    typeof( __attribute__(( unused )) int __attribute__(( unused )) (*)[10] __attribute__(( unused )) ) __attribute__(( unused )) ad4 __attribute__(( unused )), ad5 __attribute__(( used ));
-    typeof( __attribute__(( unused )) int __attribute__(( unused )) () __attribute__(( unused )) ) __attribute__(( unused )) ad6 __attribute__(( unused ));
-    sizeof( __attribute__(( unused )) int __attribute__(( unused )) );
-    sizeof( __attribute__(( unused )) int __attribute__(( unused )) (* __attribute__(( unused )) (* __attribute__(( unused )) ) ) );
-    sizeof( __attribute__(( unused )) int __attribute__(( unused )) [5] __attribute__(( unused )) );
-    sizeof( __attribute__(( unused )) int __attribute__(( unused )) (*)[10] __attribute__(( unused )) );
-    sizeof( __attribute__(( unused )) int __attribute__(( unused )) () __attribute__(( unused )) );
-    sizeof( struct { int i; } __attribute__(( unused )) );
-    sizeof( enum { R } __attribute__(( unused )) );
-}
-
-
-// abstract_parameter_declarator
-int apd1( __attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )),
-	__attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )) );
-int apd2( __attribute__(( unused )) int __attribute__(( unused )) (* (* __attribute__(( unused )) ) __attribute__(( unused )) ),
-	__attribute__(( unused )) int __attribute__(( unused )) (* (* __attribute__(( unused )) ) __attribute__(( unused )) ) );
-int apd3( __attribute__(( unused )) int __attribute__(( unused )) ([]) __attribute__(( unused )),
-	__attribute__(( unused )) int __attribute__(( unused )) ([]) __attribute__(( unused )) );
-int apd4( __attribute__(( unused )) int __attribute__(( unused )) ()  __attribute__(( unused )),
-	__attribute__(( unused )) int __attribute__(( unused )) ()  __attribute__(( unused )) );
-int apd5( __attribute__(( unused )) int __attribute__(( unused )) (( __attribute__(( unused )) int )) __attribute__(( unused )),
-	__attribute__(( unused )) int __attribute__(( unused )) ( __attribute__(( unused )) int ) __attribute__(( unused )) );
-int apd6( __attribute__(( unused )) int __attribute__(( unused )) (*)()  __attribute__(( unused )),
-	__attribute__(( unused )) int __attribute__(( unused )) (*)()  __attribute__(( unused )) );
-int apd7( __attribute__(( unused )) int __attribute__(( unused )) ((*)( __attribute__(( unused )) int ) ) __attribute__(( unused )),
-	__attribute__(( unused )) int __attribute__(( unused )) ((*)( __attribute__(( unused )) int ) ) __attribute__(( unused )) );
-
-
-// variable_abstract_declarator
-struct Vad {
-    int __attribute__(( unused ));
-    int __attribute__(( unused )) :4;
-    int __attribute__(( unused )) :4, __attribute__(( unused )) :6;
-};
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa attributes.c" //
-// End: //
Index: c/tests/avltree/avl-private.c
===================================================================
--- src/tests/avltree/avl-private.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,134 +1,0 @@
-#include "avl.h"
-#include "avl-private.h"
-
-// AVL tree specific (internal) operations:
-// rotateLeft, rotateRight, fix
-//
-// AVL tree enhanced height operation
-//
-// calcBalance is a simple computation of height(R) - height(L)
-
-// an AVL tree's height is easy to compute
-// just follow path with the larger balance
-forall(otype K | Comparable(K), otype V)
-int height(tree(K, V) * t){
-  int helper(tree(K, V) * t, int ht){
-    if (empty(t)){
-      return ht;
-    } else if (t->balance > 0){
-      return helper(t->right, 1+ht);
-    } else {
-      // can traverse either branch to find the height
-      // of an AVL tree whose balance is 0
-      return helper(t->left, 1+ht);
-    }
-  }
-  return helper(t, 0);
-}
-
-forall(otype K | Comparable(K), otype V)
-int calcBalance(tree(K, V) * t){
-  int l = height(t->left);
-  int r = height(t->right);
-  t->balance = r-l;
-  return t->balance;
-}
-
-// re-establish the link between parent and child
-forall(otype K | Comparable(K), otype V)
-void relinkToParent(tree(K, V) * t){
-  tree(K, V) * parent = t->parent; // FIX ME!!
-  if (empty(t->parent)){
-    return;
-  } else if (parent->key < t->key){
-    parent->right = t;
-  } else {
-    parent->left = t;
-  }
-}
-
-// rotate left from t
-forall(otype K | Comparable(K), otype V)
-tree(K, V) * rotateLeft(tree(K, V) * t){
-  tree(K, V) * newRoot = t->right;
-  t->right = newRoot->left;
-  newRoot->left = t;
-
-  // swap parents
-  newRoot->parent = t->parent;
-  t->parent = newRoot;
-  if (t->right != NULL) {
-    tree(K, V) * right = t->right; // FIX ME!!
-    right->parent = t;
-  }
-  // re-establish the link between newRoot and its parent
-  relinkToParent(newRoot);
-  return newRoot;
-}
-
-// rotate right from t
-forall(otype K | Comparable(K), otype V)
-tree(K, V) * rotateRight(tree(K, V) * t){
-  tree(K, V) * newRoot = t->left;
-  t->left = newRoot->right;
-  newRoot->right = t;
-
-  // swap parents
-  newRoot->parent = t->parent;
-  t->parent = newRoot;
-  if (t->left != NULL){
-    tree(K, V) * left = t->left; // FIX ME!!
-    left->parent = t;
-  }
-  // re-establish the link between newRoot and its parent
-  relinkToParent(newRoot);
-  return newRoot;
-}
-
-// balances a node that has balance factor -2 or 2
-forall(otype K | Comparable(K), otype V)
-tree(K, V) * fix(tree(K, V) * t){
-  // ensure that t's balance factor is one of
-  // the appropriate values
-  assert(t->balance == 2 || t->balance == -2);
-
-  if (t->balance == -2){
-    tree(K, V) * left = t->left; // FIX ME!!
-    if (left->balance == 1){
-      t->left = rotateLeft(t->left);
-    }
-    return rotateRight(t);
-  } else if (t->balance == 2){
-    tree(K, V) * right = t->right; // FIX ME!!
-    if (right->balance == -1){
-      t->right = rotateRight(t->right);
-    }
-    return rotateLeft(t);
-  } else {
-    // shouldn't ever get here
-    assert((int)0);
-    return t;
-  }
-}
-
-// attempt to fix the tree, if necessary
-forall(otype K | Comparable(K), otype V)
-tree(K, V) * tryFix(tree(K, V) * t){
-  int b = calcBalance(t);
-
-  if (b == -2 || b == 2){
-    t = fix(t);
-  } else {
-    assert(b == 0 || b == 1 || b == -1);
-  }
-  return t;
-}
-
-// sets parent field of c to be p
-forall(otype K | Comparable(K), otype V)
-void setParent(tree(K, V) * c, tree(K, V) * p){
-  if (! empty(c)){
-    c->parent = p;
-  }
-}
-
Index: c/tests/avltree/avl-private.h
===================================================================
--- src/tests/avltree/avl-private.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,15 +1,0 @@
-#pragma once
-#include "avl.h"
-
-// functions that really shouldn't be exposed, but are to reduce compilation time
-
-// attempt to fix the tree, if necessary
-forall(otype K | Comparable(K), otype V)
-tree(K, V) * tryFix(tree(K, V) * t);
-
-// sets parent field of c to be p
-forall(otype K | Comparable(K), otype V)
-void setParent(tree(K, V) * c, tree(K, V) * p);
-
-forall(otype K | Comparable(K), otype V)
-int height(tree(K, V) * t);
Index: c/tests/avltree/avl.h
===================================================================
--- src/tests/avltree/avl.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,101 +1,0 @@
-#pragma once
-
-extern "C" {
-#define NULL 0
-#define assert(cond) if (! (cond)) { printf("Assertion failed: (%s) at %s:%d\n", #cond, __FILE__, __LINE__); abort(); }
-}
-
-// #include <types.h>
-// #include <lib.h>
-
-trait Comparable(otype T) {
-  int ?<?(T, T);
-};
-
-forall(otype T | Comparable(T))
-int ?==?(T t1, T t2);
-
-forall(otype T | Comparable(T))
-int ?>?(T t1, T t2);
-
-// xxx - unbound type variable problems when trying to use new instead of create
-// forall( otype T, ttype Params | { void ?{}(T *, Params); } ) T * new( Params p );
-
-// To-do: properly use height or balance factor
-// Right now I'm recomputing the height for each
-// node multiple times. It's Theta-log(n), but still..
-
-// Balanced Binary Search Tree of void pointers; almost an AVL tree -
-//   just needs to make use of the balance factor properly
-// Operations:
-// ?{}, ^?{}
-// create   - allocate a new tree. Just a wrapper around malloc which also calls the tree constructor.
-// find     - search through the tree for the given key; return the associated value
-// empty    - return true if the tree is empty
-// insert   - insert node with key and value pair. Returns 0 on success
-// remove   - remove node with the given key, returns 0 on success, 1 on failure
-// copy     - deep copy of a tree
-// for_each - applies the given function to every data element in the tree
-//    assumes that a non-zero return value is an error, will return
-//    the error code from func
-
-// temporary: need forward decl to get around typedef problem
-forall(otype K | Comparable(K), otype V)
-struct tree;
-
-forall(otype K | Comparable(K), otype V)
-struct tree {
-  K key;
-  V value;
-  tree(K, V) * parent;
-  tree(K, V) * left;
-  tree(K, V) * right;
-  int balance;
-};
-
-forall(otype K | Comparable(K), otype V)
-void ?{}(tree(K, V) &t, K key, V value);
-
-forall(otype K, otype V)
-void ^?{}(tree(K, V) & t);
-
-forall(otype K | Comparable(K), otype V)
-tree(K, V) * create(K key, V value);
-
-forall(otype K | Comparable(K), otype V)
-V * find(tree(K, V) * t, K key);
-
-forall(otype K | Comparable(K), otype V)
-int empty(tree(K, V) * t);
-
-// returns the root of the tree
-forall(otype K | Comparable(K), otype V)
-int insert(tree(K, V) ** t, K key, V value);
-
-forall(otype K | Comparable(K), otype V)
-int remove(tree(K, V) ** t, K key);
-
-forall(otype K | Comparable(K), otype V)
-void copy(tree(K, V) * src, tree(K, V) ** ret);
-
-forall(otype K | Comparable(K), otype V)
-void for_each(tree(K, V) * t, void (*func)(V));
-
-// // Helper function to print trees
-// forall(otype K | Comparable(K), otype V)
-// void printTree(tree * t, int level){
-//   if (empty(t)){
-//     return;
-//   }
-
-//   printTree(t->left, level+1);
-//   printf("key: %d, value: %s, level: %d\n", t->key, t->value, level);
-//   printTree(t->right, level+1);
-// }
-
-// // inorder traversal of t
-// // prints each key, followed by the value
-// forall(otype K | Comparable(K), otype V)
-// void printTree(tree(K, V) * t){
-//     printTree(t, 0);
-// }
Index: c/tests/avltree/avl0.c
===================================================================
--- src/tests/avltree/avl0.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,11 +1,0 @@
-#include "avl.h"
-
-forall(otype T | Comparable(T))
-int ?==?(T t1, T t2) {
-  return !(t1 < t2) && !(t2 < t1);
-}
-
-forall(otype T | Comparable(T))
-int ?>?(T t1, T t2) {
-  return t2 < t1;
-}
Index: c/tests/avltree/avl1.c
===================================================================
--- src/tests/avltree/avl1.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,48 +1,0 @@
-#include "avl.h"
-// #include "cwrap.h"
-#include <stdlib>
-
-forall(otype K | Comparable(K), otype V)
-void ?{}(tree(K, V) &t, K key, V value){
-  (t.key) { key };
-  (t.value) { value };
-  t.parent = NULL;
-  t.left = NULL;
-  t.right = NULL;
-  t.balance = 0;
-}
-
-forall(otype K, otype V)
-void ^?{}(tree(K, V) & t){
-  delete(t.left);
-  delete(t.right);
-  ^(t.key){};
-  ^(t.value){};
-}
-
-forall(otype K | Comparable(K), otype V)
-tree(K, V) * create(K key, V value) {
-  // infinite loop trying to resolve ... t = malloc();
-  tree(K, V) * t = malloc(sizeof(tree(K,V)));
-  (*t){ key, value };
-  return t;
-}
-
-// // Helper function to print trees
-// forall(otype K | Comparable(K), otype V)
-// void printTree(tree * t, int level){
-//   if (empty(t)){
-//     return;
-//   }
-
-//   printTree(t->left, level+1);
-//   printf("key: %d, value: %s, level: %d\n", t->key, t->value, level);
-//   printTree(t->right, level+1);
-// }
-
-// // inorder traversal of t
-// // prints each key, followed by the value
-// forall(otype K | Comparable(K), otype V)
-// void printTree(tree(K, V) * t){
-//     printTree(t, 0);
-// }
Index: c/tests/avltree/avl2.c
===================================================================
--- src/tests/avltree/avl2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,84 +1,0 @@
-#include "avl.h"
-#include "avl-private.h"
-
-forall(otype K | Comparable(K), otype V)
-V * find(tree(K, V) * t, K key){
-  if (empty(t)){
-    return NULL;
-  }
-
-  if (t->key == key){
-    return &t->value;
-  } else if (t->key < key){
-    return find(t->right, key);
-  } else {
-    // t->key > key
-    return find(t->left, key);
-  }
-}
-
-forall(otype K | Comparable(K), otype V)
-int empty(tree(K, V) * t){
-  return t == NULL;
-}
-
-// returns the root of the tree
-forall(otype K | Comparable(K), otype V)
-int insert(tree(K, V) ** t, K key, V value) {
-  // handles a non-empty tree
-  // problem if the following signature is used: tries to use an adapter to call helper, but shouldn't
-  // be necessary - seems to be a problem with helper's type variables not being renamed
-  // tree(K, V) * helper(tree(K, V) * t, K key, V value){
-  tree(K, V) * helper(tree(K, V) * t){
-    if (t->key == key){
-      // ran into the same key - uh-oh
-      return NULL;
-    } else if (t->key < key){
-      if (t->right == NULL){
-        t->right = create(key, value);
-        tree(K, V) * right = t->right; // FIX ME!
-        right->parent = t;             // !!!!!!!
-        return t->right;
-      } else {
-        return helper(t->right);
-      }
-    } else {
-      if (t->left == NULL){
-        t->left = create(key, value);
-        tree(K, V) * left = t->left;   // FIX ME!
-        left->parent = t;              // !!!!!!!
-        return t->left;
-      } else {
-        return helper(t->left);
-      }
-    }
-  }
-
-  if (empty(*t)){
-    // be nice and return a new tree
-    *t = create(key, value);
-    return 0;
-  }
-  tree(K, V) * newTree = helper(*t);
-  if (newTree == NULL){
-    // insert error handling code, only possibility
-    // currently is that the key already exists
-    return 99;
-  }
-  // move up the tree, updating balance factors
-  // if the balance factor is -1, 0, or 1 keep going
-  // if the balance factor is -2 or 2, call fix
-  while (newTree->parent != NULL){ // loop until newTree == NULL?
-    newTree = tryFix(newTree);
-    tree(K, V) * parent = newTree->parent;  // FIX ME!!
-    assert(parent->left == newTree ||
-         parent->right == newTree);
-    newTree = newTree->parent;
-  }
-  insert(t, key, value);
-
-  // do it one more time - this is the root
-  newTree = tryFix(newTree);
-  *t = newTree;
-  return 0;
-}
Index: c/tests/avltree/avl3.c
===================================================================
--- src/tests/avltree/avl3.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,118 +1,0 @@
-#include "avl.h"
-#include "avl-private.h"
-#include <stdlib>
-
-// swaps the data within two tree nodes
-forall(otype K | Comparable(K), otype V)
-void node_swap(tree(K, V) * t, tree(K, V) * t2){
-	swap( t->key,  t2->key);
-	swap( t->value, t2->value);
-}
-
-// go left as deep as possible from within the right subtree
-forall(otype K | Comparable(K), otype V)
-tree(K, V) * find_successor(tree(K, V) * t){
-	tree(K, V) * find_successor_helper(tree(K, V) * t){
-		// go left as deep as possible, return the last node
-		if (empty(t->left)){
-			return t;
-		} else {
-			return find_successor_helper(t->left);
-		}
-	}
-	return find_successor_helper(t->right);
-}
-
-// cleanup - don't want to deep delete, so set children to NULL first.
-forall(otype K | Comparable(K), otype V)
-void deleteSingleNode(tree(K, V) * t) {
-	t->left = NULL;
-	t->right = NULL;
-	delete(t);
-}
-
-// does the actual remove operation once we've found the node in question
-forall(otype K | Comparable(K), otype V)
-tree(K, V) * remove_node(tree(K, V) * t){
-	// is the node a leaf?
-	if (empty(t->left) && empty(t->right)){
-		// yes, just delete this node
-		delete(t);
-		return NULL;
-	} else if (empty(t->left)){
-		// if the left is empty, there is only one child -> move right up
-		node_swap(t, t->right);
-		tree(K, V) * tmp = t->right;
-
-		// relink tree
-		t->left = tmp->left;
-		t->right = tmp->right;
-
-		setParent(t->left, t);
-		setParent(t->right, t);
-		deleteSingleNode(tmp);
-		return t;
-	} else if (empty(t->right)){
-		// if the right is empty, there is only one child -> move left up
-		node_swap(t, t->left);
-		tree(K, V) * tmp = t->left;
-
-		// relink tree
-		t->left = tmp->left;
-		t->right = tmp->right;
-
-		setParent(t->left, t);
-		setParent(t->right, t);
-		deleteSingleNode(tmp);
-		return t;
-	} else {
-		// swap with the successor
-		tree(K, V) * s = find_successor(t);
-		tree(K, V) * parent = s->parent;
-
-		if (parent->left == s){
-			parent->left = s->right;
-		} else {
-			assert(parent->right == s);
-			parent->right = s->right;
-		}
-		setParent(s->right, parent);
-		node_swap(t, s);
-		deleteSingleNode(s);
-		return t;
-	}
-}
-
-// finds the node that needs to be removed
-forall(otype K | Comparable(K), otype V)
-tree(K, V) * remove_helper(tree(K, V) * t, K key, int * worked){
-	if (empty(t)){
-		// did not work because key was not found
-		// set the status variable and return
-		*worked = 1;
-	} else if (t->key == key) {
-		t = remove_node(t);
-	} else if (t->key < key){
-		t->right = remove_helper(t->right, key, worked);
-	} else {
-		// t->key > key
-		t->left = remove_helper(t->left, key, worked);
-	}
-	// try to fix after deleting
-	if (! empty(t)) {
-		t = tryFix(t);
-	}
-	return t;
-}
-
-forall(otype K | Comparable(K), otype V)
-int remove(tree(K, V) ** t, K key){
-	int worked = 0;
-	tree(K, V) * newTree = remove_helper(*t, key, &worked);
-	*t = newTree;
-	return worked;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/avltree/avl4.c
===================================================================
--- src/tests/avltree/avl4.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,48 +1,0 @@
-#include "avl.h"
-#include "avl-private.h"
-
-// Perform a shallow copy of src, return the
-// new tree in ret
-forall(otype K | Comparable(K), otype V)
-int copy(tree(K, V) * src, tree(K, V) ** ret){
-  tree(K, V) * helper(tree(K, V) * t, int * worked){
-    if (empty(t)){
-      // given empty tree, return empty tree
-      return NULL;
-    }
-
-    // otherwise, this is not an empty node,
-    // create a new node
-    tree(K, V) * newTree = create(t->key, t->value);
-    if (empty(newTree)) {
-      *worked = 1;
-      return NULL;
-    }
-
-    // recursively copy the left and right branches
-    newTree->left = helper(t->left, worked);
-    newTree->right = helper(t->right, worked);
-
-    setParent(newTree->left, newTree);
-    setParent(newTree->right, newTree);
-    return newTree;
-  }
-
-  int worked = 0;
-  *ret = helper(src, &worked);
-  return worked;
-}
-
-// Apply func to every value element in t, using an in order traversal
-forall(otype K | Comparable(K), otype V)
-void for_each(tree(K, V) * t, int (*func)(V)) {
-  if (t == NULL) {
-    return;
-  }
-  // recursively apply the function to the left,
-  // apply the function to this node,
-  // recursively apply the function to the right
-  for_each(t->left, func);
-  func(t->value);
-  for_each(t->right, func);
-}
Index: c/tests/avltree/avl_test.c
===================================================================
--- src/tests/avltree/avl_test.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,52 +1,0 @@
-#include "avl.h"
-#include "avl-private.h"
-#include <stdlib>
-
-extern "C" {
-  int strcmp(const char *, const char *);
-}
-
-int main(){
-  // operations:
-  // find(tree(K, V) *, K)
-  // int empty(tree(K, V) *);
-  // tree(K, V) * insert(tree(K, V) *, K, V);
-  // int remove(tree(K, V) **, K);
-
-  // int -> int
-  tree(int, int) * imap = create(-1, (int)0);
-  insert(&imap, 12, 13);
-  insert(&imap, 2, 3);
-  assert( height(imap) == 2 );
-
-  printf("%d %d %d\n", *find(imap, 2), *find(imap, 12), *find(imap, -1));
-
-  remove(&imap, -1);
-  delete(imap);
-
-  // int -> char *
-  tree(int, const char *) * smap = create(-1, "baz");
-  insert(&smap, 12, "bar");
-  insert(&smap, 2, "foo");
-  assert( height(smap) == 2 );
-
-  printf("%s %s %s\n", *find(smap, 2), *find(smap, 12), *find(smap, -1));
-
-  remove(&smap, -2);
-  delete(smap);
-
-  // const char* -> const char*
-  int ?<?(const char * a, const char * b) {
-    return strcmp(a, b) < 0;
-  }
-
-  tree(const char *, const char *) * ssmap = create("queso", "cheese");
-  insert(&ssmap, "foo", "bar");
-  insert(&ssmap, "hello", "world");
-  assert( height(ssmap) == 2 );
-
-  printf("%s %s %s\n", *find(ssmap, "hello"), *find(ssmap, "foo"), *find(ssmap, "queso"));
-
-  remove(&ssmap, "foo");
-  delete(ssmap);
-}
Index: c/tests/builtins/sync.c
===================================================================
--- src/tests/builtins/sync.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,468 +1,0 @@
-#include <stdbool.h>
-#include <stdint.h>
-
-void foo() {
-	volatile _Bool * vpB = 0; _Bool vB = 0;
-	volatile char * vp1 = 0; char * rp1 = 0; char v1 = 0;
-	volatile short * vp2 = 0; short * rp2 = 0; short v2 = 0;
-	volatile int * vp4 = 0; int * rp4 = 0; int v4 = 0;
-	volatile long long int * vp8 = 0; long long int * rp8 = 0; long long int v8 = 0;
-	#if defined(__SIZEOF_INT128__)
-	volatile __int128 * vp16 = 0; __int128 * rp16 = 0; __int128 v16 = 0;
-	#endif
-
-	{ char ret; ret = __sync_fetch_and_add(vp1, v1); }
-	{ char ret; ret = __sync_fetch_and_add_1(vp1, v1); }
-	{ short ret; ret = __sync_fetch_and_add(vp2, v2); }
-	{ short ret; ret = __sync_fetch_and_add_2(vp2, v2); }
-	{ int ret; ret = __sync_fetch_and_add(vp4, v4); }
-	{ int ret; ret = __sync_fetch_and_add_4(vp4, v4); }
-	{ long long int ret; ret = __sync_fetch_and_add(vp8, v8); }
-	{ long long int ret; ret = __sync_fetch_and_add_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_fetch_and_add(vp16, v16); }
-	{ __int128 ret; ret = __sync_fetch_and_add_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_fetch_and_sub(vp1, v1); }
-	{ char ret; ret = __sync_fetch_and_sub_1(vp1, v1); }
-	{ short ret; ret = __sync_fetch_and_sub(vp2, v2); }
-	{ short ret; ret = __sync_fetch_and_sub_2(vp2, v2); }
-	{ int ret; ret = __sync_fetch_and_sub(vp4, v4); }
-	{ int ret; ret = __sync_fetch_and_sub_4(vp4, v4); }
-	{ long long int ret; ret = __sync_fetch_and_sub(vp8, v8); }
-	{ long long int ret; ret = __sync_fetch_and_sub_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_fetch_and_sub(vp16, v16); }
-	{ __int128 ret; ret = __sync_fetch_and_sub_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_fetch_and_or(vp1, v1); }
-	{ char ret; ret = __sync_fetch_and_or_1(vp1, v1); }
-	{ short ret; ret = __sync_fetch_and_or(vp2, v2); }
-	{ short ret; ret = __sync_fetch_and_or_2(vp2, v2); }
-	{ int ret; ret = __sync_fetch_and_or(vp4, v4); }
-	{ int ret; ret = __sync_fetch_and_or_4(vp4, v4); }
-	{ long long int ret; ret = __sync_fetch_and_or(vp8, v8); }
-	{ long long int ret; ret = __sync_fetch_and_or_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_fetch_and_or(vp16, v16); }
-	{ __int128 ret; ret = __sync_fetch_and_or_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_fetch_and_and(vp1, v1); }
-	{ char ret; ret = __sync_fetch_and_and_1(vp1, v1); }
-	{ short ret; ret = __sync_fetch_and_and(vp2, v2); }
-	{ short ret; ret = __sync_fetch_and_and_2(vp2, v2); }
-	{ int ret; ret = __sync_fetch_and_and(vp4, v4); }
-	{ int ret; ret = __sync_fetch_and_and_4(vp4, v4); }
-	{ long long int ret; ret = __sync_fetch_and_and(vp8, v8); }
-	{ long long int ret; ret = __sync_fetch_and_and_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_fetch_and_and(vp16, v16); }
-	{ __int128 ret; ret = __sync_fetch_and_and_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_fetch_and_xor(vp1, v1); }
-	{ char ret; ret = __sync_fetch_and_xor_1(vp1, v1); }
-	{ short ret; ret = __sync_fetch_and_xor(vp2, v2); }
-	{ short ret; ret = __sync_fetch_and_xor_2(vp2, v2); }
-	{ int ret; ret = __sync_fetch_and_xor(vp4, v4); }
-	{ int ret; ret = __sync_fetch_and_xor_4(vp4, v4); }
-	{ long long int ret; ret = __sync_fetch_and_xor(vp8, v8); }
-	{ long long int ret; ret = __sync_fetch_and_xor_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_fetch_and_xor(vp16, v16); }
-	{ __int128 ret; ret = __sync_fetch_and_xor_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_fetch_and_nand(vp1, v1); }
-	{ char ret; ret = __sync_fetch_and_nand_1(vp1, v1); }
-	{ short ret; ret = __sync_fetch_and_nand(vp2, v2); }
-	{ short ret; ret = __sync_fetch_and_nand_2(vp2, v2); }
-	{ int ret; ret = __sync_fetch_and_nand(vp4, v4); }
-	{ int ret; ret = __sync_fetch_and_nand_4(vp4, v4); }
-	{ long long int ret; ret = __sync_fetch_and_nand(vp8, v8); }
-	{ long long int ret; ret = __sync_fetch_and_nand_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_fetch_and_nand(vp16, v16); }
-	{ __int128 ret; ret = __sync_fetch_and_nand_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_add_and_fetch(vp1, v1); }
-	{ char ret; ret = __sync_add_and_fetch_1(vp1, v1); }
-	{ short ret; ret = __sync_add_and_fetch(vp2, v2); }
-	{ short ret; ret = __sync_add_and_fetch_2(vp2, v2); }
-	{ int ret; ret = __sync_add_and_fetch(vp4, v4); }
-	{ int ret; ret = __sync_add_and_fetch_4(vp4, v4); }
-	{ long long int ret; ret = __sync_add_and_fetch(vp8, v8); }
-	{ long long int ret; ret = __sync_add_and_fetch_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_add_and_fetch(vp16, v16); }
-	{ __int128 ret; ret = __sync_add_and_fetch_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_sub_and_fetch(vp1, v1); }
-	{ char ret; ret = __sync_sub_and_fetch_1(vp1, v1); }
-	{ short ret; ret = __sync_sub_and_fetch(vp2, v2); }
-	{ short ret; ret = __sync_sub_and_fetch_2(vp2, v2); }
-	{ int ret; ret = __sync_sub_and_fetch(vp4, v4); }
-	{ int ret; ret = __sync_sub_and_fetch_4(vp4, v4); }
-	{ long long int ret; ret = __sync_sub_and_fetch(vp8, v8); }
-	{ long long int ret; ret = __sync_sub_and_fetch_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_sub_and_fetch(vp16, v16); }
-	{ __int128 ret; ret = __sync_sub_and_fetch_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_or_and_fetch(vp1, v1); }
-	{ char ret; ret = __sync_or_and_fetch_1(vp1, v1); }
-	{ short ret; ret = __sync_or_and_fetch(vp2, v2); }
-	{ short ret; ret = __sync_or_and_fetch_2(vp2, v2); }
-	{ int ret; ret = __sync_or_and_fetch(vp4, v4); }
-	{ int ret; ret = __sync_or_and_fetch_4(vp4, v4); }
-	{ long long int ret; ret = __sync_or_and_fetch(vp8, v8); }
-	{ long long int ret; ret = __sync_or_and_fetch_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_or_and_fetch(vp16, v16); }
-	{ __int128 ret; ret = __sync_or_and_fetch_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_and_and_fetch(vp1, v1); }
-	{ char ret; ret = __sync_and_and_fetch_1(vp1, v1); }
-	{ short ret; ret = __sync_and_and_fetch(vp2, v2); }
-	{ short ret; ret = __sync_and_and_fetch_2(vp2, v2); }
-	{ int ret; ret = __sync_and_and_fetch(vp4, v4); }
-	{ int ret; ret = __sync_and_and_fetch_4(vp4, v4); }
-	{ long long int ret; ret = __sync_and_and_fetch(vp8, v8); }
-	{ long long int ret; ret = __sync_and_and_fetch_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_and_and_fetch(vp16, v16); }
-	{ __int128 ret; ret = __sync_and_and_fetch_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_xor_and_fetch(vp1, v1); }
-	{ char ret; ret = __sync_xor_and_fetch_1(vp1, v1); }
-	{ short ret; ret = __sync_xor_and_fetch(vp2, v2); }
-	{ short ret; ret = __sync_xor_and_fetch_2(vp2, v2); }
-	{ int ret; ret = __sync_xor_and_fetch(vp4, v4); }
-	{ int ret; ret = __sync_xor_and_fetch_4(vp4, v4); }
-	{ long long int ret; ret = __sync_xor_and_fetch(vp8, v8); }
-	{ long long int ret; ret = __sync_xor_and_fetch_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_xor_and_fetch(vp16, v16); }
-	{ __int128 ret; ret = __sync_xor_and_fetch_16(vp16, v16); }
-	#endif
-
-	{ char ret; ret = __sync_nand_and_fetch(vp1, v1); }
-	{ char ret; ret = __sync_nand_and_fetch_1(vp1, v1); }
-	{ short ret; ret = __sync_nand_and_fetch(vp2, v2); }
-	{ short ret; ret = __sync_nand_and_fetch_2(vp2, v2); }
-	{ int ret; ret = __sync_nand_and_fetch(vp4, v4); }
-	{ int ret; ret = __sync_nand_and_fetch_4(vp4, v4); }
-	{ long long int ret; ret = __sync_nand_and_fetch(vp8, v8); }
-	{ long long int ret; ret = __sync_nand_and_fetch_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_nand_and_fetch(vp16, v16); }
-	{ __int128 ret; ret = __sync_nand_and_fetch_16(vp16, v16); }
-	#endif
-
-	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp1, v1, v1); }
-	{ _Bool ret; ret = __sync_bool_compare_and_swap_1(vp1, v1, v1); }
-	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp2, v2, v2); }
-	{ _Bool ret; ret = __sync_bool_compare_and_swap_2(vp2, v2, v2); }
-	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp4, v4, v4); }
-	{ _Bool ret; ret = __sync_bool_compare_and_swap_4(vp4, v4, v4); }
-	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp8, v8, v8); }
-	{ _Bool ret; ret = __sync_bool_compare_and_swap_8(vp8, v8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp16, v16, v16); }
-	{ _Bool ret; ret = __sync_bool_compare_and_swap_16(vp16, v16,v16); }
-	#endif
-
-	{ char ret; ret = __sync_val_compare_and_swap(vp1, v1, v1); }
-	{ char ret; ret = __sync_val_compare_and_swap_1(vp1, v1, v1); }
-	{ short ret; ret = __sync_val_compare_and_swap(vp2, v2, v2); }
-	{ short ret; ret = __sync_val_compare_and_swap_2(vp2, v2, v2); }
-	{ int ret; ret = __sync_val_compare_and_swap(vp4, v4, v4); }
-	{ int ret; ret = __sync_val_compare_and_swap_4(vp4, v4, v4); }
-	{ long long int ret; ret = __sync_val_compare_and_swap(vp8, v8, v8); }
-	{ long long int ret; ret = __sync_val_compare_and_swap_8(vp8, v8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_val_compare_and_swap(vp16, v16, v16); }
-	{ __int128 ret; ret = __sync_val_compare_and_swap_16(vp16, v16,v16); }
-	#endif
-
-	{ char ret; ret = __sync_lock_test_and_set(vp1, v1); }
-	{ char ret; ret = __sync_lock_test_and_set_1(vp1, v1); }
-	{ short ret; ret = __sync_lock_test_and_set(vp2, v2); }
-	{ short ret; ret = __sync_lock_test_and_set_2(vp2, v2); }
-	{ int ret; ret = __sync_lock_test_and_set(vp4, v4); }
-	{ int ret; ret = __sync_lock_test_and_set_4(vp4, v4); }
-	{ long long int ret; ret = __sync_lock_test_and_set(vp8, v8); }
-	{ long long int ret; ret = __sync_lock_test_and_set_8(vp8, v8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __sync_lock_test_and_set(vp16, v16); }
-	{ __int128 ret; ret = __sync_lock_test_and_set_16(vp16, v16); }
-	#endif
-
-	{ __sync_lock_release(vp1); }
-	{ __sync_lock_release_1(vp1); }
-	{ __sync_lock_release(vp2); }
-	{ __sync_lock_release_2(vp2); }
-	{ __sync_lock_release(vp4); }
-	{ __sync_lock_release_4(vp4); }
-	{ __sync_lock_release(vp8); }
-	{ __sync_lock_release_8(vp8); }
-	#if defined(__SIZEOF_INT128__)
-	{ __sync_lock_release(vp16); }
-	{ __sync_lock_release_16(vp16); }
-	#endif
-
-	{ __sync_synchronize(); }
-
-
-
-
-	{ _Bool ret; ret = __atomic_test_and_set(vpB, vB); }
-	{ _Bool ret; ret = __atomic_test_and_set(vp1, v1); }
-	{ __atomic_clear(vpB, vB); }
-	{ __atomic_clear(vp1, v1); }
-
-	{ char ret; ret = __atomic_exchange_n(vp1, &v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_exchange_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; __atomic_exchange(vp1, &v1, &ret, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_exchange_n(vp2, &v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_exchange_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; __atomic_exchange(vp2, &v2, &ret, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_exchange_n(vp4, &v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_exchange_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; __atomic_exchange(vp4, &v4, &ret, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_exchange_n(vp8, &v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_exchange_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; __atomic_exchange(vp8, &v8, &ret, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_exchange_n(vp16, &v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_exchange_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; __atomic_exchange(vp16, &v16, &ret, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_load_n(vp1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_load_1(vp1, __ATOMIC_SEQ_CST); }
-	{ char ret; __atomic_load(vp1, &ret, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_load_n(vp2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_load_2(vp2, __ATOMIC_SEQ_CST); }
-	{ short ret; __atomic_load(vp2, &ret, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_load_n(vp4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_load_4(vp4, __ATOMIC_SEQ_CST); }
-	{ int ret; __atomic_load(vp4, &ret, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_load_n(vp8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_load_8(vp8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; __atomic_load(vp8, &ret, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_load_n(vp16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_load_16(vp16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; __atomic_load(vp16, &ret, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ _Bool ret; ret = __atomic_compare_exchange_n(vp1, rp1, v1, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange_1(vp1, rp1, v1, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange(vp1, rp1, &v1, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange_n(vp2, rp2, v2, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange_2(vp2, rp2, v2, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange(vp2, rp2, &v2, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange_n(vp4, rp4, v4, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange_4(vp4, rp4, v4, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange(vp4, rp4, &v4, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange_n(vp8, rp8, v8, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange_8(vp8, rp8, v8, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange(vp8, rp8, &v8, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ _Bool ret; ret = __atomic_compare_exchange_n(vp16, rp16, v16, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange_16(vp16, rp16, v16, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	{ _Bool ret; ret = __atomic_compare_exchange(vp16, rp16, &v16, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ __atomic_store_n(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ __atomic_store_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ __atomic_store(vp1, &v1, __ATOMIC_SEQ_CST); }
-	{ __atomic_store_n(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ __atomic_store_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ __atomic_store(vp2, &v2, __ATOMIC_SEQ_CST); }
-	{ __atomic_store_n(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ __atomic_store_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ __atomic_store(vp4, &v4, __ATOMIC_SEQ_CST); }
-	{ __atomic_store_n(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ __atomic_store_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ __atomic_store(vp8, &v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __atomic_store_n(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __atomic_store_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __atomic_store(vp16, &v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_add_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_add_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_add_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_add_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_add_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_add_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_add_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_add_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_add_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_add_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_sub_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_sub_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_sub_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_sub_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_sub_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_sub_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_sub_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_sub_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_sub_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_sub_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_and_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_and_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_and_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_and_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_and_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_and_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_and_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_and_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_and_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_and_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_nand_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_nand_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_nand_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_nand_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_nand_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_nand_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_nand_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_nand_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_nand_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_nand_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_xor_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_xor_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_xor_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_xor_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_xor_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_xor_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_xor_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_xor_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_xor_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_xor_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_or_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_or_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_or_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_or_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_or_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_or_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_or_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_or_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_or_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_or_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_fetch_add(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_fetch_add_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_add(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_add_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_add(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_add_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_add(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_add_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_fetch_add(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_fetch_add_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_fetch_sub(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_fetch_sub_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_sub(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_sub_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_sub(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_sub_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_sub(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_sub_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_fetch_sub(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_fetch_sub_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_fetch_and(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_fetch_and_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_and(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_and_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_and(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_and_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_and(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_and_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_fetch_and(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_fetch_and_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_fetch_nand(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_fetch_nand_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_nand(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_nand_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_nand(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_nand_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_nand(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_nand_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_fetch_nand(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_fetch_nand_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_fetch_xor(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_fetch_xor_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_xor(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_xor_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_xor(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_xor_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_xor(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_xor_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_fetch_xor(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_fetch_xor_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ char ret; ret = __atomic_fetch_or(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ char ret; ret = __atomic_fetch_or_1(vp1, v1, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_or(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ short ret; ret = __atomic_fetch_or_2(vp2, v2, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_or(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ int ret; ret = __atomic_fetch_or_4(vp4, v4, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_or(vp8, v8, __ATOMIC_SEQ_CST); }
-	{ long long int ret; ret = __atomic_fetch_or_8(vp8, v8, __ATOMIC_SEQ_CST); }
-	#if defined(__SIZEOF_INT128__)
-	{ __int128 ret; ret = __atomic_fetch_or(vp16, v16, __ATOMIC_SEQ_CST); }
-	{ __int128 ret; ret = __atomic_fetch_or_16(vp16, v16, __ATOMIC_SEQ_CST); }
-	#endif
-
-	{ _Bool ret; ret = __atomic_always_lock_free(sizeof(int), vp4); }
-	{ _Bool ret; ret = __atomic_is_lock_free(sizeof(int), vp4); }
-	{ __atomic_thread_fence(__ATOMIC_SEQ_CST); }
-	{ __atomic_signal_fence(__ATOMIC_SEQ_CST); }
-}
-
-int main() {
-	return 0;
-}
Index: c/tests/cast.c
===================================================================
--- src/tests/cast.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,18 +1,0 @@
-//Testing some valid casts of chars
-char f;
-
-void f() {
-	char f;
-	double f;
-	(int)f;
-	short f;
-	(int)f;
-	(void(*)())f;
-//	([long, long double, *[]()])([f, f, f]);
-}
-
-//Dummy main
-int main(int argc, char const *argv[])
-{
-	return 0;
-}
Index: c/tests/castError.c
===================================================================
--- src/tests/castError.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,15 +1,0 @@
-//Testing some of the invalid casts of chars
-int f;
-
-void f() {
-	int f;
-	double f;
-	(char)f;
-	(int(*)())f;
-}
-
-//Dummy main
-int main(int argc, char const *argv[])
-{
-	return 0;
-}
Index: c/tests/commentMisc.c
===================================================================
--- src/tests/commentMisc.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,6 +1,0 @@
-// alternative ANSI99 brackets
-
-int main() <%
-    int x<:10:>;
-%>
-
Index: c/tests/completeTypeError.c
===================================================================
--- src/tests/completeTypeError.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,73 +1,0 @@
-void foo(int *) {}
-void bar(void *) {}
-forall(otype T) void baz(T *);
-forall(dtype T) void qux(T *);
-forall(dtype T | sized(T)) void quux(T *);
-
-struct A; // incomplete
-struct B {}; // complete
-
-int main() {
-	int *i;
-	void *v;
-
-	A * x;
-	A * y;
-	B * x;
-	B * z;
-
-	// okay
-	*i;
-	*x; // picks B
-	*z;
-	foo(i);
-	bar(i);
-	baz(i);
-	qux(i);
-	quux(i);
-
-	bar(v);
-	qux(v);
-
-	// bad
-	*v;
-	*y;
-	foo(v);
-	baz(v);
-	quux(v);
-}
-
-
-forall(otype T)
-void baz(T * x) {
-	// okay
-	bar(x);
-	baz(x);
-	qux(x);
-	quux(x);
-	*x;
-}
-
-forall(dtype T)
-void qux(T * y) {
-	// okay
-	bar(y);
-	qux(y);
-
-	// bad
-	baz(y);
-	quux(y);
-	*y;
-}
-
-forall(dtype T | sized(T))
-void quux(T * z) {
-	// okay
-	bar(z);
-	qux(z);
-	quux(z);
-	*z;
-
-	// bad
-	baz(z);
-}
Index: c/tests/complex.c
===================================================================
--- src/tests/complex.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,41 +1,0 @@
-// 
-// 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.
-// 
-// complex.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed May 24 22:07:31 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 24 22:08:01 2017
-// Update Count     : 1
-// 
-
-#include <stdio.h>
-#include <complex.h>
-#ifdef __CFA__
-#include <fstream>
-#endif // __CFA
-
-int main( void ) {
-    double _Complex x = 3 + 2i, y = 4 + 5i, z;
-    z = x + y;
-    printf( "x:%g+%gi y:%g+%gi z:%g+%gi\n", creal(x), cimag(x), creal(y), cimag(y), creal(z), cimag(z) );
-#ifdef __CFA__
-    sout | "x:" | x | "y:" | y | "z:" | z | endl;
-#endif // __CFA
-    x = 2.1 + 1.3i;
-    y = 3.2 + 4.5i;
-    z = x + y;
-    printf( "x:%g+%gi y:%g+%gi z:%g+%gi\n", creal(x), cimag(x), creal(y), cimag(y), creal(z), cimag(z) );
-#ifdef __CFA__
-    sout | "x:" | x | "y:" | y | "z:" | z | endl;
-#endif // __CFA
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa complex.c" //
-// End: //
Index: c/tests/concurrent/.expect/coroutineYield.txt
===================================================================
--- src/tests/concurrent/.expect/coroutineYield.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,4000 +1,0 @@
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
Index: c/tests/concurrent/.expect/monitor.txt
===================================================================
--- src/tests/concurrent/.expect/monitor.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-4000000
Index: c/tests/concurrent/.expect/multi-monitor.txt
===================================================================
--- src/tests/concurrent/.expect/multi-monitor.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-2000000 2000000 2000000
Index: c/tests/concurrent/.expect/preempt.txt
===================================================================
--- src/tests/concurrent/.expect/preempt.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,5 +1,0 @@
-100
-200
-300
-400
-500
Index: c/tests/concurrent/.expect/thread.txt
===================================================================
--- src/tests/concurrent/.expect/thread.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,22 +1,0 @@
-User main begin
-First : Suspend No. 1
-First : Suspend No. 2
-First : Suspend No. 3
-First : Suspend No. 4
-First : Suspend No. 5
-First : Suspend No. 6
-First : Suspend No. 7
-First : Suspend No. 8
-First : Suspend No. 9
-First : Suspend No. 10
-Second : Suspend No. 1
-Second : Suspend No. 2
-Second : Suspend No. 3
-Second : Suspend No. 4
-Second : Suspend No. 5
-Second : Suspend No. 6
-Second : Suspend No. 7
-Second : Suspend No. 8
-Second : Suspend No. 9
-Second : Suspend No. 10
-User main end
Index: c/tests/concurrent/coroutineYield.c
===================================================================
--- src/tests/concurrent/coroutineYield.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,53 +1,0 @@
-#include <fstream>
-#include <kernel>
-#include <stdlib>
-#include <thread>
-#include <time>
-
-#define __kick_rate 150000ul
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 600_000ul;
-#else
-static const unsigned long N = 1_000ul;
-#endif
-
-coroutine Coroutine {};
-
-void main(Coroutine& this) {
-	while(true) {
-		#if !defined(TEST_FOREVER)
-			sout | "Coroutine 1" | endl;
-		#endif
-		yield();
-		#if !defined(TEST_FOREVER)
-			sout | "Coroutine 2" | endl;
-		#endif
-		suspend();
-	}
-}
-
-
-int main(int argc, char* argv[]) {
-	Coroutine c;
-	for(int i = 0; TEST(i < N); i++) {
-		#if !defined(TEST_FOREVER)
-			sout | "Thread 1" | endl;
-		#endif
-		resume(c);
-		#if !defined(TEST_FOREVER)
-			sout | "Thread 2" | endl;
-		#endif
-		yield();
-		KICK_WATCHDOG;
-	}
-}
Index: c/tests/concurrent/examples/.expect/boundedBufferEXT.txt
===================================================================
--- src/tests/concurrent/examples/.expect/boundedBufferEXT.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-total:400000
Index: c/tests/concurrent/examples/.expect/boundedBufferINT.txt
===================================================================
--- src/tests/concurrent/examples/.expect/boundedBufferINT.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-total:400000
Index: c/tests/concurrent/examples/.expect/datingService.txt
===================================================================
--- src/tests/concurrent/examples/.expect/datingService.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,40 +1,0 @@
-Girl:17 is dating Boy at 2 with ccode 17
- Boy:2 is dating Girl 17 with ccode 17
- Boy:14 is dating Girl 5 with ccode 5
-Girl:5 is dating Boy at 14 with ccode 5
- Boy:9 is dating Girl 10 with ccode 10
-Girl:10 is dating Boy at 9 with ccode 10
- Boy:1 is dating Girl 18 with ccode 18
-Girl:18 is dating Boy at 1 with ccode 18
- Boy:16 is dating Girl 3 with ccode 3
-Girl:3 is dating Boy at 16 with ccode 3
- Boy:5 is dating Girl 14 with ccode 14
-Girl:14 is dating Boy at 5 with ccode 14
- Boy:15 is dating Girl 4 with ccode 4
-Girl:4 is dating Boy at 15 with ccode 4
-Girl:0 is dating Boy at 19 with ccode 0
- Boy:19 is dating Girl 0 with ccode 0
-Girl:9 is dating Boy at 10 with ccode 9
- Boy:10 is dating Girl 9 with ccode 9
-Girl:11 is dating Boy at 8 with ccode 11
- Boy:8 is dating Girl 11 with ccode 11
- Boy:12 is dating Girl 7 with ccode 7
-Girl:7 is dating Boy at 12 with ccode 7
- Boy:11 is dating Girl 8 with ccode 8
-Girl:8 is dating Boy at 11 with ccode 8
-Girl:16 is dating Boy at 3 with ccode 16
- Boy:3 is dating Girl 16 with ccode 16
-Girl:15 is dating Boy at 4 with ccode 15
- Boy:4 is dating Girl 15 with ccode 15
-Girl:19 is dating Boy at 0 with ccode 19
- Boy:0 is dating Girl 19 with ccode 19
-Girl:2 is dating Boy at 17 with ccode 2
- Boy:17 is dating Girl 2 with ccode 2
- Boy:13 is dating Girl 6 with ccode 6
-Girl:6 is dating Boy at 13 with ccode 6
- Boy:7 is dating Girl 12 with ccode 12
-Girl:12 is dating Boy at 7 with ccode 12
-Girl:13 is dating Boy at 6 with ccode 13
- Boy:6 is dating Girl 13 with ccode 13
-Girl:1 is dating Boy at 18 with ccode 1
- Boy:18 is dating Girl 1 with ccode 1
Index: c/tests/concurrent/examples/.expect/matrixSum.txt
===================================================================
--- src/tests/concurrent/examples/.expect/matrixSum.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-10000
Index: c/tests/concurrent/examples/.expect/quickSort.txt
===================================================================
--- src/tests/concurrent/examples/.expect/quickSort.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,32 +1,0 @@
-25 6 8 -5 99 100 101 7
--5 6 7 8 25 99 100 101
-
-1 -3 5
--3 1 5
-
-
-
-
-9 8 7 6 5 4 3 2 1 0
-0 1 2 3 4 5 6 7 8 9
-
-1 2 3 4 5
-1 2 3 4 5
-
-5 4 3 2 1
-1 2 3 4 5
-
-3 1 5 4 2
-1 2 3 4 5
-
-
-
-
-1 1 1 1 1
-1 1 1 1 1
-
-29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8
-  7 6 5 4 3 2 1 0
-0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
-  22 23 24 25 26 27 28 29
-
Index: c/tests/concurrent/examples/.in/quickSort.txt
===================================================================
--- src/tests/concurrent/examples/.in/quickSort.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,10 +1,0 @@
-8 25 6 8 -5 99 100 101 7
-3 1 -3 5
-0
-10 9 8 7 6 5 4 3 2 1 0
-5 1 2 3 4 5
-5 5 4 3 2 1
-5 3 1 5 4 2
-0
-5 1 1 1 1 1
-30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Index: c/tests/concurrent/examples/boundedBufferEXT.c
===================================================================
--- src/tests/concurrent/examples/boundedBufferEXT.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,123 +1,0 @@
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// boundedBufferEXT.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Apr 18 22:52:12 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May  2 16:12:58 2018
-// Update Count     : 7
-//
-
-#include <stdlib>										// random
-#include <fstream>
-#include <kernel>
-#include <thread>
-#include <unistd.h>										// getpid
-
-//Duration default_preemption() { return 0; }
-
-enum { BufferSize = 50 };
-
-forall( otype T ) {
-	monitor Buffer {
-		int front, back, count;
-		T elements[BufferSize];
-	}; // Buffer
-
-	void ?{}( Buffer(T) & buffer ) with( buffer ) { [front, back, count] = 0; }
-
-	int query( Buffer(T) & buffer ) { return buffer.count; } // read-only, no mutual exclusion
-
-	T remove( Buffer(T) & mutex buffer );				// forward
-
-	void insert( Buffer(T) & mutex buffer, T elem ) with( buffer ) {
-		if ( count == BufferSize ) waitfor( remove, buffer );
-		elements[back] = elem;
-		back = ( back + 1 ) % BufferSize;
-		count += 1;
-	} // insert
-
-	T remove( Buffer(T) & mutex buffer ) with( buffer ) {
-		if ( count == 0 ) waitfor( insert, buffer );
-		T elem = elements[front];
-		front = ( front + 1 ) % BufferSize;
-		count -= 1;
-		return elem;
-	} // remove
-}
-
-const int Sentinel = -1;
-
-thread Producer {
-	Buffer(int) & buffer;
-	unsigned int N;
-};
-void main( Producer & prod ) with( prod ) {
-	for ( int i = 1; i <= N; i += 1 ) {
-		yield( random( 5 ) );
-		insert( buffer, 1 );
-	} // for
-}
-void ?{}( Producer & prod, Buffer(int) * buffer, int N ) {
-	&prod.buffer = buffer;
-	prod.N = N;
-}
-
-thread Consumer {
-	Buffer(int) & buffer;
-	int & sum;											// summation of producer values
-};
-void main( Consumer & cons ) with( cons ) {
-	sum = 0;
-	for ( ;; ) {
-		yield( random( 5 ) );
-		int item = remove( buffer );
-	  if ( item == Sentinel ) break;					// sentinel ?
-		sum += item;
-	} // for
-}
-void ?{}( Consumer & cons, Buffer(int) * buffer, int & sum ) {
-	&cons.buffer = buffer;
-	&cons.sum = &sum;
-}
-
-int main() {
-	Buffer(int) buffer;
-	enum { Prods = 4, Cons = 5 };
-	Producer * prods[Prods];
-	Consumer * cons[Cons];
-	int sums[Cons];
-	int i;
-	processor p;
-
-	//srandom( getpid() );
-	srandom( 1003 );
-
-	for ( i = 0; i < Cons; i += 1 ) {					// create consumers
-		cons[i] = new( &buffer, sums[i] );
-	} // for
-	for ( i = 0; i < Prods; i += 1 ) {					// create producers
-		prods[i] = new( &buffer, 100000 );
-	} // for
-
-	for ( i = 0; i < Prods; i += 1 ) {					// wait for producers to finish
-		delete( prods[i] );
-	} // for
-	for ( i = 0; i < Cons; i += 1 ) {					// generate sentinal values to stop consumers
-		insert( buffer, Sentinel );
-	} // for
-	int sum = 0;
-	for ( i = 0; i < Cons; i += 1 ) {					// wait for consumers to finish
-		delete( cons[i] );
-		sum += sums[i];
-	} // for
-	sout | "total:" | sum | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa boundedBufferEXT.c" //
-// End: //
Index: c/tests/concurrent/examples/boundedBufferINT.c
===================================================================
--- src/tests/concurrent/examples/boundedBufferINT.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// boundedBuffer.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Mon Oct 30 12:45:13 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Apr 26 23:08:17 2018
-// Update Count     : 82
-//
-
-#include <stdlib>										// random
-#include <fstream>
-#include <kernel>
-#include <thread>
-#include <unistd.h>										// getpid
-
-//Duration default_preemption() { return 0; }
-
-enum { BufferSize = 50 };
-
-forall( otype T ) {
-	monitor Buffer {
-		condition full, empty;
-		int front, back, count;
-		T elements[BufferSize];
-	}; // Buffer
-
-	void ?{}( Buffer(T) & buffer ) with( buffer ) { [front, back, count] = 0; }
-
-	int query( Buffer(T) & buffer ) { return buffer.count; } // read-only, no mutual exclusion
-
-	void insert( Buffer(T) & mutex buffer, T elem ) with( buffer ) {
-		if ( count == BufferSize ) wait( empty );
-		elements[back] = elem;
-		back = ( back + 1 ) % BufferSize;
-		count += 1;
-		signal( full );
-	} // insert
-
-	T remove( Buffer(T) & mutex buffer ) with( buffer ) {
-		if ( count == 0 ) wait( full );
-		T elem = elements[front];
-		front = ( front + 1 ) % BufferSize;
-		count -= 1;
-		signal( empty );
-		return elem;
-	} // remove
-}
-
-const int Sentinel = -1;
-
-thread Producer {
-	Buffer(int) & buffer;
-	unsigned int N;
-};
-void main( Producer & prod ) with( prod ) {
-	for ( int i = 1; i <= N; i += 1 ) {
-		yield( random( 5 ) );
-		insert( buffer, 1 );
-	} // for
-}
-void ?{}( Producer & prod, Buffer(int) * buffer, int N ) {
-	&prod.buffer = buffer;
-	prod.N = N;
-}
-
-thread Consumer {
-	Buffer(int) & buffer;
-	int & sum;											// summation of producer values
-};
-void main( Consumer & cons ) with( cons ) {
-	sum = 0;
-	for ( ;; ) {
-		yield( random( 5 ) );
-		int item = remove( buffer );
-	  if ( item == Sentinel ) break;					// sentinel ?
-		sum += item;
-	} // for
-}
-void ?{}( Consumer & cons, Buffer(int) * buffer, int & sum ) {
-	&cons.buffer = buffer;
-	&cons.sum = &sum;
-}
-
-int main() {
-	Buffer(int) buffer;
-	enum { Prods = 4, Cons = 5 };
-	Producer * prods[Prods];
-	Consumer * cons[Cons];
-	int sums[Cons];
-	int i;
-	processor p;
-
-	//srandom( getpid() );
-	srandom( 1003 );
-
-	for ( i = 0; i < Cons; i += 1 ) {					// create consumers
-		cons[i] = new( &buffer, sums[i] );
-	} // for
-	for ( i = 0; i < Prods; i += 1 ) {					// create producers
-		prods[i] = new( &buffer, 100000 );
-	} // for
-
-	for ( i = 0; i < Prods; i += 1 ) {					// wait for producers to finish
-		delete( prods[i] );
-	} // for
-	for ( i = 0; i < Cons; i += 1 ) {					// generate sentinal values to stop consumers
-		insert( buffer, Sentinel );
-	} // for
-	int sum = 0;
-	for ( i = 0; i < Cons; i += 1 ) {					// wait for consumers to finish
-		delete( cons[i] );
-		sum += sums[i];
-	} // for
-	sout | "total:" | sum | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa boundedBufferINT.c" //
-// End: //
Index: c/tests/concurrent/examples/datingService.c
===================================================================
--- src/tests/concurrent/examples/datingService.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,113 +1,0 @@
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// datingService.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Mon Oct 30 12:56:20 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun May 27 09:05:18 2018
-// Update Count     : 26
-//
-
-#include <stdlib>										// random
-#include <fstream>
-#include <kernel>
-#include <thread>
-#include <unistd.h>										// getpid
-
-enum { CompCodes = 20 };								// number of compatibility codes
-
-monitor DatingService {
-	condition Girls[CompCodes], Boys[CompCodes];
-	unsigned int GirlPhoneNo, BoyPhoneNo;
-}; // DatingService
-
-unsigned int girl( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
-	if ( is_empty( Boys[ccode] ) ) {					// no compatible boy ?
-		wait( Girls[ccode] );							// wait for boy
-		GirlPhoneNo = PhoneNo;							// make phone number available
-	} else {
-		GirlPhoneNo = PhoneNo;							// make phone number available
-		signal_block( Boys[ccode] );					// restart boy to set phone number
-	} // if
-	return BoyPhoneNo;
-} // DatingService girl
-
-unsigned int boy( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
-	if ( is_empty( Girls[ccode] ) ) {					// no compatible girl ?
-		wait( Boys[ccode] );							// wait for girl
-		BoyPhoneNo = PhoneNo;							// make phone number available
-	} else {
-		BoyPhoneNo = PhoneNo;							// make phone number available
-		signal_block( Girls[ccode] );					// restart girl to set phone number
-	} // if
-	return GirlPhoneNo;
-} // DatingService boy
-
-unsigned int girlck[CompCodes];
-unsigned int boyck[CompCodes];
-
-thread Girl {
-	DatingService & TheExchange;
-	unsigned int id, ccode;
-}; // Girl
-
-void main( Girl & g ) with( g ) {
-	yield( random( 100 ) );								// don't all start at the same time
-	unsigned int partner = girl( TheExchange, id, ccode );
-	sout | "Girl:" | id | "is dating Boy at" | partner | "with ccode" | ccode | endl;
-	girlck[id] = partner;
-} // Girl main
-
-void ?{}( Girl & g, DatingService * TheExchange, unsigned int id, unsigned int ccode ) {
-	&g.TheExchange = TheExchange;
-	g.id = id;
-	g.ccode = ccode;
-} // Girl ?{}
-
-thread Boy {
-	DatingService &TheExchange;
-	unsigned int id, ccode;
-}; // Boy
-
-void main( Boy & b ) with( b ) {
-	yield( random( 100 ) );								// don't all start at the same time
-	unsigned int partner = boy( TheExchange, id, ccode );
-	sout | " Boy:" | id | "is dating Girl" | partner | "with ccode" | ccode | endl;
-	boyck[id] = partner;
-} // Boy main
-
-void ?{}( Boy & b, DatingService * TheExchange, unsigned int id, unsigned int ccode ) {
-	&b.TheExchange = TheExchange;
-	b.id = id;
-	b.ccode = ccode;
-} // Boy ?{}
-
-int main() {
-	DatingService TheExchange;
-	Girl * girls[CompCodes];
-	Boy  * boys[CompCodes];
-
-	srandom( /*getpid()*/ 103 );
-
-	for ( unsigned int i = 0; i < CompCodes; i += 1 ) {
-		girls[i] = new( &TheExchange, i, i );
-		boys[i]  = new( &TheExchange, i, CompCodes - ( i + 1 ) );
-	} // for
-
-	for ( unsigned int i = 0; i < CompCodes; i += 1 ) {
-		delete( boys[i] );
-		delete( girls[i] );
-	} // for
-
-	for ( unsigned int i = 0; i < CompCodes; i += 1 ) {
-		if ( girlck[ boyck[i] ] != boyck[ girlck[i] ] ) abort();
-	} // for
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa datingService.c" //
-// End: //
Index: c/tests/concurrent/examples/matrixSum.c
===================================================================
--- src/tests/concurrent/examples/matrixSum.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,62 +1,0 @@
-//                               -*- 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 : Fri May 25 09:34:27 2018
-// Update Count     : 10
-// 
-
-#include <fstream>
-#include <kernel>
-#include <thread>
-
-thread Adder {
-	int * row, cols, & subtotal;						// communication
-};
-
-void ?{}( Adder & adder, int row[], int cols, int & subtotal ) {
-	adder.[ row, cols ] = [ row, cols ];				// expression disallowed in multi-member access
-	&adder.subtotal = &subtotal;
-}
-
-void main( Adder & adder ) with( adder ) {				// thread starts here
-	subtotal = 0;
-	for ( int c = 0; c < cols; c += 1 ) {
-		subtotal += row[c];
-	} // for
-}
-
-int main() {
-	const int rows = 10, cols = 1000;
-	int matrix[rows][cols], subtotals[rows], total = 0;
-	processor p;										// add 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: //
Index: c/tests/concurrent/examples/quickSort.c
===================================================================
--- src/tests/concurrent/examples/quickSort.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,180 +1,0 @@
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// quickSort.c -- In-place concurrent quick-sort: threads are created to partition to a specific depth, then sequential
-//		recursive-calls are use to sort each partition.
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Dec  6 12:15:52 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jan 30 15:58:58 2018
-// Update Count     : 162
-//
-
-#include <fstream>
-#include <stdlib>
-#include <kernel>
-#include <thread>
-#include <string.h>										// strcmp
-
-thread Quicksort {
-	int * values;										// communication variables
-	int low, high, depth;
-};
-
-void ?{}( Quicksort & qs, int values[], int size, int depth ) {
-	qs.values = values;  qs.low = 0;  qs.high = size;  qs.depth = depth;
-} // Quicksort
-
-void main( Quicksort & qs ) {							// thread starts here
-	// nested routines: information hiding
-
-	void ?{}( Quicksort & qs, int values[], int low, int high, int depth ) {
-		qs.values = values;  qs.low = low;  qs.high = high;  qs.depth = depth;
-	} // Quicksort
-
-	void sort( int values[], int low, int high, int depth ) {
-		int left, right;								// index to left/right-hand side of the values
-		int pivot;										// pivot value of values
-		int swap;										// temporary
-
-		//verify();										// check for stack overflow due to recursion
-
-		// partition while 2 or more elements in the array
-		if ( low < high ) {
-			pivot = values[low + ( high - low ) / 2];
-			left  = low;
-			right = high;
-
-			// partition: move values less < pivot before the pivot and values > pivot after the pivot
-			do {
-				while ( values[left] < pivot ) left += 1; // changed values[left] < pivot
-				while ( pivot < values[right] ) right -= 1;
-				if ( left <= right ) {
-					swap = values[left];				// interchange values
-					values[left]  = values[right];
-					values[right] = swap;
-					left += 1;
-					right -= 1;
-				} // if
-			} while ( left <= right );
-
-			// restrict number of tasks to slightly greater than number of processors
-			if ( depth > 0 ) {
-				depth -= 1;
-				Quicksort rqs = { values, low, right, depth }; // concurrently sort upper half
-				//Quicksort lqs( values, left, high, depth ); // concurrently sort lower half
-				sort( values, left, high, depth );		// concurrently sort lower half
-			} else {
-				sort( values, low, right, 0 );			// sequentially sort lower half
-				sort( values, left, high, 0 );			// sequentially sort upper half
-			} // if
-		} // if
-	} // sort
-
-	with( qs ) {
-		sort( values, low, high, depth );
-	} // with
-} // main
-
-
-bool convert( int & val, const char * nptr ) {			// convert C string to integer
-	char * eptr;
-	int temp = strto( nptr, &eptr, 10 );				// do not change val on false
-	// true => entire string valid with no extra characters
-	return *nptr != '\0' && *eptr == '\0' ? val = temp, true : false;
-} // convert
-
-void usage( char * argv[] ) {
-	sout | "Usage:" | argv[0] | "( -s unsorted-file [ sorted-file ] | -t size (>= 0) [ depth (>= 0) ] )" | endl;
-	exit( EXIT_FAILURE );								// TERMINATE!
-} // usage
-
-
-int main( int argc, char * argv[] ) {
-	ifstream & unsortedfile = sin;
-	ofstream & sortedfile = sout;						// default value
-	int depth = 0, size;
-
-	if ( argc != 1 ) {									// do not use defaults
-		if ( argc < 2 || argc > 4 ) usage( argv );		// wrong number of options
-		if ( strcmp( argv[1], "-t" ) == 0 ) {			// timing ?
-			&unsortedfile = (ifstream *)0;				// no input
-			choose ( argc ) {
-			  case 4:
-				if ( ! convert( depth, argv[3] ) || depth < 0 ) usage( argv );
-				fallthrough;
-			  case 3:
-				if ( ! convert( size, argv[2] ) || size < 0 ) usage( argv );
-			} // choose
-		} else {										// sort file
-			choose ( argc ) {
-			  case 3:
-				&sortedfile = new( (const char *)argv[2] ); // open the output file
-				if ( fail( sortedfile ) ) {
-					serr | "Error! Could not open sorted output file \"" | argv[2] | "\"" | endl;
-					usage( argv );
-				} // if
-				fallthrough;
-			  case 2:
-				&unsortedfile = new( (const char *)argv[1] ); // open the input file
-				if ( fail( unsortedfile ) ) {
-					serr | "Error! Could not open unsorted input file \"" | argv[1] | "\"" | endl;
-					usage( argv );
-				} // if
-			} // choose
-		} // if
-	} // if
-
-	enum { ValuesPerLine = 22 };						// number of values printed per line
-
-	if ( &unsortedfile ) {								// generate output ?
-		for ( ;; ) {
-			unsortedfile | size;						// read number of elements in the list
-		  if ( eof( unsortedfile ) ) break;
-			int * values = alloc( size );				// values to be sorted, too large to put on stack
-			for ( int counter = 0; counter < size; counter += 1 ) { // read unsorted numbers
-				unsortedfile | values[counter];
-				if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | endl | "  ";
-				sortedfile | values[counter];
-				if ( counter < size - 1 && (counter + 1) % ValuesPerLine != 0 ) sortedfile | ' ';
-			} // for
-			sortedfile | endl;
-			if ( size > 0 ) {							// values to sort ?
-				Quicksort QS = { values, size - 1, 0 }; // sort values
-			} // wait until sort tasks terminate
-			for ( int counter = 0; counter < size; counter += 1 ) { // print sorted list
-				if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | endl | "  ";
-				sortedfile | values[counter];
-				if ( counter < size - 1 && (counter + 1) % ValuesPerLine != 0 ) sortedfile | ' ';
-			} // for
-			sortedfile | endl | endl;
-
-			delete( values );
-		} // for
-		if ( &unsortedfile != &sin ) delete( &unsortedfile ); // close input/output files
-		if ( &sortedfile != &sout ) delete( &sortedfile );
-	} else {
-		processor processors[ (1 << depth) - 1 ] __attribute__(( unused )); // create 2^depth-1 kernel threads
-
-		int * values = alloc( size );				// values to be sorted, too large to put on stack
-		for ( int counter = 0; counter < size; counter += 1 ) { // generate unsorted numbers
-			values[counter] = size - counter;			// descending values
-		} // for
-		{
-			Quicksort QS = { values, size - 1, depth }; // sort values
-		} // wait until sort tasks terminate
-
-		// for ( int counter = 0; counter < size - 1; counter += 1 ) { // check sorting
-		// 	if ( values[counter] > values[counter + 1] ) abort();
-		// } // for
-
-		delete( values );
-	} // if
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa quickSort.c" //
-// End: //
Index: c/tests/concurrent/monitor.c
===================================================================
--- src/tests/concurrent/monitor.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,43 +1,0 @@
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <thread>
-
-monitor global_t {
-	int value;
-};
-
-void ?{}(global_t & this) {
-	this.value = 0;
-}
-
-static global_t global;
-
-void increment3( global_t & mutex this ) {
-	this.value += 1;
-}
-
-void increment2( global_t & mutex this ) {
-	increment3( this );
-}
-
-void increment( global_t & mutex this ) {
-	increment2( this );
-}
-
-thread MyThread {};
-
-void main( MyThread & this ) {
-	for(int i = 0; i < 1_000_000; i++) {
-		increment( global );
-	}
-}
-
-int main(int argc, char* argv[]) {
-	assert( global.__mon.entry_queue.tail != NULL );
-	processor p;
-	{
-		MyThread f[4];
-	}
-	sout | global.value | endl;
-}
Index: c/tests/concurrent/multi-monitor.c
===================================================================
--- src/tests/concurrent/multi-monitor.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,55 +1,0 @@
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <thread>
-
-static int global12, global23, global13;
-
-monitor monitor_t {};
-
-static monitor_t m1, m2, m3;
-
-void increment( monitor_t & mutex p1, monitor_t & mutex p2, int & value ) {
-	value += 1;
-}
-
-thread MyThread {
-	int target;
-};
-
-void ?{}( MyThread & this, int target ) {
-	this.target = target;
-}
-
-void ^?{}( MyThread & mutex this ) {}
-
-void main( MyThread & this ) {
-	for(int i = 0; i < 1000000; i++) {
-		choose(this.target) {
-			case 0: increment( m1, m2, global12 );
-			case 1: increment( m2, m3, global23 );
-			case 2: increment( m1, m3, global13 );
-		}
-	}
-}
-
-forall(dtype T | sized(T) | { void ^?{}(T & mutex); })
-void delete_mutex(T * x) {
-	^(*x){};
-	free(x);
-}
-
-int main(int argc, char* argv[]) {
-	processor p;
-	{
-		MyThread * f[6];
-		for(int i = 0; i < 6; i++) {
-			f[i] = new(i % 3);
-		}
-
-		for(int i = 0; i < 6; i++) {
-			delete_mutex( f[i] );
-		}
-	}
-	sout | global12 | global23 | global13 | endl;
-}
Index: c/tests/concurrent/preempt.c
===================================================================
--- src/tests/concurrent/preempt.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,59 +1,0 @@
-#include <kernel>
-#include <thread>
-#include <time>
-
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 30_000ul;
-#else
-static const unsigned long N = 500ul;
-#endif
-
-extern void __cfaabi_check_preemption();
-
-static volatile int counter = 0;
-
-thread worker_t {
-	int value;
-};
-
-void ?{}( worker_t & this, int value ) {
-	this.value = value;
-}
-
-void main(worker_t & this) {
-	while(TEST(counter < N)) {
-		__cfaabi_check_preemption();
-		if( (counter % 7) == this.value ) {
-			__cfaabi_check_preemption();
-			int next = __atomic_add_fetch_4(&counter, 1, __ATOMIC_SEQ_CST);
-			__cfaabi_check_preemption();
-			if( (next % 100) == 0 ) printf("%d\n", (int)next);
-			__cfaabi_check_preemption();
-		}
-		__cfaabi_check_preemption();
-		KICK_WATCHDOG;
-	}
-}
-
-int main(int argc, char* argv[]) {
-	processor p;
-	{
-		worker_t w0 = 0;
-		worker_t w1 = 1;
-		worker_t w2 = 2;
-		worker_t w3 = 3;
-		worker_t w4 = 4;
-		worker_t w5 = 5;
-		worker_t w6 = 6;
-	}
-}
Index: c/tests/concurrent/signal/.expect/block.txt
===================================================================
--- src/tests/concurrent/signal/.expect/block.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-Starting waiters
-Waiters done
Index: c/tests/concurrent/signal/.expect/disjoint.txt
===================================================================
--- src/tests/concurrent/signal/.expect/disjoint.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,11 +1,0 @@
-1000
-2000
-3000
-4000
-5000
-6000
-7000
-8000
-9000
-10000
-All waiter done
Index: c/tests/concurrent/signal/.expect/wait.txt
===================================================================
--- src/tests/concurrent/signal/.expect/wait.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-Starting
-Done
Index: c/tests/concurrent/signal/block.c
===================================================================
--- src/tests/concurrent/signal/block.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,139 +1,0 @@
-//---------------------------------------------------------
-// Barging test
-// Ensures that no barging can occur between :
-//   - the frontend of the signal_block and the signaled thread
-//   - the signaled  threadand the backend of the signal_block
-//---------------------------------------------------------
-
-
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <stdlib>
-#include <thread>
-#include <time>
-
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 150_000ul;
-#else
-static const unsigned long N = 5_000ul;
-#endif
-
-enum state_t { WAITED, SIGNAL, BARGE };
-
-monitor global_data_t {
-	thread_desc * last_thread;
-	thread_desc * last_signaller;
-};
-
-void ?{} ( global_data_t & this ) {
-	this.last_thread = NULL;
-	this.last_signaller = NULL;
-}
-
-void ^?{} ( global_data_t & mutex this ) {}
-
-global_data_t globalA, globalB;
-
-condition cond;
-
-volatile bool done;
-
-//------------------------------------------------------------------------------
-void wait_op( global_data_t & mutex a, global_data_t & mutex b, unsigned i ) {
-    wait( cond, (uintptr_t)active_thread() );
-
-	yield( random( 10 ) );
-
-	if(a.last_thread != a.last_signaller || b.last_thread != b.last_signaller ) {
-		sout | "ERROR Barging detected, expected" | a.last_signaller | b.last_signaller | "got" | a.last_thread | b.last_thread | endl;
-		abort();
-	}
-
-	a.last_thread = b.last_thread = active_thread();
-
-	yield( random( 10 ) );
-}
-
-thread Waiter {};
-void main( Waiter & this ) {
-	for( int i = 0; TEST(i < N); i++ ) {
-		wait_op( globalA, globalB, i );
-		KICK_WATCHDOG;
-	}
-}
-
-//------------------------------------------------------------------------------
-void signal_op( global_data_t & mutex a, global_data_t & mutex b ) {
-	yield( random( 10 ) );
-
-	[a.last_thread, b.last_thread, a.last_signaller, b.last_signaller] = active_thread();
-
-	if( !is_empty( cond ) ) {
-
-		thread_desc * next = front( cond );
-
-		if( ! signal_block( cond ) ) {
-			sout | "ERROR expected to be able to signal" | endl;
-			abort();
-		}
-
-		yield( random( 10 ) );
-
-		if(a.last_thread != next || b.last_thread != next) {
-			sout | "ERROR Barging detected, expected" | next | "got" | a.last_thread | b.last_thread | endl;
-			abort();
-		}
-	}
-
-}
-
-thread Signaller {};
-void main( Signaller & this ) {
-	while( !done ) {
-		signal_op( globalA, globalB );
-	}
-}
-
-//------------------------------------------------------------------------------
-void barge_op( global_data_t & mutex a ) {
-	a.last_thread = active_thread();
-}
-
-thread Barger {};
-void main( Barger & this ) {
-	for( unsigned i = 0; !done; i++ ) {
-		//Choose some monitor to barge into with some irregular pattern
-		bool choose_a = (i % 13) > (i % 17);
-		if ( choose_a ) barge_op( globalA );
-		else barge_op( globalB );
-	}
-}
-
-//------------------------------------------------------------------------------
-
-int main(int argc, char* argv[]) {
-	srandom( time( NULL ) );
-	done = false;
-	processor p;
-	{
-		Signaller s[4];
-		Barger b[13];
-		sout | "Starting waiters" | endl;
-		{
-			Waiter w[3];
-		}
-		sout | "Waiters done" | endl;
-		done = true;
-	}
-}
Index: c/tests/concurrent/signal/disjoint.c
===================================================================
--- src/tests/concurrent/signal/disjoint.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,129 +1,0 @@
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <thread>
-#include <time>
-
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 300_000ul;
-#else
-static const unsigned long N = 10_000ul;
-#endif
-
-enum state_t { WAIT, SIGNAL, BARGE };
-
-monitor global_t {};
-global_t mut;
-
-monitor global_data_t;
-void ?{}( global_data_t & this );
-void ^?{} ( global_data_t & mutex this );
-
-monitor global_data_t {
-	int counter;
-	state_t state;
-} data;
-
-condition cond;
-
-volatile bool all_done;
-
-void ?{}( global_data_t & this ) {
-	this.counter == 0;
-	this.state = BARGE;
-}
-
-void ^?{} ( global_data_t & mutex this ) {}
-
-//------------------------------------------------------------------------------
-// Barging logic
-void barge( global_data_t & mutex d ) {
-	d.state = BARGE;
-}
-
-thread Barger {};
-
-void main( Barger & this ) {
-	while( !all_done ) {
-		barge( data );
-		yield();
-	}
-}
-
-//------------------------------------------------------------------------------
-// Waiting logic
-bool wait( global_t & mutex m, global_data_t & mutex d ) {
-	wait( cond );
-	if( d.state != SIGNAL ) {
-		sout | "ERROR barging!" | endl;
-	}
-
-	#if !defined(TEST_FOREVER)
-		d.counter++;
-		if( (d.counter % 1000) == 0 ) sout | d.counter | endl;
-	#endif
-
-	return TEST(d.counter < N);
-}
-
-thread Waiter {};
-
-void main( Waiter & this ) {
-	while( wait( mut, data ) ) { KICK_WATCHDOG; yield(); }
-}
-
-
-//------------------------------------------------------------------------------
-// Signalling logic
-void signal( condition & cond, global_t & mutex a, global_data_t & mutex b ) {
-	b.state = SIGNAL;
-	signal( cond );
-}
-
-void logic( global_t & mutex a ) {
-	signal( cond, a, data );
-
-	yield( random( 10 ) );
-
-	//This is technically a mutual exclusion violation but the mutex monitor protects us
-	bool running = TEST(data.counter < N) && data.counter > 0;
-	if( data.state != SIGNAL && running ) {
-		sout | "ERROR Eager signal" | data.state | endl;
-	}
-}
-
-thread Signaller {};
-
-void main( Signaller & this ) {
-	while( !all_done ) {
-		logic( mut );
-		yield();
-	}
-}
-
-//------------------------------------------------------------------------------
-// Main loop
-int main(int argc, char* argv[]) {
-	srandom( time( NULL ) );
-	all_done = false;
-	processor p;
-	{
-		Signaller s;
-		Barger b[17];
-		{
-			Waiter w[4];
-		}
-		sout | "All waiter done" | endl;
-		all_done = true;
-	}
-}
Index: c/tests/concurrent/signal/wait.c
===================================================================
--- src/tests/concurrent/signal/wait.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,153 +1,0 @@
-//---------------------------------------------------------
-// Multi wait test
-// Ensures that no deadlock from waiting/signalling conditions
-//---------------------------------------------------------
-
-
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <stdlib>
-#include <thread>
-#include <time>
-
-#define __kick_rate 12000ul
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 375_000ul;
-#else
-static const unsigned long N = 2_500ul;
-#endif
-
-monitor global_t {};
-
-global_t globalA;
-global_t globalB;
-global_t globalC;
-
-condition condAB, condAC, condBC, condABC;
-
-thread Signaler {};
-thread WaiterAB {};
-thread WaiterAC {};
-thread WaiterBC {};
-thread WaiterABC{};
-
-volatile int waiter_left;
-
-//----------------------------------------------------------------------------------------------------
-// Tools
-void signal( condition & cond, global_t & mutex a, global_t & mutex b ) {
-	signal( cond );
-}
-
-void signal( condition & cond, global_t & mutex a, global_t & mutex b, global_t & mutex c ) {
-	signal( cond );
-}
-
-void wait( condition & cond, global_t & mutex a, global_t & mutex b ) {
-	wait( cond );
-}
-
-void wait( condition & cond, global_t & mutex a, global_t & mutex b, global_t & mutex c ) {
-	wait( cond );
-}
-
-//----------------------------------------------------------------------------------------------------
-// Signaler
-void main( Signaler & this ) {
-
-	while( waiter_left != 0 ) {
-		unsigned action = random( 4 );
-		switch( action ) {
-			case 0:
-				signal( condABC, globalA, globalB, globalC );
-				break;
-			case 1:
-				signal( condAB , globalA, globalB );
-				break;
-			case 2:
-				signal( condBC , globalB, globalC );
-				break;
-			case 3:
-				signal( condAC , globalA, globalC );
-				break;
-			default:
-				sout | "Something went wrong" | endl;
-				abort();
-		}
-		yield();
-	}
-}
-
-//----------------------------------------------------------------------------------------------------
-// Waiter ABC
-void main( WaiterABC & this ) {
-	for( int i = 0; TEST(i < N); i++ ) {
-		wait( condABC, globalA, globalB, globalC );
-		KICK_WATCHDOG;
-	}
-
-	__sync_fetch_and_sub_4( &waiter_left, 1);
-}
-
-//----------------------------------------------------------------------------------------------------
-// Waiter AB
-void main( WaiterAB & this ) {
-	for( int i = 0; TEST(i < N); i++ ) {
-		wait( condAB , globalA, globalB );
-		KICK_WATCHDOG;
-	}
-
-	__sync_fetch_and_sub_4( &waiter_left, 1);
-}
-
-//----------------------------------------------------------------------------------------------------
-// Waiter AC
-void main( WaiterAC & this ) {
-	for( int i = 0; TEST(i < N); i++ ) {
-		wait( condAC , globalA, globalC );
-		KICK_WATCHDOG;
-	}
-
-	__sync_fetch_and_sub_4( &waiter_left, 1);
-}
-
-//----------------------------------------------------------------------------------------------------
-// Waiter BC
-void main( WaiterBC & this ) {
-	for( int i = 0; TEST(i < N); i++ ) {
-		wait( condBC , globalB, globalC );
-		KICK_WATCHDOG;
-	}
-
-	__sync_fetch_and_sub_4( &waiter_left, 1);
-}
-
-//----------------------------------------------------------------------------------------------------
-// Main
-int main(int argc, char* argv[]) {
-	srandom( time( NULL ) );
-	waiter_left = 4;
-	processor p[2];
-	sout | "Starting" | endl;
-	{
-		Signaler  e;
-		{
-			WaiterABC a;
-			WaiterAB  b;
-			WaiterBC  c;
-			WaiterAC  d;
-		}
-	}
-	sout | "Done" | endl;
-}
Index: c/tests/concurrent/thread.c
===================================================================
--- src/tests/concurrent/thread.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#include <fstream>
-#include <kernel>
-#include <stdlib>
-#include <thread>
-
-thread First  { semaphore* lock; };
-thread Second { semaphore* lock; };
-
-void ?{}( First  & this, semaphore & lock ) { ((thread&)this){"Thread 1"}; this.lock = &lock; }
-void ?{}( Second & this, semaphore & lock ) { ((thread&)this){"Thread 2"}; this.lock = &lock; }
-
-void main(First& this) {
-	for(int i = 0; i < 10; i++) {
-		sout | "First : Suspend No." | i + 1 | endl;
-		yield();
-	}
-	V(*this.lock);
-}
-
-void main(Second& this) {
-	P(*this.lock);
-	for(int i = 0; i < 10; i++) {
-		sout | "Second : Suspend No." | i + 1 | endl;
-		yield();
-	}
-}
-
-
-int main(int argc, char* argv[]) {
-	semaphore lock = { 0 };
-	sout | "User main begin" | endl;
-	{
-		processor p;
-		{
-			First  f = { lock };
-			Second s = { lock };
-		}
-	}
-	sout | "User main end" | endl;
-}
Index: c/tests/concurrent/waitfor/.expect/barge.txt
===================================================================
--- src/tests/concurrent/waitfor/.expect/barge.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,5002 +1,0 @@
-Starting
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
-270
-271
-272
-273
-274
-275
-276
-277
-278
-279
-280
-281
-282
-283
-284
-285
-286
-287
-288
-289
-290
-291
-292
-293
-294
-295
-296
-297
-298
-299
-300
-301
-302
-303
-304
-305
-306
-307
-308
-309
-310
-311
-312
-313
-314
-315
-316
-317
-318
-319
-320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-503
-504
-505
-506
-507
-508
-509
-510
-511
-512
-513
-514
-515
-516
-517
-518
-519
-520
-521
-522
-523
-524
-525
-526
-527
-528
-529
-530
-531
-532
-533
-534
-535
-536
-537
-538
-539
-540
-541
-542
-543
-544
-545
-546
-547
-548
-549
-550
-551
-552
-553
-554
-555
-556
-557
-558
-559
-560
-561
-562
-563
-564
-565
-566
-567
-568
-569
-570
-571
-572
-573
-574
-575
-576
-577
-578
-579
-580
-581
-582
-583
-584
-585
-586
-587
-588
-589
-590
-591
-592
-593
-594
-595
-596
-597
-598
-599
-600
-601
-602
-603
-604
-605
-606
-607
-608
-609
-610
-611
-612
-613
-614
-615
-616
-617
-618
-619
-620
-621
-622
-623
-624
-625
-626
-627
-628
-629
-630
-631
-632
-633
-634
-635
-636
-637
-638
-639
-640
-641
-642
-643
-644
-645
-646
-647
-648
-649
-650
-651
-652
-653
-654
-655
-656
-657
-658
-659
-660
-661
-662
-663
-664
-665
-666
-667
-668
-669
-670
-671
-672
-673
-674
-675
-676
-677
-678
-679
-680
-681
-682
-683
-684
-685
-686
-687
-688
-689
-690
-691
-692
-693
-694
-695
-696
-697
-698
-699
-700
-701
-702
-703
-704
-705
-706
-707
-708
-709
-710
-711
-712
-713
-714
-715
-716
-717
-718
-719
-720
-721
-722
-723
-724
-725
-726
-727
-728
-729
-730
-731
-732
-733
-734
-735
-736
-737
-738
-739
-740
-741
-742
-743
-744
-745
-746
-747
-748
-749
-750
-751
-752
-753
-754
-755
-756
-757
-758
-759
-760
-761
-762
-763
-764
-765
-766
-767
-768
-769
-770
-771
-772
-773
-774
-775
-776
-777
-778
-779
-780
-781
-782
-783
-784
-785
-786
-787
-788
-789
-790
-791
-792
-793
-794
-795
-796
-797
-798
-799
-800
-801
-802
-803
-804
-805
-806
-807
-808
-809
-810
-811
-812
-813
-814
-815
-816
-817
-818
-819
-820
-821
-822
-823
-824
-825
-826
-827
-828
-829
-830
-831
-832
-833
-834
-835
-836
-837
-838
-839
-840
-841
-842
-843
-844
-845
-846
-847
-848
-849
-850
-851
-852
-853
-854
-855
-856
-857
-858
-859
-860
-861
-862
-863
-864
-865
-866
-867
-868
-869
-870
-871
-872
-873
-874
-875
-876
-877
-878
-879
-880
-881
-882
-883
-884
-885
-886
-887
-888
-889
-890
-891
-892
-893
-894
-895
-896
-897
-898
-899
-900
-901
-902
-903
-904
-905
-906
-907
-908
-909
-910
-911
-912
-913
-914
-915
-916
-917
-918
-919
-920
-921
-922
-923
-924
-925
-926
-927
-928
-929
-930
-931
-932
-933
-934
-935
-936
-937
-938
-939
-940
-941
-942
-943
-944
-945
-946
-947
-948
-949
-950
-951
-952
-953
-954
-955
-956
-957
-958
-959
-960
-961
-962
-963
-964
-965
-966
-967
-968
-969
-970
-971
-972
-973
-974
-975
-976
-977
-978
-979
-980
-981
-982
-983
-984
-985
-986
-987
-988
-989
-990
-991
-992
-993
-994
-995
-996
-997
-998
-999
-1000
-1001
-1002
-1003
-1004
-1005
-1006
-1007
-1008
-1009
-1010
-1011
-1012
-1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
-1024
-1025
-1026
-1027
-1028
-1029
-1030
-1031
-1032
-1033
-1034
-1035
-1036
-1037
-1038
-1039
-1040
-1041
-1042
-1043
-1044
-1045
-1046
-1047
-1048
-1049
-1050
-1051
-1052
-1053
-1054
-1055
-1056
-1057
-1058
-1059
-1060
-1061
-1062
-1063
-1064
-1065
-1066
-1067
-1068
-1069
-1070
-1071
-1072
-1073
-1074
-1075
-1076
-1077
-1078
-1079
-1080
-1081
-1082
-1083
-1084
-1085
-1086
-1087
-1088
-1089
-1090
-1091
-1092
-1093
-1094
-1095
-1096
-1097
-1098
-1099
-1100
-1101
-1102
-1103
-1104
-1105
-1106
-1107
-1108
-1109
-1110
-1111
-1112
-1113
-1114
-1115
-1116
-1117
-1118
-1119
-1120
-1121
-1122
-1123
-1124
-1125
-1126
-1127
-1128
-1129
-1130
-1131
-1132
-1133
-1134
-1135
-1136
-1137
-1138
-1139
-1140
-1141
-1142
-1143
-1144
-1145
-1146
-1147
-1148
-1149
-1150
-1151
-1152
-1153
-1154
-1155
-1156
-1157
-1158
-1159
-1160
-1161
-1162
-1163
-1164
-1165
-1166
-1167
-1168
-1169
-1170
-1171
-1172
-1173
-1174
-1175
-1176
-1177
-1178
-1179
-1180
-1181
-1182
-1183
-1184
-1185
-1186
-1187
-1188
-1189
-1190
-1191
-1192
-1193
-1194
-1195
-1196
-1197
-1198
-1199
-1200
-1201
-1202
-1203
-1204
-1205
-1206
-1207
-1208
-1209
-1210
-1211
-1212
-1213
-1214
-1215
-1216
-1217
-1218
-1219
-1220
-1221
-1222
-1223
-1224
-1225
-1226
-1227
-1228
-1229
-1230
-1231
-1232
-1233
-1234
-1235
-1236
-1237
-1238
-1239
-1240
-1241
-1242
-1243
-1244
-1245
-1246
-1247
-1248
-1249
-1250
-1251
-1252
-1253
-1254
-1255
-1256
-1257
-1258
-1259
-1260
-1261
-1262
-1263
-1264
-1265
-1266
-1267
-1268
-1269
-1270
-1271
-1272
-1273
-1274
-1275
-1276
-1277
-1278
-1279
-1280
-1281
-1282
-1283
-1284
-1285
-1286
-1287
-1288
-1289
-1290
-1291
-1292
-1293
-1294
-1295
-1296
-1297
-1298
-1299
-1300
-1301
-1302
-1303
-1304
-1305
-1306
-1307
-1308
-1309
-1310
-1311
-1312
-1313
-1314
-1315
-1316
-1317
-1318
-1319
-1320
-1321
-1322
-1323
-1324
-1325
-1326
-1327
-1328
-1329
-1330
-1331
-1332
-1333
-1334
-1335
-1336
-1337
-1338
-1339
-1340
-1341
-1342
-1343
-1344
-1345
-1346
-1347
-1348
-1349
-1350
-1351
-1352
-1353
-1354
-1355
-1356
-1357
-1358
-1359
-1360
-1361
-1362
-1363
-1364
-1365
-1366
-1367
-1368
-1369
-1370
-1371
-1372
-1373
-1374
-1375
-1376
-1377
-1378
-1379
-1380
-1381
-1382
-1383
-1384
-1385
-1386
-1387
-1388
-1389
-1390
-1391
-1392
-1393
-1394
-1395
-1396
-1397
-1398
-1399
-1400
-1401
-1402
-1403
-1404
-1405
-1406
-1407
-1408
-1409
-1410
-1411
-1412
-1413
-1414
-1415
-1416
-1417
-1418
-1419
-1420
-1421
-1422
-1423
-1424
-1425
-1426
-1427
-1428
-1429
-1430
-1431
-1432
-1433
-1434
-1435
-1436
-1437
-1438
-1439
-1440
-1441
-1442
-1443
-1444
-1445
-1446
-1447
-1448
-1449
-1450
-1451
-1452
-1453
-1454
-1455
-1456
-1457
-1458
-1459
-1460
-1461
-1462
-1463
-1464
-1465
-1466
-1467
-1468
-1469
-1470
-1471
-1472
-1473
-1474
-1475
-1476
-1477
-1478
-1479
-1480
-1481
-1482
-1483
-1484
-1485
-1486
-1487
-1488
-1489
-1490
-1491
-1492
-1493
-1494
-1495
-1496
-1497
-1498
-1499
-1500
-1501
-1502
-1503
-1504
-1505
-1506
-1507
-1508
-1509
-1510
-1511
-1512
-1513
-1514
-1515
-1516
-1517
-1518
-1519
-1520
-1521
-1522
-1523
-1524
-1525
-1526
-1527
-1528
-1529
-1530
-1531
-1532
-1533
-1534
-1535
-1536
-1537
-1538
-1539
-1540
-1541
-1542
-1543
-1544
-1545
-1546
-1547
-1548
-1549
-1550
-1551
-1552
-1553
-1554
-1555
-1556
-1557
-1558
-1559
-1560
-1561
-1562
-1563
-1564
-1565
-1566
-1567
-1568
-1569
-1570
-1571
-1572
-1573
-1574
-1575
-1576
-1577
-1578
-1579
-1580
-1581
-1582
-1583
-1584
-1585
-1586
-1587
-1588
-1589
-1590
-1591
-1592
-1593
-1594
-1595
-1596
-1597
-1598
-1599
-1600
-1601
-1602
-1603
-1604
-1605
-1606
-1607
-1608
-1609
-1610
-1611
-1612
-1613
-1614
-1615
-1616
-1617
-1618
-1619
-1620
-1621
-1622
-1623
-1624
-1625
-1626
-1627
-1628
-1629
-1630
-1631
-1632
-1633
-1634
-1635
-1636
-1637
-1638
-1639
-1640
-1641
-1642
-1643
-1644
-1645
-1646
-1647
-1648
-1649
-1650
-1651
-1652
-1653
-1654
-1655
-1656
-1657
-1658
-1659
-1660
-1661
-1662
-1663
-1664
-1665
-1666
-1667
-1668
-1669
-1670
-1671
-1672
-1673
-1674
-1675
-1676
-1677
-1678
-1679
-1680
-1681
-1682
-1683
-1684
-1685
-1686
-1687
-1688
-1689
-1690
-1691
-1692
-1693
-1694
-1695
-1696
-1697
-1698
-1699
-1700
-1701
-1702
-1703
-1704
-1705
-1706
-1707
-1708
-1709
-1710
-1711
-1712
-1713
-1714
-1715
-1716
-1717
-1718
-1719
-1720
-1721
-1722
-1723
-1724
-1725
-1726
-1727
-1728
-1729
-1730
-1731
-1732
-1733
-1734
-1735
-1736
-1737
-1738
-1739
-1740
-1741
-1742
-1743
-1744
-1745
-1746
-1747
-1748
-1749
-1750
-1751
-1752
-1753
-1754
-1755
-1756
-1757
-1758
-1759
-1760
-1761
-1762
-1763
-1764
-1765
-1766
-1767
-1768
-1769
-1770
-1771
-1772
-1773
-1774
-1775
-1776
-1777
-1778
-1779
-1780
-1781
-1782
-1783
-1784
-1785
-1786
-1787
-1788
-1789
-1790
-1791
-1792
-1793
-1794
-1795
-1796
-1797
-1798
-1799
-1800
-1801
-1802
-1803
-1804
-1805
-1806
-1807
-1808
-1809
-1810
-1811
-1812
-1813
-1814
-1815
-1816
-1817
-1818
-1819
-1820
-1821
-1822
-1823
-1824
-1825
-1826
-1827
-1828
-1829
-1830
-1831
-1832
-1833
-1834
-1835
-1836
-1837
-1838
-1839
-1840
-1841
-1842
-1843
-1844
-1845
-1846
-1847
-1848
-1849
-1850
-1851
-1852
-1853
-1854
-1855
-1856
-1857
-1858
-1859
-1860
-1861
-1862
-1863
-1864
-1865
-1866
-1867
-1868
-1869
-1870
-1871
-1872
-1873
-1874
-1875
-1876
-1877
-1878
-1879
-1880
-1881
-1882
-1883
-1884
-1885
-1886
-1887
-1888
-1889
-1890
-1891
-1892
-1893
-1894
-1895
-1896
-1897
-1898
-1899
-1900
-1901
-1902
-1903
-1904
-1905
-1906
-1907
-1908
-1909
-1910
-1911
-1912
-1913
-1914
-1915
-1916
-1917
-1918
-1919
-1920
-1921
-1922
-1923
-1924
-1925
-1926
-1927
-1928
-1929
-1930
-1931
-1932
-1933
-1934
-1935
-1936
-1937
-1938
-1939
-1940
-1941
-1942
-1943
-1944
-1945
-1946
-1947
-1948
-1949
-1950
-1951
-1952
-1953
-1954
-1955
-1956
-1957
-1958
-1959
-1960
-1961
-1962
-1963
-1964
-1965
-1966
-1967
-1968
-1969
-1970
-1971
-1972
-1973
-1974
-1975
-1976
-1977
-1978
-1979
-1980
-1981
-1982
-1983
-1984
-1985
-1986
-1987
-1988
-1989
-1990
-1991
-1992
-1993
-1994
-1995
-1996
-1997
-1998
-1999
-2000
-2001
-2002
-2003
-2004
-2005
-2006
-2007
-2008
-2009
-2010
-2011
-2012
-2013
-2014
-2015
-2016
-2017
-2018
-2019
-2020
-2021
-2022
-2023
-2024
-2025
-2026
-2027
-2028
-2029
-2030
-2031
-2032
-2033
-2034
-2035
-2036
-2037
-2038
-2039
-2040
-2041
-2042
-2043
-2044
-2045
-2046
-2047
-2048
-2049
-2050
-2051
-2052
-2053
-2054
-2055
-2056
-2057
-2058
-2059
-2060
-2061
-2062
-2063
-2064
-2065
-2066
-2067
-2068
-2069
-2070
-2071
-2072
-2073
-2074
-2075
-2076
-2077
-2078
-2079
-2080
-2081
-2082
-2083
-2084
-2085
-2086
-2087
-2088
-2089
-2090
-2091
-2092
-2093
-2094
-2095
-2096
-2097
-2098
-2099
-2100
-2101
-2102
-2103
-2104
-2105
-2106
-2107
-2108
-2109
-2110
-2111
-2112
-2113
-2114
-2115
-2116
-2117
-2118
-2119
-2120
-2121
-2122
-2123
-2124
-2125
-2126
-2127
-2128
-2129
-2130
-2131
-2132
-2133
-2134
-2135
-2136
-2137
-2138
-2139
-2140
-2141
-2142
-2143
-2144
-2145
-2146
-2147
-2148
-2149
-2150
-2151
-2152
-2153
-2154
-2155
-2156
-2157
-2158
-2159
-2160
-2161
-2162
-2163
-2164
-2165
-2166
-2167
-2168
-2169
-2170
-2171
-2172
-2173
-2174
-2175
-2176
-2177
-2178
-2179
-2180
-2181
-2182
-2183
-2184
-2185
-2186
-2187
-2188
-2189
-2190
-2191
-2192
-2193
-2194
-2195
-2196
-2197
-2198
-2199
-2200
-2201
-2202
-2203
-2204
-2205
-2206
-2207
-2208
-2209
-2210
-2211
-2212
-2213
-2214
-2215
-2216
-2217
-2218
-2219
-2220
-2221
-2222
-2223
-2224
-2225
-2226
-2227
-2228
-2229
-2230
-2231
-2232
-2233
-2234
-2235
-2236
-2237
-2238
-2239
-2240
-2241
-2242
-2243
-2244
-2245
-2246
-2247
-2248
-2249
-2250
-2251
-2252
-2253
-2254
-2255
-2256
-2257
-2258
-2259
-2260
-2261
-2262
-2263
-2264
-2265
-2266
-2267
-2268
-2269
-2270
-2271
-2272
-2273
-2274
-2275
-2276
-2277
-2278
-2279
-2280
-2281
-2282
-2283
-2284
-2285
-2286
-2287
-2288
-2289
-2290
-2291
-2292
-2293
-2294
-2295
-2296
-2297
-2298
-2299
-2300
-2301
-2302
-2303
-2304
-2305
-2306
-2307
-2308
-2309
-2310
-2311
-2312
-2313
-2314
-2315
-2316
-2317
-2318
-2319
-2320
-2321
-2322
-2323
-2324
-2325
-2326
-2327
-2328
-2329
-2330
-2331
-2332
-2333
-2334
-2335
-2336
-2337
-2338
-2339
-2340
-2341
-2342
-2343
-2344
-2345
-2346
-2347
-2348
-2349
-2350
-2351
-2352
-2353
-2354
-2355
-2356
-2357
-2358
-2359
-2360
-2361
-2362
-2363
-2364
-2365
-2366
-2367
-2368
-2369
-2370
-2371
-2372
-2373
-2374
-2375
-2376
-2377
-2378
-2379
-2380
-2381
-2382
-2383
-2384
-2385
-2386
-2387
-2388
-2389
-2390
-2391
-2392
-2393
-2394
-2395
-2396
-2397
-2398
-2399
-2400
-2401
-2402
-2403
-2404
-2405
-2406
-2407
-2408
-2409
-2410
-2411
-2412
-2413
-2414
-2415
-2416
-2417
-2418
-2419
-2420
-2421
-2422
-2423
-2424
-2425
-2426
-2427
-2428
-2429
-2430
-2431
-2432
-2433
-2434
-2435
-2436
-2437
-2438
-2439
-2440
-2441
-2442
-2443
-2444
-2445
-2446
-2447
-2448
-2449
-2450
-2451
-2452
-2453
-2454
-2455
-2456
-2457
-2458
-2459
-2460
-2461
-2462
-2463
-2464
-2465
-2466
-2467
-2468
-2469
-2470
-2471
-2472
-2473
-2474
-2475
-2476
-2477
-2478
-2479
-2480
-2481
-2482
-2483
-2484
-2485
-2486
-2487
-2488
-2489
-2490
-2491
-2492
-2493
-2494
-2495
-2496
-2497
-2498
-2499
-2500
-2501
-2502
-2503
-2504
-2505
-2506
-2507
-2508
-2509
-2510
-2511
-2512
-2513
-2514
-2515
-2516
-2517
-2518
-2519
-2520
-2521
-2522
-2523
-2524
-2525
-2526
-2527
-2528
-2529
-2530
-2531
-2532
-2533
-2534
-2535
-2536
-2537
-2538
-2539
-2540
-2541
-2542
-2543
-2544
-2545
-2546
-2547
-2548
-2549
-2550
-2551
-2552
-2553
-2554
-2555
-2556
-2557
-2558
-2559
-2560
-2561
-2562
-2563
-2564
-2565
-2566
-2567
-2568
-2569
-2570
-2571
-2572
-2573
-2574
-2575
-2576
-2577
-2578
-2579
-2580
-2581
-2582
-2583
-2584
-2585
-2586
-2587
-2588
-2589
-2590
-2591
-2592
-2593
-2594
-2595
-2596
-2597
-2598
-2599
-2600
-2601
-2602
-2603
-2604
-2605
-2606
-2607
-2608
-2609
-2610
-2611
-2612
-2613
-2614
-2615
-2616
-2617
-2618
-2619
-2620
-2621
-2622
-2623
-2624
-2625
-2626
-2627
-2628
-2629
-2630
-2631
-2632
-2633
-2634
-2635
-2636
-2637
-2638
-2639
-2640
-2641
-2642
-2643
-2644
-2645
-2646
-2647
-2648
-2649
-2650
-2651
-2652
-2653
-2654
-2655
-2656
-2657
-2658
-2659
-2660
-2661
-2662
-2663
-2664
-2665
-2666
-2667
-2668
-2669
-2670
-2671
-2672
-2673
-2674
-2675
-2676
-2677
-2678
-2679
-2680
-2681
-2682
-2683
-2684
-2685
-2686
-2687
-2688
-2689
-2690
-2691
-2692
-2693
-2694
-2695
-2696
-2697
-2698
-2699
-2700
-2701
-2702
-2703
-2704
-2705
-2706
-2707
-2708
-2709
-2710
-2711
-2712
-2713
-2714
-2715
-2716
-2717
-2718
-2719
-2720
-2721
-2722
-2723
-2724
-2725
-2726
-2727
-2728
-2729
-2730
-2731
-2732
-2733
-2734
-2735
-2736
-2737
-2738
-2739
-2740
-2741
-2742
-2743
-2744
-2745
-2746
-2747
-2748
-2749
-2750
-2751
-2752
-2753
-2754
-2755
-2756
-2757
-2758
-2759
-2760
-2761
-2762
-2763
-2764
-2765
-2766
-2767
-2768
-2769
-2770
-2771
-2772
-2773
-2774
-2775
-2776
-2777
-2778
-2779
-2780
-2781
-2782
-2783
-2784
-2785
-2786
-2787
-2788
-2789
-2790
-2791
-2792
-2793
-2794
-2795
-2796
-2797
-2798
-2799
-2800
-2801
-2802
-2803
-2804
-2805
-2806
-2807
-2808
-2809
-2810
-2811
-2812
-2813
-2814
-2815
-2816
-2817
-2818
-2819
-2820
-2821
-2822
-2823
-2824
-2825
-2826
-2827
-2828
-2829
-2830
-2831
-2832
-2833
-2834
-2835
-2836
-2837
-2838
-2839
-2840
-2841
-2842
-2843
-2844
-2845
-2846
-2847
-2848
-2849
-2850
-2851
-2852
-2853
-2854
-2855
-2856
-2857
-2858
-2859
-2860
-2861
-2862
-2863
-2864
-2865
-2866
-2867
-2868
-2869
-2870
-2871
-2872
-2873
-2874
-2875
-2876
-2877
-2878
-2879
-2880
-2881
-2882
-2883
-2884
-2885
-2886
-2887
-2888
-2889
-2890
-2891
-2892
-2893
-2894
-2895
-2896
-2897
-2898
-2899
-2900
-2901
-2902
-2903
-2904
-2905
-2906
-2907
-2908
-2909
-2910
-2911
-2912
-2913
-2914
-2915
-2916
-2917
-2918
-2919
-2920
-2921
-2922
-2923
-2924
-2925
-2926
-2927
-2928
-2929
-2930
-2931
-2932
-2933
-2934
-2935
-2936
-2937
-2938
-2939
-2940
-2941
-2942
-2943
-2944
-2945
-2946
-2947
-2948
-2949
-2950
-2951
-2952
-2953
-2954
-2955
-2956
-2957
-2958
-2959
-2960
-2961
-2962
-2963
-2964
-2965
-2966
-2967
-2968
-2969
-2970
-2971
-2972
-2973
-2974
-2975
-2976
-2977
-2978
-2979
-2980
-2981
-2982
-2983
-2984
-2985
-2986
-2987
-2988
-2989
-2990
-2991
-2992
-2993
-2994
-2995
-2996
-2997
-2998
-2999
-3000
-3001
-3002
-3003
-3004
-3005
-3006
-3007
-3008
-3009
-3010
-3011
-3012
-3013
-3014
-3015
-3016
-3017
-3018
-3019
-3020
-3021
-3022
-3023
-3024
-3025
-3026
-3027
-3028
-3029
-3030
-3031
-3032
-3033
-3034
-3035
-3036
-3037
-3038
-3039
-3040
-3041
-3042
-3043
-3044
-3045
-3046
-3047
-3048
-3049
-3050
-3051
-3052
-3053
-3054
-3055
-3056
-3057
-3058
-3059
-3060
-3061
-3062
-3063
-3064
-3065
-3066
-3067
-3068
-3069
-3070
-3071
-3072
-3073
-3074
-3075
-3076
-3077
-3078
-3079
-3080
-3081
-3082
-3083
-3084
-3085
-3086
-3087
-3088
-3089
-3090
-3091
-3092
-3093
-3094
-3095
-3096
-3097
-3098
-3099
-3100
-3101
-3102
-3103
-3104
-3105
-3106
-3107
-3108
-3109
-3110
-3111
-3112
-3113
-3114
-3115
-3116
-3117
-3118
-3119
-3120
-3121
-3122
-3123
-3124
-3125
-3126
-3127
-3128
-3129
-3130
-3131
-3132
-3133
-3134
-3135
-3136
-3137
-3138
-3139
-3140
-3141
-3142
-3143
-3144
-3145
-3146
-3147
-3148
-3149
-3150
-3151
-3152
-3153
-3154
-3155
-3156
-3157
-3158
-3159
-3160
-3161
-3162
-3163
-3164
-3165
-3166
-3167
-3168
-3169
-3170
-3171
-3172
-3173
-3174
-3175
-3176
-3177
-3178
-3179
-3180
-3181
-3182
-3183
-3184
-3185
-3186
-3187
-3188
-3189
-3190
-3191
-3192
-3193
-3194
-3195
-3196
-3197
-3198
-3199
-3200
-3201
-3202
-3203
-3204
-3205
-3206
-3207
-3208
-3209
-3210
-3211
-3212
-3213
-3214
-3215
-3216
-3217
-3218
-3219
-3220
-3221
-3222
-3223
-3224
-3225
-3226
-3227
-3228
-3229
-3230
-3231
-3232
-3233
-3234
-3235
-3236
-3237
-3238
-3239
-3240
-3241
-3242
-3243
-3244
-3245
-3246
-3247
-3248
-3249
-3250
-3251
-3252
-3253
-3254
-3255
-3256
-3257
-3258
-3259
-3260
-3261
-3262
-3263
-3264
-3265
-3266
-3267
-3268
-3269
-3270
-3271
-3272
-3273
-3274
-3275
-3276
-3277
-3278
-3279
-3280
-3281
-3282
-3283
-3284
-3285
-3286
-3287
-3288
-3289
-3290
-3291
-3292
-3293
-3294
-3295
-3296
-3297
-3298
-3299
-3300
-3301
-3302
-3303
-3304
-3305
-3306
-3307
-3308
-3309
-3310
-3311
-3312
-3313
-3314
-3315
-3316
-3317
-3318
-3319
-3320
-3321
-3322
-3323
-3324
-3325
-3326
-3327
-3328
-3329
-3330
-3331
-3332
-3333
-3334
-3335
-3336
-3337
-3338
-3339
-3340
-3341
-3342
-3343
-3344
-3345
-3346
-3347
-3348
-3349
-3350
-3351
-3352
-3353
-3354
-3355
-3356
-3357
-3358
-3359
-3360
-3361
-3362
-3363
-3364
-3365
-3366
-3367
-3368
-3369
-3370
-3371
-3372
-3373
-3374
-3375
-3376
-3377
-3378
-3379
-3380
-3381
-3382
-3383
-3384
-3385
-3386
-3387
-3388
-3389
-3390
-3391
-3392
-3393
-3394
-3395
-3396
-3397
-3398
-3399
-3400
-3401
-3402
-3403
-3404
-3405
-3406
-3407
-3408
-3409
-3410
-3411
-3412
-3413
-3414
-3415
-3416
-3417
-3418
-3419
-3420
-3421
-3422
-3423
-3424
-3425
-3426
-3427
-3428
-3429
-3430
-3431
-3432
-3433
-3434
-3435
-3436
-3437
-3438
-3439
-3440
-3441
-3442
-3443
-3444
-3445
-3446
-3447
-3448
-3449
-3450
-3451
-3452
-3453
-3454
-3455
-3456
-3457
-3458
-3459
-3460
-3461
-3462
-3463
-3464
-3465
-3466
-3467
-3468
-3469
-3470
-3471
-3472
-3473
-3474
-3475
-3476
-3477
-3478
-3479
-3480
-3481
-3482
-3483
-3484
-3485
-3486
-3487
-3488
-3489
-3490
-3491
-3492
-3493
-3494
-3495
-3496
-3497
-3498
-3499
-3500
-3501
-3502
-3503
-3504
-3505
-3506
-3507
-3508
-3509
-3510
-3511
-3512
-3513
-3514
-3515
-3516
-3517
-3518
-3519
-3520
-3521
-3522
-3523
-3524
-3525
-3526
-3527
-3528
-3529
-3530
-3531
-3532
-3533
-3534
-3535
-3536
-3537
-3538
-3539
-3540
-3541
-3542
-3543
-3544
-3545
-3546
-3547
-3548
-3549
-3550
-3551
-3552
-3553
-3554
-3555
-3556
-3557
-3558
-3559
-3560
-3561
-3562
-3563
-3564
-3565
-3566
-3567
-3568
-3569
-3570
-3571
-3572
-3573
-3574
-3575
-3576
-3577
-3578
-3579
-3580
-3581
-3582
-3583
-3584
-3585
-3586
-3587
-3588
-3589
-3590
-3591
-3592
-3593
-3594
-3595
-3596
-3597
-3598
-3599
-3600
-3601
-3602
-3603
-3604
-3605
-3606
-3607
-3608
-3609
-3610
-3611
-3612
-3613
-3614
-3615
-3616
-3617
-3618
-3619
-3620
-3621
-3622
-3623
-3624
-3625
-3626
-3627
-3628
-3629
-3630
-3631
-3632
-3633
-3634
-3635
-3636
-3637
-3638
-3639
-3640
-3641
-3642
-3643
-3644
-3645
-3646
-3647
-3648
-3649
-3650
-3651
-3652
-3653
-3654
-3655
-3656
-3657
-3658
-3659
-3660
-3661
-3662
-3663
-3664
-3665
-3666
-3667
-3668
-3669
-3670
-3671
-3672
-3673
-3674
-3675
-3676
-3677
-3678
-3679
-3680
-3681
-3682
-3683
-3684
-3685
-3686
-3687
-3688
-3689
-3690
-3691
-3692
-3693
-3694
-3695
-3696
-3697
-3698
-3699
-3700
-3701
-3702
-3703
-3704
-3705
-3706
-3707
-3708
-3709
-3710
-3711
-3712
-3713
-3714
-3715
-3716
-3717
-3718
-3719
-3720
-3721
-3722
-3723
-3724
-3725
-3726
-3727
-3728
-3729
-3730
-3731
-3732
-3733
-3734
-3735
-3736
-3737
-3738
-3739
-3740
-3741
-3742
-3743
-3744
-3745
-3746
-3747
-3748
-3749
-3750
-3751
-3752
-3753
-3754
-3755
-3756
-3757
-3758
-3759
-3760
-3761
-3762
-3763
-3764
-3765
-3766
-3767
-3768
-3769
-3770
-3771
-3772
-3773
-3774
-3775
-3776
-3777
-3778
-3779
-3780
-3781
-3782
-3783
-3784
-3785
-3786
-3787
-3788
-3789
-3790
-3791
-3792
-3793
-3794
-3795
-3796
-3797
-3798
-3799
-3800
-3801
-3802
-3803
-3804
-3805
-3806
-3807
-3808
-3809
-3810
-3811
-3812
-3813
-3814
-3815
-3816
-3817
-3818
-3819
-3820
-3821
-3822
-3823
-3824
-3825
-3826
-3827
-3828
-3829
-3830
-3831
-3832
-3833
-3834
-3835
-3836
-3837
-3838
-3839
-3840
-3841
-3842
-3843
-3844
-3845
-3846
-3847
-3848
-3849
-3850
-3851
-3852
-3853
-3854
-3855
-3856
-3857
-3858
-3859
-3860
-3861
-3862
-3863
-3864
-3865
-3866
-3867
-3868
-3869
-3870
-3871
-3872
-3873
-3874
-3875
-3876
-3877
-3878
-3879
-3880
-3881
-3882
-3883
-3884
-3885
-3886
-3887
-3888
-3889
-3890
-3891
-3892
-3893
-3894
-3895
-3896
-3897
-3898
-3899
-3900
-3901
-3902
-3903
-3904
-3905
-3906
-3907
-3908
-3909
-3910
-3911
-3912
-3913
-3914
-3915
-3916
-3917
-3918
-3919
-3920
-3921
-3922
-3923
-3924
-3925
-3926
-3927
-3928
-3929
-3930
-3931
-3932
-3933
-3934
-3935
-3936
-3937
-3938
-3939
-3940
-3941
-3942
-3943
-3944
-3945
-3946
-3947
-3948
-3949
-3950
-3951
-3952
-3953
-3954
-3955
-3956
-3957
-3958
-3959
-3960
-3961
-3962
-3963
-3964
-3965
-3966
-3967
-3968
-3969
-3970
-3971
-3972
-3973
-3974
-3975
-3976
-3977
-3978
-3979
-3980
-3981
-3982
-3983
-3984
-3985
-3986
-3987
-3988
-3989
-3990
-3991
-3992
-3993
-3994
-3995
-3996
-3997
-3998
-3999
-4000
-4001
-4002
-4003
-4004
-4005
-4006
-4007
-4008
-4009
-4010
-4011
-4012
-4013
-4014
-4015
-4016
-4017
-4018
-4019
-4020
-4021
-4022
-4023
-4024
-4025
-4026
-4027
-4028
-4029
-4030
-4031
-4032
-4033
-4034
-4035
-4036
-4037
-4038
-4039
-4040
-4041
-4042
-4043
-4044
-4045
-4046
-4047
-4048
-4049
-4050
-4051
-4052
-4053
-4054
-4055
-4056
-4057
-4058
-4059
-4060
-4061
-4062
-4063
-4064
-4065
-4066
-4067
-4068
-4069
-4070
-4071
-4072
-4073
-4074
-4075
-4076
-4077
-4078
-4079
-4080
-4081
-4082
-4083
-4084
-4085
-4086
-4087
-4088
-4089
-4090
-4091
-4092
-4093
-4094
-4095
-4096
-4097
-4098
-4099
-4100
-4101
-4102
-4103
-4104
-4105
-4106
-4107
-4108
-4109
-4110
-4111
-4112
-4113
-4114
-4115
-4116
-4117
-4118
-4119
-4120
-4121
-4122
-4123
-4124
-4125
-4126
-4127
-4128
-4129
-4130
-4131
-4132
-4133
-4134
-4135
-4136
-4137
-4138
-4139
-4140
-4141
-4142
-4143
-4144
-4145
-4146
-4147
-4148
-4149
-4150
-4151
-4152
-4153
-4154
-4155
-4156
-4157
-4158
-4159
-4160
-4161
-4162
-4163
-4164
-4165
-4166
-4167
-4168
-4169
-4170
-4171
-4172
-4173
-4174
-4175
-4176
-4177
-4178
-4179
-4180
-4181
-4182
-4183
-4184
-4185
-4186
-4187
-4188
-4189
-4190
-4191
-4192
-4193
-4194
-4195
-4196
-4197
-4198
-4199
-4200
-4201
-4202
-4203
-4204
-4205
-4206
-4207
-4208
-4209
-4210
-4211
-4212
-4213
-4214
-4215
-4216
-4217
-4218
-4219
-4220
-4221
-4222
-4223
-4224
-4225
-4226
-4227
-4228
-4229
-4230
-4231
-4232
-4233
-4234
-4235
-4236
-4237
-4238
-4239
-4240
-4241
-4242
-4243
-4244
-4245
-4246
-4247
-4248
-4249
-4250
-4251
-4252
-4253
-4254
-4255
-4256
-4257
-4258
-4259
-4260
-4261
-4262
-4263
-4264
-4265
-4266
-4267
-4268
-4269
-4270
-4271
-4272
-4273
-4274
-4275
-4276
-4277
-4278
-4279
-4280
-4281
-4282
-4283
-4284
-4285
-4286
-4287
-4288
-4289
-4290
-4291
-4292
-4293
-4294
-4295
-4296
-4297
-4298
-4299
-4300
-4301
-4302
-4303
-4304
-4305
-4306
-4307
-4308
-4309
-4310
-4311
-4312
-4313
-4314
-4315
-4316
-4317
-4318
-4319
-4320
-4321
-4322
-4323
-4324
-4325
-4326
-4327
-4328
-4329
-4330
-4331
-4332
-4333
-4334
-4335
-4336
-4337
-4338
-4339
-4340
-4341
-4342
-4343
-4344
-4345
-4346
-4347
-4348
-4349
-4350
-4351
-4352
-4353
-4354
-4355
-4356
-4357
-4358
-4359
-4360
-4361
-4362
-4363
-4364
-4365
-4366
-4367
-4368
-4369
-4370
-4371
-4372
-4373
-4374
-4375
-4376
-4377
-4378
-4379
-4380
-4381
-4382
-4383
-4384
-4385
-4386
-4387
-4388
-4389
-4390
-4391
-4392
-4393
-4394
-4395
-4396
-4397
-4398
-4399
-4400
-4401
-4402
-4403
-4404
-4405
-4406
-4407
-4408
-4409
-4410
-4411
-4412
-4413
-4414
-4415
-4416
-4417
-4418
-4419
-4420
-4421
-4422
-4423
-4424
-4425
-4426
-4427
-4428
-4429
-4430
-4431
-4432
-4433
-4434
-4435
-4436
-4437
-4438
-4439
-4440
-4441
-4442
-4443
-4444
-4445
-4446
-4447
-4448
-4449
-4450
-4451
-4452
-4453
-4454
-4455
-4456
-4457
-4458
-4459
-4460
-4461
-4462
-4463
-4464
-4465
-4466
-4467
-4468
-4469
-4470
-4471
-4472
-4473
-4474
-4475
-4476
-4477
-4478
-4479
-4480
-4481
-4482
-4483
-4484
-4485
-4486
-4487
-4488
-4489
-4490
-4491
-4492
-4493
-4494
-4495
-4496
-4497
-4498
-4499
-4500
-4501
-4502
-4503
-4504
-4505
-4506
-4507
-4508
-4509
-4510
-4511
-4512
-4513
-4514
-4515
-4516
-4517
-4518
-4519
-4520
-4521
-4522
-4523
-4524
-4525
-4526
-4527
-4528
-4529
-4530
-4531
-4532
-4533
-4534
-4535
-4536
-4537
-4538
-4539
-4540
-4541
-4542
-4543
-4544
-4545
-4546
-4547
-4548
-4549
-4550
-4551
-4552
-4553
-4554
-4555
-4556
-4557
-4558
-4559
-4560
-4561
-4562
-4563
-4564
-4565
-4566
-4567
-4568
-4569
-4570
-4571
-4572
-4573
-4574
-4575
-4576
-4577
-4578
-4579
-4580
-4581
-4582
-4583
-4584
-4585
-4586
-4587
-4588
-4589
-4590
-4591
-4592
-4593
-4594
-4595
-4596
-4597
-4598
-4599
-4600
-4601
-4602
-4603
-4604
-4605
-4606
-4607
-4608
-4609
-4610
-4611
-4612
-4613
-4614
-4615
-4616
-4617
-4618
-4619
-4620
-4621
-4622
-4623
-4624
-4625
-4626
-4627
-4628
-4629
-4630
-4631
-4632
-4633
-4634
-4635
-4636
-4637
-4638
-4639
-4640
-4641
-4642
-4643
-4644
-4645
-4646
-4647
-4648
-4649
-4650
-4651
-4652
-4653
-4654
-4655
-4656
-4657
-4658
-4659
-4660
-4661
-4662
-4663
-4664
-4665
-4666
-4667
-4668
-4669
-4670
-4671
-4672
-4673
-4674
-4675
-4676
-4677
-4678
-4679
-4680
-4681
-4682
-4683
-4684
-4685
-4686
-4687
-4688
-4689
-4690
-4691
-4692
-4693
-4694
-4695
-4696
-4697
-4698
-4699
-4700
-4701
-4702
-4703
-4704
-4705
-4706
-4707
-4708
-4709
-4710
-4711
-4712
-4713
-4714
-4715
-4716
-4717
-4718
-4719
-4720
-4721
-4722
-4723
-4724
-4725
-4726
-4727
-4728
-4729
-4730
-4731
-4732
-4733
-4734
-4735
-4736
-4737
-4738
-4739
-4740
-4741
-4742
-4743
-4744
-4745
-4746
-4747
-4748
-4749
-4750
-4751
-4752
-4753
-4754
-4755
-4756
-4757
-4758
-4759
-4760
-4761
-4762
-4763
-4764
-4765
-4766
-4767
-4768
-4769
-4770
-4771
-4772
-4773
-4774
-4775
-4776
-4777
-4778
-4779
-4780
-4781
-4782
-4783
-4784
-4785
-4786
-4787
-4788
-4789
-4790
-4791
-4792
-4793
-4794
-4795
-4796
-4797
-4798
-4799
-4800
-4801
-4802
-4803
-4804
-4805
-4806
-4807
-4808
-4809
-4810
-4811
-4812
-4813
-4814
-4815
-4816
-4817
-4818
-4819
-4820
-4821
-4822
-4823
-4824
-4825
-4826
-4827
-4828
-4829
-4830
-4831
-4832
-4833
-4834
-4835
-4836
-4837
-4838
-4839
-4840
-4841
-4842
-4843
-4844
-4845
-4846
-4847
-4848
-4849
-4850
-4851
-4852
-4853
-4854
-4855
-4856
-4857
-4858
-4859
-4860
-4861
-4862
-4863
-4864
-4865
-4866
-4867
-4868
-4869
-4870
-4871
-4872
-4873
-4874
-4875
-4876
-4877
-4878
-4879
-4880
-4881
-4882
-4883
-4884
-4885
-4886
-4887
-4888
-4889
-4890
-4891
-4892
-4893
-4894
-4895
-4896
-4897
-4898
-4899
-4900
-4901
-4902
-4903
-4904
-4905
-4906
-4907
-4908
-4909
-4910
-4911
-4912
-4913
-4914
-4915
-4916
-4917
-4918
-4919
-4920
-4921
-4922
-4923
-4924
-4925
-4926
-4927
-4928
-4929
-4930
-4931
-4932
-4933
-4934
-4935
-4936
-4937
-4938
-4939
-4940
-4941
-4942
-4943
-4944
-4945
-4946
-4947
-4948
-4949
-4950
-4951
-4952
-4953
-4954
-4955
-4956
-4957
-4958
-4959
-4960
-4961
-4962
-4963
-4964
-4965
-4966
-4967
-4968
-4969
-4970
-4971
-4972
-4973
-4974
-4975
-4976
-4977
-4978
-4979
-4980
-4981
-4982
-4983
-4984
-4985
-4986
-4987
-4988
-4989
-4990
-4991
-4992
-4993
-4994
-4995
-4996
-4997
-4998
-4999
-Stopping
Index: c/tests/concurrent/waitfor/.expect/dtor.txt
===================================================================
--- src/tests/concurrent/waitfor/.expect/dtor.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-Starting
-Stopping
Index: c/tests/concurrent/waitfor/.expect/else.txt
===================================================================
--- src/tests/concurrent/waitfor/.expect/else.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,9 +1,0 @@
-Starting
-Step 0
-else called
-Step 1
-else called
-Step 2
-else called
-Step 3
-Done
Index: c/tests/concurrent/waitfor/.expect/recurse.txt
===================================================================
--- src/tests/concurrent/waitfor/.expect/recurse.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,5002 +1,0 @@
-Starting
-0 1st 2nd 3rd Last 3rd 2nd 1st
-1 1st 2nd 3rd Last 3rd 2nd 1st
-2 1st 2nd 3rd Last 3rd 2nd 1st
-3 1st 2nd 3rd Last 3rd 2nd 1st
-4 1st 2nd 3rd Last 3rd 2nd 1st
-5 1st 2nd 3rd Last 3rd 2nd 1st
-6 1st 2nd 3rd Last 3rd 2nd 1st
-7 1st 2nd 3rd Last 3rd 2nd 1st
-8 1st 2nd 3rd Last 3rd 2nd 1st
-9 1st 2nd 3rd Last 3rd 2nd 1st
-10 1st 2nd 3rd Last 3rd 2nd 1st
-11 1st 2nd 3rd Last 3rd 2nd 1st
-12 1st 2nd 3rd Last 3rd 2nd 1st
-13 1st 2nd 3rd Last 3rd 2nd 1st
-14 1st 2nd 3rd Last 3rd 2nd 1st
-15 1st 2nd 3rd Last 3rd 2nd 1st
-16 1st 2nd 3rd Last 3rd 2nd 1st
-17 1st 2nd 3rd Last 3rd 2nd 1st
-18 1st 2nd 3rd Last 3rd 2nd 1st
-19 1st 2nd 3rd Last 3rd 2nd 1st
-20 1st 2nd 3rd Last 3rd 2nd 1st
-21 1st 2nd 3rd Last 3rd 2nd 1st
-22 1st 2nd 3rd Last 3rd 2nd 1st
-23 1st 2nd 3rd Last 3rd 2nd 1st
-24 1st 2nd 3rd Last 3rd 2nd 1st
-25 1st 2nd 3rd Last 3rd 2nd 1st
-26 1st 2nd 3rd Last 3rd 2nd 1st
-27 1st 2nd 3rd Last 3rd 2nd 1st
-28 1st 2nd 3rd Last 3rd 2nd 1st
-29 1st 2nd 3rd Last 3rd 2nd 1st
-30 1st 2nd 3rd Last 3rd 2nd 1st
-31 1st 2nd 3rd Last 3rd 2nd 1st
-32 1st 2nd 3rd Last 3rd 2nd 1st
-33 1st 2nd 3rd Last 3rd 2nd 1st
-34 1st 2nd 3rd Last 3rd 2nd 1st
-35 1st 2nd 3rd Last 3rd 2nd 1st
-36 1st 2nd 3rd Last 3rd 2nd 1st
-37 1st 2nd 3rd Last 3rd 2nd 1st
-38 1st 2nd 3rd Last 3rd 2nd 1st
-39 1st 2nd 3rd Last 3rd 2nd 1st
-40 1st 2nd 3rd Last 3rd 2nd 1st
-41 1st 2nd 3rd Last 3rd 2nd 1st
-42 1st 2nd 3rd Last 3rd 2nd 1st
-43 1st 2nd 3rd Last 3rd 2nd 1st
-44 1st 2nd 3rd Last 3rd 2nd 1st
-45 1st 2nd 3rd Last 3rd 2nd 1st
-46 1st 2nd 3rd Last 3rd 2nd 1st
-47 1st 2nd 3rd Last 3rd 2nd 1st
-48 1st 2nd 3rd Last 3rd 2nd 1st
-49 1st 2nd 3rd Last 3rd 2nd 1st
-50 1st 2nd 3rd Last 3rd 2nd 1st
-51 1st 2nd 3rd Last 3rd 2nd 1st
-52 1st 2nd 3rd Last 3rd 2nd 1st
-53 1st 2nd 3rd Last 3rd 2nd 1st
-54 1st 2nd 3rd Last 3rd 2nd 1st
-55 1st 2nd 3rd Last 3rd 2nd 1st
-56 1st 2nd 3rd Last 3rd 2nd 1st
-57 1st 2nd 3rd Last 3rd 2nd 1st
-58 1st 2nd 3rd Last 3rd 2nd 1st
-59 1st 2nd 3rd Last 3rd 2nd 1st
-60 1st 2nd 3rd Last 3rd 2nd 1st
-61 1st 2nd 3rd Last 3rd 2nd 1st
-62 1st 2nd 3rd Last 3rd 2nd 1st
-63 1st 2nd 3rd Last 3rd 2nd 1st
-64 1st 2nd 3rd Last 3rd 2nd 1st
-65 1st 2nd 3rd Last 3rd 2nd 1st
-66 1st 2nd 3rd Last 3rd 2nd 1st
-67 1st 2nd 3rd Last 3rd 2nd 1st
-68 1st 2nd 3rd Last 3rd 2nd 1st
-69 1st 2nd 3rd Last 3rd 2nd 1st
-70 1st 2nd 3rd Last 3rd 2nd 1st
-71 1st 2nd 3rd Last 3rd 2nd 1st
-72 1st 2nd 3rd Last 3rd 2nd 1st
-73 1st 2nd 3rd Last 3rd 2nd 1st
-74 1st 2nd 3rd Last 3rd 2nd 1st
-75 1st 2nd 3rd Last 3rd 2nd 1st
-76 1st 2nd 3rd Last 3rd 2nd 1st
-77 1st 2nd 3rd Last 3rd 2nd 1st
-78 1st 2nd 3rd Last 3rd 2nd 1st
-79 1st 2nd 3rd Last 3rd 2nd 1st
-80 1st 2nd 3rd Last 3rd 2nd 1st
-81 1st 2nd 3rd Last 3rd 2nd 1st
-82 1st 2nd 3rd Last 3rd 2nd 1st
-83 1st 2nd 3rd Last 3rd 2nd 1st
-84 1st 2nd 3rd Last 3rd 2nd 1st
-85 1st 2nd 3rd Last 3rd 2nd 1st
-86 1st 2nd 3rd Last 3rd 2nd 1st
-87 1st 2nd 3rd Last 3rd 2nd 1st
-88 1st 2nd 3rd Last 3rd 2nd 1st
-89 1st 2nd 3rd Last 3rd 2nd 1st
-90 1st 2nd 3rd Last 3rd 2nd 1st
-91 1st 2nd 3rd Last 3rd 2nd 1st
-92 1st 2nd 3rd Last 3rd 2nd 1st
-93 1st 2nd 3rd Last 3rd 2nd 1st
-94 1st 2nd 3rd Last 3rd 2nd 1st
-95 1st 2nd 3rd Last 3rd 2nd 1st
-96 1st 2nd 3rd Last 3rd 2nd 1st
-97 1st 2nd 3rd Last 3rd 2nd 1st
-98 1st 2nd 3rd Last 3rd 2nd 1st
-99 1st 2nd 3rd Last 3rd 2nd 1st
-100 1st 2nd 3rd Last 3rd 2nd 1st
-101 1st 2nd 3rd Last 3rd 2nd 1st
-102 1st 2nd 3rd Last 3rd 2nd 1st
-103 1st 2nd 3rd Last 3rd 2nd 1st
-104 1st 2nd 3rd Last 3rd 2nd 1st
-105 1st 2nd 3rd Last 3rd 2nd 1st
-106 1st 2nd 3rd Last 3rd 2nd 1st
-107 1st 2nd 3rd Last 3rd 2nd 1st
-108 1st 2nd 3rd Last 3rd 2nd 1st
-109 1st 2nd 3rd Last 3rd 2nd 1st
-110 1st 2nd 3rd Last 3rd 2nd 1st
-111 1st 2nd 3rd Last 3rd 2nd 1st
-112 1st 2nd 3rd Last 3rd 2nd 1st
-113 1st 2nd 3rd Last 3rd 2nd 1st
-114 1st 2nd 3rd Last 3rd 2nd 1st
-115 1st 2nd 3rd Last 3rd 2nd 1st
-116 1st 2nd 3rd Last 3rd 2nd 1st
-117 1st 2nd 3rd Last 3rd 2nd 1st
-118 1st 2nd 3rd Last 3rd 2nd 1st
-119 1st 2nd 3rd Last 3rd 2nd 1st
-120 1st 2nd 3rd Last 3rd 2nd 1st
-121 1st 2nd 3rd Last 3rd 2nd 1st
-122 1st 2nd 3rd Last 3rd 2nd 1st
-123 1st 2nd 3rd Last 3rd 2nd 1st
-124 1st 2nd 3rd Last 3rd 2nd 1st
-125 1st 2nd 3rd Last 3rd 2nd 1st
-126 1st 2nd 3rd Last 3rd 2nd 1st
-127 1st 2nd 3rd Last 3rd 2nd 1st
-128 1st 2nd 3rd Last 3rd 2nd 1st
-129 1st 2nd 3rd Last 3rd 2nd 1st
-130 1st 2nd 3rd Last 3rd 2nd 1st
-131 1st 2nd 3rd Last 3rd 2nd 1st
-132 1st 2nd 3rd Last 3rd 2nd 1st
-133 1st 2nd 3rd Last 3rd 2nd 1st
-134 1st 2nd 3rd Last 3rd 2nd 1st
-135 1st 2nd 3rd Last 3rd 2nd 1st
-136 1st 2nd 3rd Last 3rd 2nd 1st
-137 1st 2nd 3rd Last 3rd 2nd 1st
-138 1st 2nd 3rd Last 3rd 2nd 1st
-139 1st 2nd 3rd Last 3rd 2nd 1st
-140 1st 2nd 3rd Last 3rd 2nd 1st
-141 1st 2nd 3rd Last 3rd 2nd 1st
-142 1st 2nd 3rd Last 3rd 2nd 1st
-143 1st 2nd 3rd Last 3rd 2nd 1st
-144 1st 2nd 3rd Last 3rd 2nd 1st
-145 1st 2nd 3rd Last 3rd 2nd 1st
-146 1st 2nd 3rd Last 3rd 2nd 1st
-147 1st 2nd 3rd Last 3rd 2nd 1st
-148 1st 2nd 3rd Last 3rd 2nd 1st
-149 1st 2nd 3rd Last 3rd 2nd 1st
-150 1st 2nd 3rd Last 3rd 2nd 1st
-151 1st 2nd 3rd Last 3rd 2nd 1st
-152 1st 2nd 3rd Last 3rd 2nd 1st
-153 1st 2nd 3rd Last 3rd 2nd 1st
-154 1st 2nd 3rd Last 3rd 2nd 1st
-155 1st 2nd 3rd Last 3rd 2nd 1st
-156 1st 2nd 3rd Last 3rd 2nd 1st
-157 1st 2nd 3rd Last 3rd 2nd 1st
-158 1st 2nd 3rd Last 3rd 2nd 1st
-159 1st 2nd 3rd Last 3rd 2nd 1st
-160 1st 2nd 3rd Last 3rd 2nd 1st
-161 1st 2nd 3rd Last 3rd 2nd 1st
-162 1st 2nd 3rd Last 3rd 2nd 1st
-163 1st 2nd 3rd Last 3rd 2nd 1st
-164 1st 2nd 3rd Last 3rd 2nd 1st
-165 1st 2nd 3rd Last 3rd 2nd 1st
-166 1st 2nd 3rd Last 3rd 2nd 1st
-167 1st 2nd 3rd Last 3rd 2nd 1st
-168 1st 2nd 3rd Last 3rd 2nd 1st
-169 1st 2nd 3rd Last 3rd 2nd 1st
-170 1st 2nd 3rd Last 3rd 2nd 1st
-171 1st 2nd 3rd Last 3rd 2nd 1st
-172 1st 2nd 3rd Last 3rd 2nd 1st
-173 1st 2nd 3rd Last 3rd 2nd 1st
-174 1st 2nd 3rd Last 3rd 2nd 1st
-175 1st 2nd 3rd Last 3rd 2nd 1st
-176 1st 2nd 3rd Last 3rd 2nd 1st
-177 1st 2nd 3rd Last 3rd 2nd 1st
-178 1st 2nd 3rd Last 3rd 2nd 1st
-179 1st 2nd 3rd Last 3rd 2nd 1st
-180 1st 2nd 3rd Last 3rd 2nd 1st
-181 1st 2nd 3rd Last 3rd 2nd 1st
-182 1st 2nd 3rd Last 3rd 2nd 1st
-183 1st 2nd 3rd Last 3rd 2nd 1st
-184 1st 2nd 3rd Last 3rd 2nd 1st
-185 1st 2nd 3rd Last 3rd 2nd 1st
-186 1st 2nd 3rd Last 3rd 2nd 1st
-187 1st 2nd 3rd Last 3rd 2nd 1st
-188 1st 2nd 3rd Last 3rd 2nd 1st
-189 1st 2nd 3rd Last 3rd 2nd 1st
-190 1st 2nd 3rd Last 3rd 2nd 1st
-191 1st 2nd 3rd Last 3rd 2nd 1st
-192 1st 2nd 3rd Last 3rd 2nd 1st
-193 1st 2nd 3rd Last 3rd 2nd 1st
-194 1st 2nd 3rd Last 3rd 2nd 1st
-195 1st 2nd 3rd Last 3rd 2nd 1st
-196 1st 2nd 3rd Last 3rd 2nd 1st
-197 1st 2nd 3rd Last 3rd 2nd 1st
-198 1st 2nd 3rd Last 3rd 2nd 1st
-199 1st 2nd 3rd Last 3rd 2nd 1st
-200 1st 2nd 3rd Last 3rd 2nd 1st
-201 1st 2nd 3rd Last 3rd 2nd 1st
-202 1st 2nd 3rd Last 3rd 2nd 1st
-203 1st 2nd 3rd Last 3rd 2nd 1st
-204 1st 2nd 3rd Last 3rd 2nd 1st
-205 1st 2nd 3rd Last 3rd 2nd 1st
-206 1st 2nd 3rd Last 3rd 2nd 1st
-207 1st 2nd 3rd Last 3rd 2nd 1st
-208 1st 2nd 3rd Last 3rd 2nd 1st
-209 1st 2nd 3rd Last 3rd 2nd 1st
-210 1st 2nd 3rd Last 3rd 2nd 1st
-211 1st 2nd 3rd Last 3rd 2nd 1st
-212 1st 2nd 3rd Last 3rd 2nd 1st
-213 1st 2nd 3rd Last 3rd 2nd 1st
-214 1st 2nd 3rd Last 3rd 2nd 1st
-215 1st 2nd 3rd Last 3rd 2nd 1st
-216 1st 2nd 3rd Last 3rd 2nd 1st
-217 1st 2nd 3rd Last 3rd 2nd 1st
-218 1st 2nd 3rd Last 3rd 2nd 1st
-219 1st 2nd 3rd Last 3rd 2nd 1st
-220 1st 2nd 3rd Last 3rd 2nd 1st
-221 1st 2nd 3rd Last 3rd 2nd 1st
-222 1st 2nd 3rd Last 3rd 2nd 1st
-223 1st 2nd 3rd Last 3rd 2nd 1st
-224 1st 2nd 3rd Last 3rd 2nd 1st
-225 1st 2nd 3rd Last 3rd 2nd 1st
-226 1st 2nd 3rd Last 3rd 2nd 1st
-227 1st 2nd 3rd Last 3rd 2nd 1st
-228 1st 2nd 3rd Last 3rd 2nd 1st
-229 1st 2nd 3rd Last 3rd 2nd 1st
-230 1st 2nd 3rd Last 3rd 2nd 1st
-231 1st 2nd 3rd Last 3rd 2nd 1st
-232 1st 2nd 3rd Last 3rd 2nd 1st
-233 1st 2nd 3rd Last 3rd 2nd 1st
-234 1st 2nd 3rd Last 3rd 2nd 1st
-235 1st 2nd 3rd Last 3rd 2nd 1st
-236 1st 2nd 3rd Last 3rd 2nd 1st
-237 1st 2nd 3rd Last 3rd 2nd 1st
-238 1st 2nd 3rd Last 3rd 2nd 1st
-239 1st 2nd 3rd Last 3rd 2nd 1st
-240 1st 2nd 3rd Last 3rd 2nd 1st
-241 1st 2nd 3rd Last 3rd 2nd 1st
-242 1st 2nd 3rd Last 3rd 2nd 1st
-243 1st 2nd 3rd Last 3rd 2nd 1st
-244 1st 2nd 3rd Last 3rd 2nd 1st
-245 1st 2nd 3rd Last 3rd 2nd 1st
-246 1st 2nd 3rd Last 3rd 2nd 1st
-247 1st 2nd 3rd Last 3rd 2nd 1st
-248 1st 2nd 3rd Last 3rd 2nd 1st
-249 1st 2nd 3rd Last 3rd 2nd 1st
-250 1st 2nd 3rd Last 3rd 2nd 1st
-251 1st 2nd 3rd Last 3rd 2nd 1st
-252 1st 2nd 3rd Last 3rd 2nd 1st
-253 1st 2nd 3rd Last 3rd 2nd 1st
-254 1st 2nd 3rd Last 3rd 2nd 1st
-255 1st 2nd 3rd Last 3rd 2nd 1st
-256 1st 2nd 3rd Last 3rd 2nd 1st
-257 1st 2nd 3rd Last 3rd 2nd 1st
-258 1st 2nd 3rd Last 3rd 2nd 1st
-259 1st 2nd 3rd Last 3rd 2nd 1st
-260 1st 2nd 3rd Last 3rd 2nd 1st
-261 1st 2nd 3rd Last 3rd 2nd 1st
-262 1st 2nd 3rd Last 3rd 2nd 1st
-263 1st 2nd 3rd Last 3rd 2nd 1st
-264 1st 2nd 3rd Last 3rd 2nd 1st
-265 1st 2nd 3rd Last 3rd 2nd 1st
-266 1st 2nd 3rd Last 3rd 2nd 1st
-267 1st 2nd 3rd Last 3rd 2nd 1st
-268 1st 2nd 3rd Last 3rd 2nd 1st
-269 1st 2nd 3rd Last 3rd 2nd 1st
-270 1st 2nd 3rd Last 3rd 2nd 1st
-271 1st 2nd 3rd Last 3rd 2nd 1st
-272 1st 2nd 3rd Last 3rd 2nd 1st
-273 1st 2nd 3rd Last 3rd 2nd 1st
-274 1st 2nd 3rd Last 3rd 2nd 1st
-275 1st 2nd 3rd Last 3rd 2nd 1st
-276 1st 2nd 3rd Last 3rd 2nd 1st
-277 1st 2nd 3rd Last 3rd 2nd 1st
-278 1st 2nd 3rd Last 3rd 2nd 1st
-279 1st 2nd 3rd Last 3rd 2nd 1st
-280 1st 2nd 3rd Last 3rd 2nd 1st
-281 1st 2nd 3rd Last 3rd 2nd 1st
-282 1st 2nd 3rd Last 3rd 2nd 1st
-283 1st 2nd 3rd Last 3rd 2nd 1st
-284 1st 2nd 3rd Last 3rd 2nd 1st
-285 1st 2nd 3rd Last 3rd 2nd 1st
-286 1st 2nd 3rd Last 3rd 2nd 1st
-287 1st 2nd 3rd Last 3rd 2nd 1st
-288 1st 2nd 3rd Last 3rd 2nd 1st
-289 1st 2nd 3rd Last 3rd 2nd 1st
-290 1st 2nd 3rd Last 3rd 2nd 1st
-291 1st 2nd 3rd Last 3rd 2nd 1st
-292 1st 2nd 3rd Last 3rd 2nd 1st
-293 1st 2nd 3rd Last 3rd 2nd 1st
-294 1st 2nd 3rd Last 3rd 2nd 1st
-295 1st 2nd 3rd Last 3rd 2nd 1st
-296 1st 2nd 3rd Last 3rd 2nd 1st
-297 1st 2nd 3rd Last 3rd 2nd 1st
-298 1st 2nd 3rd Last 3rd 2nd 1st
-299 1st 2nd 3rd Last 3rd 2nd 1st
-300 1st 2nd 3rd Last 3rd 2nd 1st
-301 1st 2nd 3rd Last 3rd 2nd 1st
-302 1st 2nd 3rd Last 3rd 2nd 1st
-303 1st 2nd 3rd Last 3rd 2nd 1st
-304 1st 2nd 3rd Last 3rd 2nd 1st
-305 1st 2nd 3rd Last 3rd 2nd 1st
-306 1st 2nd 3rd Last 3rd 2nd 1st
-307 1st 2nd 3rd Last 3rd 2nd 1st
-308 1st 2nd 3rd Last 3rd 2nd 1st
-309 1st 2nd 3rd Last 3rd 2nd 1st
-310 1st 2nd 3rd Last 3rd 2nd 1st
-311 1st 2nd 3rd Last 3rd 2nd 1st
-312 1st 2nd 3rd Last 3rd 2nd 1st
-313 1st 2nd 3rd Last 3rd 2nd 1st
-314 1st 2nd 3rd Last 3rd 2nd 1st
-315 1st 2nd 3rd Last 3rd 2nd 1st
-316 1st 2nd 3rd Last 3rd 2nd 1st
-317 1st 2nd 3rd Last 3rd 2nd 1st
-318 1st 2nd 3rd Last 3rd 2nd 1st
-319 1st 2nd 3rd Last 3rd 2nd 1st
-320 1st 2nd 3rd Last 3rd 2nd 1st
-321 1st 2nd 3rd Last 3rd 2nd 1st
-322 1st 2nd 3rd Last 3rd 2nd 1st
-323 1st 2nd 3rd Last 3rd 2nd 1st
-324 1st 2nd 3rd Last 3rd 2nd 1st
-325 1st 2nd 3rd Last 3rd 2nd 1st
-326 1st 2nd 3rd Last 3rd 2nd 1st
-327 1st 2nd 3rd Last 3rd 2nd 1st
-328 1st 2nd 3rd Last 3rd 2nd 1st
-329 1st 2nd 3rd Last 3rd 2nd 1st
-330 1st 2nd 3rd Last 3rd 2nd 1st
-331 1st 2nd 3rd Last 3rd 2nd 1st
-332 1st 2nd 3rd Last 3rd 2nd 1st
-333 1st 2nd 3rd Last 3rd 2nd 1st
-334 1st 2nd 3rd Last 3rd 2nd 1st
-335 1st 2nd 3rd Last 3rd 2nd 1st
-336 1st 2nd 3rd Last 3rd 2nd 1st
-337 1st 2nd 3rd Last 3rd 2nd 1st
-338 1st 2nd 3rd Last 3rd 2nd 1st
-339 1st 2nd 3rd Last 3rd 2nd 1st
-340 1st 2nd 3rd Last 3rd 2nd 1st
-341 1st 2nd 3rd Last 3rd 2nd 1st
-342 1st 2nd 3rd Last 3rd 2nd 1st
-343 1st 2nd 3rd Last 3rd 2nd 1st
-344 1st 2nd 3rd Last 3rd 2nd 1st
-345 1st 2nd 3rd Last 3rd 2nd 1st
-346 1st 2nd 3rd Last 3rd 2nd 1st
-347 1st 2nd 3rd Last 3rd 2nd 1st
-348 1st 2nd 3rd Last 3rd 2nd 1st
-349 1st 2nd 3rd Last 3rd 2nd 1st
-350 1st 2nd 3rd Last 3rd 2nd 1st
-351 1st 2nd 3rd Last 3rd 2nd 1st
-352 1st 2nd 3rd Last 3rd 2nd 1st
-353 1st 2nd 3rd Last 3rd 2nd 1st
-354 1st 2nd 3rd Last 3rd 2nd 1st
-355 1st 2nd 3rd Last 3rd 2nd 1st
-356 1st 2nd 3rd Last 3rd 2nd 1st
-357 1st 2nd 3rd Last 3rd 2nd 1st
-358 1st 2nd 3rd Last 3rd 2nd 1st
-359 1st 2nd 3rd Last 3rd 2nd 1st
-360 1st 2nd 3rd Last 3rd 2nd 1st
-361 1st 2nd 3rd Last 3rd 2nd 1st
-362 1st 2nd 3rd Last 3rd 2nd 1st
-363 1st 2nd 3rd Last 3rd 2nd 1st
-364 1st 2nd 3rd Last 3rd 2nd 1st
-365 1st 2nd 3rd Last 3rd 2nd 1st
-366 1st 2nd 3rd Last 3rd 2nd 1st
-367 1st 2nd 3rd Last 3rd 2nd 1st
-368 1st 2nd 3rd Last 3rd 2nd 1st
-369 1st 2nd 3rd Last 3rd 2nd 1st
-370 1st 2nd 3rd Last 3rd 2nd 1st
-371 1st 2nd 3rd Last 3rd 2nd 1st
-372 1st 2nd 3rd Last 3rd 2nd 1st
-373 1st 2nd 3rd Last 3rd 2nd 1st
-374 1st 2nd 3rd Last 3rd 2nd 1st
-375 1st 2nd 3rd Last 3rd 2nd 1st
-376 1st 2nd 3rd Last 3rd 2nd 1st
-377 1st 2nd 3rd Last 3rd 2nd 1st
-378 1st 2nd 3rd Last 3rd 2nd 1st
-379 1st 2nd 3rd Last 3rd 2nd 1st
-380 1st 2nd 3rd Last 3rd 2nd 1st
-381 1st 2nd 3rd Last 3rd 2nd 1st
-382 1st 2nd 3rd Last 3rd 2nd 1st
-383 1st 2nd 3rd Last 3rd 2nd 1st
-384 1st 2nd 3rd Last 3rd 2nd 1st
-385 1st 2nd 3rd Last 3rd 2nd 1st
-386 1st 2nd 3rd Last 3rd 2nd 1st
-387 1st 2nd 3rd Last 3rd 2nd 1st
-388 1st 2nd 3rd Last 3rd 2nd 1st
-389 1st 2nd 3rd Last 3rd 2nd 1st
-390 1st 2nd 3rd Last 3rd 2nd 1st
-391 1st 2nd 3rd Last 3rd 2nd 1st
-392 1st 2nd 3rd Last 3rd 2nd 1st
-393 1st 2nd 3rd Last 3rd 2nd 1st
-394 1st 2nd 3rd Last 3rd 2nd 1st
-395 1st 2nd 3rd Last 3rd 2nd 1st
-396 1st 2nd 3rd Last 3rd 2nd 1st
-397 1st 2nd 3rd Last 3rd 2nd 1st
-398 1st 2nd 3rd Last 3rd 2nd 1st
-399 1st 2nd 3rd Last 3rd 2nd 1st
-400 1st 2nd 3rd Last 3rd 2nd 1st
-401 1st 2nd 3rd Last 3rd 2nd 1st
-402 1st 2nd 3rd Last 3rd 2nd 1st
-403 1st 2nd 3rd Last 3rd 2nd 1st
-404 1st 2nd 3rd Last 3rd 2nd 1st
-405 1st 2nd 3rd Last 3rd 2nd 1st
-406 1st 2nd 3rd Last 3rd 2nd 1st
-407 1st 2nd 3rd Last 3rd 2nd 1st
-408 1st 2nd 3rd Last 3rd 2nd 1st
-409 1st 2nd 3rd Last 3rd 2nd 1st
-410 1st 2nd 3rd Last 3rd 2nd 1st
-411 1st 2nd 3rd Last 3rd 2nd 1st
-412 1st 2nd 3rd Last 3rd 2nd 1st
-413 1st 2nd 3rd Last 3rd 2nd 1st
-414 1st 2nd 3rd Last 3rd 2nd 1st
-415 1st 2nd 3rd Last 3rd 2nd 1st
-416 1st 2nd 3rd Last 3rd 2nd 1st
-417 1st 2nd 3rd Last 3rd 2nd 1st
-418 1st 2nd 3rd Last 3rd 2nd 1st
-419 1st 2nd 3rd Last 3rd 2nd 1st
-420 1st 2nd 3rd Last 3rd 2nd 1st
-421 1st 2nd 3rd Last 3rd 2nd 1st
-422 1st 2nd 3rd Last 3rd 2nd 1st
-423 1st 2nd 3rd Last 3rd 2nd 1st
-424 1st 2nd 3rd Last 3rd 2nd 1st
-425 1st 2nd 3rd Last 3rd 2nd 1st
-426 1st 2nd 3rd Last 3rd 2nd 1st
-427 1st 2nd 3rd Last 3rd 2nd 1st
-428 1st 2nd 3rd Last 3rd 2nd 1st
-429 1st 2nd 3rd Last 3rd 2nd 1st
-430 1st 2nd 3rd Last 3rd 2nd 1st
-431 1st 2nd 3rd Last 3rd 2nd 1st
-432 1st 2nd 3rd Last 3rd 2nd 1st
-433 1st 2nd 3rd Last 3rd 2nd 1st
-434 1st 2nd 3rd Last 3rd 2nd 1st
-435 1st 2nd 3rd Last 3rd 2nd 1st
-436 1st 2nd 3rd Last 3rd 2nd 1st
-437 1st 2nd 3rd Last 3rd 2nd 1st
-438 1st 2nd 3rd Last 3rd 2nd 1st
-439 1st 2nd 3rd Last 3rd 2nd 1st
-440 1st 2nd 3rd Last 3rd 2nd 1st
-441 1st 2nd 3rd Last 3rd 2nd 1st
-442 1st 2nd 3rd Last 3rd 2nd 1st
-443 1st 2nd 3rd Last 3rd 2nd 1st
-444 1st 2nd 3rd Last 3rd 2nd 1st
-445 1st 2nd 3rd Last 3rd 2nd 1st
-446 1st 2nd 3rd Last 3rd 2nd 1st
-447 1st 2nd 3rd Last 3rd 2nd 1st
-448 1st 2nd 3rd Last 3rd 2nd 1st
-449 1st 2nd 3rd Last 3rd 2nd 1st
-450 1st 2nd 3rd Last 3rd 2nd 1st
-451 1st 2nd 3rd Last 3rd 2nd 1st
-452 1st 2nd 3rd Last 3rd 2nd 1st
-453 1st 2nd 3rd Last 3rd 2nd 1st
-454 1st 2nd 3rd Last 3rd 2nd 1st
-455 1st 2nd 3rd Last 3rd 2nd 1st
-456 1st 2nd 3rd Last 3rd 2nd 1st
-457 1st 2nd 3rd Last 3rd 2nd 1st
-458 1st 2nd 3rd Last 3rd 2nd 1st
-459 1st 2nd 3rd Last 3rd 2nd 1st
-460 1st 2nd 3rd Last 3rd 2nd 1st
-461 1st 2nd 3rd Last 3rd 2nd 1st
-462 1st 2nd 3rd Last 3rd 2nd 1st
-463 1st 2nd 3rd Last 3rd 2nd 1st
-464 1st 2nd 3rd Last 3rd 2nd 1st
-465 1st 2nd 3rd Last 3rd 2nd 1st
-466 1st 2nd 3rd Last 3rd 2nd 1st
-467 1st 2nd 3rd Last 3rd 2nd 1st
-468 1st 2nd 3rd Last 3rd 2nd 1st
-469 1st 2nd 3rd Last 3rd 2nd 1st
-470 1st 2nd 3rd Last 3rd 2nd 1st
-471 1st 2nd 3rd Last 3rd 2nd 1st
-472 1st 2nd 3rd Last 3rd 2nd 1st
-473 1st 2nd 3rd Last 3rd 2nd 1st
-474 1st 2nd 3rd Last 3rd 2nd 1st
-475 1st 2nd 3rd Last 3rd 2nd 1st
-476 1st 2nd 3rd Last 3rd 2nd 1st
-477 1st 2nd 3rd Last 3rd 2nd 1st
-478 1st 2nd 3rd Last 3rd 2nd 1st
-479 1st 2nd 3rd Last 3rd 2nd 1st
-480 1st 2nd 3rd Last 3rd 2nd 1st
-481 1st 2nd 3rd Last 3rd 2nd 1st
-482 1st 2nd 3rd Last 3rd 2nd 1st
-483 1st 2nd 3rd Last 3rd 2nd 1st
-484 1st 2nd 3rd Last 3rd 2nd 1st
-485 1st 2nd 3rd Last 3rd 2nd 1st
-486 1st 2nd 3rd Last 3rd 2nd 1st
-487 1st 2nd 3rd Last 3rd 2nd 1st
-488 1st 2nd 3rd Last 3rd 2nd 1st
-489 1st 2nd 3rd Last 3rd 2nd 1st
-490 1st 2nd 3rd Last 3rd 2nd 1st
-491 1st 2nd 3rd Last 3rd 2nd 1st
-492 1st 2nd 3rd Last 3rd 2nd 1st
-493 1st 2nd 3rd Last 3rd 2nd 1st
-494 1st 2nd 3rd Last 3rd 2nd 1st
-495 1st 2nd 3rd Last 3rd 2nd 1st
-496 1st 2nd 3rd Last 3rd 2nd 1st
-497 1st 2nd 3rd Last 3rd 2nd 1st
-498 1st 2nd 3rd Last 3rd 2nd 1st
-499 1st 2nd 3rd Last 3rd 2nd 1st
-500 1st 2nd 3rd Last 3rd 2nd 1st
-501 1st 2nd 3rd Last 3rd 2nd 1st
-502 1st 2nd 3rd Last 3rd 2nd 1st
-503 1st 2nd 3rd Last 3rd 2nd 1st
-504 1st 2nd 3rd Last 3rd 2nd 1st
-505 1st 2nd 3rd Last 3rd 2nd 1st
-506 1st 2nd 3rd Last 3rd 2nd 1st
-507 1st 2nd 3rd Last 3rd 2nd 1st
-508 1st 2nd 3rd Last 3rd 2nd 1st
-509 1st 2nd 3rd Last 3rd 2nd 1st
-510 1st 2nd 3rd Last 3rd 2nd 1st
-511 1st 2nd 3rd Last 3rd 2nd 1st
-512 1st 2nd 3rd Last 3rd 2nd 1st
-513 1st 2nd 3rd Last 3rd 2nd 1st
-514 1st 2nd 3rd Last 3rd 2nd 1st
-515 1st 2nd 3rd Last 3rd 2nd 1st
-516 1st 2nd 3rd Last 3rd 2nd 1st
-517 1st 2nd 3rd Last 3rd 2nd 1st
-518 1st 2nd 3rd Last 3rd 2nd 1st
-519 1st 2nd 3rd Last 3rd 2nd 1st
-520 1st 2nd 3rd Last 3rd 2nd 1st
-521 1st 2nd 3rd Last 3rd 2nd 1st
-522 1st 2nd 3rd Last 3rd 2nd 1st
-523 1st 2nd 3rd Last 3rd 2nd 1st
-524 1st 2nd 3rd Last 3rd 2nd 1st
-525 1st 2nd 3rd Last 3rd 2nd 1st
-526 1st 2nd 3rd Last 3rd 2nd 1st
-527 1st 2nd 3rd Last 3rd 2nd 1st
-528 1st 2nd 3rd Last 3rd 2nd 1st
-529 1st 2nd 3rd Last 3rd 2nd 1st
-530 1st 2nd 3rd Last 3rd 2nd 1st
-531 1st 2nd 3rd Last 3rd 2nd 1st
-532 1st 2nd 3rd Last 3rd 2nd 1st
-533 1st 2nd 3rd Last 3rd 2nd 1st
-534 1st 2nd 3rd Last 3rd 2nd 1st
-535 1st 2nd 3rd Last 3rd 2nd 1st
-536 1st 2nd 3rd Last 3rd 2nd 1st
-537 1st 2nd 3rd Last 3rd 2nd 1st
-538 1st 2nd 3rd Last 3rd 2nd 1st
-539 1st 2nd 3rd Last 3rd 2nd 1st
-540 1st 2nd 3rd Last 3rd 2nd 1st
-541 1st 2nd 3rd Last 3rd 2nd 1st
-542 1st 2nd 3rd Last 3rd 2nd 1st
-543 1st 2nd 3rd Last 3rd 2nd 1st
-544 1st 2nd 3rd Last 3rd 2nd 1st
-545 1st 2nd 3rd Last 3rd 2nd 1st
-546 1st 2nd 3rd Last 3rd 2nd 1st
-547 1st 2nd 3rd Last 3rd 2nd 1st
-548 1st 2nd 3rd Last 3rd 2nd 1st
-549 1st 2nd 3rd Last 3rd 2nd 1st
-550 1st 2nd 3rd Last 3rd 2nd 1st
-551 1st 2nd 3rd Last 3rd 2nd 1st
-552 1st 2nd 3rd Last 3rd 2nd 1st
-553 1st 2nd 3rd Last 3rd 2nd 1st
-554 1st 2nd 3rd Last 3rd 2nd 1st
-555 1st 2nd 3rd Last 3rd 2nd 1st
-556 1st 2nd 3rd Last 3rd 2nd 1st
-557 1st 2nd 3rd Last 3rd 2nd 1st
-558 1st 2nd 3rd Last 3rd 2nd 1st
-559 1st 2nd 3rd Last 3rd 2nd 1st
-560 1st 2nd 3rd Last 3rd 2nd 1st
-561 1st 2nd 3rd Last 3rd 2nd 1st
-562 1st 2nd 3rd Last 3rd 2nd 1st
-563 1st 2nd 3rd Last 3rd 2nd 1st
-564 1st 2nd 3rd Last 3rd 2nd 1st
-565 1st 2nd 3rd Last 3rd 2nd 1st
-566 1st 2nd 3rd Last 3rd 2nd 1st
-567 1st 2nd 3rd Last 3rd 2nd 1st
-568 1st 2nd 3rd Last 3rd 2nd 1st
-569 1st 2nd 3rd Last 3rd 2nd 1st
-570 1st 2nd 3rd Last 3rd 2nd 1st
-571 1st 2nd 3rd Last 3rd 2nd 1st
-572 1st 2nd 3rd Last 3rd 2nd 1st
-573 1st 2nd 3rd Last 3rd 2nd 1st
-574 1st 2nd 3rd Last 3rd 2nd 1st
-575 1st 2nd 3rd Last 3rd 2nd 1st
-576 1st 2nd 3rd Last 3rd 2nd 1st
-577 1st 2nd 3rd Last 3rd 2nd 1st
-578 1st 2nd 3rd Last 3rd 2nd 1st
-579 1st 2nd 3rd Last 3rd 2nd 1st
-580 1st 2nd 3rd Last 3rd 2nd 1st
-581 1st 2nd 3rd Last 3rd 2nd 1st
-582 1st 2nd 3rd Last 3rd 2nd 1st
-583 1st 2nd 3rd Last 3rd 2nd 1st
-584 1st 2nd 3rd Last 3rd 2nd 1st
-585 1st 2nd 3rd Last 3rd 2nd 1st
-586 1st 2nd 3rd Last 3rd 2nd 1st
-587 1st 2nd 3rd Last 3rd 2nd 1st
-588 1st 2nd 3rd Last 3rd 2nd 1st
-589 1st 2nd 3rd Last 3rd 2nd 1st
-590 1st 2nd 3rd Last 3rd 2nd 1st
-591 1st 2nd 3rd Last 3rd 2nd 1st
-592 1st 2nd 3rd Last 3rd 2nd 1st
-593 1st 2nd 3rd Last 3rd 2nd 1st
-594 1st 2nd 3rd Last 3rd 2nd 1st
-595 1st 2nd 3rd Last 3rd 2nd 1st
-596 1st 2nd 3rd Last 3rd 2nd 1st
-597 1st 2nd 3rd Last 3rd 2nd 1st
-598 1st 2nd 3rd Last 3rd 2nd 1st
-599 1st 2nd 3rd Last 3rd 2nd 1st
-600 1st 2nd 3rd Last 3rd 2nd 1st
-601 1st 2nd 3rd Last 3rd 2nd 1st
-602 1st 2nd 3rd Last 3rd 2nd 1st
-603 1st 2nd 3rd Last 3rd 2nd 1st
-604 1st 2nd 3rd Last 3rd 2nd 1st
-605 1st 2nd 3rd Last 3rd 2nd 1st
-606 1st 2nd 3rd Last 3rd 2nd 1st
-607 1st 2nd 3rd Last 3rd 2nd 1st
-608 1st 2nd 3rd Last 3rd 2nd 1st
-609 1st 2nd 3rd Last 3rd 2nd 1st
-610 1st 2nd 3rd Last 3rd 2nd 1st
-611 1st 2nd 3rd Last 3rd 2nd 1st
-612 1st 2nd 3rd Last 3rd 2nd 1st
-613 1st 2nd 3rd Last 3rd 2nd 1st
-614 1st 2nd 3rd Last 3rd 2nd 1st
-615 1st 2nd 3rd Last 3rd 2nd 1st
-616 1st 2nd 3rd Last 3rd 2nd 1st
-617 1st 2nd 3rd Last 3rd 2nd 1st
-618 1st 2nd 3rd Last 3rd 2nd 1st
-619 1st 2nd 3rd Last 3rd 2nd 1st
-620 1st 2nd 3rd Last 3rd 2nd 1st
-621 1st 2nd 3rd Last 3rd 2nd 1st
-622 1st 2nd 3rd Last 3rd 2nd 1st
-623 1st 2nd 3rd Last 3rd 2nd 1st
-624 1st 2nd 3rd Last 3rd 2nd 1st
-625 1st 2nd 3rd Last 3rd 2nd 1st
-626 1st 2nd 3rd Last 3rd 2nd 1st
-627 1st 2nd 3rd Last 3rd 2nd 1st
-628 1st 2nd 3rd Last 3rd 2nd 1st
-629 1st 2nd 3rd Last 3rd 2nd 1st
-630 1st 2nd 3rd Last 3rd 2nd 1st
-631 1st 2nd 3rd Last 3rd 2nd 1st
-632 1st 2nd 3rd Last 3rd 2nd 1st
-633 1st 2nd 3rd Last 3rd 2nd 1st
-634 1st 2nd 3rd Last 3rd 2nd 1st
-635 1st 2nd 3rd Last 3rd 2nd 1st
-636 1st 2nd 3rd Last 3rd 2nd 1st
-637 1st 2nd 3rd Last 3rd 2nd 1st
-638 1st 2nd 3rd Last 3rd 2nd 1st
-639 1st 2nd 3rd Last 3rd 2nd 1st
-640 1st 2nd 3rd Last 3rd 2nd 1st
-641 1st 2nd 3rd Last 3rd 2nd 1st
-642 1st 2nd 3rd Last 3rd 2nd 1st
-643 1st 2nd 3rd Last 3rd 2nd 1st
-644 1st 2nd 3rd Last 3rd 2nd 1st
-645 1st 2nd 3rd Last 3rd 2nd 1st
-646 1st 2nd 3rd Last 3rd 2nd 1st
-647 1st 2nd 3rd Last 3rd 2nd 1st
-648 1st 2nd 3rd Last 3rd 2nd 1st
-649 1st 2nd 3rd Last 3rd 2nd 1st
-650 1st 2nd 3rd Last 3rd 2nd 1st
-651 1st 2nd 3rd Last 3rd 2nd 1st
-652 1st 2nd 3rd Last 3rd 2nd 1st
-653 1st 2nd 3rd Last 3rd 2nd 1st
-654 1st 2nd 3rd Last 3rd 2nd 1st
-655 1st 2nd 3rd Last 3rd 2nd 1st
-656 1st 2nd 3rd Last 3rd 2nd 1st
-657 1st 2nd 3rd Last 3rd 2nd 1st
-658 1st 2nd 3rd Last 3rd 2nd 1st
-659 1st 2nd 3rd Last 3rd 2nd 1st
-660 1st 2nd 3rd Last 3rd 2nd 1st
-661 1st 2nd 3rd Last 3rd 2nd 1st
-662 1st 2nd 3rd Last 3rd 2nd 1st
-663 1st 2nd 3rd Last 3rd 2nd 1st
-664 1st 2nd 3rd Last 3rd 2nd 1st
-665 1st 2nd 3rd Last 3rd 2nd 1st
-666 1st 2nd 3rd Last 3rd 2nd 1st
-667 1st 2nd 3rd Last 3rd 2nd 1st
-668 1st 2nd 3rd Last 3rd 2nd 1st
-669 1st 2nd 3rd Last 3rd 2nd 1st
-670 1st 2nd 3rd Last 3rd 2nd 1st
-671 1st 2nd 3rd Last 3rd 2nd 1st
-672 1st 2nd 3rd Last 3rd 2nd 1st
-673 1st 2nd 3rd Last 3rd 2nd 1st
-674 1st 2nd 3rd Last 3rd 2nd 1st
-675 1st 2nd 3rd Last 3rd 2nd 1st
-676 1st 2nd 3rd Last 3rd 2nd 1st
-677 1st 2nd 3rd Last 3rd 2nd 1st
-678 1st 2nd 3rd Last 3rd 2nd 1st
-679 1st 2nd 3rd Last 3rd 2nd 1st
-680 1st 2nd 3rd Last 3rd 2nd 1st
-681 1st 2nd 3rd Last 3rd 2nd 1st
-682 1st 2nd 3rd Last 3rd 2nd 1st
-683 1st 2nd 3rd Last 3rd 2nd 1st
-684 1st 2nd 3rd Last 3rd 2nd 1st
-685 1st 2nd 3rd Last 3rd 2nd 1st
-686 1st 2nd 3rd Last 3rd 2nd 1st
-687 1st 2nd 3rd Last 3rd 2nd 1st
-688 1st 2nd 3rd Last 3rd 2nd 1st
-689 1st 2nd 3rd Last 3rd 2nd 1st
-690 1st 2nd 3rd Last 3rd 2nd 1st
-691 1st 2nd 3rd Last 3rd 2nd 1st
-692 1st 2nd 3rd Last 3rd 2nd 1st
-693 1st 2nd 3rd Last 3rd 2nd 1st
-694 1st 2nd 3rd Last 3rd 2nd 1st
-695 1st 2nd 3rd Last 3rd 2nd 1st
-696 1st 2nd 3rd Last 3rd 2nd 1st
-697 1st 2nd 3rd Last 3rd 2nd 1st
-698 1st 2nd 3rd Last 3rd 2nd 1st
-699 1st 2nd 3rd Last 3rd 2nd 1st
-700 1st 2nd 3rd Last 3rd 2nd 1st
-701 1st 2nd 3rd Last 3rd 2nd 1st
-702 1st 2nd 3rd Last 3rd 2nd 1st
-703 1st 2nd 3rd Last 3rd 2nd 1st
-704 1st 2nd 3rd Last 3rd 2nd 1st
-705 1st 2nd 3rd Last 3rd 2nd 1st
-706 1st 2nd 3rd Last 3rd 2nd 1st
-707 1st 2nd 3rd Last 3rd 2nd 1st
-708 1st 2nd 3rd Last 3rd 2nd 1st
-709 1st 2nd 3rd Last 3rd 2nd 1st
-710 1st 2nd 3rd Last 3rd 2nd 1st
-711 1st 2nd 3rd Last 3rd 2nd 1st
-712 1st 2nd 3rd Last 3rd 2nd 1st
-713 1st 2nd 3rd Last 3rd 2nd 1st
-714 1st 2nd 3rd Last 3rd 2nd 1st
-715 1st 2nd 3rd Last 3rd 2nd 1st
-716 1st 2nd 3rd Last 3rd 2nd 1st
-717 1st 2nd 3rd Last 3rd 2nd 1st
-718 1st 2nd 3rd Last 3rd 2nd 1st
-719 1st 2nd 3rd Last 3rd 2nd 1st
-720 1st 2nd 3rd Last 3rd 2nd 1st
-721 1st 2nd 3rd Last 3rd 2nd 1st
-722 1st 2nd 3rd Last 3rd 2nd 1st
-723 1st 2nd 3rd Last 3rd 2nd 1st
-724 1st 2nd 3rd Last 3rd 2nd 1st
-725 1st 2nd 3rd Last 3rd 2nd 1st
-726 1st 2nd 3rd Last 3rd 2nd 1st
-727 1st 2nd 3rd Last 3rd 2nd 1st
-728 1st 2nd 3rd Last 3rd 2nd 1st
-729 1st 2nd 3rd Last 3rd 2nd 1st
-730 1st 2nd 3rd Last 3rd 2nd 1st
-731 1st 2nd 3rd Last 3rd 2nd 1st
-732 1st 2nd 3rd Last 3rd 2nd 1st
-733 1st 2nd 3rd Last 3rd 2nd 1st
-734 1st 2nd 3rd Last 3rd 2nd 1st
-735 1st 2nd 3rd Last 3rd 2nd 1st
-736 1st 2nd 3rd Last 3rd 2nd 1st
-737 1st 2nd 3rd Last 3rd 2nd 1st
-738 1st 2nd 3rd Last 3rd 2nd 1st
-739 1st 2nd 3rd Last 3rd 2nd 1st
-740 1st 2nd 3rd Last 3rd 2nd 1st
-741 1st 2nd 3rd Last 3rd 2nd 1st
-742 1st 2nd 3rd Last 3rd 2nd 1st
-743 1st 2nd 3rd Last 3rd 2nd 1st
-744 1st 2nd 3rd Last 3rd 2nd 1st
-745 1st 2nd 3rd Last 3rd 2nd 1st
-746 1st 2nd 3rd Last 3rd 2nd 1st
-747 1st 2nd 3rd Last 3rd 2nd 1st
-748 1st 2nd 3rd Last 3rd 2nd 1st
-749 1st 2nd 3rd Last 3rd 2nd 1st
-750 1st 2nd 3rd Last 3rd 2nd 1st
-751 1st 2nd 3rd Last 3rd 2nd 1st
-752 1st 2nd 3rd Last 3rd 2nd 1st
-753 1st 2nd 3rd Last 3rd 2nd 1st
-754 1st 2nd 3rd Last 3rd 2nd 1st
-755 1st 2nd 3rd Last 3rd 2nd 1st
-756 1st 2nd 3rd Last 3rd 2nd 1st
-757 1st 2nd 3rd Last 3rd 2nd 1st
-758 1st 2nd 3rd Last 3rd 2nd 1st
-759 1st 2nd 3rd Last 3rd 2nd 1st
-760 1st 2nd 3rd Last 3rd 2nd 1st
-761 1st 2nd 3rd Last 3rd 2nd 1st
-762 1st 2nd 3rd Last 3rd 2nd 1st
-763 1st 2nd 3rd Last 3rd 2nd 1st
-764 1st 2nd 3rd Last 3rd 2nd 1st
-765 1st 2nd 3rd Last 3rd 2nd 1st
-766 1st 2nd 3rd Last 3rd 2nd 1st
-767 1st 2nd 3rd Last 3rd 2nd 1st
-768 1st 2nd 3rd Last 3rd 2nd 1st
-769 1st 2nd 3rd Last 3rd 2nd 1st
-770 1st 2nd 3rd Last 3rd 2nd 1st
-771 1st 2nd 3rd Last 3rd 2nd 1st
-772 1st 2nd 3rd Last 3rd 2nd 1st
-773 1st 2nd 3rd Last 3rd 2nd 1st
-774 1st 2nd 3rd Last 3rd 2nd 1st
-775 1st 2nd 3rd Last 3rd 2nd 1st
-776 1st 2nd 3rd Last 3rd 2nd 1st
-777 1st 2nd 3rd Last 3rd 2nd 1st
-778 1st 2nd 3rd Last 3rd 2nd 1st
-779 1st 2nd 3rd Last 3rd 2nd 1st
-780 1st 2nd 3rd Last 3rd 2nd 1st
-781 1st 2nd 3rd Last 3rd 2nd 1st
-782 1st 2nd 3rd Last 3rd 2nd 1st
-783 1st 2nd 3rd Last 3rd 2nd 1st
-784 1st 2nd 3rd Last 3rd 2nd 1st
-785 1st 2nd 3rd Last 3rd 2nd 1st
-786 1st 2nd 3rd Last 3rd 2nd 1st
-787 1st 2nd 3rd Last 3rd 2nd 1st
-788 1st 2nd 3rd Last 3rd 2nd 1st
-789 1st 2nd 3rd Last 3rd 2nd 1st
-790 1st 2nd 3rd Last 3rd 2nd 1st
-791 1st 2nd 3rd Last 3rd 2nd 1st
-792 1st 2nd 3rd Last 3rd 2nd 1st
-793 1st 2nd 3rd Last 3rd 2nd 1st
-794 1st 2nd 3rd Last 3rd 2nd 1st
-795 1st 2nd 3rd Last 3rd 2nd 1st
-796 1st 2nd 3rd Last 3rd 2nd 1st
-797 1st 2nd 3rd Last 3rd 2nd 1st
-798 1st 2nd 3rd Last 3rd 2nd 1st
-799 1st 2nd 3rd Last 3rd 2nd 1st
-800 1st 2nd 3rd Last 3rd 2nd 1st
-801 1st 2nd 3rd Last 3rd 2nd 1st
-802 1st 2nd 3rd Last 3rd 2nd 1st
-803 1st 2nd 3rd Last 3rd 2nd 1st
-804 1st 2nd 3rd Last 3rd 2nd 1st
-805 1st 2nd 3rd Last 3rd 2nd 1st
-806 1st 2nd 3rd Last 3rd 2nd 1st
-807 1st 2nd 3rd Last 3rd 2nd 1st
-808 1st 2nd 3rd Last 3rd 2nd 1st
-809 1st 2nd 3rd Last 3rd 2nd 1st
-810 1st 2nd 3rd Last 3rd 2nd 1st
-811 1st 2nd 3rd Last 3rd 2nd 1st
-812 1st 2nd 3rd Last 3rd 2nd 1st
-813 1st 2nd 3rd Last 3rd 2nd 1st
-814 1st 2nd 3rd Last 3rd 2nd 1st
-815 1st 2nd 3rd Last 3rd 2nd 1st
-816 1st 2nd 3rd Last 3rd 2nd 1st
-817 1st 2nd 3rd Last 3rd 2nd 1st
-818 1st 2nd 3rd Last 3rd 2nd 1st
-819 1st 2nd 3rd Last 3rd 2nd 1st
-820 1st 2nd 3rd Last 3rd 2nd 1st
-821 1st 2nd 3rd Last 3rd 2nd 1st
-822 1st 2nd 3rd Last 3rd 2nd 1st
-823 1st 2nd 3rd Last 3rd 2nd 1st
-824 1st 2nd 3rd Last 3rd 2nd 1st
-825 1st 2nd 3rd Last 3rd 2nd 1st
-826 1st 2nd 3rd Last 3rd 2nd 1st
-827 1st 2nd 3rd Last 3rd 2nd 1st
-828 1st 2nd 3rd Last 3rd 2nd 1st
-829 1st 2nd 3rd Last 3rd 2nd 1st
-830 1st 2nd 3rd Last 3rd 2nd 1st
-831 1st 2nd 3rd Last 3rd 2nd 1st
-832 1st 2nd 3rd Last 3rd 2nd 1st
-833 1st 2nd 3rd Last 3rd 2nd 1st
-834 1st 2nd 3rd Last 3rd 2nd 1st
-835 1st 2nd 3rd Last 3rd 2nd 1st
-836 1st 2nd 3rd Last 3rd 2nd 1st
-837 1st 2nd 3rd Last 3rd 2nd 1st
-838 1st 2nd 3rd Last 3rd 2nd 1st
-839 1st 2nd 3rd Last 3rd 2nd 1st
-840 1st 2nd 3rd Last 3rd 2nd 1st
-841 1st 2nd 3rd Last 3rd 2nd 1st
-842 1st 2nd 3rd Last 3rd 2nd 1st
-843 1st 2nd 3rd Last 3rd 2nd 1st
-844 1st 2nd 3rd Last 3rd 2nd 1st
-845 1st 2nd 3rd Last 3rd 2nd 1st
-846 1st 2nd 3rd Last 3rd 2nd 1st
-847 1st 2nd 3rd Last 3rd 2nd 1st
-848 1st 2nd 3rd Last 3rd 2nd 1st
-849 1st 2nd 3rd Last 3rd 2nd 1st
-850 1st 2nd 3rd Last 3rd 2nd 1st
-851 1st 2nd 3rd Last 3rd 2nd 1st
-852 1st 2nd 3rd Last 3rd 2nd 1st
-853 1st 2nd 3rd Last 3rd 2nd 1st
-854 1st 2nd 3rd Last 3rd 2nd 1st
-855 1st 2nd 3rd Last 3rd 2nd 1st
-856 1st 2nd 3rd Last 3rd 2nd 1st
-857 1st 2nd 3rd Last 3rd 2nd 1st
-858 1st 2nd 3rd Last 3rd 2nd 1st
-859 1st 2nd 3rd Last 3rd 2nd 1st
-860 1st 2nd 3rd Last 3rd 2nd 1st
-861 1st 2nd 3rd Last 3rd 2nd 1st
-862 1st 2nd 3rd Last 3rd 2nd 1st
-863 1st 2nd 3rd Last 3rd 2nd 1st
-864 1st 2nd 3rd Last 3rd 2nd 1st
-865 1st 2nd 3rd Last 3rd 2nd 1st
-866 1st 2nd 3rd Last 3rd 2nd 1st
-867 1st 2nd 3rd Last 3rd 2nd 1st
-868 1st 2nd 3rd Last 3rd 2nd 1st
-869 1st 2nd 3rd Last 3rd 2nd 1st
-870 1st 2nd 3rd Last 3rd 2nd 1st
-871 1st 2nd 3rd Last 3rd 2nd 1st
-872 1st 2nd 3rd Last 3rd 2nd 1st
-873 1st 2nd 3rd Last 3rd 2nd 1st
-874 1st 2nd 3rd Last 3rd 2nd 1st
-875 1st 2nd 3rd Last 3rd 2nd 1st
-876 1st 2nd 3rd Last 3rd 2nd 1st
-877 1st 2nd 3rd Last 3rd 2nd 1st
-878 1st 2nd 3rd Last 3rd 2nd 1st
-879 1st 2nd 3rd Last 3rd 2nd 1st
-880 1st 2nd 3rd Last 3rd 2nd 1st
-881 1st 2nd 3rd Last 3rd 2nd 1st
-882 1st 2nd 3rd Last 3rd 2nd 1st
-883 1st 2nd 3rd Last 3rd 2nd 1st
-884 1st 2nd 3rd Last 3rd 2nd 1st
-885 1st 2nd 3rd Last 3rd 2nd 1st
-886 1st 2nd 3rd Last 3rd 2nd 1st
-887 1st 2nd 3rd Last 3rd 2nd 1st
-888 1st 2nd 3rd Last 3rd 2nd 1st
-889 1st 2nd 3rd Last 3rd 2nd 1st
-890 1st 2nd 3rd Last 3rd 2nd 1st
-891 1st 2nd 3rd Last 3rd 2nd 1st
-892 1st 2nd 3rd Last 3rd 2nd 1st
-893 1st 2nd 3rd Last 3rd 2nd 1st
-894 1st 2nd 3rd Last 3rd 2nd 1st
-895 1st 2nd 3rd Last 3rd 2nd 1st
-896 1st 2nd 3rd Last 3rd 2nd 1st
-897 1st 2nd 3rd Last 3rd 2nd 1st
-898 1st 2nd 3rd Last 3rd 2nd 1st
-899 1st 2nd 3rd Last 3rd 2nd 1st
-900 1st 2nd 3rd Last 3rd 2nd 1st
-901 1st 2nd 3rd Last 3rd 2nd 1st
-902 1st 2nd 3rd Last 3rd 2nd 1st
-903 1st 2nd 3rd Last 3rd 2nd 1st
-904 1st 2nd 3rd Last 3rd 2nd 1st
-905 1st 2nd 3rd Last 3rd 2nd 1st
-906 1st 2nd 3rd Last 3rd 2nd 1st
-907 1st 2nd 3rd Last 3rd 2nd 1st
-908 1st 2nd 3rd Last 3rd 2nd 1st
-909 1st 2nd 3rd Last 3rd 2nd 1st
-910 1st 2nd 3rd Last 3rd 2nd 1st
-911 1st 2nd 3rd Last 3rd 2nd 1st
-912 1st 2nd 3rd Last 3rd 2nd 1st
-913 1st 2nd 3rd Last 3rd 2nd 1st
-914 1st 2nd 3rd Last 3rd 2nd 1st
-915 1st 2nd 3rd Last 3rd 2nd 1st
-916 1st 2nd 3rd Last 3rd 2nd 1st
-917 1st 2nd 3rd Last 3rd 2nd 1st
-918 1st 2nd 3rd Last 3rd 2nd 1st
-919 1st 2nd 3rd Last 3rd 2nd 1st
-920 1st 2nd 3rd Last 3rd 2nd 1st
-921 1st 2nd 3rd Last 3rd 2nd 1st
-922 1st 2nd 3rd Last 3rd 2nd 1st
-923 1st 2nd 3rd Last 3rd 2nd 1st
-924 1st 2nd 3rd Last 3rd 2nd 1st
-925 1st 2nd 3rd Last 3rd 2nd 1st
-926 1st 2nd 3rd Last 3rd 2nd 1st
-927 1st 2nd 3rd Last 3rd 2nd 1st
-928 1st 2nd 3rd Last 3rd 2nd 1st
-929 1st 2nd 3rd Last 3rd 2nd 1st
-930 1st 2nd 3rd Last 3rd 2nd 1st
-931 1st 2nd 3rd Last 3rd 2nd 1st
-932 1st 2nd 3rd Last 3rd 2nd 1st
-933 1st 2nd 3rd Last 3rd 2nd 1st
-934 1st 2nd 3rd Last 3rd 2nd 1st
-935 1st 2nd 3rd Last 3rd 2nd 1st
-936 1st 2nd 3rd Last 3rd 2nd 1st
-937 1st 2nd 3rd Last 3rd 2nd 1st
-938 1st 2nd 3rd Last 3rd 2nd 1st
-939 1st 2nd 3rd Last 3rd 2nd 1st
-940 1st 2nd 3rd Last 3rd 2nd 1st
-941 1st 2nd 3rd Last 3rd 2nd 1st
-942 1st 2nd 3rd Last 3rd 2nd 1st
-943 1st 2nd 3rd Last 3rd 2nd 1st
-944 1st 2nd 3rd Last 3rd 2nd 1st
-945 1st 2nd 3rd Last 3rd 2nd 1st
-946 1st 2nd 3rd Last 3rd 2nd 1st
-947 1st 2nd 3rd Last 3rd 2nd 1st
-948 1st 2nd 3rd Last 3rd 2nd 1st
-949 1st 2nd 3rd Last 3rd 2nd 1st
-950 1st 2nd 3rd Last 3rd 2nd 1st
-951 1st 2nd 3rd Last 3rd 2nd 1st
-952 1st 2nd 3rd Last 3rd 2nd 1st
-953 1st 2nd 3rd Last 3rd 2nd 1st
-954 1st 2nd 3rd Last 3rd 2nd 1st
-955 1st 2nd 3rd Last 3rd 2nd 1st
-956 1st 2nd 3rd Last 3rd 2nd 1st
-957 1st 2nd 3rd Last 3rd 2nd 1st
-958 1st 2nd 3rd Last 3rd 2nd 1st
-959 1st 2nd 3rd Last 3rd 2nd 1st
-960 1st 2nd 3rd Last 3rd 2nd 1st
-961 1st 2nd 3rd Last 3rd 2nd 1st
-962 1st 2nd 3rd Last 3rd 2nd 1st
-963 1st 2nd 3rd Last 3rd 2nd 1st
-964 1st 2nd 3rd Last 3rd 2nd 1st
-965 1st 2nd 3rd Last 3rd 2nd 1st
-966 1st 2nd 3rd Last 3rd 2nd 1st
-967 1st 2nd 3rd Last 3rd 2nd 1st
-968 1st 2nd 3rd Last 3rd 2nd 1st
-969 1st 2nd 3rd Last 3rd 2nd 1st
-970 1st 2nd 3rd Last 3rd 2nd 1st
-971 1st 2nd 3rd Last 3rd 2nd 1st
-972 1st 2nd 3rd Last 3rd 2nd 1st
-973 1st 2nd 3rd Last 3rd 2nd 1st
-974 1st 2nd 3rd Last 3rd 2nd 1st
-975 1st 2nd 3rd Last 3rd 2nd 1st
-976 1st 2nd 3rd Last 3rd 2nd 1st
-977 1st 2nd 3rd Last 3rd 2nd 1st
-978 1st 2nd 3rd Last 3rd 2nd 1st
-979 1st 2nd 3rd Last 3rd 2nd 1st
-980 1st 2nd 3rd Last 3rd 2nd 1st
-981 1st 2nd 3rd Last 3rd 2nd 1st
-982 1st 2nd 3rd Last 3rd 2nd 1st
-983 1st 2nd 3rd Last 3rd 2nd 1st
-984 1st 2nd 3rd Last 3rd 2nd 1st
-985 1st 2nd 3rd Last 3rd 2nd 1st
-986 1st 2nd 3rd Last 3rd 2nd 1st
-987 1st 2nd 3rd Last 3rd 2nd 1st
-988 1st 2nd 3rd Last 3rd 2nd 1st
-989 1st 2nd 3rd Last 3rd 2nd 1st
-990 1st 2nd 3rd Last 3rd 2nd 1st
-991 1st 2nd 3rd Last 3rd 2nd 1st
-992 1st 2nd 3rd Last 3rd 2nd 1st
-993 1st 2nd 3rd Last 3rd 2nd 1st
-994 1st 2nd 3rd Last 3rd 2nd 1st
-995 1st 2nd 3rd Last 3rd 2nd 1st
-996 1st 2nd 3rd Last 3rd 2nd 1st
-997 1st 2nd 3rd Last 3rd 2nd 1st
-998 1st 2nd 3rd Last 3rd 2nd 1st
-999 1st 2nd 3rd Last 3rd 2nd 1st
-1000 1st 2nd 3rd Last 3rd 2nd 1st
-1001 1st 2nd 3rd Last 3rd 2nd 1st
-1002 1st 2nd 3rd Last 3rd 2nd 1st
-1003 1st 2nd 3rd Last 3rd 2nd 1st
-1004 1st 2nd 3rd Last 3rd 2nd 1st
-1005 1st 2nd 3rd Last 3rd 2nd 1st
-1006 1st 2nd 3rd Last 3rd 2nd 1st
-1007 1st 2nd 3rd Last 3rd 2nd 1st
-1008 1st 2nd 3rd Last 3rd 2nd 1st
-1009 1st 2nd 3rd Last 3rd 2nd 1st
-1010 1st 2nd 3rd Last 3rd 2nd 1st
-1011 1st 2nd 3rd Last 3rd 2nd 1st
-1012 1st 2nd 3rd Last 3rd 2nd 1st
-1013 1st 2nd 3rd Last 3rd 2nd 1st
-1014 1st 2nd 3rd Last 3rd 2nd 1st
-1015 1st 2nd 3rd Last 3rd 2nd 1st
-1016 1st 2nd 3rd Last 3rd 2nd 1st
-1017 1st 2nd 3rd Last 3rd 2nd 1st
-1018 1st 2nd 3rd Last 3rd 2nd 1st
-1019 1st 2nd 3rd Last 3rd 2nd 1st
-1020 1st 2nd 3rd Last 3rd 2nd 1st
-1021 1st 2nd 3rd Last 3rd 2nd 1st
-1022 1st 2nd 3rd Last 3rd 2nd 1st
-1023 1st 2nd 3rd Last 3rd 2nd 1st
-1024 1st 2nd 3rd Last 3rd 2nd 1st
-1025 1st 2nd 3rd Last 3rd 2nd 1st
-1026 1st 2nd 3rd Last 3rd 2nd 1st
-1027 1st 2nd 3rd Last 3rd 2nd 1st
-1028 1st 2nd 3rd Last 3rd 2nd 1st
-1029 1st 2nd 3rd Last 3rd 2nd 1st
-1030 1st 2nd 3rd Last 3rd 2nd 1st
-1031 1st 2nd 3rd Last 3rd 2nd 1st
-1032 1st 2nd 3rd Last 3rd 2nd 1st
-1033 1st 2nd 3rd Last 3rd 2nd 1st
-1034 1st 2nd 3rd Last 3rd 2nd 1st
-1035 1st 2nd 3rd Last 3rd 2nd 1st
-1036 1st 2nd 3rd Last 3rd 2nd 1st
-1037 1st 2nd 3rd Last 3rd 2nd 1st
-1038 1st 2nd 3rd Last 3rd 2nd 1st
-1039 1st 2nd 3rd Last 3rd 2nd 1st
-1040 1st 2nd 3rd Last 3rd 2nd 1st
-1041 1st 2nd 3rd Last 3rd 2nd 1st
-1042 1st 2nd 3rd Last 3rd 2nd 1st
-1043 1st 2nd 3rd Last 3rd 2nd 1st
-1044 1st 2nd 3rd Last 3rd 2nd 1st
-1045 1st 2nd 3rd Last 3rd 2nd 1st
-1046 1st 2nd 3rd Last 3rd 2nd 1st
-1047 1st 2nd 3rd Last 3rd 2nd 1st
-1048 1st 2nd 3rd Last 3rd 2nd 1st
-1049 1st 2nd 3rd Last 3rd 2nd 1st
-1050 1st 2nd 3rd Last 3rd 2nd 1st
-1051 1st 2nd 3rd Last 3rd 2nd 1st
-1052 1st 2nd 3rd Last 3rd 2nd 1st
-1053 1st 2nd 3rd Last 3rd 2nd 1st
-1054 1st 2nd 3rd Last 3rd 2nd 1st
-1055 1st 2nd 3rd Last 3rd 2nd 1st
-1056 1st 2nd 3rd Last 3rd 2nd 1st
-1057 1st 2nd 3rd Last 3rd 2nd 1st
-1058 1st 2nd 3rd Last 3rd 2nd 1st
-1059 1st 2nd 3rd Last 3rd 2nd 1st
-1060 1st 2nd 3rd Last 3rd 2nd 1st
-1061 1st 2nd 3rd Last 3rd 2nd 1st
-1062 1st 2nd 3rd Last 3rd 2nd 1st
-1063 1st 2nd 3rd Last 3rd 2nd 1st
-1064 1st 2nd 3rd Last 3rd 2nd 1st
-1065 1st 2nd 3rd Last 3rd 2nd 1st
-1066 1st 2nd 3rd Last 3rd 2nd 1st
-1067 1st 2nd 3rd Last 3rd 2nd 1st
-1068 1st 2nd 3rd Last 3rd 2nd 1st
-1069 1st 2nd 3rd Last 3rd 2nd 1st
-1070 1st 2nd 3rd Last 3rd 2nd 1st
-1071 1st 2nd 3rd Last 3rd 2nd 1st
-1072 1st 2nd 3rd Last 3rd 2nd 1st
-1073 1st 2nd 3rd Last 3rd 2nd 1st
-1074 1st 2nd 3rd Last 3rd 2nd 1st
-1075 1st 2nd 3rd Last 3rd 2nd 1st
-1076 1st 2nd 3rd Last 3rd 2nd 1st
-1077 1st 2nd 3rd Last 3rd 2nd 1st
-1078 1st 2nd 3rd Last 3rd 2nd 1st
-1079 1st 2nd 3rd Last 3rd 2nd 1st
-1080 1st 2nd 3rd Last 3rd 2nd 1st
-1081 1st 2nd 3rd Last 3rd 2nd 1st
-1082 1st 2nd 3rd Last 3rd 2nd 1st
-1083 1st 2nd 3rd Last 3rd 2nd 1st
-1084 1st 2nd 3rd Last 3rd 2nd 1st
-1085 1st 2nd 3rd Last 3rd 2nd 1st
-1086 1st 2nd 3rd Last 3rd 2nd 1st
-1087 1st 2nd 3rd Last 3rd 2nd 1st
-1088 1st 2nd 3rd Last 3rd 2nd 1st
-1089 1st 2nd 3rd Last 3rd 2nd 1st
-1090 1st 2nd 3rd Last 3rd 2nd 1st
-1091 1st 2nd 3rd Last 3rd 2nd 1st
-1092 1st 2nd 3rd Last 3rd 2nd 1st
-1093 1st 2nd 3rd Last 3rd 2nd 1st
-1094 1st 2nd 3rd Last 3rd 2nd 1st
-1095 1st 2nd 3rd Last 3rd 2nd 1st
-1096 1st 2nd 3rd Last 3rd 2nd 1st
-1097 1st 2nd 3rd Last 3rd 2nd 1st
-1098 1st 2nd 3rd Last 3rd 2nd 1st
-1099 1st 2nd 3rd Last 3rd 2nd 1st
-1100 1st 2nd 3rd Last 3rd 2nd 1st
-1101 1st 2nd 3rd Last 3rd 2nd 1st
-1102 1st 2nd 3rd Last 3rd 2nd 1st
-1103 1st 2nd 3rd Last 3rd 2nd 1st
-1104 1st 2nd 3rd Last 3rd 2nd 1st
-1105 1st 2nd 3rd Last 3rd 2nd 1st
-1106 1st 2nd 3rd Last 3rd 2nd 1st
-1107 1st 2nd 3rd Last 3rd 2nd 1st
-1108 1st 2nd 3rd Last 3rd 2nd 1st
-1109 1st 2nd 3rd Last 3rd 2nd 1st
-1110 1st 2nd 3rd Last 3rd 2nd 1st
-1111 1st 2nd 3rd Last 3rd 2nd 1st
-1112 1st 2nd 3rd Last 3rd 2nd 1st
-1113 1st 2nd 3rd Last 3rd 2nd 1st
-1114 1st 2nd 3rd Last 3rd 2nd 1st
-1115 1st 2nd 3rd Last 3rd 2nd 1st
-1116 1st 2nd 3rd Last 3rd 2nd 1st
-1117 1st 2nd 3rd Last 3rd 2nd 1st
-1118 1st 2nd 3rd Last 3rd 2nd 1st
-1119 1st 2nd 3rd Last 3rd 2nd 1st
-1120 1st 2nd 3rd Last 3rd 2nd 1st
-1121 1st 2nd 3rd Last 3rd 2nd 1st
-1122 1st 2nd 3rd Last 3rd 2nd 1st
-1123 1st 2nd 3rd Last 3rd 2nd 1st
-1124 1st 2nd 3rd Last 3rd 2nd 1st
-1125 1st 2nd 3rd Last 3rd 2nd 1st
-1126 1st 2nd 3rd Last 3rd 2nd 1st
-1127 1st 2nd 3rd Last 3rd 2nd 1st
-1128 1st 2nd 3rd Last 3rd 2nd 1st
-1129 1st 2nd 3rd Last 3rd 2nd 1st
-1130 1st 2nd 3rd Last 3rd 2nd 1st
-1131 1st 2nd 3rd Last 3rd 2nd 1st
-1132 1st 2nd 3rd Last 3rd 2nd 1st
-1133 1st 2nd 3rd Last 3rd 2nd 1st
-1134 1st 2nd 3rd Last 3rd 2nd 1st
-1135 1st 2nd 3rd Last 3rd 2nd 1st
-1136 1st 2nd 3rd Last 3rd 2nd 1st
-1137 1st 2nd 3rd Last 3rd 2nd 1st
-1138 1st 2nd 3rd Last 3rd 2nd 1st
-1139 1st 2nd 3rd Last 3rd 2nd 1st
-1140 1st 2nd 3rd Last 3rd 2nd 1st
-1141 1st 2nd 3rd Last 3rd 2nd 1st
-1142 1st 2nd 3rd Last 3rd 2nd 1st
-1143 1st 2nd 3rd Last 3rd 2nd 1st
-1144 1st 2nd 3rd Last 3rd 2nd 1st
-1145 1st 2nd 3rd Last 3rd 2nd 1st
-1146 1st 2nd 3rd Last 3rd 2nd 1st
-1147 1st 2nd 3rd Last 3rd 2nd 1st
-1148 1st 2nd 3rd Last 3rd 2nd 1st
-1149 1st 2nd 3rd Last 3rd 2nd 1st
-1150 1st 2nd 3rd Last 3rd 2nd 1st
-1151 1st 2nd 3rd Last 3rd 2nd 1st
-1152 1st 2nd 3rd Last 3rd 2nd 1st
-1153 1st 2nd 3rd Last 3rd 2nd 1st
-1154 1st 2nd 3rd Last 3rd 2nd 1st
-1155 1st 2nd 3rd Last 3rd 2nd 1st
-1156 1st 2nd 3rd Last 3rd 2nd 1st
-1157 1st 2nd 3rd Last 3rd 2nd 1st
-1158 1st 2nd 3rd Last 3rd 2nd 1st
-1159 1st 2nd 3rd Last 3rd 2nd 1st
-1160 1st 2nd 3rd Last 3rd 2nd 1st
-1161 1st 2nd 3rd Last 3rd 2nd 1st
-1162 1st 2nd 3rd Last 3rd 2nd 1st
-1163 1st 2nd 3rd Last 3rd 2nd 1st
-1164 1st 2nd 3rd Last 3rd 2nd 1st
-1165 1st 2nd 3rd Last 3rd 2nd 1st
-1166 1st 2nd 3rd Last 3rd 2nd 1st
-1167 1st 2nd 3rd Last 3rd 2nd 1st
-1168 1st 2nd 3rd Last 3rd 2nd 1st
-1169 1st 2nd 3rd Last 3rd 2nd 1st
-1170 1st 2nd 3rd Last 3rd 2nd 1st
-1171 1st 2nd 3rd Last 3rd 2nd 1st
-1172 1st 2nd 3rd Last 3rd 2nd 1st
-1173 1st 2nd 3rd Last 3rd 2nd 1st
-1174 1st 2nd 3rd Last 3rd 2nd 1st
-1175 1st 2nd 3rd Last 3rd 2nd 1st
-1176 1st 2nd 3rd Last 3rd 2nd 1st
-1177 1st 2nd 3rd Last 3rd 2nd 1st
-1178 1st 2nd 3rd Last 3rd 2nd 1st
-1179 1st 2nd 3rd Last 3rd 2nd 1st
-1180 1st 2nd 3rd Last 3rd 2nd 1st
-1181 1st 2nd 3rd Last 3rd 2nd 1st
-1182 1st 2nd 3rd Last 3rd 2nd 1st
-1183 1st 2nd 3rd Last 3rd 2nd 1st
-1184 1st 2nd 3rd Last 3rd 2nd 1st
-1185 1st 2nd 3rd Last 3rd 2nd 1st
-1186 1st 2nd 3rd Last 3rd 2nd 1st
-1187 1st 2nd 3rd Last 3rd 2nd 1st
-1188 1st 2nd 3rd Last 3rd 2nd 1st
-1189 1st 2nd 3rd Last 3rd 2nd 1st
-1190 1st 2nd 3rd Last 3rd 2nd 1st
-1191 1st 2nd 3rd Last 3rd 2nd 1st
-1192 1st 2nd 3rd Last 3rd 2nd 1st
-1193 1st 2nd 3rd Last 3rd 2nd 1st
-1194 1st 2nd 3rd Last 3rd 2nd 1st
-1195 1st 2nd 3rd Last 3rd 2nd 1st
-1196 1st 2nd 3rd Last 3rd 2nd 1st
-1197 1st 2nd 3rd Last 3rd 2nd 1st
-1198 1st 2nd 3rd Last 3rd 2nd 1st
-1199 1st 2nd 3rd Last 3rd 2nd 1st
-1200 1st 2nd 3rd Last 3rd 2nd 1st
-1201 1st 2nd 3rd Last 3rd 2nd 1st
-1202 1st 2nd 3rd Last 3rd 2nd 1st
-1203 1st 2nd 3rd Last 3rd 2nd 1st
-1204 1st 2nd 3rd Last 3rd 2nd 1st
-1205 1st 2nd 3rd Last 3rd 2nd 1st
-1206 1st 2nd 3rd Last 3rd 2nd 1st
-1207 1st 2nd 3rd Last 3rd 2nd 1st
-1208 1st 2nd 3rd Last 3rd 2nd 1st
-1209 1st 2nd 3rd Last 3rd 2nd 1st
-1210 1st 2nd 3rd Last 3rd 2nd 1st
-1211 1st 2nd 3rd Last 3rd 2nd 1st
-1212 1st 2nd 3rd Last 3rd 2nd 1st
-1213 1st 2nd 3rd Last 3rd 2nd 1st
-1214 1st 2nd 3rd Last 3rd 2nd 1st
-1215 1st 2nd 3rd Last 3rd 2nd 1st
-1216 1st 2nd 3rd Last 3rd 2nd 1st
-1217 1st 2nd 3rd Last 3rd 2nd 1st
-1218 1st 2nd 3rd Last 3rd 2nd 1st
-1219 1st 2nd 3rd Last 3rd 2nd 1st
-1220 1st 2nd 3rd Last 3rd 2nd 1st
-1221 1st 2nd 3rd Last 3rd 2nd 1st
-1222 1st 2nd 3rd Last 3rd 2nd 1st
-1223 1st 2nd 3rd Last 3rd 2nd 1st
-1224 1st 2nd 3rd Last 3rd 2nd 1st
-1225 1st 2nd 3rd Last 3rd 2nd 1st
-1226 1st 2nd 3rd Last 3rd 2nd 1st
-1227 1st 2nd 3rd Last 3rd 2nd 1st
-1228 1st 2nd 3rd Last 3rd 2nd 1st
-1229 1st 2nd 3rd Last 3rd 2nd 1st
-1230 1st 2nd 3rd Last 3rd 2nd 1st
-1231 1st 2nd 3rd Last 3rd 2nd 1st
-1232 1st 2nd 3rd Last 3rd 2nd 1st
-1233 1st 2nd 3rd Last 3rd 2nd 1st
-1234 1st 2nd 3rd Last 3rd 2nd 1st
-1235 1st 2nd 3rd Last 3rd 2nd 1st
-1236 1st 2nd 3rd Last 3rd 2nd 1st
-1237 1st 2nd 3rd Last 3rd 2nd 1st
-1238 1st 2nd 3rd Last 3rd 2nd 1st
-1239 1st 2nd 3rd Last 3rd 2nd 1st
-1240 1st 2nd 3rd Last 3rd 2nd 1st
-1241 1st 2nd 3rd Last 3rd 2nd 1st
-1242 1st 2nd 3rd Last 3rd 2nd 1st
-1243 1st 2nd 3rd Last 3rd 2nd 1st
-1244 1st 2nd 3rd Last 3rd 2nd 1st
-1245 1st 2nd 3rd Last 3rd 2nd 1st
-1246 1st 2nd 3rd Last 3rd 2nd 1st
-1247 1st 2nd 3rd Last 3rd 2nd 1st
-1248 1st 2nd 3rd Last 3rd 2nd 1st
-1249 1st 2nd 3rd Last 3rd 2nd 1st
-1250 1st 2nd 3rd Last 3rd 2nd 1st
-1251 1st 2nd 3rd Last 3rd 2nd 1st
-1252 1st 2nd 3rd Last 3rd 2nd 1st
-1253 1st 2nd 3rd Last 3rd 2nd 1st
-1254 1st 2nd 3rd Last 3rd 2nd 1st
-1255 1st 2nd 3rd Last 3rd 2nd 1st
-1256 1st 2nd 3rd Last 3rd 2nd 1st
-1257 1st 2nd 3rd Last 3rd 2nd 1st
-1258 1st 2nd 3rd Last 3rd 2nd 1st
-1259 1st 2nd 3rd Last 3rd 2nd 1st
-1260 1st 2nd 3rd Last 3rd 2nd 1st
-1261 1st 2nd 3rd Last 3rd 2nd 1st
-1262 1st 2nd 3rd Last 3rd 2nd 1st
-1263 1st 2nd 3rd Last 3rd 2nd 1st
-1264 1st 2nd 3rd Last 3rd 2nd 1st
-1265 1st 2nd 3rd Last 3rd 2nd 1st
-1266 1st 2nd 3rd Last 3rd 2nd 1st
-1267 1st 2nd 3rd Last 3rd 2nd 1st
-1268 1st 2nd 3rd Last 3rd 2nd 1st
-1269 1st 2nd 3rd Last 3rd 2nd 1st
-1270 1st 2nd 3rd Last 3rd 2nd 1st
-1271 1st 2nd 3rd Last 3rd 2nd 1st
-1272 1st 2nd 3rd Last 3rd 2nd 1st
-1273 1st 2nd 3rd Last 3rd 2nd 1st
-1274 1st 2nd 3rd Last 3rd 2nd 1st
-1275 1st 2nd 3rd Last 3rd 2nd 1st
-1276 1st 2nd 3rd Last 3rd 2nd 1st
-1277 1st 2nd 3rd Last 3rd 2nd 1st
-1278 1st 2nd 3rd Last 3rd 2nd 1st
-1279 1st 2nd 3rd Last 3rd 2nd 1st
-1280 1st 2nd 3rd Last 3rd 2nd 1st
-1281 1st 2nd 3rd Last 3rd 2nd 1st
-1282 1st 2nd 3rd Last 3rd 2nd 1st
-1283 1st 2nd 3rd Last 3rd 2nd 1st
-1284 1st 2nd 3rd Last 3rd 2nd 1st
-1285 1st 2nd 3rd Last 3rd 2nd 1st
-1286 1st 2nd 3rd Last 3rd 2nd 1st
-1287 1st 2nd 3rd Last 3rd 2nd 1st
-1288 1st 2nd 3rd Last 3rd 2nd 1st
-1289 1st 2nd 3rd Last 3rd 2nd 1st
-1290 1st 2nd 3rd Last 3rd 2nd 1st
-1291 1st 2nd 3rd Last 3rd 2nd 1st
-1292 1st 2nd 3rd Last 3rd 2nd 1st
-1293 1st 2nd 3rd Last 3rd 2nd 1st
-1294 1st 2nd 3rd Last 3rd 2nd 1st
-1295 1st 2nd 3rd Last 3rd 2nd 1st
-1296 1st 2nd 3rd Last 3rd 2nd 1st
-1297 1st 2nd 3rd Last 3rd 2nd 1st
-1298 1st 2nd 3rd Last 3rd 2nd 1st
-1299 1st 2nd 3rd Last 3rd 2nd 1st
-1300 1st 2nd 3rd Last 3rd 2nd 1st
-1301 1st 2nd 3rd Last 3rd 2nd 1st
-1302 1st 2nd 3rd Last 3rd 2nd 1st
-1303 1st 2nd 3rd Last 3rd 2nd 1st
-1304 1st 2nd 3rd Last 3rd 2nd 1st
-1305 1st 2nd 3rd Last 3rd 2nd 1st
-1306 1st 2nd 3rd Last 3rd 2nd 1st
-1307 1st 2nd 3rd Last 3rd 2nd 1st
-1308 1st 2nd 3rd Last 3rd 2nd 1st
-1309 1st 2nd 3rd Last 3rd 2nd 1st
-1310 1st 2nd 3rd Last 3rd 2nd 1st
-1311 1st 2nd 3rd Last 3rd 2nd 1st
-1312 1st 2nd 3rd Last 3rd 2nd 1st
-1313 1st 2nd 3rd Last 3rd 2nd 1st
-1314 1st 2nd 3rd Last 3rd 2nd 1st
-1315 1st 2nd 3rd Last 3rd 2nd 1st
-1316 1st 2nd 3rd Last 3rd 2nd 1st
-1317 1st 2nd 3rd Last 3rd 2nd 1st
-1318 1st 2nd 3rd Last 3rd 2nd 1st
-1319 1st 2nd 3rd Last 3rd 2nd 1st
-1320 1st 2nd 3rd Last 3rd 2nd 1st
-1321 1st 2nd 3rd Last 3rd 2nd 1st
-1322 1st 2nd 3rd Last 3rd 2nd 1st
-1323 1st 2nd 3rd Last 3rd 2nd 1st
-1324 1st 2nd 3rd Last 3rd 2nd 1st
-1325 1st 2nd 3rd Last 3rd 2nd 1st
-1326 1st 2nd 3rd Last 3rd 2nd 1st
-1327 1st 2nd 3rd Last 3rd 2nd 1st
-1328 1st 2nd 3rd Last 3rd 2nd 1st
-1329 1st 2nd 3rd Last 3rd 2nd 1st
-1330 1st 2nd 3rd Last 3rd 2nd 1st
-1331 1st 2nd 3rd Last 3rd 2nd 1st
-1332 1st 2nd 3rd Last 3rd 2nd 1st
-1333 1st 2nd 3rd Last 3rd 2nd 1st
-1334 1st 2nd 3rd Last 3rd 2nd 1st
-1335 1st 2nd 3rd Last 3rd 2nd 1st
-1336 1st 2nd 3rd Last 3rd 2nd 1st
-1337 1st 2nd 3rd Last 3rd 2nd 1st
-1338 1st 2nd 3rd Last 3rd 2nd 1st
-1339 1st 2nd 3rd Last 3rd 2nd 1st
-1340 1st 2nd 3rd Last 3rd 2nd 1st
-1341 1st 2nd 3rd Last 3rd 2nd 1st
-1342 1st 2nd 3rd Last 3rd 2nd 1st
-1343 1st 2nd 3rd Last 3rd 2nd 1st
-1344 1st 2nd 3rd Last 3rd 2nd 1st
-1345 1st 2nd 3rd Last 3rd 2nd 1st
-1346 1st 2nd 3rd Last 3rd 2nd 1st
-1347 1st 2nd 3rd Last 3rd 2nd 1st
-1348 1st 2nd 3rd Last 3rd 2nd 1st
-1349 1st 2nd 3rd Last 3rd 2nd 1st
-1350 1st 2nd 3rd Last 3rd 2nd 1st
-1351 1st 2nd 3rd Last 3rd 2nd 1st
-1352 1st 2nd 3rd Last 3rd 2nd 1st
-1353 1st 2nd 3rd Last 3rd 2nd 1st
-1354 1st 2nd 3rd Last 3rd 2nd 1st
-1355 1st 2nd 3rd Last 3rd 2nd 1st
-1356 1st 2nd 3rd Last 3rd 2nd 1st
-1357 1st 2nd 3rd Last 3rd 2nd 1st
-1358 1st 2nd 3rd Last 3rd 2nd 1st
-1359 1st 2nd 3rd Last 3rd 2nd 1st
-1360 1st 2nd 3rd Last 3rd 2nd 1st
-1361 1st 2nd 3rd Last 3rd 2nd 1st
-1362 1st 2nd 3rd Last 3rd 2nd 1st
-1363 1st 2nd 3rd Last 3rd 2nd 1st
-1364 1st 2nd 3rd Last 3rd 2nd 1st
-1365 1st 2nd 3rd Last 3rd 2nd 1st
-1366 1st 2nd 3rd Last 3rd 2nd 1st
-1367 1st 2nd 3rd Last 3rd 2nd 1st
-1368 1st 2nd 3rd Last 3rd 2nd 1st
-1369 1st 2nd 3rd Last 3rd 2nd 1st
-1370 1st 2nd 3rd Last 3rd 2nd 1st
-1371 1st 2nd 3rd Last 3rd 2nd 1st
-1372 1st 2nd 3rd Last 3rd 2nd 1st
-1373 1st 2nd 3rd Last 3rd 2nd 1st
-1374 1st 2nd 3rd Last 3rd 2nd 1st
-1375 1st 2nd 3rd Last 3rd 2nd 1st
-1376 1st 2nd 3rd Last 3rd 2nd 1st
-1377 1st 2nd 3rd Last 3rd 2nd 1st
-1378 1st 2nd 3rd Last 3rd 2nd 1st
-1379 1st 2nd 3rd Last 3rd 2nd 1st
-1380 1st 2nd 3rd Last 3rd 2nd 1st
-1381 1st 2nd 3rd Last 3rd 2nd 1st
-1382 1st 2nd 3rd Last 3rd 2nd 1st
-1383 1st 2nd 3rd Last 3rd 2nd 1st
-1384 1st 2nd 3rd Last 3rd 2nd 1st
-1385 1st 2nd 3rd Last 3rd 2nd 1st
-1386 1st 2nd 3rd Last 3rd 2nd 1st
-1387 1st 2nd 3rd Last 3rd 2nd 1st
-1388 1st 2nd 3rd Last 3rd 2nd 1st
-1389 1st 2nd 3rd Last 3rd 2nd 1st
-1390 1st 2nd 3rd Last 3rd 2nd 1st
-1391 1st 2nd 3rd Last 3rd 2nd 1st
-1392 1st 2nd 3rd Last 3rd 2nd 1st
-1393 1st 2nd 3rd Last 3rd 2nd 1st
-1394 1st 2nd 3rd Last 3rd 2nd 1st
-1395 1st 2nd 3rd Last 3rd 2nd 1st
-1396 1st 2nd 3rd Last 3rd 2nd 1st
-1397 1st 2nd 3rd Last 3rd 2nd 1st
-1398 1st 2nd 3rd Last 3rd 2nd 1st
-1399 1st 2nd 3rd Last 3rd 2nd 1st
-1400 1st 2nd 3rd Last 3rd 2nd 1st
-1401 1st 2nd 3rd Last 3rd 2nd 1st
-1402 1st 2nd 3rd Last 3rd 2nd 1st
-1403 1st 2nd 3rd Last 3rd 2nd 1st
-1404 1st 2nd 3rd Last 3rd 2nd 1st
-1405 1st 2nd 3rd Last 3rd 2nd 1st
-1406 1st 2nd 3rd Last 3rd 2nd 1st
-1407 1st 2nd 3rd Last 3rd 2nd 1st
-1408 1st 2nd 3rd Last 3rd 2nd 1st
-1409 1st 2nd 3rd Last 3rd 2nd 1st
-1410 1st 2nd 3rd Last 3rd 2nd 1st
-1411 1st 2nd 3rd Last 3rd 2nd 1st
-1412 1st 2nd 3rd Last 3rd 2nd 1st
-1413 1st 2nd 3rd Last 3rd 2nd 1st
-1414 1st 2nd 3rd Last 3rd 2nd 1st
-1415 1st 2nd 3rd Last 3rd 2nd 1st
-1416 1st 2nd 3rd Last 3rd 2nd 1st
-1417 1st 2nd 3rd Last 3rd 2nd 1st
-1418 1st 2nd 3rd Last 3rd 2nd 1st
-1419 1st 2nd 3rd Last 3rd 2nd 1st
-1420 1st 2nd 3rd Last 3rd 2nd 1st
-1421 1st 2nd 3rd Last 3rd 2nd 1st
-1422 1st 2nd 3rd Last 3rd 2nd 1st
-1423 1st 2nd 3rd Last 3rd 2nd 1st
-1424 1st 2nd 3rd Last 3rd 2nd 1st
-1425 1st 2nd 3rd Last 3rd 2nd 1st
-1426 1st 2nd 3rd Last 3rd 2nd 1st
-1427 1st 2nd 3rd Last 3rd 2nd 1st
-1428 1st 2nd 3rd Last 3rd 2nd 1st
-1429 1st 2nd 3rd Last 3rd 2nd 1st
-1430 1st 2nd 3rd Last 3rd 2nd 1st
-1431 1st 2nd 3rd Last 3rd 2nd 1st
-1432 1st 2nd 3rd Last 3rd 2nd 1st
-1433 1st 2nd 3rd Last 3rd 2nd 1st
-1434 1st 2nd 3rd Last 3rd 2nd 1st
-1435 1st 2nd 3rd Last 3rd 2nd 1st
-1436 1st 2nd 3rd Last 3rd 2nd 1st
-1437 1st 2nd 3rd Last 3rd 2nd 1st
-1438 1st 2nd 3rd Last 3rd 2nd 1st
-1439 1st 2nd 3rd Last 3rd 2nd 1st
-1440 1st 2nd 3rd Last 3rd 2nd 1st
-1441 1st 2nd 3rd Last 3rd 2nd 1st
-1442 1st 2nd 3rd Last 3rd 2nd 1st
-1443 1st 2nd 3rd Last 3rd 2nd 1st
-1444 1st 2nd 3rd Last 3rd 2nd 1st
-1445 1st 2nd 3rd Last 3rd 2nd 1st
-1446 1st 2nd 3rd Last 3rd 2nd 1st
-1447 1st 2nd 3rd Last 3rd 2nd 1st
-1448 1st 2nd 3rd Last 3rd 2nd 1st
-1449 1st 2nd 3rd Last 3rd 2nd 1st
-1450 1st 2nd 3rd Last 3rd 2nd 1st
-1451 1st 2nd 3rd Last 3rd 2nd 1st
-1452 1st 2nd 3rd Last 3rd 2nd 1st
-1453 1st 2nd 3rd Last 3rd 2nd 1st
-1454 1st 2nd 3rd Last 3rd 2nd 1st
-1455 1st 2nd 3rd Last 3rd 2nd 1st
-1456 1st 2nd 3rd Last 3rd 2nd 1st
-1457 1st 2nd 3rd Last 3rd 2nd 1st
-1458 1st 2nd 3rd Last 3rd 2nd 1st
-1459 1st 2nd 3rd Last 3rd 2nd 1st
-1460 1st 2nd 3rd Last 3rd 2nd 1st
-1461 1st 2nd 3rd Last 3rd 2nd 1st
-1462 1st 2nd 3rd Last 3rd 2nd 1st
-1463 1st 2nd 3rd Last 3rd 2nd 1st
-1464 1st 2nd 3rd Last 3rd 2nd 1st
-1465 1st 2nd 3rd Last 3rd 2nd 1st
-1466 1st 2nd 3rd Last 3rd 2nd 1st
-1467 1st 2nd 3rd Last 3rd 2nd 1st
-1468 1st 2nd 3rd Last 3rd 2nd 1st
-1469 1st 2nd 3rd Last 3rd 2nd 1st
-1470 1st 2nd 3rd Last 3rd 2nd 1st
-1471 1st 2nd 3rd Last 3rd 2nd 1st
-1472 1st 2nd 3rd Last 3rd 2nd 1st
-1473 1st 2nd 3rd Last 3rd 2nd 1st
-1474 1st 2nd 3rd Last 3rd 2nd 1st
-1475 1st 2nd 3rd Last 3rd 2nd 1st
-1476 1st 2nd 3rd Last 3rd 2nd 1st
-1477 1st 2nd 3rd Last 3rd 2nd 1st
-1478 1st 2nd 3rd Last 3rd 2nd 1st
-1479 1st 2nd 3rd Last 3rd 2nd 1st
-1480 1st 2nd 3rd Last 3rd 2nd 1st
-1481 1st 2nd 3rd Last 3rd 2nd 1st
-1482 1st 2nd 3rd Last 3rd 2nd 1st
-1483 1st 2nd 3rd Last 3rd 2nd 1st
-1484 1st 2nd 3rd Last 3rd 2nd 1st
-1485 1st 2nd 3rd Last 3rd 2nd 1st
-1486 1st 2nd 3rd Last 3rd 2nd 1st
-1487 1st 2nd 3rd Last 3rd 2nd 1st
-1488 1st 2nd 3rd Last 3rd 2nd 1st
-1489 1st 2nd 3rd Last 3rd 2nd 1st
-1490 1st 2nd 3rd Last 3rd 2nd 1st
-1491 1st 2nd 3rd Last 3rd 2nd 1st
-1492 1st 2nd 3rd Last 3rd 2nd 1st
-1493 1st 2nd 3rd Last 3rd 2nd 1st
-1494 1st 2nd 3rd Last 3rd 2nd 1st
-1495 1st 2nd 3rd Last 3rd 2nd 1st
-1496 1st 2nd 3rd Last 3rd 2nd 1st
-1497 1st 2nd 3rd Last 3rd 2nd 1st
-1498 1st 2nd 3rd Last 3rd 2nd 1st
-1499 1st 2nd 3rd Last 3rd 2nd 1st
-1500 1st 2nd 3rd Last 3rd 2nd 1st
-1501 1st 2nd 3rd Last 3rd 2nd 1st
-1502 1st 2nd 3rd Last 3rd 2nd 1st
-1503 1st 2nd 3rd Last 3rd 2nd 1st
-1504 1st 2nd 3rd Last 3rd 2nd 1st
-1505 1st 2nd 3rd Last 3rd 2nd 1st
-1506 1st 2nd 3rd Last 3rd 2nd 1st
-1507 1st 2nd 3rd Last 3rd 2nd 1st
-1508 1st 2nd 3rd Last 3rd 2nd 1st
-1509 1st 2nd 3rd Last 3rd 2nd 1st
-1510 1st 2nd 3rd Last 3rd 2nd 1st
-1511 1st 2nd 3rd Last 3rd 2nd 1st
-1512 1st 2nd 3rd Last 3rd 2nd 1st
-1513 1st 2nd 3rd Last 3rd 2nd 1st
-1514 1st 2nd 3rd Last 3rd 2nd 1st
-1515 1st 2nd 3rd Last 3rd 2nd 1st
-1516 1st 2nd 3rd Last 3rd 2nd 1st
-1517 1st 2nd 3rd Last 3rd 2nd 1st
-1518 1st 2nd 3rd Last 3rd 2nd 1st
-1519 1st 2nd 3rd Last 3rd 2nd 1st
-1520 1st 2nd 3rd Last 3rd 2nd 1st
-1521 1st 2nd 3rd Last 3rd 2nd 1st
-1522 1st 2nd 3rd Last 3rd 2nd 1st
-1523 1st 2nd 3rd Last 3rd 2nd 1st
-1524 1st 2nd 3rd Last 3rd 2nd 1st
-1525 1st 2nd 3rd Last 3rd 2nd 1st
-1526 1st 2nd 3rd Last 3rd 2nd 1st
-1527 1st 2nd 3rd Last 3rd 2nd 1st
-1528 1st 2nd 3rd Last 3rd 2nd 1st
-1529 1st 2nd 3rd Last 3rd 2nd 1st
-1530 1st 2nd 3rd Last 3rd 2nd 1st
-1531 1st 2nd 3rd Last 3rd 2nd 1st
-1532 1st 2nd 3rd Last 3rd 2nd 1st
-1533 1st 2nd 3rd Last 3rd 2nd 1st
-1534 1st 2nd 3rd Last 3rd 2nd 1st
-1535 1st 2nd 3rd Last 3rd 2nd 1st
-1536 1st 2nd 3rd Last 3rd 2nd 1st
-1537 1st 2nd 3rd Last 3rd 2nd 1st
-1538 1st 2nd 3rd Last 3rd 2nd 1st
-1539 1st 2nd 3rd Last 3rd 2nd 1st
-1540 1st 2nd 3rd Last 3rd 2nd 1st
-1541 1st 2nd 3rd Last 3rd 2nd 1st
-1542 1st 2nd 3rd Last 3rd 2nd 1st
-1543 1st 2nd 3rd Last 3rd 2nd 1st
-1544 1st 2nd 3rd Last 3rd 2nd 1st
-1545 1st 2nd 3rd Last 3rd 2nd 1st
-1546 1st 2nd 3rd Last 3rd 2nd 1st
-1547 1st 2nd 3rd Last 3rd 2nd 1st
-1548 1st 2nd 3rd Last 3rd 2nd 1st
-1549 1st 2nd 3rd Last 3rd 2nd 1st
-1550 1st 2nd 3rd Last 3rd 2nd 1st
-1551 1st 2nd 3rd Last 3rd 2nd 1st
-1552 1st 2nd 3rd Last 3rd 2nd 1st
-1553 1st 2nd 3rd Last 3rd 2nd 1st
-1554 1st 2nd 3rd Last 3rd 2nd 1st
-1555 1st 2nd 3rd Last 3rd 2nd 1st
-1556 1st 2nd 3rd Last 3rd 2nd 1st
-1557 1st 2nd 3rd Last 3rd 2nd 1st
-1558 1st 2nd 3rd Last 3rd 2nd 1st
-1559 1st 2nd 3rd Last 3rd 2nd 1st
-1560 1st 2nd 3rd Last 3rd 2nd 1st
-1561 1st 2nd 3rd Last 3rd 2nd 1st
-1562 1st 2nd 3rd Last 3rd 2nd 1st
-1563 1st 2nd 3rd Last 3rd 2nd 1st
-1564 1st 2nd 3rd Last 3rd 2nd 1st
-1565 1st 2nd 3rd Last 3rd 2nd 1st
-1566 1st 2nd 3rd Last 3rd 2nd 1st
-1567 1st 2nd 3rd Last 3rd 2nd 1st
-1568 1st 2nd 3rd Last 3rd 2nd 1st
-1569 1st 2nd 3rd Last 3rd 2nd 1st
-1570 1st 2nd 3rd Last 3rd 2nd 1st
-1571 1st 2nd 3rd Last 3rd 2nd 1st
-1572 1st 2nd 3rd Last 3rd 2nd 1st
-1573 1st 2nd 3rd Last 3rd 2nd 1st
-1574 1st 2nd 3rd Last 3rd 2nd 1st
-1575 1st 2nd 3rd Last 3rd 2nd 1st
-1576 1st 2nd 3rd Last 3rd 2nd 1st
-1577 1st 2nd 3rd Last 3rd 2nd 1st
-1578 1st 2nd 3rd Last 3rd 2nd 1st
-1579 1st 2nd 3rd Last 3rd 2nd 1st
-1580 1st 2nd 3rd Last 3rd 2nd 1st
-1581 1st 2nd 3rd Last 3rd 2nd 1st
-1582 1st 2nd 3rd Last 3rd 2nd 1st
-1583 1st 2nd 3rd Last 3rd 2nd 1st
-1584 1st 2nd 3rd Last 3rd 2nd 1st
-1585 1st 2nd 3rd Last 3rd 2nd 1st
-1586 1st 2nd 3rd Last 3rd 2nd 1st
-1587 1st 2nd 3rd Last 3rd 2nd 1st
-1588 1st 2nd 3rd Last 3rd 2nd 1st
-1589 1st 2nd 3rd Last 3rd 2nd 1st
-1590 1st 2nd 3rd Last 3rd 2nd 1st
-1591 1st 2nd 3rd Last 3rd 2nd 1st
-1592 1st 2nd 3rd Last 3rd 2nd 1st
-1593 1st 2nd 3rd Last 3rd 2nd 1st
-1594 1st 2nd 3rd Last 3rd 2nd 1st
-1595 1st 2nd 3rd Last 3rd 2nd 1st
-1596 1st 2nd 3rd Last 3rd 2nd 1st
-1597 1st 2nd 3rd Last 3rd 2nd 1st
-1598 1st 2nd 3rd Last 3rd 2nd 1st
-1599 1st 2nd 3rd Last 3rd 2nd 1st
-1600 1st 2nd 3rd Last 3rd 2nd 1st
-1601 1st 2nd 3rd Last 3rd 2nd 1st
-1602 1st 2nd 3rd Last 3rd 2nd 1st
-1603 1st 2nd 3rd Last 3rd 2nd 1st
-1604 1st 2nd 3rd Last 3rd 2nd 1st
-1605 1st 2nd 3rd Last 3rd 2nd 1st
-1606 1st 2nd 3rd Last 3rd 2nd 1st
-1607 1st 2nd 3rd Last 3rd 2nd 1st
-1608 1st 2nd 3rd Last 3rd 2nd 1st
-1609 1st 2nd 3rd Last 3rd 2nd 1st
-1610 1st 2nd 3rd Last 3rd 2nd 1st
-1611 1st 2nd 3rd Last 3rd 2nd 1st
-1612 1st 2nd 3rd Last 3rd 2nd 1st
-1613 1st 2nd 3rd Last 3rd 2nd 1st
-1614 1st 2nd 3rd Last 3rd 2nd 1st
-1615 1st 2nd 3rd Last 3rd 2nd 1st
-1616 1st 2nd 3rd Last 3rd 2nd 1st
-1617 1st 2nd 3rd Last 3rd 2nd 1st
-1618 1st 2nd 3rd Last 3rd 2nd 1st
-1619 1st 2nd 3rd Last 3rd 2nd 1st
-1620 1st 2nd 3rd Last 3rd 2nd 1st
-1621 1st 2nd 3rd Last 3rd 2nd 1st
-1622 1st 2nd 3rd Last 3rd 2nd 1st
-1623 1st 2nd 3rd Last 3rd 2nd 1st
-1624 1st 2nd 3rd Last 3rd 2nd 1st
-1625 1st 2nd 3rd Last 3rd 2nd 1st
-1626 1st 2nd 3rd Last 3rd 2nd 1st
-1627 1st 2nd 3rd Last 3rd 2nd 1st
-1628 1st 2nd 3rd Last 3rd 2nd 1st
-1629 1st 2nd 3rd Last 3rd 2nd 1st
-1630 1st 2nd 3rd Last 3rd 2nd 1st
-1631 1st 2nd 3rd Last 3rd 2nd 1st
-1632 1st 2nd 3rd Last 3rd 2nd 1st
-1633 1st 2nd 3rd Last 3rd 2nd 1st
-1634 1st 2nd 3rd Last 3rd 2nd 1st
-1635 1st 2nd 3rd Last 3rd 2nd 1st
-1636 1st 2nd 3rd Last 3rd 2nd 1st
-1637 1st 2nd 3rd Last 3rd 2nd 1st
-1638 1st 2nd 3rd Last 3rd 2nd 1st
-1639 1st 2nd 3rd Last 3rd 2nd 1st
-1640 1st 2nd 3rd Last 3rd 2nd 1st
-1641 1st 2nd 3rd Last 3rd 2nd 1st
-1642 1st 2nd 3rd Last 3rd 2nd 1st
-1643 1st 2nd 3rd Last 3rd 2nd 1st
-1644 1st 2nd 3rd Last 3rd 2nd 1st
-1645 1st 2nd 3rd Last 3rd 2nd 1st
-1646 1st 2nd 3rd Last 3rd 2nd 1st
-1647 1st 2nd 3rd Last 3rd 2nd 1st
-1648 1st 2nd 3rd Last 3rd 2nd 1st
-1649 1st 2nd 3rd Last 3rd 2nd 1st
-1650 1st 2nd 3rd Last 3rd 2nd 1st
-1651 1st 2nd 3rd Last 3rd 2nd 1st
-1652 1st 2nd 3rd Last 3rd 2nd 1st
-1653 1st 2nd 3rd Last 3rd 2nd 1st
-1654 1st 2nd 3rd Last 3rd 2nd 1st
-1655 1st 2nd 3rd Last 3rd 2nd 1st
-1656 1st 2nd 3rd Last 3rd 2nd 1st
-1657 1st 2nd 3rd Last 3rd 2nd 1st
-1658 1st 2nd 3rd Last 3rd 2nd 1st
-1659 1st 2nd 3rd Last 3rd 2nd 1st
-1660 1st 2nd 3rd Last 3rd 2nd 1st
-1661 1st 2nd 3rd Last 3rd 2nd 1st
-1662 1st 2nd 3rd Last 3rd 2nd 1st
-1663 1st 2nd 3rd Last 3rd 2nd 1st
-1664 1st 2nd 3rd Last 3rd 2nd 1st
-1665 1st 2nd 3rd Last 3rd 2nd 1st
-1666 1st 2nd 3rd Last 3rd 2nd 1st
-1667 1st 2nd 3rd Last 3rd 2nd 1st
-1668 1st 2nd 3rd Last 3rd 2nd 1st
-1669 1st 2nd 3rd Last 3rd 2nd 1st
-1670 1st 2nd 3rd Last 3rd 2nd 1st
-1671 1st 2nd 3rd Last 3rd 2nd 1st
-1672 1st 2nd 3rd Last 3rd 2nd 1st
-1673 1st 2nd 3rd Last 3rd 2nd 1st
-1674 1st 2nd 3rd Last 3rd 2nd 1st
-1675 1st 2nd 3rd Last 3rd 2nd 1st
-1676 1st 2nd 3rd Last 3rd 2nd 1st
-1677 1st 2nd 3rd Last 3rd 2nd 1st
-1678 1st 2nd 3rd Last 3rd 2nd 1st
-1679 1st 2nd 3rd Last 3rd 2nd 1st
-1680 1st 2nd 3rd Last 3rd 2nd 1st
-1681 1st 2nd 3rd Last 3rd 2nd 1st
-1682 1st 2nd 3rd Last 3rd 2nd 1st
-1683 1st 2nd 3rd Last 3rd 2nd 1st
-1684 1st 2nd 3rd Last 3rd 2nd 1st
-1685 1st 2nd 3rd Last 3rd 2nd 1st
-1686 1st 2nd 3rd Last 3rd 2nd 1st
-1687 1st 2nd 3rd Last 3rd 2nd 1st
-1688 1st 2nd 3rd Last 3rd 2nd 1st
-1689 1st 2nd 3rd Last 3rd 2nd 1st
-1690 1st 2nd 3rd Last 3rd 2nd 1st
-1691 1st 2nd 3rd Last 3rd 2nd 1st
-1692 1st 2nd 3rd Last 3rd 2nd 1st
-1693 1st 2nd 3rd Last 3rd 2nd 1st
-1694 1st 2nd 3rd Last 3rd 2nd 1st
-1695 1st 2nd 3rd Last 3rd 2nd 1st
-1696 1st 2nd 3rd Last 3rd 2nd 1st
-1697 1st 2nd 3rd Last 3rd 2nd 1st
-1698 1st 2nd 3rd Last 3rd 2nd 1st
-1699 1st 2nd 3rd Last 3rd 2nd 1st
-1700 1st 2nd 3rd Last 3rd 2nd 1st
-1701 1st 2nd 3rd Last 3rd 2nd 1st
-1702 1st 2nd 3rd Last 3rd 2nd 1st
-1703 1st 2nd 3rd Last 3rd 2nd 1st
-1704 1st 2nd 3rd Last 3rd 2nd 1st
-1705 1st 2nd 3rd Last 3rd 2nd 1st
-1706 1st 2nd 3rd Last 3rd 2nd 1st
-1707 1st 2nd 3rd Last 3rd 2nd 1st
-1708 1st 2nd 3rd Last 3rd 2nd 1st
-1709 1st 2nd 3rd Last 3rd 2nd 1st
-1710 1st 2nd 3rd Last 3rd 2nd 1st
-1711 1st 2nd 3rd Last 3rd 2nd 1st
-1712 1st 2nd 3rd Last 3rd 2nd 1st
-1713 1st 2nd 3rd Last 3rd 2nd 1st
-1714 1st 2nd 3rd Last 3rd 2nd 1st
-1715 1st 2nd 3rd Last 3rd 2nd 1st
-1716 1st 2nd 3rd Last 3rd 2nd 1st
-1717 1st 2nd 3rd Last 3rd 2nd 1st
-1718 1st 2nd 3rd Last 3rd 2nd 1st
-1719 1st 2nd 3rd Last 3rd 2nd 1st
-1720 1st 2nd 3rd Last 3rd 2nd 1st
-1721 1st 2nd 3rd Last 3rd 2nd 1st
-1722 1st 2nd 3rd Last 3rd 2nd 1st
-1723 1st 2nd 3rd Last 3rd 2nd 1st
-1724 1st 2nd 3rd Last 3rd 2nd 1st
-1725 1st 2nd 3rd Last 3rd 2nd 1st
-1726 1st 2nd 3rd Last 3rd 2nd 1st
-1727 1st 2nd 3rd Last 3rd 2nd 1st
-1728 1st 2nd 3rd Last 3rd 2nd 1st
-1729 1st 2nd 3rd Last 3rd 2nd 1st
-1730 1st 2nd 3rd Last 3rd 2nd 1st
-1731 1st 2nd 3rd Last 3rd 2nd 1st
-1732 1st 2nd 3rd Last 3rd 2nd 1st
-1733 1st 2nd 3rd Last 3rd 2nd 1st
-1734 1st 2nd 3rd Last 3rd 2nd 1st
-1735 1st 2nd 3rd Last 3rd 2nd 1st
-1736 1st 2nd 3rd Last 3rd 2nd 1st
-1737 1st 2nd 3rd Last 3rd 2nd 1st
-1738 1st 2nd 3rd Last 3rd 2nd 1st
-1739 1st 2nd 3rd Last 3rd 2nd 1st
-1740 1st 2nd 3rd Last 3rd 2nd 1st
-1741 1st 2nd 3rd Last 3rd 2nd 1st
-1742 1st 2nd 3rd Last 3rd 2nd 1st
-1743 1st 2nd 3rd Last 3rd 2nd 1st
-1744 1st 2nd 3rd Last 3rd 2nd 1st
-1745 1st 2nd 3rd Last 3rd 2nd 1st
-1746 1st 2nd 3rd Last 3rd 2nd 1st
-1747 1st 2nd 3rd Last 3rd 2nd 1st
-1748 1st 2nd 3rd Last 3rd 2nd 1st
-1749 1st 2nd 3rd Last 3rd 2nd 1st
-1750 1st 2nd 3rd Last 3rd 2nd 1st
-1751 1st 2nd 3rd Last 3rd 2nd 1st
-1752 1st 2nd 3rd Last 3rd 2nd 1st
-1753 1st 2nd 3rd Last 3rd 2nd 1st
-1754 1st 2nd 3rd Last 3rd 2nd 1st
-1755 1st 2nd 3rd Last 3rd 2nd 1st
-1756 1st 2nd 3rd Last 3rd 2nd 1st
-1757 1st 2nd 3rd Last 3rd 2nd 1st
-1758 1st 2nd 3rd Last 3rd 2nd 1st
-1759 1st 2nd 3rd Last 3rd 2nd 1st
-1760 1st 2nd 3rd Last 3rd 2nd 1st
-1761 1st 2nd 3rd Last 3rd 2nd 1st
-1762 1st 2nd 3rd Last 3rd 2nd 1st
-1763 1st 2nd 3rd Last 3rd 2nd 1st
-1764 1st 2nd 3rd Last 3rd 2nd 1st
-1765 1st 2nd 3rd Last 3rd 2nd 1st
-1766 1st 2nd 3rd Last 3rd 2nd 1st
-1767 1st 2nd 3rd Last 3rd 2nd 1st
-1768 1st 2nd 3rd Last 3rd 2nd 1st
-1769 1st 2nd 3rd Last 3rd 2nd 1st
-1770 1st 2nd 3rd Last 3rd 2nd 1st
-1771 1st 2nd 3rd Last 3rd 2nd 1st
-1772 1st 2nd 3rd Last 3rd 2nd 1st
-1773 1st 2nd 3rd Last 3rd 2nd 1st
-1774 1st 2nd 3rd Last 3rd 2nd 1st
-1775 1st 2nd 3rd Last 3rd 2nd 1st
-1776 1st 2nd 3rd Last 3rd 2nd 1st
-1777 1st 2nd 3rd Last 3rd 2nd 1st
-1778 1st 2nd 3rd Last 3rd 2nd 1st
-1779 1st 2nd 3rd Last 3rd 2nd 1st
-1780 1st 2nd 3rd Last 3rd 2nd 1st
-1781 1st 2nd 3rd Last 3rd 2nd 1st
-1782 1st 2nd 3rd Last 3rd 2nd 1st
-1783 1st 2nd 3rd Last 3rd 2nd 1st
-1784 1st 2nd 3rd Last 3rd 2nd 1st
-1785 1st 2nd 3rd Last 3rd 2nd 1st
-1786 1st 2nd 3rd Last 3rd 2nd 1st
-1787 1st 2nd 3rd Last 3rd 2nd 1st
-1788 1st 2nd 3rd Last 3rd 2nd 1st
-1789 1st 2nd 3rd Last 3rd 2nd 1st
-1790 1st 2nd 3rd Last 3rd 2nd 1st
-1791 1st 2nd 3rd Last 3rd 2nd 1st
-1792 1st 2nd 3rd Last 3rd 2nd 1st
-1793 1st 2nd 3rd Last 3rd 2nd 1st
-1794 1st 2nd 3rd Last 3rd 2nd 1st
-1795 1st 2nd 3rd Last 3rd 2nd 1st
-1796 1st 2nd 3rd Last 3rd 2nd 1st
-1797 1st 2nd 3rd Last 3rd 2nd 1st
-1798 1st 2nd 3rd Last 3rd 2nd 1st
-1799 1st 2nd 3rd Last 3rd 2nd 1st
-1800 1st 2nd 3rd Last 3rd 2nd 1st
-1801 1st 2nd 3rd Last 3rd 2nd 1st
-1802 1st 2nd 3rd Last 3rd 2nd 1st
-1803 1st 2nd 3rd Last 3rd 2nd 1st
-1804 1st 2nd 3rd Last 3rd 2nd 1st
-1805 1st 2nd 3rd Last 3rd 2nd 1st
-1806 1st 2nd 3rd Last 3rd 2nd 1st
-1807 1st 2nd 3rd Last 3rd 2nd 1st
-1808 1st 2nd 3rd Last 3rd 2nd 1st
-1809 1st 2nd 3rd Last 3rd 2nd 1st
-1810 1st 2nd 3rd Last 3rd 2nd 1st
-1811 1st 2nd 3rd Last 3rd 2nd 1st
-1812 1st 2nd 3rd Last 3rd 2nd 1st
-1813 1st 2nd 3rd Last 3rd 2nd 1st
-1814 1st 2nd 3rd Last 3rd 2nd 1st
-1815 1st 2nd 3rd Last 3rd 2nd 1st
-1816 1st 2nd 3rd Last 3rd 2nd 1st
-1817 1st 2nd 3rd Last 3rd 2nd 1st
-1818 1st 2nd 3rd Last 3rd 2nd 1st
-1819 1st 2nd 3rd Last 3rd 2nd 1st
-1820 1st 2nd 3rd Last 3rd 2nd 1st
-1821 1st 2nd 3rd Last 3rd 2nd 1st
-1822 1st 2nd 3rd Last 3rd 2nd 1st
-1823 1st 2nd 3rd Last 3rd 2nd 1st
-1824 1st 2nd 3rd Last 3rd 2nd 1st
-1825 1st 2nd 3rd Last 3rd 2nd 1st
-1826 1st 2nd 3rd Last 3rd 2nd 1st
-1827 1st 2nd 3rd Last 3rd 2nd 1st
-1828 1st 2nd 3rd Last 3rd 2nd 1st
-1829 1st 2nd 3rd Last 3rd 2nd 1st
-1830 1st 2nd 3rd Last 3rd 2nd 1st
-1831 1st 2nd 3rd Last 3rd 2nd 1st
-1832 1st 2nd 3rd Last 3rd 2nd 1st
-1833 1st 2nd 3rd Last 3rd 2nd 1st
-1834 1st 2nd 3rd Last 3rd 2nd 1st
-1835 1st 2nd 3rd Last 3rd 2nd 1st
-1836 1st 2nd 3rd Last 3rd 2nd 1st
-1837 1st 2nd 3rd Last 3rd 2nd 1st
-1838 1st 2nd 3rd Last 3rd 2nd 1st
-1839 1st 2nd 3rd Last 3rd 2nd 1st
-1840 1st 2nd 3rd Last 3rd 2nd 1st
-1841 1st 2nd 3rd Last 3rd 2nd 1st
-1842 1st 2nd 3rd Last 3rd 2nd 1st
-1843 1st 2nd 3rd Last 3rd 2nd 1st
-1844 1st 2nd 3rd Last 3rd 2nd 1st
-1845 1st 2nd 3rd Last 3rd 2nd 1st
-1846 1st 2nd 3rd Last 3rd 2nd 1st
-1847 1st 2nd 3rd Last 3rd 2nd 1st
-1848 1st 2nd 3rd Last 3rd 2nd 1st
-1849 1st 2nd 3rd Last 3rd 2nd 1st
-1850 1st 2nd 3rd Last 3rd 2nd 1st
-1851 1st 2nd 3rd Last 3rd 2nd 1st
-1852 1st 2nd 3rd Last 3rd 2nd 1st
-1853 1st 2nd 3rd Last 3rd 2nd 1st
-1854 1st 2nd 3rd Last 3rd 2nd 1st
-1855 1st 2nd 3rd Last 3rd 2nd 1st
-1856 1st 2nd 3rd Last 3rd 2nd 1st
-1857 1st 2nd 3rd Last 3rd 2nd 1st
-1858 1st 2nd 3rd Last 3rd 2nd 1st
-1859 1st 2nd 3rd Last 3rd 2nd 1st
-1860 1st 2nd 3rd Last 3rd 2nd 1st
-1861 1st 2nd 3rd Last 3rd 2nd 1st
-1862 1st 2nd 3rd Last 3rd 2nd 1st
-1863 1st 2nd 3rd Last 3rd 2nd 1st
-1864 1st 2nd 3rd Last 3rd 2nd 1st
-1865 1st 2nd 3rd Last 3rd 2nd 1st
-1866 1st 2nd 3rd Last 3rd 2nd 1st
-1867 1st 2nd 3rd Last 3rd 2nd 1st
-1868 1st 2nd 3rd Last 3rd 2nd 1st
-1869 1st 2nd 3rd Last 3rd 2nd 1st
-1870 1st 2nd 3rd Last 3rd 2nd 1st
-1871 1st 2nd 3rd Last 3rd 2nd 1st
-1872 1st 2nd 3rd Last 3rd 2nd 1st
-1873 1st 2nd 3rd Last 3rd 2nd 1st
-1874 1st 2nd 3rd Last 3rd 2nd 1st
-1875 1st 2nd 3rd Last 3rd 2nd 1st
-1876 1st 2nd 3rd Last 3rd 2nd 1st
-1877 1st 2nd 3rd Last 3rd 2nd 1st
-1878 1st 2nd 3rd Last 3rd 2nd 1st
-1879 1st 2nd 3rd Last 3rd 2nd 1st
-1880 1st 2nd 3rd Last 3rd 2nd 1st
-1881 1st 2nd 3rd Last 3rd 2nd 1st
-1882 1st 2nd 3rd Last 3rd 2nd 1st
-1883 1st 2nd 3rd Last 3rd 2nd 1st
-1884 1st 2nd 3rd Last 3rd 2nd 1st
-1885 1st 2nd 3rd Last 3rd 2nd 1st
-1886 1st 2nd 3rd Last 3rd 2nd 1st
-1887 1st 2nd 3rd Last 3rd 2nd 1st
-1888 1st 2nd 3rd Last 3rd 2nd 1st
-1889 1st 2nd 3rd Last 3rd 2nd 1st
-1890 1st 2nd 3rd Last 3rd 2nd 1st
-1891 1st 2nd 3rd Last 3rd 2nd 1st
-1892 1st 2nd 3rd Last 3rd 2nd 1st
-1893 1st 2nd 3rd Last 3rd 2nd 1st
-1894 1st 2nd 3rd Last 3rd 2nd 1st
-1895 1st 2nd 3rd Last 3rd 2nd 1st
-1896 1st 2nd 3rd Last 3rd 2nd 1st
-1897 1st 2nd 3rd Last 3rd 2nd 1st
-1898 1st 2nd 3rd Last 3rd 2nd 1st
-1899 1st 2nd 3rd Last 3rd 2nd 1st
-1900 1st 2nd 3rd Last 3rd 2nd 1st
-1901 1st 2nd 3rd Last 3rd 2nd 1st
-1902 1st 2nd 3rd Last 3rd 2nd 1st
-1903 1st 2nd 3rd Last 3rd 2nd 1st
-1904 1st 2nd 3rd Last 3rd 2nd 1st
-1905 1st 2nd 3rd Last 3rd 2nd 1st
-1906 1st 2nd 3rd Last 3rd 2nd 1st
-1907 1st 2nd 3rd Last 3rd 2nd 1st
-1908 1st 2nd 3rd Last 3rd 2nd 1st
-1909 1st 2nd 3rd Last 3rd 2nd 1st
-1910 1st 2nd 3rd Last 3rd 2nd 1st
-1911 1st 2nd 3rd Last 3rd 2nd 1st
-1912 1st 2nd 3rd Last 3rd 2nd 1st
-1913 1st 2nd 3rd Last 3rd 2nd 1st
-1914 1st 2nd 3rd Last 3rd 2nd 1st
-1915 1st 2nd 3rd Last 3rd 2nd 1st
-1916 1st 2nd 3rd Last 3rd 2nd 1st
-1917 1st 2nd 3rd Last 3rd 2nd 1st
-1918 1st 2nd 3rd Last 3rd 2nd 1st
-1919 1st 2nd 3rd Last 3rd 2nd 1st
-1920 1st 2nd 3rd Last 3rd 2nd 1st
-1921 1st 2nd 3rd Last 3rd 2nd 1st
-1922 1st 2nd 3rd Last 3rd 2nd 1st
-1923 1st 2nd 3rd Last 3rd 2nd 1st
-1924 1st 2nd 3rd Last 3rd 2nd 1st
-1925 1st 2nd 3rd Last 3rd 2nd 1st
-1926 1st 2nd 3rd Last 3rd 2nd 1st
-1927 1st 2nd 3rd Last 3rd 2nd 1st
-1928 1st 2nd 3rd Last 3rd 2nd 1st
-1929 1st 2nd 3rd Last 3rd 2nd 1st
-1930 1st 2nd 3rd Last 3rd 2nd 1st
-1931 1st 2nd 3rd Last 3rd 2nd 1st
-1932 1st 2nd 3rd Last 3rd 2nd 1st
-1933 1st 2nd 3rd Last 3rd 2nd 1st
-1934 1st 2nd 3rd Last 3rd 2nd 1st
-1935 1st 2nd 3rd Last 3rd 2nd 1st
-1936 1st 2nd 3rd Last 3rd 2nd 1st
-1937 1st 2nd 3rd Last 3rd 2nd 1st
-1938 1st 2nd 3rd Last 3rd 2nd 1st
-1939 1st 2nd 3rd Last 3rd 2nd 1st
-1940 1st 2nd 3rd Last 3rd 2nd 1st
-1941 1st 2nd 3rd Last 3rd 2nd 1st
-1942 1st 2nd 3rd Last 3rd 2nd 1st
-1943 1st 2nd 3rd Last 3rd 2nd 1st
-1944 1st 2nd 3rd Last 3rd 2nd 1st
-1945 1st 2nd 3rd Last 3rd 2nd 1st
-1946 1st 2nd 3rd Last 3rd 2nd 1st
-1947 1st 2nd 3rd Last 3rd 2nd 1st
-1948 1st 2nd 3rd Last 3rd 2nd 1st
-1949 1st 2nd 3rd Last 3rd 2nd 1st
-1950 1st 2nd 3rd Last 3rd 2nd 1st
-1951 1st 2nd 3rd Last 3rd 2nd 1st
-1952 1st 2nd 3rd Last 3rd 2nd 1st
-1953 1st 2nd 3rd Last 3rd 2nd 1st
-1954 1st 2nd 3rd Last 3rd 2nd 1st
-1955 1st 2nd 3rd Last 3rd 2nd 1st
-1956 1st 2nd 3rd Last 3rd 2nd 1st
-1957 1st 2nd 3rd Last 3rd 2nd 1st
-1958 1st 2nd 3rd Last 3rd 2nd 1st
-1959 1st 2nd 3rd Last 3rd 2nd 1st
-1960 1st 2nd 3rd Last 3rd 2nd 1st
-1961 1st 2nd 3rd Last 3rd 2nd 1st
-1962 1st 2nd 3rd Last 3rd 2nd 1st
-1963 1st 2nd 3rd Last 3rd 2nd 1st
-1964 1st 2nd 3rd Last 3rd 2nd 1st
-1965 1st 2nd 3rd Last 3rd 2nd 1st
-1966 1st 2nd 3rd Last 3rd 2nd 1st
-1967 1st 2nd 3rd Last 3rd 2nd 1st
-1968 1st 2nd 3rd Last 3rd 2nd 1st
-1969 1st 2nd 3rd Last 3rd 2nd 1st
-1970 1st 2nd 3rd Last 3rd 2nd 1st
-1971 1st 2nd 3rd Last 3rd 2nd 1st
-1972 1st 2nd 3rd Last 3rd 2nd 1st
-1973 1st 2nd 3rd Last 3rd 2nd 1st
-1974 1st 2nd 3rd Last 3rd 2nd 1st
-1975 1st 2nd 3rd Last 3rd 2nd 1st
-1976 1st 2nd 3rd Last 3rd 2nd 1st
-1977 1st 2nd 3rd Last 3rd 2nd 1st
-1978 1st 2nd 3rd Last 3rd 2nd 1st
-1979 1st 2nd 3rd Last 3rd 2nd 1st
-1980 1st 2nd 3rd Last 3rd 2nd 1st
-1981 1st 2nd 3rd Last 3rd 2nd 1st
-1982 1st 2nd 3rd Last 3rd 2nd 1st
-1983 1st 2nd 3rd Last 3rd 2nd 1st
-1984 1st 2nd 3rd Last 3rd 2nd 1st
-1985 1st 2nd 3rd Last 3rd 2nd 1st
-1986 1st 2nd 3rd Last 3rd 2nd 1st
-1987 1st 2nd 3rd Last 3rd 2nd 1st
-1988 1st 2nd 3rd Last 3rd 2nd 1st
-1989 1st 2nd 3rd Last 3rd 2nd 1st
-1990 1st 2nd 3rd Last 3rd 2nd 1st
-1991 1st 2nd 3rd Last 3rd 2nd 1st
-1992 1st 2nd 3rd Last 3rd 2nd 1st
-1993 1st 2nd 3rd Last 3rd 2nd 1st
-1994 1st 2nd 3rd Last 3rd 2nd 1st
-1995 1st 2nd 3rd Last 3rd 2nd 1st
-1996 1st 2nd 3rd Last 3rd 2nd 1st
-1997 1st 2nd 3rd Last 3rd 2nd 1st
-1998 1st 2nd 3rd Last 3rd 2nd 1st
-1999 1st 2nd 3rd Last 3rd 2nd 1st
-2000 1st 2nd 3rd Last 3rd 2nd 1st
-2001 1st 2nd 3rd Last 3rd 2nd 1st
-2002 1st 2nd 3rd Last 3rd 2nd 1st
-2003 1st 2nd 3rd Last 3rd 2nd 1st
-2004 1st 2nd 3rd Last 3rd 2nd 1st
-2005 1st 2nd 3rd Last 3rd 2nd 1st
-2006 1st 2nd 3rd Last 3rd 2nd 1st
-2007 1st 2nd 3rd Last 3rd 2nd 1st
-2008 1st 2nd 3rd Last 3rd 2nd 1st
-2009 1st 2nd 3rd Last 3rd 2nd 1st
-2010 1st 2nd 3rd Last 3rd 2nd 1st
-2011 1st 2nd 3rd Last 3rd 2nd 1st
-2012 1st 2nd 3rd Last 3rd 2nd 1st
-2013 1st 2nd 3rd Last 3rd 2nd 1st
-2014 1st 2nd 3rd Last 3rd 2nd 1st
-2015 1st 2nd 3rd Last 3rd 2nd 1st
-2016 1st 2nd 3rd Last 3rd 2nd 1st
-2017 1st 2nd 3rd Last 3rd 2nd 1st
-2018 1st 2nd 3rd Last 3rd 2nd 1st
-2019 1st 2nd 3rd Last 3rd 2nd 1st
-2020 1st 2nd 3rd Last 3rd 2nd 1st
-2021 1st 2nd 3rd Last 3rd 2nd 1st
-2022 1st 2nd 3rd Last 3rd 2nd 1st
-2023 1st 2nd 3rd Last 3rd 2nd 1st
-2024 1st 2nd 3rd Last 3rd 2nd 1st
-2025 1st 2nd 3rd Last 3rd 2nd 1st
-2026 1st 2nd 3rd Last 3rd 2nd 1st
-2027 1st 2nd 3rd Last 3rd 2nd 1st
-2028 1st 2nd 3rd Last 3rd 2nd 1st
-2029 1st 2nd 3rd Last 3rd 2nd 1st
-2030 1st 2nd 3rd Last 3rd 2nd 1st
-2031 1st 2nd 3rd Last 3rd 2nd 1st
-2032 1st 2nd 3rd Last 3rd 2nd 1st
-2033 1st 2nd 3rd Last 3rd 2nd 1st
-2034 1st 2nd 3rd Last 3rd 2nd 1st
-2035 1st 2nd 3rd Last 3rd 2nd 1st
-2036 1st 2nd 3rd Last 3rd 2nd 1st
-2037 1st 2nd 3rd Last 3rd 2nd 1st
-2038 1st 2nd 3rd Last 3rd 2nd 1st
-2039 1st 2nd 3rd Last 3rd 2nd 1st
-2040 1st 2nd 3rd Last 3rd 2nd 1st
-2041 1st 2nd 3rd Last 3rd 2nd 1st
-2042 1st 2nd 3rd Last 3rd 2nd 1st
-2043 1st 2nd 3rd Last 3rd 2nd 1st
-2044 1st 2nd 3rd Last 3rd 2nd 1st
-2045 1st 2nd 3rd Last 3rd 2nd 1st
-2046 1st 2nd 3rd Last 3rd 2nd 1st
-2047 1st 2nd 3rd Last 3rd 2nd 1st
-2048 1st 2nd 3rd Last 3rd 2nd 1st
-2049 1st 2nd 3rd Last 3rd 2nd 1st
-2050 1st 2nd 3rd Last 3rd 2nd 1st
-2051 1st 2nd 3rd Last 3rd 2nd 1st
-2052 1st 2nd 3rd Last 3rd 2nd 1st
-2053 1st 2nd 3rd Last 3rd 2nd 1st
-2054 1st 2nd 3rd Last 3rd 2nd 1st
-2055 1st 2nd 3rd Last 3rd 2nd 1st
-2056 1st 2nd 3rd Last 3rd 2nd 1st
-2057 1st 2nd 3rd Last 3rd 2nd 1st
-2058 1st 2nd 3rd Last 3rd 2nd 1st
-2059 1st 2nd 3rd Last 3rd 2nd 1st
-2060 1st 2nd 3rd Last 3rd 2nd 1st
-2061 1st 2nd 3rd Last 3rd 2nd 1st
-2062 1st 2nd 3rd Last 3rd 2nd 1st
-2063 1st 2nd 3rd Last 3rd 2nd 1st
-2064 1st 2nd 3rd Last 3rd 2nd 1st
-2065 1st 2nd 3rd Last 3rd 2nd 1st
-2066 1st 2nd 3rd Last 3rd 2nd 1st
-2067 1st 2nd 3rd Last 3rd 2nd 1st
-2068 1st 2nd 3rd Last 3rd 2nd 1st
-2069 1st 2nd 3rd Last 3rd 2nd 1st
-2070 1st 2nd 3rd Last 3rd 2nd 1st
-2071 1st 2nd 3rd Last 3rd 2nd 1st
-2072 1st 2nd 3rd Last 3rd 2nd 1st
-2073 1st 2nd 3rd Last 3rd 2nd 1st
-2074 1st 2nd 3rd Last 3rd 2nd 1st
-2075 1st 2nd 3rd Last 3rd 2nd 1st
-2076 1st 2nd 3rd Last 3rd 2nd 1st
-2077 1st 2nd 3rd Last 3rd 2nd 1st
-2078 1st 2nd 3rd Last 3rd 2nd 1st
-2079 1st 2nd 3rd Last 3rd 2nd 1st
-2080 1st 2nd 3rd Last 3rd 2nd 1st
-2081 1st 2nd 3rd Last 3rd 2nd 1st
-2082 1st 2nd 3rd Last 3rd 2nd 1st
-2083 1st 2nd 3rd Last 3rd 2nd 1st
-2084 1st 2nd 3rd Last 3rd 2nd 1st
-2085 1st 2nd 3rd Last 3rd 2nd 1st
-2086 1st 2nd 3rd Last 3rd 2nd 1st
-2087 1st 2nd 3rd Last 3rd 2nd 1st
-2088 1st 2nd 3rd Last 3rd 2nd 1st
-2089 1st 2nd 3rd Last 3rd 2nd 1st
-2090 1st 2nd 3rd Last 3rd 2nd 1st
-2091 1st 2nd 3rd Last 3rd 2nd 1st
-2092 1st 2nd 3rd Last 3rd 2nd 1st
-2093 1st 2nd 3rd Last 3rd 2nd 1st
-2094 1st 2nd 3rd Last 3rd 2nd 1st
-2095 1st 2nd 3rd Last 3rd 2nd 1st
-2096 1st 2nd 3rd Last 3rd 2nd 1st
-2097 1st 2nd 3rd Last 3rd 2nd 1st
-2098 1st 2nd 3rd Last 3rd 2nd 1st
-2099 1st 2nd 3rd Last 3rd 2nd 1st
-2100 1st 2nd 3rd Last 3rd 2nd 1st
-2101 1st 2nd 3rd Last 3rd 2nd 1st
-2102 1st 2nd 3rd Last 3rd 2nd 1st
-2103 1st 2nd 3rd Last 3rd 2nd 1st
-2104 1st 2nd 3rd Last 3rd 2nd 1st
-2105 1st 2nd 3rd Last 3rd 2nd 1st
-2106 1st 2nd 3rd Last 3rd 2nd 1st
-2107 1st 2nd 3rd Last 3rd 2nd 1st
-2108 1st 2nd 3rd Last 3rd 2nd 1st
-2109 1st 2nd 3rd Last 3rd 2nd 1st
-2110 1st 2nd 3rd Last 3rd 2nd 1st
-2111 1st 2nd 3rd Last 3rd 2nd 1st
-2112 1st 2nd 3rd Last 3rd 2nd 1st
-2113 1st 2nd 3rd Last 3rd 2nd 1st
-2114 1st 2nd 3rd Last 3rd 2nd 1st
-2115 1st 2nd 3rd Last 3rd 2nd 1st
-2116 1st 2nd 3rd Last 3rd 2nd 1st
-2117 1st 2nd 3rd Last 3rd 2nd 1st
-2118 1st 2nd 3rd Last 3rd 2nd 1st
-2119 1st 2nd 3rd Last 3rd 2nd 1st
-2120 1st 2nd 3rd Last 3rd 2nd 1st
-2121 1st 2nd 3rd Last 3rd 2nd 1st
-2122 1st 2nd 3rd Last 3rd 2nd 1st
-2123 1st 2nd 3rd Last 3rd 2nd 1st
-2124 1st 2nd 3rd Last 3rd 2nd 1st
-2125 1st 2nd 3rd Last 3rd 2nd 1st
-2126 1st 2nd 3rd Last 3rd 2nd 1st
-2127 1st 2nd 3rd Last 3rd 2nd 1st
-2128 1st 2nd 3rd Last 3rd 2nd 1st
-2129 1st 2nd 3rd Last 3rd 2nd 1st
-2130 1st 2nd 3rd Last 3rd 2nd 1st
-2131 1st 2nd 3rd Last 3rd 2nd 1st
-2132 1st 2nd 3rd Last 3rd 2nd 1st
-2133 1st 2nd 3rd Last 3rd 2nd 1st
-2134 1st 2nd 3rd Last 3rd 2nd 1st
-2135 1st 2nd 3rd Last 3rd 2nd 1st
-2136 1st 2nd 3rd Last 3rd 2nd 1st
-2137 1st 2nd 3rd Last 3rd 2nd 1st
-2138 1st 2nd 3rd Last 3rd 2nd 1st
-2139 1st 2nd 3rd Last 3rd 2nd 1st
-2140 1st 2nd 3rd Last 3rd 2nd 1st
-2141 1st 2nd 3rd Last 3rd 2nd 1st
-2142 1st 2nd 3rd Last 3rd 2nd 1st
-2143 1st 2nd 3rd Last 3rd 2nd 1st
-2144 1st 2nd 3rd Last 3rd 2nd 1st
-2145 1st 2nd 3rd Last 3rd 2nd 1st
-2146 1st 2nd 3rd Last 3rd 2nd 1st
-2147 1st 2nd 3rd Last 3rd 2nd 1st
-2148 1st 2nd 3rd Last 3rd 2nd 1st
-2149 1st 2nd 3rd Last 3rd 2nd 1st
-2150 1st 2nd 3rd Last 3rd 2nd 1st
-2151 1st 2nd 3rd Last 3rd 2nd 1st
-2152 1st 2nd 3rd Last 3rd 2nd 1st
-2153 1st 2nd 3rd Last 3rd 2nd 1st
-2154 1st 2nd 3rd Last 3rd 2nd 1st
-2155 1st 2nd 3rd Last 3rd 2nd 1st
-2156 1st 2nd 3rd Last 3rd 2nd 1st
-2157 1st 2nd 3rd Last 3rd 2nd 1st
-2158 1st 2nd 3rd Last 3rd 2nd 1st
-2159 1st 2nd 3rd Last 3rd 2nd 1st
-2160 1st 2nd 3rd Last 3rd 2nd 1st
-2161 1st 2nd 3rd Last 3rd 2nd 1st
-2162 1st 2nd 3rd Last 3rd 2nd 1st
-2163 1st 2nd 3rd Last 3rd 2nd 1st
-2164 1st 2nd 3rd Last 3rd 2nd 1st
-2165 1st 2nd 3rd Last 3rd 2nd 1st
-2166 1st 2nd 3rd Last 3rd 2nd 1st
-2167 1st 2nd 3rd Last 3rd 2nd 1st
-2168 1st 2nd 3rd Last 3rd 2nd 1st
-2169 1st 2nd 3rd Last 3rd 2nd 1st
-2170 1st 2nd 3rd Last 3rd 2nd 1st
-2171 1st 2nd 3rd Last 3rd 2nd 1st
-2172 1st 2nd 3rd Last 3rd 2nd 1st
-2173 1st 2nd 3rd Last 3rd 2nd 1st
-2174 1st 2nd 3rd Last 3rd 2nd 1st
-2175 1st 2nd 3rd Last 3rd 2nd 1st
-2176 1st 2nd 3rd Last 3rd 2nd 1st
-2177 1st 2nd 3rd Last 3rd 2nd 1st
-2178 1st 2nd 3rd Last 3rd 2nd 1st
-2179 1st 2nd 3rd Last 3rd 2nd 1st
-2180 1st 2nd 3rd Last 3rd 2nd 1st
-2181 1st 2nd 3rd Last 3rd 2nd 1st
-2182 1st 2nd 3rd Last 3rd 2nd 1st
-2183 1st 2nd 3rd Last 3rd 2nd 1st
-2184 1st 2nd 3rd Last 3rd 2nd 1st
-2185 1st 2nd 3rd Last 3rd 2nd 1st
-2186 1st 2nd 3rd Last 3rd 2nd 1st
-2187 1st 2nd 3rd Last 3rd 2nd 1st
-2188 1st 2nd 3rd Last 3rd 2nd 1st
-2189 1st 2nd 3rd Last 3rd 2nd 1st
-2190 1st 2nd 3rd Last 3rd 2nd 1st
-2191 1st 2nd 3rd Last 3rd 2nd 1st
-2192 1st 2nd 3rd Last 3rd 2nd 1st
-2193 1st 2nd 3rd Last 3rd 2nd 1st
-2194 1st 2nd 3rd Last 3rd 2nd 1st
-2195 1st 2nd 3rd Last 3rd 2nd 1st
-2196 1st 2nd 3rd Last 3rd 2nd 1st
-2197 1st 2nd 3rd Last 3rd 2nd 1st
-2198 1st 2nd 3rd Last 3rd 2nd 1st
-2199 1st 2nd 3rd Last 3rd 2nd 1st
-2200 1st 2nd 3rd Last 3rd 2nd 1st
-2201 1st 2nd 3rd Last 3rd 2nd 1st
-2202 1st 2nd 3rd Last 3rd 2nd 1st
-2203 1st 2nd 3rd Last 3rd 2nd 1st
-2204 1st 2nd 3rd Last 3rd 2nd 1st
-2205 1st 2nd 3rd Last 3rd 2nd 1st
-2206 1st 2nd 3rd Last 3rd 2nd 1st
-2207 1st 2nd 3rd Last 3rd 2nd 1st
-2208 1st 2nd 3rd Last 3rd 2nd 1st
-2209 1st 2nd 3rd Last 3rd 2nd 1st
-2210 1st 2nd 3rd Last 3rd 2nd 1st
-2211 1st 2nd 3rd Last 3rd 2nd 1st
-2212 1st 2nd 3rd Last 3rd 2nd 1st
-2213 1st 2nd 3rd Last 3rd 2nd 1st
-2214 1st 2nd 3rd Last 3rd 2nd 1st
-2215 1st 2nd 3rd Last 3rd 2nd 1st
-2216 1st 2nd 3rd Last 3rd 2nd 1st
-2217 1st 2nd 3rd Last 3rd 2nd 1st
-2218 1st 2nd 3rd Last 3rd 2nd 1st
-2219 1st 2nd 3rd Last 3rd 2nd 1st
-2220 1st 2nd 3rd Last 3rd 2nd 1st
-2221 1st 2nd 3rd Last 3rd 2nd 1st
-2222 1st 2nd 3rd Last 3rd 2nd 1st
-2223 1st 2nd 3rd Last 3rd 2nd 1st
-2224 1st 2nd 3rd Last 3rd 2nd 1st
-2225 1st 2nd 3rd Last 3rd 2nd 1st
-2226 1st 2nd 3rd Last 3rd 2nd 1st
-2227 1st 2nd 3rd Last 3rd 2nd 1st
-2228 1st 2nd 3rd Last 3rd 2nd 1st
-2229 1st 2nd 3rd Last 3rd 2nd 1st
-2230 1st 2nd 3rd Last 3rd 2nd 1st
-2231 1st 2nd 3rd Last 3rd 2nd 1st
-2232 1st 2nd 3rd Last 3rd 2nd 1st
-2233 1st 2nd 3rd Last 3rd 2nd 1st
-2234 1st 2nd 3rd Last 3rd 2nd 1st
-2235 1st 2nd 3rd Last 3rd 2nd 1st
-2236 1st 2nd 3rd Last 3rd 2nd 1st
-2237 1st 2nd 3rd Last 3rd 2nd 1st
-2238 1st 2nd 3rd Last 3rd 2nd 1st
-2239 1st 2nd 3rd Last 3rd 2nd 1st
-2240 1st 2nd 3rd Last 3rd 2nd 1st
-2241 1st 2nd 3rd Last 3rd 2nd 1st
-2242 1st 2nd 3rd Last 3rd 2nd 1st
-2243 1st 2nd 3rd Last 3rd 2nd 1st
-2244 1st 2nd 3rd Last 3rd 2nd 1st
-2245 1st 2nd 3rd Last 3rd 2nd 1st
-2246 1st 2nd 3rd Last 3rd 2nd 1st
-2247 1st 2nd 3rd Last 3rd 2nd 1st
-2248 1st 2nd 3rd Last 3rd 2nd 1st
-2249 1st 2nd 3rd Last 3rd 2nd 1st
-2250 1st 2nd 3rd Last 3rd 2nd 1st
-2251 1st 2nd 3rd Last 3rd 2nd 1st
-2252 1st 2nd 3rd Last 3rd 2nd 1st
-2253 1st 2nd 3rd Last 3rd 2nd 1st
-2254 1st 2nd 3rd Last 3rd 2nd 1st
-2255 1st 2nd 3rd Last 3rd 2nd 1st
-2256 1st 2nd 3rd Last 3rd 2nd 1st
-2257 1st 2nd 3rd Last 3rd 2nd 1st
-2258 1st 2nd 3rd Last 3rd 2nd 1st
-2259 1st 2nd 3rd Last 3rd 2nd 1st
-2260 1st 2nd 3rd Last 3rd 2nd 1st
-2261 1st 2nd 3rd Last 3rd 2nd 1st
-2262 1st 2nd 3rd Last 3rd 2nd 1st
-2263 1st 2nd 3rd Last 3rd 2nd 1st
-2264 1st 2nd 3rd Last 3rd 2nd 1st
-2265 1st 2nd 3rd Last 3rd 2nd 1st
-2266 1st 2nd 3rd Last 3rd 2nd 1st
-2267 1st 2nd 3rd Last 3rd 2nd 1st
-2268 1st 2nd 3rd Last 3rd 2nd 1st
-2269 1st 2nd 3rd Last 3rd 2nd 1st
-2270 1st 2nd 3rd Last 3rd 2nd 1st
-2271 1st 2nd 3rd Last 3rd 2nd 1st
-2272 1st 2nd 3rd Last 3rd 2nd 1st
-2273 1st 2nd 3rd Last 3rd 2nd 1st
-2274 1st 2nd 3rd Last 3rd 2nd 1st
-2275 1st 2nd 3rd Last 3rd 2nd 1st
-2276 1st 2nd 3rd Last 3rd 2nd 1st
-2277 1st 2nd 3rd Last 3rd 2nd 1st
-2278 1st 2nd 3rd Last 3rd 2nd 1st
-2279 1st 2nd 3rd Last 3rd 2nd 1st
-2280 1st 2nd 3rd Last 3rd 2nd 1st
-2281 1st 2nd 3rd Last 3rd 2nd 1st
-2282 1st 2nd 3rd Last 3rd 2nd 1st
-2283 1st 2nd 3rd Last 3rd 2nd 1st
-2284 1st 2nd 3rd Last 3rd 2nd 1st
-2285 1st 2nd 3rd Last 3rd 2nd 1st
-2286 1st 2nd 3rd Last 3rd 2nd 1st
-2287 1st 2nd 3rd Last 3rd 2nd 1st
-2288 1st 2nd 3rd Last 3rd 2nd 1st
-2289 1st 2nd 3rd Last 3rd 2nd 1st
-2290 1st 2nd 3rd Last 3rd 2nd 1st
-2291 1st 2nd 3rd Last 3rd 2nd 1st
-2292 1st 2nd 3rd Last 3rd 2nd 1st
-2293 1st 2nd 3rd Last 3rd 2nd 1st
-2294 1st 2nd 3rd Last 3rd 2nd 1st
-2295 1st 2nd 3rd Last 3rd 2nd 1st
-2296 1st 2nd 3rd Last 3rd 2nd 1st
-2297 1st 2nd 3rd Last 3rd 2nd 1st
-2298 1st 2nd 3rd Last 3rd 2nd 1st
-2299 1st 2nd 3rd Last 3rd 2nd 1st
-2300 1st 2nd 3rd Last 3rd 2nd 1st
-2301 1st 2nd 3rd Last 3rd 2nd 1st
-2302 1st 2nd 3rd Last 3rd 2nd 1st
-2303 1st 2nd 3rd Last 3rd 2nd 1st
-2304 1st 2nd 3rd Last 3rd 2nd 1st
-2305 1st 2nd 3rd Last 3rd 2nd 1st
-2306 1st 2nd 3rd Last 3rd 2nd 1st
-2307 1st 2nd 3rd Last 3rd 2nd 1st
-2308 1st 2nd 3rd Last 3rd 2nd 1st
-2309 1st 2nd 3rd Last 3rd 2nd 1st
-2310 1st 2nd 3rd Last 3rd 2nd 1st
-2311 1st 2nd 3rd Last 3rd 2nd 1st
-2312 1st 2nd 3rd Last 3rd 2nd 1st
-2313 1st 2nd 3rd Last 3rd 2nd 1st
-2314 1st 2nd 3rd Last 3rd 2nd 1st
-2315 1st 2nd 3rd Last 3rd 2nd 1st
-2316 1st 2nd 3rd Last 3rd 2nd 1st
-2317 1st 2nd 3rd Last 3rd 2nd 1st
-2318 1st 2nd 3rd Last 3rd 2nd 1st
-2319 1st 2nd 3rd Last 3rd 2nd 1st
-2320 1st 2nd 3rd Last 3rd 2nd 1st
-2321 1st 2nd 3rd Last 3rd 2nd 1st
-2322 1st 2nd 3rd Last 3rd 2nd 1st
-2323 1st 2nd 3rd Last 3rd 2nd 1st
-2324 1st 2nd 3rd Last 3rd 2nd 1st
-2325 1st 2nd 3rd Last 3rd 2nd 1st
-2326 1st 2nd 3rd Last 3rd 2nd 1st
-2327 1st 2nd 3rd Last 3rd 2nd 1st
-2328 1st 2nd 3rd Last 3rd 2nd 1st
-2329 1st 2nd 3rd Last 3rd 2nd 1st
-2330 1st 2nd 3rd Last 3rd 2nd 1st
-2331 1st 2nd 3rd Last 3rd 2nd 1st
-2332 1st 2nd 3rd Last 3rd 2nd 1st
-2333 1st 2nd 3rd Last 3rd 2nd 1st
-2334 1st 2nd 3rd Last 3rd 2nd 1st
-2335 1st 2nd 3rd Last 3rd 2nd 1st
-2336 1st 2nd 3rd Last 3rd 2nd 1st
-2337 1st 2nd 3rd Last 3rd 2nd 1st
-2338 1st 2nd 3rd Last 3rd 2nd 1st
-2339 1st 2nd 3rd Last 3rd 2nd 1st
-2340 1st 2nd 3rd Last 3rd 2nd 1st
-2341 1st 2nd 3rd Last 3rd 2nd 1st
-2342 1st 2nd 3rd Last 3rd 2nd 1st
-2343 1st 2nd 3rd Last 3rd 2nd 1st
-2344 1st 2nd 3rd Last 3rd 2nd 1st
-2345 1st 2nd 3rd Last 3rd 2nd 1st
-2346 1st 2nd 3rd Last 3rd 2nd 1st
-2347 1st 2nd 3rd Last 3rd 2nd 1st
-2348 1st 2nd 3rd Last 3rd 2nd 1st
-2349 1st 2nd 3rd Last 3rd 2nd 1st
-2350 1st 2nd 3rd Last 3rd 2nd 1st
-2351 1st 2nd 3rd Last 3rd 2nd 1st
-2352 1st 2nd 3rd Last 3rd 2nd 1st
-2353 1st 2nd 3rd Last 3rd 2nd 1st
-2354 1st 2nd 3rd Last 3rd 2nd 1st
-2355 1st 2nd 3rd Last 3rd 2nd 1st
-2356 1st 2nd 3rd Last 3rd 2nd 1st
-2357 1st 2nd 3rd Last 3rd 2nd 1st
-2358 1st 2nd 3rd Last 3rd 2nd 1st
-2359 1st 2nd 3rd Last 3rd 2nd 1st
-2360 1st 2nd 3rd Last 3rd 2nd 1st
-2361 1st 2nd 3rd Last 3rd 2nd 1st
-2362 1st 2nd 3rd Last 3rd 2nd 1st
-2363 1st 2nd 3rd Last 3rd 2nd 1st
-2364 1st 2nd 3rd Last 3rd 2nd 1st
-2365 1st 2nd 3rd Last 3rd 2nd 1st
-2366 1st 2nd 3rd Last 3rd 2nd 1st
-2367 1st 2nd 3rd Last 3rd 2nd 1st
-2368 1st 2nd 3rd Last 3rd 2nd 1st
-2369 1st 2nd 3rd Last 3rd 2nd 1st
-2370 1st 2nd 3rd Last 3rd 2nd 1st
-2371 1st 2nd 3rd Last 3rd 2nd 1st
-2372 1st 2nd 3rd Last 3rd 2nd 1st
-2373 1st 2nd 3rd Last 3rd 2nd 1st
-2374 1st 2nd 3rd Last 3rd 2nd 1st
-2375 1st 2nd 3rd Last 3rd 2nd 1st
-2376 1st 2nd 3rd Last 3rd 2nd 1st
-2377 1st 2nd 3rd Last 3rd 2nd 1st
-2378 1st 2nd 3rd Last 3rd 2nd 1st
-2379 1st 2nd 3rd Last 3rd 2nd 1st
-2380 1st 2nd 3rd Last 3rd 2nd 1st
-2381 1st 2nd 3rd Last 3rd 2nd 1st
-2382 1st 2nd 3rd Last 3rd 2nd 1st
-2383 1st 2nd 3rd Last 3rd 2nd 1st
-2384 1st 2nd 3rd Last 3rd 2nd 1st
-2385 1st 2nd 3rd Last 3rd 2nd 1st
-2386 1st 2nd 3rd Last 3rd 2nd 1st
-2387 1st 2nd 3rd Last 3rd 2nd 1st
-2388 1st 2nd 3rd Last 3rd 2nd 1st
-2389 1st 2nd 3rd Last 3rd 2nd 1st
-2390 1st 2nd 3rd Last 3rd 2nd 1st
-2391 1st 2nd 3rd Last 3rd 2nd 1st
-2392 1st 2nd 3rd Last 3rd 2nd 1st
-2393 1st 2nd 3rd Last 3rd 2nd 1st
-2394 1st 2nd 3rd Last 3rd 2nd 1st
-2395 1st 2nd 3rd Last 3rd 2nd 1st
-2396 1st 2nd 3rd Last 3rd 2nd 1st
-2397 1st 2nd 3rd Last 3rd 2nd 1st
-2398 1st 2nd 3rd Last 3rd 2nd 1st
-2399 1st 2nd 3rd Last 3rd 2nd 1st
-2400 1st 2nd 3rd Last 3rd 2nd 1st
-2401 1st 2nd 3rd Last 3rd 2nd 1st
-2402 1st 2nd 3rd Last 3rd 2nd 1st
-2403 1st 2nd 3rd Last 3rd 2nd 1st
-2404 1st 2nd 3rd Last 3rd 2nd 1st
-2405 1st 2nd 3rd Last 3rd 2nd 1st
-2406 1st 2nd 3rd Last 3rd 2nd 1st
-2407 1st 2nd 3rd Last 3rd 2nd 1st
-2408 1st 2nd 3rd Last 3rd 2nd 1st
-2409 1st 2nd 3rd Last 3rd 2nd 1st
-2410 1st 2nd 3rd Last 3rd 2nd 1st
-2411 1st 2nd 3rd Last 3rd 2nd 1st
-2412 1st 2nd 3rd Last 3rd 2nd 1st
-2413 1st 2nd 3rd Last 3rd 2nd 1st
-2414 1st 2nd 3rd Last 3rd 2nd 1st
-2415 1st 2nd 3rd Last 3rd 2nd 1st
-2416 1st 2nd 3rd Last 3rd 2nd 1st
-2417 1st 2nd 3rd Last 3rd 2nd 1st
-2418 1st 2nd 3rd Last 3rd 2nd 1st
-2419 1st 2nd 3rd Last 3rd 2nd 1st
-2420 1st 2nd 3rd Last 3rd 2nd 1st
-2421 1st 2nd 3rd Last 3rd 2nd 1st
-2422 1st 2nd 3rd Last 3rd 2nd 1st
-2423 1st 2nd 3rd Last 3rd 2nd 1st
-2424 1st 2nd 3rd Last 3rd 2nd 1st
-2425 1st 2nd 3rd Last 3rd 2nd 1st
-2426 1st 2nd 3rd Last 3rd 2nd 1st
-2427 1st 2nd 3rd Last 3rd 2nd 1st
-2428 1st 2nd 3rd Last 3rd 2nd 1st
-2429 1st 2nd 3rd Last 3rd 2nd 1st
-2430 1st 2nd 3rd Last 3rd 2nd 1st
-2431 1st 2nd 3rd Last 3rd 2nd 1st
-2432 1st 2nd 3rd Last 3rd 2nd 1st
-2433 1st 2nd 3rd Last 3rd 2nd 1st
-2434 1st 2nd 3rd Last 3rd 2nd 1st
-2435 1st 2nd 3rd Last 3rd 2nd 1st
-2436 1st 2nd 3rd Last 3rd 2nd 1st
-2437 1st 2nd 3rd Last 3rd 2nd 1st
-2438 1st 2nd 3rd Last 3rd 2nd 1st
-2439 1st 2nd 3rd Last 3rd 2nd 1st
-2440 1st 2nd 3rd Last 3rd 2nd 1st
-2441 1st 2nd 3rd Last 3rd 2nd 1st
-2442 1st 2nd 3rd Last 3rd 2nd 1st
-2443 1st 2nd 3rd Last 3rd 2nd 1st
-2444 1st 2nd 3rd Last 3rd 2nd 1st
-2445 1st 2nd 3rd Last 3rd 2nd 1st
-2446 1st 2nd 3rd Last 3rd 2nd 1st
-2447 1st 2nd 3rd Last 3rd 2nd 1st
-2448 1st 2nd 3rd Last 3rd 2nd 1st
-2449 1st 2nd 3rd Last 3rd 2nd 1st
-2450 1st 2nd 3rd Last 3rd 2nd 1st
-2451 1st 2nd 3rd Last 3rd 2nd 1st
-2452 1st 2nd 3rd Last 3rd 2nd 1st
-2453 1st 2nd 3rd Last 3rd 2nd 1st
-2454 1st 2nd 3rd Last 3rd 2nd 1st
-2455 1st 2nd 3rd Last 3rd 2nd 1st
-2456 1st 2nd 3rd Last 3rd 2nd 1st
-2457 1st 2nd 3rd Last 3rd 2nd 1st
-2458 1st 2nd 3rd Last 3rd 2nd 1st
-2459 1st 2nd 3rd Last 3rd 2nd 1st
-2460 1st 2nd 3rd Last 3rd 2nd 1st
-2461 1st 2nd 3rd Last 3rd 2nd 1st
-2462 1st 2nd 3rd Last 3rd 2nd 1st
-2463 1st 2nd 3rd Last 3rd 2nd 1st
-2464 1st 2nd 3rd Last 3rd 2nd 1st
-2465 1st 2nd 3rd Last 3rd 2nd 1st
-2466 1st 2nd 3rd Last 3rd 2nd 1st
-2467 1st 2nd 3rd Last 3rd 2nd 1st
-2468 1st 2nd 3rd Last 3rd 2nd 1st
-2469 1st 2nd 3rd Last 3rd 2nd 1st
-2470 1st 2nd 3rd Last 3rd 2nd 1st
-2471 1st 2nd 3rd Last 3rd 2nd 1st
-2472 1st 2nd 3rd Last 3rd 2nd 1st
-2473 1st 2nd 3rd Last 3rd 2nd 1st
-2474 1st 2nd 3rd Last 3rd 2nd 1st
-2475 1st 2nd 3rd Last 3rd 2nd 1st
-2476 1st 2nd 3rd Last 3rd 2nd 1st
-2477 1st 2nd 3rd Last 3rd 2nd 1st
-2478 1st 2nd 3rd Last 3rd 2nd 1st
-2479 1st 2nd 3rd Last 3rd 2nd 1st
-2480 1st 2nd 3rd Last 3rd 2nd 1st
-2481 1st 2nd 3rd Last 3rd 2nd 1st
-2482 1st 2nd 3rd Last 3rd 2nd 1st
-2483 1st 2nd 3rd Last 3rd 2nd 1st
-2484 1st 2nd 3rd Last 3rd 2nd 1st
-2485 1st 2nd 3rd Last 3rd 2nd 1st
-2486 1st 2nd 3rd Last 3rd 2nd 1st
-2487 1st 2nd 3rd Last 3rd 2nd 1st
-2488 1st 2nd 3rd Last 3rd 2nd 1st
-2489 1st 2nd 3rd Last 3rd 2nd 1st
-2490 1st 2nd 3rd Last 3rd 2nd 1st
-2491 1st 2nd 3rd Last 3rd 2nd 1st
-2492 1st 2nd 3rd Last 3rd 2nd 1st
-2493 1st 2nd 3rd Last 3rd 2nd 1st
-2494 1st 2nd 3rd Last 3rd 2nd 1st
-2495 1st 2nd 3rd Last 3rd 2nd 1st
-2496 1st 2nd 3rd Last 3rd 2nd 1st
-2497 1st 2nd 3rd Last 3rd 2nd 1st
-2498 1st 2nd 3rd Last 3rd 2nd 1st
-2499 1st 2nd 3rd Last 3rd 2nd 1st
-2500 1st 2nd 3rd Last 3rd 2nd 1st
-2501 1st 2nd 3rd Last 3rd 2nd 1st
-2502 1st 2nd 3rd Last 3rd 2nd 1st
-2503 1st 2nd 3rd Last 3rd 2nd 1st
-2504 1st 2nd 3rd Last 3rd 2nd 1st
-2505 1st 2nd 3rd Last 3rd 2nd 1st
-2506 1st 2nd 3rd Last 3rd 2nd 1st
-2507 1st 2nd 3rd Last 3rd 2nd 1st
-2508 1st 2nd 3rd Last 3rd 2nd 1st
-2509 1st 2nd 3rd Last 3rd 2nd 1st
-2510 1st 2nd 3rd Last 3rd 2nd 1st
-2511 1st 2nd 3rd Last 3rd 2nd 1st
-2512 1st 2nd 3rd Last 3rd 2nd 1st
-2513 1st 2nd 3rd Last 3rd 2nd 1st
-2514 1st 2nd 3rd Last 3rd 2nd 1st
-2515 1st 2nd 3rd Last 3rd 2nd 1st
-2516 1st 2nd 3rd Last 3rd 2nd 1st
-2517 1st 2nd 3rd Last 3rd 2nd 1st
-2518 1st 2nd 3rd Last 3rd 2nd 1st
-2519 1st 2nd 3rd Last 3rd 2nd 1st
-2520 1st 2nd 3rd Last 3rd 2nd 1st
-2521 1st 2nd 3rd Last 3rd 2nd 1st
-2522 1st 2nd 3rd Last 3rd 2nd 1st
-2523 1st 2nd 3rd Last 3rd 2nd 1st
-2524 1st 2nd 3rd Last 3rd 2nd 1st
-2525 1st 2nd 3rd Last 3rd 2nd 1st
-2526 1st 2nd 3rd Last 3rd 2nd 1st
-2527 1st 2nd 3rd Last 3rd 2nd 1st
-2528 1st 2nd 3rd Last 3rd 2nd 1st
-2529 1st 2nd 3rd Last 3rd 2nd 1st
-2530 1st 2nd 3rd Last 3rd 2nd 1st
-2531 1st 2nd 3rd Last 3rd 2nd 1st
-2532 1st 2nd 3rd Last 3rd 2nd 1st
-2533 1st 2nd 3rd Last 3rd 2nd 1st
-2534 1st 2nd 3rd Last 3rd 2nd 1st
-2535 1st 2nd 3rd Last 3rd 2nd 1st
-2536 1st 2nd 3rd Last 3rd 2nd 1st
-2537 1st 2nd 3rd Last 3rd 2nd 1st
-2538 1st 2nd 3rd Last 3rd 2nd 1st
-2539 1st 2nd 3rd Last 3rd 2nd 1st
-2540 1st 2nd 3rd Last 3rd 2nd 1st
-2541 1st 2nd 3rd Last 3rd 2nd 1st
-2542 1st 2nd 3rd Last 3rd 2nd 1st
-2543 1st 2nd 3rd Last 3rd 2nd 1st
-2544 1st 2nd 3rd Last 3rd 2nd 1st
-2545 1st 2nd 3rd Last 3rd 2nd 1st
-2546 1st 2nd 3rd Last 3rd 2nd 1st
-2547 1st 2nd 3rd Last 3rd 2nd 1st
-2548 1st 2nd 3rd Last 3rd 2nd 1st
-2549 1st 2nd 3rd Last 3rd 2nd 1st
-2550 1st 2nd 3rd Last 3rd 2nd 1st
-2551 1st 2nd 3rd Last 3rd 2nd 1st
-2552 1st 2nd 3rd Last 3rd 2nd 1st
-2553 1st 2nd 3rd Last 3rd 2nd 1st
-2554 1st 2nd 3rd Last 3rd 2nd 1st
-2555 1st 2nd 3rd Last 3rd 2nd 1st
-2556 1st 2nd 3rd Last 3rd 2nd 1st
-2557 1st 2nd 3rd Last 3rd 2nd 1st
-2558 1st 2nd 3rd Last 3rd 2nd 1st
-2559 1st 2nd 3rd Last 3rd 2nd 1st
-2560 1st 2nd 3rd Last 3rd 2nd 1st
-2561 1st 2nd 3rd Last 3rd 2nd 1st
-2562 1st 2nd 3rd Last 3rd 2nd 1st
-2563 1st 2nd 3rd Last 3rd 2nd 1st
-2564 1st 2nd 3rd Last 3rd 2nd 1st
-2565 1st 2nd 3rd Last 3rd 2nd 1st
-2566 1st 2nd 3rd Last 3rd 2nd 1st
-2567 1st 2nd 3rd Last 3rd 2nd 1st
-2568 1st 2nd 3rd Last 3rd 2nd 1st
-2569 1st 2nd 3rd Last 3rd 2nd 1st
-2570 1st 2nd 3rd Last 3rd 2nd 1st
-2571 1st 2nd 3rd Last 3rd 2nd 1st
-2572 1st 2nd 3rd Last 3rd 2nd 1st
-2573 1st 2nd 3rd Last 3rd 2nd 1st
-2574 1st 2nd 3rd Last 3rd 2nd 1st
-2575 1st 2nd 3rd Last 3rd 2nd 1st
-2576 1st 2nd 3rd Last 3rd 2nd 1st
-2577 1st 2nd 3rd Last 3rd 2nd 1st
-2578 1st 2nd 3rd Last 3rd 2nd 1st
-2579 1st 2nd 3rd Last 3rd 2nd 1st
-2580 1st 2nd 3rd Last 3rd 2nd 1st
-2581 1st 2nd 3rd Last 3rd 2nd 1st
-2582 1st 2nd 3rd Last 3rd 2nd 1st
-2583 1st 2nd 3rd Last 3rd 2nd 1st
-2584 1st 2nd 3rd Last 3rd 2nd 1st
-2585 1st 2nd 3rd Last 3rd 2nd 1st
-2586 1st 2nd 3rd Last 3rd 2nd 1st
-2587 1st 2nd 3rd Last 3rd 2nd 1st
-2588 1st 2nd 3rd Last 3rd 2nd 1st
-2589 1st 2nd 3rd Last 3rd 2nd 1st
-2590 1st 2nd 3rd Last 3rd 2nd 1st
-2591 1st 2nd 3rd Last 3rd 2nd 1st
-2592 1st 2nd 3rd Last 3rd 2nd 1st
-2593 1st 2nd 3rd Last 3rd 2nd 1st
-2594 1st 2nd 3rd Last 3rd 2nd 1st
-2595 1st 2nd 3rd Last 3rd 2nd 1st
-2596 1st 2nd 3rd Last 3rd 2nd 1st
-2597 1st 2nd 3rd Last 3rd 2nd 1st
-2598 1st 2nd 3rd Last 3rd 2nd 1st
-2599 1st 2nd 3rd Last 3rd 2nd 1st
-2600 1st 2nd 3rd Last 3rd 2nd 1st
-2601 1st 2nd 3rd Last 3rd 2nd 1st
-2602 1st 2nd 3rd Last 3rd 2nd 1st
-2603 1st 2nd 3rd Last 3rd 2nd 1st
-2604 1st 2nd 3rd Last 3rd 2nd 1st
-2605 1st 2nd 3rd Last 3rd 2nd 1st
-2606 1st 2nd 3rd Last 3rd 2nd 1st
-2607 1st 2nd 3rd Last 3rd 2nd 1st
-2608 1st 2nd 3rd Last 3rd 2nd 1st
-2609 1st 2nd 3rd Last 3rd 2nd 1st
-2610 1st 2nd 3rd Last 3rd 2nd 1st
-2611 1st 2nd 3rd Last 3rd 2nd 1st
-2612 1st 2nd 3rd Last 3rd 2nd 1st
-2613 1st 2nd 3rd Last 3rd 2nd 1st
-2614 1st 2nd 3rd Last 3rd 2nd 1st
-2615 1st 2nd 3rd Last 3rd 2nd 1st
-2616 1st 2nd 3rd Last 3rd 2nd 1st
-2617 1st 2nd 3rd Last 3rd 2nd 1st
-2618 1st 2nd 3rd Last 3rd 2nd 1st
-2619 1st 2nd 3rd Last 3rd 2nd 1st
-2620 1st 2nd 3rd Last 3rd 2nd 1st
-2621 1st 2nd 3rd Last 3rd 2nd 1st
-2622 1st 2nd 3rd Last 3rd 2nd 1st
-2623 1st 2nd 3rd Last 3rd 2nd 1st
-2624 1st 2nd 3rd Last 3rd 2nd 1st
-2625 1st 2nd 3rd Last 3rd 2nd 1st
-2626 1st 2nd 3rd Last 3rd 2nd 1st
-2627 1st 2nd 3rd Last 3rd 2nd 1st
-2628 1st 2nd 3rd Last 3rd 2nd 1st
-2629 1st 2nd 3rd Last 3rd 2nd 1st
-2630 1st 2nd 3rd Last 3rd 2nd 1st
-2631 1st 2nd 3rd Last 3rd 2nd 1st
-2632 1st 2nd 3rd Last 3rd 2nd 1st
-2633 1st 2nd 3rd Last 3rd 2nd 1st
-2634 1st 2nd 3rd Last 3rd 2nd 1st
-2635 1st 2nd 3rd Last 3rd 2nd 1st
-2636 1st 2nd 3rd Last 3rd 2nd 1st
-2637 1st 2nd 3rd Last 3rd 2nd 1st
-2638 1st 2nd 3rd Last 3rd 2nd 1st
-2639 1st 2nd 3rd Last 3rd 2nd 1st
-2640 1st 2nd 3rd Last 3rd 2nd 1st
-2641 1st 2nd 3rd Last 3rd 2nd 1st
-2642 1st 2nd 3rd Last 3rd 2nd 1st
-2643 1st 2nd 3rd Last 3rd 2nd 1st
-2644 1st 2nd 3rd Last 3rd 2nd 1st
-2645 1st 2nd 3rd Last 3rd 2nd 1st
-2646 1st 2nd 3rd Last 3rd 2nd 1st
-2647 1st 2nd 3rd Last 3rd 2nd 1st
-2648 1st 2nd 3rd Last 3rd 2nd 1st
-2649 1st 2nd 3rd Last 3rd 2nd 1st
-2650 1st 2nd 3rd Last 3rd 2nd 1st
-2651 1st 2nd 3rd Last 3rd 2nd 1st
-2652 1st 2nd 3rd Last 3rd 2nd 1st
-2653 1st 2nd 3rd Last 3rd 2nd 1st
-2654 1st 2nd 3rd Last 3rd 2nd 1st
-2655 1st 2nd 3rd Last 3rd 2nd 1st
-2656 1st 2nd 3rd Last 3rd 2nd 1st
-2657 1st 2nd 3rd Last 3rd 2nd 1st
-2658 1st 2nd 3rd Last 3rd 2nd 1st
-2659 1st 2nd 3rd Last 3rd 2nd 1st
-2660 1st 2nd 3rd Last 3rd 2nd 1st
-2661 1st 2nd 3rd Last 3rd 2nd 1st
-2662 1st 2nd 3rd Last 3rd 2nd 1st
-2663 1st 2nd 3rd Last 3rd 2nd 1st
-2664 1st 2nd 3rd Last 3rd 2nd 1st
-2665 1st 2nd 3rd Last 3rd 2nd 1st
-2666 1st 2nd 3rd Last 3rd 2nd 1st
-2667 1st 2nd 3rd Last 3rd 2nd 1st
-2668 1st 2nd 3rd Last 3rd 2nd 1st
-2669 1st 2nd 3rd Last 3rd 2nd 1st
-2670 1st 2nd 3rd Last 3rd 2nd 1st
-2671 1st 2nd 3rd Last 3rd 2nd 1st
-2672 1st 2nd 3rd Last 3rd 2nd 1st
-2673 1st 2nd 3rd Last 3rd 2nd 1st
-2674 1st 2nd 3rd Last 3rd 2nd 1st
-2675 1st 2nd 3rd Last 3rd 2nd 1st
-2676 1st 2nd 3rd Last 3rd 2nd 1st
-2677 1st 2nd 3rd Last 3rd 2nd 1st
-2678 1st 2nd 3rd Last 3rd 2nd 1st
-2679 1st 2nd 3rd Last 3rd 2nd 1st
-2680 1st 2nd 3rd Last 3rd 2nd 1st
-2681 1st 2nd 3rd Last 3rd 2nd 1st
-2682 1st 2nd 3rd Last 3rd 2nd 1st
-2683 1st 2nd 3rd Last 3rd 2nd 1st
-2684 1st 2nd 3rd Last 3rd 2nd 1st
-2685 1st 2nd 3rd Last 3rd 2nd 1st
-2686 1st 2nd 3rd Last 3rd 2nd 1st
-2687 1st 2nd 3rd Last 3rd 2nd 1st
-2688 1st 2nd 3rd Last 3rd 2nd 1st
-2689 1st 2nd 3rd Last 3rd 2nd 1st
-2690 1st 2nd 3rd Last 3rd 2nd 1st
-2691 1st 2nd 3rd Last 3rd 2nd 1st
-2692 1st 2nd 3rd Last 3rd 2nd 1st
-2693 1st 2nd 3rd Last 3rd 2nd 1st
-2694 1st 2nd 3rd Last 3rd 2nd 1st
-2695 1st 2nd 3rd Last 3rd 2nd 1st
-2696 1st 2nd 3rd Last 3rd 2nd 1st
-2697 1st 2nd 3rd Last 3rd 2nd 1st
-2698 1st 2nd 3rd Last 3rd 2nd 1st
-2699 1st 2nd 3rd Last 3rd 2nd 1st
-2700 1st 2nd 3rd Last 3rd 2nd 1st
-2701 1st 2nd 3rd Last 3rd 2nd 1st
-2702 1st 2nd 3rd Last 3rd 2nd 1st
-2703 1st 2nd 3rd Last 3rd 2nd 1st
-2704 1st 2nd 3rd Last 3rd 2nd 1st
-2705 1st 2nd 3rd Last 3rd 2nd 1st
-2706 1st 2nd 3rd Last 3rd 2nd 1st
-2707 1st 2nd 3rd Last 3rd 2nd 1st
-2708 1st 2nd 3rd Last 3rd 2nd 1st
-2709 1st 2nd 3rd Last 3rd 2nd 1st
-2710 1st 2nd 3rd Last 3rd 2nd 1st
-2711 1st 2nd 3rd Last 3rd 2nd 1st
-2712 1st 2nd 3rd Last 3rd 2nd 1st
-2713 1st 2nd 3rd Last 3rd 2nd 1st
-2714 1st 2nd 3rd Last 3rd 2nd 1st
-2715 1st 2nd 3rd Last 3rd 2nd 1st
-2716 1st 2nd 3rd Last 3rd 2nd 1st
-2717 1st 2nd 3rd Last 3rd 2nd 1st
-2718 1st 2nd 3rd Last 3rd 2nd 1st
-2719 1st 2nd 3rd Last 3rd 2nd 1st
-2720 1st 2nd 3rd Last 3rd 2nd 1st
-2721 1st 2nd 3rd Last 3rd 2nd 1st
-2722 1st 2nd 3rd Last 3rd 2nd 1st
-2723 1st 2nd 3rd Last 3rd 2nd 1st
-2724 1st 2nd 3rd Last 3rd 2nd 1st
-2725 1st 2nd 3rd Last 3rd 2nd 1st
-2726 1st 2nd 3rd Last 3rd 2nd 1st
-2727 1st 2nd 3rd Last 3rd 2nd 1st
-2728 1st 2nd 3rd Last 3rd 2nd 1st
-2729 1st 2nd 3rd Last 3rd 2nd 1st
-2730 1st 2nd 3rd Last 3rd 2nd 1st
-2731 1st 2nd 3rd Last 3rd 2nd 1st
-2732 1st 2nd 3rd Last 3rd 2nd 1st
-2733 1st 2nd 3rd Last 3rd 2nd 1st
-2734 1st 2nd 3rd Last 3rd 2nd 1st
-2735 1st 2nd 3rd Last 3rd 2nd 1st
-2736 1st 2nd 3rd Last 3rd 2nd 1st
-2737 1st 2nd 3rd Last 3rd 2nd 1st
-2738 1st 2nd 3rd Last 3rd 2nd 1st
-2739 1st 2nd 3rd Last 3rd 2nd 1st
-2740 1st 2nd 3rd Last 3rd 2nd 1st
-2741 1st 2nd 3rd Last 3rd 2nd 1st
-2742 1st 2nd 3rd Last 3rd 2nd 1st
-2743 1st 2nd 3rd Last 3rd 2nd 1st
-2744 1st 2nd 3rd Last 3rd 2nd 1st
-2745 1st 2nd 3rd Last 3rd 2nd 1st
-2746 1st 2nd 3rd Last 3rd 2nd 1st
-2747 1st 2nd 3rd Last 3rd 2nd 1st
-2748 1st 2nd 3rd Last 3rd 2nd 1st
-2749 1st 2nd 3rd Last 3rd 2nd 1st
-2750 1st 2nd 3rd Last 3rd 2nd 1st
-2751 1st 2nd 3rd Last 3rd 2nd 1st
-2752 1st 2nd 3rd Last 3rd 2nd 1st
-2753 1st 2nd 3rd Last 3rd 2nd 1st
-2754 1st 2nd 3rd Last 3rd 2nd 1st
-2755 1st 2nd 3rd Last 3rd 2nd 1st
-2756 1st 2nd 3rd Last 3rd 2nd 1st
-2757 1st 2nd 3rd Last 3rd 2nd 1st
-2758 1st 2nd 3rd Last 3rd 2nd 1st
-2759 1st 2nd 3rd Last 3rd 2nd 1st
-2760 1st 2nd 3rd Last 3rd 2nd 1st
-2761 1st 2nd 3rd Last 3rd 2nd 1st
-2762 1st 2nd 3rd Last 3rd 2nd 1st
-2763 1st 2nd 3rd Last 3rd 2nd 1st
-2764 1st 2nd 3rd Last 3rd 2nd 1st
-2765 1st 2nd 3rd Last 3rd 2nd 1st
-2766 1st 2nd 3rd Last 3rd 2nd 1st
-2767 1st 2nd 3rd Last 3rd 2nd 1st
-2768 1st 2nd 3rd Last 3rd 2nd 1st
-2769 1st 2nd 3rd Last 3rd 2nd 1st
-2770 1st 2nd 3rd Last 3rd 2nd 1st
-2771 1st 2nd 3rd Last 3rd 2nd 1st
-2772 1st 2nd 3rd Last 3rd 2nd 1st
-2773 1st 2nd 3rd Last 3rd 2nd 1st
-2774 1st 2nd 3rd Last 3rd 2nd 1st
-2775 1st 2nd 3rd Last 3rd 2nd 1st
-2776 1st 2nd 3rd Last 3rd 2nd 1st
-2777 1st 2nd 3rd Last 3rd 2nd 1st
-2778 1st 2nd 3rd Last 3rd 2nd 1st
-2779 1st 2nd 3rd Last 3rd 2nd 1st
-2780 1st 2nd 3rd Last 3rd 2nd 1st
-2781 1st 2nd 3rd Last 3rd 2nd 1st
-2782 1st 2nd 3rd Last 3rd 2nd 1st
-2783 1st 2nd 3rd Last 3rd 2nd 1st
-2784 1st 2nd 3rd Last 3rd 2nd 1st
-2785 1st 2nd 3rd Last 3rd 2nd 1st
-2786 1st 2nd 3rd Last 3rd 2nd 1st
-2787 1st 2nd 3rd Last 3rd 2nd 1st
-2788 1st 2nd 3rd Last 3rd 2nd 1st
-2789 1st 2nd 3rd Last 3rd 2nd 1st
-2790 1st 2nd 3rd Last 3rd 2nd 1st
-2791 1st 2nd 3rd Last 3rd 2nd 1st
-2792 1st 2nd 3rd Last 3rd 2nd 1st
-2793 1st 2nd 3rd Last 3rd 2nd 1st
-2794 1st 2nd 3rd Last 3rd 2nd 1st
-2795 1st 2nd 3rd Last 3rd 2nd 1st
-2796 1st 2nd 3rd Last 3rd 2nd 1st
-2797 1st 2nd 3rd Last 3rd 2nd 1st
-2798 1st 2nd 3rd Last 3rd 2nd 1st
-2799 1st 2nd 3rd Last 3rd 2nd 1st
-2800 1st 2nd 3rd Last 3rd 2nd 1st
-2801 1st 2nd 3rd Last 3rd 2nd 1st
-2802 1st 2nd 3rd Last 3rd 2nd 1st
-2803 1st 2nd 3rd Last 3rd 2nd 1st
-2804 1st 2nd 3rd Last 3rd 2nd 1st
-2805 1st 2nd 3rd Last 3rd 2nd 1st
-2806 1st 2nd 3rd Last 3rd 2nd 1st
-2807 1st 2nd 3rd Last 3rd 2nd 1st
-2808 1st 2nd 3rd Last 3rd 2nd 1st
-2809 1st 2nd 3rd Last 3rd 2nd 1st
-2810 1st 2nd 3rd Last 3rd 2nd 1st
-2811 1st 2nd 3rd Last 3rd 2nd 1st
-2812 1st 2nd 3rd Last 3rd 2nd 1st
-2813 1st 2nd 3rd Last 3rd 2nd 1st
-2814 1st 2nd 3rd Last 3rd 2nd 1st
-2815 1st 2nd 3rd Last 3rd 2nd 1st
-2816 1st 2nd 3rd Last 3rd 2nd 1st
-2817 1st 2nd 3rd Last 3rd 2nd 1st
-2818 1st 2nd 3rd Last 3rd 2nd 1st
-2819 1st 2nd 3rd Last 3rd 2nd 1st
-2820 1st 2nd 3rd Last 3rd 2nd 1st
-2821 1st 2nd 3rd Last 3rd 2nd 1st
-2822 1st 2nd 3rd Last 3rd 2nd 1st
-2823 1st 2nd 3rd Last 3rd 2nd 1st
-2824 1st 2nd 3rd Last 3rd 2nd 1st
-2825 1st 2nd 3rd Last 3rd 2nd 1st
-2826 1st 2nd 3rd Last 3rd 2nd 1st
-2827 1st 2nd 3rd Last 3rd 2nd 1st
-2828 1st 2nd 3rd Last 3rd 2nd 1st
-2829 1st 2nd 3rd Last 3rd 2nd 1st
-2830 1st 2nd 3rd Last 3rd 2nd 1st
-2831 1st 2nd 3rd Last 3rd 2nd 1st
-2832 1st 2nd 3rd Last 3rd 2nd 1st
-2833 1st 2nd 3rd Last 3rd 2nd 1st
-2834 1st 2nd 3rd Last 3rd 2nd 1st
-2835 1st 2nd 3rd Last 3rd 2nd 1st
-2836 1st 2nd 3rd Last 3rd 2nd 1st
-2837 1st 2nd 3rd Last 3rd 2nd 1st
-2838 1st 2nd 3rd Last 3rd 2nd 1st
-2839 1st 2nd 3rd Last 3rd 2nd 1st
-2840 1st 2nd 3rd Last 3rd 2nd 1st
-2841 1st 2nd 3rd Last 3rd 2nd 1st
-2842 1st 2nd 3rd Last 3rd 2nd 1st
-2843 1st 2nd 3rd Last 3rd 2nd 1st
-2844 1st 2nd 3rd Last 3rd 2nd 1st
-2845 1st 2nd 3rd Last 3rd 2nd 1st
-2846 1st 2nd 3rd Last 3rd 2nd 1st
-2847 1st 2nd 3rd Last 3rd 2nd 1st
-2848 1st 2nd 3rd Last 3rd 2nd 1st
-2849 1st 2nd 3rd Last 3rd 2nd 1st
-2850 1st 2nd 3rd Last 3rd 2nd 1st
-2851 1st 2nd 3rd Last 3rd 2nd 1st
-2852 1st 2nd 3rd Last 3rd 2nd 1st
-2853 1st 2nd 3rd Last 3rd 2nd 1st
-2854 1st 2nd 3rd Last 3rd 2nd 1st
-2855 1st 2nd 3rd Last 3rd 2nd 1st
-2856 1st 2nd 3rd Last 3rd 2nd 1st
-2857 1st 2nd 3rd Last 3rd 2nd 1st
-2858 1st 2nd 3rd Last 3rd 2nd 1st
-2859 1st 2nd 3rd Last 3rd 2nd 1st
-2860 1st 2nd 3rd Last 3rd 2nd 1st
-2861 1st 2nd 3rd Last 3rd 2nd 1st
-2862 1st 2nd 3rd Last 3rd 2nd 1st
-2863 1st 2nd 3rd Last 3rd 2nd 1st
-2864 1st 2nd 3rd Last 3rd 2nd 1st
-2865 1st 2nd 3rd Last 3rd 2nd 1st
-2866 1st 2nd 3rd Last 3rd 2nd 1st
-2867 1st 2nd 3rd Last 3rd 2nd 1st
-2868 1st 2nd 3rd Last 3rd 2nd 1st
-2869 1st 2nd 3rd Last 3rd 2nd 1st
-2870 1st 2nd 3rd Last 3rd 2nd 1st
-2871 1st 2nd 3rd Last 3rd 2nd 1st
-2872 1st 2nd 3rd Last 3rd 2nd 1st
-2873 1st 2nd 3rd Last 3rd 2nd 1st
-2874 1st 2nd 3rd Last 3rd 2nd 1st
-2875 1st 2nd 3rd Last 3rd 2nd 1st
-2876 1st 2nd 3rd Last 3rd 2nd 1st
-2877 1st 2nd 3rd Last 3rd 2nd 1st
-2878 1st 2nd 3rd Last 3rd 2nd 1st
-2879 1st 2nd 3rd Last 3rd 2nd 1st
-2880 1st 2nd 3rd Last 3rd 2nd 1st
-2881 1st 2nd 3rd Last 3rd 2nd 1st
-2882 1st 2nd 3rd Last 3rd 2nd 1st
-2883 1st 2nd 3rd Last 3rd 2nd 1st
-2884 1st 2nd 3rd Last 3rd 2nd 1st
-2885 1st 2nd 3rd Last 3rd 2nd 1st
-2886 1st 2nd 3rd Last 3rd 2nd 1st
-2887 1st 2nd 3rd Last 3rd 2nd 1st
-2888 1st 2nd 3rd Last 3rd 2nd 1st
-2889 1st 2nd 3rd Last 3rd 2nd 1st
-2890 1st 2nd 3rd Last 3rd 2nd 1st
-2891 1st 2nd 3rd Last 3rd 2nd 1st
-2892 1st 2nd 3rd Last 3rd 2nd 1st
-2893 1st 2nd 3rd Last 3rd 2nd 1st
-2894 1st 2nd 3rd Last 3rd 2nd 1st
-2895 1st 2nd 3rd Last 3rd 2nd 1st
-2896 1st 2nd 3rd Last 3rd 2nd 1st
-2897 1st 2nd 3rd Last 3rd 2nd 1st
-2898 1st 2nd 3rd Last 3rd 2nd 1st
-2899 1st 2nd 3rd Last 3rd 2nd 1st
-2900 1st 2nd 3rd Last 3rd 2nd 1st
-2901 1st 2nd 3rd Last 3rd 2nd 1st
-2902 1st 2nd 3rd Last 3rd 2nd 1st
-2903 1st 2nd 3rd Last 3rd 2nd 1st
-2904 1st 2nd 3rd Last 3rd 2nd 1st
-2905 1st 2nd 3rd Last 3rd 2nd 1st
-2906 1st 2nd 3rd Last 3rd 2nd 1st
-2907 1st 2nd 3rd Last 3rd 2nd 1st
-2908 1st 2nd 3rd Last 3rd 2nd 1st
-2909 1st 2nd 3rd Last 3rd 2nd 1st
-2910 1st 2nd 3rd Last 3rd 2nd 1st
-2911 1st 2nd 3rd Last 3rd 2nd 1st
-2912 1st 2nd 3rd Last 3rd 2nd 1st
-2913 1st 2nd 3rd Last 3rd 2nd 1st
-2914 1st 2nd 3rd Last 3rd 2nd 1st
-2915 1st 2nd 3rd Last 3rd 2nd 1st
-2916 1st 2nd 3rd Last 3rd 2nd 1st
-2917 1st 2nd 3rd Last 3rd 2nd 1st
-2918 1st 2nd 3rd Last 3rd 2nd 1st
-2919 1st 2nd 3rd Last 3rd 2nd 1st
-2920 1st 2nd 3rd Last 3rd 2nd 1st
-2921 1st 2nd 3rd Last 3rd 2nd 1st
-2922 1st 2nd 3rd Last 3rd 2nd 1st
-2923 1st 2nd 3rd Last 3rd 2nd 1st
-2924 1st 2nd 3rd Last 3rd 2nd 1st
-2925 1st 2nd 3rd Last 3rd 2nd 1st
-2926 1st 2nd 3rd Last 3rd 2nd 1st
-2927 1st 2nd 3rd Last 3rd 2nd 1st
-2928 1st 2nd 3rd Last 3rd 2nd 1st
-2929 1st 2nd 3rd Last 3rd 2nd 1st
-2930 1st 2nd 3rd Last 3rd 2nd 1st
-2931 1st 2nd 3rd Last 3rd 2nd 1st
-2932 1st 2nd 3rd Last 3rd 2nd 1st
-2933 1st 2nd 3rd Last 3rd 2nd 1st
-2934 1st 2nd 3rd Last 3rd 2nd 1st
-2935 1st 2nd 3rd Last 3rd 2nd 1st
-2936 1st 2nd 3rd Last 3rd 2nd 1st
-2937 1st 2nd 3rd Last 3rd 2nd 1st
-2938 1st 2nd 3rd Last 3rd 2nd 1st
-2939 1st 2nd 3rd Last 3rd 2nd 1st
-2940 1st 2nd 3rd Last 3rd 2nd 1st
-2941 1st 2nd 3rd Last 3rd 2nd 1st
-2942 1st 2nd 3rd Last 3rd 2nd 1st
-2943 1st 2nd 3rd Last 3rd 2nd 1st
-2944 1st 2nd 3rd Last 3rd 2nd 1st
-2945 1st 2nd 3rd Last 3rd 2nd 1st
-2946 1st 2nd 3rd Last 3rd 2nd 1st
-2947 1st 2nd 3rd Last 3rd 2nd 1st
-2948 1st 2nd 3rd Last 3rd 2nd 1st
-2949 1st 2nd 3rd Last 3rd 2nd 1st
-2950 1st 2nd 3rd Last 3rd 2nd 1st
-2951 1st 2nd 3rd Last 3rd 2nd 1st
-2952 1st 2nd 3rd Last 3rd 2nd 1st
-2953 1st 2nd 3rd Last 3rd 2nd 1st
-2954 1st 2nd 3rd Last 3rd 2nd 1st
-2955 1st 2nd 3rd Last 3rd 2nd 1st
-2956 1st 2nd 3rd Last 3rd 2nd 1st
-2957 1st 2nd 3rd Last 3rd 2nd 1st
-2958 1st 2nd 3rd Last 3rd 2nd 1st
-2959 1st 2nd 3rd Last 3rd 2nd 1st
-2960 1st 2nd 3rd Last 3rd 2nd 1st
-2961 1st 2nd 3rd Last 3rd 2nd 1st
-2962 1st 2nd 3rd Last 3rd 2nd 1st
-2963 1st 2nd 3rd Last 3rd 2nd 1st
-2964 1st 2nd 3rd Last 3rd 2nd 1st
-2965 1st 2nd 3rd Last 3rd 2nd 1st
-2966 1st 2nd 3rd Last 3rd 2nd 1st
-2967 1st 2nd 3rd Last 3rd 2nd 1st
-2968 1st 2nd 3rd Last 3rd 2nd 1st
-2969 1st 2nd 3rd Last 3rd 2nd 1st
-2970 1st 2nd 3rd Last 3rd 2nd 1st
-2971 1st 2nd 3rd Last 3rd 2nd 1st
-2972 1st 2nd 3rd Last 3rd 2nd 1st
-2973 1st 2nd 3rd Last 3rd 2nd 1st
-2974 1st 2nd 3rd Last 3rd 2nd 1st
-2975 1st 2nd 3rd Last 3rd 2nd 1st
-2976 1st 2nd 3rd Last 3rd 2nd 1st
-2977 1st 2nd 3rd Last 3rd 2nd 1st
-2978 1st 2nd 3rd Last 3rd 2nd 1st
-2979 1st 2nd 3rd Last 3rd 2nd 1st
-2980 1st 2nd 3rd Last 3rd 2nd 1st
-2981 1st 2nd 3rd Last 3rd 2nd 1st
-2982 1st 2nd 3rd Last 3rd 2nd 1st
-2983 1st 2nd 3rd Last 3rd 2nd 1st
-2984 1st 2nd 3rd Last 3rd 2nd 1st
-2985 1st 2nd 3rd Last 3rd 2nd 1st
-2986 1st 2nd 3rd Last 3rd 2nd 1st
-2987 1st 2nd 3rd Last 3rd 2nd 1st
-2988 1st 2nd 3rd Last 3rd 2nd 1st
-2989 1st 2nd 3rd Last 3rd 2nd 1st
-2990 1st 2nd 3rd Last 3rd 2nd 1st
-2991 1st 2nd 3rd Last 3rd 2nd 1st
-2992 1st 2nd 3rd Last 3rd 2nd 1st
-2993 1st 2nd 3rd Last 3rd 2nd 1st
-2994 1st 2nd 3rd Last 3rd 2nd 1st
-2995 1st 2nd 3rd Last 3rd 2nd 1st
-2996 1st 2nd 3rd Last 3rd 2nd 1st
-2997 1st 2nd 3rd Last 3rd 2nd 1st
-2998 1st 2nd 3rd Last 3rd 2nd 1st
-2999 1st 2nd 3rd Last 3rd 2nd 1st
-3000 1st 2nd 3rd Last 3rd 2nd 1st
-3001 1st 2nd 3rd Last 3rd 2nd 1st
-3002 1st 2nd 3rd Last 3rd 2nd 1st
-3003 1st 2nd 3rd Last 3rd 2nd 1st
-3004 1st 2nd 3rd Last 3rd 2nd 1st
-3005 1st 2nd 3rd Last 3rd 2nd 1st
-3006 1st 2nd 3rd Last 3rd 2nd 1st
-3007 1st 2nd 3rd Last 3rd 2nd 1st
-3008 1st 2nd 3rd Last 3rd 2nd 1st
-3009 1st 2nd 3rd Last 3rd 2nd 1st
-3010 1st 2nd 3rd Last 3rd 2nd 1st
-3011 1st 2nd 3rd Last 3rd 2nd 1st
-3012 1st 2nd 3rd Last 3rd 2nd 1st
-3013 1st 2nd 3rd Last 3rd 2nd 1st
-3014 1st 2nd 3rd Last 3rd 2nd 1st
-3015 1st 2nd 3rd Last 3rd 2nd 1st
-3016 1st 2nd 3rd Last 3rd 2nd 1st
-3017 1st 2nd 3rd Last 3rd 2nd 1st
-3018 1st 2nd 3rd Last 3rd 2nd 1st
-3019 1st 2nd 3rd Last 3rd 2nd 1st
-3020 1st 2nd 3rd Last 3rd 2nd 1st
-3021 1st 2nd 3rd Last 3rd 2nd 1st
-3022 1st 2nd 3rd Last 3rd 2nd 1st
-3023 1st 2nd 3rd Last 3rd 2nd 1st
-3024 1st 2nd 3rd Last 3rd 2nd 1st
-3025 1st 2nd 3rd Last 3rd 2nd 1st
-3026 1st 2nd 3rd Last 3rd 2nd 1st
-3027 1st 2nd 3rd Last 3rd 2nd 1st
-3028 1st 2nd 3rd Last 3rd 2nd 1st
-3029 1st 2nd 3rd Last 3rd 2nd 1st
-3030 1st 2nd 3rd Last 3rd 2nd 1st
-3031 1st 2nd 3rd Last 3rd 2nd 1st
-3032 1st 2nd 3rd Last 3rd 2nd 1st
-3033 1st 2nd 3rd Last 3rd 2nd 1st
-3034 1st 2nd 3rd Last 3rd 2nd 1st
-3035 1st 2nd 3rd Last 3rd 2nd 1st
-3036 1st 2nd 3rd Last 3rd 2nd 1st
-3037 1st 2nd 3rd Last 3rd 2nd 1st
-3038 1st 2nd 3rd Last 3rd 2nd 1st
-3039 1st 2nd 3rd Last 3rd 2nd 1st
-3040 1st 2nd 3rd Last 3rd 2nd 1st
-3041 1st 2nd 3rd Last 3rd 2nd 1st
-3042 1st 2nd 3rd Last 3rd 2nd 1st
-3043 1st 2nd 3rd Last 3rd 2nd 1st
-3044 1st 2nd 3rd Last 3rd 2nd 1st
-3045 1st 2nd 3rd Last 3rd 2nd 1st
-3046 1st 2nd 3rd Last 3rd 2nd 1st
-3047 1st 2nd 3rd Last 3rd 2nd 1st
-3048 1st 2nd 3rd Last 3rd 2nd 1st
-3049 1st 2nd 3rd Last 3rd 2nd 1st
-3050 1st 2nd 3rd Last 3rd 2nd 1st
-3051 1st 2nd 3rd Last 3rd 2nd 1st
-3052 1st 2nd 3rd Last 3rd 2nd 1st
-3053 1st 2nd 3rd Last 3rd 2nd 1st
-3054 1st 2nd 3rd Last 3rd 2nd 1st
-3055 1st 2nd 3rd Last 3rd 2nd 1st
-3056 1st 2nd 3rd Last 3rd 2nd 1st
-3057 1st 2nd 3rd Last 3rd 2nd 1st
-3058 1st 2nd 3rd Last 3rd 2nd 1st
-3059 1st 2nd 3rd Last 3rd 2nd 1st
-3060 1st 2nd 3rd Last 3rd 2nd 1st
-3061 1st 2nd 3rd Last 3rd 2nd 1st
-3062 1st 2nd 3rd Last 3rd 2nd 1st
-3063 1st 2nd 3rd Last 3rd 2nd 1st
-3064 1st 2nd 3rd Last 3rd 2nd 1st
-3065 1st 2nd 3rd Last 3rd 2nd 1st
-3066 1st 2nd 3rd Last 3rd 2nd 1st
-3067 1st 2nd 3rd Last 3rd 2nd 1st
-3068 1st 2nd 3rd Last 3rd 2nd 1st
-3069 1st 2nd 3rd Last 3rd 2nd 1st
-3070 1st 2nd 3rd Last 3rd 2nd 1st
-3071 1st 2nd 3rd Last 3rd 2nd 1st
-3072 1st 2nd 3rd Last 3rd 2nd 1st
-3073 1st 2nd 3rd Last 3rd 2nd 1st
-3074 1st 2nd 3rd Last 3rd 2nd 1st
-3075 1st 2nd 3rd Last 3rd 2nd 1st
-3076 1st 2nd 3rd Last 3rd 2nd 1st
-3077 1st 2nd 3rd Last 3rd 2nd 1st
-3078 1st 2nd 3rd Last 3rd 2nd 1st
-3079 1st 2nd 3rd Last 3rd 2nd 1st
-3080 1st 2nd 3rd Last 3rd 2nd 1st
-3081 1st 2nd 3rd Last 3rd 2nd 1st
-3082 1st 2nd 3rd Last 3rd 2nd 1st
-3083 1st 2nd 3rd Last 3rd 2nd 1st
-3084 1st 2nd 3rd Last 3rd 2nd 1st
-3085 1st 2nd 3rd Last 3rd 2nd 1st
-3086 1st 2nd 3rd Last 3rd 2nd 1st
-3087 1st 2nd 3rd Last 3rd 2nd 1st
-3088 1st 2nd 3rd Last 3rd 2nd 1st
-3089 1st 2nd 3rd Last 3rd 2nd 1st
-3090 1st 2nd 3rd Last 3rd 2nd 1st
-3091 1st 2nd 3rd Last 3rd 2nd 1st
-3092 1st 2nd 3rd Last 3rd 2nd 1st
-3093 1st 2nd 3rd Last 3rd 2nd 1st
-3094 1st 2nd 3rd Last 3rd 2nd 1st
-3095 1st 2nd 3rd Last 3rd 2nd 1st
-3096 1st 2nd 3rd Last 3rd 2nd 1st
-3097 1st 2nd 3rd Last 3rd 2nd 1st
-3098 1st 2nd 3rd Last 3rd 2nd 1st
-3099 1st 2nd 3rd Last 3rd 2nd 1st
-3100 1st 2nd 3rd Last 3rd 2nd 1st
-3101 1st 2nd 3rd Last 3rd 2nd 1st
-3102 1st 2nd 3rd Last 3rd 2nd 1st
-3103 1st 2nd 3rd Last 3rd 2nd 1st
-3104 1st 2nd 3rd Last 3rd 2nd 1st
-3105 1st 2nd 3rd Last 3rd 2nd 1st
-3106 1st 2nd 3rd Last 3rd 2nd 1st
-3107 1st 2nd 3rd Last 3rd 2nd 1st
-3108 1st 2nd 3rd Last 3rd 2nd 1st
-3109 1st 2nd 3rd Last 3rd 2nd 1st
-3110 1st 2nd 3rd Last 3rd 2nd 1st
-3111 1st 2nd 3rd Last 3rd 2nd 1st
-3112 1st 2nd 3rd Last 3rd 2nd 1st
-3113 1st 2nd 3rd Last 3rd 2nd 1st
-3114 1st 2nd 3rd Last 3rd 2nd 1st
-3115 1st 2nd 3rd Last 3rd 2nd 1st
-3116 1st 2nd 3rd Last 3rd 2nd 1st
-3117 1st 2nd 3rd Last 3rd 2nd 1st
-3118 1st 2nd 3rd Last 3rd 2nd 1st
-3119 1st 2nd 3rd Last 3rd 2nd 1st
-3120 1st 2nd 3rd Last 3rd 2nd 1st
-3121 1st 2nd 3rd Last 3rd 2nd 1st
-3122 1st 2nd 3rd Last 3rd 2nd 1st
-3123 1st 2nd 3rd Last 3rd 2nd 1st
-3124 1st 2nd 3rd Last 3rd 2nd 1st
-3125 1st 2nd 3rd Last 3rd 2nd 1st
-3126 1st 2nd 3rd Last 3rd 2nd 1st
-3127 1st 2nd 3rd Last 3rd 2nd 1st
-3128 1st 2nd 3rd Last 3rd 2nd 1st
-3129 1st 2nd 3rd Last 3rd 2nd 1st
-3130 1st 2nd 3rd Last 3rd 2nd 1st
-3131 1st 2nd 3rd Last 3rd 2nd 1st
-3132 1st 2nd 3rd Last 3rd 2nd 1st
-3133 1st 2nd 3rd Last 3rd 2nd 1st
-3134 1st 2nd 3rd Last 3rd 2nd 1st
-3135 1st 2nd 3rd Last 3rd 2nd 1st
-3136 1st 2nd 3rd Last 3rd 2nd 1st
-3137 1st 2nd 3rd Last 3rd 2nd 1st
-3138 1st 2nd 3rd Last 3rd 2nd 1st
-3139 1st 2nd 3rd Last 3rd 2nd 1st
-3140 1st 2nd 3rd Last 3rd 2nd 1st
-3141 1st 2nd 3rd Last 3rd 2nd 1st
-3142 1st 2nd 3rd Last 3rd 2nd 1st
-3143 1st 2nd 3rd Last 3rd 2nd 1st
-3144 1st 2nd 3rd Last 3rd 2nd 1st
-3145 1st 2nd 3rd Last 3rd 2nd 1st
-3146 1st 2nd 3rd Last 3rd 2nd 1st
-3147 1st 2nd 3rd Last 3rd 2nd 1st
-3148 1st 2nd 3rd Last 3rd 2nd 1st
-3149 1st 2nd 3rd Last 3rd 2nd 1st
-3150 1st 2nd 3rd Last 3rd 2nd 1st
-3151 1st 2nd 3rd Last 3rd 2nd 1st
-3152 1st 2nd 3rd Last 3rd 2nd 1st
-3153 1st 2nd 3rd Last 3rd 2nd 1st
-3154 1st 2nd 3rd Last 3rd 2nd 1st
-3155 1st 2nd 3rd Last 3rd 2nd 1st
-3156 1st 2nd 3rd Last 3rd 2nd 1st
-3157 1st 2nd 3rd Last 3rd 2nd 1st
-3158 1st 2nd 3rd Last 3rd 2nd 1st
-3159 1st 2nd 3rd Last 3rd 2nd 1st
-3160 1st 2nd 3rd Last 3rd 2nd 1st
-3161 1st 2nd 3rd Last 3rd 2nd 1st
-3162 1st 2nd 3rd Last 3rd 2nd 1st
-3163 1st 2nd 3rd Last 3rd 2nd 1st
-3164 1st 2nd 3rd Last 3rd 2nd 1st
-3165 1st 2nd 3rd Last 3rd 2nd 1st
-3166 1st 2nd 3rd Last 3rd 2nd 1st
-3167 1st 2nd 3rd Last 3rd 2nd 1st
-3168 1st 2nd 3rd Last 3rd 2nd 1st
-3169 1st 2nd 3rd Last 3rd 2nd 1st
-3170 1st 2nd 3rd Last 3rd 2nd 1st
-3171 1st 2nd 3rd Last 3rd 2nd 1st
-3172 1st 2nd 3rd Last 3rd 2nd 1st
-3173 1st 2nd 3rd Last 3rd 2nd 1st
-3174 1st 2nd 3rd Last 3rd 2nd 1st
-3175 1st 2nd 3rd Last 3rd 2nd 1st
-3176 1st 2nd 3rd Last 3rd 2nd 1st
-3177 1st 2nd 3rd Last 3rd 2nd 1st
-3178 1st 2nd 3rd Last 3rd 2nd 1st
-3179 1st 2nd 3rd Last 3rd 2nd 1st
-3180 1st 2nd 3rd Last 3rd 2nd 1st
-3181 1st 2nd 3rd Last 3rd 2nd 1st
-3182 1st 2nd 3rd Last 3rd 2nd 1st
-3183 1st 2nd 3rd Last 3rd 2nd 1st
-3184 1st 2nd 3rd Last 3rd 2nd 1st
-3185 1st 2nd 3rd Last 3rd 2nd 1st
-3186 1st 2nd 3rd Last 3rd 2nd 1st
-3187 1st 2nd 3rd Last 3rd 2nd 1st
-3188 1st 2nd 3rd Last 3rd 2nd 1st
-3189 1st 2nd 3rd Last 3rd 2nd 1st
-3190 1st 2nd 3rd Last 3rd 2nd 1st
-3191 1st 2nd 3rd Last 3rd 2nd 1st
-3192 1st 2nd 3rd Last 3rd 2nd 1st
-3193 1st 2nd 3rd Last 3rd 2nd 1st
-3194 1st 2nd 3rd Last 3rd 2nd 1st
-3195 1st 2nd 3rd Last 3rd 2nd 1st
-3196 1st 2nd 3rd Last 3rd 2nd 1st
-3197 1st 2nd 3rd Last 3rd 2nd 1st
-3198 1st 2nd 3rd Last 3rd 2nd 1st
-3199 1st 2nd 3rd Last 3rd 2nd 1st
-3200 1st 2nd 3rd Last 3rd 2nd 1st
-3201 1st 2nd 3rd Last 3rd 2nd 1st
-3202 1st 2nd 3rd Last 3rd 2nd 1st
-3203 1st 2nd 3rd Last 3rd 2nd 1st
-3204 1st 2nd 3rd Last 3rd 2nd 1st
-3205 1st 2nd 3rd Last 3rd 2nd 1st
-3206 1st 2nd 3rd Last 3rd 2nd 1st
-3207 1st 2nd 3rd Last 3rd 2nd 1st
-3208 1st 2nd 3rd Last 3rd 2nd 1st
-3209 1st 2nd 3rd Last 3rd 2nd 1st
-3210 1st 2nd 3rd Last 3rd 2nd 1st
-3211 1st 2nd 3rd Last 3rd 2nd 1st
-3212 1st 2nd 3rd Last 3rd 2nd 1st
-3213 1st 2nd 3rd Last 3rd 2nd 1st
-3214 1st 2nd 3rd Last 3rd 2nd 1st
-3215 1st 2nd 3rd Last 3rd 2nd 1st
-3216 1st 2nd 3rd Last 3rd 2nd 1st
-3217 1st 2nd 3rd Last 3rd 2nd 1st
-3218 1st 2nd 3rd Last 3rd 2nd 1st
-3219 1st 2nd 3rd Last 3rd 2nd 1st
-3220 1st 2nd 3rd Last 3rd 2nd 1st
-3221 1st 2nd 3rd Last 3rd 2nd 1st
-3222 1st 2nd 3rd Last 3rd 2nd 1st
-3223 1st 2nd 3rd Last 3rd 2nd 1st
-3224 1st 2nd 3rd Last 3rd 2nd 1st
-3225 1st 2nd 3rd Last 3rd 2nd 1st
-3226 1st 2nd 3rd Last 3rd 2nd 1st
-3227 1st 2nd 3rd Last 3rd 2nd 1st
-3228 1st 2nd 3rd Last 3rd 2nd 1st
-3229 1st 2nd 3rd Last 3rd 2nd 1st
-3230 1st 2nd 3rd Last 3rd 2nd 1st
-3231 1st 2nd 3rd Last 3rd 2nd 1st
-3232 1st 2nd 3rd Last 3rd 2nd 1st
-3233 1st 2nd 3rd Last 3rd 2nd 1st
-3234 1st 2nd 3rd Last 3rd 2nd 1st
-3235 1st 2nd 3rd Last 3rd 2nd 1st
-3236 1st 2nd 3rd Last 3rd 2nd 1st
-3237 1st 2nd 3rd Last 3rd 2nd 1st
-3238 1st 2nd 3rd Last 3rd 2nd 1st
-3239 1st 2nd 3rd Last 3rd 2nd 1st
-3240 1st 2nd 3rd Last 3rd 2nd 1st
-3241 1st 2nd 3rd Last 3rd 2nd 1st
-3242 1st 2nd 3rd Last 3rd 2nd 1st
-3243 1st 2nd 3rd Last 3rd 2nd 1st
-3244 1st 2nd 3rd Last 3rd 2nd 1st
-3245 1st 2nd 3rd Last 3rd 2nd 1st
-3246 1st 2nd 3rd Last 3rd 2nd 1st
-3247 1st 2nd 3rd Last 3rd 2nd 1st
-3248 1st 2nd 3rd Last 3rd 2nd 1st
-3249 1st 2nd 3rd Last 3rd 2nd 1st
-3250 1st 2nd 3rd Last 3rd 2nd 1st
-3251 1st 2nd 3rd Last 3rd 2nd 1st
-3252 1st 2nd 3rd Last 3rd 2nd 1st
-3253 1st 2nd 3rd Last 3rd 2nd 1st
-3254 1st 2nd 3rd Last 3rd 2nd 1st
-3255 1st 2nd 3rd Last 3rd 2nd 1st
-3256 1st 2nd 3rd Last 3rd 2nd 1st
-3257 1st 2nd 3rd Last 3rd 2nd 1st
-3258 1st 2nd 3rd Last 3rd 2nd 1st
-3259 1st 2nd 3rd Last 3rd 2nd 1st
-3260 1st 2nd 3rd Last 3rd 2nd 1st
-3261 1st 2nd 3rd Last 3rd 2nd 1st
-3262 1st 2nd 3rd Last 3rd 2nd 1st
-3263 1st 2nd 3rd Last 3rd 2nd 1st
-3264 1st 2nd 3rd Last 3rd 2nd 1st
-3265 1st 2nd 3rd Last 3rd 2nd 1st
-3266 1st 2nd 3rd Last 3rd 2nd 1st
-3267 1st 2nd 3rd Last 3rd 2nd 1st
-3268 1st 2nd 3rd Last 3rd 2nd 1st
-3269 1st 2nd 3rd Last 3rd 2nd 1st
-3270 1st 2nd 3rd Last 3rd 2nd 1st
-3271 1st 2nd 3rd Last 3rd 2nd 1st
-3272 1st 2nd 3rd Last 3rd 2nd 1st
-3273 1st 2nd 3rd Last 3rd 2nd 1st
-3274 1st 2nd 3rd Last 3rd 2nd 1st
-3275 1st 2nd 3rd Last 3rd 2nd 1st
-3276 1st 2nd 3rd Last 3rd 2nd 1st
-3277 1st 2nd 3rd Last 3rd 2nd 1st
-3278 1st 2nd 3rd Last 3rd 2nd 1st
-3279 1st 2nd 3rd Last 3rd 2nd 1st
-3280 1st 2nd 3rd Last 3rd 2nd 1st
-3281 1st 2nd 3rd Last 3rd 2nd 1st
-3282 1st 2nd 3rd Last 3rd 2nd 1st
-3283 1st 2nd 3rd Last 3rd 2nd 1st
-3284 1st 2nd 3rd Last 3rd 2nd 1st
-3285 1st 2nd 3rd Last 3rd 2nd 1st
-3286 1st 2nd 3rd Last 3rd 2nd 1st
-3287 1st 2nd 3rd Last 3rd 2nd 1st
-3288 1st 2nd 3rd Last 3rd 2nd 1st
-3289 1st 2nd 3rd Last 3rd 2nd 1st
-3290 1st 2nd 3rd Last 3rd 2nd 1st
-3291 1st 2nd 3rd Last 3rd 2nd 1st
-3292 1st 2nd 3rd Last 3rd 2nd 1st
-3293 1st 2nd 3rd Last 3rd 2nd 1st
-3294 1st 2nd 3rd Last 3rd 2nd 1st
-3295 1st 2nd 3rd Last 3rd 2nd 1st
-3296 1st 2nd 3rd Last 3rd 2nd 1st
-3297 1st 2nd 3rd Last 3rd 2nd 1st
-3298 1st 2nd 3rd Last 3rd 2nd 1st
-3299 1st 2nd 3rd Last 3rd 2nd 1st
-3300 1st 2nd 3rd Last 3rd 2nd 1st
-3301 1st 2nd 3rd Last 3rd 2nd 1st
-3302 1st 2nd 3rd Last 3rd 2nd 1st
-3303 1st 2nd 3rd Last 3rd 2nd 1st
-3304 1st 2nd 3rd Last 3rd 2nd 1st
-3305 1st 2nd 3rd Last 3rd 2nd 1st
-3306 1st 2nd 3rd Last 3rd 2nd 1st
-3307 1st 2nd 3rd Last 3rd 2nd 1st
-3308 1st 2nd 3rd Last 3rd 2nd 1st
-3309 1st 2nd 3rd Last 3rd 2nd 1st
-3310 1st 2nd 3rd Last 3rd 2nd 1st
-3311 1st 2nd 3rd Last 3rd 2nd 1st
-3312 1st 2nd 3rd Last 3rd 2nd 1st
-3313 1st 2nd 3rd Last 3rd 2nd 1st
-3314 1st 2nd 3rd Last 3rd 2nd 1st
-3315 1st 2nd 3rd Last 3rd 2nd 1st
-3316 1st 2nd 3rd Last 3rd 2nd 1st
-3317 1st 2nd 3rd Last 3rd 2nd 1st
-3318 1st 2nd 3rd Last 3rd 2nd 1st
-3319 1st 2nd 3rd Last 3rd 2nd 1st
-3320 1st 2nd 3rd Last 3rd 2nd 1st
-3321 1st 2nd 3rd Last 3rd 2nd 1st
-3322 1st 2nd 3rd Last 3rd 2nd 1st
-3323 1st 2nd 3rd Last 3rd 2nd 1st
-3324 1st 2nd 3rd Last 3rd 2nd 1st
-3325 1st 2nd 3rd Last 3rd 2nd 1st
-3326 1st 2nd 3rd Last 3rd 2nd 1st
-3327 1st 2nd 3rd Last 3rd 2nd 1st
-3328 1st 2nd 3rd Last 3rd 2nd 1st
-3329 1st 2nd 3rd Last 3rd 2nd 1st
-3330 1st 2nd 3rd Last 3rd 2nd 1st
-3331 1st 2nd 3rd Last 3rd 2nd 1st
-3332 1st 2nd 3rd Last 3rd 2nd 1st
-3333 1st 2nd 3rd Last 3rd 2nd 1st
-3334 1st 2nd 3rd Last 3rd 2nd 1st
-3335 1st 2nd 3rd Last 3rd 2nd 1st
-3336 1st 2nd 3rd Last 3rd 2nd 1st
-3337 1st 2nd 3rd Last 3rd 2nd 1st
-3338 1st 2nd 3rd Last 3rd 2nd 1st
-3339 1st 2nd 3rd Last 3rd 2nd 1st
-3340 1st 2nd 3rd Last 3rd 2nd 1st
-3341 1st 2nd 3rd Last 3rd 2nd 1st
-3342 1st 2nd 3rd Last 3rd 2nd 1st
-3343 1st 2nd 3rd Last 3rd 2nd 1st
-3344 1st 2nd 3rd Last 3rd 2nd 1st
-3345 1st 2nd 3rd Last 3rd 2nd 1st
-3346 1st 2nd 3rd Last 3rd 2nd 1st
-3347 1st 2nd 3rd Last 3rd 2nd 1st
-3348 1st 2nd 3rd Last 3rd 2nd 1st
-3349 1st 2nd 3rd Last 3rd 2nd 1st
-3350 1st 2nd 3rd Last 3rd 2nd 1st
-3351 1st 2nd 3rd Last 3rd 2nd 1st
-3352 1st 2nd 3rd Last 3rd 2nd 1st
-3353 1st 2nd 3rd Last 3rd 2nd 1st
-3354 1st 2nd 3rd Last 3rd 2nd 1st
-3355 1st 2nd 3rd Last 3rd 2nd 1st
-3356 1st 2nd 3rd Last 3rd 2nd 1st
-3357 1st 2nd 3rd Last 3rd 2nd 1st
-3358 1st 2nd 3rd Last 3rd 2nd 1st
-3359 1st 2nd 3rd Last 3rd 2nd 1st
-3360 1st 2nd 3rd Last 3rd 2nd 1st
-3361 1st 2nd 3rd Last 3rd 2nd 1st
-3362 1st 2nd 3rd Last 3rd 2nd 1st
-3363 1st 2nd 3rd Last 3rd 2nd 1st
-3364 1st 2nd 3rd Last 3rd 2nd 1st
-3365 1st 2nd 3rd Last 3rd 2nd 1st
-3366 1st 2nd 3rd Last 3rd 2nd 1st
-3367 1st 2nd 3rd Last 3rd 2nd 1st
-3368 1st 2nd 3rd Last 3rd 2nd 1st
-3369 1st 2nd 3rd Last 3rd 2nd 1st
-3370 1st 2nd 3rd Last 3rd 2nd 1st
-3371 1st 2nd 3rd Last 3rd 2nd 1st
-3372 1st 2nd 3rd Last 3rd 2nd 1st
-3373 1st 2nd 3rd Last 3rd 2nd 1st
-3374 1st 2nd 3rd Last 3rd 2nd 1st
-3375 1st 2nd 3rd Last 3rd 2nd 1st
-3376 1st 2nd 3rd Last 3rd 2nd 1st
-3377 1st 2nd 3rd Last 3rd 2nd 1st
-3378 1st 2nd 3rd Last 3rd 2nd 1st
-3379 1st 2nd 3rd Last 3rd 2nd 1st
-3380 1st 2nd 3rd Last 3rd 2nd 1st
-3381 1st 2nd 3rd Last 3rd 2nd 1st
-3382 1st 2nd 3rd Last 3rd 2nd 1st
-3383 1st 2nd 3rd Last 3rd 2nd 1st
-3384 1st 2nd 3rd Last 3rd 2nd 1st
-3385 1st 2nd 3rd Last 3rd 2nd 1st
-3386 1st 2nd 3rd Last 3rd 2nd 1st
-3387 1st 2nd 3rd Last 3rd 2nd 1st
-3388 1st 2nd 3rd Last 3rd 2nd 1st
-3389 1st 2nd 3rd Last 3rd 2nd 1st
-3390 1st 2nd 3rd Last 3rd 2nd 1st
-3391 1st 2nd 3rd Last 3rd 2nd 1st
-3392 1st 2nd 3rd Last 3rd 2nd 1st
-3393 1st 2nd 3rd Last 3rd 2nd 1st
-3394 1st 2nd 3rd Last 3rd 2nd 1st
-3395 1st 2nd 3rd Last 3rd 2nd 1st
-3396 1st 2nd 3rd Last 3rd 2nd 1st
-3397 1st 2nd 3rd Last 3rd 2nd 1st
-3398 1st 2nd 3rd Last 3rd 2nd 1st
-3399 1st 2nd 3rd Last 3rd 2nd 1st
-3400 1st 2nd 3rd Last 3rd 2nd 1st
-3401 1st 2nd 3rd Last 3rd 2nd 1st
-3402 1st 2nd 3rd Last 3rd 2nd 1st
-3403 1st 2nd 3rd Last 3rd 2nd 1st
-3404 1st 2nd 3rd Last 3rd 2nd 1st
-3405 1st 2nd 3rd Last 3rd 2nd 1st
-3406 1st 2nd 3rd Last 3rd 2nd 1st
-3407 1st 2nd 3rd Last 3rd 2nd 1st
-3408 1st 2nd 3rd Last 3rd 2nd 1st
-3409 1st 2nd 3rd Last 3rd 2nd 1st
-3410 1st 2nd 3rd Last 3rd 2nd 1st
-3411 1st 2nd 3rd Last 3rd 2nd 1st
-3412 1st 2nd 3rd Last 3rd 2nd 1st
-3413 1st 2nd 3rd Last 3rd 2nd 1st
-3414 1st 2nd 3rd Last 3rd 2nd 1st
-3415 1st 2nd 3rd Last 3rd 2nd 1st
-3416 1st 2nd 3rd Last 3rd 2nd 1st
-3417 1st 2nd 3rd Last 3rd 2nd 1st
-3418 1st 2nd 3rd Last 3rd 2nd 1st
-3419 1st 2nd 3rd Last 3rd 2nd 1st
-3420 1st 2nd 3rd Last 3rd 2nd 1st
-3421 1st 2nd 3rd Last 3rd 2nd 1st
-3422 1st 2nd 3rd Last 3rd 2nd 1st
-3423 1st 2nd 3rd Last 3rd 2nd 1st
-3424 1st 2nd 3rd Last 3rd 2nd 1st
-3425 1st 2nd 3rd Last 3rd 2nd 1st
-3426 1st 2nd 3rd Last 3rd 2nd 1st
-3427 1st 2nd 3rd Last 3rd 2nd 1st
-3428 1st 2nd 3rd Last 3rd 2nd 1st
-3429 1st 2nd 3rd Last 3rd 2nd 1st
-3430 1st 2nd 3rd Last 3rd 2nd 1st
-3431 1st 2nd 3rd Last 3rd 2nd 1st
-3432 1st 2nd 3rd Last 3rd 2nd 1st
-3433 1st 2nd 3rd Last 3rd 2nd 1st
-3434 1st 2nd 3rd Last 3rd 2nd 1st
-3435 1st 2nd 3rd Last 3rd 2nd 1st
-3436 1st 2nd 3rd Last 3rd 2nd 1st
-3437 1st 2nd 3rd Last 3rd 2nd 1st
-3438 1st 2nd 3rd Last 3rd 2nd 1st
-3439 1st 2nd 3rd Last 3rd 2nd 1st
-3440 1st 2nd 3rd Last 3rd 2nd 1st
-3441 1st 2nd 3rd Last 3rd 2nd 1st
-3442 1st 2nd 3rd Last 3rd 2nd 1st
-3443 1st 2nd 3rd Last 3rd 2nd 1st
-3444 1st 2nd 3rd Last 3rd 2nd 1st
-3445 1st 2nd 3rd Last 3rd 2nd 1st
-3446 1st 2nd 3rd Last 3rd 2nd 1st
-3447 1st 2nd 3rd Last 3rd 2nd 1st
-3448 1st 2nd 3rd Last 3rd 2nd 1st
-3449 1st 2nd 3rd Last 3rd 2nd 1st
-3450 1st 2nd 3rd Last 3rd 2nd 1st
-3451 1st 2nd 3rd Last 3rd 2nd 1st
-3452 1st 2nd 3rd Last 3rd 2nd 1st
-3453 1st 2nd 3rd Last 3rd 2nd 1st
-3454 1st 2nd 3rd Last 3rd 2nd 1st
-3455 1st 2nd 3rd Last 3rd 2nd 1st
-3456 1st 2nd 3rd Last 3rd 2nd 1st
-3457 1st 2nd 3rd Last 3rd 2nd 1st
-3458 1st 2nd 3rd Last 3rd 2nd 1st
-3459 1st 2nd 3rd Last 3rd 2nd 1st
-3460 1st 2nd 3rd Last 3rd 2nd 1st
-3461 1st 2nd 3rd Last 3rd 2nd 1st
-3462 1st 2nd 3rd Last 3rd 2nd 1st
-3463 1st 2nd 3rd Last 3rd 2nd 1st
-3464 1st 2nd 3rd Last 3rd 2nd 1st
-3465 1st 2nd 3rd Last 3rd 2nd 1st
-3466 1st 2nd 3rd Last 3rd 2nd 1st
-3467 1st 2nd 3rd Last 3rd 2nd 1st
-3468 1st 2nd 3rd Last 3rd 2nd 1st
-3469 1st 2nd 3rd Last 3rd 2nd 1st
-3470 1st 2nd 3rd Last 3rd 2nd 1st
-3471 1st 2nd 3rd Last 3rd 2nd 1st
-3472 1st 2nd 3rd Last 3rd 2nd 1st
-3473 1st 2nd 3rd Last 3rd 2nd 1st
-3474 1st 2nd 3rd Last 3rd 2nd 1st
-3475 1st 2nd 3rd Last 3rd 2nd 1st
-3476 1st 2nd 3rd Last 3rd 2nd 1st
-3477 1st 2nd 3rd Last 3rd 2nd 1st
-3478 1st 2nd 3rd Last 3rd 2nd 1st
-3479 1st 2nd 3rd Last 3rd 2nd 1st
-3480 1st 2nd 3rd Last 3rd 2nd 1st
-3481 1st 2nd 3rd Last 3rd 2nd 1st
-3482 1st 2nd 3rd Last 3rd 2nd 1st
-3483 1st 2nd 3rd Last 3rd 2nd 1st
-3484 1st 2nd 3rd Last 3rd 2nd 1st
-3485 1st 2nd 3rd Last 3rd 2nd 1st
-3486 1st 2nd 3rd Last 3rd 2nd 1st
-3487 1st 2nd 3rd Last 3rd 2nd 1st
-3488 1st 2nd 3rd Last 3rd 2nd 1st
-3489 1st 2nd 3rd Last 3rd 2nd 1st
-3490 1st 2nd 3rd Last 3rd 2nd 1st
-3491 1st 2nd 3rd Last 3rd 2nd 1st
-3492 1st 2nd 3rd Last 3rd 2nd 1st
-3493 1st 2nd 3rd Last 3rd 2nd 1st
-3494 1st 2nd 3rd Last 3rd 2nd 1st
-3495 1st 2nd 3rd Last 3rd 2nd 1st
-3496 1st 2nd 3rd Last 3rd 2nd 1st
-3497 1st 2nd 3rd Last 3rd 2nd 1st
-3498 1st 2nd 3rd Last 3rd 2nd 1st
-3499 1st 2nd 3rd Last 3rd 2nd 1st
-3500 1st 2nd 3rd Last 3rd 2nd 1st
-3501 1st 2nd 3rd Last 3rd 2nd 1st
-3502 1st 2nd 3rd Last 3rd 2nd 1st
-3503 1st 2nd 3rd Last 3rd 2nd 1st
-3504 1st 2nd 3rd Last 3rd 2nd 1st
-3505 1st 2nd 3rd Last 3rd 2nd 1st
-3506 1st 2nd 3rd Last 3rd 2nd 1st
-3507 1st 2nd 3rd Last 3rd 2nd 1st
-3508 1st 2nd 3rd Last 3rd 2nd 1st
-3509 1st 2nd 3rd Last 3rd 2nd 1st
-3510 1st 2nd 3rd Last 3rd 2nd 1st
-3511 1st 2nd 3rd Last 3rd 2nd 1st
-3512 1st 2nd 3rd Last 3rd 2nd 1st
-3513 1st 2nd 3rd Last 3rd 2nd 1st
-3514 1st 2nd 3rd Last 3rd 2nd 1st
-3515 1st 2nd 3rd Last 3rd 2nd 1st
-3516 1st 2nd 3rd Last 3rd 2nd 1st
-3517 1st 2nd 3rd Last 3rd 2nd 1st
-3518 1st 2nd 3rd Last 3rd 2nd 1st
-3519 1st 2nd 3rd Last 3rd 2nd 1st
-3520 1st 2nd 3rd Last 3rd 2nd 1st
-3521 1st 2nd 3rd Last 3rd 2nd 1st
-3522 1st 2nd 3rd Last 3rd 2nd 1st
-3523 1st 2nd 3rd Last 3rd 2nd 1st
-3524 1st 2nd 3rd Last 3rd 2nd 1st
-3525 1st 2nd 3rd Last 3rd 2nd 1st
-3526 1st 2nd 3rd Last 3rd 2nd 1st
-3527 1st 2nd 3rd Last 3rd 2nd 1st
-3528 1st 2nd 3rd Last 3rd 2nd 1st
-3529 1st 2nd 3rd Last 3rd 2nd 1st
-3530 1st 2nd 3rd Last 3rd 2nd 1st
-3531 1st 2nd 3rd Last 3rd 2nd 1st
-3532 1st 2nd 3rd Last 3rd 2nd 1st
-3533 1st 2nd 3rd Last 3rd 2nd 1st
-3534 1st 2nd 3rd Last 3rd 2nd 1st
-3535 1st 2nd 3rd Last 3rd 2nd 1st
-3536 1st 2nd 3rd Last 3rd 2nd 1st
-3537 1st 2nd 3rd Last 3rd 2nd 1st
-3538 1st 2nd 3rd Last 3rd 2nd 1st
-3539 1st 2nd 3rd Last 3rd 2nd 1st
-3540 1st 2nd 3rd Last 3rd 2nd 1st
-3541 1st 2nd 3rd Last 3rd 2nd 1st
-3542 1st 2nd 3rd Last 3rd 2nd 1st
-3543 1st 2nd 3rd Last 3rd 2nd 1st
-3544 1st 2nd 3rd Last 3rd 2nd 1st
-3545 1st 2nd 3rd Last 3rd 2nd 1st
-3546 1st 2nd 3rd Last 3rd 2nd 1st
-3547 1st 2nd 3rd Last 3rd 2nd 1st
-3548 1st 2nd 3rd Last 3rd 2nd 1st
-3549 1st 2nd 3rd Last 3rd 2nd 1st
-3550 1st 2nd 3rd Last 3rd 2nd 1st
-3551 1st 2nd 3rd Last 3rd 2nd 1st
-3552 1st 2nd 3rd Last 3rd 2nd 1st
-3553 1st 2nd 3rd Last 3rd 2nd 1st
-3554 1st 2nd 3rd Last 3rd 2nd 1st
-3555 1st 2nd 3rd Last 3rd 2nd 1st
-3556 1st 2nd 3rd Last 3rd 2nd 1st
-3557 1st 2nd 3rd Last 3rd 2nd 1st
-3558 1st 2nd 3rd Last 3rd 2nd 1st
-3559 1st 2nd 3rd Last 3rd 2nd 1st
-3560 1st 2nd 3rd Last 3rd 2nd 1st
-3561 1st 2nd 3rd Last 3rd 2nd 1st
-3562 1st 2nd 3rd Last 3rd 2nd 1st
-3563 1st 2nd 3rd Last 3rd 2nd 1st
-3564 1st 2nd 3rd Last 3rd 2nd 1st
-3565 1st 2nd 3rd Last 3rd 2nd 1st
-3566 1st 2nd 3rd Last 3rd 2nd 1st
-3567 1st 2nd 3rd Last 3rd 2nd 1st
-3568 1st 2nd 3rd Last 3rd 2nd 1st
-3569 1st 2nd 3rd Last 3rd 2nd 1st
-3570 1st 2nd 3rd Last 3rd 2nd 1st
-3571 1st 2nd 3rd Last 3rd 2nd 1st
-3572 1st 2nd 3rd Last 3rd 2nd 1st
-3573 1st 2nd 3rd Last 3rd 2nd 1st
-3574 1st 2nd 3rd Last 3rd 2nd 1st
-3575 1st 2nd 3rd Last 3rd 2nd 1st
-3576 1st 2nd 3rd Last 3rd 2nd 1st
-3577 1st 2nd 3rd Last 3rd 2nd 1st
-3578 1st 2nd 3rd Last 3rd 2nd 1st
-3579 1st 2nd 3rd Last 3rd 2nd 1st
-3580 1st 2nd 3rd Last 3rd 2nd 1st
-3581 1st 2nd 3rd Last 3rd 2nd 1st
-3582 1st 2nd 3rd Last 3rd 2nd 1st
-3583 1st 2nd 3rd Last 3rd 2nd 1st
-3584 1st 2nd 3rd Last 3rd 2nd 1st
-3585 1st 2nd 3rd Last 3rd 2nd 1st
-3586 1st 2nd 3rd Last 3rd 2nd 1st
-3587 1st 2nd 3rd Last 3rd 2nd 1st
-3588 1st 2nd 3rd Last 3rd 2nd 1st
-3589 1st 2nd 3rd Last 3rd 2nd 1st
-3590 1st 2nd 3rd Last 3rd 2nd 1st
-3591 1st 2nd 3rd Last 3rd 2nd 1st
-3592 1st 2nd 3rd Last 3rd 2nd 1st
-3593 1st 2nd 3rd Last 3rd 2nd 1st
-3594 1st 2nd 3rd Last 3rd 2nd 1st
-3595 1st 2nd 3rd Last 3rd 2nd 1st
-3596 1st 2nd 3rd Last 3rd 2nd 1st
-3597 1st 2nd 3rd Last 3rd 2nd 1st
-3598 1st 2nd 3rd Last 3rd 2nd 1st
-3599 1st 2nd 3rd Last 3rd 2nd 1st
-3600 1st 2nd 3rd Last 3rd 2nd 1st
-3601 1st 2nd 3rd Last 3rd 2nd 1st
-3602 1st 2nd 3rd Last 3rd 2nd 1st
-3603 1st 2nd 3rd Last 3rd 2nd 1st
-3604 1st 2nd 3rd Last 3rd 2nd 1st
-3605 1st 2nd 3rd Last 3rd 2nd 1st
-3606 1st 2nd 3rd Last 3rd 2nd 1st
-3607 1st 2nd 3rd Last 3rd 2nd 1st
-3608 1st 2nd 3rd Last 3rd 2nd 1st
-3609 1st 2nd 3rd Last 3rd 2nd 1st
-3610 1st 2nd 3rd Last 3rd 2nd 1st
-3611 1st 2nd 3rd Last 3rd 2nd 1st
-3612 1st 2nd 3rd Last 3rd 2nd 1st
-3613 1st 2nd 3rd Last 3rd 2nd 1st
-3614 1st 2nd 3rd Last 3rd 2nd 1st
-3615 1st 2nd 3rd Last 3rd 2nd 1st
-3616 1st 2nd 3rd Last 3rd 2nd 1st
-3617 1st 2nd 3rd Last 3rd 2nd 1st
-3618 1st 2nd 3rd Last 3rd 2nd 1st
-3619 1st 2nd 3rd Last 3rd 2nd 1st
-3620 1st 2nd 3rd Last 3rd 2nd 1st
-3621 1st 2nd 3rd Last 3rd 2nd 1st
-3622 1st 2nd 3rd Last 3rd 2nd 1st
-3623 1st 2nd 3rd Last 3rd 2nd 1st
-3624 1st 2nd 3rd Last 3rd 2nd 1st
-3625 1st 2nd 3rd Last 3rd 2nd 1st
-3626 1st 2nd 3rd Last 3rd 2nd 1st
-3627 1st 2nd 3rd Last 3rd 2nd 1st
-3628 1st 2nd 3rd Last 3rd 2nd 1st
-3629 1st 2nd 3rd Last 3rd 2nd 1st
-3630 1st 2nd 3rd Last 3rd 2nd 1st
-3631 1st 2nd 3rd Last 3rd 2nd 1st
-3632 1st 2nd 3rd Last 3rd 2nd 1st
-3633 1st 2nd 3rd Last 3rd 2nd 1st
-3634 1st 2nd 3rd Last 3rd 2nd 1st
-3635 1st 2nd 3rd Last 3rd 2nd 1st
-3636 1st 2nd 3rd Last 3rd 2nd 1st
-3637 1st 2nd 3rd Last 3rd 2nd 1st
-3638 1st 2nd 3rd Last 3rd 2nd 1st
-3639 1st 2nd 3rd Last 3rd 2nd 1st
-3640 1st 2nd 3rd Last 3rd 2nd 1st
-3641 1st 2nd 3rd Last 3rd 2nd 1st
-3642 1st 2nd 3rd Last 3rd 2nd 1st
-3643 1st 2nd 3rd Last 3rd 2nd 1st
-3644 1st 2nd 3rd Last 3rd 2nd 1st
-3645 1st 2nd 3rd Last 3rd 2nd 1st
-3646 1st 2nd 3rd Last 3rd 2nd 1st
-3647 1st 2nd 3rd Last 3rd 2nd 1st
-3648 1st 2nd 3rd Last 3rd 2nd 1st
-3649 1st 2nd 3rd Last 3rd 2nd 1st
-3650 1st 2nd 3rd Last 3rd 2nd 1st
-3651 1st 2nd 3rd Last 3rd 2nd 1st
-3652 1st 2nd 3rd Last 3rd 2nd 1st
-3653 1st 2nd 3rd Last 3rd 2nd 1st
-3654 1st 2nd 3rd Last 3rd 2nd 1st
-3655 1st 2nd 3rd Last 3rd 2nd 1st
-3656 1st 2nd 3rd Last 3rd 2nd 1st
-3657 1st 2nd 3rd Last 3rd 2nd 1st
-3658 1st 2nd 3rd Last 3rd 2nd 1st
-3659 1st 2nd 3rd Last 3rd 2nd 1st
-3660 1st 2nd 3rd Last 3rd 2nd 1st
-3661 1st 2nd 3rd Last 3rd 2nd 1st
-3662 1st 2nd 3rd Last 3rd 2nd 1st
-3663 1st 2nd 3rd Last 3rd 2nd 1st
-3664 1st 2nd 3rd Last 3rd 2nd 1st
-3665 1st 2nd 3rd Last 3rd 2nd 1st
-3666 1st 2nd 3rd Last 3rd 2nd 1st
-3667 1st 2nd 3rd Last 3rd 2nd 1st
-3668 1st 2nd 3rd Last 3rd 2nd 1st
-3669 1st 2nd 3rd Last 3rd 2nd 1st
-3670 1st 2nd 3rd Last 3rd 2nd 1st
-3671 1st 2nd 3rd Last 3rd 2nd 1st
-3672 1st 2nd 3rd Last 3rd 2nd 1st
-3673 1st 2nd 3rd Last 3rd 2nd 1st
-3674 1st 2nd 3rd Last 3rd 2nd 1st
-3675 1st 2nd 3rd Last 3rd 2nd 1st
-3676 1st 2nd 3rd Last 3rd 2nd 1st
-3677 1st 2nd 3rd Last 3rd 2nd 1st
-3678 1st 2nd 3rd Last 3rd 2nd 1st
-3679 1st 2nd 3rd Last 3rd 2nd 1st
-3680 1st 2nd 3rd Last 3rd 2nd 1st
-3681 1st 2nd 3rd Last 3rd 2nd 1st
-3682 1st 2nd 3rd Last 3rd 2nd 1st
-3683 1st 2nd 3rd Last 3rd 2nd 1st
-3684 1st 2nd 3rd Last 3rd 2nd 1st
-3685 1st 2nd 3rd Last 3rd 2nd 1st
-3686 1st 2nd 3rd Last 3rd 2nd 1st
-3687 1st 2nd 3rd Last 3rd 2nd 1st
-3688 1st 2nd 3rd Last 3rd 2nd 1st
-3689 1st 2nd 3rd Last 3rd 2nd 1st
-3690 1st 2nd 3rd Last 3rd 2nd 1st
-3691 1st 2nd 3rd Last 3rd 2nd 1st
-3692 1st 2nd 3rd Last 3rd 2nd 1st
-3693 1st 2nd 3rd Last 3rd 2nd 1st
-3694 1st 2nd 3rd Last 3rd 2nd 1st
-3695 1st 2nd 3rd Last 3rd 2nd 1st
-3696 1st 2nd 3rd Last 3rd 2nd 1st
-3697 1st 2nd 3rd Last 3rd 2nd 1st
-3698 1st 2nd 3rd Last 3rd 2nd 1st
-3699 1st 2nd 3rd Last 3rd 2nd 1st
-3700 1st 2nd 3rd Last 3rd 2nd 1st
-3701 1st 2nd 3rd Last 3rd 2nd 1st
-3702 1st 2nd 3rd Last 3rd 2nd 1st
-3703 1st 2nd 3rd Last 3rd 2nd 1st
-3704 1st 2nd 3rd Last 3rd 2nd 1st
-3705 1st 2nd 3rd Last 3rd 2nd 1st
-3706 1st 2nd 3rd Last 3rd 2nd 1st
-3707 1st 2nd 3rd Last 3rd 2nd 1st
-3708 1st 2nd 3rd Last 3rd 2nd 1st
-3709 1st 2nd 3rd Last 3rd 2nd 1st
-3710 1st 2nd 3rd Last 3rd 2nd 1st
-3711 1st 2nd 3rd Last 3rd 2nd 1st
-3712 1st 2nd 3rd Last 3rd 2nd 1st
-3713 1st 2nd 3rd Last 3rd 2nd 1st
-3714 1st 2nd 3rd Last 3rd 2nd 1st
-3715 1st 2nd 3rd Last 3rd 2nd 1st
-3716 1st 2nd 3rd Last 3rd 2nd 1st
-3717 1st 2nd 3rd Last 3rd 2nd 1st
-3718 1st 2nd 3rd Last 3rd 2nd 1st
-3719 1st 2nd 3rd Last 3rd 2nd 1st
-3720 1st 2nd 3rd Last 3rd 2nd 1st
-3721 1st 2nd 3rd Last 3rd 2nd 1st
-3722 1st 2nd 3rd Last 3rd 2nd 1st
-3723 1st 2nd 3rd Last 3rd 2nd 1st
-3724 1st 2nd 3rd Last 3rd 2nd 1st
-3725 1st 2nd 3rd Last 3rd 2nd 1st
-3726 1st 2nd 3rd Last 3rd 2nd 1st
-3727 1st 2nd 3rd Last 3rd 2nd 1st
-3728 1st 2nd 3rd Last 3rd 2nd 1st
-3729 1st 2nd 3rd Last 3rd 2nd 1st
-3730 1st 2nd 3rd Last 3rd 2nd 1st
-3731 1st 2nd 3rd Last 3rd 2nd 1st
-3732 1st 2nd 3rd Last 3rd 2nd 1st
-3733 1st 2nd 3rd Last 3rd 2nd 1st
-3734 1st 2nd 3rd Last 3rd 2nd 1st
-3735 1st 2nd 3rd Last 3rd 2nd 1st
-3736 1st 2nd 3rd Last 3rd 2nd 1st
-3737 1st 2nd 3rd Last 3rd 2nd 1st
-3738 1st 2nd 3rd Last 3rd 2nd 1st
-3739 1st 2nd 3rd Last 3rd 2nd 1st
-3740 1st 2nd 3rd Last 3rd 2nd 1st
-3741 1st 2nd 3rd Last 3rd 2nd 1st
-3742 1st 2nd 3rd Last 3rd 2nd 1st
-3743 1st 2nd 3rd Last 3rd 2nd 1st
-3744 1st 2nd 3rd Last 3rd 2nd 1st
-3745 1st 2nd 3rd Last 3rd 2nd 1st
-3746 1st 2nd 3rd Last 3rd 2nd 1st
-3747 1st 2nd 3rd Last 3rd 2nd 1st
-3748 1st 2nd 3rd Last 3rd 2nd 1st
-3749 1st 2nd 3rd Last 3rd 2nd 1st
-3750 1st 2nd 3rd Last 3rd 2nd 1st
-3751 1st 2nd 3rd Last 3rd 2nd 1st
-3752 1st 2nd 3rd Last 3rd 2nd 1st
-3753 1st 2nd 3rd Last 3rd 2nd 1st
-3754 1st 2nd 3rd Last 3rd 2nd 1st
-3755 1st 2nd 3rd Last 3rd 2nd 1st
-3756 1st 2nd 3rd Last 3rd 2nd 1st
-3757 1st 2nd 3rd Last 3rd 2nd 1st
-3758 1st 2nd 3rd Last 3rd 2nd 1st
-3759 1st 2nd 3rd Last 3rd 2nd 1st
-3760 1st 2nd 3rd Last 3rd 2nd 1st
-3761 1st 2nd 3rd Last 3rd 2nd 1st
-3762 1st 2nd 3rd Last 3rd 2nd 1st
-3763 1st 2nd 3rd Last 3rd 2nd 1st
-3764 1st 2nd 3rd Last 3rd 2nd 1st
-3765 1st 2nd 3rd Last 3rd 2nd 1st
-3766 1st 2nd 3rd Last 3rd 2nd 1st
-3767 1st 2nd 3rd Last 3rd 2nd 1st
-3768 1st 2nd 3rd Last 3rd 2nd 1st
-3769 1st 2nd 3rd Last 3rd 2nd 1st
-3770 1st 2nd 3rd Last 3rd 2nd 1st
-3771 1st 2nd 3rd Last 3rd 2nd 1st
-3772 1st 2nd 3rd Last 3rd 2nd 1st
-3773 1st 2nd 3rd Last 3rd 2nd 1st
-3774 1st 2nd 3rd Last 3rd 2nd 1st
-3775 1st 2nd 3rd Last 3rd 2nd 1st
-3776 1st 2nd 3rd Last 3rd 2nd 1st
-3777 1st 2nd 3rd Last 3rd 2nd 1st
-3778 1st 2nd 3rd Last 3rd 2nd 1st
-3779 1st 2nd 3rd Last 3rd 2nd 1st
-3780 1st 2nd 3rd Last 3rd 2nd 1st
-3781 1st 2nd 3rd Last 3rd 2nd 1st
-3782 1st 2nd 3rd Last 3rd 2nd 1st
-3783 1st 2nd 3rd Last 3rd 2nd 1st
-3784 1st 2nd 3rd Last 3rd 2nd 1st
-3785 1st 2nd 3rd Last 3rd 2nd 1st
-3786 1st 2nd 3rd Last 3rd 2nd 1st
-3787 1st 2nd 3rd Last 3rd 2nd 1st
-3788 1st 2nd 3rd Last 3rd 2nd 1st
-3789 1st 2nd 3rd Last 3rd 2nd 1st
-3790 1st 2nd 3rd Last 3rd 2nd 1st
-3791 1st 2nd 3rd Last 3rd 2nd 1st
-3792 1st 2nd 3rd Last 3rd 2nd 1st
-3793 1st 2nd 3rd Last 3rd 2nd 1st
-3794 1st 2nd 3rd Last 3rd 2nd 1st
-3795 1st 2nd 3rd Last 3rd 2nd 1st
-3796 1st 2nd 3rd Last 3rd 2nd 1st
-3797 1st 2nd 3rd Last 3rd 2nd 1st
-3798 1st 2nd 3rd Last 3rd 2nd 1st
-3799 1st 2nd 3rd Last 3rd 2nd 1st
-3800 1st 2nd 3rd Last 3rd 2nd 1st
-3801 1st 2nd 3rd Last 3rd 2nd 1st
-3802 1st 2nd 3rd Last 3rd 2nd 1st
-3803 1st 2nd 3rd Last 3rd 2nd 1st
-3804 1st 2nd 3rd Last 3rd 2nd 1st
-3805 1st 2nd 3rd Last 3rd 2nd 1st
-3806 1st 2nd 3rd Last 3rd 2nd 1st
-3807 1st 2nd 3rd Last 3rd 2nd 1st
-3808 1st 2nd 3rd Last 3rd 2nd 1st
-3809 1st 2nd 3rd Last 3rd 2nd 1st
-3810 1st 2nd 3rd Last 3rd 2nd 1st
-3811 1st 2nd 3rd Last 3rd 2nd 1st
-3812 1st 2nd 3rd Last 3rd 2nd 1st
-3813 1st 2nd 3rd Last 3rd 2nd 1st
-3814 1st 2nd 3rd Last 3rd 2nd 1st
-3815 1st 2nd 3rd Last 3rd 2nd 1st
-3816 1st 2nd 3rd Last 3rd 2nd 1st
-3817 1st 2nd 3rd Last 3rd 2nd 1st
-3818 1st 2nd 3rd Last 3rd 2nd 1st
-3819 1st 2nd 3rd Last 3rd 2nd 1st
-3820 1st 2nd 3rd Last 3rd 2nd 1st
-3821 1st 2nd 3rd Last 3rd 2nd 1st
-3822 1st 2nd 3rd Last 3rd 2nd 1st
-3823 1st 2nd 3rd Last 3rd 2nd 1st
-3824 1st 2nd 3rd Last 3rd 2nd 1st
-3825 1st 2nd 3rd Last 3rd 2nd 1st
-3826 1st 2nd 3rd Last 3rd 2nd 1st
-3827 1st 2nd 3rd Last 3rd 2nd 1st
-3828 1st 2nd 3rd Last 3rd 2nd 1st
-3829 1st 2nd 3rd Last 3rd 2nd 1st
-3830 1st 2nd 3rd Last 3rd 2nd 1st
-3831 1st 2nd 3rd Last 3rd 2nd 1st
-3832 1st 2nd 3rd Last 3rd 2nd 1st
-3833 1st 2nd 3rd Last 3rd 2nd 1st
-3834 1st 2nd 3rd Last 3rd 2nd 1st
-3835 1st 2nd 3rd Last 3rd 2nd 1st
-3836 1st 2nd 3rd Last 3rd 2nd 1st
-3837 1st 2nd 3rd Last 3rd 2nd 1st
-3838 1st 2nd 3rd Last 3rd 2nd 1st
-3839 1st 2nd 3rd Last 3rd 2nd 1st
-3840 1st 2nd 3rd Last 3rd 2nd 1st
-3841 1st 2nd 3rd Last 3rd 2nd 1st
-3842 1st 2nd 3rd Last 3rd 2nd 1st
-3843 1st 2nd 3rd Last 3rd 2nd 1st
-3844 1st 2nd 3rd Last 3rd 2nd 1st
-3845 1st 2nd 3rd Last 3rd 2nd 1st
-3846 1st 2nd 3rd Last 3rd 2nd 1st
-3847 1st 2nd 3rd Last 3rd 2nd 1st
-3848 1st 2nd 3rd Last 3rd 2nd 1st
-3849 1st 2nd 3rd Last 3rd 2nd 1st
-3850 1st 2nd 3rd Last 3rd 2nd 1st
-3851 1st 2nd 3rd Last 3rd 2nd 1st
-3852 1st 2nd 3rd Last 3rd 2nd 1st
-3853 1st 2nd 3rd Last 3rd 2nd 1st
-3854 1st 2nd 3rd Last 3rd 2nd 1st
-3855 1st 2nd 3rd Last 3rd 2nd 1st
-3856 1st 2nd 3rd Last 3rd 2nd 1st
-3857 1st 2nd 3rd Last 3rd 2nd 1st
-3858 1st 2nd 3rd Last 3rd 2nd 1st
-3859 1st 2nd 3rd Last 3rd 2nd 1st
-3860 1st 2nd 3rd Last 3rd 2nd 1st
-3861 1st 2nd 3rd Last 3rd 2nd 1st
-3862 1st 2nd 3rd Last 3rd 2nd 1st
-3863 1st 2nd 3rd Last 3rd 2nd 1st
-3864 1st 2nd 3rd Last 3rd 2nd 1st
-3865 1st 2nd 3rd Last 3rd 2nd 1st
-3866 1st 2nd 3rd Last 3rd 2nd 1st
-3867 1st 2nd 3rd Last 3rd 2nd 1st
-3868 1st 2nd 3rd Last 3rd 2nd 1st
-3869 1st 2nd 3rd Last 3rd 2nd 1st
-3870 1st 2nd 3rd Last 3rd 2nd 1st
-3871 1st 2nd 3rd Last 3rd 2nd 1st
-3872 1st 2nd 3rd Last 3rd 2nd 1st
-3873 1st 2nd 3rd Last 3rd 2nd 1st
-3874 1st 2nd 3rd Last 3rd 2nd 1st
-3875 1st 2nd 3rd Last 3rd 2nd 1st
-3876 1st 2nd 3rd Last 3rd 2nd 1st
-3877 1st 2nd 3rd Last 3rd 2nd 1st
-3878 1st 2nd 3rd Last 3rd 2nd 1st
-3879 1st 2nd 3rd Last 3rd 2nd 1st
-3880 1st 2nd 3rd Last 3rd 2nd 1st
-3881 1st 2nd 3rd Last 3rd 2nd 1st
-3882 1st 2nd 3rd Last 3rd 2nd 1st
-3883 1st 2nd 3rd Last 3rd 2nd 1st
-3884 1st 2nd 3rd Last 3rd 2nd 1st
-3885 1st 2nd 3rd Last 3rd 2nd 1st
-3886 1st 2nd 3rd Last 3rd 2nd 1st
-3887 1st 2nd 3rd Last 3rd 2nd 1st
-3888 1st 2nd 3rd Last 3rd 2nd 1st
-3889 1st 2nd 3rd Last 3rd 2nd 1st
-3890 1st 2nd 3rd Last 3rd 2nd 1st
-3891 1st 2nd 3rd Last 3rd 2nd 1st
-3892 1st 2nd 3rd Last 3rd 2nd 1st
-3893 1st 2nd 3rd Last 3rd 2nd 1st
-3894 1st 2nd 3rd Last 3rd 2nd 1st
-3895 1st 2nd 3rd Last 3rd 2nd 1st
-3896 1st 2nd 3rd Last 3rd 2nd 1st
-3897 1st 2nd 3rd Last 3rd 2nd 1st
-3898 1st 2nd 3rd Last 3rd 2nd 1st
-3899 1st 2nd 3rd Last 3rd 2nd 1st
-3900 1st 2nd 3rd Last 3rd 2nd 1st
-3901 1st 2nd 3rd Last 3rd 2nd 1st
-3902 1st 2nd 3rd Last 3rd 2nd 1st
-3903 1st 2nd 3rd Last 3rd 2nd 1st
-3904 1st 2nd 3rd Last 3rd 2nd 1st
-3905 1st 2nd 3rd Last 3rd 2nd 1st
-3906 1st 2nd 3rd Last 3rd 2nd 1st
-3907 1st 2nd 3rd Last 3rd 2nd 1st
-3908 1st 2nd 3rd Last 3rd 2nd 1st
-3909 1st 2nd 3rd Last 3rd 2nd 1st
-3910 1st 2nd 3rd Last 3rd 2nd 1st
-3911 1st 2nd 3rd Last 3rd 2nd 1st
-3912 1st 2nd 3rd Last 3rd 2nd 1st
-3913 1st 2nd 3rd Last 3rd 2nd 1st
-3914 1st 2nd 3rd Last 3rd 2nd 1st
-3915 1st 2nd 3rd Last 3rd 2nd 1st
-3916 1st 2nd 3rd Last 3rd 2nd 1st
-3917 1st 2nd 3rd Last 3rd 2nd 1st
-3918 1st 2nd 3rd Last 3rd 2nd 1st
-3919 1st 2nd 3rd Last 3rd 2nd 1st
-3920 1st 2nd 3rd Last 3rd 2nd 1st
-3921 1st 2nd 3rd Last 3rd 2nd 1st
-3922 1st 2nd 3rd Last 3rd 2nd 1st
-3923 1st 2nd 3rd Last 3rd 2nd 1st
-3924 1st 2nd 3rd Last 3rd 2nd 1st
-3925 1st 2nd 3rd Last 3rd 2nd 1st
-3926 1st 2nd 3rd Last 3rd 2nd 1st
-3927 1st 2nd 3rd Last 3rd 2nd 1st
-3928 1st 2nd 3rd Last 3rd 2nd 1st
-3929 1st 2nd 3rd Last 3rd 2nd 1st
-3930 1st 2nd 3rd Last 3rd 2nd 1st
-3931 1st 2nd 3rd Last 3rd 2nd 1st
-3932 1st 2nd 3rd Last 3rd 2nd 1st
-3933 1st 2nd 3rd Last 3rd 2nd 1st
-3934 1st 2nd 3rd Last 3rd 2nd 1st
-3935 1st 2nd 3rd Last 3rd 2nd 1st
-3936 1st 2nd 3rd Last 3rd 2nd 1st
-3937 1st 2nd 3rd Last 3rd 2nd 1st
-3938 1st 2nd 3rd Last 3rd 2nd 1st
-3939 1st 2nd 3rd Last 3rd 2nd 1st
-3940 1st 2nd 3rd Last 3rd 2nd 1st
-3941 1st 2nd 3rd Last 3rd 2nd 1st
-3942 1st 2nd 3rd Last 3rd 2nd 1st
-3943 1st 2nd 3rd Last 3rd 2nd 1st
-3944 1st 2nd 3rd Last 3rd 2nd 1st
-3945 1st 2nd 3rd Last 3rd 2nd 1st
-3946 1st 2nd 3rd Last 3rd 2nd 1st
-3947 1st 2nd 3rd Last 3rd 2nd 1st
-3948 1st 2nd 3rd Last 3rd 2nd 1st
-3949 1st 2nd 3rd Last 3rd 2nd 1st
-3950 1st 2nd 3rd Last 3rd 2nd 1st
-3951 1st 2nd 3rd Last 3rd 2nd 1st
-3952 1st 2nd 3rd Last 3rd 2nd 1st
-3953 1st 2nd 3rd Last 3rd 2nd 1st
-3954 1st 2nd 3rd Last 3rd 2nd 1st
-3955 1st 2nd 3rd Last 3rd 2nd 1st
-3956 1st 2nd 3rd Last 3rd 2nd 1st
-3957 1st 2nd 3rd Last 3rd 2nd 1st
-3958 1st 2nd 3rd Last 3rd 2nd 1st
-3959 1st 2nd 3rd Last 3rd 2nd 1st
-3960 1st 2nd 3rd Last 3rd 2nd 1st
-3961 1st 2nd 3rd Last 3rd 2nd 1st
-3962 1st 2nd 3rd Last 3rd 2nd 1st
-3963 1st 2nd 3rd Last 3rd 2nd 1st
-3964 1st 2nd 3rd Last 3rd 2nd 1st
-3965 1st 2nd 3rd Last 3rd 2nd 1st
-3966 1st 2nd 3rd Last 3rd 2nd 1st
-3967 1st 2nd 3rd Last 3rd 2nd 1st
-3968 1st 2nd 3rd Last 3rd 2nd 1st
-3969 1st 2nd 3rd Last 3rd 2nd 1st
-3970 1st 2nd 3rd Last 3rd 2nd 1st
-3971 1st 2nd 3rd Last 3rd 2nd 1st
-3972 1st 2nd 3rd Last 3rd 2nd 1st
-3973 1st 2nd 3rd Last 3rd 2nd 1st
-3974 1st 2nd 3rd Last 3rd 2nd 1st
-3975 1st 2nd 3rd Last 3rd 2nd 1st
-3976 1st 2nd 3rd Last 3rd 2nd 1st
-3977 1st 2nd 3rd Last 3rd 2nd 1st
-3978 1st 2nd 3rd Last 3rd 2nd 1st
-3979 1st 2nd 3rd Last 3rd 2nd 1st
-3980 1st 2nd 3rd Last 3rd 2nd 1st
-3981 1st 2nd 3rd Last 3rd 2nd 1st
-3982 1st 2nd 3rd Last 3rd 2nd 1st
-3983 1st 2nd 3rd Last 3rd 2nd 1st
-3984 1st 2nd 3rd Last 3rd 2nd 1st
-3985 1st 2nd 3rd Last 3rd 2nd 1st
-3986 1st 2nd 3rd Last 3rd 2nd 1st
-3987 1st 2nd 3rd Last 3rd 2nd 1st
-3988 1st 2nd 3rd Last 3rd 2nd 1st
-3989 1st 2nd 3rd Last 3rd 2nd 1st
-3990 1st 2nd 3rd Last 3rd 2nd 1st
-3991 1st 2nd 3rd Last 3rd 2nd 1st
-3992 1st 2nd 3rd Last 3rd 2nd 1st
-3993 1st 2nd 3rd Last 3rd 2nd 1st
-3994 1st 2nd 3rd Last 3rd 2nd 1st
-3995 1st 2nd 3rd Last 3rd 2nd 1st
-3996 1st 2nd 3rd Last 3rd 2nd 1st
-3997 1st 2nd 3rd Last 3rd 2nd 1st
-3998 1st 2nd 3rd Last 3rd 2nd 1st
-3999 1st 2nd 3rd Last 3rd 2nd 1st
-4000 1st 2nd 3rd Last 3rd 2nd 1st
-4001 1st 2nd 3rd Last 3rd 2nd 1st
-4002 1st 2nd 3rd Last 3rd 2nd 1st
-4003 1st 2nd 3rd Last 3rd 2nd 1st
-4004 1st 2nd 3rd Last 3rd 2nd 1st
-4005 1st 2nd 3rd Last 3rd 2nd 1st
-4006 1st 2nd 3rd Last 3rd 2nd 1st
-4007 1st 2nd 3rd Last 3rd 2nd 1st
-4008 1st 2nd 3rd Last 3rd 2nd 1st
-4009 1st 2nd 3rd Last 3rd 2nd 1st
-4010 1st 2nd 3rd Last 3rd 2nd 1st
-4011 1st 2nd 3rd Last 3rd 2nd 1st
-4012 1st 2nd 3rd Last 3rd 2nd 1st
-4013 1st 2nd 3rd Last 3rd 2nd 1st
-4014 1st 2nd 3rd Last 3rd 2nd 1st
-4015 1st 2nd 3rd Last 3rd 2nd 1st
-4016 1st 2nd 3rd Last 3rd 2nd 1st
-4017 1st 2nd 3rd Last 3rd 2nd 1st
-4018 1st 2nd 3rd Last 3rd 2nd 1st
-4019 1st 2nd 3rd Last 3rd 2nd 1st
-4020 1st 2nd 3rd Last 3rd 2nd 1st
-4021 1st 2nd 3rd Last 3rd 2nd 1st
-4022 1st 2nd 3rd Last 3rd 2nd 1st
-4023 1st 2nd 3rd Last 3rd 2nd 1st
-4024 1st 2nd 3rd Last 3rd 2nd 1st
-4025 1st 2nd 3rd Last 3rd 2nd 1st
-4026 1st 2nd 3rd Last 3rd 2nd 1st
-4027 1st 2nd 3rd Last 3rd 2nd 1st
-4028 1st 2nd 3rd Last 3rd 2nd 1st
-4029 1st 2nd 3rd Last 3rd 2nd 1st
-4030 1st 2nd 3rd Last 3rd 2nd 1st
-4031 1st 2nd 3rd Last 3rd 2nd 1st
-4032 1st 2nd 3rd Last 3rd 2nd 1st
-4033 1st 2nd 3rd Last 3rd 2nd 1st
-4034 1st 2nd 3rd Last 3rd 2nd 1st
-4035 1st 2nd 3rd Last 3rd 2nd 1st
-4036 1st 2nd 3rd Last 3rd 2nd 1st
-4037 1st 2nd 3rd Last 3rd 2nd 1st
-4038 1st 2nd 3rd Last 3rd 2nd 1st
-4039 1st 2nd 3rd Last 3rd 2nd 1st
-4040 1st 2nd 3rd Last 3rd 2nd 1st
-4041 1st 2nd 3rd Last 3rd 2nd 1st
-4042 1st 2nd 3rd Last 3rd 2nd 1st
-4043 1st 2nd 3rd Last 3rd 2nd 1st
-4044 1st 2nd 3rd Last 3rd 2nd 1st
-4045 1st 2nd 3rd Last 3rd 2nd 1st
-4046 1st 2nd 3rd Last 3rd 2nd 1st
-4047 1st 2nd 3rd Last 3rd 2nd 1st
-4048 1st 2nd 3rd Last 3rd 2nd 1st
-4049 1st 2nd 3rd Last 3rd 2nd 1st
-4050 1st 2nd 3rd Last 3rd 2nd 1st
-4051 1st 2nd 3rd Last 3rd 2nd 1st
-4052 1st 2nd 3rd Last 3rd 2nd 1st
-4053 1st 2nd 3rd Last 3rd 2nd 1st
-4054 1st 2nd 3rd Last 3rd 2nd 1st
-4055 1st 2nd 3rd Last 3rd 2nd 1st
-4056 1st 2nd 3rd Last 3rd 2nd 1st
-4057 1st 2nd 3rd Last 3rd 2nd 1st
-4058 1st 2nd 3rd Last 3rd 2nd 1st
-4059 1st 2nd 3rd Last 3rd 2nd 1st
-4060 1st 2nd 3rd Last 3rd 2nd 1st
-4061 1st 2nd 3rd Last 3rd 2nd 1st
-4062 1st 2nd 3rd Last 3rd 2nd 1st
-4063 1st 2nd 3rd Last 3rd 2nd 1st
-4064 1st 2nd 3rd Last 3rd 2nd 1st
-4065 1st 2nd 3rd Last 3rd 2nd 1st
-4066 1st 2nd 3rd Last 3rd 2nd 1st
-4067 1st 2nd 3rd Last 3rd 2nd 1st
-4068 1st 2nd 3rd Last 3rd 2nd 1st
-4069 1st 2nd 3rd Last 3rd 2nd 1st
-4070 1st 2nd 3rd Last 3rd 2nd 1st
-4071 1st 2nd 3rd Last 3rd 2nd 1st
-4072 1st 2nd 3rd Last 3rd 2nd 1st
-4073 1st 2nd 3rd Last 3rd 2nd 1st
-4074 1st 2nd 3rd Last 3rd 2nd 1st
-4075 1st 2nd 3rd Last 3rd 2nd 1st
-4076 1st 2nd 3rd Last 3rd 2nd 1st
-4077 1st 2nd 3rd Last 3rd 2nd 1st
-4078 1st 2nd 3rd Last 3rd 2nd 1st
-4079 1st 2nd 3rd Last 3rd 2nd 1st
-4080 1st 2nd 3rd Last 3rd 2nd 1st
-4081 1st 2nd 3rd Last 3rd 2nd 1st
-4082 1st 2nd 3rd Last 3rd 2nd 1st
-4083 1st 2nd 3rd Last 3rd 2nd 1st
-4084 1st 2nd 3rd Last 3rd 2nd 1st
-4085 1st 2nd 3rd Last 3rd 2nd 1st
-4086 1st 2nd 3rd Last 3rd 2nd 1st
-4087 1st 2nd 3rd Last 3rd 2nd 1st
-4088 1st 2nd 3rd Last 3rd 2nd 1st
-4089 1st 2nd 3rd Last 3rd 2nd 1st
-4090 1st 2nd 3rd Last 3rd 2nd 1st
-4091 1st 2nd 3rd Last 3rd 2nd 1st
-4092 1st 2nd 3rd Last 3rd 2nd 1st
-4093 1st 2nd 3rd Last 3rd 2nd 1st
-4094 1st 2nd 3rd Last 3rd 2nd 1st
-4095 1st 2nd 3rd Last 3rd 2nd 1st
-4096 1st 2nd 3rd Last 3rd 2nd 1st
-4097 1st 2nd 3rd Last 3rd 2nd 1st
-4098 1st 2nd 3rd Last 3rd 2nd 1st
-4099 1st 2nd 3rd Last 3rd 2nd 1st
-4100 1st 2nd 3rd Last 3rd 2nd 1st
-4101 1st 2nd 3rd Last 3rd 2nd 1st
-4102 1st 2nd 3rd Last 3rd 2nd 1st
-4103 1st 2nd 3rd Last 3rd 2nd 1st
-4104 1st 2nd 3rd Last 3rd 2nd 1st
-4105 1st 2nd 3rd Last 3rd 2nd 1st
-4106 1st 2nd 3rd Last 3rd 2nd 1st
-4107 1st 2nd 3rd Last 3rd 2nd 1st
-4108 1st 2nd 3rd Last 3rd 2nd 1st
-4109 1st 2nd 3rd Last 3rd 2nd 1st
-4110 1st 2nd 3rd Last 3rd 2nd 1st
-4111 1st 2nd 3rd Last 3rd 2nd 1st
-4112 1st 2nd 3rd Last 3rd 2nd 1st
-4113 1st 2nd 3rd Last 3rd 2nd 1st
-4114 1st 2nd 3rd Last 3rd 2nd 1st
-4115 1st 2nd 3rd Last 3rd 2nd 1st
-4116 1st 2nd 3rd Last 3rd 2nd 1st
-4117 1st 2nd 3rd Last 3rd 2nd 1st
-4118 1st 2nd 3rd Last 3rd 2nd 1st
-4119 1st 2nd 3rd Last 3rd 2nd 1st
-4120 1st 2nd 3rd Last 3rd 2nd 1st
-4121 1st 2nd 3rd Last 3rd 2nd 1st
-4122 1st 2nd 3rd Last 3rd 2nd 1st
-4123 1st 2nd 3rd Last 3rd 2nd 1st
-4124 1st 2nd 3rd Last 3rd 2nd 1st
-4125 1st 2nd 3rd Last 3rd 2nd 1st
-4126 1st 2nd 3rd Last 3rd 2nd 1st
-4127 1st 2nd 3rd Last 3rd 2nd 1st
-4128 1st 2nd 3rd Last 3rd 2nd 1st
-4129 1st 2nd 3rd Last 3rd 2nd 1st
-4130 1st 2nd 3rd Last 3rd 2nd 1st
-4131 1st 2nd 3rd Last 3rd 2nd 1st
-4132 1st 2nd 3rd Last 3rd 2nd 1st
-4133 1st 2nd 3rd Last 3rd 2nd 1st
-4134 1st 2nd 3rd Last 3rd 2nd 1st
-4135 1st 2nd 3rd Last 3rd 2nd 1st
-4136 1st 2nd 3rd Last 3rd 2nd 1st
-4137 1st 2nd 3rd Last 3rd 2nd 1st
-4138 1st 2nd 3rd Last 3rd 2nd 1st
-4139 1st 2nd 3rd Last 3rd 2nd 1st
-4140 1st 2nd 3rd Last 3rd 2nd 1st
-4141 1st 2nd 3rd Last 3rd 2nd 1st
-4142 1st 2nd 3rd Last 3rd 2nd 1st
-4143 1st 2nd 3rd Last 3rd 2nd 1st
-4144 1st 2nd 3rd Last 3rd 2nd 1st
-4145 1st 2nd 3rd Last 3rd 2nd 1st
-4146 1st 2nd 3rd Last 3rd 2nd 1st
-4147 1st 2nd 3rd Last 3rd 2nd 1st
-4148 1st 2nd 3rd Last 3rd 2nd 1st
-4149 1st 2nd 3rd Last 3rd 2nd 1st
-4150 1st 2nd 3rd Last 3rd 2nd 1st
-4151 1st 2nd 3rd Last 3rd 2nd 1st
-4152 1st 2nd 3rd Last 3rd 2nd 1st
-4153 1st 2nd 3rd Last 3rd 2nd 1st
-4154 1st 2nd 3rd Last 3rd 2nd 1st
-4155 1st 2nd 3rd Last 3rd 2nd 1st
-4156 1st 2nd 3rd Last 3rd 2nd 1st
-4157 1st 2nd 3rd Last 3rd 2nd 1st
-4158 1st 2nd 3rd Last 3rd 2nd 1st
-4159 1st 2nd 3rd Last 3rd 2nd 1st
-4160 1st 2nd 3rd Last 3rd 2nd 1st
-4161 1st 2nd 3rd Last 3rd 2nd 1st
-4162 1st 2nd 3rd Last 3rd 2nd 1st
-4163 1st 2nd 3rd Last 3rd 2nd 1st
-4164 1st 2nd 3rd Last 3rd 2nd 1st
-4165 1st 2nd 3rd Last 3rd 2nd 1st
-4166 1st 2nd 3rd Last 3rd 2nd 1st
-4167 1st 2nd 3rd Last 3rd 2nd 1st
-4168 1st 2nd 3rd Last 3rd 2nd 1st
-4169 1st 2nd 3rd Last 3rd 2nd 1st
-4170 1st 2nd 3rd Last 3rd 2nd 1st
-4171 1st 2nd 3rd Last 3rd 2nd 1st
-4172 1st 2nd 3rd Last 3rd 2nd 1st
-4173 1st 2nd 3rd Last 3rd 2nd 1st
-4174 1st 2nd 3rd Last 3rd 2nd 1st
-4175 1st 2nd 3rd Last 3rd 2nd 1st
-4176 1st 2nd 3rd Last 3rd 2nd 1st
-4177 1st 2nd 3rd Last 3rd 2nd 1st
-4178 1st 2nd 3rd Last 3rd 2nd 1st
-4179 1st 2nd 3rd Last 3rd 2nd 1st
-4180 1st 2nd 3rd Last 3rd 2nd 1st
-4181 1st 2nd 3rd Last 3rd 2nd 1st
-4182 1st 2nd 3rd Last 3rd 2nd 1st
-4183 1st 2nd 3rd Last 3rd 2nd 1st
-4184 1st 2nd 3rd Last 3rd 2nd 1st
-4185 1st 2nd 3rd Last 3rd 2nd 1st
-4186 1st 2nd 3rd Last 3rd 2nd 1st
-4187 1st 2nd 3rd Last 3rd 2nd 1st
-4188 1st 2nd 3rd Last 3rd 2nd 1st
-4189 1st 2nd 3rd Last 3rd 2nd 1st
-4190 1st 2nd 3rd Last 3rd 2nd 1st
-4191 1st 2nd 3rd Last 3rd 2nd 1st
-4192 1st 2nd 3rd Last 3rd 2nd 1st
-4193 1st 2nd 3rd Last 3rd 2nd 1st
-4194 1st 2nd 3rd Last 3rd 2nd 1st
-4195 1st 2nd 3rd Last 3rd 2nd 1st
-4196 1st 2nd 3rd Last 3rd 2nd 1st
-4197 1st 2nd 3rd Last 3rd 2nd 1st
-4198 1st 2nd 3rd Last 3rd 2nd 1st
-4199 1st 2nd 3rd Last 3rd 2nd 1st
-4200 1st 2nd 3rd Last 3rd 2nd 1st
-4201 1st 2nd 3rd Last 3rd 2nd 1st
-4202 1st 2nd 3rd Last 3rd 2nd 1st
-4203 1st 2nd 3rd Last 3rd 2nd 1st
-4204 1st 2nd 3rd Last 3rd 2nd 1st
-4205 1st 2nd 3rd Last 3rd 2nd 1st
-4206 1st 2nd 3rd Last 3rd 2nd 1st
-4207 1st 2nd 3rd Last 3rd 2nd 1st
-4208 1st 2nd 3rd Last 3rd 2nd 1st
-4209 1st 2nd 3rd Last 3rd 2nd 1st
-4210 1st 2nd 3rd Last 3rd 2nd 1st
-4211 1st 2nd 3rd Last 3rd 2nd 1st
-4212 1st 2nd 3rd Last 3rd 2nd 1st
-4213 1st 2nd 3rd Last 3rd 2nd 1st
-4214 1st 2nd 3rd Last 3rd 2nd 1st
-4215 1st 2nd 3rd Last 3rd 2nd 1st
-4216 1st 2nd 3rd Last 3rd 2nd 1st
-4217 1st 2nd 3rd Last 3rd 2nd 1st
-4218 1st 2nd 3rd Last 3rd 2nd 1st
-4219 1st 2nd 3rd Last 3rd 2nd 1st
-4220 1st 2nd 3rd Last 3rd 2nd 1st
-4221 1st 2nd 3rd Last 3rd 2nd 1st
-4222 1st 2nd 3rd Last 3rd 2nd 1st
-4223 1st 2nd 3rd Last 3rd 2nd 1st
-4224 1st 2nd 3rd Last 3rd 2nd 1st
-4225 1st 2nd 3rd Last 3rd 2nd 1st
-4226 1st 2nd 3rd Last 3rd 2nd 1st
-4227 1st 2nd 3rd Last 3rd 2nd 1st
-4228 1st 2nd 3rd Last 3rd 2nd 1st
-4229 1st 2nd 3rd Last 3rd 2nd 1st
-4230 1st 2nd 3rd Last 3rd 2nd 1st
-4231 1st 2nd 3rd Last 3rd 2nd 1st
-4232 1st 2nd 3rd Last 3rd 2nd 1st
-4233 1st 2nd 3rd Last 3rd 2nd 1st
-4234 1st 2nd 3rd Last 3rd 2nd 1st
-4235 1st 2nd 3rd Last 3rd 2nd 1st
-4236 1st 2nd 3rd Last 3rd 2nd 1st
-4237 1st 2nd 3rd Last 3rd 2nd 1st
-4238 1st 2nd 3rd Last 3rd 2nd 1st
-4239 1st 2nd 3rd Last 3rd 2nd 1st
-4240 1st 2nd 3rd Last 3rd 2nd 1st
-4241 1st 2nd 3rd Last 3rd 2nd 1st
-4242 1st 2nd 3rd Last 3rd 2nd 1st
-4243 1st 2nd 3rd Last 3rd 2nd 1st
-4244 1st 2nd 3rd Last 3rd 2nd 1st
-4245 1st 2nd 3rd Last 3rd 2nd 1st
-4246 1st 2nd 3rd Last 3rd 2nd 1st
-4247 1st 2nd 3rd Last 3rd 2nd 1st
-4248 1st 2nd 3rd Last 3rd 2nd 1st
-4249 1st 2nd 3rd Last 3rd 2nd 1st
-4250 1st 2nd 3rd Last 3rd 2nd 1st
-4251 1st 2nd 3rd Last 3rd 2nd 1st
-4252 1st 2nd 3rd Last 3rd 2nd 1st
-4253 1st 2nd 3rd Last 3rd 2nd 1st
-4254 1st 2nd 3rd Last 3rd 2nd 1st
-4255 1st 2nd 3rd Last 3rd 2nd 1st
-4256 1st 2nd 3rd Last 3rd 2nd 1st
-4257 1st 2nd 3rd Last 3rd 2nd 1st
-4258 1st 2nd 3rd Last 3rd 2nd 1st
-4259 1st 2nd 3rd Last 3rd 2nd 1st
-4260 1st 2nd 3rd Last 3rd 2nd 1st
-4261 1st 2nd 3rd Last 3rd 2nd 1st
-4262 1st 2nd 3rd Last 3rd 2nd 1st
-4263 1st 2nd 3rd Last 3rd 2nd 1st
-4264 1st 2nd 3rd Last 3rd 2nd 1st
-4265 1st 2nd 3rd Last 3rd 2nd 1st
-4266 1st 2nd 3rd Last 3rd 2nd 1st
-4267 1st 2nd 3rd Last 3rd 2nd 1st
-4268 1st 2nd 3rd Last 3rd 2nd 1st
-4269 1st 2nd 3rd Last 3rd 2nd 1st
-4270 1st 2nd 3rd Last 3rd 2nd 1st
-4271 1st 2nd 3rd Last 3rd 2nd 1st
-4272 1st 2nd 3rd Last 3rd 2nd 1st
-4273 1st 2nd 3rd Last 3rd 2nd 1st
-4274 1st 2nd 3rd Last 3rd 2nd 1st
-4275 1st 2nd 3rd Last 3rd 2nd 1st
-4276 1st 2nd 3rd Last 3rd 2nd 1st
-4277 1st 2nd 3rd Last 3rd 2nd 1st
-4278 1st 2nd 3rd Last 3rd 2nd 1st
-4279 1st 2nd 3rd Last 3rd 2nd 1st
-4280 1st 2nd 3rd Last 3rd 2nd 1st
-4281 1st 2nd 3rd Last 3rd 2nd 1st
-4282 1st 2nd 3rd Last 3rd 2nd 1st
-4283 1st 2nd 3rd Last 3rd 2nd 1st
-4284 1st 2nd 3rd Last 3rd 2nd 1st
-4285 1st 2nd 3rd Last 3rd 2nd 1st
-4286 1st 2nd 3rd Last 3rd 2nd 1st
-4287 1st 2nd 3rd Last 3rd 2nd 1st
-4288 1st 2nd 3rd Last 3rd 2nd 1st
-4289 1st 2nd 3rd Last 3rd 2nd 1st
-4290 1st 2nd 3rd Last 3rd 2nd 1st
-4291 1st 2nd 3rd Last 3rd 2nd 1st
-4292 1st 2nd 3rd Last 3rd 2nd 1st
-4293 1st 2nd 3rd Last 3rd 2nd 1st
-4294 1st 2nd 3rd Last 3rd 2nd 1st
-4295 1st 2nd 3rd Last 3rd 2nd 1st
-4296 1st 2nd 3rd Last 3rd 2nd 1st
-4297 1st 2nd 3rd Last 3rd 2nd 1st
-4298 1st 2nd 3rd Last 3rd 2nd 1st
-4299 1st 2nd 3rd Last 3rd 2nd 1st
-4300 1st 2nd 3rd Last 3rd 2nd 1st
-4301 1st 2nd 3rd Last 3rd 2nd 1st
-4302 1st 2nd 3rd Last 3rd 2nd 1st
-4303 1st 2nd 3rd Last 3rd 2nd 1st
-4304 1st 2nd 3rd Last 3rd 2nd 1st
-4305 1st 2nd 3rd Last 3rd 2nd 1st
-4306 1st 2nd 3rd Last 3rd 2nd 1st
-4307 1st 2nd 3rd Last 3rd 2nd 1st
-4308 1st 2nd 3rd Last 3rd 2nd 1st
-4309 1st 2nd 3rd Last 3rd 2nd 1st
-4310 1st 2nd 3rd Last 3rd 2nd 1st
-4311 1st 2nd 3rd Last 3rd 2nd 1st
-4312 1st 2nd 3rd Last 3rd 2nd 1st
-4313 1st 2nd 3rd Last 3rd 2nd 1st
-4314 1st 2nd 3rd Last 3rd 2nd 1st
-4315 1st 2nd 3rd Last 3rd 2nd 1st
-4316 1st 2nd 3rd Last 3rd 2nd 1st
-4317 1st 2nd 3rd Last 3rd 2nd 1st
-4318 1st 2nd 3rd Last 3rd 2nd 1st
-4319 1st 2nd 3rd Last 3rd 2nd 1st
-4320 1st 2nd 3rd Last 3rd 2nd 1st
-4321 1st 2nd 3rd Last 3rd 2nd 1st
-4322 1st 2nd 3rd Last 3rd 2nd 1st
-4323 1st 2nd 3rd Last 3rd 2nd 1st
-4324 1st 2nd 3rd Last 3rd 2nd 1st
-4325 1st 2nd 3rd Last 3rd 2nd 1st
-4326 1st 2nd 3rd Last 3rd 2nd 1st
-4327 1st 2nd 3rd Last 3rd 2nd 1st
-4328 1st 2nd 3rd Last 3rd 2nd 1st
-4329 1st 2nd 3rd Last 3rd 2nd 1st
-4330 1st 2nd 3rd Last 3rd 2nd 1st
-4331 1st 2nd 3rd Last 3rd 2nd 1st
-4332 1st 2nd 3rd Last 3rd 2nd 1st
-4333 1st 2nd 3rd Last 3rd 2nd 1st
-4334 1st 2nd 3rd Last 3rd 2nd 1st
-4335 1st 2nd 3rd Last 3rd 2nd 1st
-4336 1st 2nd 3rd Last 3rd 2nd 1st
-4337 1st 2nd 3rd Last 3rd 2nd 1st
-4338 1st 2nd 3rd Last 3rd 2nd 1st
-4339 1st 2nd 3rd Last 3rd 2nd 1st
-4340 1st 2nd 3rd Last 3rd 2nd 1st
-4341 1st 2nd 3rd Last 3rd 2nd 1st
-4342 1st 2nd 3rd Last 3rd 2nd 1st
-4343 1st 2nd 3rd Last 3rd 2nd 1st
-4344 1st 2nd 3rd Last 3rd 2nd 1st
-4345 1st 2nd 3rd Last 3rd 2nd 1st
-4346 1st 2nd 3rd Last 3rd 2nd 1st
-4347 1st 2nd 3rd Last 3rd 2nd 1st
-4348 1st 2nd 3rd Last 3rd 2nd 1st
-4349 1st 2nd 3rd Last 3rd 2nd 1st
-4350 1st 2nd 3rd Last 3rd 2nd 1st
-4351 1st 2nd 3rd Last 3rd 2nd 1st
-4352 1st 2nd 3rd Last 3rd 2nd 1st
-4353 1st 2nd 3rd Last 3rd 2nd 1st
-4354 1st 2nd 3rd Last 3rd 2nd 1st
-4355 1st 2nd 3rd Last 3rd 2nd 1st
-4356 1st 2nd 3rd Last 3rd 2nd 1st
-4357 1st 2nd 3rd Last 3rd 2nd 1st
-4358 1st 2nd 3rd Last 3rd 2nd 1st
-4359 1st 2nd 3rd Last 3rd 2nd 1st
-4360 1st 2nd 3rd Last 3rd 2nd 1st
-4361 1st 2nd 3rd Last 3rd 2nd 1st
-4362 1st 2nd 3rd Last 3rd 2nd 1st
-4363 1st 2nd 3rd Last 3rd 2nd 1st
-4364 1st 2nd 3rd Last 3rd 2nd 1st
-4365 1st 2nd 3rd Last 3rd 2nd 1st
-4366 1st 2nd 3rd Last 3rd 2nd 1st
-4367 1st 2nd 3rd Last 3rd 2nd 1st
-4368 1st 2nd 3rd Last 3rd 2nd 1st
-4369 1st 2nd 3rd Last 3rd 2nd 1st
-4370 1st 2nd 3rd Last 3rd 2nd 1st
-4371 1st 2nd 3rd Last 3rd 2nd 1st
-4372 1st 2nd 3rd Last 3rd 2nd 1st
-4373 1st 2nd 3rd Last 3rd 2nd 1st
-4374 1st 2nd 3rd Last 3rd 2nd 1st
-4375 1st 2nd 3rd Last 3rd 2nd 1st
-4376 1st 2nd 3rd Last 3rd 2nd 1st
-4377 1st 2nd 3rd Last 3rd 2nd 1st
-4378 1st 2nd 3rd Last 3rd 2nd 1st
-4379 1st 2nd 3rd Last 3rd 2nd 1st
-4380 1st 2nd 3rd Last 3rd 2nd 1st
-4381 1st 2nd 3rd Last 3rd 2nd 1st
-4382 1st 2nd 3rd Last 3rd 2nd 1st
-4383 1st 2nd 3rd Last 3rd 2nd 1st
-4384 1st 2nd 3rd Last 3rd 2nd 1st
-4385 1st 2nd 3rd Last 3rd 2nd 1st
-4386 1st 2nd 3rd Last 3rd 2nd 1st
-4387 1st 2nd 3rd Last 3rd 2nd 1st
-4388 1st 2nd 3rd Last 3rd 2nd 1st
-4389 1st 2nd 3rd Last 3rd 2nd 1st
-4390 1st 2nd 3rd Last 3rd 2nd 1st
-4391 1st 2nd 3rd Last 3rd 2nd 1st
-4392 1st 2nd 3rd Last 3rd 2nd 1st
-4393 1st 2nd 3rd Last 3rd 2nd 1st
-4394 1st 2nd 3rd Last 3rd 2nd 1st
-4395 1st 2nd 3rd Last 3rd 2nd 1st
-4396 1st 2nd 3rd Last 3rd 2nd 1st
-4397 1st 2nd 3rd Last 3rd 2nd 1st
-4398 1st 2nd 3rd Last 3rd 2nd 1st
-4399 1st 2nd 3rd Last 3rd 2nd 1st
-4400 1st 2nd 3rd Last 3rd 2nd 1st
-4401 1st 2nd 3rd Last 3rd 2nd 1st
-4402 1st 2nd 3rd Last 3rd 2nd 1st
-4403 1st 2nd 3rd Last 3rd 2nd 1st
-4404 1st 2nd 3rd Last 3rd 2nd 1st
-4405 1st 2nd 3rd Last 3rd 2nd 1st
-4406 1st 2nd 3rd Last 3rd 2nd 1st
-4407 1st 2nd 3rd Last 3rd 2nd 1st
-4408 1st 2nd 3rd Last 3rd 2nd 1st
-4409 1st 2nd 3rd Last 3rd 2nd 1st
-4410 1st 2nd 3rd Last 3rd 2nd 1st
-4411 1st 2nd 3rd Last 3rd 2nd 1st
-4412 1st 2nd 3rd Last 3rd 2nd 1st
-4413 1st 2nd 3rd Last 3rd 2nd 1st
-4414 1st 2nd 3rd Last 3rd 2nd 1st
-4415 1st 2nd 3rd Last 3rd 2nd 1st
-4416 1st 2nd 3rd Last 3rd 2nd 1st
-4417 1st 2nd 3rd Last 3rd 2nd 1st
-4418 1st 2nd 3rd Last 3rd 2nd 1st
-4419 1st 2nd 3rd Last 3rd 2nd 1st
-4420 1st 2nd 3rd Last 3rd 2nd 1st
-4421 1st 2nd 3rd Last 3rd 2nd 1st
-4422 1st 2nd 3rd Last 3rd 2nd 1st
-4423 1st 2nd 3rd Last 3rd 2nd 1st
-4424 1st 2nd 3rd Last 3rd 2nd 1st
-4425 1st 2nd 3rd Last 3rd 2nd 1st
-4426 1st 2nd 3rd Last 3rd 2nd 1st
-4427 1st 2nd 3rd Last 3rd 2nd 1st
-4428 1st 2nd 3rd Last 3rd 2nd 1st
-4429 1st 2nd 3rd Last 3rd 2nd 1st
-4430 1st 2nd 3rd Last 3rd 2nd 1st
-4431 1st 2nd 3rd Last 3rd 2nd 1st
-4432 1st 2nd 3rd Last 3rd 2nd 1st
-4433 1st 2nd 3rd Last 3rd 2nd 1st
-4434 1st 2nd 3rd Last 3rd 2nd 1st
-4435 1st 2nd 3rd Last 3rd 2nd 1st
-4436 1st 2nd 3rd Last 3rd 2nd 1st
-4437 1st 2nd 3rd Last 3rd 2nd 1st
-4438 1st 2nd 3rd Last 3rd 2nd 1st
-4439 1st 2nd 3rd Last 3rd 2nd 1st
-4440 1st 2nd 3rd Last 3rd 2nd 1st
-4441 1st 2nd 3rd Last 3rd 2nd 1st
-4442 1st 2nd 3rd Last 3rd 2nd 1st
-4443 1st 2nd 3rd Last 3rd 2nd 1st
-4444 1st 2nd 3rd Last 3rd 2nd 1st
-4445 1st 2nd 3rd Last 3rd 2nd 1st
-4446 1st 2nd 3rd Last 3rd 2nd 1st
-4447 1st 2nd 3rd Last 3rd 2nd 1st
-4448 1st 2nd 3rd Last 3rd 2nd 1st
-4449 1st 2nd 3rd Last 3rd 2nd 1st
-4450 1st 2nd 3rd Last 3rd 2nd 1st
-4451 1st 2nd 3rd Last 3rd 2nd 1st
-4452 1st 2nd 3rd Last 3rd 2nd 1st
-4453 1st 2nd 3rd Last 3rd 2nd 1st
-4454 1st 2nd 3rd Last 3rd 2nd 1st
-4455 1st 2nd 3rd Last 3rd 2nd 1st
-4456 1st 2nd 3rd Last 3rd 2nd 1st
-4457 1st 2nd 3rd Last 3rd 2nd 1st
-4458 1st 2nd 3rd Last 3rd 2nd 1st
-4459 1st 2nd 3rd Last 3rd 2nd 1st
-4460 1st 2nd 3rd Last 3rd 2nd 1st
-4461 1st 2nd 3rd Last 3rd 2nd 1st
-4462 1st 2nd 3rd Last 3rd 2nd 1st
-4463 1st 2nd 3rd Last 3rd 2nd 1st
-4464 1st 2nd 3rd Last 3rd 2nd 1st
-4465 1st 2nd 3rd Last 3rd 2nd 1st
-4466 1st 2nd 3rd Last 3rd 2nd 1st
-4467 1st 2nd 3rd Last 3rd 2nd 1st
-4468 1st 2nd 3rd Last 3rd 2nd 1st
-4469 1st 2nd 3rd Last 3rd 2nd 1st
-4470 1st 2nd 3rd Last 3rd 2nd 1st
-4471 1st 2nd 3rd Last 3rd 2nd 1st
-4472 1st 2nd 3rd Last 3rd 2nd 1st
-4473 1st 2nd 3rd Last 3rd 2nd 1st
-4474 1st 2nd 3rd Last 3rd 2nd 1st
-4475 1st 2nd 3rd Last 3rd 2nd 1st
-4476 1st 2nd 3rd Last 3rd 2nd 1st
-4477 1st 2nd 3rd Last 3rd 2nd 1st
-4478 1st 2nd 3rd Last 3rd 2nd 1st
-4479 1st 2nd 3rd Last 3rd 2nd 1st
-4480 1st 2nd 3rd Last 3rd 2nd 1st
-4481 1st 2nd 3rd Last 3rd 2nd 1st
-4482 1st 2nd 3rd Last 3rd 2nd 1st
-4483 1st 2nd 3rd Last 3rd 2nd 1st
-4484 1st 2nd 3rd Last 3rd 2nd 1st
-4485 1st 2nd 3rd Last 3rd 2nd 1st
-4486 1st 2nd 3rd Last 3rd 2nd 1st
-4487 1st 2nd 3rd Last 3rd 2nd 1st
-4488 1st 2nd 3rd Last 3rd 2nd 1st
-4489 1st 2nd 3rd Last 3rd 2nd 1st
-4490 1st 2nd 3rd Last 3rd 2nd 1st
-4491 1st 2nd 3rd Last 3rd 2nd 1st
-4492 1st 2nd 3rd Last 3rd 2nd 1st
-4493 1st 2nd 3rd Last 3rd 2nd 1st
-4494 1st 2nd 3rd Last 3rd 2nd 1st
-4495 1st 2nd 3rd Last 3rd 2nd 1st
-4496 1st 2nd 3rd Last 3rd 2nd 1st
-4497 1st 2nd 3rd Last 3rd 2nd 1st
-4498 1st 2nd 3rd Last 3rd 2nd 1st
-4499 1st 2nd 3rd Last 3rd 2nd 1st
-4500 1st 2nd 3rd Last 3rd 2nd 1st
-4501 1st 2nd 3rd Last 3rd 2nd 1st
-4502 1st 2nd 3rd Last 3rd 2nd 1st
-4503 1st 2nd 3rd Last 3rd 2nd 1st
-4504 1st 2nd 3rd Last 3rd 2nd 1st
-4505 1st 2nd 3rd Last 3rd 2nd 1st
-4506 1st 2nd 3rd Last 3rd 2nd 1st
-4507 1st 2nd 3rd Last 3rd 2nd 1st
-4508 1st 2nd 3rd Last 3rd 2nd 1st
-4509 1st 2nd 3rd Last 3rd 2nd 1st
-4510 1st 2nd 3rd Last 3rd 2nd 1st
-4511 1st 2nd 3rd Last 3rd 2nd 1st
-4512 1st 2nd 3rd Last 3rd 2nd 1st
-4513 1st 2nd 3rd Last 3rd 2nd 1st
-4514 1st 2nd 3rd Last 3rd 2nd 1st
-4515 1st 2nd 3rd Last 3rd 2nd 1st
-4516 1st 2nd 3rd Last 3rd 2nd 1st
-4517 1st 2nd 3rd Last 3rd 2nd 1st
-4518 1st 2nd 3rd Last 3rd 2nd 1st
-4519 1st 2nd 3rd Last 3rd 2nd 1st
-4520 1st 2nd 3rd Last 3rd 2nd 1st
-4521 1st 2nd 3rd Last 3rd 2nd 1st
-4522 1st 2nd 3rd Last 3rd 2nd 1st
-4523 1st 2nd 3rd Last 3rd 2nd 1st
-4524 1st 2nd 3rd Last 3rd 2nd 1st
-4525 1st 2nd 3rd Last 3rd 2nd 1st
-4526 1st 2nd 3rd Last 3rd 2nd 1st
-4527 1st 2nd 3rd Last 3rd 2nd 1st
-4528 1st 2nd 3rd Last 3rd 2nd 1st
-4529 1st 2nd 3rd Last 3rd 2nd 1st
-4530 1st 2nd 3rd Last 3rd 2nd 1st
-4531 1st 2nd 3rd Last 3rd 2nd 1st
-4532 1st 2nd 3rd Last 3rd 2nd 1st
-4533 1st 2nd 3rd Last 3rd 2nd 1st
-4534 1st 2nd 3rd Last 3rd 2nd 1st
-4535 1st 2nd 3rd Last 3rd 2nd 1st
-4536 1st 2nd 3rd Last 3rd 2nd 1st
-4537 1st 2nd 3rd Last 3rd 2nd 1st
-4538 1st 2nd 3rd Last 3rd 2nd 1st
-4539 1st 2nd 3rd Last 3rd 2nd 1st
-4540 1st 2nd 3rd Last 3rd 2nd 1st
-4541 1st 2nd 3rd Last 3rd 2nd 1st
-4542 1st 2nd 3rd Last 3rd 2nd 1st
-4543 1st 2nd 3rd Last 3rd 2nd 1st
-4544 1st 2nd 3rd Last 3rd 2nd 1st
-4545 1st 2nd 3rd Last 3rd 2nd 1st
-4546 1st 2nd 3rd Last 3rd 2nd 1st
-4547 1st 2nd 3rd Last 3rd 2nd 1st
-4548 1st 2nd 3rd Last 3rd 2nd 1st
-4549 1st 2nd 3rd Last 3rd 2nd 1st
-4550 1st 2nd 3rd Last 3rd 2nd 1st
-4551 1st 2nd 3rd Last 3rd 2nd 1st
-4552 1st 2nd 3rd Last 3rd 2nd 1st
-4553 1st 2nd 3rd Last 3rd 2nd 1st
-4554 1st 2nd 3rd Last 3rd 2nd 1st
-4555 1st 2nd 3rd Last 3rd 2nd 1st
-4556 1st 2nd 3rd Last 3rd 2nd 1st
-4557 1st 2nd 3rd Last 3rd 2nd 1st
-4558 1st 2nd 3rd Last 3rd 2nd 1st
-4559 1st 2nd 3rd Last 3rd 2nd 1st
-4560 1st 2nd 3rd Last 3rd 2nd 1st
-4561 1st 2nd 3rd Last 3rd 2nd 1st
-4562 1st 2nd 3rd Last 3rd 2nd 1st
-4563 1st 2nd 3rd Last 3rd 2nd 1st
-4564 1st 2nd 3rd Last 3rd 2nd 1st
-4565 1st 2nd 3rd Last 3rd 2nd 1st
-4566 1st 2nd 3rd Last 3rd 2nd 1st
-4567 1st 2nd 3rd Last 3rd 2nd 1st
-4568 1st 2nd 3rd Last 3rd 2nd 1st
-4569 1st 2nd 3rd Last 3rd 2nd 1st
-4570 1st 2nd 3rd Last 3rd 2nd 1st
-4571 1st 2nd 3rd Last 3rd 2nd 1st
-4572 1st 2nd 3rd Last 3rd 2nd 1st
-4573 1st 2nd 3rd Last 3rd 2nd 1st
-4574 1st 2nd 3rd Last 3rd 2nd 1st
-4575 1st 2nd 3rd Last 3rd 2nd 1st
-4576 1st 2nd 3rd Last 3rd 2nd 1st
-4577 1st 2nd 3rd Last 3rd 2nd 1st
-4578 1st 2nd 3rd Last 3rd 2nd 1st
-4579 1st 2nd 3rd Last 3rd 2nd 1st
-4580 1st 2nd 3rd Last 3rd 2nd 1st
-4581 1st 2nd 3rd Last 3rd 2nd 1st
-4582 1st 2nd 3rd Last 3rd 2nd 1st
-4583 1st 2nd 3rd Last 3rd 2nd 1st
-4584 1st 2nd 3rd Last 3rd 2nd 1st
-4585 1st 2nd 3rd Last 3rd 2nd 1st
-4586 1st 2nd 3rd Last 3rd 2nd 1st
-4587 1st 2nd 3rd Last 3rd 2nd 1st
-4588 1st 2nd 3rd Last 3rd 2nd 1st
-4589 1st 2nd 3rd Last 3rd 2nd 1st
-4590 1st 2nd 3rd Last 3rd 2nd 1st
-4591 1st 2nd 3rd Last 3rd 2nd 1st
-4592 1st 2nd 3rd Last 3rd 2nd 1st
-4593 1st 2nd 3rd Last 3rd 2nd 1st
-4594 1st 2nd 3rd Last 3rd 2nd 1st
-4595 1st 2nd 3rd Last 3rd 2nd 1st
-4596 1st 2nd 3rd Last 3rd 2nd 1st
-4597 1st 2nd 3rd Last 3rd 2nd 1st
-4598 1st 2nd 3rd Last 3rd 2nd 1st
-4599 1st 2nd 3rd Last 3rd 2nd 1st
-4600 1st 2nd 3rd Last 3rd 2nd 1st
-4601 1st 2nd 3rd Last 3rd 2nd 1st
-4602 1st 2nd 3rd Last 3rd 2nd 1st
-4603 1st 2nd 3rd Last 3rd 2nd 1st
-4604 1st 2nd 3rd Last 3rd 2nd 1st
-4605 1st 2nd 3rd Last 3rd 2nd 1st
-4606 1st 2nd 3rd Last 3rd 2nd 1st
-4607 1st 2nd 3rd Last 3rd 2nd 1st
-4608 1st 2nd 3rd Last 3rd 2nd 1st
-4609 1st 2nd 3rd Last 3rd 2nd 1st
-4610 1st 2nd 3rd Last 3rd 2nd 1st
-4611 1st 2nd 3rd Last 3rd 2nd 1st
-4612 1st 2nd 3rd Last 3rd 2nd 1st
-4613 1st 2nd 3rd Last 3rd 2nd 1st
-4614 1st 2nd 3rd Last 3rd 2nd 1st
-4615 1st 2nd 3rd Last 3rd 2nd 1st
-4616 1st 2nd 3rd Last 3rd 2nd 1st
-4617 1st 2nd 3rd Last 3rd 2nd 1st
-4618 1st 2nd 3rd Last 3rd 2nd 1st
-4619 1st 2nd 3rd Last 3rd 2nd 1st
-4620 1st 2nd 3rd Last 3rd 2nd 1st
-4621 1st 2nd 3rd Last 3rd 2nd 1st
-4622 1st 2nd 3rd Last 3rd 2nd 1st
-4623 1st 2nd 3rd Last 3rd 2nd 1st
-4624 1st 2nd 3rd Last 3rd 2nd 1st
-4625 1st 2nd 3rd Last 3rd 2nd 1st
-4626 1st 2nd 3rd Last 3rd 2nd 1st
-4627 1st 2nd 3rd Last 3rd 2nd 1st
-4628 1st 2nd 3rd Last 3rd 2nd 1st
-4629 1st 2nd 3rd Last 3rd 2nd 1st
-4630 1st 2nd 3rd Last 3rd 2nd 1st
-4631 1st 2nd 3rd Last 3rd 2nd 1st
-4632 1st 2nd 3rd Last 3rd 2nd 1st
-4633 1st 2nd 3rd Last 3rd 2nd 1st
-4634 1st 2nd 3rd Last 3rd 2nd 1st
-4635 1st 2nd 3rd Last 3rd 2nd 1st
-4636 1st 2nd 3rd Last 3rd 2nd 1st
-4637 1st 2nd 3rd Last 3rd 2nd 1st
-4638 1st 2nd 3rd Last 3rd 2nd 1st
-4639 1st 2nd 3rd Last 3rd 2nd 1st
-4640 1st 2nd 3rd Last 3rd 2nd 1st
-4641 1st 2nd 3rd Last 3rd 2nd 1st
-4642 1st 2nd 3rd Last 3rd 2nd 1st
-4643 1st 2nd 3rd Last 3rd 2nd 1st
-4644 1st 2nd 3rd Last 3rd 2nd 1st
-4645 1st 2nd 3rd Last 3rd 2nd 1st
-4646 1st 2nd 3rd Last 3rd 2nd 1st
-4647 1st 2nd 3rd Last 3rd 2nd 1st
-4648 1st 2nd 3rd Last 3rd 2nd 1st
-4649 1st 2nd 3rd Last 3rd 2nd 1st
-4650 1st 2nd 3rd Last 3rd 2nd 1st
-4651 1st 2nd 3rd Last 3rd 2nd 1st
-4652 1st 2nd 3rd Last 3rd 2nd 1st
-4653 1st 2nd 3rd Last 3rd 2nd 1st
-4654 1st 2nd 3rd Last 3rd 2nd 1st
-4655 1st 2nd 3rd Last 3rd 2nd 1st
-4656 1st 2nd 3rd Last 3rd 2nd 1st
-4657 1st 2nd 3rd Last 3rd 2nd 1st
-4658 1st 2nd 3rd Last 3rd 2nd 1st
-4659 1st 2nd 3rd Last 3rd 2nd 1st
-4660 1st 2nd 3rd Last 3rd 2nd 1st
-4661 1st 2nd 3rd Last 3rd 2nd 1st
-4662 1st 2nd 3rd Last 3rd 2nd 1st
-4663 1st 2nd 3rd Last 3rd 2nd 1st
-4664 1st 2nd 3rd Last 3rd 2nd 1st
-4665 1st 2nd 3rd Last 3rd 2nd 1st
-4666 1st 2nd 3rd Last 3rd 2nd 1st
-4667 1st 2nd 3rd Last 3rd 2nd 1st
-4668 1st 2nd 3rd Last 3rd 2nd 1st
-4669 1st 2nd 3rd Last 3rd 2nd 1st
-4670 1st 2nd 3rd Last 3rd 2nd 1st
-4671 1st 2nd 3rd Last 3rd 2nd 1st
-4672 1st 2nd 3rd Last 3rd 2nd 1st
-4673 1st 2nd 3rd Last 3rd 2nd 1st
-4674 1st 2nd 3rd Last 3rd 2nd 1st
-4675 1st 2nd 3rd Last 3rd 2nd 1st
-4676 1st 2nd 3rd Last 3rd 2nd 1st
-4677 1st 2nd 3rd Last 3rd 2nd 1st
-4678 1st 2nd 3rd Last 3rd 2nd 1st
-4679 1st 2nd 3rd Last 3rd 2nd 1st
-4680 1st 2nd 3rd Last 3rd 2nd 1st
-4681 1st 2nd 3rd Last 3rd 2nd 1st
-4682 1st 2nd 3rd Last 3rd 2nd 1st
-4683 1st 2nd 3rd Last 3rd 2nd 1st
-4684 1st 2nd 3rd Last 3rd 2nd 1st
-4685 1st 2nd 3rd Last 3rd 2nd 1st
-4686 1st 2nd 3rd Last 3rd 2nd 1st
-4687 1st 2nd 3rd Last 3rd 2nd 1st
-4688 1st 2nd 3rd Last 3rd 2nd 1st
-4689 1st 2nd 3rd Last 3rd 2nd 1st
-4690 1st 2nd 3rd Last 3rd 2nd 1st
-4691 1st 2nd 3rd Last 3rd 2nd 1st
-4692 1st 2nd 3rd Last 3rd 2nd 1st
-4693 1st 2nd 3rd Last 3rd 2nd 1st
-4694 1st 2nd 3rd Last 3rd 2nd 1st
-4695 1st 2nd 3rd Last 3rd 2nd 1st
-4696 1st 2nd 3rd Last 3rd 2nd 1st
-4697 1st 2nd 3rd Last 3rd 2nd 1st
-4698 1st 2nd 3rd Last 3rd 2nd 1st
-4699 1st 2nd 3rd Last 3rd 2nd 1st
-4700 1st 2nd 3rd Last 3rd 2nd 1st
-4701 1st 2nd 3rd Last 3rd 2nd 1st
-4702 1st 2nd 3rd Last 3rd 2nd 1st
-4703 1st 2nd 3rd Last 3rd 2nd 1st
-4704 1st 2nd 3rd Last 3rd 2nd 1st
-4705 1st 2nd 3rd Last 3rd 2nd 1st
-4706 1st 2nd 3rd Last 3rd 2nd 1st
-4707 1st 2nd 3rd Last 3rd 2nd 1st
-4708 1st 2nd 3rd Last 3rd 2nd 1st
-4709 1st 2nd 3rd Last 3rd 2nd 1st
-4710 1st 2nd 3rd Last 3rd 2nd 1st
-4711 1st 2nd 3rd Last 3rd 2nd 1st
-4712 1st 2nd 3rd Last 3rd 2nd 1st
-4713 1st 2nd 3rd Last 3rd 2nd 1st
-4714 1st 2nd 3rd Last 3rd 2nd 1st
-4715 1st 2nd 3rd Last 3rd 2nd 1st
-4716 1st 2nd 3rd Last 3rd 2nd 1st
-4717 1st 2nd 3rd Last 3rd 2nd 1st
-4718 1st 2nd 3rd Last 3rd 2nd 1st
-4719 1st 2nd 3rd Last 3rd 2nd 1st
-4720 1st 2nd 3rd Last 3rd 2nd 1st
-4721 1st 2nd 3rd Last 3rd 2nd 1st
-4722 1st 2nd 3rd Last 3rd 2nd 1st
-4723 1st 2nd 3rd Last 3rd 2nd 1st
-4724 1st 2nd 3rd Last 3rd 2nd 1st
-4725 1st 2nd 3rd Last 3rd 2nd 1st
-4726 1st 2nd 3rd Last 3rd 2nd 1st
-4727 1st 2nd 3rd Last 3rd 2nd 1st
-4728 1st 2nd 3rd Last 3rd 2nd 1st
-4729 1st 2nd 3rd Last 3rd 2nd 1st
-4730 1st 2nd 3rd Last 3rd 2nd 1st
-4731 1st 2nd 3rd Last 3rd 2nd 1st
-4732 1st 2nd 3rd Last 3rd 2nd 1st
-4733 1st 2nd 3rd Last 3rd 2nd 1st
-4734 1st 2nd 3rd Last 3rd 2nd 1st
-4735 1st 2nd 3rd Last 3rd 2nd 1st
-4736 1st 2nd 3rd Last 3rd 2nd 1st
-4737 1st 2nd 3rd Last 3rd 2nd 1st
-4738 1st 2nd 3rd Last 3rd 2nd 1st
-4739 1st 2nd 3rd Last 3rd 2nd 1st
-4740 1st 2nd 3rd Last 3rd 2nd 1st
-4741 1st 2nd 3rd Last 3rd 2nd 1st
-4742 1st 2nd 3rd Last 3rd 2nd 1st
-4743 1st 2nd 3rd Last 3rd 2nd 1st
-4744 1st 2nd 3rd Last 3rd 2nd 1st
-4745 1st 2nd 3rd Last 3rd 2nd 1st
-4746 1st 2nd 3rd Last 3rd 2nd 1st
-4747 1st 2nd 3rd Last 3rd 2nd 1st
-4748 1st 2nd 3rd Last 3rd 2nd 1st
-4749 1st 2nd 3rd Last 3rd 2nd 1st
-4750 1st 2nd 3rd Last 3rd 2nd 1st
-4751 1st 2nd 3rd Last 3rd 2nd 1st
-4752 1st 2nd 3rd Last 3rd 2nd 1st
-4753 1st 2nd 3rd Last 3rd 2nd 1st
-4754 1st 2nd 3rd Last 3rd 2nd 1st
-4755 1st 2nd 3rd Last 3rd 2nd 1st
-4756 1st 2nd 3rd Last 3rd 2nd 1st
-4757 1st 2nd 3rd Last 3rd 2nd 1st
-4758 1st 2nd 3rd Last 3rd 2nd 1st
-4759 1st 2nd 3rd Last 3rd 2nd 1st
-4760 1st 2nd 3rd Last 3rd 2nd 1st
-4761 1st 2nd 3rd Last 3rd 2nd 1st
-4762 1st 2nd 3rd Last 3rd 2nd 1st
-4763 1st 2nd 3rd Last 3rd 2nd 1st
-4764 1st 2nd 3rd Last 3rd 2nd 1st
-4765 1st 2nd 3rd Last 3rd 2nd 1st
-4766 1st 2nd 3rd Last 3rd 2nd 1st
-4767 1st 2nd 3rd Last 3rd 2nd 1st
-4768 1st 2nd 3rd Last 3rd 2nd 1st
-4769 1st 2nd 3rd Last 3rd 2nd 1st
-4770 1st 2nd 3rd Last 3rd 2nd 1st
-4771 1st 2nd 3rd Last 3rd 2nd 1st
-4772 1st 2nd 3rd Last 3rd 2nd 1st
-4773 1st 2nd 3rd Last 3rd 2nd 1st
-4774 1st 2nd 3rd Last 3rd 2nd 1st
-4775 1st 2nd 3rd Last 3rd 2nd 1st
-4776 1st 2nd 3rd Last 3rd 2nd 1st
-4777 1st 2nd 3rd Last 3rd 2nd 1st
-4778 1st 2nd 3rd Last 3rd 2nd 1st
-4779 1st 2nd 3rd Last 3rd 2nd 1st
-4780 1st 2nd 3rd Last 3rd 2nd 1st
-4781 1st 2nd 3rd Last 3rd 2nd 1st
-4782 1st 2nd 3rd Last 3rd 2nd 1st
-4783 1st 2nd 3rd Last 3rd 2nd 1st
-4784 1st 2nd 3rd Last 3rd 2nd 1st
-4785 1st 2nd 3rd Last 3rd 2nd 1st
-4786 1st 2nd 3rd Last 3rd 2nd 1st
-4787 1st 2nd 3rd Last 3rd 2nd 1st
-4788 1st 2nd 3rd Last 3rd 2nd 1st
-4789 1st 2nd 3rd Last 3rd 2nd 1st
-4790 1st 2nd 3rd Last 3rd 2nd 1st
-4791 1st 2nd 3rd Last 3rd 2nd 1st
-4792 1st 2nd 3rd Last 3rd 2nd 1st
-4793 1st 2nd 3rd Last 3rd 2nd 1st
-4794 1st 2nd 3rd Last 3rd 2nd 1st
-4795 1st 2nd 3rd Last 3rd 2nd 1st
-4796 1st 2nd 3rd Last 3rd 2nd 1st
-4797 1st 2nd 3rd Last 3rd 2nd 1st
-4798 1st 2nd 3rd Last 3rd 2nd 1st
-4799 1st 2nd 3rd Last 3rd 2nd 1st
-4800 1st 2nd 3rd Last 3rd 2nd 1st
-4801 1st 2nd 3rd Last 3rd 2nd 1st
-4802 1st 2nd 3rd Last 3rd 2nd 1st
-4803 1st 2nd 3rd Last 3rd 2nd 1st
-4804 1st 2nd 3rd Last 3rd 2nd 1st
-4805 1st 2nd 3rd Last 3rd 2nd 1st
-4806 1st 2nd 3rd Last 3rd 2nd 1st
-4807 1st 2nd 3rd Last 3rd 2nd 1st
-4808 1st 2nd 3rd Last 3rd 2nd 1st
-4809 1st 2nd 3rd Last 3rd 2nd 1st
-4810 1st 2nd 3rd Last 3rd 2nd 1st
-4811 1st 2nd 3rd Last 3rd 2nd 1st
-4812 1st 2nd 3rd Last 3rd 2nd 1st
-4813 1st 2nd 3rd Last 3rd 2nd 1st
-4814 1st 2nd 3rd Last 3rd 2nd 1st
-4815 1st 2nd 3rd Last 3rd 2nd 1st
-4816 1st 2nd 3rd Last 3rd 2nd 1st
-4817 1st 2nd 3rd Last 3rd 2nd 1st
-4818 1st 2nd 3rd Last 3rd 2nd 1st
-4819 1st 2nd 3rd Last 3rd 2nd 1st
-4820 1st 2nd 3rd Last 3rd 2nd 1st
-4821 1st 2nd 3rd Last 3rd 2nd 1st
-4822 1st 2nd 3rd Last 3rd 2nd 1st
-4823 1st 2nd 3rd Last 3rd 2nd 1st
-4824 1st 2nd 3rd Last 3rd 2nd 1st
-4825 1st 2nd 3rd Last 3rd 2nd 1st
-4826 1st 2nd 3rd Last 3rd 2nd 1st
-4827 1st 2nd 3rd Last 3rd 2nd 1st
-4828 1st 2nd 3rd Last 3rd 2nd 1st
-4829 1st 2nd 3rd Last 3rd 2nd 1st
-4830 1st 2nd 3rd Last 3rd 2nd 1st
-4831 1st 2nd 3rd Last 3rd 2nd 1st
-4832 1st 2nd 3rd Last 3rd 2nd 1st
-4833 1st 2nd 3rd Last 3rd 2nd 1st
-4834 1st 2nd 3rd Last 3rd 2nd 1st
-4835 1st 2nd 3rd Last 3rd 2nd 1st
-4836 1st 2nd 3rd Last 3rd 2nd 1st
-4837 1st 2nd 3rd Last 3rd 2nd 1st
-4838 1st 2nd 3rd Last 3rd 2nd 1st
-4839 1st 2nd 3rd Last 3rd 2nd 1st
-4840 1st 2nd 3rd Last 3rd 2nd 1st
-4841 1st 2nd 3rd Last 3rd 2nd 1st
-4842 1st 2nd 3rd Last 3rd 2nd 1st
-4843 1st 2nd 3rd Last 3rd 2nd 1st
-4844 1st 2nd 3rd Last 3rd 2nd 1st
-4845 1st 2nd 3rd Last 3rd 2nd 1st
-4846 1st 2nd 3rd Last 3rd 2nd 1st
-4847 1st 2nd 3rd Last 3rd 2nd 1st
-4848 1st 2nd 3rd Last 3rd 2nd 1st
-4849 1st 2nd 3rd Last 3rd 2nd 1st
-4850 1st 2nd 3rd Last 3rd 2nd 1st
-4851 1st 2nd 3rd Last 3rd 2nd 1st
-4852 1st 2nd 3rd Last 3rd 2nd 1st
-4853 1st 2nd 3rd Last 3rd 2nd 1st
-4854 1st 2nd 3rd Last 3rd 2nd 1st
-4855 1st 2nd 3rd Last 3rd 2nd 1st
-4856 1st 2nd 3rd Last 3rd 2nd 1st
-4857 1st 2nd 3rd Last 3rd 2nd 1st
-4858 1st 2nd 3rd Last 3rd 2nd 1st
-4859 1st 2nd 3rd Last 3rd 2nd 1st
-4860 1st 2nd 3rd Last 3rd 2nd 1st
-4861 1st 2nd 3rd Last 3rd 2nd 1st
-4862 1st 2nd 3rd Last 3rd 2nd 1st
-4863 1st 2nd 3rd Last 3rd 2nd 1st
-4864 1st 2nd 3rd Last 3rd 2nd 1st
-4865 1st 2nd 3rd Last 3rd 2nd 1st
-4866 1st 2nd 3rd Last 3rd 2nd 1st
-4867 1st 2nd 3rd Last 3rd 2nd 1st
-4868 1st 2nd 3rd Last 3rd 2nd 1st
-4869 1st 2nd 3rd Last 3rd 2nd 1st
-4870 1st 2nd 3rd Last 3rd 2nd 1st
-4871 1st 2nd 3rd Last 3rd 2nd 1st
-4872 1st 2nd 3rd Last 3rd 2nd 1st
-4873 1st 2nd 3rd Last 3rd 2nd 1st
-4874 1st 2nd 3rd Last 3rd 2nd 1st
-4875 1st 2nd 3rd Last 3rd 2nd 1st
-4876 1st 2nd 3rd Last 3rd 2nd 1st
-4877 1st 2nd 3rd Last 3rd 2nd 1st
-4878 1st 2nd 3rd Last 3rd 2nd 1st
-4879 1st 2nd 3rd Last 3rd 2nd 1st
-4880 1st 2nd 3rd Last 3rd 2nd 1st
-4881 1st 2nd 3rd Last 3rd 2nd 1st
-4882 1st 2nd 3rd Last 3rd 2nd 1st
-4883 1st 2nd 3rd Last 3rd 2nd 1st
-4884 1st 2nd 3rd Last 3rd 2nd 1st
-4885 1st 2nd 3rd Last 3rd 2nd 1st
-4886 1st 2nd 3rd Last 3rd 2nd 1st
-4887 1st 2nd 3rd Last 3rd 2nd 1st
-4888 1st 2nd 3rd Last 3rd 2nd 1st
-4889 1st 2nd 3rd Last 3rd 2nd 1st
-4890 1st 2nd 3rd Last 3rd 2nd 1st
-4891 1st 2nd 3rd Last 3rd 2nd 1st
-4892 1st 2nd 3rd Last 3rd 2nd 1st
-4893 1st 2nd 3rd Last 3rd 2nd 1st
-4894 1st 2nd 3rd Last 3rd 2nd 1st
-4895 1st 2nd 3rd Last 3rd 2nd 1st
-4896 1st 2nd 3rd Last 3rd 2nd 1st
-4897 1st 2nd 3rd Last 3rd 2nd 1st
-4898 1st 2nd 3rd Last 3rd 2nd 1st
-4899 1st 2nd 3rd Last 3rd 2nd 1st
-4900 1st 2nd 3rd Last 3rd 2nd 1st
-4901 1st 2nd 3rd Last 3rd 2nd 1st
-4902 1st 2nd 3rd Last 3rd 2nd 1st
-4903 1st 2nd 3rd Last 3rd 2nd 1st
-4904 1st 2nd 3rd Last 3rd 2nd 1st
-4905 1st 2nd 3rd Last 3rd 2nd 1st
-4906 1st 2nd 3rd Last 3rd 2nd 1st
-4907 1st 2nd 3rd Last 3rd 2nd 1st
-4908 1st 2nd 3rd Last 3rd 2nd 1st
-4909 1st 2nd 3rd Last 3rd 2nd 1st
-4910 1st 2nd 3rd Last 3rd 2nd 1st
-4911 1st 2nd 3rd Last 3rd 2nd 1st
-4912 1st 2nd 3rd Last 3rd 2nd 1st
-4913 1st 2nd 3rd Last 3rd 2nd 1st
-4914 1st 2nd 3rd Last 3rd 2nd 1st
-4915 1st 2nd 3rd Last 3rd 2nd 1st
-4916 1st 2nd 3rd Last 3rd 2nd 1st
-4917 1st 2nd 3rd Last 3rd 2nd 1st
-4918 1st 2nd 3rd Last 3rd 2nd 1st
-4919 1st 2nd 3rd Last 3rd 2nd 1st
-4920 1st 2nd 3rd Last 3rd 2nd 1st
-4921 1st 2nd 3rd Last 3rd 2nd 1st
-4922 1st 2nd 3rd Last 3rd 2nd 1st
-4923 1st 2nd 3rd Last 3rd 2nd 1st
-4924 1st 2nd 3rd Last 3rd 2nd 1st
-4925 1st 2nd 3rd Last 3rd 2nd 1st
-4926 1st 2nd 3rd Last 3rd 2nd 1st
-4927 1st 2nd 3rd Last 3rd 2nd 1st
-4928 1st 2nd 3rd Last 3rd 2nd 1st
-4929 1st 2nd 3rd Last 3rd 2nd 1st
-4930 1st 2nd 3rd Last 3rd 2nd 1st
-4931 1st 2nd 3rd Last 3rd 2nd 1st
-4932 1st 2nd 3rd Last 3rd 2nd 1st
-4933 1st 2nd 3rd Last 3rd 2nd 1st
-4934 1st 2nd 3rd Last 3rd 2nd 1st
-4935 1st 2nd 3rd Last 3rd 2nd 1st
-4936 1st 2nd 3rd Last 3rd 2nd 1st
-4937 1st 2nd 3rd Last 3rd 2nd 1st
-4938 1st 2nd 3rd Last 3rd 2nd 1st
-4939 1st 2nd 3rd Last 3rd 2nd 1st
-4940 1st 2nd 3rd Last 3rd 2nd 1st
-4941 1st 2nd 3rd Last 3rd 2nd 1st
-4942 1st 2nd 3rd Last 3rd 2nd 1st
-4943 1st 2nd 3rd Last 3rd 2nd 1st
-4944 1st 2nd 3rd Last 3rd 2nd 1st
-4945 1st 2nd 3rd Last 3rd 2nd 1st
-4946 1st 2nd 3rd Last 3rd 2nd 1st
-4947 1st 2nd 3rd Last 3rd 2nd 1st
-4948 1st 2nd 3rd Last 3rd 2nd 1st
-4949 1st 2nd 3rd Last 3rd 2nd 1st
-4950 1st 2nd 3rd Last 3rd 2nd 1st
-4951 1st 2nd 3rd Last 3rd 2nd 1st
-4952 1st 2nd 3rd Last 3rd 2nd 1st
-4953 1st 2nd 3rd Last 3rd 2nd 1st
-4954 1st 2nd 3rd Last 3rd 2nd 1st
-4955 1st 2nd 3rd Last 3rd 2nd 1st
-4956 1st 2nd 3rd Last 3rd 2nd 1st
-4957 1st 2nd 3rd Last 3rd 2nd 1st
-4958 1st 2nd 3rd Last 3rd 2nd 1st
-4959 1st 2nd 3rd Last 3rd 2nd 1st
-4960 1st 2nd 3rd Last 3rd 2nd 1st
-4961 1st 2nd 3rd Last 3rd 2nd 1st
-4962 1st 2nd 3rd Last 3rd 2nd 1st
-4963 1st 2nd 3rd Last 3rd 2nd 1st
-4964 1st 2nd 3rd Last 3rd 2nd 1st
-4965 1st 2nd 3rd Last 3rd 2nd 1st
-4966 1st 2nd 3rd Last 3rd 2nd 1st
-4967 1st 2nd 3rd Last 3rd 2nd 1st
-4968 1st 2nd 3rd Last 3rd 2nd 1st
-4969 1st 2nd 3rd Last 3rd 2nd 1st
-4970 1st 2nd 3rd Last 3rd 2nd 1st
-4971 1st 2nd 3rd Last 3rd 2nd 1st
-4972 1st 2nd 3rd Last 3rd 2nd 1st
-4973 1st 2nd 3rd Last 3rd 2nd 1st
-4974 1st 2nd 3rd Last 3rd 2nd 1st
-4975 1st 2nd 3rd Last 3rd 2nd 1st
-4976 1st 2nd 3rd Last 3rd 2nd 1st
-4977 1st 2nd 3rd Last 3rd 2nd 1st
-4978 1st 2nd 3rd Last 3rd 2nd 1st
-4979 1st 2nd 3rd Last 3rd 2nd 1st
-4980 1st 2nd 3rd Last 3rd 2nd 1st
-4981 1st 2nd 3rd Last 3rd 2nd 1st
-4982 1st 2nd 3rd Last 3rd 2nd 1st
-4983 1st 2nd 3rd Last 3rd 2nd 1st
-4984 1st 2nd 3rd Last 3rd 2nd 1st
-4985 1st 2nd 3rd Last 3rd 2nd 1st
-4986 1st 2nd 3rd Last 3rd 2nd 1st
-4987 1st 2nd 3rd Last 3rd 2nd 1st
-4988 1st 2nd 3rd Last 3rd 2nd 1st
-4989 1st 2nd 3rd Last 3rd 2nd 1st
-4990 1st 2nd 3rd Last 3rd 2nd 1st
-4991 1st 2nd 3rd Last 3rd 2nd 1st
-4992 1st 2nd 3rd Last 3rd 2nd 1st
-4993 1st 2nd 3rd Last 3rd 2nd 1st
-4994 1st 2nd 3rd Last 3rd 2nd 1st
-4995 1st 2nd 3rd Last 3rd 2nd 1st
-4996 1st 2nd 3rd Last 3rd 2nd 1st
-4997 1st 2nd 3rd Last 3rd 2nd 1st
-4998 1st 2nd 3rd Last 3rd 2nd 1st
-4999 1st 2nd 3rd Last 3rd 2nd 1st
-Stopping
Index: c/tests/concurrent/waitfor/.expect/statment.txt
===================================================================
--- src/tests/concurrent/waitfor/.expect/statment.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,702 +1,0 @@
-Starting
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Stopping
Index: c/tests/concurrent/waitfor/.expect/when.txt
===================================================================
--- src/tests/concurrent/waitfor/.expect/when.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,5000 +1,0 @@
-Starting
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-Stopping
Index: c/tests/concurrent/waitfor/barge.c
===================================================================
--- src/tests/concurrent/waitfor/barge.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,92 +1,0 @@
-//---------------------------------------------------------
-// Barging test
-// Ensures that no barging can occur between :
-//   - the frontend of the waitfor and the waited call
-//   - the waited call and the backend of the waitfor
-//---------------------------------------------------------
-
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <stdlib>
-#include <thread>
-
-#include <stdbool.h>
-
-static const unsigned long N = 5_000ul;
-
-enum state_t { WAITFOR, CALL, BARGE };
-
-monitor global_t {
-	bool done;
-	bool started;
-	state_t state;
-};
-
-void ?{} ( global_t & this ) {
-	this.done = false;
-	this.started = false;
-	this.state = BARGE;
-}
-
-void ^?{} ( global_t & mutex this ) {}
-
-global_t global;
-
-bool barge( global_t & mutex this ) {
-	this.state = BARGE;
-	return !this.done;
-}
-
-thread barger_t {};
-void main( barger_t & this ) {
-	yield();
-	while( barge( global ) ) { yield(random( 10 )); }
-}
-
-bool do_call( global_t & mutex this ) {
-	yield(random( 10 ));
-	if( this.state != WAITFOR && !this.done && this.started ) {
-		serr | "Barging before caller detected" | endl;
-	}
-
-	this.state = CALL;
-	return !this.done;
-}
-
-thread caller_t {};
-void main( caller_t & this ) {
-	while( do_call(global) ) { yield(random( 10 )); }
-}
-
-void do_wait( global_t & mutex this ) {
-	this.started = true;
-	for( int i = 0; i < N; i++) {
-		yield(random( 10 ));
-		this.state = WAITFOR;
-		waitfor(do_call, this) {
-			sout | i | endl;
-		}
-
-		if( this.state != CALL ) {
-			serr | "Barging after caller detected" | endl;
-		}
-	}
-
-	this.done = true;
-}
-
-thread waiter_t{};
-void main( waiter_t & this ) {
-	do_wait(global);
-}
-
-int main() {
-	sout | "Starting" | endl;
-	{
-		barger_t bargers[17];
-		caller_t callers[7];
-		waiter_t waiters;
-	}
-	sout | "Stopping" | endl;
-}
Index: c/tests/concurrent/waitfor/dtor.c
===================================================================
--- src/tests/concurrent/waitfor/dtor.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,63 +1,0 @@
-//---------------------------------------------------------
-// Barging test
-// Ensures the statement order is reverse when using waitfor ^?{}
-//---------------------------------------------------------
-
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <stdlib>
-#include <thread>
-
-#include <stdbool.h>
-
-static const unsigned long N = 5_000ul;
-
-enum state_t {
-	CTOR,
-	MAIN,
-	AFTER,
-	END,
-	DTOR
-};
-
-thread dummy_t {
-	state_t state;
-};
-
-static inline void set_state( dummy_t & this, state_t state) {
-	switch(state) {
-		case CTOR  : break;
-		case MAIN  : if( this.state != CTOR  ) { serr | "ERROR Expected state to be CTOR"  | endl; abort(); } this.state = state; break;
-		case AFTER : if( this.state != MAIN  ) { serr | "ERROR Expected state to be MAIN"  | endl; abort(); } this.state = state; break;
-		case END   : if( this.state != AFTER ) { serr | "ERROR Expected state to be AFTER" | endl; abort(); } this.state = state; break;
-		case DTOR  : if( this.state != END   ) { serr | "ERROR Expected state to be END"   | endl; abort(); } this.state = state; break;
-	}
-}
-
-void ^?{}( dummy_t & mutex this ) {
-	set_state( this, DTOR );
-}
-
-void ?{}( dummy_t & this ) {
-	this.state = CTOR;
-}
-
-void main( dummy_t & this ) {
-	yield(random( 10 ));
-	set_state( this, MAIN );
-	waitfor( ^?{}, this ) {
-		set_state( this, AFTER );
-	}
-	set_state( this, END );
-}
-
-int main() {
-	sout | "Starting" | endl;
-	processor p;
-	for( int i = 0; i < N; i++ ){
-		dummy_t dummy[4];
-		yield( random( 100 ) );
-	}
-	sout | "Stopping" | endl;
-}
Index: c/tests/concurrent/waitfor/else.c
===================================================================
--- src/tests/concurrent/waitfor/else.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,48 +1,0 @@
-#include <fstream>
-#include <monitor>
-
-#include <stdbool.h>
-
-monitor M {};
-
-void notcalled( M & mutex m ) {
-	abort();
-}
-
-void test( M & mutex m ) {
-	int i = 0;
-	sout | "Starting" | endl;
-
-	when( false ) waitfor( notcalled, m );
-
-	sout | "Step" | i++ | endl;
-
-	waitfor( notcalled, m ); or else {
-		sout | "else called" | endl;
-	}
-
-	sout | "Step" | i++ | endl;
-
-	when( true ) waitfor( notcalled, m ); or when( true ) else {
-		sout | "else called" | endl;
-	}
-
-	sout | "Step" | i++ | endl;
-
-	when( false ) waitfor( notcalled, m ); or when( true ) else {
-		sout | "else called" | endl;
-	}
-
-	sout | "Step" | i++ | endl;
-
-	when( false ) waitfor( notcalled, m ); or when( false ) else {
-		sout | "else called" | endl;
-	}
-
-	sout | "Done" | endl;
-}
-
-int main() {
-	M m;
-	test(m);
-}
Index: c/tests/concurrent/waitfor/parse.c
===================================================================
--- src/tests/concurrent/waitfor/parse.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,104 +1,0 @@
-//----------------------------------------------------------------------------------------
-//----------------------------------------------------------------------------------------
-//
-//		DEPRECATED TEST
-//		DIFFERS BETWEEN DEBUG AND RELEASE
-//
-//----------------------------------------------------------------------------------------
-//----------------------------------------------------------------------------------------
-
-#include <monitor>
-
-monitor M {};
-
-M a;
-
-void f1( M & mutex a );
-void f2( M & mutex a );
-void f2( M & mutex a, M & mutex b );
-void f3( M & mutex a );
-void f3( M & mutex a, M & mutex b );
-void f3( M & mutex a, M & mutex b, M & mutex c );
-
-void foo() {
-
-	//---------------------------------------
-	waitfor( f1, a ) {
-		1;
-	}
-
-	//---------------------------------------
-	waitfor( f1, a ) {
-		2;
-	}
-	waitfor( f2, a ) {
-		3;
-	}
-
-	//---------------------------------------
-	when( 1 < 3 ) waitfor( f2, a, a ) {
-		4;
-	}
-	or timeout( 100 ) {
-		5;
-	}
-
-	//---------------------------------------
-	when( 2 < 3 ) waitfor( f3, a ) {
-		5;
-	}
-	or else {
-		6;
-	}
-
-	//---------------------------------------
-	when( 3 < 3 ) waitfor( f3, a, a ) {
-		7;
-	}
-	or when( 4 < 3 ) timeout( 101 ) {
-		8;
-	}
-	or when( 5 < 3 ) else {
-		9;
-	}
-
-	//---------------------------------------
-	when( 6 < 3 ) waitfor( f3, a, a, a ) {
-		10;
-	}
- 	or when( 7 < 3 ) waitfor( f1, a  ) {
-		11;
-	}
-	or else {
-		12;
-	}
-
-	//---------------------------------------
-	when( 8 < 3 ) waitfor( f3, a, a ) {
-		13;
-	}
- 	or waitfor( f1, a  ) {
-		14;
-	}
-	or when( 9 < 3 ) timeout( 102 ) {
-		15;
-	}
-
-	//---------------------------------------
-	when( 10 < 3 ) waitfor( f1, a ) {
-		16;
-	}
- 	or waitfor( f2, a, a ) {
-		17;
-	}
-	or timeout( 103 ) {
-		18;
-	}
-	or when( 11 < 3 ) else {
-		19;
-	}
-}
-
-int main() {
-
-}
Index: c/tests/concurrent/waitfor/parse2.c
===================================================================
--- src/tests/concurrent/waitfor/parse2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,249 +1,0 @@
-// 
-// 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.
-// 
-// waitfor.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Aug 30 17:53:29 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 30 17:55:17 2017
-// Update Count     : 2
-// 
-
-#include <stdbool.h>
-
-int fred() {
-	int x, z;
-
-	// test waitfor and when
-
-	waitfor( x );
-
-	waitfor( x ) {
-	}
-
-	waitfor( x, z ) {
-	}
-
-	when( true ) waitfor( x );
-
-	when( true ) waitfor( x ) {
-	}
-
-	waitfor( x );
-	or waitfor( y );
-
-	waitfor( x, z );
-	or waitfor( y );
-
-	when( true ) waitfor( x );
-	or when( true ) waitfor( y );
-
-	when( true ) waitfor( x, z );
-	or when( true ) waitfor( y );
-
-	waitfor( x ) {
-	} or waitfor( y ) {
-	}
-
-	waitfor( x, z ) {
-	} or waitfor( y ) {
-	}
-
-	when( true ) waitfor( x ) {
-	} or when( true ) waitfor( y ) {
-	}
-
-	waitfor( x );
-	or waitfor( y ) {
-	}
-
-	when( true ) waitfor( x );
-	or when( true ) waitfor( y ) {
-	}
-
-	waitfor( x ) {
-	} or waitfor( y );
-
-	when( true ) waitfor( x ) {
-	} or when( true ) waitfor( y );
-
-	// test when, waitfor and else
-
-	waitfor( x );
-	or else;
-
-	when( true ) waitfor( x );
-	or else;
-
-	when( true ) waitfor( x, z );
-	or else;
-
-	waitfor( x ) {
-	} or else {
-	}
-
-	when( true ) waitfor( x ) {
-	} or else {
-	}
-
-	waitfor( x );
-	or else {
-	}
-
-	when( true ) waitfor( x );
-	or else {
-	}
-
-	when( true ) waitfor( x, z );
-	or else {
-	}
-
-	waitfor( x ) {
-	} or else;
-
-	when( true ) waitfor( x ) {
-	} or else;
-
-	waitfor( x );
-	or when( true ) else;
-
-	when( true ) waitfor( x );
-	or when( true ) else;
-
-	when( true ) waitfor( x, z );
-	or when( true ) else;
-
-	waitfor( x ) {
-	} or when( true ) else {
-	}
-
-	when( true ) waitfor( x ) {
-	} or when( true ) else {
-	}
-
-	waitfor( x );
-	or when( true ) else {
-	}
-
-	when( true ) waitfor( x );
-	or when( true ) else {
-	}
-
-	when( true ) waitfor( x, z );
-	or when( true ) else {
-	}
-
-	waitfor( x ) {
-	} or when( true ) else;
-
-	when( true ) waitfor( x ) {
-	} or when( true ) else;
-
-	// test when, waitfor and timeout
-
-	waitfor( x );
-	or timeout( 3 );
-
-	waitfor( x, z );
-	or timeout( 3 );
-
-	when( true ) waitfor( x );
-	or timeout( 3 );
-
-	waitfor( x ) {
-	} or timeout( 3 ) {
-	}
-
-	when( true ) waitfor( x ) {
-	} or timeout( 3 ) {
-	}
-
-	when( true ) waitfor( x, z ) {
-	} or timeout( 3 ) {
-	}
-
-	when( true ) waitfor( x ) {
-	} or when ( true ) timeout( 3 ) {
-	}
-
-	when( true ) waitfor( x, z ) {
-	} or when ( true ) timeout( 3 ) {
-	}
-
-	waitfor( x );
-	or timeout( 3 ) {
-	}
-
-	when( true ) waitfor( x );
-	or timeout( 3 ) {
-	}
-
-	when( true ) waitfor( x );
-	or when( true ) timeout( 3 ) {
-	}
-
-	waitfor( x ) {
-	} or timeout( 3 );
-
-	when( true ) waitfor( x ) {
-	} or timeout( 3 );
-
-	when( true ) waitfor( x ) {
-	} or when( true ) timeout( 3 );
-
-	// test when, waitfor, timeout and else
-
-	waitfor( x ) {
-	} or timeout( 3 ) {
-	} or when( true ) else {}
-
-	when( true ) waitfor( x ) {
-	} or timeout( 3 ) {
-	} or when( true ) else {}
-
-	waitfor( x ) {
-	} or timeout( 3 ) {
-	} or when( true ) else {}
-
-	waitfor( x ) {
-	} or when( true ) timeout( 3 ) {
-	} or when( true ) else {}
-
-	when( true ) waitfor( x ) {
-	} or timeout( 3 ) {
-	} or when( true ) else {}
-
-	waitfor( x ) {
-	} or when( true ) timeout( 3 ) {
-	} or when( true ) else {}
-
-	when( true ) waitfor( x ) {
-	} or when( true ) timeout( 3 ) {
-	} or when( true ) else {}
-
-	// test quasi-keywords "or" and "timeout"
-
-	int or, timeout;
-	waitfor( timeout, 7 ) 3;
-	waitfor( timeout, 7 ) 3; or waitfor( timeout, 7 ) 3;
-	when( or ) waitfor( or, ) { 4; } or timeout( 1 ) 3;
-	when( 3 ) waitfor( or, 2 ) 4; or else 4;
-	when( 3 ) waitfor( or, 3 ) 4; or when( or ) timeout( or ) 4; or when( or ) else timeout;
-	when( 3 ) waitfor( or, or ) 3; or when( or ) waitfor( or, timeout ) 4; or else 4;
-	when( 3 ) waitfor( or, or ) 3; or waitfor( or, 9 ) 4; or when( or ) timeout( timeout ) 4;
-	when( 3 ) waitfor( or, 3 ) 3; or waitfor( or, 7 ) or; or timeout( 1 ) or; or when( 3 ) else or;
-
-	// test else selection
-
-	if ( or > timeout ) waitfor( or ) 3;
-	else waitfor( timeout ) 4;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa waitfor.c" //
-// End: //
Index: c/tests/concurrent/waitfor/recurse.c
===================================================================
--- src/tests/concurrent/waitfor/recurse.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,145 +1,0 @@
-//----------------------------------------------------------------
-// Recursion test
-// Ensures that proper ordering occurs between the nested waitfors
-//-----------------------------------------------------------------
-
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <stdlib>
-#include <thread>
-
-#include <stdbool.h>
-#include <time.h>
-
-static const unsigned long N = 5_000ul;
-
-static inline void rand_yield() { yield(random( 10 )); }
-
-enum state_t { FIRST, SECOND, THIRD, LAST, STOP };
-void shuffle(enum state_t * array)
-{
-	int i;
-	for (i = 0; i < 4; i++)
-	{
-		int j = random( 4 );
-		enum state_t t = array[j];
-		array[j] = array[i];
-		array[i] = t;
-	}
-}
-
-
-monitor global_t {
-	int counter;
-	volatile bool ready;
-	state_t actions[4];
-};
-
-void ?{} ( global_t & this ) {
-	this.counter = 0;
-	this.ready = false;
-	this.actions[0] = FIRST;
-	this.actions[1] = SECOND;
-	this.actions[2] = THIRD;
-	this.actions[3] = LAST;
-	shuffle( this.actions );
-}
-
-void ^?{} ( global_t & mutex this ) {}
-
-global_t global;
-
-state_t call4( global_t & mutex this, int idx ) {
-	sout | "Last";
-
-	rand_yield();
-	this.counter++;
-	this.ready = false;
-	shuffle( this.actions );
-
-	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
-}
-
-state_t call3( global_t & mutex this, int idx ) {
-	sout | "3rd";
-
-	rand_yield();
-	waitfor( call4, this );
-	rand_yield();
-
-	sout | "3rd";
-
-	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
-}
-
-state_t call2( global_t & mutex this, int idx ) {
-	sout | "2nd";
-
-	rand_yield();
-	waitfor( call3, this );
-	rand_yield();
-
-	sout | "2nd";
-
-	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
-}
-
-state_t call1( global_t & mutex this, int idx ) {
-	this.ready = true;
-
-	sout | this.counter | "1st";
-
-	rand_yield();
-	waitfor( call2, this );
-	rand_yield();
-
-	sout | "1st" | endl;
-
-	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
-}
-
-thread waiter_t{
-	int     idx;
-	state_t state;
-};
-
-void ^?{} ( waiter_t & mutex this ) {}
-void ?{} ( waiter_t & this ) {}
-
-void ?{}( waiter_t & this, int idx, state_t state ) {
-	this.idx   = idx;
-	this.state = state;
-}
-
-
-void main( waiter_t & this ) {
-	while( this.state != STOP ) {
-		rand_yield();
-
-		switch( this.state ) {
-			case FIRST  :                                     this.state = call1( global, this.idx ); break;
-			case SECOND : while( !global.ready ) { yield(); } this.state = call2( global, this.idx ); break;
-			case THIRD  : while( !global.ready ) { yield(); } this.state = call3( global, this.idx ); break;
-			case LAST   : while( !global.ready ) { yield(); } this.state = call4( global, this.idx ); break;
-			case STOP   : serr | "This should not happen" | endl;
-		}
-	}
-}
-
-static waiter_t * volatile the_threads;
-
-int main() {
-	srandom( time(NULL) );
-	sout | "Starting" | endl;
-	{
-		waiter_t waiters[4] = {
-			{ 0, FIRST  },
-			{ 1, SECOND },
-			{ 2, THIRD  },
-			{ 3, LAST   }
-		};
-		the_threads = waiters;
-	}
-	sout | "Stopping" | endl;
-}
Index: c/tests/concurrent/waitfor/simple.c
===================================================================
--- src/tests/concurrent/waitfor/simple.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,85 +1,0 @@
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <stdlib>
-#include <thread>
-
-#include <time.h>
-
-static const unsigned long N = 500ul;
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-monitor global_t {};
-
-global_t globalA;
-
-thread Acceptor {};
-thread Acceptee {};
-
-volatile bool done;
-
-//----------------------------------------------------------------------------------------------------
-// Acceptor
-void do_notify( global_t * mutex a );
-
-void do_wait( global_t * mutex a ) {
-	sout | "Waiting to accept" | endl;
-	yield( random( 10 ) );
-
-	sout | "Accepting" | endl;
-
-	__acceptable_t acceptable;
-	acceptable.func          = (fptr_t)do_notify;
-	acceptable.count         = 1;
-	acceptable.monitors      = &a;
-
-	__waitfor_internal( 1, &acceptable );
-
-	sout | "Accepted" | endl;
-	yield( random( 10 ) );
-}
-
-void main( Acceptor* this ) {
-	for( int i = 0; i < N; i++ ) {
-		do_wait( &globalA );
-		sout | i | endl;
-	}
-
-	done = true;
-}
-
-//----------------------------------------------------------------------------------------------------
-// Acceptee
-void do_notify( global_t * mutex a ) {
-
-}
-
-void main( Acceptee* this ) {
-	while( !done ) {
-		yield( random( 10 ) );
-		do_notify( &globalA );
-		yield( random( 10 ) );
-	}
-}
-
-//----------------------------------------------------------------------------------------------------
-// Main
-int main(int argc, char* argv[]) {
-	done = false;
-	srandom( time( NULL ) );
-	printf("%p\n", &globalA);
-	sout | "Starting" | endl;
-	{
-		Acceptor r;
-		Acceptee e[13];
-
-	}
-	sout | "Done" | endl;
-}
Index: c/tests/concurrent/waitfor/statment.c
===================================================================
--- src/tests/concurrent/waitfor/statment.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,136 +1,0 @@
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <thread>
-
-#include <stdbool.h>
-
-monitor M {
-	int index;
-	int last_val;
-	int calls[7];
-};
-
-volatile bool start = false;
-
-void ?{}( M & this ) {
-	this.index = 0;
-	this.last_val = 0;
-	for( int i = 0; i < 7; i++ ) {
-		this.calls[i] = 100; //10_000;
-	}
-}
-
-void ^?{} ( M &  mutex this ) {}
-
-int get_index( M & mutex this ) {
-	this.index += 1;
-	return this.index;
-}
-
-bool call1( M & mutex this ) {
-	this.last_val = 1;
-	this.calls[0] -= 1;
-	return this.calls[0] > 0;
-}
-
-bool call2( M & mutex this ) {
-	this.last_val = 2;
-	this.calls[1] -= 1;
-	return this.calls[1] > 0;
-}
-
-bool call3( M & mutex this ) {
-	this.last_val = 3;
-	this.calls[2] -= 1;
-	return this.calls[2] > 0;
-}
-
-bool call4( M & mutex this ) {
-	this.last_val = 4;
-	this.calls[3] -= 1;
-	return this.calls[3] > 0;
-}
-
-bool call5( M & mutex this ) {
-	this.last_val = 5;
-	this.calls[4] -= 1;
-	return this.calls[4] > 0;
-}
-
-bool call6( M & mutex this ) {
-	this.last_val = 6;
-	this.calls[5] -= 1;
-	return this.calls[5] > 0;
-}
-
-bool call7( M & mutex this ) {
-	this.last_val = 7;
-	this.calls[6] -= 1;
-	return this.calls[6] > 0;
-}
-
-M m;
-thread caller{};
-
-bool call( int index ) {
-	switch( index ) {
-		case 1: return call1( m );
-		case 2: return call2( m );
-		case 3: return call3( m );
-		case 4: return call4( m );
-		case 5: return call5( m );
-		case 6: return call6( m );
-		case 7: return call7( m );
-		default :
-			serr | "Incorrect index" | index | endl;
-			abort();
-	}
-}
-
-void main( caller & this ) {
-	int index = get_index( m );
-	while( !start ) yield();
-	while( call( index ) );
-}
-
-void do_wait( M & mutex this ) {
-	bool done = false;
-
-	start = true;
-
-	while( !done ) {
-		   waitfor( get_index, this );
-		or waitfor( call1, this ) { sout | "Statement" | endl; if( this.last_val != 1 ) { serr | "Incorrect index: expected" | 1 | "got" | this.last_val | endl; } }
-		or waitfor( call2, this ) { sout | "Statement" | endl; if( this.last_val != 2 ) { serr | "Incorrect index: expected" | 2 | "got" | this.last_val | endl; } }
-		or waitfor( call3, this ) { sout | "Statement" | endl; if( this.last_val != 3 ) { serr | "Incorrect index: expected" | 3 | "got" | this.last_val | endl; } }
-		or waitfor( call4, this ) { sout | "Statement" | endl; if( this.last_val != 4 ) { serr | "Incorrect index: expected" | 4 | "got" | this.last_val | endl; } }
-		or waitfor( call5, this ) { sout | "Statement" | endl; if( this.last_val != 5 ) { serr | "Incorrect index: expected" | 5 | "got" | this.last_val | endl; } }
-		or waitfor( call6, this ) { sout | "Statement" | endl; if( this.last_val != 6 ) { serr | "Incorrect index: expected" | 6 | "got" | this.last_val | endl; } }
-		or waitfor( call7, this ) { sout | "Statement" | endl; if( this.last_val != 7 ) { serr | "Incorrect index: expected" | 7 | "got" | this.last_val | endl; } }
-
-		done = true;
-		for( int i = 0; i < 7; i++ ) {
-			if( this.calls[i] > 0 ) {
-				done = false;
-				break;
-			}
-		}
-	}
-}
-
-thread waiter{};
-
-void main( waiter & this ) {
-	do_wait( m );
-}
-
-int main() {
-	processor p[2];
-	sout | "Starting" | endl;
-	{
-		caller c[7];
-		waiter w;
-	}
-	sout | "Stopping" | endl;
-}
Index: c/tests/concurrent/waitfor/when.c
===================================================================
--- src/tests/concurrent/waitfor/when.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,87 +1,0 @@
-//----------------------------------------------------------------
-// When test
-// Ensures that when clauses on waitfor are respected
-//-----------------------------------------------------------------
-
-#include <fstream>
-#include <kernel>
-#include <monitor>
-#include <stdlib>
-#include <thread>
-
-#include <stdbool.h>
-#include <time.h>
-
-static const unsigned long N = 4_998ul;
-
-static inline void rand_yield() { yield(random( 10 )); }
-
-monitor global_t {
-	int last_call;
-	bool done;
-};
-
-void ?{} ( global_t & this ) {
-	this.last_call = 6;
-	this.done = false;
-}
-
-void ^?{} ( global_t & mutex this ) {}
-
-global_t global;
-
-bool call1( global_t & mutex this ) { this.last_call = 1; return this.done; }
-bool call2( global_t & mutex this ) { this.last_call = 2; return this.done; }
-bool call3( global_t & mutex this ) { this.last_call = 3; return this.done; }
-bool call4( global_t & mutex this ) { this.last_call = 4; return this.done; }
-bool call5( global_t & mutex this ) { this.last_call = 5; return this.done; }
-bool call6( global_t & mutex this ) { this.last_call = 6; return this.done; }
-
-thread caller_t{};
-void main( caller_t & this ) {
-	while( true ) {
-		rand_yield();
-		if( call1( global ) ) return;
-		rand_yield();
-		if( call2( global ) ) return;
-		rand_yield();
-		if( call3( global ) ) return;
-		rand_yield();
-		if( call4( global ) ) return;
-		rand_yield();
-		if( call5( global ) ) return;
-		rand_yield();
-		if( call6( global ) ) return;
-	}
-}
-
-void arbiter( global_t & mutex this ) {
-	for( int i = 0; i < N; i++ ) {
-		   when( this.last_call == 6 ) waitfor( call1, this ) { if( this.last_call != 1) { serr | "Expected last_call to be 1 got" | this.last_call | endl; } }
-		or when( this.last_call == 1 ) waitfor( call2, this ) { if( this.last_call != 2) { serr | "Expected last_call to be 2 got" | this.last_call | endl; } }
-		or when( this.last_call == 2 ) waitfor( call3, this ) { if( this.last_call != 3) { serr | "Expected last_call to be 3 got" | this.last_call | endl; } }
-		or when( this.last_call == 3 ) waitfor( call4, this ) { if( this.last_call != 4) { serr | "Expected last_call to be 4 got" | this.last_call | endl; } }
-		or when( this.last_call == 4 ) waitfor( call5, this ) { if( this.last_call != 5) { serr | "Expected last_call to be 5 got" | this.last_call | endl; } }
-		or when( this.last_call == 5 ) waitfor( call6, this ) { if( this.last_call != 6) { serr | "Expected last_call to be 6 got" | this.last_call | endl; } }
-
-		sout | this.last_call | endl;
-	}
-
-	this.done = true;
-}
-
-thread arbiter_t{};
-void main( arbiter_t & this ) {
-	arbiter( global );
-}
-
-int main() {
-	srandom( time(NULL) );
-	sout | "Starting" | endl;
-	{
-		arbiter_t arbiter;
-		caller_t callers[7];
-
-	}
-	sout | "Stopping" | endl;
-}
Index: c/tests/config.py.in
===================================================================
--- src/tests/config.py.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,9 +1,0 @@
-#!/usr/bin/env python
-# encoding: utf-8
-"""
-config.py
-"""
-
-SRCDIR   = "@srcdir@"
-BUILDDIR = "@builddir@"
-HOSTARCH = "@host_cpu@"
Index: c/tests/context.c
===================================================================
--- src/tests/context.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,19 +1,0 @@
-// trait declaration
-
-trait has_q( otype T ) {
-	T q( T );
-};
-
-forall( otype z | has_q( z ) ) void f() {
-	trait has_r( otype T, otype U ) {
-		T r( T, T (T,U) );
-	};
-
-	extern otype x, y | has_r( x, y );
-}
-
-//Dummy main
-int main(int argc, char const *argv[])
-{
-	return 0;
-}
Index: c/tests/coroutine/.expect/fibonacci.txt
===================================================================
--- src/tests/coroutine/.expect/fibonacci.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,10 +1,0 @@
-0 0
-1 1
-1 1
-2 2
-3 3
-5 5
-8 8
-13 13
-21 21
-34 34
Index: c/tests/coroutine/.expect/fmtLines.txt
===================================================================
--- src/tests/coroutine/.expect/fmtLines.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(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: c/tests/coroutine/.expect/pingpong.txt
===================================================================
--- src/tests/coroutine/.expect/pingpong.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(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: c/tests/coroutine/.expect/prodcons.txt
===================================================================
--- src/tests/coroutine/.expect/prodcons.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(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: c/tests/coroutine/.expect/runningTotal.txt
===================================================================
--- src/tests/coroutine/.expect/runningTotal.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,10 +1,0 @@
-0 0
-1 1
-2 3
-3 6
-4 10
-5 15
-6 21
-7 28
-8 36
-9 45
Index: c/tests/coroutine/.in/fmtLines.txt
===================================================================
--- src/tests/coroutine/.in/fmtLines.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,67 +1,0 @@
-// 
-// 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.
-// 
-// fmtLines.cc -- 
-// 
-// Author           : Peter A. Buhr
-// 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
-// 
-
-#include <fstream>
-#include <coroutine>
-
-coroutine Format {
-	char ch;											// used for communication
-	int g, b;											// global because used in destructor
-};
-
-void ?{}( Format & fmt ) {
-    resume( fmt );										// start coroutine
-}
-
-void ^?{}( Format & fmt ) {
-    if ( fmt.g != 0 || fmt.b != 0 ) sout | endl;
-}
-
-void main( Format & fmt ) {
-	for ( ;; ) {										// for as many characters
-		for ( fmt.g = 0; fmt.g < 5; fmt.g += 1 ) {		// groups of 5 blocks
-			for ( fmt.b = 0; fmt.b < 4; fmt.b += 1 ) {	// blocks of 4 characters
-				for ( ;; ) {							// for newline characters
-					suspend();
-					if ( fmt.ch != '\n' ) break;		// ignore newline
-				} // for
-				sout | fmt.ch;							// print character
-			} // for
-			sout | "  ";								// print block separator
-		} // for
-		sout | endl;									// print group separator
-	} // for
-} // main
-
-void prt( Format & fmt, char ch ) {
-    fmt.ch = ch;
-    resume( fmt );
-} // prt
-
-int main() {
-	Format fmt;
-	char ch;
-
-	for ( ;; ) {
-		sin | ch;										// read one character
-	  if ( eof( sin ) ) break;							// eof ?
-		prt( fmt, ch );
-	} // for
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa fmtLines.c" //
-// End: //
Index: c/tests/coroutine/fibonacci.c
===================================================================
--- src/tests/coroutine/fibonacci.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,49 +1,0 @@
-//
-// 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.
-//
-// fibonacci.c -- 3-state finite-state machine
-
-//
-// Author           : Thierry Delisle
-// Created On       : Thu Jun  8 07:29:37 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Apr 27 08:55:31 2018
-// Update Count     : 19
-//
-
-#include <fstream>
-#include <coroutine>
-
-coroutine Fibonacci { int fn; };						// used for communication
-
-void main( Fibonacci & fib ) with( fib ) {				// called on first resume
-	int fn1, fn2;										// retained between resumes
-	fn = 0;  fn1 = fn;									// 1st case
-	suspend();											// restart last resume
-	fn = 1;  fn2 = fn1;  fn1 = fn;						// 2nd case
-	suspend();											// restart last resume
-	for ( ;; ) {
-		fn = fn1 + fn2;  fn2 = fn1;  fn1 = fn;			// general case
-		suspend();										// restart last resume
-	} // for
-}
-
-int next( Fibonacci & fib ) with( fib ) {
-	resume( fib );										// restart last suspend
-	return fn;
-}
-
-int main() {
-	Fibonacci f1, f2;
-	for ( int i = 1; i <= 10; i += 1 ) {
-		sout | next( f1 ) | next( f2 ) | endl;
-	} // for
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa fibonacci.c" //
-// End: //
Index: c/tests/coroutine/fmtLines.c
===================================================================
--- src/tests/coroutine/fmtLines.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,65 +1,0 @@
-// 
-// 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.
-// 
-// fmtLines.cc -- format characters into blocks of 4 and groups of 5 blocks per line
-// 
-// Author           : Peter A. Buhr
-// Created On       : Sun Sep 17 21:56:15 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 15 12:25:33 2018
-// Update Count     : 42
-// 
-
-#include <fstream>
-#include <coroutine>
-
-coroutine Format {
-	char ch;											// used for communication
-	int g, b;											// global because used in destructor
-};
-
-void main( Format & fmt ) with( fmt ) {
-	for ( ;; ) {										// for as many characters
-		for ( g = 0; g < 5; g += 1 ) {					// groups of 5 blocks
-			for ( b = 0; b < 4; b += 1 ) {				// blocks of 4 characters
-				for ( ;; ) {							// for newline characters
-					suspend();
-					if ( ch != '\n' ) break;			// ignore newline
-				} // for
-				sout | ch;								// print character
-			} // for
-			sout | "  ";								// print block separator
-		} // for
-		sout | endl;									// print group separator
-	} // for
-} // main
-
-void ?{}( Format & fmt ) {
-	resume( fmt );										// prime (start) coroutine
-}
-
-void ^?{}( Format & fmt ) with( fmt ) {
-	if ( g != 0 || b != 0 ) sout | endl;
-}
-
-void format( Format & fmt ) {
-	resume( fmt );
-} // prt
-
-int main() {
-	Format fmt;
-
-	eof: for ( ;; ) {									// read until end of file
-		sin | fmt.ch;									// read one character
-	  if ( eof( sin ) ) break eof;						// eof ?
-		format( fmt );									// push character for formatting
-	} // for
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa fmtLines.c" //
-// End: //
Index: c/tests/coroutine/pingpong.c
===================================================================
--- src/tests/coroutine/pingpong.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,55 +1,0 @@
-// 
-// 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.
-// 
-// pingpong.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Sep 20 11:55:23 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Sep 20 13:41:39 2017
-// Update Count     : 26
-// 
-
-#include <coroutine>
-#include <fstream>
-
-coroutine PingPong {
-	const char * name;
-	/* const */ unsigned int N;
-	PingPong * part;
-};
-
-void ?{}( PingPong & this, const char * name, unsigned int N, PingPong & part ) {
-	this.name = name;
-	this.N = N;
-	this.part = &part;
-}
-void ?{}( PingPong & this, const char * name, unsigned int N ) {
-	this{ name, N, *(PingPong *)0 };
-}
-void cycle( PingPong & pingpong ) {
-	resume( pingpong );
-}
-void partner( PingPong & this, PingPong & part ) {
-	this.part = &part;
-	resume( this );
-}
-void main( PingPong & pingpong ) {						// ping's starter ::main, pong's starter ping
-	for ( unsigned int i = 0; i < pingpong.N; i += 1 ) {
-		sout | pingpong.name | endl;
-		cycle( *pingpong.part );
-	} // for
-}
-int main() {
-	enum { N = 20 };
-	PingPong ping = { "ping", N }, pong = { "pong", N, ping };
-	partner( ping, pong );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa pingpong.c" //
-// End: //
Index: c/tests/coroutine/prodcons.c
===================================================================
--- src/tests/coroutine/prodcons.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,100 +1,0 @@
-// 
-// 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.
-// 
-// prodcons.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Sep 18 12:23:39 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jan  2 12:17:01 2018
-// Update Count     : 47
-// 
-
-#include <fstream>
-#include <coroutine>
-#include <stdlib>										// random
-#include <unistd.h>										// getpid
-
-coroutine Cons;											// forward
-int delivery( Cons & cons, int p1, int p2 );
-void stop( Cons & cons );
-
-coroutine Prod {
-	Cons * c;
-	int N, money, receipt;
-};
-void main( Prod & prod ) with( prod ) {					// starter ::main
-	// 1st resume starts here
-	for ( int i = 0; i < N; i += 1 ) {
-		int p1 = random( 100 );
-		int p2 = random( 100 );
-		sout | p1 | " " | p2 | endl;
-		int status = delivery( *c, p1, p2 );
-		sout | " $" | money | endl;
-		sout | status | endl;
-		receipt += 1;
-	}
-	stop( *c );
-	sout | "prod stops" | endl;
-}
-int payment( Prod & prod, int money ) {
-	prod.money = money;
-	resume( prod );										// main 1st time, then
-	return prod.receipt;								// prod in delivery
-}
-void start( Prod & prod, int N, Cons &c ) {
-	prod.N = N;
-	prod.c = &c;
-	prod.receipt = 0;
-	resume( prod );										// activate main
-}
-
-coroutine Cons {
-	Prod * p;
-	int p1, p2, status;
-	bool done;
-};
-void ?{}( Cons & cons, Prod & p ) {
-	cons.p = &p;
-	cons.status = 0;
-	cons.done = false;
-}
-void ^?{}( Cons & cons ) {}
-void main( Cons & cons ) with( cons ) {					// starter prod
-	// 1st resume starts here
-	int money = 1, receipt;
-	for ( ; ! done; ) {
-		sout | p1 | " " | p2 | endl;
-		sout | " $" | money | endl;
-		status += 1;
-		receipt = payment( *p, money );
-		sout | " #" | receipt | endl;
-		money += 1;
-	}
-	sout | "cons stops" | endl;
-}
-int delivery( Cons & cons, int p1, int p2 ) {
-	cons.p1 = p1;
-	cons.p2 = p2;
-	resume( cons );										// main 1st time, then
-	return cons.status;									// cons in payment
-}
-void stop( Cons & cons ) {
-	cons.done = true;
-	resume( cons );										// activate payment
-}
-int main() {
-	Prod prod;
-	Cons cons = { prod };
-	srandom( /* getpid() */ 103 );						// fixed seed for testing
-	start( prod, 5, cons );
-	sout | "main stops" | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa prodcons.c" //
-// End: //
Index: c/tests/coroutine/runningTotal.c
===================================================================
--- src/tests/coroutine/runningTotal.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,51 +1,0 @@
-// 
-// 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.
-// 
-// runningTotal.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Dec  6 08:05:27 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Dec  6 08:09:24 2017
-// Update Count     : 2
-// 
-
-#include <fstream>
-#include <coroutine>
-
-coroutine RunTotal {									// input numbers and return running total
-	int input, total;									// communication
-};
-
-void ?{}( RunTotal & rntl ) { rntl.total = 0; }
-
-void update( RunTotal & rntl, int input ) with( rntl ) { // helper
-	total += input;										// remember between activations
-	suspend();											// inactivate on stack
-}
-
-void main( RunTotal & rntl ) with( rntl ) {
-	for ( ;; ) {
-		update( rntl, input );
-	} // for
-}
-
-int add( RunTotal & rntl, int input ) {
-	rntl.input = input;									// pass input to coroutine
-	resume( rntl );
-	return rntl.total;									// return total from coroutine
-}
-int main() {
-	RunTotal rntl;
-	for ( int i = 0; i < 10; i += 1 ) {
-		sout | i | add( rntl, i ) | endl;
-	} // for
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa runningTotal.c" //
-// End: //
Index: c/tests/counter.c
===================================================================
--- src/tests/counter.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,40 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// counter.c -- 
-// 
-// Author           : Aaron B. Moss
-// Created On       : Thu Feb 22 15:27:00 2018
-// Last Modified By : Aaron B. Moss
-// Last Modified On : Thu Feb 22 15:27:00 2018
-// Update Count     : 1
-// 
-
-// Tests unified increment/decrement builtin functions.
-// Could be extended for other arithmetic unifications
-
-struct counter { int x; };
-
-counter& ?+=?( counter& c, one_t ) { ++c.x; return c; }
-
-counter& ?-=?( counter& c, one_t ) { --c.x; return c; }
-
-int main() {
-    counter c = { 42 };
-    c += 1;
-    ++c;
-    c++;
-    printf("%d\n", c.x);
-    c -= 1;
-    --c;
-    c--;
-    printf("%d\n", c.x);
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa counter.c" //
-// End: //
Index: c/tests/declarationErrors.c
===================================================================
--- src/tests/declarationErrors.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,45 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// declarationErrors.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Aug 17 08:23:43 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Sep  9 22:57:52 2016
-// Update Count     : 31
-// 
-
-static short int volatile static const x1;				// duplicate static
-extern short int static volatile const x2;				// multiple extern & static
-extern short int auto static volatile static extern const x3; // duplicate and multiple storage classes
-struct { int i; } const static volatile static x4;		// duplicate static
-struct { int i; } const static volatile const static volatile x5; // duplicate static & const & volatile
-typedef int Int;
-static Int volatile static const x6;					// duplicate static
-
-const static inline const volatile int f01();			// duplicate const
-volatile inline const volatile static int f02();		// duplicate volatile
-const inline const volatile int static f03();			// duplicate const
-volatile inline static const volatile int f04();		// duplicate volatile
-const static int const inline volatile f05();			// duplicate const
-volatile int static const volatile inline f06();		// duplicate volatile
-const static const int volatile inline f07();			// duplicate const
-volatile static const int inline const volatile f08();	// duplicate volatile
-
-volatile static const int inline const volatile f09();	// duplicate volatile
-_Atomic _Atomic _Atomic volatile restrict static const const int inline restrict const volatile f09();	// duplicate volatile
-
-//Dummy main
-int main(int argc, char const *argv[])
-{
-	return 0;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa declarationErrors.c" //
-// End: //
Index: c/tests/declarationSpecifier.c
===================================================================
--- src/tests/declarationSpecifier.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,99 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// declarationSpecifier.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Aug 17 08:21:04 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 17 08:24:33 2016
-// Update Count     : 2
-// 
-
-typedef short int Int;
-
-const short int volatile x1;
-static const short int volatile x2;
-const static short int volatile x3;
-const static volatile short int x4;
-const short int static volatile x5;
-const short int volatile static x6;
-const short volatile int static x7;
-short int volatile static const x8;
-
-const volatile struct { int i; } x10;
-const struct { int i; } volatile x11;
-struct { int i; } const volatile x12;
-static const volatile struct { int i; } x13;
-const static struct { int i; } volatile x14;
-struct { int i; } static const volatile x15;
-struct { int i; } const static volatile x16;
-struct { int i; } const volatile static x17;
-
-const Int volatile x20;
-static const Int volatile x21;
-const static Int volatile x22;
-const static Int volatile x23;
-const Int static volatile x24;
-const Int volatile static x25;
-const volatile Int static x26;
-Int volatile static const x27;
-
-const volatile struct { Int i; } x29;
-const struct { Int i; } volatile x30;
-struct { Int i; } const volatile x31;
-static const volatile struct { Int i; } x32;
-const static struct { Int i; } volatile x33;
-struct { Int i; } static const volatile x34;
-struct { Int i; } const static volatile x35;
-struct { Int i; } const volatile static x36;
-
-static inline const volatile int f11();
-inline const volatile static int f12();
-inline const volatile int static f13();
-inline static const volatile int f14();
-static const inline volatile int f15();
-static const volatile inline int f16();
-static const volatile int inline f17();
-static const int inline volatile f18();
-
-short static inline const volatile int f21();
-inline short const volatile static int f22();
-inline const short volatile int static f23();
-inline static const short volatile int f24();
-static const inline volatile short int f25();
-static const volatile inline int short f26();
-static const volatile int inline short f27();
-static const int inline volatile short f28();
-
-static inline const volatile struct { int i; } f31();
-inline const volatile static struct { int i; } f32();
-inline const volatile struct { int i; } static f33();
-inline static const volatile struct { int i; } f34();
-static const inline volatile struct { int i; } f35();
-static const volatile inline struct { int i; } f36();
-static const volatile struct { int i; } inline f37();
-static const struct { int i; } inline volatile f38();
-
-static inline const volatile Int f41();
-inline const volatile static Int f42();
-inline const volatile Int static f43();
-inline static const volatile Int f44();
-static const inline volatile Int f45();
-static const volatile inline Int f46();
-static const volatile Int inline f47();
-static const Int inline volatile f48();
-
-//Dummy main
-int main(int argc, char const *argv[])
-{
-	return 0;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa declarationSpecifier.c" //
-// End: //
Index: c/tests/designations.c
===================================================================
--- src/tests/designations.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,263 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// designations.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Thu Jun 29 15:26:36 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 27 11:46:35 2017
-// Update Count     : 3
-//
-
-// Note: this test case has been crafted so that it compiles with both cfa and with gcc without any modifications.
-// In particular, since the syntax for designations in Cforall differs from that of C, preprocessor substitution
-// is used for the designation syntax
-#ifdef __cforall
-#define DES :
-#else
-int printf(const char *, ...);
-#define DES =
-#endif
-
-const int indentAmt = 2;
-void indent(int level) {
-	for (int i = 0; i < level; ++i) {
-		printf(" ");
-	}
-}
-
-// A contains fields with different types (int vs. int *)
-struct A {
-	int x, y;
-	int * ptr;
-};
-void printA(struct A a, int level) {
-	indent(level);
-	printf("(A){ %d %d %p }\n", a.x, a.y, a.ptr);
-}
-
-// B contains struct members
-struct B {
-	struct A a0, a1;
-};
-void printB(struct B b, int level) {
-	indent(level);
-	printf("(B){\n");
-	printA(b.a0, level+indentAmt);
-	printA(b.a1, level+indentAmt);
-	indent(level);
-	printf("}\n");
-}
-
-// C contains an array - tests that after 3 ints, the members of B are initialized.
-struct C {
-	int arr[3];
-	struct B b;
-};
-void printC(struct C c, int level) {
-	indent(level);
-	printf("(C){\n");
-	indent(level+indentAmt);
-	printf("(int[]{ %d %d %d }\n", c.arr[0], c.arr[1], c.arr[2]);
-	printB(c.b, level+indentAmt);
-	indent(level);
-	printf("}\n");
-}
-
-// D contains an unnamed aggregate - tests that this doesn't interfere with initialization.
-struct D {
-	struct {
-		int x;
-	};
-};
-void printD(struct D d, int level) {
-	indent(level);
-	printf("(D){ %d }\n", d.x);
-}
-
-// E tests unions
-union E {
-	struct A a;
-	struct B b;
-	struct C c;
-	struct D d;
-	int i;
-};
-
-struct Fred {
-    double i[3];
-    int j;
-    struct Mary {
-	struct Jane {
-	    double j;
-	} j;
-	double i;
-    } m;
-};
-struct Fred s1 @= { .m.j : 3 };
-struct Fred s2 @= { .i : { [2] : 2 } };
-
-int main() {
-	// simple designation case - starting from beginning of structure, leaves ptr default-initialized (zero)
-	struct A y0 = {
-		.x DES 2,
-		.y DES 3
-	};
-
-	// simple initializaiton case - initialize all elements explicitly with no designations
-	struct A y1 = {
-		2, 3, 0
-	};
-
-
-	// use designation to move to member y, leaving x default-initialized (zero)
-	struct A y2 = {
-		.y DES 3,
-		0
-	};
-
-#if ERROR
-	struct A yErr0 = {
-		{} // error - empty scalar initializer is illegal
-	};
-#endif
-
-	printf("=====A=====\n");
-	printA(y0, 0);
-	printA(y1, 0);
-	printA(y2, 0);
-	printf("=====A=====\n\n");
-
-	// initialize only first element (z0.a.x), leaving everything else default-initialized (zero), no nested curly-braces
-	struct B z0 = { 5 };
-
-	// some nested curly braces, use designation to 'jump around' within structure, leaving some members default-initialized
-	struct B z1 = {
-		{ 3 }, // z1.a0
-		{ 4 }, // z1.a1
-		.a0 DES { 5 }, // z1.a0
-		{ 6 }, // z1.a1
-		.a0.y DES 2, // z1.a0.y
-		0, // z1.a0.ptr
-	};
-
-	// z2.a0.y and z2.a0.ptr default-initialized, everything else explicit
-	struct B z2 = {
-		{ 1 },
-		{ 2, 3, 0 }
-	};
-
-	// initialize every member, omitting nested curly braces
-	struct B z3 = {
-		1, 2, 0, 4, 5, 0
-	};
-
-	// no initializer - legal C, but garbage values - don't print this one
-	struct B z4;
-
-	// no curly braces - initialize with object of same type
-	struct B z5 = z2;
-
-	// z6.a0.y and z6.a0.ptr default-initialized, everything else explicit.
-	// no curly braces on z6.a1 initializers
-	struct B z6 = {
-		{ 1 },
-		2, 3, 0
-	};
-
-	printf("=====B=====\n");
-	printB(z0, 0);
-	printB(z1, 0);
-	printB(z2, 0);
-	printB(z3, 0);
-	printB(z5, 0);
-	printB(z6, 0);
-	printf("=====B=====\n\n");
-
-	// TODO: what about extra things in a nested init? are empty structs skipped??
-
-	// test that initializing 'past array bound' correctly moves to next member.
-	struct C c1 = {
-		2, 3, 4,  // arr
-		5, 6, 0,  // b.a0
-		7, 8, 0,  // b.a1
-	};
-
-	printf("=====C=====\n");
-	printC(c1, 0);
-	printf("=====C=====\n\n");
-
-#if ERROR
-	// nested initializer can't refer to same type in C
-	struct C cErr0 = { c1 };
-
-	// must use curly braces to initialize members
-	struct C cErr1 = 2;
-
-	// can't initialize with array compound literal
-	struct C cErr2 = {
-		(int[3]) { 1, 2, 3 }  // error: array initialized from non-constant array expression
-	};
-#endif
-
-#if WARNING
-	// can't initialize array with array - converts to int*
-	int cWarn0_arr[3] = { 1, 2, 3 };
-	struct C cWarn0 = {
-		cWarn0_arr  // warning: initialization makes integer from ptr without cast
-	};
-#endif
-	// array designation
-	int i[2] = { [1] : 3 };
-	// allowed to have 'too many' initialized lists - essentially they are ignored.
-	int i1 = { 3 };
-
-	// doesn't work yet.
-	// designate unnamed object's members
-	// struct D d = { .x DES 3 };
-#if ERROR
-	struct D d1 = { .y DES 3 };
-#endif
-
-	// simple union initialization - initialized first member (e0.a)
-	union E e0 = {
-		y0
-	};
-
-	// simple union initialization - initializes first member (e1.a) - with nested initializer list
-	union E e1 = {
-		{ 2, 3, 0 }
-	};
-
-	// simple union initialization - initializes first member (e2.a) - without nested initializer list
-	union E e2 = {
-		2, 3, 0
-	};
-
-	// move cursor to e4.b.a0.x and initialize until e3.b.a1.ptr inclusive
-	union E e3 = {
-		.b.a0.x DES 2, 3, 0, 5, 6, 0
-	};
-
-	printf("=====E=====\n");
-	printA(e0.a, 0);
-	printA(e1.a, 0);
-	printA(e2.a, 0);
-	printB(e3.b, 0);
-	printf("=====E=====\n\n");
-
-	// special case of initialization: char[] can be initialized with a string literal
-	const char * str0 = "hello";
-	char str1[] = "hello";
-	const char c1[] = "abc";
-	const char c2[] = { 'a', 'b', 'c' };
-	const char c3[][2] = { { 'a', 'b' }, { 'c', 'd'}, { 'c', 'd'} };
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/div.c
===================================================================
--- src/tests/div.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,35 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// div.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Aug  8 16:28:43 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Dec  7 09:06:52 2017
-// Update Count     : 18
-// 
-
-#include <fstream>
-#include <stdlib>										// div
-
-struct T { int i; };
-T ?/?( T t1, T t2 ) { return t1.i / t2.i; }
-T ?%?( T t1, T t2 ) { return t1.i % t2.i; }
-ofstream & ?|?( ofstream & os, T t ) { return os | t.i; }
-
-int main( void ) {
-	sout | "div" | div( 13, 5 ) | div( 13L, 5L ) | div( 13LL, 5LL ) | endl;
-	short s1 = 13, s2 = 5;
-	sout | "div" | div( s1, s2 ) | endl;
-	T t1 = { 13 }, t2 = { 5 };
-	sout | "div" | div( t1, t2 ) | endl;				// polymorphic div
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa div.c" //
-// End: //
Index: c/tests/enum.c
===================================================================
--- src/tests/enum.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,28 +1,0 @@
-//Testing enum declaration
-enum Colours {
-	Red,
-	Yellow,
-	Pink,
-	Blue,
-	Purple,
-	Orange,
-	Green
-};
-
-enum Colours c1;
-Colours c2;
-
-void f( void ) {
-	enum Fruits {
-		Apple,
-		Banana,
-		Pear,
-		Mango
-	} fruit = Mango;
-	enum Fruits f1;
-	Fruits f2;
-}
-
-//Dummy main
-int main(int argc, char const *argv[]) {
-}
Index: c/tests/except-0.c
===================================================================
--- src/tests/except-0.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,247 +1,0 @@
-// Draft of tests for exception handling.
-// Outdated: The integer constant exceptions need to be replaced with virtual
-// exceptions for the new system.
-
-// ERROR: exceptions do not interact with ^?{} properly.
-
-#include <stdio.h>
-#include <stdbool.h>
-
-#include "except-mac.h"
-TRIVIAL_EXCEPTION(yin)
-TRIVIAL_EXCEPTION(yang)
-TRIVIAL_EXCEPTION(zen)
-
-
-// Local type to mark exits from scopes. (see ERROR)
-struct signal_exit {
-	const char * area;
-};
-
-void ?{}(signal_exit * this, const char * area) {
-	this->area = area;
-}
-
-void ^?{}(signal_exit * this) {
-	printf("Exiting: %s\n", this->area);
-//	sout | "Exiting:" | this->area | endl;
-}
-
-
-// Mark throws: make sure to only pass in exception types.
-forall(dtype T)
-void terminate(T * except_value) {
-	signal_exit a = {"terminate function"};
-	THROW(except_value);
-	printf("terminate returned\n");
-}
-
-forall(dtype T)
-void resume(T * except_value) {
-	signal_exit a = {"resume function"};
-	THROW_RESUME(except_value);
-	printf("resume returned\n");
-}
-
-// Termination Test: Two handlers: no catch, catch
-void bar() {
-	signal_exit a = {"bar function"};
-	try {
-		terminate(&(zen){});
-	} catch (yin * error) {
-		printf("bar caught exception yin.\n");
-	}
-}
-
-void foo() {
-	signal_exit a = {"foo function"};
-	try {
-		bar();
-	} catch (yang * error) {
-		printf("foo caught exception yang.\n");
-	} catch (zen * error) {
-		printf("foo caught exception zen.\n");
-	}
-}
-
-// Resumption Two Handler Test: no catch, catch.
-void beta() {
-	signal_exit a = {"beta function"};
-	try {
-		zen x;
-		resume(&x);
-	} catchResume (yin * error) {
-		printf("beta caught exception yin\n");
-	}
-}
-
-void alpha() {
-	signal_exit a = {"alpha function"};
-	try {
-		beta();
-	} catchResume (yang * error) {
-		printf("alpha caught exception yang\n");
-	} catchResume (zen * error) {
-		printf("alpha caught exception zen\n");
-	}
-}
-
-// Finally Test:
-void farewell(bool jump) {
-	try {
-		if (jump) {
-			printf("jump out of farewell\n");
-			goto endoffunction;
-		} else {
-			printf("walk out of farewell\n");
-		}
-	} finally {
-		printf("See you next time\n");
-	}
-	endoffunction:
-	printf("leaving farewell\n");
-}
-
-// Resume-to-Terminate Test:
-void fallback() {
-	try {
-		zen x;
-		resume(&x);
-	} catch (zen * error) {
-		printf("fallback caught termination zen\n");
-	}
-}
-
-// Terminate Throw New Exception:
-void terminate_swap() {
-	signal_exit a = {"terminate_swap"};
-	try {
-		yin x;
-		terminate(&x);
-	} catch (yin * error) {
-		yang y;
-		terminate(&y);
-	}
-}
-
-void terminate_swapped() {
-	signal_exit a = {"terminate_swapped"};
-	try {
-		terminate_swap();
-	} catch (yang * error) {
-		printf("terminate_swapped caught exception yang\n");
-	}
-}
-
-// Resume Throw New Exception:
-void resume_swap() {
-	signal_exit a = {"resume_swap"};
-	try {
-		yin x;
-		resume(&x);
-	} catchResume (yin * error) {
-		yang y;
-		resume(&y);
-	}
-}
-
-void resume_swapped() {
-	try {
-		resume_swap();
-	} catchResume (yang * error) {
-		printf("resume_swapped caught exception yang\n");
-	}
-}
-
-// Terminate Rethrow:
-void reterminate() {
-	try {
-		try {
-			zen x;
-			terminate(&x);
-		} catch (zen * error) {
-			printf("reterminate zen caught and "
-			       "will rethrow exception zen\n");
-			throw;
-		}
-	} catch (zen * error) {
-		printf("reterminate 1 caught exception zen\n");
-	}
-}
-
-// Resume Rethrow:
-void reresume() {
-	try {
-		try {
-			zen x;
-			resume(&x);
-		} catchResume (zen * error) {
-			printf("reresume zen caught and rethrows exception zen\n");
-			throwResume;
-		}
-	} catchResume (zen * error) {
-		printf("reresume 1 caught exception zen\n");
-	}
-}
-
-// Terminate-Resume interaction:
-void fum() {
-	// terminate block, call resume
-	try {
-		zen x;
-		resume(&x);
-	} catch (zen * error) {
-		printf("fum caught exception zen\n");
-	}
-}
-
-void foe() {
-	// resume block, call terminate
-	try {
-		zen y;
-		terminate(&y);
-	} catchResume (zen * error) {
-		printf("foe caught exception zen\n");
-	}
-}
-
-void fy() {
-	// terminate block calls fum, call foe
-	try {
-		foe();
-	} catch (zen * error) {
-		printf("fy caught exception zen\n");
-		fum();
-	}
-}
-
-void fee() {
-	// resume block, call fy
-	try {
-		fy();
-	} catchResume (zen * error) {
-		printf("fee caught exception zen\n");
-	}
-}
-
-
-// main: choose which tests to run
-int main(int argc, char * argv[]) {
-	signal_exit a = {"main function"};
-
-	foo(); printf("\n");
-	alpha(); printf("\n");
-	farewell(false); printf("\n");
-	farewell(true); printf("\n");
-	fallback(); printf("\n");
-	terminate_swapped(); printf("\n");
-	resume_swapped(); printf("\n");
-	reterminate(); printf("\n");
-	reresume(); printf("\n");
-	fee(); printf("\n");
-
-	// Uncaught termination test.
-	printf("Throw uncaught.\n");
-	yang z;
-	terminate(&z);
-}
Index: c/tests/except-1.c
===================================================================
--- src/tests/except-1.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,81 +1,0 @@
-// Draft memory management test. (remember -fexceptions)
-// Outdated: The integer constant exceptions need to be replaced with virtual
-// exceptions for the new system.
-
-#include <stdio.h>
-
-#include "except-mac.h"
-TRIVIAL_EXCEPTION(yin)
-TRIVIAL_EXCEPTION(yang)
-
-int main()
-{
-	try {
-		yin a;
-		THROW(&a);
-	}
-	catch( yin * err ) {
-		printf("First Caught\n");
-		try {
-			yang b;
-			THROW(&b);
-		}
-		catch( yang * err ) {
-			printf("Both Caught\n");
-		}
-	}
-	printf("Part A Complete\n");
-
-	try {
-		try {
-			yang c;
-			THROW(&c);
-		}
-		catch( yang * err ) {
-			printf("First Catch and rethrow\n");
-			throw;
-		}
-	}
-	catch( yang * err ) {
-		printf("Second Catch\n");
-	}
-	printf("Part B Complete\n");
-
-	try {
-		try {
-			yin d;
-			THROW(&d);
-		}
-		catch( yin * err ) {
-			printf("Throw before cleanup\n");
-			yang e;
-			THROW(&e);
-		}
-	}
-	catch( yang * err ) {
-		printf("Catch after cleanup\n");
-	}
-	printf("Part C Complete\n");
-
-	try {
-		try {
-			yin f;
-			THROW(&f);
-		}
-		catch( yin * err ) {
-			printf("Caught initial throw.\n");
-			try {
-				yang g;
-				THROW(&g);
-			}
-			catch( yang * err ) {
-				printf("Caught intermediate throw.\n");
-			}
-			throw;
-		}
-	}
-	catch( yin * err ) {
-		printf("Caught final throw.\n");
-	}
-	printf("Part D Complete\n");
-}
Index: c/tests/except-2.c
===================================================================
--- src/tests/except-2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,92 +1,0 @@
-// New draft of exception tests.
-
-
-#include <stdlib>
-#include "except-mac.h"
-
-TRIVIAL_EXCEPTION(yin)
-TRIVIAL_EXCEPTION(yang)
-
-struct num_error;
-struct num_error_vtable {
-	struct TABLE(BASE_EXCEPT) const * parent;
-	size_t size;
-	void (*copy)(num_error *this, num_error * other);
-	void (*free)(num_error *this);
-	const char * (*msg)(num_error *this);
-	int (*code)(num_error *this);
-};
-extern num_error_vtable INSTANCE(num_error);
-
-struct num_error {
-	struct num_error_vtable const * virtual_table;
-	char * msg;
-	int num;
-};
-
-void num_error_msg(num_error * this) {
-	if ( ! this->msg ) {
-		static const char * base = "Num Error with code: X";
-		this->msg = malloc(22);
-		for (int i = 0 ; (this->msg[i] = base[i]) ; ++i);
-	}
-	this->msg[21] = '0' + this->num;
-	return this->msg;
-}
-void ?{}(num_error * this, int num) {
-	this->virtual_table = &INSTANCE(num_error);
-	this->msg = 0;
-	this->num = num;
-}
-void ?{}(num_error * this, num_error * other) {
-	this->virtual_table = other->virtual_table;
-	this->msg = 0;
-	this->num = other->num;
-}
-void ^?{}(num_error * this) {
-	if( this->msg ) free( this->msg );
-}
-int num_error_code( num_error * this ) {
-	return this->num;
-}
-num_error_vtable _num_error_vtable_instance @= {
-	&INSTANCE(BASE_EXCEPT),
-	sizeof(num_error), ?{}, ^?{},
-	num_error_msg, num_error_code
-};
-
-
-// Test simple throwing, matching and catching.
-void throw_catch() {
-	try {
-		yin black;
-		THROW(&black);
-	} catch ( yin * error ) {
-		printf("throw yin caught.\n");
-	}
-
-	try {
-		yang white;
-		THROW_RESUME(&white);
-		printf("> throwResume returned.\n");
-	} catchResume ( yang * error ) {
-		printf("throwResume yang caught <");
-	}
-
-	try {
-		num_error x = { 2 };
-		THROW(&x);
-	}
-	catch (num_error * error ; 3 == error->virtual_table->code( error ) ) {
-		printf("exception at %p\n", error );
-		printf("Should not be printed.\n");
-	}
-	catch (num_error * error ; 2 == error->virtual_table->code( error ) ) {
-		printf("Should be printed.\n");
-	}
-}
-
-int main (int argc, char * argv[]) {
-	throw_catch();
-	return 0;
-}
Index: c/tests/except-3.c
===================================================================
--- src/tests/except-3.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,18 +1,0 @@
-// Test that __attribute__((cleanup(...))) is working.
-
-#include <stdio.h>
-#include "except-mac.h"
-TRIVIAL_EXCEPTION(myth)
-
-int main (int argc, char * argv[]) {
-	try {
-		try {
-			printf("throw [");
-			THROW(&(myth){});
-		} finally {
-			printf("] unwind <");
-		}
-	} catch (myth * error) {
-		printf("> catch\n");
-	}
-}
Index: c/tests/except-mac.h
===================================================================
--- src/tests/except-mac.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,78 +1,0 @@
-// Macros to try and make declaring and using exceptions easier
-// No, these are not part of the language, they replace the virtual system.
-
-// Internal use:
-#define GLUE2(left, right) left##right
-#define GLUE3(left, middle, right) left##middle##right
-
-// The fully (perhaps overly) qualified name of the base exception type:
-#define BASE_EXCEPT __cfaabi_ehm__base_exception_t
-
-// Get the name of the vtable type and vtable instance for an exception type:
-#define TABLE(name) GLUE2(name,_vtable)
-#define INSTANCE(name) GLUE3(_,name,_vtable_instance)
-
-// Throws and the bit of overhead:
-#define THROW(expr) throw ((BASE_EXCEPT *)(expr))
-#define THROW_RESUME(expr) throwResume ((BASE_EXCEPT *)(expr))
-
-
-
-// The following macros are for defining your own new exception types.
-
-// Declare vtable and forward declare the exception type and vtable instance.
-// This should start a new exception declaration.
-// ... argument is the additional vtable fields.
-#define DECLARE_EXCEPT(except_name,parent_name,...) \
-struct except_name; \
-struct TABLE(except_name) { \
-	struct TABLE(parent_name) const * parent; \
-	size_t size; \
-	void (*copy)(except_name *this, except_name * other); \
-	void (*free)(except_name &this); \
-	const char * (*msg)(except_name *this); \
-	__VA_ARGS__ \
-}; \
-extern TABLE(except_name) INSTANCE(except_name);
-
-// The first field of the exception structure should be created with this.
-#define VTABLE_FIELD(except_name) \
-struct TABLE(except_name) const * virtual_table
-
-// In each constructor the vtable must be initialized.
-#define VTABLE_INIT(this_name,except_name) \
-this_name.virtual_table = &INSTANCE(except_name)
-
-// Declare the vtable instance. This should end an exception declaration.
-// ... argument is the remaining vtable field values.
-#define VTABLE_INSTANCE(except_name,parent_name,copy,free,msg,...) \
-TABLE(except_name) INSTANCE(except_name) @= { \
-	&INSTANCE(parent_name), sizeof(except_name), \
-	copy, free, msg, ## __VA_ARGS__ \
-};
-
-// Same, but used declarators for arguments.
-#define VTABLE_INSTANCE_KEY(except_name,parent_name,copy,free,msg,...) \
-TABLE(except_name) INSTANCE(except_name) @= { \
-	.parent : &INSTANCE(parent_name), .size : sizeof(except_name), \
-	.copy : copy, .free : free, .msg : msg, ## __VA_ARGS__ \
-};
-
-
-
-// Declare a trivial exception, one that adds no features:
-#define TRIVIAL_EXCEPTION(name) \
-DECLARE_EXCEPT(name,BASE_EXCEPT,) \
-struct name { \
-	VTABLE_FIELD(name); \
-}; \
-const char * GLUE2(name,_msg)(name * this) { \
-    return #name; \
-} \
-void GLUE2(name,_copy)(name * this, name * other) { \
-    this->virtual_table = other->virtual_table; \
-} \
-void ?{}(name & this) { \
-	VTABLE_INIT(this,name); \
-} \
-VTABLE_INSTANCE(name,BASE_EXCEPT,GLUE2(name,_copy),^?{},GLUE2(name,_msg),)
Index: c/tests/expression.c
===================================================================
--- src/tests/expression.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,51 +1,0 @@
-int main() {
-    struct s { int i; } x, *p = &x;
-    int i = 3;
-
-    // operators
-
-    ! i;
-    ~i;
-    +i;
-    -i;
-    *p;
-    ++p;
-    --p;
-    p++;
-    p--;
-
-    i+i;
-    i-i;
-    i*i;
-
-    i/i;
-    i%i;
-    i^i;
-    i&i;
-    i|i;
-    i<i;
-    i>i;
-    i=i;
-
-    i==i;
-    i!=i;
-    i<<i;
-    i>>i;
-    i<=i;
-    i>=i;
-    i&&i;
-    i||i;
-    p->i;
-    i*=i;
-    i/=i;
-    i%=i;
-    i+=i;
-    i-=i;
-    i&=i;
-    i|=i;
-    i^=i;
-    i<<=i;
-    i>>=i;
-
-    i?i:i;
-} // main
Index: c/tests/extension.c
===================================================================
--- src/tests/extension.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,59 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// extension.c -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Mon Jul  4 20:42:43 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Feb  6 15:44:39 2017
-// Update Count     : 46
-//
-
-__extension__ __extension__ int a, b, c;
-__extension__ struct S {
-	__extension__ int a, b, c;
-};
-__extension__ union U {
-	__extension__ int a, b, c;
-};
-__extension__ enum E {
-	R, G, B,
-};
-__extension__ typedef int www; // typedefs are removed => no output
-__extension__ __extension__ int f();
-//__extension__ __extension__ asm( "nop" );
-#ifdef __cforall
-__extension__ __extension__ extern "C" {
- 	int i, j;
- }
-#endif // __cforall
-
-__extension__ int fred( int p ) {
-	__extension__ struct S {
-		__extension__ int a, b, c;
-#ifdef __cforall
-		__extension__ * int x, y, z;
-#endif // __cforall
-	};
-	int i = __extension__ a + __extension__ 3;
-	__extension__ 3;
-	__extension__ a;
-	__extension__ int a, b, c;
-
-	__extension__ a = __extension__ b + __extension__ c;
-	__extension__ fred( 3 );
-	__extension__ int mary( int p ) {}
-	__extension__ sizeof( 3 );
-	__extension__ (3 || 4);
-	__extension__ __alignof__( __extension__ a );
-	__extension__ a || __extension__ b && __extension__ c;
-	__extension__ a > __extension__ b ? __extension__ c : __extension__ c;
-	__extension__ a = __extension__ ( __extension__ b + __extension__ c );
-	__extension__ a, __extension__ b, __extension__ c;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa extension.c" //
-// End: //
Index: c/tests/fallthrough.c
===================================================================
--- src/tests/fallthrough.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// fallthrough.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Wed Mar 14 10:06:25 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar 14 22:45:13 2018
-// Update Count     : 13
-//
-
-void test(int choice) {
-	choose ( choice ) {
-		case 1:
-			printf("case 1\n");
-			fallthru;
-		case 2:
-			printf("case 2\n");
-			fallthru;
-			printf("did not fallthru\n");
-			if ( 7 ) fallthru common2;
-			fallthru common1;
-		case 3:
-			printf("case 3\n");
-			fallthru default;
-			fallthru common1;
-		common1:
-			printf("common1\n");
-		// break
-		case 4:
-			printf("case 4\n");
-			fallthru common2;
-		case 5:
-			printf("case 5\n");
-			fallthru common2;
-			fallthru default;
-		case 6:
-			printf("case 6\n");
-			fallthru common2;
-		common2:
-			printf("common2\n");
-		// break
-		default:
-			printf("default\n");
-			fallthru;
-	}
-
-	printf("\n");
-
-	switch ( choice ) {
-	  case 1:
-		printf("case 1\n");
-		switch ( choice ) {
-		  case 1:
-			printf("case 1\n");
-			for ( int i = 0; i < 4; i += 1 ) {
-				printf("%d\n", i);
-				if ( i == 2 ) fallthru common;
-			} // for
-		} // switch
-		break;
-	  case 5:
-		printf("case 5\n");
-		if ( choice == 5 ) {
-			if ( choice != 5 ) {
-				printf("error\n");
-			} else {
-				printf("check\n");
-				fallthru common;
-			} // if
-		} // if
-	  common:
-		printf( "common\n" );
-		fallthru;
-		break;
-	  default:
-		printf( "default\n" );
-		fallthru;
-	} // switch
-
-#if ERR1
-	// ERROR: fallthrough must be enclosed in switch or choose
-	fallthru;
-	// ERROR: fallthrough must be enclosed in switch or choose
-	fallthru common4;
-	// ERROR: fallthrough must be enclosed in switch or choose
-	fallthru default;
-	choose ( 3 ) {
-		case 2:
-			for ( ;; ) {
-				choose ( 2 ) {
-					case 1:
-						// ERROR: default is later, but in a different switch
-						fallthru default;
-						// ERROR: common3 is later, but not at the same level as a case clause
-						fallthru common3;
-				}
-				common3: ;
-			}
-		default:
-		case 1:
-		common4:
-			// ERROR: attempt to jump up with fallthrough
-			if ( 7 ) fallthru common4;
-			// ERROR: attempt to jump up with fallthrough
-			fallthru default;
-	}
-#endif
-}
-
-int main() {
-	test(1);
-	printf("\n");
-	test(5);
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa fallthrough.c" //
-// End: //
Index: c/tests/forall.c
===================================================================
--- src/tests/forall.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,222 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// forall.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed May  9 08:48:15 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 12 16:19:08 2018
-// Update Count     : 30
-// 
-
-void g1() {
-	forall( otype T ) T f( T ) {};
-	void f( int ) {};
-	void h( void (*p)(void) ) {};
-
-	int x;
-	void (*y)(void);
-	char z;
-	float w;
-
-	f( x );
-	f( y );
-	f( z );
-	f( w );
-	h( f( y ) );
-}
-
-void g2() {
-	forall( otype T ) void f( T, T ) {}
-	forall( otype T, otype U ) void f( T, U ) {}
-
-	int x;
-	float y;
-	int *z;
-	float *w;
-
-	f( x, y );
-	f( z, w );
-	f( x, z );
-}
-
-typedef forall ( otype T ) int (* f)( int );
-
-forall( otype T )
-void swap( T left, T right ) {
-	T temp = left;
-	left = right;
-	right = temp;
-}
-
-void ?{}( int & c, zero_t ) { c = 0; }					// not in prelude
-
-trait sumable( otype T ) {
-	void ?{}( T &, zero_t );							// 0 literal constructor
-	T ?+?( T, T );										// assortment of additions
-	T ?+=?( T &, T );
-	T ++?( T & );
-	T ?++( T & );
-}; // sumable
-
-forall( otype T | sumable( T ) )						// use trait
-T sum( size_t size, T a[] ) {
-	T total = 0;										// initialize by 0 constructor
-	for ( size_t i = 0; i < size; i += 1 )
-		total = total + a[i];							// select appropriate +
-	return total;
-} // sum
-
-forall( otype T | { T ?+?( T, T ); T ?++( T & ); [T] ?+=?( T &,T ); } )
-T twice( T t ) {
-	return t + t;
-}
-
-forall( otype T | { int ?<?(T, T); } )
-T min( T t1, T t2 ) {
-	return t1 < t2 ? t1 : t2;
-}
-
-int fred() {
-	int x = 1, y = 2, a[10];
-	float f;
-
-	swap( x, y );
-	twice( x );
-	f = min( 4.0, 3.0 );
-	sum( 10, a );
-}
-
-// Multiple forall
-forall( otype T ) forall( otype S ) struct { int i; };
-forall( otype T ) struct { int i; } forall( otype S );
-struct { int i; } forall( otype T ) forall( otype S );
-forall( otype W ) struct { int i; } forall( otype T ) forall( otype S );
-
-// Distribution
-struct P { int i; };
-forall( otype T ) struct Q { T i; };
-forall( otype T ) struct { int i; };
-struct KK { int i; };
-inline static {
- 	void RT1() {}
-}
-forall( otype T ) {
-	T RT2( T ) {
-		typedef int TD1;
-		struct S1 { T t; };
-	}
-	forall( otype X ) {
-		typedef int TD2;
-		struct S2 {};
-		X RT2( T, X ) {
-			int TD2;
-		}
-	}
-	extern "C" {
-		forall( otype W ) {
-			W RT3( W ) {}
-			struct S3 {};
-		}
-	}
-	void RT4() {
-		forall( otype W ) struct S4 {};
-		typedef int TD3;
-	}
-	static {
-		struct S5 {};
-		void RT5( T ) {
-			struct S6 {};
-			int TD2;
-		}
-	}
-	struct S7 {};
-	typedef int TD4;
-}
-TD2 t2;
-TD4 t4;
-struct Q( int ) t;
-struct S2( int, int ) t;
-struct S5( int ) t;
-struct S7( int ) t;
-
-int i = RT2( 3 );
-double j = RT2( 3, 4.5 );
-
-static inline {
-	forall( otype T ) {
-		int RT6( T p );
-	}
-	forall( otype T, otype U ) {
-		int RT7( T, U );
-	}
-}
-static forall( otype T ) {
-	int RT8( T );
-}
-forall( otype T ) inline static {
-	int RT9( T ) { T t; }
-}
-
-forall( otype T | { T ?+?( T, T ); } ) {
-	forall( otype S | { T ?+?( T, S ); } ) {
-		forall( otype W ) T bar( T t, S s ) { return t + s; }
-		forall( otype W | { W ?+?( T, W ); } ) W baz( T t, S s, W w ) { return t + s + w; }
-		struct W { T t; } (int,int) ww;
-		struct P pp;
-	}
-}
-
-forall( otype T | { T ?+?( T, T ); } ) forall( otype S | { T ?+?( T, S ); } ) 
-struct XW { T t; };
-XW(int,int) xww;
-
-forall( otype T ) struct S { T t; } (int) x, y, z;
-forall( otype T ) struct { T t; } (int) a, b, c;
-
-forall( otype T ) static forall( otype S ) {
-    forall( otype X ) struct U {
-		T x;
-    };
-}
-
-forall( otype T ) {
-	extern "C" {
-		struct SS { T t; };
-		T foo( T ) {}
-	}
-}
-
-SS(int) s;
-W(int,int) w;
-
-int jane() {
-//	int j = bar( 3, 4 );
-	int k = baz( 3, 4, 5 );
-	int i = foo( 3 );
-}
-
-//otype T1 | { void xxx( T1 ); };
-
-// otype T1 | { void ?{}( T1 &, zero_t ); T1 ?+?(T1, T1); T1 ?++(T1); [T1] ?+=?(T1,T1); },
-// 	T2(otype P1, otype P2 ),
-// 	T3 | sumable(T3);
-
-//otype T2(otype P1, otype P2) | sumable( T2( P1,P2 ) ) = struct { P1 i; P2 j; };
-
-// T2(int, int) w1;
-// typedef T2(int, int) w2;
-// w2 g2;
-// otype w3 = T2(int, int);
-// w3 g3;
-
-int main( void ) {}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa forall.c" //
-// End: //
Index: c/tests/fstream_test.c
===================================================================
--- src/tests/fstream_test.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,35 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// fstream_test.c -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 24 11:30:26 2017
-// Update Count     : 65
-//
-
-#include <fstream>
-
-int main( void ) {
-	int nombre;
-	sout | "Entrez un nombre, s'il vous plaît:" | endl;
-	sin  | nombre;
-	sout | "Vous avez entré" | nombre | endl;
-	sout | "le nombre" | nombre | "est"
-		 | (nombre > 0 ? "positif" : nombre == 0 ? "zéro" : "négatif") | endl;
-
-	sout | "Entrez trois nombres, s'il vous plaît: " | endl;
-	int i, j, k;
-	sin  | i | j | k;
-	sout | "Vous avez entré" | "i:" | "" | i | "j:" | "" | j | "k:" | "" | k | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa fstream_test.c" //
-// End: //
Index: c/tests/function-operator.c
===================================================================
--- src/tests/function-operator.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,174 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// function-operator.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Fri Aug 25 15:21:11 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Dec  7 12:42:26 2017
-// Update Count     : 6
-//
-
-#include <fstream>
-#include <stdlib>
-
-#define length(array) (sizeof((array))/sizeof((array)[0]))
-#define begin(array) (&array[0]) // there's currently a bug in passing an array to a polymorphic function, so ensure a pointer is passed instead
-#define end(array) (&array[length(array)])
-
-// STL-like Algorithms
-trait Assignable(dtype T, dtype U) { T ?=?(T &, U); };
-trait Copyable(dtype T) { void ?{}(T &, T); };
-trait Destructable(dtype T) { void ^?{}(T &); };
-
-trait Iterator(dtype iter | sized(iter) | Copyable(iter) | Destructable(iter), otype T) {
-	T & *?(iter);
-	iter ++?(iter &);
-	int ?!=?(iter, iter);
-};
-
-forall(otype Tin, dtype Input | Iterator(Input, Tin), otype Tout, dtype Output | Iterator(Output, Tout) | Assignable(Tout, Tin))
-Output copy(Input first, Input last, Output result) {
-	while (first != last) {
-		*result = *first;
-		++result; ++first;
-	}
-	return result;
-}
-
-// test ?()(T *, ...) -- ?() with function call-by-pointer
-forall(otype Tin, dtype Input | Iterator(Input, Tin), otype Tout, dtype Output | Iterator(Output, Tout), otype FuncRet, dtype Func | { FuncRet ?()(Func *, Tin); } | Assignable(Tout, FuncRet))
-Output transform (Input first, Input last, Output result, Func * op) {
-	while (first != last) {
-		*result = op(*first);
-		++result; ++first;
-	}
-	return result;
-}
-
-// test ?()(T, ...) -- ?() with function call-by-value
-forall(dtype Iter, otype T | Iterator(Iter, T), otype Pred | { int ?()(Pred, T); })
-Iter find_if (Iter first, Iter last, Pred pred) {
-	while (first != last) {
-		if (pred(*first)) return first;
-		++first;
-	}
-	return last;
-}
-
-// test ?()(T, ...) -- ?() with function call-by-reference
-forall(otype Generator, otype GenRet | { GenRet ?()(Generator &); }, dtype Iter, otype T| Iterator(Iter, T) | Assignable(T, GenRet))
-void generate(Iter first, Iter last, Generator & gen) {
-	int i = 0;
-	while (first != last) {
-		*first = gen();
-		++first;
-	}
-}
-
-// encapsulate a counter that increments by one every time it is called
-struct Counter { int c; };
-void ?{}(Counter & cnt) { cnt.c = 0; }
-int ?()(Counter & cnt) { return cnt.c++; }
-
-// TODO: abstract over os type with ostream trait; resolver is currently too slow for this to be reasonable, but it does work.
-struct os_wrapper {
-	ofstream * out;
-};
-
-// TODO: abstract over (os, T)
-os_wrapper ?=?(os_wrapper & wrapper, int x) {
-	*wrapper.out | x | endl;
-	return wrapper;
-}
-
-	struct ostream_iterator {
-		os_wrapper * out;
-	};
-void ?{}(ostream_iterator & iter, ofstream * out) {
-	iter.out = new(out);
-		}
-// no destructor, memory leak. This is necessary for this to work at the moment, since
-// *? requires its parameter by value and returns a reference.
-
-// implement Iterator
-os_wrapper & *?(ostream_iterator iter) {
-	return *iter.out;
-}
-ostream_iterator ++?(ostream_iterator & iter) {
-	// nothing to do
-	return iter;
-}
-int ?!=?(ostream_iterator i1, ostream_iterator i2) {
-	return i1.out->out != i2.out->out;
-}
-
-forall(otype T | { int ?==?(T, T); })
-struct Equals {
-	T val;
-};
-
-forall(otype T | { int ?==?(T, T); })
-int ?()(Equals(T) eq, T x) {
-	return eq.val == x;
-}
-
-forall(otype T | { T ?*?(T, T); })
-struct Multiply {
-	T val;
-};
-
-forall(otype T | { T ?*?(T, T); })
-T ?()(Multiply(T) * mult, T x) {
-	return mult->val * x;
-}
-
-// TODO: generalize to ttype return; doesn't work yet
-// like std::function
-forall(otype Return, ttype Args)
-struct function {
-	Return (*f)(Args);
-};
-// TODO: missing adapter in these functions
-// // value, reference, pointer operators
-// forall(otype Return, ttype Args) Return ?()(function(Return, Args) func, Args args) { return func.f(args); }
-// forall(otype Return, ttype Args) Return ?()(function(Return, Args) & func, Args args) { return func.f(args); }
-// forall(otype Return, ttype Args) Return ?()(function(Return, Args) * func, Args args) { return func->f(args); }
-
-int main() {
-	// generate for array fill
-	Counter c;
-	int x[10], y[10];
-	generate(begin(x), end(x), c);
-	generate(begin(y), end(y), c);
-
-	// copy for output
-	ostream_iterator out_iter = { &sout };
-	copy(begin(x), end(x), out_iter);
-	copy(begin(y), end(y), out_iter);
-
-	// find_if for searching
-	Equals(int) is5 = { 5 };
-	if (find_if(begin(x), end(x), is5) != end(y)) {
-		printf("Found 5 in x.\n");
-	} else {
-		printf("Did not find 5 in x.\n");
-	}
-	if (find_if(begin(y), end(y), is5) != end(y)) {
-		printf("Found 5 in y.\n");
-	} else {
-		printf("Did not find 5 in y.\n");
-	}
-
-	Multiply(int) times2 = { 2 };
-	transform(begin(x), end(x), begin(x), &times2);
-	copy(begin(x), end(x), out_iter);
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/functions.c
===================================================================
--- src/tests/functions.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,191 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// functions.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Aug 17 08:39:58 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jan 17 22:44:12 2018
-// Update Count     : 12
-//
-
-// ANSI function definitions
-
-void h(void) {}
-
-int f (
-	int (void),
-	int (int),
-	int ((void)),
-	int ((int)),
-	void g(void)
-	) {
-	(* g)();
-	g();
-	g = h;
-}
-
-int f1() {}
-int (f2()) {}
-int (* f3())() {}
-int * ((f4())) {}
-int ((* f5()))() {}
-int * f6() {}
-int * (f7)() {}
-int ** f8() {}
-int * const * (f9)() {}
-int (* f10())[] {}
-int (* f11())[][3] {}
-int ((* f12())[])[3] {}
-
-// "implicit int" otype specifier (not ANSI)
-
-fII1( int i ) {}
-const fII2( int i ) {}
-extern fII3( int i ) {}
-extern const fII4( int i ) {}
-
-* fII5() {}
-const * fII6() {}
-const long * fII7() {}
-static const long * fII8() {}
-const static long * fII9() {}
-
-// K&R function definitions
-
-fO1( i ) int i; {}
-int fO2( i ) int i; {}
-const fO3( i ) int i; {}
-extern fO4( i ) int i; {}
-extern const fO5( i ) int i; {}
-
-// Cforall extensions
-
-// [] f( );
-[int] f( );
-// [] f(int);
-[int] f(int);
-// [] f( ) {}
-[int] f( ) {}
-// [] 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) {}
-
-[int, int x] f( );
-// [] f(int, int x);
-[int, int x] f(int, int x);
-[int, int x] f( ) {}
-// [] f(int, int x) {}
-[int, int x] f(int, int x) {}
-
-[int, int x, int] f( );
-// [] f(int, int x, int);
-[int, int x, int] f(int, int x, int);
-[int, int x, int] f( ) {}
-// [] 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);
-[int, int x, * int y] f(int, int x, * int y);
-[int, int x, * int y] f( ) {}
-// [] f(int, int x, * int y) {}
-[int, int x, * int y] f(int, int x, * int y) {}
-
-// 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(
-	int ( int, int p ),
-	[int](int)
-	) {
-	int (* (* pc)[][10])[][3];
-	* [][10] * [][3] int p;
-	* [] * [int](int) p;
-}
-
-static const int * f1() {}
-static [ * const int ] f2() {}
-static inline [ const * int ] f3() {}
-static inline [ const [ * int, int ] ] f4() {}
-static [ const [ * int, const int ] ] f5() {}
-
-// unnamed parameter
-
-int f(
-	int (),
-
-	int * (),
-	int ** (),
-	int * const * (),
-	int * const * const (),
-
-	int ([]),
-	int ([10]),
-
-	int * ([]),
-	int * ([10]),
-	int ** ([]),
-	int ** ([10]),
-	int * const * ([]),
-	int * const * ([10]),
-	int * const * const ([]),
-	int * const * const ([10])
-	);
-
-int f(
-	int (),
-
-	int * (),
-	int ** (),
-	int * const * (),
-	int * const * const (),
-
-	int ([]),
-	int ([10]),
-
-	int * ([]),
-	int * ([10]),
-	int ** ([]),
-	int ** ([10]),
-	int * const * ([]),
-	int * const * ([10]),
-	int * const * const ([]),
-	int * const * const ([10])
-	) {
-}
-
-typedef int T;
-
-int f( T (* f), T t ) {
-	T (T);
-}
-
-// errors
-
-//int f()[] {}
-//int (f[])() {}
-//int f[]() {}
-//int ((* f15())())[] {}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa functions.c" //
-// End: //
Index: c/tests/gccExtensions.c
===================================================================
--- src/tests/gccExtensions.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,123 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// gccExtensions.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Sun Aug 14 17:28:17 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 17 09:26:50 2016
-// Update Count     : 10
-// 
-
-extern int x asm( "xx" );
-
-int main(int argc, char const *argv[]) {
-	// asm extensions
-
-	asm( "nop" );
-	__asm( "nop" );
-	__asm__( "nop" );
-
-	static int y asm( "yy" );
-#ifdef __CFA__
-	static * int z asm( "zz" );							// CFA declaration
-#endif // __CFA__
-
-	int src;
-	int dst;
-
-	asm volatile ( "mov %1, %0\n\t"
-				   "add $1, %0" : : : );
-
-	asm volatile ( "mov %1, %0\n\t"
-				   "add $1, %0"
-				   : "=" "r" (dst));
-
-	asm volatile ( "mov %1, %0\n\t"
-				   "add $1, %0"
-				   : "=r" (dst)
-				   : "r" (src));
-
-	asm ( "mov %1, %0\n\t"
-		  "add $1, %0"
-		  : "=r" (dst), "=r" (src)
-		  : [src] "r" (dst)
-		  : "r0");
-
-  L1: L2:
-	asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5"
-			   : /* No outputs. */
-			   : "r"(src), "r"(&dst)
-			   : "r5", "memory"
-			   : L1, L2 );
-
-	// alternative type/qualifer names
-
-	__complex__ c1;
-	_Complex c2;
-
-	const int i1;
-	__const int i2;
-	__const__ int i3;
-
-	__inline int f1() {}
-	__inline__ int f2() {}
-
-	__signed s1;
-	__signed s2;
-
-	__volatile int v1;
-	__volatile__ int v2;
-
-	// symbol table attributes
-
-	__typeof(s1) t1;
-	__typeof__(s1) t2;
-
-	// strange extension qualifier
-
-	__extension__ const int ex;
-	struct S {
-		__extension__ int a, b, c;
-	};
-	int i = __extension__ 3;
-	__extension__ int a, b, c;
-	__extension__ a, __extension__ b, __extension__ c;
-	__extension__ a = __extension__ b + __extension__ c;
-	__extension__ a = __extension__ ( __extension__ b + __extension__ c );
-
-	// attributes
-
-	__attribute__(()) int a1;
-	const __attribute(()) int a2;
-	const static __attribute(()) int a3;
-	const static int __attribute(()) a4;
-	const static int a5 __attribute(());
-	const static int a6, __attribute(()) a7;
-
-	int * __attribute(()) p1;
-	int (* __attribute(()) p2);
-//	int (__attribute(()) (p3));
-//	int ( __attribute(()) (* __attribute(()) p4));
-
-	struct __attribute(()) s1;
-	struct __attribute(()) s2 { int i; };
-	struct __attribute(()) s3 { int i; } x1, __attribute(()) y1;
-	struct __attribute(()) s4 { int i; } x2, y2 __attribute(());
-
-	int m1 [10] __attribute(());
-	int m2 [10][10] __attribute(());
-	int __attribute(()) m3 [10][10];
-//	int ( __attribute(()) m4 [10] )[10];
-
-	return 0;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa gccExtensions.c" //
-// End: //
Index: c/tests/genericUnion.c
===================================================================
--- src/tests/genericUnion.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,30 +1,0 @@
-#include <limits>
-
-forall(otype T)
-union ByteView {
-	T val;
-	char bytes[(sizeof(int))]; // want to change to sizeof(T)
-};
-
-forall(otype T)
-void print(ByteView(T) x) {
-	for (int i = 0; i < sizeof(int); i++) { // want to change to sizeof(T)
-		printf("%02x", x.bytes[i] & 0xff);
-	}
-}
-
-forall(otype T)
-void f(ByteView(T) x, T val) {
-	print(x);
-	printf(" ");
-	x.val = val;
-	print(x);
-	printf("\n");
-}
-
-int main() {
-	ByteView(unsigned) u = { 0 };
-	ByteView(int) i = { 0 };
-	f(u, MAX);
-	f(i, -1);
-}
Index: c/tests/gmp.c
===================================================================
--- src/tests/gmp.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,110 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// gmp.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Apr 19 08:55:51 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Sep 28 18:33:51 2017
-// Update Count     : 555
-// 
-
-// NOTE: UBUNTU DOES NOT SUPPORT GMP MULTILIB, SO ONLY 64-BIT GMP IS TESTED.
-
-#include <gmp>
-
-int main( void ) {
-	sout | "constructors" | endl;
-	short int si = 3;
-	Int x = { "50000000000000000000" }, y = { si }, z = x + y;
-	sout | x | y | z | endl;
-	sout | "x:" | x | "y:" | y | "z:" | z | endl;
-
-	sout | "conversions" | endl;
-	y = 'a';
-	sout | "y:" | y | endl;
-	y = "12345678901234567890123456789";
-	sout | "y:" | y | endl;
-	y = 100`mp + 100`mp;
-	sout | "y:" | y | endl;
-	y = -200u`mp + -200u`mp;
-	sout | "y:" | y | endl;
-	y = "12345678901234567890123456789"`mp + "12345678901234567890123456789"`mp;
-	sout | "y:" | y | endl;
-	y = si;
-	sout | "y:" | y | endl;
-	y = -3;
-	sout | "y:" | y | endl;
-	y += 7;
-	sout | "y:" | y | endl;
-	y -= 1;
-	sout | "y:" | y | endl;
-	int b;
-	b = y;
-	si = y;
-	sout | "y:" | y | "b:" | b | "si:" | si | endl;
-
-	sout | "comparison" | endl;
-	sout | x == x | endl;
-	sout | x != x | endl;
-	sout | x < x | endl;
-	sout | x <= x | endl;
-	sout | x > x | endl;
-	sout | x >= x | endl;
-
-	sout | "arithmetic" | endl;
-	z = x + y + z;
-	sout | "z:" | z | endl;
-	z = z = x;
-	sout | "z:" | z | endl;
-	z = x - y - z;
-	sout | "z:" | z | endl;
-	z = x * y * z;
-	sout | "z:" | z | endl;
-	z = x * 3;
-	sout | "z:" | z | endl;
-	z = 3 * x;
-	sout | "z:" | z | endl;
-	z = x / 3;
-	sout | "z:" | z | endl;
-	sout | div( x, 3 ) | x / 3 | "," | x % 3 | endl;
-	[ x, y ] = div( x, 3 );
-	sout | "x:" | x | "y:" | y | endl;
-
-	sout | endl;
-
-	sin | x | y | z;
-	sout | x | y | z | endl;
-
-	sout | endl;
-
-	sout | "Fibonacci Numbers" | endl;
-	Int fn, fn1, fn2;
-	fn = (Int){0}; fn1 = fn;							// 1st case
-	sout | (int)0 | fn | endl;
-	fn = 1; fn2 = fn1; fn1 = fn;						// 2nd case
-	sout | 1 | fn | endl;
-	for ( unsigned int i = 2; i <= 200; i += 1 ) {
-		fn = fn1 + fn2; fn2 = fn1; fn1 = fn;			// general case
-		sout | i | fn | endl;
-	} // for
-
-	sout | endl;
-
-	sout | "Factorial Numbers" | endl;
-	Int fact = 1;										// 1st case
-	sout | (int)0 | fact | endl;
-	for ( unsigned int i = 1; i <= 40; i += 1 ) {
-		fact *= i;										// general case
-		sout | i | fact | endl;
-	} // for
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa gmp.c -lgmp" //
-// End: //
Index: c/tests/heap.c
===================================================================
--- src/tests/heap.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,342 +1,0 @@
-#include <thread>
-#include <kernel>										// processor
-#include <stdlib>										// *allocs
-#include <malloc.h>										// malloc_*
-
-// #include <time>
-// #define __CFA_DEFAULT_PREEMPTION__ 1000`us
-// //#define __CFA_DEFAULT_PREEMPTION__ 0
-
-// Duration default_preemption() {
-// 	return __CFA_DEFAULT_PREEMPTION__;
-// }
-
-#define __U_DEFAULT_MMAP_START__ (512 * 1024 + 1)
-size_t default_mmap_start() __attribute__(( weak )) {
-    return __U_DEFAULT_MMAP_START__;
-} // default_mmap_start
-
-thread Worker {
-}; // Worker
-
-void main( Worker & ) {
-    enum { NoOfAllocs = 5000, NoOfMmaps = 10 };
-    char *locns[NoOfAllocs];
-    int i;
-
-    // check alloc/free
-
-    for ( int j = 0; j < 40; j += 1 ) {
-		for ( i = 0; i < NoOfAllocs; i += 1 ) {
-			locns[i] = alloc( i );
-			//sout | (void *)locns[i] | endl;
-			for ( int k = 0; k < i; k += 1 ) locns[i][k] = '\345';
-		} // for
-		//sout | (char *)sbrk(0) - start | " bytes" | endl;
-
-		for ( i = 0; i < NoOfAllocs; i += 1 ) {
-			//sout | (void *)locns[i] | endl;
-			for ( int k = 0; k < i; k += 1 ) if ( locns[i][k] != '\345' ) abort( "new/delete corrupt storage1" );
-			free( locns[i] );
-		} // for
-		//sout | (char *)sbrk(0) - start | " bytes" | endl;
-
-		for ( i = 0; i < NoOfAllocs; i += 1 ) {
-			locns[i] = alloc( i );
-			//sout | (void *)locns[i] | endl;
-			for ( int k = 0; k < i; k += 1 ) locns[i][k] = '\345';
-		} // for
-		for ( i = NoOfAllocs - 1; i >=0 ; i -= 1 ) {
-			//sout | (void *)locns[i] | endl;
-			for ( int k = 0; k < i; k += 1 ) if ( locns[i][k] != '\345' ) abort( "new/delete corrupt storage2" );
-			free( locns[i] );
-		} // for
-    } // for
-
-    // check malloc/free (sbrk)
-
-    for ( i = 0; i < NoOfAllocs; i += 1 ) {
-		size_t s = (i + 1) * 20;
-		char *area = (char *)malloc( s );
-		if ( area == 0 ) abort( "malloc/free out of memory" );
-		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
-		area[malloc_usable_size( area ) - 1] = '\345';	// fill ultimate byte
-		free( area );
-    } // for
-
-    for ( i = 0; i < NoOfAllocs; i += 1 ) {
-		size_t s = i + 1;				// +1 to make initialization simpler
-		locns[i] = (char *)malloc( s );
-		if ( locns[i] == 0 ) abort( "malloc/free out of memory" );
-		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
-		locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte
-    } // for
-    for ( i = 0; i < NoOfAllocs; i += 1 ) {
-		size_t s = i + 1;
-		if ( locns[i][0] != '\345' || locns[i][s - 1] != '\345' ||
-			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\345' ) abort( "malloc/free corrupt storage" );
-		free( locns[i] );
-    } // for
-
-    // check malloc/free (mmap)
-
-    for ( i = 0; i < NoOfMmaps; i += 1 ) {
-		size_t s = i + default_mmap_start();				// cross over point
-		char *area = (char *)malloc( s );
-		if ( area == 0 ) abort( "malloc/free out of memory" );
-		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
-		area[malloc_usable_size( area ) - 1] = '\345';	// fill ultimate byte
-		free( area );
-    } // for
-
-    for ( i = 0; i < NoOfMmaps; i += 1 ) {
-		size_t s = i + default_mmap_start();				// cross over point
-		locns[i] = (char *)malloc( s );
-		if ( locns[i] == 0 ) abort( "malloc/free out of memory" );
-		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
-		locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte
-    } // for
-    for ( i = 0; i < NoOfMmaps; i += 1 ) {
-		size_t s = i + default_mmap_start();				// cross over point
-		if ( locns[i][0] != '\345' || locns[i][s - 1] != '\345' ||
-			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\345' ) abort( "malloc/free corrupt storage" );
-		free( locns[i] );
-    } // for
-
-    // check calloc/free (sbrk)
-
-    for ( i = 0; i < NoOfAllocs; i += 1 ) {
-		size_t s = (i + 1) * 20;
-		char *area = (char *)calloc( 5, s );
-		if ( area == 0 ) abort( "calloc/free out of memory" );
-		if ( area[0] != '\0' || area[s - 1] != '\0' ||
-			 area[malloc_usable_size( area ) - 1] != '\0' ||
-			 ! malloc_zero_fill( area ) ) abort( "calloc/free corrupt storage1" );
-		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
-		area[malloc_usable_size( area ) - 1] = '\345';	// fill ultimate byte
-		free( area );
-    } // for
-
-    for ( i = 0; i < NoOfAllocs; i += 1 ) {
-		size_t s = i + 1;
-		locns[i] = (char *)calloc( 5, s );
-		if ( locns[i] == 0 ) abort( "calloc/free out of memory" );
-		if ( locns[i][0] != '\0' || locns[i][s - 1] != '\0' ||
-			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\0' ||
-			 ! malloc_zero_fill( locns[i] ) ) abort( "calloc/free corrupt storage2" );
-		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
-		locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte
-    } // for
-    for ( i = 0; i < NoOfAllocs; i += 1 ) {
-		size_t s = i + 1;
-		if ( locns[i][0] != '\345' || locns[i][s - 1] != '\345' ||
-			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\345' ) abort( "calloc/free corrupt storage3" );
-		free( locns[i] );
-    } // for
-
-    // check calloc/free (mmap)
-
-    for ( i = 0; i < NoOfMmaps; i += 1 ) {
-		size_t s = i + default_mmap_start();				// cross over point
-		char *area = (char *)calloc( 1, s );
-		if ( area == 0 ) abort( "calloc/free out of memory" );
-		if ( area[0] != '\0' || area[s - 1] != '\0' ) abort( "calloc/free corrupt storage4.1" );
-		if ( area[malloc_usable_size( area ) - 1] != '\0' ) abort( "calloc/free corrupt storage4.2" );
-		if ( ! malloc_zero_fill( area ) ) abort( "calloc/free corrupt storage4.3" );
-		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
-		area[malloc_usable_size( area ) - 1] = '\345';	// fill ultimate byte
-		free( area );
-    } // for
-
-    for ( i = 0; i < NoOfMmaps; i += 1 ) {
-		size_t s = i + default_mmap_start();				// cross over point
-		locns[i] = (char *)calloc( 1, s );
-		if ( locns[i] == 0 ) abort( "calloc/free out of memory" );
-		if ( locns[i][0] != '\0' || locns[i][s - 1] != '\0' ||
-			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\0' ||
-			 ! malloc_zero_fill( locns[i] ) ) abort( "calloc/free corrupt storage5" );
-		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
-		locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte
-    } // for
-    for ( i = 0; i < NoOfMmaps; i += 1 ) {
-		size_t s = i + default_mmap_start();				// cross over point
-		if ( locns[i][0] != '\345' || locns[i][s - 1] != '\345' ||
-			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\345' ) abort( "calloc/free corrupt storage6" );
-		free( locns[i] );
-    } // for
-
-    // check memalign/free (sbrk)
-
-    enum { limit = 64 * 1024 };							// check alignments up to here
-
-    for ( size_t a = libAlign(); a <= limit; a += a ) {	// generate powers of 2
-		//sout | alignments[a] | endl;
-		for ( int s = 1; s < NoOfAllocs; s += 1 ) {		// allocation of size 0 can return null
-			char *area = (char *)memalign( a, s );
-			if ( area == 0 ) abort( "memalign/free out of memory" );
-			//sout | i | " " | area | endl;
-			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
-				abort( "memalign/free bad alignment : memalign(%d,%d) = %p", (int)a, s, area );
-			} // if
-			area[0] = '\345'; area[s - 1] = '\345';	// fill first/last byte
-			area[malloc_usable_size( area ) - 1] = '\345'; // fill ultimate byte
-			free( area );
-		} // for
-    } // for
-
-    // check memalign/free (mmap)
-
-    for ( size_t a = libAlign(); a <= limit; a += a ) {	// generate powers of 2
-		//sout | alignments[a] | endl;
-		for ( i = 1; i < NoOfMmaps; i += 1 ) {
-			size_t s = i + default_mmap_start();			// cross over point
-			char *area = (char *)memalign( a, s );
-			if ( area == 0 ) abort( "memalign/free out of memory" );
-			//sout | i | " " | area | endl;
-			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
-				abort( "memalign/free bad alignment : memalign(%d,%d) = %p", (int)a, (int)s, area );
-			} // if
-			area[0] = '\345'; area[s - 1] = '\345';		// fill first/last byte
-			area[malloc_usable_size( area ) - 1] = '\345'; // fill ultimate byte
-			free( area );
-		} // for
-    } // for
-
-    // check calloc/realloc/free (sbrk)
-
-    for ( i = 1; i < 10000; i += 12 ) {
-		// initial N byte allocation
-		char *area = (char *)calloc( 5, i );
-		if ( area == 0 ) abort( "calloc/realloc/free out of memory" );
-		if ( area[0] != '\0' || area[i - 1] != '\0' ||
-			 area[malloc_usable_size( area ) - 1] != '\0' ||
-			 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage1" );
-
-		// Do not start this loop index at 0 because realloc of 0 bytes frees the storage.
-		for ( int s = i; s < 256 * 1024; s += 26 ) {	// start at initial memory request
-			area = (char *)realloc( area, s );			// attempt to reuse storage
-			if ( area == 0 ) abort( "calloc/realloc/free out of memory" );
-			if ( area[0] != '\0' || area[s - 1] != '\0' ||
-				 area[malloc_usable_size( area ) - 1] != '\0' ||
-				 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage2" );
-		} // for
-		free( area );
-    } // for
-
-    // check calloc/realloc/free (mmap)
-
-    for ( i = 1; i < 1000; i += 12 ) {
-		// initial N byte allocation
-		size_t s = i + default_mmap_start();				// cross over point
-		char *area = (char *)calloc( 1, s );
-		if ( area == 0 ) abort( "calloc/realloc/free out of memory" );
-		if ( area[0] != '\0' || area[s - 1] != '\0' ||
-			 area[malloc_usable_size( area ) - 1] != '\0' ||
-			 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage1" );
-
-		// Do not start this loop index at 0 because realloc of 0 bytes frees the storage.
-		for ( int r = i; r < 256 * 1024; r += 26 ) {	// start at initial memory request
-			area = (char *)realloc( area, r );		// attempt to reuse storage
-			if ( area == 0 ) abort( "calloc/realloc/free out of memory" );
-			if ( area[0] != '\0' || area[r - 1] != '\0' ||
-				 area[malloc_usable_size( area ) - 1] != '\0' ||
-				 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage2" );
-		} // for
-		free( area );
-    } // for
-
-    // check memalign/realloc/free
-
-    size_t amount = 2;
-    for ( size_t a = libAlign(); a <= limit; a += a ) {	// generate powers of 2
-		// initial N byte allocation
-		char *area = (char *)memalign( a, amount );		// aligned N-byte allocation
-		if ( area == 0 ) abort( "memalign/realloc/free out of memory" ); // no storage ?
-		//sout | alignments[a] | " " | area | endl;
-		if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
-			abort( "memalign/realloc/free bad alignment : memalign(%d,%d) = %p", (int)a, (int)amount, area );
-		} // if
-		area[0] = '\345'; area[amount - 2] = '\345';	// fill first/penultimate byte
-
-		// Do not start this loop index at 0 because realloc of 0 bytes frees the storage.
-		for ( int s = amount; s < 256 * 1024; s += 1 ) { // start at initial memory request
-			if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "memalign/realloc/free corrupt storage" );
-			area = (char *)realloc( area, s );			// attempt to reuse storage
-			if ( area == 0 ) abort( "memalign/realloc/free out of memory" ); // no storage ?
-			//sout | i | " " | area | endl;
-			if ( (size_t)area % a != 0 ) {				// check for initial alignment
-				abort( "memalign/realloc/free bad alignment %p", area );
-			} // if
-			area[s - 1] = '\345';						// fill last byte
-		} // for
-		free( area );
-    } // for
-
-    // check cmemalign/free
-
-    for ( size_t a = libAlign(); a <= limit; a += a ) {	// generate powers of 2
-		//sout | alignments[a] | endl;
-		for ( int s = 1; s < limit; s += 1 ) {			// allocation of size 0 can return null
-			char *area = (char *)cmemalign( a, 1, s );
-			if ( area == 0 ) abort( "cmemalign/free out of memory" );
-			//sout | i | " " | area | endl;
-			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
-				abort( "cmemalign/free bad alignment : cmemalign(%d,%d) = %p", (int)a, s, area );
-			} // if
-			if ( area[0] != '\0' || area[s - 1] != '\0' ||
-				 area[malloc_usable_size( area ) - 1] != '\0' ||
-				 ! malloc_zero_fill( area ) ) abort( "cmemalign/free corrupt storage" );
-			area[0] = '\345'; area[s - 1] = '\345';		// fill first/last byte
-			free( area );
-		} // for
-    } // for
-
-    // check cmemalign/realloc/free
-
-    amount = 2;
-    for ( size_t a = libAlign() + libAlign(); a <= limit; a += a ) { // generate powers of 2
-		// initial N byte allocation
-		char *area = (char *)cmemalign( a, 1, amount );	// aligned N-byte allocation
-		if ( area == 0 ) abort( "cmemalign/realloc/free out of memory" ); // no storage ?
-		//sout | alignments[a] | " " | area | endl;
-		if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
-			abort( "cmemalign/realloc/free bad alignment : cmemalign(%d,%d) = %p", (int)a, (int)amount, area );
-		} // if
-		if ( area[0] != '\0' || area[amount - 1] != '\0' ||
-			 area[malloc_usable_size( area ) - 1] != '\0' ||
-			 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc/free corrupt storage1" );
-		area[0] = '\345'; area[amount - 2] = '\345';	// fill first/penultimate byte
-
-		// Do not start this loop index at 0 because realloc of 0 bytes frees the storage.
-		for ( int s = amount; s < 256 * 1024; s += 1 ) { // start at initial memory request
-			if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "cmemalign/realloc/free corrupt storage2" );
-			area = (char *)realloc( area, s );			// attempt to reuse storage
-			if ( area == 0 ) abort( "cmemalign/realloc/free out of memory" ); // no storage ?
-			//sout | i | " " | area | endl;
-			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
-				abort( "cmemalign/realloc/free bad alignment %p", area );
-			} // if
-			if ( area[s - 1] != '\0' || area[s - 1] != '\0' ||
-				 area[malloc_usable_size( area ) - 1] != '\0' ||
-				 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc/free corrupt storage3" );
-			area[s - 1] = '\345';						// fill last byte
-		} // for
-		free( area );
-    } // for
-	//sout | "worker" | thisTask() | "successful completion" | endl;
-} // Worker main
-
-int main() {
-    const unsigned int NoOfWorkers = 4;
-    {
-		processor processors[NoOfWorkers - 1] __attribute__(( unused )); // more than one processor
-		Worker workers[NoOfWorkers] __attribute__(( unused ));
-    }
-	// checkFreeOn();
-    // malloc_stats();
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa -nodebug -O2 heap.c" //
-// End: //
Index: c/tests/hello.c
===================================================================
--- src/tests/hello.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,36 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// hello.c -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jun  5 08:12:27 2017
-// Update Count     : 15
-//
-
-#include <fstream>
-
-int main() {
-	sout | "Hello world!" | endl;
-	sout | "Bonjour le monde!" | endl;
-	sout | "Hola Mundo!" | endl;
-	sout | "Hallo Welt!" | endl;
-	sout | "Kaixo Mundua!" | endl;
-	sout | "Chào thế giới!" | endl;
-	sout | "Привет мир!" | endl;
-	sout | "שלום עולם!" | endl;
-	sout | "你好，世界!" | endl;
-	sout | "こんにちは世界!" | endl;
-	sout | "안녕하세요 세계!" | endl;
-	sout | "नमस्ते दुनिया!" | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa hello.c" //
-// End: //
Index: c/tests/identFuncDeclarator.c
===================================================================
--- src/tests/identFuncDeclarator.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,118 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// identFuncDeclarator.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Aug 17 08:36:34 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jan 17 22:39:13 2018
-// Update Count     : 2
-// 
-
-int main() {
-	int f1;
-	int (f2);
-
-	int * f3;
-	int ** f4;
-	int * const * f5;
-	int * const * const f6;
-
-	int * (f7);
-	int ** (f8);
-	int * const * (f9);
-	int * const * const (f10);
-
-	int (* f11);
-	int (** f12);
-	int (* const * f13);
-	int (* const * const f14);
-
-	int f15[2];
-	int f16[10];
-	int (f17[2]);
-	int (f18[10]);
-
-	int * f19[2];
-	int * f20[10];
-	int ** f21[2];
-	int ** f22[10];
-	int * const * f23[2];
-	int * const * f24[10];
-	int * const * const f25[2];
-	int * const * const f26[10];
-
-	int * (f27[2]);
-	int * (f28[10]);
-	int ** (f29[2]);
-	int ** (f30[10]);
-	int * const * (f31[2]);
-	int * const * (f32[10]);
-	int * const * const (f33[2]);
-	int * const * const (f34[10]);
-
-	int (* f35[2]);
-	int (* f36[10]);
-	int (** f37[2]);
-	int (** f38[10]);
-	int (* const * f39[2]);
-	int (* const * f40[10]);
-	int (* const * const f41[2]);
-	int (* const * const f42[10]);
-
-	int f43[2][3];
-	int f44[3][3];
-	int (f45[2])[3];
-	int (f46[3])[3];
-	int ((f47[2]))[3];
-	int ((f48[3]))[3];
-
-	int * f49[2][3];
-	int * f50[3][3];
-	int ** f51[2][3];
-	int ** f52[3][3];
-	int * const * f53[2][3];
-	int * const * f54[3][3];
-	int * const * const f55[2][3];
-	int * const * const f56[3][3];
-
-	int (* f57[2][3]);
-	int (* f58[3][3]);
-	int (** f59[2][3]);
-	int (** f60[3][3]);
-	int (* const * f61[2][3]);
-	int (* const * f62[3][3]);
-	int (* const * const f63[2][3]);
-	int (* const * const f64[3][3]);
-
-	int f65(int);
-	int (f66)(int);
-
-	int * f67(int);
-	int ** f68(int);
-	int * const * f69(int);
-	int * const * const f70(int);
-
-	int * (f71)(int);
-	int ** (f72)(int);
-	int * const * (f73)(int);
-	int * const * const (f74)(int);
-
-	int (* f75)(int);
-	int (** f76)(int);
-	int (* const * f77)(int);
-	int (* const * const f78)(int);
-
-	int (* (* f79)(int))();
-	int (* (* const f80)(int))();
-	int (* const(* const f81)(int))();
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa identFuncDeclarator.c" //
-// End: //
Index: c/tests/identParamDeclarator.c
===================================================================
--- src/tests/identParamDeclarator.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,166 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// identParamDeclarator.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Aug 17 08:37:56 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jan 17 22:36:11 2018
-// Update Count     : 2
-// 
-
-int fred (
-	int f1,
-	int (f2),
-
-	int *f3,
-	int **f4,
-	int * const *f5,
-	int * const * const f6,
-
-	int *(f7),
-	int **(f8),
-	int * const *(f9),
-	int * const * const (f10),
-
-	int (*f11),
-	int (**f12),
-	int (* const *f13),
-	int (* const * const f14),
-
-	int f15[],
-	int f16[10],
-	int (f17[]),
-	int (f18[10]),
-
-	int *f19[],
-	int *f20[10],
-	int **f21[],
-	int **f22[10],
-	int * const *f23[],
-	int * const *f24[10],
-	int * const * const f25[],
-	int * const * const f26[10],
-
-	int *(f27[]),
-	int *(f28[10]),
-	int **(f29[]),
-	int **(f30[10]),
-	int * const *(f31[]),
-	int * const *(f32[10]),
-	int * const * const (f33[]),
-	int * const * const (f34[10]),
-
-	int (*f35[]),
-	int (*f36[10]),
-	int (**f37[]),
-	int (**f38[10]),
-	int (* const *f39[]),
-	int (* const *f40[10]),
-	int (* const * const f41[]),
-	int (* const * const f42[10]),
-
-	int f43[][3],
-	int f44[3][3],
-	int (f45[])[3],
-	int (f46[3])[3],
-	int ((f47[]))[3],
-	int ((f48[3]))[3],
-
-	int *f49[][3],
-	int *f50[3][3],
-	int **f51[][3],
-	int **f52[3][3],
-	int * const *f53[][3],
-	int * const *f54[3][3],
-	int * const * const f55[][3],
-	int * const * const f56[3][3],
-
-	int (*f57[][3]),
-	int (*f58[3][3]),
-	int (**f59[][3]),
-	int (**f60[3][3]),
-	int (* const *f61[][3]),
-	int (* const *f62[3][3]),
-	int (* const * const f63[][3]),
-	int (* const * const f64[3][3]),
-
-	int f65(int),
-	int (f66)(int),
-
-	int *f67(int),
-	int **f68(int),
-	int * const *f69(int),
-	int * const * const f70(int),
-
-	int *(f71)(int),
-	int **(f72)(int),
-	int * const *(f73)(int),
-	int * const * const (f74)(int),
-
-	int (*f75)(int),
-	int (**f76)(int),
-	int (* const *f77)(int),
-	int (* const * const f78)(int),
-
-	int (*(*f79)(int))(),
-	int (*(* const f80)(int))(),
-	int (* const(* const f81)(int))(),
-
-	int f82[const *],
-	int f83[const 3],
-	int f84[static 3],
-	int f85[static const 3],
-
-	int (f86[const *]),
-	int (f87[const 3]),
-	int (f88[static 3]),
-	int (f89[static const 3]),
-
-	int *f90[const *],
-	int *f91[const 3],
-	int **f92[static 3],
-	int * const *f93[static const 3],
-	int * const * const f94[static const 3],
-
-	int *(f95[const *]),
-	int *(f96[const 3]),
-	int **(f97[static 3]),
-	int * const *(f98[static const 3]),
-	int * const * const (f99[static const 3]),
-
-	int f100[const *][3],
-	int f101[const 3][3],
-	int f102[static 3][3],
-	int f103[static const 3][3],
-
-	int (f104[const *][3]),
-	int (f105[const 3][3]),
-	int (f106[static 3][3]),
-	int (f107[static const 3][3]),
-
-	int *f108[const *][3],
-	int *f109[const 3][3],
-	int **f110[static 3][3],
-	int * const *f111[static const 3][3],
-	int * const * const f112[static const 3][3],
-
-	int *(f113[const *][3]),
-	int *(f114[const 3][3]),
-	int **(f115[static 3][3]),
-	int * const *(f116[static const 3][3]),
-	int * const * const (f117[static const 3][3])
-    );
-
-int main( int argc, char const *argv[] ) {				// dummy main
-	return 0;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa identParamDeclarator.c" //
-// End: //
Index: c/tests/identity.c
===================================================================
--- src/tests/identity.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,42 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// identity.c -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun  8 08:21:32 2017
-// Update Count     : 18
-//
-
-#include <fstream>
-
-forall( otype T )
-T identity( T t ) {
-	return t;
-}
-
-int main() {
-	sout | "char\t\t\t"					| identity( 'z' ) | endl;
-	sout | "signed int\t\t"				| identity( 4 ) | endl;
-	sout | "unsigned int\t\t"			| identity( 4u ) | endl;
-	sout | "signed long int\t\t" 		| identity( 4l ) | endl;
-	sout | "unsigned long int\t" 		| identity( 4ul ) | endl;
-	sout | "signed long long int\t"		| identity( 4ll ) | endl;
-	sout | "unsigned long long int\t"	| identity( 4ull ) | endl;
-	sout | "float\t\t\t" 				| identity( 4.1f ) | endl;
-	sout | "double\t\t\t"				| identity( 4.1 ) | endl;
-	sout | "long double\t\t"			| identity( 4.1l ) | endl;
-	sout | "float _Complex\t\t"			| identity( -4.1F-2.0iF ) | endl;
-	sout | "double _Complex\t\t"		| identity( -4.1D-2.0iD ) | endl;
-	sout | "long double _Complex\t"		| identity( -4.1L-2.0iL ) | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa identity.c" //
-// End: //
Index: c/tests/ifwhileCtl.c
===================================================================
--- src/tests/ifwhileCtl.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//
-// 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.
-//
-// ifwhileCtl.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Sat Aug 26 10:13:11 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jun  6 17:15:09 2018
-// Update Count     : 21
-//
-
-#include <fstream>
-
-int f( int r ) { return r; }
-
-int main( void ) {
-	int x = 4, y = 3;
-
-	if ( int x = 1 ) {
-		sout | "x != 0 correct" | endl;
-	} else {
-		sout | "x == 0 incorrect" | endl;
-	} // if
-
-	if ( int x = 4, y = 0 ) {
-		sout | "x != 0 && y != 0 incorrect" | endl;
-	} else if ( int x = 4, y = 1 ) {
-		sout | "x != 0 && y != 0 correct" | endl;
-	} else {
-		sout | "x == 0 || y == 0 incorrect" | endl;
-	} // if
-
-	if ( int x = 5, y = f( x ); x == y ) {
-		sout | "x == y correct" | endl;
-	} else {
-		sout | "x != y incorrect" | endl;
-	} // if
-
-	if ( struct S { int i; } s = { 3 }; s.i < 4 ) {
-		S s1;
-		sout | "s.i < 4 correct" | endl;
-	} else {
-		S s1;
-		sout | "s.i >= 4 incorrect" | endl;
-	} // if
-
-	while ( int x = 1 ) {
-		sout | "x != 0 correct" | endl;
-		break;
-	} // while
-
-	while ( int x = 4, y = 0 ) {
-		sout | "x != 0 && y != 0 incorrect" | endl;
-	} // while
-
-	while ( int x = 5, y = f( x ); x == y ) {
-		sout | "x == y correct" | endl;
-		break;
-	} // while
-
-	while ( struct S { int i; } s = { 3 }; s.i < 4 ) {
-		S s1;
-		sout | "s.i < 4 correct" | endl;
-		break;
-	} // while
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa ifwhileCtl.c" //
-// End: //
Index: c/tests/io1.c
===================================================================
--- src/tests/io1.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,73 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// io1.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Mar  2 16:56:02 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 24 21:17:56 2018
-// Update Count     : 104
-// 
-
-#include <fstream>
-
-int main() {
-	int x = 3, y = 5, z = 7;
-	sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2) | endl;
-	sout | 1 | 2 | 3 | endl;
-	sout | '1' | '2' | '3' | endl;
-	sout | 1 | "" | 2 | "" | 3 | endl;
-	sout | endl;
-
-	sout | "opening delimiters" | endl;
-	sout
-		 | "x (" | 1
-		 | "x [" | 2
-		 | "x {" | 3
-		 | "x =" | 4
-		 | "x $" | 5
-		 | "x £" | 6
-		 | "x ¥" | 7
-		 | "x ¡" | 8
-		 | "x ¿" | 9
-		 | "x «" | 10
-		 | endl | endl;
-
-	sout | "closing delimiters" | endl;
-	sout
-		 | 1 | ", x"
-		 | 2 | ". x"
-		 | 3 | "; x"
-		 | 4 | "! x"
-		 | 5 | "? x"
-		 | 6 | "% x"
-		 | 7 | "¢ x"
-		 | 8 | "» x"
-		 | 9 | ") x"
-		 | 10 | "] x"
-		 | 11 | "} x"
-		 | endl | endl;
-
-	sout | "opening/closing delimiters" | endl;
-	sout
-		 | "x`" | 1 | "`x'" | 2
-		 | "'x\"" | 3 | "\"x:" | 4
-		 | ":x " | 5 | " x\t" | 6
-		 | "\tx\f" | 7 | "\fx\v" | 8
-		 | "\vx\n" | 9 | "\nx\r" | 10
-		 | "\rx"
-		 | endl | endl;
-
-	sout | "override opening/closing delimiters" | endl;
-	sout | "x ( " | 1 | " ) x" | 2 | " , x" | 3 | " :x: " | 4 | endl;
-	sout | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa io1.c" //
-// End: //
Index: c/tests/io2.c
===================================================================
--- src/tests/io2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,137 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// io2.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Mar  2 16:56:02 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 24 21:17:41 2018
-// Update Count     : 103
-//
-
-#include <fstream>
-
- #define xstr(s) str(s)
-#define str(s) #s
-
-int main() {
-	_Bool b;											// basic types
-	char c;
-	signed char sc;
-	unsigned char usc;
-	short int si;
-	unsigned short int usi;
-	int i;
-	unsigned int ui;
-	long int li;
-	unsigned long int uli;
-	long long int lli;
-	unsigned long long int ulli;
-	float f;
-	double d;
-	long double ld;
-	float _Complex fc;
-	double _Complex dc;
-	long double _Complex ldc;
-	enum { size = 10 };
-	char s1[size], s2[size];
-
-	ifstream in = { xstr(IN_DIR) "io.data" };						// create / open file
-
-	sout | "input bacis types" | endl;
-	in	 | b											// boolean
-		 | c | sc | usc									// character
-		 | si | usi | i | ui | li | uli | lli | ulli	// integral
-		 | f | d | ld									// floating point
-		 | fc | dc | ldc								// floating-point complex
-		 | cstr( s1 ) | cstr( s2, size );				// C string, length unchecked and checked
-	sout | endl;
-
-	sout | "output basic types" | endl;
-	sout | b | endl										// boolean
-		 | c | ' ' | sc | ' ' | usc | endl				// character
-		 | si | usi | i | ui | li | uli | lli | ulli | endl // integral
-		 | f | d | ld | endl							// floating point
-		 | fc | dc | ldc | endl;						// complex
-	sout | endl;
-
-	sout | "tuples" | endl;
-	[int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 4, [ 5, 6 ] ];
-	sout | t1 | t2 | endl;								// print tuple
-	sout | endl;
-
-	sout | "toggle separator" | endl;
-	sout | f | "" | d | "" | ld | endl					// floating point without separator
-		 | sepDisable | fc | dc | ldc | endl			// complex without separator
-		 | fc | sepOn | dc | ldc | endl					// local separator add
-		 | sepEnable | fc | dc | ldc | endl				// complex with separator
-		 | fc | sepOff | dc | ldc | endl				// local separator removal
-		 | s1 | sepOff | s2 | endl						// local separator removal
-		 | s1 | "" | s2 | endl;							// local separator removal
-	sout | endl;
-
-	sout | "change separator" | endl;
-	sout | "from \"" | sep | "\"";
-	sepSet( sout, ", $" );								// change separator, maximum of 15 characters
-	sout | " to \"" | sep | "\"" | endl;
-	sout | f | d | ld | endl
-		 | fc | dc | ldc | endl
-		 | s1 | s2 | endl
-		 | t1 | t2 | endl;								// print tuple
-	sout | endl;
-	sout | "from \"" | sep | "\" ";
-	sepSet( sout, " " );								// restore separator
-	sout | "to \"" | sep | "\"" | endl;
-	sout | f | d | ld | endl
-		 | fc | dc | ldc | endl
-		 | s1 | s2 | endl
-		 | t1 | t2 | endl;								// print tuple
-	sout | endl;
-
-	sout | "check sepOn/sepOff" | endl;
-	sout | sepOn | 1 | 2 | 3 | sepOn | endl;			// no separator at start/end of line
-	sout | 1 | sepOff | 2 | 3 | endl;					// locally turn off implicit separator
-	sout | sepOn | sepOn | 1 | 2 | 3 | sepOn | sepOff | sepOn | '\n'; // no separator at start/end of line
-	sout | 1 | 2 | 3 | "\n\n" | sepOn;					// no separator at start of next line
-	sout | 1 | 2 | 3 | endl;
-	sout | endl;
-
-	sout | "check enable/disable" | endl;
-	sout | sepDisable | 1 | 2 | 3 | endl;				// globally turn off implicit separation
-	sout | 1 | sepOn | 2 | 3 | endl;					// locally turn on implicit separator
-	sout | sepEnable | 1 | 2 | 3 | endl | sepDisable;	// globally turn on/off implicit separation
-	sout | 1 | 2 | 3 | endl | sepEnable;				// globally turn on implicit separation
-	sout | 1 | 2 | 3 | sepOn | sepDisable | endl;		// ignore seperate at end of line
-	sout | 1 | 2 | 3 | sepOn | sepEnable | endl;		// separator at end of line
-	sout | 1 | 2 | 3 | endl;
-	sout | endl;
-
-//	sout | fmt( d, "%8.3f" ) || endl;
-//	sout | endl;
-
-	sepSetTuple( sout, " " );							// set tuple separator from ", " to " "
-	sout | t1 | t2 | " \"" | sep | "\"" | endl;
-	sepSetTuple( sout, ", " );							// reset tuple separator to ", "
-	sout | t1 | t2 | " \"" | sep | "\"" | endl;
-	sout | t1 | t2 | endl;								// print tuple
-	sout | endl;
-
-	[int, int, const char *, double] t3 = { 3, 4, "a", 7.2 };
-	sout | [ 3, 4, "a", 7.2 ] | endl;
-	sout | t3 | endl;
-	sepSetTuple( sout, " " );
-	sout | t3 | endl;
-	sout | sepOn | t3 | sepDisable | t3 | sepEnable | t3 | endl;
-	sepSet( sout, "^" );
-	sepSetTuple( sout, "-" );
-	sout | t3 | 3 | 4 | t3 | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa io2.c" //
-// End: //
Index: c/tests/labelledExit.c
===================================================================
--- src/tests/labelledExit.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,162 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// labelledExit.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Aug 10 07:29:39 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 10 07:30:15 2016
-// Update Count     : 1
-// 
-
-int foo() {
-  	int i;
-  	int x, y;
-
-  	x = 0; y = 0;
-
-  	// block, labelled exits
-
-  Block: {
-  		if ( x == y ) {
-  			for ( ; i < y; ) {
-  				y += 1;
-  				if ( y < 10 ) break Block;
-  			}
-  		}
-  	}
-
-  	// loops, labelled exits
-
-  w1: while ( y == 10 );
-
-  w2: while ( x < 10 ) {
-  		while (y < 5 ) {
-  			if ( y == 3 ) break w2;
-  		}
-  		x += 1;
-  	}
-
-  A: for ( i = 0; i < 10; i += 1 ) {
-  	  B: for ( i = 0; i < 10; i += 1 ) {
-  		  C: for ( i = 0; i < 10; i += 1 ) {
-  				goto A;
-  				goto B;
-  				goto C;
-  				continue A;
-  				continue B;
-  				continue C;
-  				continue;
-  				break A;
-  				break B;
-  				break C;
-  				break;
-  			}
-  		}
-  	}
-
-  D: for ( ;; ) {
-  		break D;
-  		continue D;
-  	}
-
-  Z : i += 1;
-  	goto Z;
-  X: Y: for ( ;; ) {
-  		i += 1;
-  		if ( i > 5 ) continue X;
-  		if ( i < 5 ) break X;
-  		if ( i < 5 ) break Y;
-  		break;
-  	}
-  XX: for ( ;; ) {
-  	  YY: for ( ;; ) {
-  		  ZZ: for ( ;; ) {
-  				i += 1;
-  				if ( i > 5 ) continue XX;
-  				if ( i < 5 ) continue YY;
-  				if ( i < 5 ) continue ZZ;
-  				if ( i > 5 ) break XX;
-  				if ( i < 5 ) break YY;
-  				if ( i < 5 ) break ZZ;
-  				break;
-  			}
-  		}
-  	}
-
-  	for ( ;; ) ;
-  	for ( int i = 0 ;; ) ;
-  	for (  ; i < 0; ) ;
-  	for (  ; ; i += 1 ) ;
-  L0:  L1:  L2:  L3:  L4:  L5:  L6:  L7:  L8:  L9:
-  L10: L11: L12: L13: L14: L15: L16: L17: L18: L19:
-  L20: L21: L22: L23: L24: L25: L26: L27: L28: L29:
-  L31: L32: L33: L34:
-  	for ( ;; ) {
-  		break L0;
-  	}
-
-  	// switch/choose, labelled exits
-
-  Switch: switch ( i ) {
-  	  default:
-  		i += 1;
-  	  case 0:
-  		i += 1;
-  		break Switch;
-  	  case 1:
-  		switch ( i ) {
-  		  case 0:
-  			break Switch;
-  		  default:
-  			; break;
-  		}
-  	}
-
-  Choose: choose ( i ) {
-  	  default:
-  		i += 1;
-  	  case 0:
-  		i += 1;
-  		break Choose;
-  	  case 1:
-  		choose ( i ) {
-  		  case 0:
-  			break;
-  		  default:
-  			break Choose;
-  		}
-  		fallthru;
-  	  case 2:
-  		i += 1;
-  	}
-
-	// computed goto
-	// {
-	// 	void *array[] = { &&foo, &&bar, &&hack };
-	//   foo: bar: hack:
-	// 	&&foo;
-	// 	&&bar;
-	// 	goto *array[i];
-	// }
-
-  Q: if ( i > 5 ) {
-		i += 1;
-		break Q;
-	}
-	else
-		i += 1;
-}
-
-int main( int argc, char const *argv[] ) {
-	/* code */
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa labelledExit.c" //
-// End: //
Index: c/tests/limits.c
===================================================================
--- src/tests/limits.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,156 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// limits.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Tue May 10 20:44:20 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar  1 16:21:55 2018
-// Update Count     : 7
-//
-
-#include <limits>
-
-// Integral Constants
-
-signed char m = MIN;
-unsigned char m = MIN;
-short int m = MIN;
-unsigned short int m = MIN;
-int m = MIN;
-unsigned int m = MIN;
-long int m = MIN;
-unsigned long int m = MIN;
-long long int m = MIN;
-unsigned long long int m = MIN;
-
-signed char M = MAX;
-unsigned char M = MAX;
-short int M = MAX;
-unsigned short int M = MAX;
-int M = MAX;
-unsigned int M = MAX;
-long int M = MAX;
-unsigned long int M = MAX;
-long long int M = MAX;
-unsigned long long int M = MAX;
-
-// Floating-Point Constants
-
-float m = MIN;
-double m = MIN;
-long double m = MIN;
-float _Complex m = MIN;
-double _Complex m = MIN;
-long double _Complex m = MIN;
-
-float M = MAX;
-double M = MAX;
-long double M = MAX;
-float _Complex M = MAX;
-double _Complex M = MAX;
-long double _Complex M = MAX;
-
-float pi = PI;
-float pi_2 = PI_2;
-float pi_4 = PI_4;
-float _1_pi = _1_PI;
-float _2_pi = _2_PI;
-float _2_sqrt_pi = _2_SQRT_PI;
-
-double pi = PI;
-double pi_2 = PI_2;
-double pi_4 = PI_4;
-double _1_pi = _1_PI;
-double _2_pi = _2_PI;
-double _2_SQRT_pi = _2_SQRT_PI;
-
-long double pi = PI;
-long double pi_2 = PI_2;
-long double pi_4 = PI_4;
-long double _1_pi = _1_PI;
-long double _2_pi = _2_PI;
-long double _2_sqrt_pi = _2_SQRT_PI;
-
-float _Complex pi = PI;
-float _Complex pi_2 = PI_2;
-float _Complex pi_4 = PI_4;
-float _Complex _1_pi = _1_PI;
-float _Complex _2_pi = _2_PI;
-float _Complex _2_sqrt_pi = _2_SQRT_PI;
-
-double _Complex pi = PI;
-double _Complex pi_2 = PI_2;
-double _Complex pi_4 = PI_4;
-double _Complex _1_pi = _1_PI;
-double _Complex _2_pi = _2_PI;
-double _Complex _2_sqrt_pi = _2_SQRT_PI;
-
-long double _Complex pi = PI;
-long double _Complex pi_2 = PI_2;
-long double _Complex pi_4 = PI_4;
-long double _Complex _1_pi = _1_PI;
-long double _Complex _2_pi = _2_PI;
-long double _Complex _2_sqrt_pi = _2_SQRT_PI;
-
-float e = E;
-float log2_e = LOG2_E;
-float log10_e = LOG10_E;
-float ln_2 = LN_2;
-float ln_10 = LN_10;
-float sqrt_2 = SQRT_2;
-float _1_sqrt_2 = _1_SQRT_2;
-
-double e = E;
-double log2_e = LOG2_E;
-double log10_e = LOG10_E;
-double ln_2 = LN_2;
-double ln_10 = LN_10;
-double sqrt_2 = SQRT_2;
-double _1_sqrt_2 = _1_SQRT_2;
-
-long double e = E;
-long double log2_e = LOG2_E;
-long double log10_e = LOG10_E;
-long double ln_2 = LN_2;
-long double ln_10 = LN_10;
-long double sqrt_2 = SQRT_2;
-long double _1_sqrt_2 = _1_SQRT_2;
-
-float _Complex e = E;
-float _Complex log2_e = LOG2_E;
-float _Complex log10_e = LOG10_E;
-float _Complex ln_2 = LN_2;
-float _Complex ln_10 = LN_10;
-float _Complex sqrt_2 = SQRT_2;
-float _Complex _1_sqrt_2 = _1_SQRT_2;
-
-double _Complex e = E;
-double _Complex log2_e = LOG2_E;
-double _Complex log10_e = LOG10_E;
-double _Complex ln_2 = LN_2;
-double _Complex ln_10 = LN_10;
-double _Complex sqrt_2 = SQRT_2;
-double _Complex _1_sqrt_2 = _1_SQRT_2;
-
-long double _Complex e = E;
-long double _Complex log2_e = LOG2_E;
-long double _Complex log10_e = LOG10_E;
-long double _Complex ln_2 = LN_2;
-long double _Complex ln_10 = LN_10;
-long double _Complex sqrt_2 = SQRT_2;
-long double _Complex _1_sqrt_2 = _1_SQRT_2;
-
-int main(int argc, char const *argv[]) {
-	//DUMMY
-	return 0;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa limits.c" //
-// End: //
Index: c/tests/literals.c
===================================================================
--- src/tests/literals.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,327 +1,0 @@
-// 
-// 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.
-// 
-// literals.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Sat Sep  9 16:34:38 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul  1 15:12:15 2018
-// Update Count     : 137
-// 
-
-#ifdef __CFA__
-#include <stdint.h>
-#include <fstream>
-
-void f( char v ) { sout | "char " | v | endl; }
-void f( signed char v ) { sout | "signed char " | v | endl; }
-void f( unsigned char v ) { sout | "unsigned char " | v | endl; }
-void f( signed short v ) { sout | "signed short int" | v | endl; }
-void f( unsigned short v ) { sout | "unsigned short int" | v | endl; }
-void f( size_t v ) { sout | "size_t" | v | endl; }
-#endif // __CFA__
-
-//#define ERROR
-
-int main() {
-// integer literals
-
-	// binary
-	 0b01101011;   0b01101011u;   0b01101011l;   0b01101011ll;   0b01101011ul;   0b01101011lu;   0b01101011ull;   0b01101011llu;
-	+0b01101011;  +0b01101011u;  +0b01101011l;  +0b01101011ll;  +0b01101011ul;  +0b01101011lu;  +0b01101011ull;  +0b01101011llu;
-	-0b01101011;  -0b01101011u;  -0b01101011l;  -0b01101011ll;  -0b01101011ul;  -0b01101011lu;  -0b01101011ull;  -0b01101011llu;
-
-	// octal
-	 01234567;   01234567u;   01234567l;   01234567ll;   01234567ul;   01234567lu;   01234567ull;   01234567llu;
-	+01234567;  +01234567u;  +01234567l;  +01234567ll;  +01234567ul;  +01234567lu;  +01234567ull;  +01234567llu;
-	-01234567;  -01234567u;  -01234567l;  -01234567ll;  -01234567ul;  -01234567lu;  -01234567ull;  -01234567llu;
-
-	// decimal
-	 1234567890;   1234567890u;   1234567890l;   1234567890ll;   1234567890ul;   1234567890lu;   1234567890ull;   1234567890llu;
-	+1234567890;  +1234567890u;  +1234567890l;  +1234567890ll;  +1234567890ul;  +1234567890lu;  +1234567890ull;  +1234567890llu;
-	-1234567890;  -1234567890u;  -1234567890l;  -1234567890ll;  -1234567890ul;  -1234567890lu;  -1234567890ull;  -1234567890llu;
-
-	// hexadecimal
-	 0x0123456789abcdef;   0x0123456789abcdefu;   0x0123456789abcdefl;   0x0123456789abcdefll;   0x0123456789abcdeful;   0x0123456789abcdeflu;   0x0123456789abcdefull;   0x0123456789abcdefllu;
-	+0x0123456789abcdef;  +0x0123456789abcdefu;  +0x0123456789abcdefl;  +0x0123456789abcdefll;  +0x0123456789abcdeful;  +0x0123456789abcdeflu;  +0x0123456789abcdefull;  +0x0123456789abcdefllu;
-	-0x0123456789abcdef;  -0x0123456789abcdefu;  -0x0123456789abcdefl;  -0x0123456789abcdefll;  -0x0123456789abcdeful;  -0x0123456789abcdeflu;  -0x0123456789abcdefull;  -0x0123456789abcdefllu;
-
-	 0x0123456789ABCDEF;   0x0123456789ABCDEFu;   0x0123456789ABCDEFl;   0x0123456789ABCDEFll;   0x0123456789ABCDEFul;   0x0123456789ABCDEFlu;   0x0123456789ABCDEFull;   0x0123456789ABCDEFllu;
-	+0x0123456789ABCDEF;  +0x0123456789ABCDEFu;  +0x0123456789ABCDEFl;  +0x0123456789ABCDEFll;  +0x0123456789ABCDEFul;  +0x0123456789ABCDEFlu;  +0x0123456789ABCDEFull;  +0x0123456789ABCDEFllu;
-	-0x0123456789ABCDEF;  -0x0123456789ABCDEFu;  -0x0123456789ABCDEFl;  -0x0123456789ABCDEFll;  -0x0123456789ABCDEFul;  -0x0123456789ABCDEFlu;  -0x0123456789ABCDEFull;  -0x0123456789ABCDEFllu;
-
-	 0X0123456789abcdef;   0X0123456789abcdefu;   0X0123456789abcdefl;   0X0123456789abcdefll;   0X0123456789abcdeful;   0X0123456789abcdeflu;   0X0123456789abcdefull;   0X0123456789abcdefllu;
-	+0X0123456789abcdef;  +0X0123456789abcdefu;  +0X0123456789abcdefl;  +0X0123456789abcdefll;  +0X0123456789abcdeful;  +0X0123456789abcdeflu;  +0X0123456789abcdefull;  +0X0123456789abcdefllu;
-	-0X0123456789abcdef;  -0X0123456789abcdefu;  -0X0123456789abcdefl;  -0X0123456789abcdefll;  -0X0123456789abcdeful;  -0X0123456789abcdeflu;  -0X0123456789abcdefull;  -0X0123456789abcdefllu;
-
-	 0X0123456789ABCDEF;   0X0123456789ABCDEFu;   0X0123456789ABCDEFl;   0X0123456789ABCDEFll;   0X0123456789ABCDEFul;   0X0123456789ABCDEFlu;   0X0123456789ABCDEFull;   0X0123456789ABCDEFllu;
-	+0X0123456789ABCDEF;  +0X0123456789ABCDEFu;  +0X0123456789ABCDEFl;  +0X0123456789ABCDEFll;  +0X0123456789ABCDEFul;  +0X0123456789ABCDEFlu;  +0X0123456789ABCDEFull;  +0X0123456789ABCDEFllu;
-	-0X0123456789ABCDEF;  -0X0123456789ABCDEFu;  -0X0123456789ABCDEFl;  -0X0123456789ABCDEFll;  -0X0123456789ABCDEFul;  -0X0123456789ABCDEFlu;  -0X0123456789ABCDEFull;  -0X0123456789ABCDEFllu;
-
-// decimal floating literals
-
-	 0123456789.;   0123456789.f;   0123456789.l;   0123456789.F;   0123456789.L;   0123456789.DL;
-	+0123456789.;  +0123456789.f;  +0123456789.l;  +0123456789.F;  +0123456789.L;  +0123456789.DL;
-	-0123456789.;  -0123456789.f;  -0123456789.l;  -0123456789.F;  -0123456789.L;  -0123456789.DL;
-
-	 0123456789.e09;   0123456789.e09f;   0123456789.e09l;   0123456789.e09F;   0123456789.e09L;   0123456789.e09DL;
-	+0123456789.e09;  +0123456789.e09f;  +0123456789.e09l;  +0123456789.e09F;  +0123456789.e09L;  +0123456789.e09DL;
-	-0123456789.e09;  -0123456789.e09f;  -0123456789.e09l;  -0123456789.e09F;  -0123456789.e09L;  -0123456789.e09DL;
-
-	 0123456789.e+09;   0123456789.e+09f;   0123456789.e+09l;   0123456789.e+09F;   0123456789.e+09L;   0123456789.e+09DL;
-	+0123456789.e+09;  +0123456789.e+09f;  +0123456789.e+09l;  +0123456789.e+09F;  +0123456789.e+09L;  +0123456789.e+09DL;
-	-0123456789.e+09;  -0123456789.e+09f;  -0123456789.e+09l;  -0123456789.e+09F;  -0123456789.e+09L;  -0123456789.e+09DL;
-
-	 0123456789.e-09;   0123456789.e-09f;   0123456789.e-09l;   0123456789.e-09F;   0123456789.e-09L;   0123456789.e-09DL;
-	+0123456789.e-09;  +0123456789.e-09f;  +0123456789.e-09l;  +0123456789.e-09F;  +0123456789.e-09L;  +0123456789.e-09DL;
-	-0123456789.e-09;  -0123456789.e-09f;  -0123456789.e-09l;  -0123456789.e-09F;  -0123456789.e-09L;  -0123456789.e-09DL;
-
-	 .0123456789;   .0123456789f;   .0123456789l;   .0123456789F;   .0123456789L;   .0123456789DL;
-	+.0123456789;  +.0123456789f;  +.0123456789l;  +.0123456789F;  +.0123456789L;  +.0123456789DL;
-	-.0123456789;  -.0123456789f;  -.0123456789l;  -.0123456789F;  -.0123456789L;  -.0123456789DL;
-
-	 .0123456789e09;   .0123456789e09f;   .0123456789e09l;   .0123456789e09F;   .0123456789e09L;   .0123456789e09DL;
-	+.0123456789e09;  +.0123456789e09f;  +.0123456789e09l;  +.0123456789e09F;  +.0123456789e09L;  +.0123456789e09DL;
-	-.0123456789e09;  -.0123456789e09f;  -.0123456789e09l;  -.0123456789e09F;  -.0123456789e09L;  -.0123456789e09DL;
-
-	 .0123456789E+09;   .0123456789E+09f;   .0123456789E+09l;   .0123456789E+09F;   .0123456789E+09L;   .0123456789E+09DL;
-	+.0123456789E+09;  +.0123456789E+09f;  +.0123456789E+09l;  +.0123456789E+09F;  +.0123456789E+09L;  +.0123456789E+09DL;
-	-.0123456789E+09;  -.0123456789E+09f;  -.0123456789E+09l;  -.0123456789E+09F;  -.0123456789E+09L;  -.0123456789E+09DL;
-
-	 .0123456789E-09;   .0123456789E-09f;   .0123456789E-09l;   .0123456789E-09F;   .0123456789E-09L;   .0123456789E-09DL;
-	-.0123456789E-09;  -.0123456789E-09f;  -.0123456789E-09l;  -.0123456789E-09F;  -.0123456789E-09L;  -.0123456789E-09DL;
-	-.0123456789E-09;  -.0123456789E-09f;  -.0123456789E-09l;  -.0123456789E-09F;  -.0123456789E-09L;  -.0123456789E-09DL;
-
-	 0123456789.0123456789;   0123456789.0123456789f;   0123456789.0123456789l;   0123456789.0123456789F;   0123456789.0123456789L;   0123456789.0123456789DL;
-	+0123456789.0123456789;  +0123456789.0123456789f;  +0123456789.0123456789l;  +0123456789.0123456789F;  +0123456789.0123456789L;  +0123456789.0123456789DL;
-	-0123456789.0123456789;  -0123456789.0123456789f;  -0123456789.0123456789l;  -0123456789.0123456789F;  -0123456789.0123456789L;  -0123456789.0123456789DL;
-
-	 0123456789.0123456789E09;   0123456789.0123456789E09f;   0123456789.0123456789E09l;   0123456789.0123456789E09F;   0123456789.0123456789E09L;   0123456789.0123456789E09DL;
-	+0123456789.0123456789E09;  +0123456789.0123456789E09f;  +0123456789.0123456789E09l;  +0123456789.0123456789E09F;  +0123456789.0123456789E09L;  +0123456789.0123456789E09DL;
-	-0123456789.0123456789E09;  -0123456789.0123456789E09f;  -0123456789.0123456789E09l;  -0123456789.0123456789E09F;  -0123456789.0123456789E09L;  -0123456789.0123456789E09DL;
-
-	 0123456789.0123456789E+09;   0123456789.0123456789E+09f;   0123456789.0123456789E+09l;   0123456789.0123456789E+09F;   0123456789.0123456789E+09L;   0123456789.0123456789E+09DL;
-	+0123456789.0123456789E+09;  +0123456789.0123456789E+09f;  +0123456789.0123456789E+09l;  +0123456789.0123456789E+09F;  +0123456789.0123456789E+09L;  +0123456789.0123456789E+09DL;
-	-0123456789.0123456789E+09;  -0123456789.0123456789E+09f;  -0123456789.0123456789E+09l;  -0123456789.0123456789E+09F;  -0123456789.0123456789E+09L;  -0123456789.0123456789E+09DL;
-
-	 0123456789.0123456789E-09;   0123456789.0123456789E-09f;   0123456789.0123456789E-09l;   0123456789.0123456789E-09F;   0123456789.0123456789E-09L;   0123456789.0123456789E-09DL;
-	+0123456789.0123456789E-09;  +0123456789.0123456789E-09f;  +0123456789.0123456789E-09l;  +0123456789.0123456789E-09F;  +0123456789.0123456789E-09L;  +0123456789.0123456789E-09DL;
-	-0123456789.0123456789E-09;  -0123456789.0123456789E-09f;  -0123456789.0123456789E-09l;  -0123456789.0123456789E-09F;  -0123456789.0123456789E-09L;  -0123456789.0123456789E-09DL;
-
-// hexadecimal floating literals, must have exponent
-
-	 0x0123456789.p09;   0x0123456789.p09f;   0x0123456789.p09l;   0x0123456789.p09F;   0x0123456789.p09L;
-	+0x0123456789.p09;  +0x0123456789.p09f;  +0x0123456789.p09l;  +0x0123456789.p09F;  +0x0123456789.p09L;
-	-0x0123456789.p09;  -0x0123456789.p09f;  -0x0123456789.p09l;  -0x0123456789.p09F;  -0x0123456789.p09L;
-
-	 0x0123456789.p+09;   0x0123456789.p+09f;   0x0123456789.p+09l;   0x0123456789.p+09F;   0x0123456789.p+09L;
-	+0x0123456789.p+09;  +0x0123456789.p+09f;  +0x0123456789.p+09l;  +0x0123456789.p+09F;  +0x0123456789.p+09L;
-	-0x0123456789.p+09;  -0x0123456789.p+09f;  -0x0123456789.p+09l;  -0x0123456789.p+09F;  -0x0123456789.p+09L;
-
-	 0x0123456789.p-09;   0x0123456789.p-09f;   0x0123456789.p-09l;   0x0123456789.p-09F;   0x0123456789.p-09L;
-	+0x0123456789.p-09;  +0x0123456789.p-09f;  +0x0123456789.p-09l;  +0x0123456789.p-09F;  +0x0123456789.p-09L;
-	-0x0123456789.p-09;  -0x0123456789.p-09f;  -0x0123456789.p-09l;  -0x0123456789.p-09F;  -0x0123456789.p-09L;
-
-	 0x.0123456789p09;   0x.0123456789p09f;   0x.0123456789p09l;   0x.0123456789p09F;   0x.0123456789p09L;
-	+0x.0123456789p09;  +0x.0123456789p09f;  +0x.0123456789p09l;  +0x.0123456789p09F;  +0x.0123456789p09L;
-	-0x.0123456789p09;  -0x.0123456789p09f;  -0x.0123456789p09l;  -0x.0123456789p09F;  -0x.0123456789p09L;
-
-	 0x.0123456789p+09;   0x.0123456789p+09f;   0x.0123456789p+09l;   0x.0123456789p+09F;   0x.0123456789p+09L;
-	+0x.0123456789p+09;  +0x.0123456789p+09f;  +0x.0123456789p+09l;  +0x.0123456789p+09F;  +0x.0123456789p+09L;
-	-0x.0123456789p+09;  -0x.0123456789p+09f;  -0x.0123456789p+09l;  -0x.0123456789p+09F;  -0x.0123456789p+09L;
-
-	 0x.0123456789P-09;   0x.0123456789P-09f;   0x.0123456789P-09l;   0x.0123456789P-09F;   0x.0123456789P-09L;
-	+0x.0123456789P-09;  +0x.0123456789P-09f;  +0x.0123456789P-09l;  +0x.0123456789P-09F;  +0x.0123456789P-09L;
-	-0x.0123456789P-09;  -0x.0123456789P-09f;  -0x.0123456789P-09l;  -0x.0123456789P-09F;  -0x.0123456789P-09L;
-
-	 0X0123456789.0123456789P09;   0X0123456789.0123456789P09f;   0X0123456789.0123456789P09l;   0X0123456789.0123456789P09F;   0X0123456789.0123456789P09L;
-	+0X0123456789.0123456789P09;  +0X0123456789.0123456789P09f;  +0X0123456789.0123456789P09l;  +0X0123456789.0123456789P09F;  +0X0123456789.0123456789P09L;
-	-0X0123456789.0123456789P09;  -0X0123456789.0123456789P09f;  -0X0123456789.0123456789P09l;  -0X0123456789.0123456789P09F;  -0X0123456789.0123456789P09L;
-
-	 0X0123456789.0123456789P+09;   0X0123456789.0123456789P+09f;   0X0123456789.0123456789P+09l;   0X0123456789.0123456789P+09F;   0X0123456789.0123456789P+09L;
-	+0X0123456789.0123456789P+09;  +0X0123456789.0123456789P+09f;  +0X0123456789.0123456789P+09l;  +0X0123456789.0123456789P+09F;  +0X0123456789.0123456789P+09L;
-	-0X0123456789.0123456789P+09;  -0X0123456789.0123456789P+09f;  -0X0123456789.0123456789P+09l;  -0X0123456789.0123456789P+09F;  -0X0123456789.0123456789P+09L;
-
-	 0X0123456789.0123456789P-09;   0X0123456789.0123456789P-09f;   0X0123456789.0123456789P-09l;   0X0123456789.0123456789P-09F;   0X0123456789.0123456789P-09L;
-	+0X0123456789.0123456789P-09;  +0X0123456789.0123456789P-09f;  +0X0123456789.0123456789P-09l;  +0X0123456789.0123456789P-09F;  +0X0123456789.0123456789P-09L;
-	-0X0123456789.0123456789P-09;  -0X0123456789.0123456789P-09f;  -0X0123456789.0123456789P-09l;  -0X0123456789.0123456789P-09F;  -0X0123456789.0123456789P-09L;
-
-#ifdef __CFA__
-// fixed-size length
-
-	// binary
-	 0b01101011_l8;   0b01101011_l16;   0b01101011_l32;   0b01101011_l64;   0b01101011_l8u;   0b01101011_ul16;   0b01101011_l32u;   0b01101011_ul64;
-	+0b01101011_l8;  +0b01101011_l16;  +0b01101011_l32;  +0b01101011_l64;  +0b01101011_l8u;  +0b01101011_ul16;  +0b01101011_l32u;  +0b01101011_ul64;
-	-0b01101011_l8;  -0b01101011_l16;  -0b01101011_l32;  -0b01101011_l64;  -0b01101011_l8u;  -0b01101011_ul16;  -0b01101011_l32u;  -0b01101011_ul64;
-
-#ifdef __LP64__ // 64-bit processor
-	0b01101011_l128;   0b01101011_ul128;
-	+0b01101011_l128;  +0b01101011_ul128;
-	-0b01101011_l128;  -0b01101011_ul128;
-#endif // __LP64__
-
-	// octal
-	 01234567_l8;   01234567_l16;   01234567_l32;   01234567_l64;   01234567_l8u;   01234567_ul16;   01234567_l32u;   01234567_ul64;
-	+01234567_l8;  +01234567_l16;  +01234567_l32;  +01234567_l64;  +01234567_l8u;  +01234567_ul16;  +01234567_l32u;  +01234567_ul64;
-	-01234567_l8;  -01234567_l16;  -01234567_l32;  -01234567_l64;  -01234567_l8u;  -01234567_ul16;  -01234567_l32u;  -01234567_ul64;
-
-#ifdef __LP64__ // 64-bit processor
-	01234567_l128;   01234567_ul128;
-	+01234567_l128;  +01234567_ul128;
-	-01234567_l128;  -01234567_ul128;
-#endif // __LP64__
-
-	// decimal
-	 1234567890L8;   1234567890L16;   1234567890l32;   1234567890l64;   1234567890UL8;   1234567890L16U;   1234567890Ul32;   1234567890l64u;
-	+1234567890L8;  +1234567890L16;  +1234567890l32;  +1234567890l64;  +1234567890UL8;  +1234567890L16U;  +1234567890Ul32;  +1234567890l64u;
-	-1234567890L8;  -1234567890L16;  -1234567890l32;  -1234567890l64;  -1234567890UL8;  -1234567890L16U;  -1234567890Ul32;  -1234567890l64u;
-
-#ifdef __LP64__ // 64-bit processor
-	1234567890l128;   1234567890l128u;
-	+1234567890l128;  +1234567890l128u;
-	-1234567890l128;  -1234567890l128u;
-#endif // __LP64__
-
-	// hexadecimal
-	 0x0123456789abcdef_l8;   0x0123456789abcdef_l16;   0x0123456789abcdefl32;   0x0123456789abcdefl64;   0x0123456789abcdef_ul8;   0x0123456789abcdef_l16u;   0x0123456789abcdeful32;   0x0123456789abcdefl64u;
-	+0x0123456789abcdef_l8;  +0x0123456789abcdef_l16;  +0x0123456789abcdefl32;  +0x0123456789abcdefl64;  +0x0123456789abcdef_ul8;  +0x0123456789abcdef_l16u;  +0x0123456789abcdeful32;  +0x0123456789abcdefl64u;
-	-0x0123456789abcdef_l8;  -0x0123456789abcdef_l16;  -0x0123456789abcdefl32;  -0x0123456789abcdefl64;  -0x0123456789abcdef_ul8;  -0x0123456789abcdef_l16u;  -0x0123456789abcdeful32;  -0x0123456789abcdefl64u;
-
-	 0x0123456789ABCDEF_l8;   0x0123456789ABCDEF_l16;   0x0123456789ABCDEFl32;   0x0123456789ABCDEFl64;   0x0123456789ABCDEF_ul8;   0x0123456789ABCDEF_l16u;   0x0123456789ABCDEFul32;   0x0123456789ABCDEFl64u;
-	+0x0123456789ABCDEF_l8;  +0x0123456789ABCDEF_l16;  +0x0123456789ABCDEFl32;  +0x0123456789ABCDEFl64;  +0x0123456789ABCDEF_ul8;  +0x0123456789ABCDEF_l16u;  +0x0123456789ABCDEFul32;  +0x0123456789ABCDEFl64u;
-	-0x0123456789ABCDEF_l8;  -0x0123456789ABCDEF_l16;  -0x0123456789ABCDEFl32;  -0x0123456789ABCDEFl64;  -0x0123456789ABCDEF_ul8;  -0x0123456789ABCDEF_l16u;  -0x0123456789ABCDEFul32;  -0x0123456789ABCDEFl64u;
-
-	 0X0123456789abcdef_l8;   0X0123456789abcdef_l16;   0X0123456789abcdefl32;   0X0123456789abcdefl64;   0X0123456789abcdef_ul8;   0X0123456789abcdef_l16u;   0X0123456789abcdeful32;   0X0123456789abcdefl64u;
-	+0X0123456789abcdef_l8;  +0X0123456789abcdef_l16;  +0X0123456789abcdefl32;  +0X0123456789abcdefl64;  +0X0123456789abcdef_ul8;  +0X0123456789abcdef_l16u;  +0X0123456789abcdeful32;  +0X0123456789abcdefl64u;
-	-0X0123456789abcdef_l8;  -0X0123456789abcdef_l16;  -0X0123456789abcdefl32;  -0X0123456789abcdefl64;  -0X0123456789abcdef_ul8;  -0X0123456789abcdef_l16u;  -0X0123456789abcdeful32;  -0X0123456789abcdefl64u;
-
-	 0X0123456789ABCDEF_l8;   0X0123456789ABCDEF_l16;   0X0123456789ABCDEFl32;   0X0123456789ABCDEFl64;   0X0123456789ABCDEF_ul8;   0X0123456789ABCDEF_l16u;   0X0123456789ABCDEFul32;   0X0123456789ABCDEFl64u;
-	+0X0123456789ABCDEF_l8;  +0X0123456789ABCDEF_l16;  +0X0123456789ABCDEFl32;  +0X0123456789ABCDEFl64;  +0X0123456789ABCDEF_ul8;  +0X0123456789ABCDEF_l16u;  +0X0123456789ABCDEFul32;  +0X0123456789ABCDEFl64u;
-	-0X0123456789ABCDEF_l8;  -0X0123456789ABCDEF_l16;  -0X0123456789ABCDEFl32;  -0X0123456789ABCDEFl64;  -0X0123456789ABCDEF_ul8;  -0X0123456789ABCDEF_l16u;  -0X0123456789ABCDEFul32;  -0X0123456789ABCDEFl64u;
-
-	// floating
-	 0123456789.l32;   0123456789.l64;   0123456789.l80;   0123456789.l128;
-	+0123456789.l32;  +0123456789.l64;  +0123456789.l80;  +0123456789.l128;
-	-0123456789.l32;  -0123456789.l64;  -0123456789.l80;  -0123456789.l128;
-
-	 0123456789.e09L32;    0123456789.e09L64;    0123456789.e09L80;    0123456789.e09L128;
-	+0123456789.e+09L32;  +0123456789.e+09L64;  +0123456789.e+09L80;  +0123456789.e+09L128;
-	-0123456789.e-09L32;  -0123456789.e-09L64;  -0123456789.e-09L80;  -0123456789.e-09L128;
-
-	 .0123456789e09L32;    .0123456789e09L64;    .0123456789e09L80;    .0123456789e09L128;
-	+.0123456789E+09L32;  +.0123456789E+09L64;  +.0123456789E+09L80;  +.0123456789E+09L128;
-	-.0123456789E-09L32;  -.0123456789E-09L64;  -.0123456789E-09L80;  -.0123456789E-09L128;
-
-	 0123456789.0123456789L32;       0123456789.0123456789L64;       0123456789.0123456789L80;       0123456789.0123456789L128;
-	+0123456789.0123456789E09L32;   +0123456789.0123456789E09L64;   +0123456789.0123456789E09L80;   +0123456789.0123456789E09L128;
-	-0123456789.0123456789E+09L32;  -0123456789.0123456789E+09L64;  -0123456789.0123456789E+09L80;  -0123456789.0123456789E+09L128;
-	 0123456789.0123456789E-09L32;   0123456789.0123456789E-09L64;   0123456789.0123456789E-09L80;   0123456789.0123456789E-09L128;
-	
-	 0x0123456789.p09l32;   0x0123456789.p09l64;   0x0123456789.p09l80;   0x0123456789.p09l128;
-	+0x0123456789.p09l32;  +0x0123456789.p09l64;  +0x0123456789.p09l80;  +0x0123456789.p09l128;
-	-0x0123456789.p09l32;  -0x0123456789.p09l64;  -0x0123456789.p09l80;  -0x0123456789.p09l128;
-
-	 0x0123456789.p+09l32;   0x0123456789.p+09L64;   0x0123456789.p+09L80;   0x0123456789.p+09L128;
-	+0x0123456789.p-09l32;  +0x0123456789.p-09L64;  +0x0123456789.p-09L80;  +0x0123456789.p-09L128;
-	-0x.0123456789p09l32;   -0x.0123456789p09L64;   -0x.0123456789p09L80;   -0x.0123456789p09L128;
-
-// char, short, int suffix overloading
-
-	f( 'a' );
-	f( 20_hh );
-	f( 21_hhu );
-	f( 22_h );
-	f( 23_uh );
-	f( 24z );
-#endif // __CFA__
-
-// character literals
-
-	' ';  'a';  '"';  '_';
-	'\'';  '\"';  '\?';  '\\';							// simple escape
-	'\a';  '\b';  '\e'; /* GCC */  '\f';  '\n';  '\r';  '\t';  '\v';
-	'\0'; '\377';										// octal escape
-	'\xf';  '\xff';										// hex escape
-
-	u' ';  u'a';  u'"';  u'_';
-	U' ';  U'a';  U'"';  U'_';
-	L' ';  L'a';  L'"';  L'_';
-
-// warnings/errors
-
-#ifdef ERROR
-	'';													// empty character
-	'aa';												// multi-character
-	'a\na';												// multi-character, embedded escape
-	'a\0a';
-	'\xfff';											// hex escape out of range
-	'_\377_';											// multi-character
-	'_\xff_';
-	'\xffff';											// hex escape out of range
-	'a\xff34w';
-	'\xf_f';											// multi-character
-	'\xff_ff';
-#endif // ERROR
-
-// string literals
-
-	" ";  "a";  "'";  '_';  "abcdefghijklmnopqrstuvwxyz";
-	"";  "aa";  "a\na";  "a\0a";  "_\377_";  "_\xff_";  "\xf_f";
-	"\'";  "\"";  "\?";  "\\";							// simple escape
-	"\a";  "\b";  "\e"; /* GCC */  "\f";  "\n";  "\r";  "\t";  "\v";
-	"\0";  "\377";										// octal escape
-	"\xf";  "\xff";										// hex escape
-
-	u8" ";  u8"a";  u8"'";  u'_';  u8"abcdefghijklmnopqrstuvwxyz";
-	u" ";  u"a";  u"'";  u'_';  u"abcdefghijklmnopqrstuvwxyz";
-	U" ";  U"a";  U"'";  U'_';  U"abcdefghijklmnopqrstuvwxyz";
-	L" ";  L"a";  L"'";  L'_';  L"abcdefghijklmnopqrstuvwxyz";
-
-	"\xFF";  u"\xFFFF";  U"\xFFFFFFFF";  L"\xFFFFFFFF";	// maximum size
-
-	// concatenation
-
-	"\x12" "3";											// 2 characters not 1!
-
-	"a" "b" u8"c";
-	"a" u8"b" "c";
-	"a" u8"b" u8"c";
-	u8"a" "b" u8"c";
-	u8"a" u8"b" u8"c";
-
-	"a" "b" u"c";
-	"a" u"b" "c";
-	"a" u"b" u"c";
-	u"a" "b" u"c";
-	u"a" u"b" u"c";
-
-	"a" "b" U"c";
-	"a" U"b" "c";
-	"a" U"b" U"c";
-	U"a" "b" U"c";
-	U"a" U"b" U"c";
-
-	"a" "b" L"c";
-	"a" L"b" "c";
-	"a" L"b" L"c";
-	L"a" "b" L"c";
-	L"a" L"b" L"c";
-
-// warnings/errors
-
-#ifdef ERROR
-	"\xff_ff";
-	"\xfff";				// hex escape out of range
-	"a\xff34w";
-	"\xffff";
-#endif // ERROR
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa literals.c" //
-// End: //
Index: c/tests/long_tests.h
===================================================================
--- src/tests/long_tests.h	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,21 +1,0 @@
-#pragma once
-
-#include <unistd.h>
-
-#if   defined(TEST_FOREVER)
-
-static unsigned long long __kick_count = 0;
-#if !defined(__kick_rate)
-#define __kick_rate 5000ul
-#endif
-
-#define TEST(x) 1
-#define KICK_WATCHDOG do { __kick_count++; if(__kick_count > __kick_rate) { write(STDOUT_FILENO, ".", 1); __kick_count = 0; } } while(0)
-
-
-#else
-
-#define TEST(x) x
-#define KICK_WATCHDOG
-
-#endif
Index: c/tests/math1.c
===================================================================
--- src/tests/math1.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,55 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// math1.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Fri Apr 22 14:59:21 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 24 21:01:15 2018
-// Update Count     : 85
-// 
-
-#include <fstream>
-#include <math>
-
-int main( void ) {
-	float f;
-	double d;
-	long double l;
-
-	sout | "fmod:" | 5.0F % -2.0F | fmod( 5.0F, -2.0F ) | 5.0D % -2.0D | fmod( 5.0D, -2.0D ) | 5.0L % -2.0L | fmod( 5.0L, -2.0L ) | endl;
-	sout | "remainder:" | remainder( 2.0F, 3.0F ) | remainder( 2.0D, 3.0D ) | remainder( 2.0L, 3.0L ) | endl;
-	int quot;
-	f = remquo( 3.6F, 0.5F, &quot );
-	sout | "remquo:" | quot | f;
-	d = remquo( 3.6D, 0.5F, &quot );
-	sout | quot | d;
-	l = remquo( 3.6L, 0.5L, &quot );
-	sout | quot | l | endl;
-	sout | "div:" | div( 3.6F, 0.5F ) | div( 3.6D, 0.5D ) | div( 3.6L, 0.5L ) | endl;
-	sout | "fma:" | fma( 3.0F, -1.0F, 1.0F ) | fma( 3.0D, -1.0D, 1.0D ) | fma( 3.0L, -1.0L, , 1.0L ) | endl;
-	sout | "fdim:" | fdim( 1.0F, -1.0F ) | fdim( 1.0D, -1.0D ) | fdim( 1.0L, -1.0L ) | endl;
-	sout | "nan:" | (float)nan( "" ) | (double)nan( "" ) | (long double)nan( "" ) | endl;
-
-	//---------------------- Exponential ----------------------
-
-	sout | "exp:" | exp( 1.0F ) | exp( 1.0D ) | exp( 1.0L ) | exp( 1.0F+1.0FI ) | exp( 1.0D+1.0DI ) | exp( 1.0DL+1.0LI ) | endl;
-	sout | "exp2:" | exp2( 1.0F ) | exp2( 1.0D ) | exp2( 1.0L ) | endl;
-	sout | "expm1:" | expm1( 1.0F ) | expm1( 1.0D ) | expm1( 1.0L ) | endl;
-	sout | "pow:" | pow( 1.0F, 1.0F ) | pow( 1.0D, 1.0D ) | pow( 1.0L, 1.0L ) | pow( 1.0F+1.0FI, 1.0F+1.0FI ) | pow( 1.0D+1.0DI, 1.0D+1.0DI ) | pow( 1.0DL+1.0LI, 1.0DL+1.0LI ) | endl;
-
-	int b = 4;
-	unsigned int e = 2;
-    b \= e;
-    sout | "\\" | b | b \ e | endl;
-    sout | "\\" | 'a' \ 3u | 2 \ 8u | 4 \ 3u | -4 \ 3u | 4 \ -3 | -4 \ -3 | 4.0 \ 2.1 | (1.0f+2.0fi) \ (3.0f+2.0fi) | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa math1.c" //
-// End: //
Index: c/tests/math2.c
===================================================================
--- src/tests/math2.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,52 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// math2.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Fri Apr 22 14:59:21 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 24 21:06:10 2018
-// Update Count     : 82
-// 
-
-#include <fstream>
-#include <math>
-
-int main( void ) {
-	float f;
-	double d;
-	long double l;
-
-	//---------------------- Logarithm ----------------------
-
-	sout | "log:" | log( 1.0F ) | log( 1.0D ) | log( 1.0L ) | log( 1.0F+1.0FI ) | log( 1.0D+1.0DI ) | log( 1.0DL+1.0LI ) | endl;
-	sout | "log2:" | log2( 8.0F ) | log2( 8.0D ) | log2( 8.0L ) | endl;
-	sout | "log10:" | log10( 100.0F ) | log10( 100.0D ) | log10( 100.0L ) | endl;
-	sout | "log1p:" | log1p( 1.0F ) | log1p( 1.0D ) | log1p( 1.0L ) | endl;
-	sout | "ilogb:" | ilogb( 1.0F ) | ilogb( 1.0D ) | ilogb( 1.0L ) | endl;
-	sout | "logb:" | logb( 8.0F ) | logb( 8.0D ) | logb( 8.0L ) | endl;
-
-	sout | "sqrt:" | sqrt( 1.0F ) | sqrt( 1.0D ) | sqrt( 1.0L ) | sqrt( 1.0F+1.0FI ) | sqrt( 1.0D+1.0DI ) | sqrt( 1.0DL+1.0LI ) | endl;
-	sout | "cbrt:" | cbrt( 27.0F ) | cbrt( 27.0D ) | cbrt( 27.0L ) | endl;
-	sout | "hypot:" | hypot( 1.0F, -1.0F ) | hypot( 1.0D, -1.0D ) | hypot( 1.0L, -1.0L ) | endl;
-
-	//---------------------- Trigonometric ----------------------
-
-	sout | "sin:" | sin( 1.0F ) | sin( 1.0D ) | sin( 1.0L ) | sin( 1.0F+1.0FI ) | sin( 1.0D+1.0DI ) | sin( 1.0DL+1.0LI ) | endl;
-	sout | "cos:" | cos( 1.0F ) | cos( 1.0D ) | cos( 1.0L ) | cos( 1.0F+1.0FI ) | cos( 1.0D+1.0DI ) | cos( 1.0DL+1.0LI ) | endl;
-	sout | "tan:" | tan( 1.0F ) | tan( 1.0D ) | tan( 1.0L ) | tan( 1.0F+1.0FI ) | tan( 1.0D+1.0DI ) | tan( 1.0DL+1.0LI ) | endl;
-	sout | "asin:" | asin( 1.0F ) | asin( 1.0D ) | asin( 1.0L ) | asin( 1.0F+1.0FI ) | asin( 1.0D+1.0DI ) | asin( 1.0DL+1.0LI ) | endl;
-	sout | "acos:" | acos( 1.0F ) | acos( 1.0D ) | acos( 1.0L ) | acos( 1.0F+1.0FI ) | acos( 1.0D+1.0DI ) | acos( 1.0DL+1.0LI ) | endl;
-	sout | "atan:" | atan( 1.0F ) | atan( 1.0D ) | atan( 1.0L ) | atan( 1.0F+1.0FI ) | atan( 1.0D+1.0DI ) | atan( 1.0DL+1.0LI ) | endl;
-	sout | "atan2:" | atan2( 1.0F, 1.0F ) | atan2( 1.0D, 1.0D ) | atan2( 1.0L, 1.0L );
-	sout | "atan:" | atan( 1.0F, 1.0F ) | atan( 1.0D, 1.0D ) | atan( 1.0L, 1.0L ) | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa math2.c" //
-// End: //
Index: c/tests/math3.c
===================================================================
--- src/tests/math3.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,51 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// math3.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Fri Apr 22 14:59:21 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 24 21:06:12 2018
-// Update Count     : 82
-// 
-
-#include <fstream>
-#include <math>
-
-int main( void ) {
-	float f;
-	double d;
-	long double l;
-
-	//---------------------- Hyperbolic ----------------------
-
-	sout | "sinh:" | sinh( 1.0F ) | sinh( 1.0D ) | sinh( 1.0L ) | sinh( 1.0F+1.0FI ) | sinh( 1.0D+1.0DI ) | sinh( 1.0DL+1.0LI ) | endl;
-	sout | "cosh:" | cosh( 1.0F ) | cosh( 1.0D ) | cosh( 1.0L ) | cosh( 1.0F+1.0FI ) | cosh( 1.0D+1.0DI ) | cosh( 1.0DL+1.0LI ) | endl;
-	sout | "tanh:" | tanh( 1.0F ) | tanh( 1.0D ) | tanh( 1.0L ) | tanh( 1.0F+1.0FI ) | tanh( 1.0D+1.0DI ) | tanh( 1.0DL+1.0LI ) | endl;
-	sout | "acosh:" | acosh( 1.0F ) | acosh( 1.0D ) | acosh( 1.0L ) | acosh( 1.0F+1.0FI ) | acosh( 1.0D+1.0DI ) | acosh( 1.0DL+1.0LI ) | endl;
-	sout | "asinh:" | asinh( 1.0F ) | asinh( 1.0D ) | asinh( 1.0L ) | asinh( 1.0F+1.0FI ) | asinh( 1.0D+1.0DI ) | asinh( 1.0DL+1.0LI ) | endl;
-	sout | "atanh:" | atanh( 1.0F ) | atanh( 1.0D ) | atanh( 1.0L ) | atanh( 1.0F+1.0FI ) | atanh( 1.0D+1.0DI ) | atanh( 1.0DL+1.0LI ) | endl;
-
-	//---------------------- Error / Gamma ----------------------
-
-	sout | "erf:" | erf( 1.0F ) | erf( 1.0D ) | erf( 1.0L ) | endl;
-	sout | "erfc:" | erfc( 1.0F ) | erfc( 1.0D ) | erfc( 1.0L ) | endl;
-	sout | "lgamma:" | lgamma( 4.0F ) | lgamma( 4.0D ) | lgamma( 4.0L ) | endl;
-	int sign;
-	f = lgamma( 4.0F, &sign );
-	sout | "lgamma:" | f | sign;
-	d = lgamma( 4.0D, &sign );
-	sout | d | sign;
-	l = lgamma( 4.0L, &sign );
-	sout | l | sign | endl;
-	sout | "tgamma:" | tgamma( 4.0F ) | tgamma( 4.0D ) | tgamma( 4.0L ) | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa math3.c" //
-// End: //
Index: c/tests/math4.c
===================================================================
--- src/tests/math4.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,72 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// math4.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Thu May 24 20:56:54 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 24 20:58:06 2018
-// Update Count     : 2
-// 
-
-#include <fstream>
-#include <math>
-
-int main( void ) {
-	float f;
-	double d;
-	long double l;
-
-	//---------------------- Nearest Integer ----------------------
-
-	sout | "floor:" | floor( 1.2F ) | floor( 1.2D ) | floor( 1.2L ) | endl;
-	sout | "ceil:" | ceil( 1.6F ) | ceil( 1.6D ) | ceil( 1.6L ) | endl;
-	sout | "trunc:" | trunc( 3.5F ) | trunc( 3.5D ) | trunc( 3.5L ) | endl;
-	sout | "rint:" | (float)rint( 1.5F ) | (double)rint( 1.5D ) | (long double)rint( 1.5L ) | endl;
-	sout | "rint:" | (long int)rint( 1.5F ) | (long int)rint( 1.5D ) | (long int)rint( 1.5L ) | endl;
-	sout | "rint:" | (long long int)rint( 1.5F ) | (long long int)rint( 1.5D ) | (long long int)rint( 1.5L ) | endl;
-	sout | "lrint:" | lrint( 1.5F ) | lrint( 1.5D ) | lrint( 1.5L ) | endl;
-	sout | "llrint:" | llrint( 1.5F ) | llrint( 1.5D ) | llrint( 1.5L ) | endl;
-	sout | "nearbyint:" | nearbyint( 3.5F ) | nearbyint( 3.5D ) | nearbyint( 3.5L ) | endl;
-	sout | "round:" | (float)round( 1.5F ) | (double)round( 1.5D ) | (long double)round( 1.5L ) | endl;
-	sout | "round:" | (long int)round( 1.5F ) | (long int)round( 1.5D ) | (long int)round( 1.5L ) | endl;
-	sout | "round:" | (long long int)round( 1.5F ) | (long long int)round( 1.5D ) | (long long int)round( 1.5L ) | endl;
-	sout | "lround:" | lround( 1.5F ) | lround( 1.5D ) | lround( 1.5L ) | endl;
-	sout | "llround:" | llround( 1.5F ) | llround( 1.5D ) | llround( 1.5L ) | endl;
-
-	//---------------------- Manipulation ----------------------
-
-	sout | "copysign:" | copysign( 1.0F, -1.0F ) | copysign( 1.0D, -1.0D ) | copysign( 1.0L, -1.0L ) | endl;
-	int exp;
-	f = frexp( 4.0F, &exp );
-	sout | "frexp:" | f | exp;
-	d = frexp( 4.0D, &exp );
-	sout | d | exp;
-	l = frexp( 4.0L, &exp );
-	sout | l | exp | endl;
-	sout | "ldexp:" | ldexp( 2.0F, 2 ) | ldexp( 2.0D, 2 ) | ldexp( 2.0L, 2 ) | endl;
-	float fi;
-	double di;
-	long double ldi;
-	f = modf( 2.3F, &fi );
-	sout | "modf:" | fi | f;
-	d = modf( 2.3D, &di );
-	sout | di | d;
-	l = modf( 2.3L, &ldi );
-	sout | ldi | l | endl;
-	sout | "modf:" | modf( 2.3F ) | modf( 2.3D ) | modf( 2.3L ) | endl;
-	sout | "nextafter:" | nextafter( 2.0F, 3.0F ) | nextafter( 2.0D, 3.0D ) | nextafter( 2.0L, 3.0L ) | endl;
-	sout | "nexttoward:" | nexttoward( 2.0F, 3.0F ) | nexttoward( 2.0D, 3.0D ) | nexttoward( 2.0L, 3.0L ) | endl;
-
-	sout | "scalbn:" | scalbn( 2.0F, 3 ) | scalbn( 2.0D, 3 ) | scalbn( 2.0L, 3 ) | endl;
-	sout | "scalbln:" | scalbln( 2.0F, 3L ) | scalbln( 2.0D, 3L ) | scalbln( 2.0L, 3L ) | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa math3.c" //
-// End: //
Index: c/tests/maybe.c
===================================================================
--- src/tests/maybe.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,67 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// maybe.c --
-//
-// Author           : Andrew Beach
-// Created On       : Thr May 25 16:02:00 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 15:24:07 2017
-// Update Count     : 1
-//
-
-#include <assert.h>
-#include <containers/maybe>
-
-void checkPredicates() {
-	maybe(int) filled = 4;
-	assert(filled);
-	assert(has_value(&filled));
-
-	maybe(int) empty = {};
-	assert(empty ? false : true);
-	assert(!has_value(&empty));
-}
-
-void checkGetter() {
-	maybe(int) a = 94;
-	assert(94 == get(&a));
-}
-
-/* Waiting on bug#11 to be fixed.
-void checkNamedConstructors() {
-	maybe(char) letter = maybe_value('a');
-	assert(has_value(&letter));
-	assert('a' == get(&letter));
-
-	maybe(char) rune = maybe_none();
-	assert(!has_value(&rune));
-}
-*/
-
-void checkSetters() {
-	maybe(int) fee = 3;
-	assert(3 == get(&fee));
-	set(&fee, 7);
-	assert(7 == get(&fee));
-	set_none(&fee);
-	assert(!has_value(&fee));
-
-	maybe(int) fy = 4;
-	maybe(int) foe = 8;
-	maybe(int) fum = {};
-	fy = foe;
-	assert(8 == get(&fy));
-	fy = fum;
-	assert(!has_value(&fy));
-}
-
-int main(int argc, char * argv[]) {
-	checkPredicates();
-	checkGetter();
-	//checkNamedConstructors();
-	checkSetters();
-}
Index: c/tests/minmax.c
===================================================================
--- src/tests/minmax.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,52 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// minmax.c -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Apr 10 17:29:09 2018
-// Update Count     : 50
-//
-
-#include <fstream>
-#include <stdlib>										// min, max
-
-int main( void ) {
-	// char does not have less or greater than.
-	int ?<?( char op1, char op2 ) { return (int)op1 < (int)op2; }
-	int ?>?( char op1, char op2 ) { return (int)op1 > (int)op2; }
-
-	sout | "char\t\t\t"					| 'z' | ' ' | 'a' | "\tmin " | min( 'z', 'a' ) | endl;
-	sout | "signed int\t\t"				| 4 | 3 | "\tmin" | min( 4, 3 ) | endl;
-	sout | "unsigned int\t\t"			| 4u | 3u | "\tmin" | min( 4u, 3u ) | endl;
-	sout | "signed long int\t\t" 		| 4l | 3l | "\tmin" | min( 4l, 3l ) | endl;
-	sout | "unsigned long int\t" 		| 4ul | 3ul | "\tmin" | min( 4ul, 3ul ) | endl;
-	sout | "signed long long int\t"		| 4ll | 3ll | "\tmin" | min( 4ll, 3ll ) | endl;
-	sout | "unsigned long long int\t"	| 4ull | 3ull | "\tmin" | min( 4ull, 3ull ) | endl;
-	sout | "float\t\t\t" 				| 4.0f | 3.1f | "\tmin" | min( 4.0f, 3.1f ) | endl;
-	sout | "double\t\t\t"				| 4.0 | 3.1 | "\tmin" | min( 4.0, 3.1 ) | endl;
-	sout | "long double\t\t"			| 4.0l | 3.1l | "\tmin" | min( 4.0l, 3.1l ) | endl;
-
-	sout | endl;
-
-	sout | "char\t\t\t"					| 'z' | ' ' | 'a' | "\tmax " | max( 'z', 'a' ) | endl;
-	sout | "signed int\t\t"				| 4 | 3 | "\tmax" | max( 4, 3 ) | endl;
-	sout | "unsigned int\t\t"			| 4u | 3u | "\tmax" | max( 4u, 3u ) | endl;
-	sout | "signed long int\t\t" 		| 4l | 3l | "\tmax" | max( 4l, 3l ) | endl;
-	sout | "unsigned long int\t" 		| 4ul | 3ul | "\tmax" | max( 4ul, 3ul ) | endl;
-	sout | "signed long long int\t"		| 4ll | 3ll | "\tmax" | max( 4ll, 3ll ) | endl;
-	sout | "unsigned long long int\t"	| 4ull | 3ull | "\tmax" | max( 4ull, 3ull ) | endl;
-	sout | "float\t\t\t" 				| 4.0f | 3.1f | "\tmax" | max( 4.0f, 3.1f ) | endl;
-	sout | "double\t\t\t"				| 4.0 | 3.1 | "\tmax" | max( 4.0, 3.1 ) | endl;
-	sout | "long double\t\t"			| 4.0l | 3.1l | "\tmax" | max( 4.0l, 3.1l ) | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa minmax.c" //
-// End: //
Index: c/tests/namedParmArg.c
===================================================================
--- src/tests/namedParmArg.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,14 +1,0 @@
-int f1( int i = 3, int *j = 0 ) {}  /* ANSI */
-[int, int ] f2( int i = 3, * int j = 0 ) {}  /* CFA */
-
-int main() {
-    f1();		/* identical calls */
-    f1( 3 );
-    f1( 3, );
-    f1( 3, 0 );
-    f1( 3, j : 0 );
-    f1( j : 0, 3 );
-    f1( i : 3, j : 0 );
-    f1( j : 0, i : 3 );
-    f1( [j, i] : f2() );
-}
Index: c/tests/nested-types.c
===================================================================
--- src/tests/nested-types.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,91 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// nested-types.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Mon Jul 9 10:20:03 2018
-// Last Modified By : Rob Schluntz
-// Last Modified On : Mon Jul 9 10:20:03 2017
-// Update Count     : 1
-//
-
-typedef int N;
-struct A {
-  forall(otype T)
-  struct N {
-    T x;
-  };
-};
-
-struct S {
-  struct T {
-    int i;
-    typedef int Bar;
-  };
-  T x;
-
-  // struct U;
-  typedef T Bar;
-  typedef int Baz;
-};
-
-// // // // need a way to stuff a qualified name into a struct decl
-// // struct S.U {
-// //   double z;
-// // };
-
-// // what will this do?
-// struct U {
-//   union S {
-//     int i;
-//     double d;
-//   };
-// };
-
-// struct T {
-//   double d;
-// };
-
-int main() {
-  // access nested struct
-  S.T x;
-
-  {
-    struct S {
-      int i;
-      struct Z {
-        double d;
-      };
-    };
-
-    S.Z z;   // gets local S
-    .S.T y;  // lookup at global scope only
-
-    const volatile .S.T q;
-#if ERR1
-    T err1;           // error: no T in scope
-#endif
-#if ERR2
-    .Z err2;          // error: no Z in global scope
-    .S.Baz.Bar err3;  // error: .S.Baz => int, int is not aggregate and should not appear left of the dot
-    .S.Z err4;        // error: no Z in global S
-#endif
-  }
-
-  // U.S un;
-
-  S.Bar y;
-  S.Baz x;
-  S.T.Bar z;
-
-  // A.N(int) x;  // xxx - should not be an error, but currently is.
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa nested-types.c" //
-// End: //
Index: c/tests/numericConstants.c
===================================================================
--- src/tests/numericConstants.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,70 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// numericConstants.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed May 24 22:10:36 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 24 22:11:36 2017
-// Update Count     : 2
-// 
-
-int main() {
-	1;							// decimal
-	2_1;
-	2_147_483_647;
-	37LL;
-	45ull;
-	89llu;
-	99LLu;
-	56_lu;
-	88_LLu;
-
-//	0;							// octal
-	0u;
-	0_3_77;
-	0_377_ul;
-
-	0x1;						// hexadecimal
-	0x1u;
-	0xabL;
-	0x_80000000;
-	0x_fff;
-	0x_ef3d_aa5c;
-	0x_3LL;
-
-	3.;							// integral real
-	3_100.;
-	1_000_000.;
-
-	3.1;						// integral/fractional real
-	3.141_592_654L;
-	123_456.123_456;
-
-	3E1;						// integral/exponent real
-	3_e1f;
-	3_E1_1_F;
-	3_E_11;
-	3_e_+11;
-	3_E_-11;
-
-	3.0E1;						// integral/fractional/exponent real
-	3.0_E1L;
-	3.0_e1_1;
-	3.0_E_11_l;
-	3.0_e_+11l;
-	3.0_E_-11;
-	123_456.123_456E-16;
-
-	0x_ff.ffp0;					// hex real
-	0x_1.ffff_ffff_p_128_l;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa minmax.c" //
-// End: //
Index: c/tests/occursError.c
===================================================================
--- src/tests/occursError.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,12 +1,0 @@
-forall( otype T ) void f( void (*)( T, T * ) );
-forall( otype U ) void g( U,  U * );
-forall( otype U ) void h( U *, U );
-
-void test() {
-    f( h );
-    f( g );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/operators.c
===================================================================
--- src/tests/operators.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,38 +1,0 @@
-int ?*?( int a, int b ) {
-	return 0;
-}
-
-int ?()( int number1, int number2 ) {
-	return number1 * number2;
-}
-
-int ?+?( int a, int b ) {
-	return 0;
-}
-
-int ?=?( int &a, int b ) {
-	return 0;
-}
-struct accumulator {
-	int total;
-};
-
-char ?()( struct accumulator a, char number1, char number2 ) {
-	return 'a';
-}
-
-void f( void ) {
-	char a, b;
-	?()( a, b );
-	a(b);
-	a + b;
-}
-
-int main(int argc, char const *argv[]) {
-	/* code */
-	return 0;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/polymorphism.c
===================================================================
--- src/tests/polymorphism.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,121 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// polymorphism.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Tue Oct 17 12:19:48 2017
-// Last Modified By : Rob Schluntz
-// Last Modified On : Tue Oct 17 12:21:07 2017
-// Update Count     : 1
-//
-
-#include <assert.h>
-#include <inttypes.h>
-
-forall(otype T)
-T f(T x, T y) {
-	x = y;
-	return x;
-}
-
-forall(otype T) T ident(T x) {
-	return x;
-}
-
-forall( otype T, otype U )
-size_t struct_size( T i, U j ) {
-	struct S { T i; U j; };
-	return sizeof(S);
-}
-
-forall( otype T, otype U )
-size_t union_size( T i, U j ) {
-	union B { T i; U j; };
-	return sizeof(B);
-}
-
-// perform some simple operations on aggregates of T and U
-forall( otype T | { void print(T); int ?==?(T, T); }, otype U | { void print(U); U ?=?(U&, zero_t); } )
-U foo(T i, U j) {
-	struct S { T i; U j; };
-	union B { T i; U j; };
-
-	S s;
-	s.i = i;
-	assertf(s.i == i, "struct operation fails in polymorphic context.");
-
-	B b;
-	b.j = 0;
-	b.i = s.i;
-	return b.j;
-}
-
-int main() {
-	{
-		// ensure that x is not changed by the invocation of a polymorphic function
-		int x = 123;
-		int y = 456;
-		int z = f(x, y);
-		printf("%d %d %d\n", x, y, z);
-	}
-
-	{
-		// explicitly specialize function
-		int (*f)(int) = ident;
-		((int(*)(int))ident);
-		printf("%d %d\n", f(5), ((int(*)(int))ident)(5));
-	}
-
-	{
-		// test aggregates with polymorphic members
-		typedef __attribute__((aligned(8))) uint32_t x_type;
-		typedef __attribute__((aligned(8))) uint64_t y_type;
-
-		x_type x = 3;
-		y_type y = 3;
-
-		struct S {
-			x_type f1;
-			y_type f2;
-		};
-		union U {
-			x_type f1;
-			y_type f2;
-		};
-		// ensure that the size of aggregates with polymorphic members
-		// matches the size of the aggregates in a monomorphic context
-		size_t ssz = struct_size(x, y);
-		size_t usz = union_size(x, y);
-		assertf( ssz == sizeof(S), "struct size differs in polymorphic context: %zd / %zd", ssz, sizeof(S));
-		assertf( usz == sizeof(U), "union size differs in polymorphic context: %zd / %zd", usz, sizeof(U));
-
-		y_type ?=?(y_type & this, zero_t) {
-			this = (int)0;
-			return this;
-		}
-
-		void print(x_type x) {
-			printf("%"PRIu32"\n", x);
-		}
-
-		void print(y_type y) {
-			printf("%"PRIu64"\n", y);
-		}
-
-		y_type ret = foo(x, y);
-
-		// duplicate logic from inside of foo to ensure the same results
-		U u;
-		u.f2 = 0;
-		u.f1 = x;
-		assertf(ret == u.f2, "union operation fails in polymorphic context.");
-	}
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/preempt_longrun/Makefile.am
===================================================================
--- src/tests/preempt_longrun/Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,76 +1,0 @@
-######################## -*- Mode: Makefile-Automake -*- ######################
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.am --
-##
-## Author           : Thierry Delisle
-## Created On       : Fri Jun 16 10:57:34 2017
-## Last Modified By :
-## Last Modified On :
-## Update Count     : 0
-###############################################################################
-
-repeats=10
-max_time=600
-preempt=10ul\`ms
-debug=-debug
-type=LONG
-
-REPEAT = ${abs_top_srcdir}/tools/repeat
-WATCHDOG = ${abs_top_srcdir}/tools/watchdog
-TIME = /usr/bin/time -f "%E"
-
-# $(shell ./update-type $(type))
-# ./update-type $(type)
-
-UPDATED_TYPE = $(shell ./update-type $(type))
-
-BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ -O2 -DPREEMPTION_RATE=${preempt} -I.. -I. -DTEST_$(shell cat .type | tr a-z A-Z)
-CFLAGS = ${BUILD_FLAGS}
-CC = @CFACC@
-
-TESTS = block coroutine create disjoint enter enter3 processor stack wait yield
-
-# .INTERMEDIATE: ${TESTS}
-
-all-local: ${TESTS:=.run}
-
-runall : ${TESTS:=.run}
-	@ echo "All programs terminated normally"
-
-watchall : ${TESTS:=.watch}
-	@ echo "All programs terminated normally"
-
-compileall : ${TESTS}
-	@ echo "Compiled"
-
-clean-local:
-	rm -f ${TESTS} core* out.log .type
-
-% : %.c ${CC} ${UPDATED_TYPE}
-	${AM_V_GEN}${CC} ${CFLAGS} ${<} $(debug) -o ${@}
-
-%.run : % ${REPEAT}
-	@ time ${REPEAT} -r out.log -i -s $(repeats) timeout ${max_time} ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
-
-%.watch : % ${WATCHDOG}
-	@ time ${WATCHDOG} ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
-
-%.time : % ${REPEAT}
-	@ ${REPEAT} -i -s -- $(repeats) $(TIME) -a -o times.log ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
-
-${REPEAT}: ${abs_top_srcdir}/tools/Makefile
-	@+make -C ${abs_top_srcdir}/tools/
-
-${WATCHDOG}: ${abs_top_srcdir}/tools/Makefile
-	@+make -C ${abs_top_srcdir}/tools/
Index: c/tests/preempt_longrun/Makefile.in
===================================================================
--- src/tests/preempt_longrun/Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,927 +1,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-######################## -*- Mode: Makefile-Automake -*- ######################
-###############################################################################
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src/tests/preempt_longrun
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red='[0;31m'; \
-    grn='[0;32m'; \
-    lgn='[1;32m'; \
-    blu='[1;34m'; \
-    mgn='[0;35m'; \
-    brg='[1m'; \
-    std='[m'; \
-  fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__recheck_rx = ^[ 	]*:recheck:[ 	]*
-am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
-am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-	    recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[ 	]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);					\
-$(am__vpath_adj_setup) $(am__vpath_adj)			\
-$(am__tty_colors);					\
-srcdir=$(srcdir); export srcdir;			\
-case "$@" in						\
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
-    *) am__odir=.;; 					\
-esac;							\
-test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
-  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
-if test -f "./$$f"; then dir=./;			\
-elif test -f "$$f"; then dir=;				\
-else dir="$(srcdir)/"; fi;				\
-tst=$$dir$$f; log='$@'; 				\
-if test -n '$(DISABLE_HARD_ERRORS)'; then		\
-  am__enable_hard_errors=no; 				\
-else							\
-  am__enable_hard_errors=yes; 				\
-fi; 							\
-case " $(XFAIL_TESTS) " in				\
-  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
-    am__expect_failure=yes;;				\
-  *)							\
-    am__expect_failure=no;;				\
-esac; 							\
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS = @EXEEXT@ .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/automake/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/automake/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-	$(TEST_LOG_FLAGS)
-am__DIST_COMMON = $(srcdir)/Makefile.in \
-	$(top_srcdir)/automake/test-driver
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BACKEND_CC = @BACKEND_CC@
-BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
-CC = @CFACC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFACC = @CFACC@
-CFACPP = @CFACPP@
-CFA_BACKEND_CC = @CFA_BACKEND_CC@
-CFA_BINDIR = @CFA_BINDIR@
-CFA_FLAGS = @CFA_FLAGS@
-CFA_INCDIR = @CFA_INCDIR@
-CFA_LIBDIR = @CFA_LIBDIR@
-CFA_NAME = @CFA_NAME@
-CFA_PREFIX = @CFA_PREFIX@
-CFLAGS = ${BUILD_FLAGS}
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DRIVER_DIR = @DRIVER_DIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-repeats = 10
-max_time = 600
-preempt = 10ul\`ms
-debug = -debug
-type = LONG
-REPEAT = ${abs_top_srcdir}/tools/repeat
-WATCHDOG = ${abs_top_srcdir}/tools/watchdog
-TIME = /usr/bin/time -f "%E"
-
-# $(shell ./update-type $(type))
-# ./update-type $(type)
-UPDATED_TYPE = $(shell ./update-type $(type))
-BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ -O2 -DPREEMPTION_RATE=${preempt} -I.. -I. -DTEST_$(shell cat .type | tr a-z A-Z)
-TESTS = block coroutine create disjoint enter enter3 processor stack wait yield
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .log .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tests/preempt_longrun/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/tests/preempt_longrun/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-	rm -f $< $@
-	$(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-	@:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-	@$(am__set_TESTS_bases); \
-	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-	redo_bases=`for i in $$bases; do \
-	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-	            done`; \
-	if test -n "$$redo_bases"; then \
-	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-	  if $(am__make_dryrun); then :; else \
-	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-	  fi; \
-	fi; \
-	if test -n "$$am__remaking_logs"; then \
-	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-	       "recursion detected" >&2; \
-	elif test -n "$$redo_logs"; then \
-	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-	fi; \
-	if $(am__make_dryrun); then :; else \
-	  st=0;  \
-	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-	  for i in $$redo_bases; do \
-	    test -f $$i.trs && test -r $$i.trs \
-	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-	    test -f $$i.log && test -r $$i.log \
-	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-	  done; \
-	  test $$st -eq 0 || exit 1; \
-	fi
-	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-	ws='[ 	]'; \
-	results=`for b in $$bases; do echo $$b.trs; done`; \
-	test -n "$$results" || results=/dev/null; \
-	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-	  success=true; \
-	else \
-	  success=false; \
-	fi; \
-	br='==================='; br=$$br$$br$$br$$br; \
-	result_count () \
-	{ \
-	    if test x"$$1" = x"--maybe-color"; then \
-	      maybe_colorize=yes; \
-	    elif test x"$$1" = x"--no-color"; then \
-	      maybe_colorize=no; \
-	    else \
-	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-	    fi; \
-	    shift; \
-	    desc=$$1 count=$$2; \
-	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
-	      color_start=$$3 color_end=$$std; \
-	    else \
-	      color_start= color_end=; \
-	    fi; \
-	    echo "$${color_start}# $$desc $$count$${color_end}"; \
-	}; \
-	create_testsuite_report () \
-	{ \
-	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
-	  result_count $$1 "PASS: " $$pass  "$$grn"; \
-	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
-	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-	  result_count $$1 "FAIL: " $$fail  "$$red"; \
-	  result_count $$1 "XPASS:" $$xpass "$$red"; \
-	  result_count $$1 "ERROR:" $$error "$$mgn"; \
-	}; \
-	{								\
-	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
-	    $(am__rst_title);						\
-	  create_testsuite_report --no-color;				\
-	  echo;								\
-	  echo ".. contents:: :depth: 2";				\
-	  echo;								\
-	  for b in $$bases; do echo $$b; done				\
-	    | $(am__create_global_log);					\
-	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
-	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
-	if $$success; then						\
-	  col="$$grn";							\
-	 else								\
-	  col="$$red";							\
-	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
-	fi;								\
-	echo "$${col}$$br$${std}"; 					\
-	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
-	echo "$${col}$$br$${std}"; 					\
-	create_testsuite_report --maybe-color;				\
-	echo "$$col$$br$$std";						\
-	if $$success; then :; else					\
-	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
-	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
-	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
-	  fi;								\
-	  echo "$$col$$br$$std";					\
-	fi;								\
-	$$success || exit 1
-
-check-TESTS:
-	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-	exit $$?;
-recheck: all 
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	bases=`for i in $$bases; do echo $$i; done \
-	         | $(am__list_recheck_tests)` || exit 1; \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	log_list=`echo $$log_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-	        am__force_recheck=am--force-recheck \
-	        TEST_LOGS="$$log_list"; \
-	exit $$?
-block.log: block
-	@p='block'; \
-	b='block'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-coroutine.log: coroutine
-	@p='coroutine'; \
-	b='coroutine'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-create.log: create
-	@p='create'; \
-	b='create'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-disjoint.log: disjoint
-	@p='disjoint'; \
-	b='disjoint'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-enter.log: enter
-	@p='enter'; \
-	b='enter'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-enter3.log: enter3
-	@p='enter3'; \
-	b='enter3'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-processor.log: processor
-	@p='processor'; \
-	b='processor'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-stack.log: stack
-	@p='stack'; \
-	b='stack'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-wait.log: wait
-	@p='wait'; \
-	b='wait'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-yield.log: yield
-	@p='yield'; \
-	b='yield'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
-	@p='$<'; \
-	$(am__set_b); \
-	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-@am__EXEEXT_TRUE@.test$(EXEEXT).log:
-@am__EXEEXT_TRUE@	@p='$<'; \
-@am__EXEEXT_TRUE@	$(am__set_b); \
-@am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-@am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
-@am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-@am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile all-local
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-local mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: all all-am all-local check check-TESTS check-am clean \
-	clean-generic clean-local cscopelist-am ctags-am distclean \
-	distclean-generic distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic pdf pdf-am ps ps-am recheck tags-am \
-	uninstall uninstall-am
-
-.PRECIOUS: Makefile
-
-
-# .INTERMEDIATE: ${TESTS}
-
-all-local: ${TESTS:=.run}
-
-runall : ${TESTS:=.run}
-	@ echo "All programs terminated normally"
-
-watchall : ${TESTS:=.watch}
-	@ echo "All programs terminated normally"
-
-compileall : ${TESTS}
-	@ echo "Compiled"
-
-clean-local:
-	rm -f ${TESTS} core* out.log .type
-
-% : %.c ${CC} ${UPDATED_TYPE}
-	${AM_V_GEN}${CC} ${CFLAGS} ${<} $(debug) -o ${@}
-
-%.run : % ${REPEAT}
-	@ time ${REPEAT} -r out.log -i -s $(repeats) timeout ${max_time} ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
-
-%.watch : % ${WATCHDOG}
-	@ time ${WATCHDOG} ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
-
-%.time : % ${REPEAT}
-	@ ${REPEAT} -i -s -- $(repeats) $(TIME) -a -o times.log ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
-
-${REPEAT}: ${abs_top_srcdir}/tools/Makefile
-	@+make -C ${abs_top_srcdir}/tools/
-
-${WATCHDOG}: ${abs_top_srcdir}/tools/Makefile
-	@+make -C ${abs_top_srcdir}/tools/
-
-# 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.
-.NOEXPORT:
Index: c/tests/preempt_longrun/block.c
===================================================================
--- src/tests/preempt_longrun/block.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/signal/block.c
Index: c/tests/preempt_longrun/coroutine.c
===================================================================
--- src/tests/preempt_longrun/coroutine.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/coroutineYield.c
Index: c/tests/preempt_longrun/create.c
===================================================================
--- src/tests/preempt_longrun/create.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,27 +1,0 @@
-#include <kernel>
-#include <thread>
-#include <time>
-
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-static const unsigned long N = 60_000ul;
-
-thread worker_t {};
-
-void main(worker_t & this) {}
-
-int main(int argc, char* argv[]) {
-	processor p;
-	for(int i = 0; TEST(i < N); i++) {
-		worker_t w[7];
-		KICK_WATCHDOG;
-	}
-}
Index: c/tests/preempt_longrun/disjoint.c
===================================================================
--- src/tests/preempt_longrun/disjoint.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/signal/disjoint.c
Index: c/tests/preempt_longrun/enter.c
===================================================================
--- src/tests/preempt_longrun/enter.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,37 +1,0 @@
-#include <kernel>
-#include <monitor>
-#include <thread>
-#include <time>
-
-#define __kick_rate 75000ul
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-static const unsigned long N  = 2_100_000ul;
-
-monitor mon_t {};
-void foo( mon_t & mutex this ) {
-	KICK_WATCHDOG;
-}
-
-mon_t mon;
-thread worker_t {};
-void main( worker_t & this ) {
-	for( unsigned long i = 0; TEST(i < N); i++ ) {
-		foo( mon );
-	}
-}
-
-int main(int argc, char * argv[] ) {
-	processor p;
-	{
-		worker_t w[7];
-	}
-}
Index: c/tests/preempt_longrun/enter3.c
===================================================================
--- src/tests/preempt_longrun/enter3.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,45 +1,0 @@
-#include <kernel>
-#include <monitor>
-#include <thread>
-#include <time>
-
-#define __kick_rate 75000ul
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-static const unsigned long N  = 500_000ul;
-
-monitor mon_t {};
-
-mon_t mon1, mon2, mon3;
-
-void foo( mon_t & mutex a, mon_t & mutex b, mon_t & mutex c ) {
-	KICK_WATCHDOG;
-}
-
-thread worker_t {};
-
-void main( worker_t & this ) {
-	for( unsigned long i = 0; TEST(i < N); i++ ) {
-		foo( mon1, mon2, mon3 );
-	}
-}
-
-extern "C" {
-static worker_t * workers;
-}
-
-int main(int argc, char * argv[] ) {
-	processor p;
-	{
-		worker_t w[7];
-		workers = w;
-	}
-}
Index: c/tests/preempt_longrun/preempt.c
===================================================================
--- src/tests/preempt_longrun/preempt.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/preempt.c
Index: c/tests/preempt_longrun/processor.c
===================================================================
--- src/tests/preempt_longrun/processor.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,33 +1,0 @@
-#include <kernel>
-#include <thread>
-#include <time>
-
-#include <unistd.h>
-
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-static const unsigned long N = 50_000ul;
-
-int main(int argc, char* argv[]) {
-	processor * p[15];
-	for ( int pi = 0; pi < 15; pi++ ) {
-		p[pi] = new();
-	}
-	for ( int i = 0; TEST(i < N); i++) {
-		int pi = i % 15;
-		delete( p[pi] );
-		p[pi] = new();
-		KICK_WATCHDOG;
-	}
-	for ( int pi = 0; pi < 15; pi++ ) {
-		delete( p[pi] );
-	}
-}
Index: c/tests/preempt_longrun/stack.c
===================================================================
--- src/tests/preempt_longrun/stack.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,46 +1,0 @@
-#include <kernel>
-#include <math>
-#include <thread>
-#include <time>
-
-#define __kick_rate 5000000ul
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-thread worker_t {};
-
-void main(worker_t & this) {
-	while(TEST(0)) {
-		volatile long long p = 5_021_609ul;
-		volatile long long a = 326_417ul;
-		volatile long long n = 1l;
-		for (volatile long long i = 0; i < p; i++) {
-			n *= a;
-			n %= p;
-			KICK_WATCHDOG;
-		}
-
-		if( !TEST(n == a) ) {
-			abort();
-		}
-	}
-}
-
-extern "C" {
-static worker_t * workers;
-}
-
-int main(int argc, char* argv[]) {
-	processor p;
-	{
-		worker_t w[7];
-		workers = w;
-	}
-}
Index: c/tests/preempt_longrun/update-type
===================================================================
--- src/tests/preempt_longrun/update-type	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-#!/bin/bash
-
-if [ "$#" -ne 1 ]
-then
-	echo "illegal number of parameters, must be 1 was $#"
-	exit
-fi
-
-NEW="$(echo $1 | tr a-z A-Z)"
-TYPE_FILE=".type"
-if [ -f "$TYPE_FILE" ]
-then
-	OLD="$(cat $TYPE_FILE | tr a-z A-Z)"
-	if [ $OLD == $NEW ]
-	then
-		echo > /dev/null
-		# echo "$TYPE_FILE stayed unchanged"
-	else
-		echo "$NEW" > "$TYPE_FILE"
-		# echo "$TYPE_FILE changed from '$OLD' to '$NEW'"
-	fi
-else
-	echo "$NEW" > "$TYPE_FILE"
-fi
-echo "$TYPE_FILE"
Index: c/tests/preempt_longrun/wait.c
===================================================================
--- src/tests/preempt_longrun/wait.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/signal/wait.c
Index: c/tests/preempt_longrun/yield.c
===================================================================
--- src/tests/preempt_longrun/yield.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,41 +1,0 @@
-#include <kernel>
-#include <thread>
-#include <time>
-
-#define __kick_rate 550000ul
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 9_750_000ul;
-#else
-static const unsigned long N = 325_000ul;
-#endif
-
-thread worker_t {};
-
-void main(worker_t & this) {
-	for(int i = 0; TEST(i < N); i++) {
-		yield();
-		KICK_WATCHDOG;
-	}
-}
-
-extern "C" {
-static worker_t * workers;
-}
-
-int main(int argc, char* argv[]) {
-	processor p;
-	{
-		worker_t w[7];
-		workers = w;
-	}
-}
Index: c/tests/pybin/__init__.py
===================================================================
--- src/tests/pybin/__init__.py	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-#This file is empty but needs to exist for python import to work
Index: c/tests/pybin/settings.py
===================================================================
--- src/tests/pybin/settings.py	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,86 +1,0 @@
-from __future__ import print_function
-
-import os
-import sys
-
-try :
-	sys.path.append(os.getcwd())
-	import config
-
-	SRCDIR = os.path.abspath(config.SRCDIR)
-	BUILDDIR = os.path.abspath(config.BUILDDIR)
-except:
-	print('ERROR: missing config.py, re-run configure script.', file=sys.stderr)
-	sys.exit(1)
-
-class Architecture:
-	KnownArchitectures = {
-		'x64'			: 'x64',
-		'x86-64'		: 'x64',
-		'x86_64'		: 'x64',
-		'x86'			: 'x86',
-		'i386'		: 'x86',
-		'i486'		: 'x86',
-		'i686'		: 'x86',
-		'Intel 80386'	: 'x86',
-		'arm'			: 'arm',
-		'ARM'			: 'arm',
-	}
-
-	def __init__(self, arch):
-		if arch:
-			self.cross_compile = True
-			try:
-				self.target = Architecture.makeCanonical( arch )
-			except KeyError:
-				print("Unkown architecture %s" % arch)
-				sys.exit(1)
-		else:
-			self.cross_compile = False
-			try:
-				arch = config.HOSTARCH
-				self.target = Architecture.makeCanonical( arch )
-			except KeyError:
-				print("Running on unkown architecture %s" % arch)
-				sys.exit(1)
-
-		self.string = self.target
-
-	def update(self):
-		if not self.cross_compile:
-			self.target = machine_default()
-			self.string = self.target
-			print("updated to %s" % self.target)
-
-	def match(self, arch):
-		return True if not arch else self.target == arch
-
-	@classmethod
-	def makeCanonical(_, arch):
-		return Architecture.KnownArchitectures[arch]
-
-
-class Debug:
-	def __init__(self, value):
-		self.string = "debug" if value else "no debug"
-		self.flags  = """DEBUG_FLAGS="%s" """ % ("-debug" if value else "-nodebug")
-
-def init( options ):
-	global arch
-	global dry_run
-	global generating
-	global make
-	global debug
-	global debugFlag
-
-	dry_run    = options.dry_run
-	generating = options.regenerate_expected
-	make       = 'make'
-	debug	     = Debug(options.debug)
-	arch       = Architecture(options.arch)
-
-
-def updateMakeCmd(force, jobs):
-	global make
-
-	make = "make" if not force else ("make -j%i" % jobs)
Index: c/tests/pybin/test_run.py
===================================================================
--- src/tests/pybin/test_run.py	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,93 +1,0 @@
-import os
-
-from pybin.tools import *
-
-import pybin.settings
-import datetime
-
-from string import Template
-
-class DeltaTemplate(Template):
-    delimiter = "%"
-
-def strfdelta(tdelta, fmt):
-    d["H"], rem = divmod(tdelta.seconds, 3600)
-    d["M"], d["S"] = divmod(rem, 60)
-    t = DeltaTemplate(fmt)
-    return t.substitute(**d)
-
-# Test class that defines what a test is
-class Test:
-	def __init__(self):
-		self.name = ''
-		self.path = ''
-		self.arch = ''
-
-	def toString(self):
-		return "{:25s} ({:5s} {:s})".format( self.name, self.arch if self.arch else "Any", self.target() )
-
-	def prepare(self):
-		mkdir( (self.output_log(), self.error_log(), self.input()            ) )
-		rm   ( (self.output_log(), self.error_log(), self.target_executable()) )
-
-	def expect(self):
-		return os.path.normpath( os.path.join(settings.SRCDIR  , self.path, ".expect", "%s%s.txt" % (self.name,'' if not self.arch else ".%s" % self.arch)) )
-
-	def error_log(self):
-		return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, ".err"   , "%s.log" % self.name) )
-
-	def output_log(self):
-		return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, ".out"   , "%s.log" % self.name) )
-
-	def input(self):
-		return os.path.normpath( os.path.join(settings.SRCDIR  , self.path, ".in"    , "%s.txt" % self.name) )
-
-	def target_output(self):
-		return self.output_log() if not settings.generating else self.expect()
-
-	def target(self):
-		return os.path.normpath( os.path.join(self.path, self.name) )
-
-	def target_executable(self):
-		return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, self.name) )
-
-	@classmethod
-	def valid_name(_, name):
-		return not name.endswith( ('.c', '.cc', '.cpp', '.cfa') )
-
-	@classmethod
-	def from_target(_, target):
-		test = Test()
-		test.name = os.path.basename(target)
-		test.path = os.path.relpath (os.path.dirname(target), settings.SRCDIR)
-		test.arch = settings.arch.toString() if settings.arch.cross_compile else ''
-		return test
-
-
-class TestResult:
-	SUCCESS = 0
-	FAILURE = 1
-	TIMEOUT = 124
-
-	@classmethod
-	def toString( cls, retcode, duration ):
-		if settings.generating :
-			if   retcode == TestResult.SUCCESS: 	text = "Done   "
-			elif retcode == TestResult.TIMEOUT: 	text = "TIMEOUT"
-			else :						text = "ERROR code %d" % retcode
-		else :
-			if   retcode == TestResult.SUCCESS: 	text = "PASSED "
-			elif retcode == TestResult.TIMEOUT: 	text = "TIMEOUT"
-			else :						text = "FAILED with code %d" % retcode
-
-		text += "    C%s - R%s" % (cls.fmtDur(duration[0]), cls.fmtDur(duration[1]))
-		return text
-
-	@classmethod
-	def fmtDur( cls, duration ):
-		if duration :
-			hours, rem = divmod(duration, 3600)
-			minutes, rem = divmod(rem, 60)
-			seconds, millis = divmod(rem, 1)
-			return "%2d:%02d.%03d" % (minutes, seconds, millis * 1000)
-		return " n/a"
Index: c/tests/pybin/tools.py
===================================================================
--- src/tests/pybin/tools.py	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,241 +1,0 @@
-from __future__ import print_function
-
-import __main__
-import argparse
-import multiprocessing
-import os
-import re
-import signal
-import stat
-import sys
-import fileinput
-
-from pybin import settings
-from subprocess import Popen, PIPE, STDOUT
-
-################################################################################
-#               shell helpers
-################################################################################
-
-# helper functions to run terminal commands
-def sh(cmd, print2stdout = True, input = None):
-	# add input redirection if needed
-	if input and os.path.isfile(input):
-		cmd += " < %s" % input
-
-	# if this is a dry_run, only print the commands that would be ran
-	if settings.dry_run :
-		print("cmd: %s" % cmd)
-		return 0, None
-
-	# otherwise create a pipe and run the desired command
-	else :
-		proc = Popen(cmd, stdout=None if print2stdout else PIPE, stderr=STDOUT, shell=True)
-		out, err = proc.communicate()
-		return proc.returncode, out
-
-def is_ascii(fname):
-	if not os.path.isfile(fname):
-		return False
-
-	code, out = sh("file %s" % fname, print2stdout = False)
-	if code != 0:
-		return False
-
-	match = re.search(".*: (.*)", out)
-
-	if not match:
-		return False
-
-	return match.group(1).startswith("ASCII text")
-
-# Remove 1 or more files silently
-def rm( files ):
-	try:
-		for file in files:
-			sh("rm -f %s > /dev/null 2>&1" % file )
-	except TypeError:
-		sh("rm -f %s > /dev/null 2>&1" % files )
-
-# Create 1 or more directory
-def mkdir( files ):
-	try:
-		for file in files:
-			sh("mkdir -p %s" % os.path.dirname(file) )
-	except TypeError:
-		sh("mkdir -p %s" % os.path.dirname(files) )
-
-def chdir( dest = __main__.__file__ ):
-	abspath = os.path.abspath(dest)
-	dname = os.path.dirname(abspath)
-	os.chdir(dname)
-
-# diff two files
-def diff( lhs, rhs ):
-	# diff the output of the files
-	diff_cmd = ("diff --ignore-all-space "
-				"--ignore-blank-lines "
-				"--old-group-format='\t\tmissing lines :\n"
-				"%%<' \\\n"
-				"--new-group-format='\t\tnew lines :\n"
-				"%%>' \\\n"
-				"--unchanged-group-format='%%=' \\"
-				"--changed-group-format='\t\texpected :\n"
-				"%%<"
-				"\t\tgot :\n"
-				"%%>\n' \\\n"
-				"--new-line-format='\t\t%%dn\t%%L' \\\n"
-				"--old-line-format='\t\t%%dn\t%%L' \\\n"
-				"--unchanged-line-format='' \\\n"
-				"%s %s")
-
-	# fetch return code and error from the diff command
-	return sh(diff_cmd % (lhs, rhs), False)
-
-# call make
-def make(target, flags = '', redirects = '', error_file = None, silent = False):
-	test_param = """test="%s" """ % (error_file) if error_file else ''
-	cmd = ' '.join([
-		settings.make,
-		'-s' if silent else '',
-		test_param,
-		settings.debug.flags,
-		flags,
-		target,
-		redirects
-	])
-	return sh(cmd)
-
-def which(program):
-    import os
-    def is_exe(fpath):
-        return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
-
-    fpath, fname = os.path.split(program)
-    if fpath:
-        if is_exe(program):
-            return program
-    else:
-        for path in os.environ["PATH"].split(os.pathsep):
-            exe_file = os.path.join(path, program)
-            if is_exe(exe_file):
-                return exe_file
-
-    return None
-################################################################################
-#               file handling
-################################################################################
-
-# helper function to replace patterns in a file
-def file_replace(fname, pat, s_after):
-	file = fileinput.FileInput(fname, inplace=True, backup='.bak')
-	for line in file:
-		print(line.replace(pat, s_after), end='')
-	file.close()
-
-# helper function to check if a files contains only a specific string
-def fileContainsOnly(file, text) :
-	with open(file) as f:
-		ff = f.read().strip()
-		result = ff == text.strip()
-
-		return result;
-
-# check whether or not a file is executable
-def fileIsExecutable(file) :
-	try :
-		fileinfo = os.stat(file)
-		return bool(fileinfo.st_mode & stat.S_IXUSR)
-	except Exception as inst:
-		print(type(inst))    # the exception instance
-		print(inst.args)     # arguments stored in .args
-		print(inst)
-		return False
-
-# transform path to canonical form
-def canonicalPath(path):
-	abspath = os.path.abspath(__main__.__file__)
-	dname = os.path.dirname(abspath)
-	return os.path.join(dname, os.path.normpath(path) )
-
-# compare path even if form is different
-def pathCmp(lhs, rhs):
-	return canonicalPath( lhs ) == canonicalPath( rhs )
-
-# walk all files in a path
-def pathWalk( op ):
-	def step(_, dirname, names):
-		for name in names:
-			path = os.path.join(dirname, name)
-			op( path )
-
-	# Start the walk
-	dname = settings.SRCDIR
-	os.path.walk(dname, step, '')
-
-################################################################################
-#               system
-################################################################################
-# count number of jobs to create
-def jobCount( options, tests ):
-	# check if the user already passed in a number of jobs for multi-threading
-	if not options.jobs:
-		make_flags = os.environ.get('MAKEFLAGS')
-		force = bool(make_flags)
-		make_jobs_fds = re.search("--jobserver-(auth|fds)=\s*([0-9]+),([0-9]+)", make_flags) if make_flags else None
-		if make_jobs_fds :
-			tokens = os.read(int(make_jobs_fds.group(2)), 1024)
-			options.jobs = len(tokens)
-			os.write(int(make_jobs_fds.group(3)), tokens)
-		else :
-			options.jobs = multiprocessing.cpu_count()
-	else :
-		force = True
-
-	# make sure we have a valid number of jobs that corresponds to user input
-	if options.jobs <= 0 :
-		print('ERROR: Invalid number of jobs', file=sys.stderr)
-		sys.exit(1)
-
-	return min( options.jobs, len(tests) ), force
-
-# setup a proper processor pool with correct signal handling
-def setupPool(jobs):
-	original_sigint_handler = signal.signal(signal.SIGINT, signal.SIG_IGN)
-	pool = multiprocessing.Pool(jobs)
-	signal.signal(signal.SIGINT, original_sigint_handler)
-
-	return pool
-
-# handle signals in scope
-class SignalHandling():
-	def __enter__(self):
-		# enable signal handling
-	    	signal.signal(signal.SIGINT, signal.SIG_DFL)
-
-	def __exit__(self, type, value, traceback):
-		# disable signal handling
-		signal.signal(signal.SIGINT, signal.SIG_IGN)
-
-################################################################################
-#               misc
-################################################################################
-
-# check if arguments is yes or no
-def yes_no(string):
-	if string == "yes" :
-		return True
-	if string == "no" :
-		return False
-	raise argparse.ArgumentTypeError(msg)
-	return False
-
-def fancy_print(text):
-	column = which('column')
-	if column:
-		cmd = "%s 2> /dev/null" % column
-		print(cmd)
-		proc = Popen(cmd, stdin=PIPE, stderr=None, shell=True)
-		proc.communicate(input=text)
-	else:
-		print(text)
Index: c/tests/quoted_keyword.c
===================================================================
--- src/tests/quoted_keyword.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,49 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// quoted_keyword.c -- test quoted keyword usage
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun 30 14:03:59 2016
-// Update Count     : 19
-//
-
-#include <fstream>
-
-struct {
-	int `otype`;
-	int `struct`;
-} st = { 10, 10 };
-
-typedef int `forall`;
-`forall` xxx = 10;
-
-int `_Alignas`, `_Alignof`, `__alignof`, `__alignof__`, `asm`, `__asm`, `__asm__`, `_At`, `_Atomic`, `__attribute`,
-	`__attribute__`, `auto`, `_Bool`, `break`, `case`, `catch`, `catchResume`, `char`, `choose`, `_Complex`, `__complex`,
-	`__complex__`, `const`, `__const`, `__const__`, `continue`, `default`, `disable`, `do`, `double`, `dtype`, `else`,
-	`enable`, `enum`, `__extension__`, `extern`, `fallthru`, `finally`, `float`, `__float128`, `for`, `forall`, `fortran`,
-	`ftype`, `_Generic`, `goto`, `if`, `_Imaginary`, `__imag`, `__imag__`, `inline`, `__inline`, `__inline__`, `int`,
-	`__int128`, `__label__`, `long`, `lvalue`, `_Noreturn`, `__builtin_offsetof`, `otype`, `register`, `restrict`,
-	`__restrict`, `__restrict__`, `return`, `short`, `signed`, `__signed`, `__signed__`, `sizeof`, `static`,
-	`_Static_assert`, `struct`, `switch`, `_Thread_local`, `throw`, `throwResume`, `trait`, `try`, `typedef`,
-	`typeof`, `__typeof`, `__typeof__`, `union`, `unsigned`, `__builtin_va_list`, `void`, `volatile`, `__volatile`,
-	`__volatile__`, `while`;
-
-int main() {
-	int `if` = 0;
-	`catch` = 1;
-	st.`otype` = 2;
-	st.`struct` = 3;
-	`throw` = 4;
-	sout | `catch` + st.`otype` + st.`struct` + `throw` | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa quoted_keyword.c" //
-// End: //
Index: c/tests/raii/.expect/ctor-autogen-ERR1.txt
===================================================================
--- src/tests/raii/.expect/ctor-autogen-ERR1.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,56 +1,0 @@
-raii/ctor-autogen.c:102:1 error: Unique best alternative includes deleted identifier in Cast of:
-  Application of
-    Deleted Expression
-      Variable Expression: ?{}: static inline function
-      ... with parameters
-        _dst: reference to instance of struct Managed with body 1 
-        x: signed int
-      ... returning nothing 
-
-      ... deleted by: ?{}: function
-      ... with parameters
-        m: reference to instance of struct Managed with body 1 
-      ... returning nothing 
-      ... with body 
-        CompoundStmt
-          Expression Statement:
-            Application of
-              Variable Expression: ?=?: function
-              ... with parameters
-                intrinsic reference to signed int
-                intrinsic signed int
-              ... returning 
-                _retval__operator_assign: signed int
-                ... with attributes: 
-                  Attribute with name: unused
-
-
-            ... to arguments
-              Cast of:
-                Member Expression, with field: 
-                  x: signed int
-                ... from aggregate: 
-                  Cast of:
-                    Variable Expression: m: reference to instance of struct Managed with body 1 
-                  ... to:
-                    instance of struct Managed with body 1 
-              ... to:
-                reference to signed int
-              Cast of:
-                constant expression (0 0: zero_t)
-              ... to:
-                signed int
-
-            ... with environment:
-              Types:
-              Non-types:
-
-
-  ... to arguments
-    Cast of:
-      Variable Expression: x: instance of struct Managed with body 1 
-    ... to:
-      reference to instance of struct Managed with body 1 
-    constant expression (123 123: signed int)
-
-... to: nothing
Index: c/tests/raii/.expect/dtor-early-exit-ERR1.txt
===================================================================
--- src/tests/raii/.expect/dtor-early-exit-ERR1.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,4 +1,0 @@
-raii/dtor-early-exit.c:153:1 error: jump to label 'L1' crosses initialization of y Branch (Goto)
-  with target: L1
-  with original target: L1
-
Index: c/tests/raii/.expect/dtor-early-exit-ERR2.txt
===================================================================
--- src/tests/raii/.expect/dtor-early-exit-ERR2.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,4 +1,0 @@
-raii/dtor-early-exit.c:217:1 error: jump to label 'L2' crosses initialization of y Branch (Goto)
-  with target: L2
-  with original target: L2
-
Index: c/tests/raii/.expect/dtor-early-exit.txt
===================================================================
--- src/tests/raii/.expect/dtor-early-exit.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,220 +1,0 @@
-f i=0
-construct x
-construct y
-construct z
-destruct z
-destruct y
-destruct x
-f i=1
-construct x
-construct y
-construct z
-destruct z
-destruct y
-destruct x
-f i=2
-construct x
-construct y
-construct z
-destruct z
-destruct y
-destruct x
-f i=3
-construct x
-construct y
-construct z
-destruct z
-destruct y
-destruct x
-
-g for i=0
-construct x
-destruct x
-g for i=1
-construct x
-destruct x
-g for i=2
-construct x
-destruct x
-g for i=3
-construct x
-destruct x
-g for i=4
-construct x
-destruct x
-g for i=5
-construct x
-destruct x
-g for i=6
-construct x
-destruct x
-g for i=7
-construct x
-destruct x
-g for i=8
-construct x
-destruct x
-g for i=9
-construct x
-destruct x
-
-g while i=0
-construct x
-destruct x
-g while i=1
-construct x
-destruct x
-g while i=2
-construct x
-destruct x
-g while i=3
-construct x
-destruct x
-g while i=4
-construct x
-destruct x
-g while i=5
-construct x
-destruct x
-g while i=6
-construct x
-destruct x
-g while i=7
-construct x
-destruct x
-g while i=8
-construct x
-destruct x
-g while i=9
-construct x
-destruct x
-
-construct y
-g switch i=0
-destruct y
-construct y
-g switch i=1
-destruct y
-construct y
-g switch i=2
-destruct y
-construct y
-g switch i=3
-destruct y
-construct y
-g switch i=4
-destruct y
-construct y
-g switch i=5
-destruct y
-construct y
-g switch i=6
-destruct y
-construct y
-g switch i=7
-destruct y
-construct y
-g switch i=8
-destruct y
-construct y
-g switch i=9
-destruct y
-
-g for k=0
-g for i=0
-construct x
-g for j=0
-construct y
-continue L2
-destruct y
-g for j=1
-construct y
-break L2
-destruct y
-destruct x
-g for i=1
-construct x
-g for j=0
-construct y
-continue L2
-destruct y
-g for j=1
-construct y
-break L2
-destruct y
-destruct x
-g for i=2
-construct x
-continue L1
-destruct x
-g for i=3
-construct x
-break L1
-destruct x
-g for k=1
-g for i=0
-construct x
-g for j=0
-construct y
-continue L2
-destruct y
-g for j=1
-construct y
-break L2
-destruct y
-destruct x
-g for i=1
-construct x
-g for j=0
-construct y
-continue L2
-destruct y
-g for j=1
-construct y
-break L2
-destruct y
-destruct x
-g for i=2
-construct x
-continue L1
-destruct x
-g for i=3
-construct x
-break L1
-destruct x
-
-construct w
-construct v
-break L3
-destruct v
-destruct w
-
-h
-construct y
-L1
-construct x
-L2
-goto L1
-destruct x
-L1
-construct x
-L2
-goto L2
-L2
-goto L3
-L3
-goto L2-2
-L2
-goto L4
-destruct x
-destruct y
-L4
-goto L0
-construct y
-L1
-construct x
-L2
-goto L4
-destruct x
-destruct y
-L4
Index: c/tests/raii/.expect/globals.txt
===================================================================
--- src/tests/raii/.expect/globals.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,9 +1,0 @@
-static		inline		autogen		value
-no 		no 		no 		22
-no 		no 		yes		22
-no 		yes		no 		22
-no 		yes		yes		22
-yes		no 		no 		22
-yes		no 		yes		22
-yes		yes		no 		22
-yes		yes		yes		22
Index: c/tests/raii/.expect/memberCtors-ERR1.txt
===================================================================
--- src/tests/raii/.expect/memberCtors-ERR1.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-raii/memberCtors.c:71:1 error: in void ?{}(B &b), field a2 used before being constructed
Index: c/tests/raii/.expect/memberCtors.txt
===================================================================
--- src/tests/raii/.expect/memberCtors.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,213 +1,0 @@
-Before declaration of b1
-constructing int
-constructing int
-constructing int
-constructing int
-constructing int
-constructing int
-begin construct B
-assign b.a2
-constructing int
-constructing int
-begin construct A
-construct a.x
-constructing int: 1001
-assign a.y
-assigning int: 0 0
-end construct A
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this.x
-copy constructing int: 1001
-assign this.y
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end copy construct A
-begin ?=? A
-copy constructing int: 1001
-destructing int: 1001
-destructing int: 1001
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end ?=? A
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this.x
-copy constructing int: 1001
-assign this.y
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end copy construct A
-destructing int: 0
-destructing int: 0
-destructing int: 1001
-destructing int: 0
-destructing int: 0
-destructing int: 1001
-construct b.a1
-constructing int
-constructing int
-begin construct A
-construct a.x
-constructing int: 1000
-assign a.y
-assigning int: 0 0
-end construct A
-end construct B
-destructing int: 0
-destructing int: 0
-destructing int: 1001
-Before declaration of b2
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this.x
-copy constructing int: 1000
-assign this.y
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end copy construct A
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this.x
-copy constructing int: 1001
-assign this.y
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end copy construct A
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this.x
-copy constructing int: 0
-assign this.y
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end copy construct A
-End of main
-constructing int
-constructing int
-begin construct A
-construct a.x
-constructing int: 999
-assign a.y
-assigning int: 0 0
-end construct A
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this.x
-copy constructing int: 999
-assign this.y
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end copy construct A
-begin ?=? A
-copy constructing int: 999
-destructing int: 999
-destructing int: 999
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end ?=? A
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this.x
-copy constructing int: 999
-assign this.y
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end copy construct A
-destructing int: 0
-destructing int: 0
-destructing int: 999
-destructing int: 0
-destructing int: 0
-destructing int: 999
-destructing int: 0
-destructing int: 0
-destructing int: 1000
-destructing int: 0
-destructing int: 0
-destructing int: 999
-destructing int: 0
-destructing int: 0
-destructing int: 0
-destructing int: 0
-destructing int: 0
-destructing int: 999
-constructing int
-constructing int
-begin construct A
-construct a.x
-constructing int: 999
-assign a.y
-assigning int: 0 0
-end construct A
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this.x
-copy constructing int: 999
-assign this.y
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end copy construct A
-begin ?=? A
-copy constructing int: 999
-destructing int: 999
-destructing int: 999
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end ?=? A
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this.x
-copy constructing int: 999
-assign this.y
-copy constructing int: 0
-destructing int: 0
-destructing int: 0
-end copy construct A
-destructing int: 0
-destructing int: 0
-destructing int: 999
-destructing int: 0
-destructing int: 0
-destructing int: 999
-destructing int: 0
-destructing int: 0
-destructing int: 1000
-destructing int: 0
-destructing int: 0
-destructing int: 999
-destructing int: 0
-destructing int: 0
-destructing int: 0
-destructing int: 0
-destructing int: 0
-destructing int: 999
Index: c/tests/raii/ctor-autogen.c
===================================================================
--- src/tests/raii/ctor-autogen.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,153 +1,0 @@
-// TODO: add error cases (e.g., use of field constructors for managed types, etc.)
-
-enum Color { R, G, B };
-
-// empty struct/union should have generated ctor/dtors
-union U {};
-struct S {};
-
-struct SimpleUnion {
-	int x;
-	double y;
-	char z;
-};
-
-struct SimpleStruct {
-	int x;
-	double y;
-	char z;
-};
-
-// struct/union with members with generated ctor/dtors should themselves have generated ctor/dtors
-union PopulatedUnion {
-	Color c;
-	U u;
-	S s;
-};
-
-struct PopulatedStruct {
-	Color c;
-	U u;
-	S s;
-};
-
-// dtype-static generic type is otype
-forall(dtype T)
-struct DtypeStaticStruct {
-  T * data;
-  short size;
-};
-
-forall(dtype T)
-union DtypeStaticUnion {
-  T * data;
-  short size;
-};
-
-// dynamic generic type is otype
-forall(otype T)
-struct DynamicStruct {
-	T x;
-};
-
-forall(otype T)
-union DynamicUnion {
-	T x;
-};
-
-// struct/union that contains a generic type is
-struct GenericContainingStruct {
-	DynamicStruct(int) dsi;
-	DynamicStruct(double) dsd;
-	DynamicUnion(int) dui;
-	DynamicUnion(double) dud;
-	DtypeStaticStruct(int) dssi;
-	DtypeStaticStruct(float) dssf;
-	DtypeStaticUnion(int) dsui;
-	DtypeStaticUnion(float) dsuf;
-};
-
-union GenericContainingUnion {
-	DynamicStruct(int) dsi;
-	DynamicStruct(double) dsd;
-	DynamicUnion(int) dui;
-	DynamicUnion(double) dud;
-	DtypeStaticStruct(int) dssi;
-	DtypeStaticStruct(float) dssf;
-	DtypeStaticUnion(int) dsui;
-	DtypeStaticUnion(float) dsuf;
-};
-
-
-forall(otype T)
-T identity(T x) { return x; }
-
-// can identity e if only sized or only the assertion, but the combination breaks...
-// forall(dtype T | sized(T) | { void ?{}(T &); })
-// void identity(T x) {  }
-
-#if ERR1
-// managed type - defines a constructor - can't use field constructors
-struct Managed {
-	int x;
-};
-
-void ?{}(Managed & m) { m.x = 0; }
-
-// managed type since it contains a managed type - can't use field constructors
-struct InheritManaged {
-	Managed m;
-};
-
-Managed x = { 123 }; // error
-Managed y;           // okay
-
-InheritManaged z = { y };  // error?
-#endif
-
-int main() {
-	S s;
-	U u;
-	Color e;
-
-	// identity(R);  Color constant should be Color which is otype
-	identity(e);  // Color should be an otype
-	identity(u);  // U should be an otype
-	identity(s);  // S should be an otype
-
-	SimpleStruct ss;
-	SimpleUnion su;
-
-	identity(ss);
-	identity(su);
-
-	PopulatedStruct ps;
-	PopulatedUnion pu;
-
-	identity(ps); // should recursively be an otype
-	identity(pu); // should recursively be an otype
-
-	DynamicStruct(int) dsi;
-	DynamicStruct(double) dsd;
-	DynamicUnion(int) dui;
-	DynamicUnion(double) dud;
-	DtypeStaticStruct(int) dssi;
-	DtypeStaticStruct(float) dssf;
-	DtypeStaticUnion(int) dsui;
-	DtypeStaticUnion(float) dsuf;
-
-	identity(dsi);
-	identity(dsd);
-	// identity(dui); // xxx - codegen errors in generated thunk _temp3 (Box-pass-generated assignment return-temporary)
-	// identity(dud);
-	identity(dssi);
-	identity(dssf);
-	identity(dsui);
-	identity(dsuf);
-
-	GenericContainingStruct gcs;
-	GenericContainingUnion gcu;
-
-	identity(gcs);
-	identity(gcu);
-}
Index: c/tests/raii/dtor-early-exit.c
===================================================================
--- src/tests/raii/dtor-early-exit.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,256 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// dtor-early-exit.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Wed Aug 17 08:26:25 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 17 08:29:37 2016
-// Update Count     : 2
-//
-
-#include <fstream>
-#include <stdlib>
-extern "C" {
-#define false ((int)0)	// until stdbool.h works
-#define assert(cond) if (! (cond)) { sout | "Assertion failed: (" | #cond | ") at " __FILE__ | ":" | __LINE__ | endl; abort(); }
-}
-
-struct A {
-	const char * name;
-	int * x;
-};
-
-// don't want these called
-void ?{}(A & a) { assert( false ); }
-void ?{}(A & a, const char * name) { a.name = name; sout | "construct " | name | endl; a.x = (int*)malloc(); }
-void ?{}(A & a, const char * name, int * ptr) { assert( false ); }
-
-A ?=?(A & a, A b) {  sout | "assign " | a.name | " " | b.name; return a; }
-void ?{}(A & a, A b) { sout | "copy construct " | b.name | endl; a.x = (int*)malloc(); }
-void ^?{}(A & a) { sout | "destruct " | a.name | endl; free(a.x); }
-
-// test returns
-void f(int i) {
-	sout | "f i=" | i | endl;
-	A x = { "x" };  // construct x
-	{
-		A y = { "y" }; // construct y
-		{
-			A z = { "z" }; // construct z
-			{
-				if (i == 0) return; // destruct x, y, z
-			}
-			if (i == 1) return; // destruct x, y, z
-			// destruct z
-		}
-		if (i == 2) return; // destruct x, y
-		// destruct y
-	}
-	return; // destruct x
-}
-
-// test loops, switch, etc.
-void g() {
-	for (int i = 0; i < 10; i++) {
-		sout | "g for i=" | i | endl;
-		A x = { "x" };
-		// construct x
-		// destruct x
-	}
-	sout | endl;
-	{
-		int i = 0;
-		while (i < 10) {
-			sout | "g while i=" | i | endl;
-			A x = { "x" };
-			// construct x
-			i++;
-			// destruct x
-		}
-	}
-	sout | endl;
-	for (int i = 0; i < 10; i++) {
-		switch(10) {
-			case 0:
-			case 5:
-			case 10: {
-				A y = { "y" };
-				sout | "g switch i=" | i | endl;
-				// construct y
-				break; // destruct y
-			}
-			default: {
-				sout | "g switch i=" | i | endl;
-				A x = { "x" };
-				// construct x
-				break; // destruct x
-			}
-		}
-	}
-	sout | endl;
-	for (int k = 0; k < 2; k++) {
-		sout | "g for k=" | k | endl;
-		L1: for (int i = 0; i < 10; i++) {
-			sout | "g for i=" | i | endl;
-
-			A x = { "x" };
-			if (i == 2) {
-				sout | "continue L1" | endl;
-				continue;  // destruct x
-			} else if (i == 3) {
-				sout | "break L1" | endl;
-				break;  // destruct x
-			}
-
-			L2: for (int j = 0; j < 10; j++) {
-				sout | "g for j=" | j | endl;
-				A y = { "y" };
-				if (j == 0) {
-					sout | "continue L2" | endl;
-					continue; // destruct y - missing because object that needs to be destructed is not a part of this block, it's a part of the for's block
-				} else if (j == 1) {
-					sout | "break L2" | endl;
-					break;  // destruct y
-				} else if (i == 1) {
-					sout | "continue L1" | endl;
-					continue L1; // destruct x,y - note: continue takes you to destructors for block, so only generate destructor for y
-				} else if (k == 1) {
-					sout | "break L1" | endl;
-					break L1;  // destruct x,y
-				}
-			}
-		}
-	}
-
-	sout | endl;
-	L3: if( 3 ) {
-		A w = { "w" };
-		if( 4 ) {
-			A v = { "v" };
-			sout | "break L3" | endl;
-			break L3;
-		}
-	}
-}
-
-// test goto
-void h() {
-	int i = 0;
-	// for each goto G with target label L:
-	// * find all constructed variables alive at G (set S_G)
-	// * find all constructed variables alive at L (set S_L)
-	// * if S_L-S_G is non-empty, error
-	// * emit destructors for all variables in S_G-S_L
-	sout | "h" | endl;
-	{
-		L0: ;
-#ifdef ERR1
-			goto L1; // this is an error in g++ because it skips initialization of y
-#endif
-			A y = { "y" };
-			// S_L1 = { y }
-		L1: sout | "L1" | endl;
-			A x = { "x" };
-			// S_L2 = { y, x }
-		L2: sout | "L2" | endl;
-			if (i == 0) {
-				++i;
-				sout | "goto L1" | endl;
-				// S_G = { y, x }
-				goto L1;  // jump back, destruct b/c before x definition
-				// S_L-S_G = {} => no error
-				// S_G-S_L = { x } => destruct x
-			} else if (i == 1) {
-				++i;
-				sout | "goto L2" | endl;
-				// S_G = { y, x }
-				goto L2;  // jump back, do not destruct
-				// S_L-S_G = {}
-				// S_G-S_L = {} => destruct nothing
-			} else if (i == 2) {
-				++i;
-				sout | "goto L3" | endl;
-				// S_G = { y, x }
-				goto L3;  // jump ahead, do not destruct
-				// S_L-S_G = {}
-				// S_G-S_L = {}
-			} else if (false) {
-				++i;
-				A z = { "z" };
-				sout | "goto L3-2" | endl;
-				// S_G = { z, y, x }
-				goto L3;
-				// S_L-S_G = {}
-				// S_G-S_L = {z} => destruct z
-			} else {
-				++i;
-				sout | "goto L4" | endl;
-				// S_G = { y, x }
-				goto L4;  // jump ahead, destruct b/c left block x was defined in
-				// S_L-S_G = {}
-				// S_G-S_L = { y, x } => destruct y, x
-			}
-			// S_L3 = { y, x }
-		L3: sout | "L3" | endl;
-			sout | "goto L2-2" | endl;
-			// S_G = { y, x }
-			goto L2; // jump back, do not destruct
-			// S_L-S_G = {}
-			// S_G-S_L = {}
-	}
-	// S_L4 = {}
-	L4: sout | "L4" | endl;
-	if (i == 4) {
-		sout | "goto L0" | endl;
-		// S_G = {}
-		goto L0;
-		// S_L-S_G = {}
-		// S_G-S_L = {}
-	}
-#ifdef ERR2
-	// S_G = {}
-	if (i == 5) goto L2; // this is an error in g++ because it skips initialization of y, x
-	// S_L-S_G = { y, x } => non-empty, so error
-#endif
-}
-
-// TODO: implement __label__ and uncomment these lines
-void computedGoto() {
-  // __label__ bar;
-  void *ptr;
-  ptr = &&foo;
-  goto *ptr;
-  assert(false);
-foo: ;
-//   void f() {
-//     ptr = &&bar;
-//     goto *ptr;
-//     assert(false);
-//   }
-//   f();
-//   assert(false);
-// bar: ;
-}
-
-int main() {
-	sepDisable(sout);
-	for (int i = 0; i < 4; i++) {
-		f(i);
-	}
-	sout | endl;
-	g();
-	sout | endl;
-	h();
-
-	computedGoto();
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa dtor-early-exit" //
-// End: //
Index: c/tests/raii/globals.c
===================================================================
--- src/tests/raii/globals.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,83 +1,0 @@
-#include <fstream>
-
-struct value_t {
-	int value;
-};
-
-void ?{}( value_t & this ) { this.value = 22; }
-
-//Standard case
-struct g_t {
-	value_t val;
-};
-
-void ?{}( g_t & this ) { (this.val){}; }
-
-g_t g;
-
-//Autogen case
-struct ga_t {
-	value_t val;
-};
-
-ga_t ga;
-
-//Inline case
-struct gi_t;
-void ?{}( gi_t & this );
-
-struct gi_t {
-	value_t val;
-} gi;
-
-void ?{}( gi_t & this ) { (this.val){}; }
-
-//Inline autogen case
-struct gia_t {
-	value_t val;
-} gia;
-
-//Static case
-struct gs_t {
-	value_t val;
-};
-
-void ?{}( gs_t & this ) { (this.val){}; }
-
-static gs_t gs;
-
-//Static autogen case
-struct gsa_t {
-	value_t val;
-};
-
-static gsa_t gsa;
-
-//Static inline case
-struct gsi_t;
-void ?{}( gsi_t & this );
-
-static struct gsi_t {
-	value_t val;
-} gsi;
-
-void ?{}( gsi_t & this ) { (this.val){}; }
-
-//Static inline autogen case
-static struct gsia_t {
-	value_t val;
-} gsia;
-
-int main() {
-	sout | "static\t\tinline\t\tautogen\t\tvalue" | endl;
-
-	sout | "no \t\tno \t\tno \t\t" | g.val.value    | endl;
-	sout | "no \t\tno \t\tyes\t\t" | ga.val.value   | endl;
-	sout | "no \t\tyes\t\tno \t\t" | gi.val.value   | endl;
-	sout | "no \t\tyes\t\tyes\t\t" | gia.val.value  | endl;
-	sout | "yes\t\tno \t\tno \t\t" | gs.val.value   | endl;
-	sout | "yes\t\tno \t\tyes\t\t" | gsa.val.value  | endl;
-	sout | "yes\t\tyes\t\tno \t\t" | gsi.val.value  | endl;
-	sout | "yes\t\tyes\t\tyes\t\t" | gsia.val.value | endl;
-
-}
Index: c/tests/raii/init_once.c
===================================================================
--- src/tests/raii/init_once.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,195 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// init_once.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Tue Jun 14 15:43:35 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul  9 11:30:29 2016
-// Update Count     : 3
-//
-
-// want to ensure ctor/dtor called at most once per object.
-// whole point of ctor/dtor is that you don't know what's in
-// memory when it's first called, so can't rely on member to
-// determine if this is true. instead, keep an array
-// of addresses that have been constructed and remove the element
-// when it's destructed (and vice-versa)
-
-//*** setup
-extern "C" {
-#define NULL 0
-void * malloc(size_t);
-void free(void *);
-#define assert(cond) if (! (cond)) { printf("Assertion failed: (%s) at %s:%d\n", #cond, __FILE__, __LINE__); abort(); }
-void *memset(void *s, int c, size_t n);
-}
-
-// dummy type
-struct init_once { int * x; };
-
-// array and operations
-// const int size = 1024;
-#define size 1024
-struct array {
-	init_once * elems[size];
-	int length;
-};
-void remove(array * arr, init_once * x) {
-	for (int i = 0; i < arr->length; i++) {
-		if ( arr->elems[i] == x ) {
-			arr->elems[i] = arr->elems[--arr->length];
-			return;
-		}
-	}
-}
-void insert(array * arr, init_once * x) {
-	assert( arr->length < size );
-	arr->elems[arr->length++] = x;
-}
-int find(array * arr, init_once * x) {
-	for (int i = 0; i < arr->length; i++) {
-		if ( arr->elems[i] == x ) {
-			return i;
-		}
-	}
-	return -1;
-}
-void ?{}(array & arr) {
-	memset(arr.elems, 0, sizeof(arr.elems));
-	arr.length = 0;
-}
-array constructed;
-array destructed;
-
-void ?{}(init_once & x) {
-	assert( find( &constructed, &x ) == -1 );
-	remove( &destructed, &x );
-	insert( &constructed, &x );
-
-	x.x = (int *)malloc(sizeof(int));
-}
-
-void ?{}(init_once & x, init_once other) {
-	x{};  // reuse default ctor
-}
-
-void ^?{}(init_once & x) {
-	assert( find( &destructed, &x ) == -1 );
-	remove( &constructed, &x );
-	insert( &destructed, &x );
-
-	free(x.x);
-}
-//*** end setup
-
-// test globals
-init_once x;
-init_once y = x;
-
-void static_variable() {
-	static init_once x;
-}
-
-int main() {
-	// local variables
-	init_once x;
-	init_once y = x;
-
-	// block scoped variables
-	{
-		init_once x;
-		init_once y = x;
-	}
-
-	// loop variables
-	for (int i = 0 ; i < 10; i++) {
-		init_once x;
-		init_once y = x;
-	}
-	int i = 0;
-	while (i < 10) {
-		init_once x;
-		init_once y = x;
-		i++;
-	}
-
-	// declared in a switch block with a break
-	for (int i = 0; i < 10; i++) {
-		switch (10) {
-			case 1: {
-				init_once x;
-				init_once y = x;
-				x{}; // ensure this doesn't execute
-				break;
-			}
-			case 10: {
-				init_once x;
-				init_once y = x;
-			} // fall through
-			default: {
-				init_once x;
-				init_once y = x;
-				break;
-			}
-		}
-	}
-
-	// labeled break/continue
-	L3: for (int k = 0; k < 10; k++) {
-		init_once x;
-		init_once y = x;
-		L1: for (int i = 0; i < 10; i++){
-			init_once x;
-			init_once y = x;
-			L2: for (int j = 0; j < 10; j++) {
-				init_once x;
-				init_once y = x;
-
-				if (i == 0) continue L1;
-				if (i == 1) continue L2;
-				if (i == 2) break L2;
-				if (i == 3) break L1;
-				if (i == 4) continue L3;
-				if (i == 9) break L3;
-				// if (i == 5) goto ;
-			}
-		}
-	}
-
-	// labeled break/continue with if
-	LL1: for (int k = 0; k < 10; k++) {
-		init_once x;
-		init_once y = x;
-		LL2: for (int i = 0; i < 10; i++){
-			init_once x;
-			init_once y = x;
-			LL3: if( i < 5) {
-				init_once x;
-				init_once y = x;
-
-				if (i == 0) continue LL2;
-				if (i == 2) break LL3;
-				if (i == 3) break LL2;
-				if (i == 4) continue LL1;
-			} else {
-				if (i == 9) break LL1;
-				// if (i == 5) goto ;
-			}
-		}
-	}
-
-	// function-scoped static variable
-	for (int i = 0; i < 10; i++) {
-		static_variable();
-	}
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa init_once.c" //
-// End: //
Index: c/tests/raii/memberCtors.c
===================================================================
--- src/tests/raii/memberCtors.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,91 +1,0 @@
-struct WrappedInt {
-  int x;
-};
-
-void ?{}(WrappedInt & this) {
-  printf("constructing int\n");
-  this.x = 0;
-}
-
-void ?{}(WrappedInt & this, WrappedInt other) {
-  printf("copy constructing int: %d\n", other.x);
-  this.x = other.x;
-}
-
-void ?{}(WrappedInt & this, int x) {
-  printf("constructing int: %d\n", x);
-  this.x = x;
-}
-
-void ^?{}(WrappedInt & this) {
-  printf("destructing int: %d\n", this.x);
-}
-
-void ?=?(WrappedInt & this, int x) {
-  printf("assigning int: %d %d\n", this.x, x);
-  this.x = x;
-}
-
-struct A {
-  WrappedInt x, y, z;
-};
-
-void ?{}(A & a) {
-  // currently must define default ctor, since there's no "= default" syntax
-}
-
-void ?{}(A & a, int x) {
-  printf("begin construct A\n");
-  printf("construct a.x\n");
-  (a.x){ x+999 };
-  printf("assign a.y\n");
-  a.y = 0; // not a constructor - default constructor will be inserted
-  printf("end construct A\n");
-} // z never constructed - will be automatically default constructed
-
-void ?{}(A & this, A other) {
-  printf("begin copy construct A\n");
-  printf("copy construct this.x\n");
-  (this.x){ other.x };
-  printf("assign this.y\n");
-  this.y = other.y; // not a constructor - copy constructor will be inserted
-  printf("end copy construct A\n");
-} // z never constructed - will be automatically copy constructed
-
-A ?=?(A & this, A other) {
-  printf("begin ?=? A\n");
-  this.x = other.x;
-  this.y = other.y;
-  this.z = other.z;
-  printf("end ?=? A\n");
-  return this;
-}
-
-struct B {
-  A a1, a2, a3;
-};
-
-void ?{}(B & b) {
-  printf("begin construct B\n");
-  printf("assign b.a2\n");
-  b.a2 = (A) { 2 };
-  printf("construct b.a1\n");
-  (b.a1){ 1 };
-#ifdef ERR1
-  (b.a2){ b.a3 }; // error, b->a2 was used previously but is explicitly constructed
-#endif
-  printf("end construct B\n");
-} // a2, a3 never constructed - will be automatically default constructed
-
-void ^?{}(B & b) {
-  b.a2 = (A) { 0 };
-  ^(b.a1){};
-} // a2, a3 never destructed - will be automatically destructed
-
-int main() {
-  printf("Before declaration of b1\n");
-  B b1;
-  printf("Before declaration of b2\n");
-  B b2 = b1;
-  printf("End of main\n");
-}
Index: c/tests/raii/multiDimension.c
===================================================================
--- src/tests/raii/multiDimension.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,75 +1,0 @@
-struct X {
-  int a;
-  int * ptr;
-};
-
-void ?{}(X & this) {
-  printf("default constructing\n");
-  (this.a){ 123 };
-  this.ptr = (int *)malloc(sizeof(int));
-}
-
-void ?{}(X & this, X other) {
-  printf("copy constructing\n");
-  (this.a){ other.a };
-  this.ptr = (int *)malloc(sizeof(int));
-}
-
-void ?{}(X & this, int a) {
-  printf("constructing with %d\n", a);
-  (this.a){ a };
-  this.ptr = (int *)malloc(sizeof(int));
-}
-
-void ^?{}(X & this) {
-  printf("destructing\n");
-  free(this.ptr);
-}
-
-X ?=?(X & this, X other) {
-  this.a = other.a;
-  return this;
-}
-
-X global[10][10] = {
-  { 1, { 2 }, { 3 }, { 4 }, 5, 6, 7, 8, 9, 10, 11, 12 },
-  { 1, 2, 3, 4 },
-  { { 1234567 } }
-};
-
-X global2[3][3][3] = {
-  {
-    { 1, 2, 3 },
-    { 4, 5, 6 },
-    { 7, 8, 9 },
-    { 10, 11, 12 }
-  },
-  {
-    { 0, 0, 0 }
-  }
-};
-
-int foo() {
-  static X abc[3][3] = {
-    { 11, 22, 33, 44 },
-    { 55, 66 },
-    { 77 },
-    { 88, 99, 1010 }
-  };
-}
-
-// ensure constructed const arrays continue to compile
-const int global[1] = { -2 };
-
-int main() {
-  X abc[4][4] = {
-    { 999, 1111 },
-    { 1, 2, 3, 4, 5 },
-    {},
-    { 0 },
-    { 88 }
-  };
-
-  foo();
-  foo();
-}
Index: c/tests/raii/multiDimension.txt
===================================================================
--- src/tests/raii/multiDimension.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,304 +1,0 @@
-constructing with 1
-constructing with 2
-constructing with 3
-constructing with 4
-constructing with 5
-constructing with 6
-constructing with 7
-constructing with 8
-constructing with 9
-constructing with 10
-constructing with 1
-constructing with 2
-constructing with 3
-constructing with 4
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-constructing with 1234567
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-constructing with 1
-constructing with 2
-constructing with 3
-constructing with 4
-constructing with 5
-constructing with 6
-constructing with 7
-constructing with 8
-constructing with 9
-constructing with 0
-constructing with 0
-constructing with 0
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-default constructing
-constructing with 999
-constructing with 1111
-default constructing
-default constructing
-constructing with 1
-constructing with 2
-constructing with 3
-constructing with 4
-default constructing
-default constructing
-default constructing
-default constructing
-constructing with 0
-default constructing
-default constructing
-default constructing
-constructing with 11
-constructing with 22
-constructing with 33
-constructing with 55
-constructing with 66
-default constructing
-constructing with 77
-default constructing
-default constructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
-destructing
Index: c/tests/random.c
===================================================================
--- src/tests/random.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,79 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// random.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Jul  5 21:29:30 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jan  2 12:19:34 2018
-// Update Count     : 19
-// 
-
-#include <fstream>
-#include <stdlib>										// random
-#include <unistd.h>										// getpid
-
-int main() {
-	// srandom( getpid() );								// set random seed
-	srandom( 1003 );									// fixed seed for repeatable tests
-
-	// test polymorphic calls to random and stream
-	char c = random();
-	sout | c | endl;
-	c = random( 'A' );
-	sout | c | endl;
-	c = random( 'A', 'Z' );
-	sout | c | endl;
-
-	int i = random();
-    sout | i | endl;
-	i = random( 10 );
-    sout | i | endl;
-	i = random( -10, 20 );
-    sout | i | endl;
-
-	unsigned int ui = random();
-    sout | ui | endl;
-	ui = random( 10u );
-    sout | ui | endl;
-	ui = random( 10u, 20u );
-    sout | ui | endl;
-
-	long int li = random();
-    sout | li | endl;
-	li = random( 10l );
-    sout | li | endl;
-	li = random( -10l, 20l );
-    sout | li | endl;
-
-	unsigned long int uli = random();
-    sout | uli | endl;
-	uli = random( 10ul );
-    sout | uli | endl;
-	uli = random( 10ul, 20ul );
-    sout | uli | endl;
-
-    float f = random();
-    sout | f | endl;
-
-    double d = random();
-    sout | d | endl;
-
-    float _Complex fc = random();
-    sout | fc | endl;
-
-    double _Complex dc = random();
-    sout | dc | endl;
-
-    long double _Complex ldc = random();
-    sout | ldc | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa random.c" //
-// End: //
Index: c/tests/rational.c
===================================================================
--- src/tests/rational.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,101 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// rational.c -- test rational number package
-//
-// Author           : Peter A. Buhr
-// Created On       : Mon Mar 28 08:43:12 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Oct 10 23:25:04 2017
-// Update Count     : 67
-//
-
-#include <rational>
-#include <limits>
-#include <stdlib>
-#include <fstream>
-
-// UNNECESSARY, FIX ME
-void ?{}( int & this ) { this = 0; }
-void ?{}( int & this, zero_t ) { this = 0; }
-void ?{}( int & this, one_t ) { this = 1; }
-double convert( int i ) { return (double)i; }
-int convert( double d ) { return (int)d; }
-
-int main() {
-	sout | "constructor" | endl;
-	Rational(int) a = { 3 }, b = { 4 }, c;
-	sout | a | b | c | endl;
-
-	a = (Rational(int)){ 4, 8 };
-	b = (Rational(int)){ 5, 7 };
-	sout | a | b | endl;
-	a = (Rational(int)){ -2, -3 };
-	b = (Rational(int)){ 3, -2 };
-	sout | a | b | endl;
-	a = (Rational(int)){ -2, 3 };
-	b = (Rational(int)){ 3, 2 };
-	sout | a | b | endl;
-
-	sout | "logical" | endl;
-	a = (Rational(int)){ -2 };
-	b = (Rational(int)){ -3, 2 };
-	sout | a | b | endl;
-//	sout | a == 1 | endl; // FIX ME
-	sout | a != b | endl;
-	sout | a <  b | endl;
-	sout | a <= b | endl;
-	sout | a >  b | endl;
-	sout | a >= b | endl;
-
-	sout | "arithmetic" | endl;
-	sout | a | b | endl;
-	sout | a + b | endl;
-	sout | a - b | endl;
-	sout | a * b | endl;
-	sout | a / b | endl;
-
-	sout | "conversion" | endl;
-	a = (Rational(int)){ 3, 4 };
-	sout | widen( a ) | endl;
-	a = (Rational(int)){ 1, 7 };
-	sout | widen( a ) | endl;
-	a = (Rational(int)){ 355, 113 };
-	sout | widen( a ) | endl;
-	sout | narrow( 0.75, 4 ) | endl;
-	sout | narrow( 0.14285714285714, 16 ) | endl;
-	sout | narrow( 3.14159265358979, 256 ) | endl;
-
-	sout | "decompose" | endl;
-	int n, d;
-//	[n, d] = a;
-//	sout | a | n | d | endl;
-
-	sout | "more tests" | endl;
-	Rational(int) x = { 1, 2 }, y = { 2 };
-	sout | x - y | endl;
-	sout | x > y | endl;
-	sout | x | numerator( x, 2 ) | x | endl;
-	sout | y | denominator( y, -2 ) | y | endl;
-
-	Rational(int) z = { 0, 5 };
-	sout | z | endl;
-
-	sout | x | numerator( x, 0 ) | x | endl;
-
-	x = (Rational(int)){ 1, MAX } + (Rational(int)){ 1, MAX };
-	sout | x | endl;
-	x = (Rational(int)){ 3, MAX } + (Rational(int)){ 2, MAX };
-	sout | x | endl;
-
-	sin | a | b;
-	sout | a | b | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa rational.c" //
-// End: //
Index: c/tests/references.c
===================================================================
--- src/tests/references.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,123 +1,0 @@
-//
-// 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.
-//
-// references.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Wed Aug 23 16:11:50 2017
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Aug 23 16:12:03
-// Update Count     : 2
-//
-
-struct Y { int i; };
-void ?{}(Y & y) { printf("Default constructing a Y\n"); }
-void ?{}(Y & y, Y other) { printf("Copy constructing a Y\n"); }
-void ^?{}(Y & y) { printf("Destructing a Y\n"); }
-Y ?=?(Y & y, Y other) { printf("Assigning a Y\n"); return y; }
-void ?{}(Y & y, int i) { printf("Value constructing a Y %d\n", i); y.i = i; }
-
-struct X { Y & r; Y y; };
-void ?{}(X & x) {
-	// ensure that r is not implicitly constructed
-}
-void ?{}(X & x, X other) {
-	// ensure that r is not implicitly constructed
-}
-void ^?{}(X & x) {
-	// ensure that r is not implicitly destructed
-}
-X ?=?(X & x, X other) { return x; }
-
-// ensure that generated functions do not implicitly operate on references
-struct Z { Y & r; Y y; };
-
-// test user-defined reference-returning function
-int & toref( int * p ) { return *p; }
-// test user-defined reference-parameter function
-int * toptr( int & r ) { return &r; }
-
-void changeRef( int & r ) {
-	r++;
-}
-
-int main() {
-	int x = 123456, x2 = 789, *p1 = &x, **p2 = &p1, ***p3 = &p2,
-		&r1 = x,    &&r2 = r1,   &&&r3 = r2;
-	***p3 = 3;                          // change x
-	**p3 = &x;                          // change p1
-	*p3 = &p1;                          // change p2
-	int y = 0, z = 11, & ar[3] = { x, y, z };    // initialize array of references
-	// &ar[1] = &z;                        // change reference array element
-	// typeof( ar[1] ) p = 3;              // is int, i.e., the type of referenced object
-	// typeof( &ar[1] ) q = &x;            // is int *, i.e., the type of pointer
-	// _Static_assert( sizeof( ar[1] ) == sizeof( int ), "Array type should be int." );   // is true, i.e., the size of referenced object
-	// _Static_assert( sizeof( &ar[1] ) == sizeof( int *), "Address of array should be int *." ); // is true, i.e., the size of a reference
-
-	((int*&)&r3) = &x;                  // change r1, (&*)**r3
-	x = 3;
-	// test that basic reference properties are true - r1 should be an alias for x
-	printf("%d %d %d\n", x, r1, &x == &r1);
-	r1 = 12;
-	printf("%d %d %d\n", x, r1, &x == &r1);
-
-	// test that functions using basic references work
-	printf("%d %d %d %d\n", toref(&x), toref(p1), toptr(r1) == toptr(x), toptr(r1) == &x);
-
-	changeRef( x );
-	changeRef( y );
-	changeRef( z );
-	printf("%d %d %d\n", x, y, z);
-	changeRef( r1 );
-	printf("%d %d\n", r1, x);
-
-	r3 = 6;                               // change x, ***r3
-	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
-	&r3 = &x2;                            // change r1 to refer to x2, (&*)**r3
-	r3 = 999;                             // modify x2
-	printf("x = %d ; x2 = %d\n", x, x2);  // check that x2 was changed
-	((int**&)&&r3) = p2;                  // change r2, (&(&*)*)*r3, ensure explicit cast to reference works
-	r3 = 12345;                           // modify x
-	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
-	&&&r3 = p3;                           // change r3 to p3, (&(&(&*)*)*)r3
-	((int&)r3) = 22222;                   // modify x, ensure explicit cast to reference works
-	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
-
-	// test that reference members are not implicitly constructed/destructed/assigned
-	X x1, x2 = x1;
-	x1 = x2;
-
-	Z z1, z2 = z1;
-	Y z1r = 56, z2r = 78;
-	&z1.r = &z1r;
-	&z2.r = &z2r;
-
-	z1 = z2;
-
-	// test rvalue-to-reference conversion
-	{
-		struct S { double x, y; };
-		void f( int & i, int & j, S & s, int v[] ) {
-			printf("%d %d { %g, %g }, [%d, %d, %d]\n", i, j, s.[x, y], v[0], v[1], v[2]);
-		}
-		void g(int & i) { printf("%d\n", i); }
-		void h(int &&& i) { printf("%d\n", i); }
-
-		int &&& r = 3;  // rvalue to reference
-		int i = r;
-		printf("%d %d\n", i, r);  // both 3
-
-		g( 3 );          // rvalue to reference
-		h( (int &&&)3 ); // rvalue to reference
-
-		int a = 5, b = 4;
-		f( 3, a + b, (S){ 1.0, 7.0 }, (int [3]){ 1, 2, 3 } ); // two rvalue to reference
-	}
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/result.c
===================================================================
--- src/tests/result.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// result.c --
-//
-// Author           : Andrew Beach
-// Created On       : Thr May 25 16:50:00 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 15:24:12 2017
-// Update Count     : 1
-//
-
-#include <assert.h>
-#include <containers/result>
-
-void checkPredicates() {
-	result(int, char) pass = {1, 4};
-	assert(pass);
-	assert(has_value(&pass));
-
-	result(int, char) fail = {0, '!'};
-	assert((fail ? false : true));
-	assert(!has_value(&fail));
-}
-
-/* Waiting for bug#11 to be fixed.
-void checkNamedConstructors() {
-	result(int, char) = result_value(4);
-	assert(has_value(&pass));
-
-	result(int, char) fail = result_error('!');
-	assert(!has_value(&fail));
-}
-*/
-
-void checkGetters() {
-	result(int, char) pass = {1, 4};
-	assert(4 == get(&pass));
-
-	result(int, char) fail = {0, '!'};
-	assert('!' == get_error(&fail));
-}
-
-void checkSetters() {
-	result(int, char) fee = {1, -7};
-	assert(-7 == get(&fee));
-	set(&fee, 42);
-	assert(42 == get(&fee));
-	set_error(&fee, '@');
-	assert('@' == get_error(&fee));
-
-	result(int, char) fy = {1, -7};
-	fee = fy;
-	assert(-7 == get(&fee));
-	result(int, char) foe = {0, '!'};
-	fee = foe;
-	assert('!' == get_error(&fee));
-}
-
-int main(int argc, char * argv[]) {
-	checkPredicates();
-	//checkNamedConstructors();
-	checkGetters();
-	checkSetters();
-}
Index: c/tests/scope.c
===================================================================
--- src/tests/scope.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,73 +1,0 @@
-int x;
-typedef double y;
-typedef float t;
-y z;
-//otype u = struct { int a; double b; };
-typedef struct { int a; double b; } u;
-int f( int y );
-y q;
-struct x { int x; };
-
-y w( y y, u v ) {
-//	otype x | { x t(u); };
-	void ?{}(struct x *);
-	void ^?{}(struct x *);
-	extern struct x t( u );
-	u u = y;
-	struct x z = t(u);
-}
-
-y p;
-
-trait has_u( otype z ) {
-	z u(z);
-};
-
-forall( otype t | has_u( t ) )
-y q( t the_t ) {
-	t y = u( the_t );
-}
-
-t f( y p ) {
-	int y;
-	typedef char x;
-	{
-		x y;
-		typedef x z;
-		{
-			z x;
-			typedef z y;
-			y z = x;
-		}
-		z x = y;
-	}
-	x q = y;
-}
-
-void some_func() {}
-
-t g( void ) {
-	typedef char x;
-//	try {
-		some_func();
-//	} catch ( x x ) {
-//		t y = x;
-//	}
-	x z;
-}
-
-y q( i )												/* K&R style */
-	int i;
-{
-	switch ( i ) {
-		y q = i;
-	  case 0:
-		return q;
-	  default:
-		return i;
-	}
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/scopeErrors.c
===================================================================
--- src/tests/scopeErrors.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-int thisIsAnError;
-int thisIsAnError;
-
-int thisIsNotAnError;
-float thisIsNotAnError;
-
-int thisIsAlsoNotAnError() {
-  int thisIsNotAnError;
-}
-
-int thisIsAlsoNotAnError( double x ) {
-}
-
-double thisIsStillNotAnError( double );
-double thisIsStillNotAnError( double );
-
-double butThisIsAnError( double ) {
-}
-
-double butThisIsAnError( double ) {
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/searchsort.c
===================================================================
--- src/tests/searchsort.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,151 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// searchsort.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Thu Feb  4 18:17:50 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jan  2 08:01:17 2018
-// Update Count     : 100
-// 
-
-#include <fstream>
-#include <stdlib>										// bsearch, qsort
-#include <stdlib.h>										// C version of bsearch
-
-int comp( const void * t1, const void * t2 ) { return *(int *)t1 < *(int *)t2 ? -1 : *(int *)t2 < *(int *)t1 ? 1 : 0; }
-
-int main( void ) {
-	const unsigned int size = 10;
-	int iarr[size];
-
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		iarr[i] = size - i;
-		sout | iarr[i] | ", ";
-	} // for
-	sout | endl | endl;
-
-	// ascending sort/search by changing < to >
-	qsort( iarr, size );
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		sout | iarr[i] | ", ";
-	} // for
-	sout | endl;
-	for ( unsigned int i = 0; i < size; i += 1 ) {		// C version
-		int key = size - i;
-		int * v = bsearch( &key, iarr, size, sizeof( iarr[0] ), comp );
-		sout | key | ':' | *v | ", ";
-	} // for
-	sout | endl;
-
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		int * v = bsearch( size - i, iarr, size );
-		sout | size - i | ':' | *v | ", ";
-	} // for
-	sout | endl;
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		unsigned int posn = bsearch( size - i, iarr, size );
-		sout | size - i | ':' | iarr[posn] | ", ";
-	} // for
-	sout | endl | endl;
-
-	// descending sort/search by changing < to >
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		iarr[i] = i + 1;
-		sout | iarr[i] | ", ";
-	} // for
-	sout | endl;
-	{
-		int ?<?( int x, int y ) { return x > y; }
-		qsort( iarr, size );
-		for ( unsigned int i = 0; i < size; i += 1 ) {
-			sout | iarr[i] | ", ";
-		} // for
-		sout | endl;
-		for ( unsigned int i = 0; i < size; i += 1 ) {
-			int * v = bsearch( size - i, iarr, size );
-			sout | size - i | ':' | *v | ", ";
-		} // for
-		sout | endl;
-		for ( unsigned int i = 0; i < size; i += 1 ) {
-			unsigned int posn = bsearch( size - i, iarr, size );
-			sout | size - i | ':' | iarr[posn] | ", ";
-		} // for
-	}
-	sout | endl | endl;
-
-	double darr[size];
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		darr[i] = size - i + 0.5;
-		sout | darr[i] | ", ";
-	} // for
-	sout | endl;
-	qsort( darr, size );
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		sout | darr[i] | ", ";
-	} // for
-	sout | endl;
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		double * v = bsearch( size - i + 0.5, darr, size );
-		sout | size - i + 0.5 | ':' | *v | ", ";
-	} // for
-	sout | endl;
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		unsigned int posn = bsearch( size - i + 0.5, darr, size );
-		sout | size - i + 0.5 | ':' | darr[posn] | ", ";
-	} // for
-	sout | endl | endl;
-
-	struct S { int i, j; } sarr[size];
-	int ?<?( S t1, S t2 ) { return t1.i < t2.i && t1.j < t2.j; }
-	ofstream & ?|?( ofstream & os, S v ) { return os | v.i | ' ' | v.j; }
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		sarr[i].i = size - i;
-		sarr[i].j = size - i + 1;
-		sout | sarr[i] | ", ";
-	} // for
-	sout | endl;
-	qsort( sarr, size );
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		sout | sarr[i] | ", ";
-	} // for
-	sout | endl;
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		S temp = { size - i, size - i + 1 };
-		S * v = bsearch( temp, sarr, size );
-		sout | temp | ':' | *v | ", ";
-	} // for
-	sout | endl;
-	for ( unsigned int i = 0; i < size; i += 1 ) {
-		S temp = { size - i, size - i + 1 };
-		unsigned int posn = bsearch( temp, sarr, size );
-		sout | temp | ':' | sarr[posn] | ", ";
-	} // for
-	sout | endl | endl;
-	{
-		unsigned int getKey( const S & s ) { return s.j; }
-		for ( unsigned int i = 0; i < size; i += 1 ) {
-			sout | sarr[i] | ", ";
-		} // for
-		sout | endl;
-		for ( unsigned int i = 0; i < size; i += 1 ) {
-			S * v = bsearch( size - i + 1, sarr, size );
-			sout | size - i + 1 | ':' | *v | ", ";
-		} // for
-		sout | endl;
-		for ( unsigned int i = 0; i < size; i += 1 ) {
-			unsigned int posn = bsearch( size - i + 1, sarr, size );
-			sout | size - i + 1 | ':' | sarr[posn] | ", ";
-		} // for
-		sout | endl | endl;
-	}
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa searchsort.c" //
-// End: //
Index: c/tests/shortCircuit.c
===================================================================
--- src/tests/shortCircuit.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,55 +1,0 @@
-void g( float f ) {}
-void g( int i ) {}
-
-void f( int a ) {
-	int b;
-	float c;
-	g( a ? b : c );
-	g( a && c );
-	g( a || b );
-}
-
-void g() {
-	int a;
-	struct { int b; } a;
-	if ( a ) {
-		while ( a ) {
-			int *b;
-			for ( b; a; b ) {
-			}
-		}
-	}
-}
-
-#include <fstream>
-
-struct test_t {
-	int x;
-};
-
-int ?!=?( test_t lhs, int rhs ) {
-	sout | lhs.x | " ";
-	return lhs.x != 0;
-}
-
-
-int main(int argc, char const *argv[])
-{
-	test_t true_val, false_val;
-	true_val.x = 1;
-	false_val.x = 0;
-
-	true_val && false_val;
-	sout | endl;
-
-	true_val || false_val;
-	sout | endl;
-
-	false_val && true_val;
-	sout | endl;
-
-	false_val || true_val;
-	sout | endl;
-
-	return 0;
-}
Index: c/tests/simpleGenericTriple.c
===================================================================
--- src/tests/simpleGenericTriple.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,43 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// simpleGenericTriple.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Tue Nov 15 17:24:32 2016
-// Last Modified By : Rob Schluntz
-// Last Modified On : Tue Nov 15 17:27:28 2016
-// Update Count     : 3
-//
-
-forall(otype T)
-struct T3 {
-	T f0, f1, f2;
-};
-
-forall(otype T | { T ?+?(T, T); })
-T3(T) ?+?(T3(T) x, T3(T) y) {
-	T3(T) z = { x.f0+y.f0, x.f1+y.f1, x.f2+y.f2 };
-	return z;
-}
-
-int main() {
-  int x1 = 123, x3 = 456;
-  double x2 = 999.123;
-  struct T3(int) Li = { x1, (int)x2, x3 };
-  struct T3(int) Ri = { 9, 2, 3 };
-  struct T3(int) reti = Li+Ri;
-  printf("%d %d %d\n", reti.f0, reti.f1, reti.f2);
-
-  struct T3(double) Ld = { x1, x2, x3 };
-  struct T3(double) Rd = { 9, 2, 3 };
-  struct T3(double) retd = Ld+Rd;
-  printf("%g %g %g\n", retd.f0, retd.f1, retd.f2);
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/stdincludes.c
===================================================================
--- src/tests/stdincludes.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,54 +1,0 @@
-// 
-// 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.
-// 
-// stdincludes.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Aug 29 08:26:14 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 30 07:56:39 2017
-// Update Count     : 5
-// 
-
-// C11 standard headers
-
-#include <assert.h>
-#include <complex.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fenv.h>
-#include <float.h>
-#include <inttypes.h>
-//#include <iso646.h>										// does not exist on linux
-#include <limits.h>
-#include <locale.h>
-#include <malloc.h>										// extra
-#include <math.h>
-#include <setjmp.h>
-#include <signal.h>
-#include <stdalign.h>
-#include <stdarg.h>
-#include <stdatomic.h>
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdnoreturn.h>
-#include <string.h>
-#include <tgmath.h>
-#include <time.h>
-#include <uchar.h>
-#include <unistd.h>										// extra
-#include <wchar.h>
-#include <wctype.h>
-
-int main() {}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa stdincludes.c" //
-// End: //
Index: c/tests/structMember.c
===================================================================
--- src/tests/structMember.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,100 +1,0 @@
-typedef int TD;
-extern struct TTT {};
-
-struct S {
-	int m1:3, m2:4;
-	int :2;
-	int :3, :4;
-	int m3;
-	int m4, m5, m6;
-	int *m7, *m8, *m9;
-	__extension__ int (*m10)();
-	__extension__ int *(*m11)(int);
-//	TD (TD);
-
-// Cforall declarations
-
-	* int m12, m13;
-	* [ * int ] (int) m14;
-
-// C anonymous declarations (padding)
-
-	int :4;
-	int :4, :6;
-
-// Cforall anonymous declarations (padding)
-
-	int @;
-	TD @;
-	int @, @, @;
-	int * @ , @, @;
-	int * @, * @, * @;
-	* int @, @, @;
-	struct TTT @;
-	TTT @, @;
-	int @ :4, @ :6;
-	* int @, @;
-	int (*@)();
-	int (*@)(int), (*@)(int);
-	* [int](int) @, @;
-	int (**@)( int );
-	* * [int](int) @;
-
-// C aggregate open declarations
-
-	__extension__ union { int i; };
-	struct T { int k; };
-
-// Cforall forward declaration
-
-	struct PPP;
-	__extension__ struct QQQ;
-
-// C useless declarations
-
-	int;
-	TD;
-	unsigned int;
-	__extension__ long double;
-	_Complex;
-	double _Complex;
-	volatile zero_t;
-	const one_t;
-	S;
-	.S;
-	S.T;
-	.S.T;
-	forall( otype S, otype T ) struct W {
-		struct X {};
-	};
-	W(int);
-	W(int).X;
-};
-
-struct S s;
-
-// Cforall Plan 9 declarations
-
-struct UUU {};
-extern struct SSS {
-	inline struct WWW {};
-	inline UUU;
-	inline UUU *, **;
-	inline UUU (*)( int p );
-	inline int;
-	inline int *;
-	inline * int;
-	inline int (*)( int p );
-	inline * [int](int p);
-};
-
-union U {
-	[5] int m1;
-	int m2[5];
-	* int m3;
-	int *m4;
-} u;
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/subrange.c
===================================================================
--- src/tests/subrange.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,63 +1,0 @@
-// A small context defining the notion of an ordered otype.  (The standard
-// library should probably contain a context for this purpose.)
-trait ordered(otype T) {
-    int ?<?(T, T), ?<=?(T, T);
-};
-
-// A subrange otype resembling an Ada subotype with a base otype and a range
-// constraint.
-otype subrange(otype base_t | ordered(base_t), base_t low = 0, base_t high = 8) = base_t;
-
-// Note that subrange() can be applied to floating-point and pointer otypes, not
-// just integral otypes.
-//   This requires a "otype generator" extension to Cforall.  Type generators
-// must accept otype and non-otype parameters, which is beyond what we discussed
-// previously.  Type parameters must be usable in the declaration of
-// subsequent parameters: parameter T is used to declare parameters "low"
-// and "high".
-
-// Example usage:
-subrange(unsigned, 1, 31) day_of_month;
-subrange(char, 'a', 'z')  lcase;
-subrange(int, 0, (rand() & 0xF) ) foo;
-
-// What sorts of expressions can be used as arguments of otype generators?  Is
-// "subrange(int, 0, rand() & 0xF)" legal?  Probably.  The nearest C equivalent
-// to the "low" and "high" arguments is the array size in a variable-length
-// array declaration, and C allows assignment expressions there.
-
-// Convenient access to subrange bounds, for instance for iteration:
-forall (otype T, T low, T high)
-T lbound( subrange(T, low, high) v) {
-    return low;
-}
-
-forall (otype T, T low, T high)
-T hbound( subrange(T, low, high) v) {
-    return high;
-}
-
-// Example usage:
-unsigned lday = lbound(day_of_month);
-
-// Assignment from the base otype, with bounds checking.  I'll ignore the issue
-// of exception handling here.  Inlining allows the compiler to eliminate
-// bounds checks.
-forall (otype T | ordered(T), T low, T high)
-inline subrange(T, low, high) ?=?(subrange(T, low, high)* target, T source) {
-    if (low <= source && source <= high) *((T*)target) = source;
-    else abort();
-    return target;
-}
-
-// Assignment between subranges with a common base otype.  The bounds check
-// compares range bounds so that the compiler can optimize checks away when the
-// ranges are known to overlap.
-forall (otype T | ordered(T), T t_low, T t_high, T s_low, T s_high)
-inline subrange(T, t_low, t_high) ?=?(subrange(T, t_low, t_high)* target,
-				      subrange(T, s_low, s_high) source) {
-    if ( (t_low <= s_low || t_low <= source)
-	 && (s_high <= t_high || source <= t_high) ) *((T*)target) = source;
-    else abort();
-    return target;
-}
Index: c/tests/sum.c
===================================================================
--- src/tests/sum.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,122 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// sum.c -- test resolvers ability to deal with many variables with the same name and to use the minimum number of casts
-//    necessary to disambiguate overloaded variable names.
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jun  3 19:23:41 2018
-// Update Count     : 278
-//
-
-#include <fstream>
-#include <stdlib>
-
-void ?{}( int & c, zero_t ) { c = 0; }					// not in prelude
-
-trait sumable( otype T ) {
-	void ?{}( T &, zero_t );							// 0 literal constructor
-	T ?+?( T, T );										// assortment of additions
-	T ?+=?( T &, T );
-	T ++?( T & );
-	T ?++( T & );
-}; // sumable
-
-forall( otype T | sumable( T ) )						// use trait
-T sum( size_t size, T a[] ) {
-	T total = 0;										// initialize by 0 constructor
-	for ( size_t i = 0; i < size; i += 1 )
-		total += a[i];									// select appropriate +
-	return total;
-} // sum
-
-// Not in prelude.
-unsigned char ?+?( unsigned char t1, unsigned char t2 ) { return (int)t1 + t2; } // cast forces integer addition, otherwise recursion
-unsigned char ?+=?( unsigned char & t1, unsigned char t2 ) { t1 = t1 + t2; return t1; }
-unsigned char ++?( unsigned char & t ) { t += 1; return t; }
-unsigned char ?++( unsigned char & t ) { unsigned char temp = t; t += 1; return temp; }
-
-// Not in prelude.
-void ?{}( unsigned char & c, zero_t ) { c = 0; }
-void ?{}( float & f, zero_t ) { f = 0.0; }
-void ?{}( double & d, zero_t ) { d = 0.0; }
-
-int main( void ) {
-	const int low = 5, High = 15, size = High - low;
-
-	unsigned char s = 0, a[size], v = (char)low;
-	for ( int i = 0; i < size; i += 1, v += 1 ) {
-		s += v;
-		a[i] = v;
-	} // for
-	sout | "sum from" | low | "to" | High | "is"
-		 | sum( size, (unsigned char *)a ) | ", check" | (int)s | endl;
-
-	int s = 0, a[size], v = low;
-	for ( int i = 0; i < size; i += 1, v += 1 ) {
-		s += (int)v;
-		a[i] = (int)v;
-	} // for
-	sout | "sum from" | low | "to" | High | "is"
-		 | sum( size, (int *)a ) | ", check" | (int)s | endl;
-
-	float s = 0.0f, a[size], v = low / 10.0f;
-	for ( int i = 0; i < size; i += 1, v += 0.1f ) {
-		s += (float)v;
-		a[i] = (float)v;
-	} // for
-	sout | "sum from" | low / 10.0f | "to" | High / 10.0f | "is"
-		 | sum( size, (float *)a ) | ", check" | (float)s | endl;
-
-	double s = 0.0, a[size], v = low / 10.0;
-	for ( int i = 0; i < size; i += 1, v += 0.1 ) {
-		s += (double)v;
-		a[i] = (double)v;
-	} // for
-	sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
-		 | sum( size, (double *)a ) | ", check" | (double)s | endl;
-
-	struct S { int i, j; };
-	void ?{}( S & s ) { s.[i, j] = 0; }
-	void ?{}( S & s, int i ) { s.[i, j] = [i, 0]; }
-	void ?{}( S & s, int i, int j ) { s.[i, j] = [i, j]; }
-	void ?{}( S & s, zero_t ) { s.[i, j] = 0; }
-	void ?{}( S & s, one_t ) { s.[i, j] = 1; }
-	S ?+?( S t1, S t2 ) { return (S){ t1.i + t2.i, t1.j + t2.j }; }
-	S ?+=?( S & t1, S t2 ) { t1 = t1 + t2; return t1; }
-	S ++?( S & t ) { t += (S){1}; return t; }
-	S ?++( S & t ) { S temp = t; t += (S){1}; return temp; }
-	ofstream & ?|?( ofstream & os, S v ) { return os | v.i | v.j; }
-
-	S s = (S){0}, a[size], v = { low, low };
-	for ( int i = 0; i < size; i += 1, v += (S){1} ) {
-		s += (S)v;
-		a[i] = (S)v;
-	} // for
-	sout | "sum from" | low | "to" | High | "is"
-		 | sum( size, (S *)a ) | ", check" | (S)s | endl;
-
-	forall( otype Impl | sumable( Impl ) )
-	struct GS {
-		Impl * x, * y;
-	};
-	GS(int) gs;
-	gs.x = anew( size );								// create array storage for field
-	s = 0; v = low;
-	for ( int i = 0; i < size; i += 1, v += 1 ) {
-		s += (int)v;
-		gs.x[i] = (int)v;								// set field array in generic type
-	} // for
-	sout | "sum from" | low | "to" | High | "is"
-		 | sum( size, gs.x ) | ", check" | (int)s | endl; // add field array in generic type
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa sum.c" //
-// End: //
Index: c/tests/swap.c
===================================================================
--- src/tests/swap.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,95 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// swap.c -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Dec  7 09:13:13 2017
-// Update Count     : 71
-//
-
-#include <fstream>
-#include <stdlib>										// swap
-
-int main( void ) {
-	char c1 = 'a', c2 = 'b';
-	sout | "char\t\t\t" | c1 | ' ' | c2 | "\t\t\tswap ";
-	swap( c1, c2 );
-	sout | '\t' | c1 | ' ' | c2 | endl;
-
-	signed int i1 = -1, i2 = -2;
-	sout | "signed int\t\t" | i1 | i2 | "\t\t\tswap ";
-	swap( i1, i2 );
-	sout | '\t' | i1 | i2 | endl;
-
-	unsigned int ui1 = 1, ui2 = 2;
-	sout | "unsigned int\t\t" | ui1 | ui2 | "\t\t\tswap ";
-	swap( ui1, ui2 );
-	sout | '\t' | ui1 | ui2 | endl;
-
-	signed long int li1 = -1, li2 = -2;
-	sout | "signed long int\t\t" | li1 | li2 | "\t\t\tswap ";
-	swap( li1, li2 );
-	sout | '\t' | li1 | li2 | endl;
-
-	unsigned long int uli1 = 1, uli2 = 2;
-	sout | "unsigned long int\t" | uli1 | uli2 | "\t\t\tswap ";
-	swap( uli1, uli2 );
-	sout | '\t' | uli1 | uli2 | endl;
-
-	signed long long int lli1 = -1, lli2 = -2;
-	sout | "signed long long int\t" | lli1 | lli2 | "\t\t\tswap ";
-	swap( lli1, lli2 );
-	sout | '\t' | lli1 | lli2 | endl;
-
-	unsigned long long int ulli1 = 1, ulli2 = 2;
-	sout | "unsigned long long int\t" | ulli1 | ulli2 | "\t\t\tswap ";
-	swap( ulli1, ulli2 );
-	sout | '\t' | ulli1 | ulli2 | endl;
-
-	float f1 = 1.5, f2 = 2.5;
-	sout | "float\t\t\t" | f1 | f2 | "\t\t\tswap ";
-	swap( f1, f2 );
-	sout | '\t' | f1 | f2 | endl;
-
-	double d1 = 1.5, d2 = 2.5;
-	sout | "double\t\t\t" | d1 | d2 | "\t\t\tswap ";
-	swap( d1, d2 );
-	sout | '\t' | d1 | d2 | endl;
-
-	long double ld1 = 1.5, ld2 = 2.5;
-	sout | "long double\t\t" | ld1 | ld2 | "\t\t\tswap ";
-	swap( ld1, ld2 );
-	sout | '\t' | ld1 | ld2 | endl;
-
-	float _Complex fc1 = 1.5f+1.5if, fc2 = 2.5f+2.5if;
-	sout | "float _Complex\t\t" | fc1 | fc2 | "\tswap ";
-	swap( fc1, fc2 );
-	sout | '\t' | fc1 | fc2 | endl;
-
-	double _Complex dc1 = 1.5d+1.5id, dc2 = 2.5d+2.5id;
-	sout | "double _Complex\t\t" | dc1 | dc2 | "\tswap ";
-	swap( dc1, dc2 );
-	sout | '\t' | dc1 | dc2 | endl;
-
-	long double _Complex ldc1 = 1.5d+1.5il, ldc2 = 2.5d+2.5il;
-	sout | "long double _Complex\t" | ldc1 | ldc2 | "\tswap ";
-	swap( ldc1, ldc2 );
-	sout | '\t' | ldc1 | ldc2 | endl;
-
-	struct S { int i, j; } s1 = { 1, 2 }, s2 = { 2, 1 };
-	ofstream & ?|?( ofstream & os, S s ) { return os | s.i | s.j; }
-	sout | "struct S\t\t" | s1 | "," | s2 | "\t\tswap ";
-	swap( s1, s2 );
-	sout | '\t' | s1 | "," | s2 | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa swap.c" //
-// End: //
Index: c/tests/switch.c
===================================================================
--- src/tests/switch.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,107 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// switch.c -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Tue Jul 12 06:50:22 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar  8 07:33:05 2018
-// Update Count     : 36
-// 
-
-int f( int i ) { return i; }
-
-int main( void ) {
-	int i = 0;
-	switch ( i ) case 3 : i = 1;
-	switch ( i ) default : f( 3 );
-
-	switch ( 3 )
-	  default:
-	  case 2:
-	  case 3:
-		f( 3 );
-
-	switch ( i ) {}
-	switch ( i ) {
-	  case 3:
-		f( 3 );
-	} // switch
-
-	switch ( 3 ) {
-		int j;
-	  case 3:
-		break;
-	  case 4:
-		j = 0;
-	}
-
-	switch ( i ) {
-	  case 1, 2, 3:
-		switch ( i ) {
-		  case 2, 3, 4:
-			7;
-		}
-	}
-
-	switch ( i ) {
-		int j = 0;
-		int k = 0;
-		struct S { int i; };
-		S s;
-	  case 8~10:
-	  default:
-		i = 3;
-	  case 19:
-	  case 'A' ... 'Z':
-	  case 1 ... 6:
-	  case 20, 30:
-		j = 3;
-		f( 3 );
-		break;
-	} // switch
-
-	choose ( i ) case 3 : f( 3 );
-	choose ( i ) default : i = 1;
-
-	choose ( 3 )
-	  case 2:
-	  default:
-	  case 3:
-		f( 3 );
-
-	choose ( i ) {}
-	choose ( i ) {
-	  case 3:
-		f( 3 );
-	} // choose
-
-	choose ( i ) {
-		int j = 0;
-		int k = 0;
-		struct S { int i; };
-		S s;
-	  case 19:
-	  case 'A'...'Z':
-	  case 0 ...6:										// space required, or lexed as decimal point
-	  case 20, 30, 40:
-		i = 3;
-		f( 3 );
-	  default:
-		j = 3;
-	  case 8~10:
-		f( 3 );
-		fallthru;
-	  case 'd':
-		j = 5;
-	} // choose
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa switch.c" //
-// End: //
Index: c/tests/test.py
===================================================================
--- src/tests/test.py	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,298 +1,0 @@
-#!/usr/bin/python
-from __future__ import print_function
-
-from pybin.tools import *
-from pybin.test_run import *
-from pybin import settings
-
-import argparse
-import re
-import sys
-import time
-
-################################################################################
-#               help functions
-################################################################################
-
-def findTests():
-	expected = []
-
-	def matchTest(path):
-		match = re.search("%s\/([\w\/\-_]*).expect\/([\w\-_]+)(\.[\w\-_]+)?\.txt" % settings.SRCDIR, path)
-		if match :
-			test = Test()
-			test.name = match.group(2)
-			test.path = match.group(1)
-			test.arch = match.group(3)[1:] if match.group(3) else None
-			if settings.arch.match(test.arch):
-				expected.append(test)
-
-	pathWalk( matchTest )
-
-	return expected
-
-# reads the directory ./.expect and indentifies the tests
-def listTests( includes, excludes ):
-	includes = [canonicalPath( i ) for i in includes] if includes else None
-	excludes = [canonicalPath( i ) for i in excludes] if excludes else None
-
-	# tests directly in the .expect folder will always be processed
-	test_list = findTests()
-
-	# if we have a limited number of includes, filter by them
-	if includes:
-		test_list = [x for x in test_list if
-			x.target().startswith( tuple(includes) )
-		]
-
-	# # if we have a folders to excludes, filter by them
-	if excludes:
-		test_list = [x for x in test_list if not
-			x.target().startswith( tuple(excludes) )
-		]
-
-	return test_list
-
-# from the found tests, filter all the valid tests/desired tests
-def validTests( options ):
-	tests = []
-
-	# if we are regenerating the tests we need to find the information of the
-	# already existing tests and create new info for the new tests
-	if options.regenerate_expected :
-		for testname in options.tests :
-			testname = canonicalPath( testname )
-			if Test.valid_name(testname):
-				found = [test for test in allTests if canonicalPath( test.target() ) == testname]
-				tests.append( found[0] if len(found) == 1 else Test.from_target(testname) )
-			else :
-				print('ERROR: "%s", tests are not allowed to end with a C/C++/CFA extension, ignoring it' % testname, file=sys.stderr)
-
-	else :
-		# otherwise we only need to validate that all tests are present in the complete list
-		for testname in options.tests:
-			test = [t for t in allTests if pathCmp( t.target(), testname )]
-
-			if test :
-				tests.append( test[0] )
-			else :
-				print('ERROR: No expected file for test %s, ignoring it' % testname, file=sys.stderr)
-
-	return tests
-
-# parses the option
-def getOptions():
-	# create a parser with the arguments for the tests script
-	parser = argparse.ArgumentParser(description='Script which runs cforall tests')
-	parser.add_argument('--debug', help='Run all tests in debug or release', type=yes_no, default='no')
-	parser.add_argument('--arch', help='Test for specific architecture', type=str, default='')
-	parser.add_argument('--dry-run', help='Don\'t run the tests, only output the commands', action='store_true')
-	parser.add_argument('--list', help='List all test available', action='store_true')
-	parser.add_argument('--all', help='Run all test available', action='store_true')
-	parser.add_argument('--regenerate-expected', help='Regenerate the .expect by running the specified tets, can be used with --all option', action='store_true')
-	parser.add_argument('-j', '--jobs', help='Number of tests to run simultaneously', type=int)
-	parser.add_argument('--list-comp', help='List all valide arguments', action='store_true')
-	parser.add_argument('-I','--include', help='Directory of test to include, can be used multiple time, All  if omitted', action='append')
-	parser.add_argument('-E','--exclude', help='Directory of test to exclude, can be used multiple time, None if omitted', action='append')
-	parser.add_argument('tests', metavar='test', type=str, nargs='*', help='a list of tests to run')
-
-	options =  parser.parse_args()
-
-	# script must have at least some tests to run or be listing
-	listing    = options.list or options.list_comp
-	all_tests  = options.all
-	some_tests = len(options.tests) > 0
-	some_dirs  = len(options.include) > 0 if options.include else 0
-
-	# check that exactly one of the booleans is set to true
-	if not sum( (listing, all_tests, some_tests, some_dirs) ) > 0 :
-		print('ERROR: must have option \'--all\', \'--list\', \'--include\', \'-I\' or non-empty test list', file=sys.stderr)
-		parser.print_help()
-		sys.exit(1)
-
-	return options
-
-################################################################################
-#               running test functions
-################################################################################
-# fix the absolute paths in the output
-def fixoutput( fname ):
-	if not is_ascii(fname):
-		return
-
-	file_replace(fname, "%s/" % settings.SRCDIR, "")
-
-
-# logic to run a single test and return the result (No handling of printing or other test framework logic)
-def run_single_test(test):
-
-	# find the output file based on the test name and options flag
-	exe_file = test.target_executable();
-	out_file = test.target_output()
-	err_file = test.error_log()
-	cmp_file = test.expect()
-	in_file  = test.input()
-
-	# prepare the proper directories
-	test.prepare()
-
-	# build, skipping to next test on error
-	before = time.time()
-	make_ret, _ = make( test.target(),
-		redirects  = "2> %s 1> /dev/null" % out_file,
-		error_file = err_file
-	)
-	after = time.time()
-
-	comp_dur = after - before
-
-	run_dur = None
-
-	# if the make command succeds continue otherwise skip to diff
-	if make_ret == 0 or settings.dry_run:
-		before = time.time()
-		if settings.dry_run or fileIsExecutable(exe_file) :
-			# run test
-			retcode, _ = sh("timeout 60 %s > %s 2>&1" % (exe_file, out_file), input = in_file)
-		else :
-			# simply cat the result into the output
-			retcode, _ = sh("cat %s > %s" % (exe_file, out_file))
-
-		after = time.time()
-		run_dur = after - before
-	else:
-		retcode, _ = sh("mv %s %s" % (err_file, out_file))
-
-
-	if retcode == 0:
-		if settings.generating :
-			# if we are ounly generating the output we still need to check that the test actually exists
-			if not settings.dry_run and fileContainsOnly(out_file, "make: *** No rule to make target `%s'.  Stop." % test.target()) :
-				retcode = 1;
-				error = "\t\tNo make target for test %s!" % test.target()
-				sh("rm %s" % out_file, False)
-			else:
-				error = None
-		else :
-			# fetch return code and error from the diff command
-			fixoutput(out_file)
-			retcode, error = diff(cmp_file, out_file)
-
-	else:
-		with open (out_file, "r") as myfile:
-			error = myfile.read()
-
-
-	# clean the executable
-	sh("rm -f %s > /dev/null 2>&1" % test.target())
-
-	return retcode, error, [comp_dur, run_dur]
-
-# run a single test and handle the errors, outputs, printing, exception handling, etc.
-def run_test_worker(t) :
-
-	with SignalHandling():
-		# print formated name
-		name_txt = "%20s  " % t.name
-
-		retcode, error, duration = run_single_test(t)
-
-		# update output based on current action
-		result_txt = TestResult.toString( retcode, duration )
-
-		#print result with error if needed
-		text = name_txt + result_txt
-		out = sys.stdout
-		if error :
-			text = text + "\n" + error
-			out = sys.stderr
-
-		print(text, file = out)
-		sys.stdout.flush()
-		sys.stderr.flush()
-
-	return retcode != TestResult.SUCCESS
-
-# run the given list of tests with the given parameters
-def run_tests(tests, jobs) :
-	# clean the sandbox from previous commands
-	make('clean', redirects = '> /dev/null 2>&1')
-
-	# create the executor for our jobs and handle the signal properly
-	pool = setupPool(jobs)
-
-	# for each test to run
-	try :
-		results = pool.map_async(
-			run_test_worker,
-			tests,
-			chunksize = 1
-		).get(7200)
-	except KeyboardInterrupt:
-		pool.terminate()
-		print("Tests interrupted by user")
-		sys.exit(1)
-
-	# clean the workspace
-	make('clean', redirects = '> /dev/null 2>&1')
-
-	for failed in results:
-		if failed :
-			return 1
-
-	return 0
-
-
-################################################################################
-#               main loop
-################################################################################
-if __name__ == "__main__":
-
-	# parse the command line arguments
-	options = getOptions()
-
-	# init global settings
-	settings.init( options )
-
-	# fetch the liest of all valid tests
-	allTests = listTests( options.include, options.exclude )
-
-	# if user wants all tests than no other treatement of the test list is required
-	if options.all or options.list or options.list_comp or options.include :
-		tests = allTests
-
-	#otherwise we need to validate that the test list that was entered is valid
-	else :
-		tests = validTests( options )
-
-	# make sure we have at least some test to run
-	if not tests :
-		print('ERROR: No valid test to run', file=sys.stderr)
-		sys.exit(1)
-
-
-	# sort the test alphabetically for convenience
-	tests.sort(key=lambda t: (t.arch if t.arch else '') + t.target())
-
-	# users may want to simply list the tests
-	if options.list_comp :
-		print("-h --help --debug --dry-run --list --arch --all --regenerate-expected -j --jobs ", end='')
-		print(" ".join(map(lambda t: "%s" % (t.target()), tests)))
-
-	elif options.list :
-		print("Listing for %s:%s"% (settings.arch.string, settings.debug.string))
-		fancy_print("\n".join(map(lambda t: "%s" % (t.toString()), tests)))
-
-	else :
-		options.jobs, forceJobs = jobCount( options, tests )
-		settings.updateMakeCmd(forceJobs, options.jobs)
-
-		print('%s (%s:%s) on %i cores' % (
-			'Regenerate tests' if settings.generating else 'Running',
-			settings.arch.string,
-			settings.debug.string,
-			options.jobs
-		))
-
-		# otherwise run all tests and make sure to return the correct error code
-		sys.exit( run_tests(tests, options.jobs) )
Index: c/tests/time.c
===================================================================
--- src/tests/time.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,71 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// time.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Tue Mar 27 17:24:56 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Apr  6 11:27:23 2018
-// Update Count     : 16
-// 
-
-#include "time"
-#include <fstream>
-
-int main() {
-	Duration d1 = 3`h, d2 = 2`s, d3 = 3.07`s, d4 = 12`s, d5 = 1`s + 10_000`ns;
-	sout | d1 | d2 | d3 | d4 | d5 | endl;
-	int i;
-	d1 = 0;
-	sout | d1 | d2 | d3 | endl;
-	d1 = 7`s;
-	d3 = d2 = d1;
-	sout | d1 | d2 | d3 | endl;
-	d1 = d1 + d2;
-	sout | d1 | endl;
-	sout | d1 == 7`s | d1 == d2 | d1 == 0 | endl;
-	sout | div( 7`s, 2`s ) | endl;
-	sout | endl;
-
-	Time t = { 1970, 1, 2, 0, 0, 0, 10_000_000 };
-	sout | t | endl;
-	t = t + d1;
-	sout | t | t.tv | endl;
-	Time t1 = (timespec){ 104_414, 10_000_000 };
-	sout | t1 | t1.tv | endl;
-	sout | t - t  | t + d5 | t.tv | endl;
-	char buf[16];
-	sout | "yy/mm/dd" | [t, buf]`ymd;					// shared buf => separate calls
-	sout | "mm/dd/yy" | mm_dd_yy( t, buf );
-	strftime( buf, 16, "%D", t );						// %D => mm/dd/yy
-	sout | "mm/dd/yy" | buf;
-	sout | "dd/yy/mm" | [t, buf]`dmy | endl;
-	Time t2 = { 2001, 7, 4, 0, 0, 1, 0 }, t3 = (timeval){ 994_219_201 };
-	sout | t2 | t2.tv | endl | t3 | t3.tv | endl;
-	sout | endl;
-
-	// Clock Newfoundland = { -3.5`h }, PST = { -8`h };	// distance from GMT (UTC)
-	// sout | "Clock Resolution" | getRes() | endl
-	// 	 | "Newfoundland" | getTime( Newfoundland ) | endl
-	// 	 | "local" | getTime() | endl
-	// 	 | "local nsec" | getTimeNsec() | endl
-	// 	 | "PST" | PST() | endl;						// getTime short form
-	// sout | endl;
-
-	// http://en.cppreference.com/w/cpp/chrono/duration/operator_arith4
-	Duration s = 1`h + 2 * 10`m + 70`s / 10;
-	sout | "1 hour + 2*10 min + 70/10 sec = " | s | "seconds" | endl;
-	sout | "Dividing that by 2 minutes gives" | s / 2`m | endl;
-	sout | "Dividing that by 2 gives" | s / 2 | "seconds\n";
-	sout | s | "seconds is" | s`h | "hours," | (s % 1`h)`m | "minutes," | (s % 1`m)`s | "seconds" | endl;
-} // main
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// compile-command: "cfa time.c" //
-// End: //
Index: c/tests/tuple/.expect/tupleAssign.txt
===================================================================
--- src/tests/tuple/.expect/tupleAssign.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,12 +1,0 @@
-u=5 v=6 x=10 y=11 z=[100, 200]
-u=5 v=6 x=10 y=11 z=[100, 200]
-u=11 v=10 x=11 y=10 z=[11, 10]
-u=11 v=10 x=11 y=10 z=[11, 10]
-u=10 v=11 z=[10, 11]
-u=10 v=11 z=[10, 11]
-u=123 v=456 z=[111, 222]
-u=123 v=456 z=[111, 222]
-d=94.12 i=94 c=^ t=[94, 94.12, 94]
-d=94.12 i=94 c=^ t=[94, 94.12, 94]
-d=-94.12 i=-94 c=¢ t=[-94, -94.12, -94]
-d=-94.12 i=-94 c=¢ t=[-94, -94.12, -94]
Index: c/tests/tuple/.expect/tupleCast.txt
===================================================================
--- src/tests/tuple/.expect/tupleCast.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,6 +1,0 @@
-10 A 3.14
-10 A
-10
-10 65
-ran f
-99 F
Index: c/tests/tuple/.expect/tupleFunction.txt
===================================================================
--- src/tests/tuple/.expect/tupleFunction.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,12 +1,0 @@
-foo([123, 456, 999.123, {321, 654, Q, 3.14}])
-a=123 b=456 c=999.123 d={321, 654, Q, 3.14}
-X=[123, 456, 999.123, {321, 654, Q, 3.14}]
-foo(...)=456
-bar([777, 2.76, 8675])
-bar([123, 999.123, 456])
-baz(777, 2.76, 8675)
-baz(123, 999.123, 456)
-qux([777, 2.76], 8675)
-qux([123, 999.123], 456)
-x=[3, 5.254, 4]
-x1=3 x2=5.254 x3=4
Index: c/tests/tuple/.expect/tupleMember.txt
===================================================================
--- src/tests/tuple/.expect/tupleMember.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,4 +1,0 @@
-called f!
-g(...)=13.5
-v.[f1, i.[f2, f3], f4]=[12, 11, 13, 3.14159]
-v.[f1, i.[f2, f3], f4]=[4, [987, 2], 6.28]
Index: c/tests/tuple/.expect/tuplePolymorphism.txt
===================================================================
--- src/tests/tuple/.expect/tuplePolymorphism.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,5 +1,0 @@
-132 1001 459
-132 1001.12 459
-123 999.123 456
-246 1998.25 912
-1.21 x 10.21 1111 v 54385938 1111 v 54385938
Index: c/tests/tuple/.expect/tupleVariadic.txt
===================================================================
--- src/tests/tuple/.expect/tupleVariadic.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,18 +1,0 @@
-called ?{} with no a
-array = { }
-called ?{} with a: 999
-array = { 999, }
-called ?{} with a: 123 456
-array = { 123, 456, }
-called ?{} with a: 100 200 300
-array = { 100, 200, 300, }
-called ?{} with a: 10 2 3 4
-array = { 10, 2, 3, 4, }
-copy=111111
-calling func
-called process(int) 3
-called process(double) 2
-called process(int) 111
-called process(double) 4.145
-called func(void)
-finished func
Index: c/tests/tuple/tupleAssign.c
===================================================================
--- src/tests/tuple/tupleAssign.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// tupleAssign.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Tue Nov 15 17:24:32 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Mar  6 21:23:58 2017
-// Update Count     : 34
-//
-
-#include <fstream>
-
-int main() {
-	{
-		// test multiple assignment and cascading assignment
-		int u = 5, v = 6, x = 10, y = 11;
-		[int, int] z = [100, 200];
-
-		// swap x, y and store the new [x, y] in [u, v] and in z;
-		printf( "u=%d v=%d x=%d y=%d z=[%d, %d]\n", u, v, x, y, z );
-		sout | "u=" | u | "v=" | v | "x=" | x | "y=" | y | "z=[" | z | "]" | endl;
-		z = [u, v] = [x, y] = [y, x];
-		printf( "u=%d v=%d x=%d y=%d z=[%d, %d]\n", u, v, x, y, z );
-		sout | "u=" | u | "v=" | v | "x=" | x | "y=" | y | "z=[" | z | "]" | endl;
-
-		// shuffle elements -- v = z.0, z.0 = z.1, z.1 = u, u = v
-		[v, z, u] = [z, u, v];
-		printf( "u=%d v=%d z=[%d, %d]\n", u, v, z );
-		sout | "u=" | u | "v=" | v | "z=[" | z | "]" | endl;
-
-		// multiple assignment with tuple expression on right
-		z = [111, 222];
-		[u, v] = [123, 456];
-		printf( "u=%d v=%d z=[%d, %d]\n", u, v, z );
-		sout | "u=" | u | "v=" | v | "z=[" | z | "]" | endl;
-	}
-	{
-		// test mass assignment
-		double d = 0.0;
-		int i = 0;
-		char c = '\0';
-		struct X {
-			int z;
-		} x;
-		X ?=?(X & x, double d) { return x; }
-		[int, double, int] t;
-
-		// no conversion from X to integral types, so this serves as a santiy
-		// check that as long as this compiles, ?=?(_, x) is not generated.
-		[t, x, d, i, c, x] = (double)94.12;
-		printf( "d=%lg i=%d c=%c t=[%d, %lg, %d]\n", d, i, (int)c, t );
-		sout | "d=" | d | "i=" | i | "c=" | c | ' ' | "t=[" | t | "]" | endl;
-		[x, c, i, d, x, t] = (double)-94.12;
-		printf( "d=%lg i=%d c=%c t=[%d, %lg, %d]\n", d, i, c, t );
-		sout | "d=" | d | "i=" | i | "c=" | c | ' ' | "t=[" | t | "]" | endl;
-	}
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/tuple/tupleCast.c
===================================================================
--- src/tests/tuple/tupleCast.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,30 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// tupleCast.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Mon Dec 12 15:56:07 2016
-// Last Modified By : Rob Schluntz
-// Last Modified On : Mon Dec 12 15:56:20 2016
-// Update Count     : 2
-//
-
-[char, int, double] f() { printf("ran f\n"); return ['c', 70, 6.28]; }
-
-int main() {
-  [int, char, float] x = [10, 'A', 3.14f];
-  printf("%d %c %g\n", ([int, char, float])x);
-  printf("%d %c\n", ([int, char])x);
-  printf("%d\n", ([int])x);
-  // printf("%d\n", (int)x);
-  printf("%g %g\n", ([double, float])x);
-  printf("%d %c\n", ([int, char])f());
-}
-
-// Local Variables: //
-// tab-width: 2 //
-// End: //
Index: c/tests/tuple/tupleFunction.c
===================================================================
--- src/tests/tuple/tupleFunction.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,98 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// tupleFunction.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Tue Nov 15 17:24:32 2016
-// Last Modified By : Rob Schluntz
-// Last Modified On : Tue Nov 15 17:27:28 2016
-// Update Count     : 3
-//
-
-struct S {
-	int f1, f2;
-	char f3;
-	double f4;
-} v;
-
-[int] foo( [int, int, double, S] x ) {
-	printf("foo([%d, %d, %lg, {%d, %d, %c, %lg}])\n", x.0, x.1, x.2, x.3.[f1, f2, f3, f4]);
-	int a, b;
-	double c;
-	S d;
-	[a, b, c, d] = x;
-	[int, int, double, S] X = x;
-	printf("a=%d b=%d c=%lg d={%d, %d, %c, %lg}\n", a, b, c, d.[f1, f2, f3, f4]);
-	printf("X=[%d, %d, %lg, {%d, %d, %c, %lg}]\n", X.0, X.1, X.2, X.3.[f1, f2, f3, f4]);
-	return b;
-}
-
-[void] bar( [int, double, int] z ) {
-	printf("bar([%d, %lg, %d])\n", z);
-}
-
-[void] baz( int a, double b, int c ) {
-	printf("baz(%d, %lg, %d)\n", a, b, c);
-}
-
-[void] qux( [int, double] n, int m ) {
-	printf("qux([%d, %lg], %d)\n", n, m);
-}
-
-[int, double x, int] quux() {
-	return [3, 5.254, 4];
-}
-[[[int, double, int], [int, double]]] quuux() {
-	return [1, 2, 3, 4, 5];
-}
-
-int main() {
-	[int, double, int] x = [777, 2.76, 8675];
-	int x1 = 123, x3 = 456;
-	double x2 = 999.123;
-
-	printf("foo(...)=%d\n", foo(x1, x3, x2, (S){ 321, 654, 'Q', 3.14 }));
-
-	// call function with tuple parameter using tuple variable arg
-	bar(x);
-
-	// call function with tuple parameter using multiple values
-	bar(x1, x2, x3);
-
-	// call function with multiple parameters using tuple variable arg
-	baz(x);
-
-	// call function with multiple parameters using multiple args
-	baz(x1, x2, x3);
-
-	// call function with multiple parameters, one of which is a tuple using tuple variable arg
-	qux(x);
-
-	// call function with multiple parameters, one of which is a tuple using multiple args
-	qux(x1, x2, x3);
-
-	// call function with multiple return values and assign into a tuple variable
-	x = quux();
-	printf("x=[%d, %lg, %d]\n", x);
-
-	// call function with multiple return values and assign into a tuple expression
-	[x1, x2, x3] = quux();
-	printf("x1=%d x2=%lg x3=%d\n", x1, x2, x3);
-
-	// xxx - tuples of type parameters should come out as generic types?
-	// [x1, x2, x3] = ([(int)x1, (int)x2, (int)x3]) + ([(int)1, (int)2, (int)3]);
-	// ([(int)x1, (int)x2, (int)x3]) + ([(int)1, (int)2, (int)3]);
-	// printf("%d %g %d\n", x1, x2, x3);
-
-	// xxx - comes out the back as a cast, but should come out as a tuple expression of the first n fields cast to each of the result types
-	// ([int, double])x;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
-
Index: c/tests/tuple/tupleMember.c
===================================================================
--- src/tests/tuple/tupleMember.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,61 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// tupleFunction.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Tue Nov 15 17:24:32 2016
-// Last Modified By : Rob Schluntz
-// Last Modified On : Tue Nov 15 17:27:28 2016
-// Update Count     : 3
-//
-
-void f() {
-	printf("called f!\n");
-}
-
-double g(double x, char y, int z) {
-	return z-y+x;
-}
-
-struct V2	{
-	int f2, f3;
-};
-struct V {
-	int f1;
-	V2 i; // temporary
-	// struct V2 {
-	//   int f2, f3;
-	// } i;
-	double f4;
-} v;
-
-V & h() {
-	static V local = { 111, { 222, 333 }, 444.5 };
-	return local;
-}
-
-int main() {
-	struct X {
-		int a;
-		double b;
-		char c;
-	} x = { 10, 12.5, '\x9' };
-
-	// should only call f once
-	printf("g(...)=%lg\n", g((f(), x).[b, c, a]));
-
-	v.[f1, i.[f2, f3], f4].[1.0, 2, 0, 1.1] = [11, 3.14159, 12, 13];
-
-	printf("v.[f1, i.[f2, f3], f4]=[%d, %d, %d, %lg]\n", v.[f1, i.[f2, f3], f4]);
-
-	h().[f1, i.[f2, f3], f4].[1.0, 2, 0, 1.1] = [987, 6.28, 4, 2];
-	printf("v.[f1, i.[f2, f3], f4]=[%d, [%d, %d], %lg]\n", h().[f1, i.[f2, f3], f4]);
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/tuple/tuplePolymorphism.c
===================================================================
--- src/tests/tuple/tuplePolymorphism.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,74 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// tuplePolymorphism.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Tue Nov 16 10:38:00 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 18 18:05:12 2017
-// Update Count     : 4
-//
-
-// packed is needed so that structs are not passed with the same alignment as function arguments
-__attribute__((packed)) struct A {
-	double x;
-	char y;
-	double z;
-};
-
-__attribute__((packed)) struct B {
-	long long x;
-	char y;
-	long long z;
-};
-
-// ensure that f is a viable candidate for g, even though its parameter structure does not exactly match
-[A] f([A, B] x, B y) { printf("%g %c %g %lld %c %lld %lld %c %lld\n", x.0.[x,y,z], x.1.[x,y,z], y.[x,y,z]); return x.0; }
-forall(otype T, otype U | { T f(T, U, U); })
-void g(T x, U y) { f(x, y, y); }
-
-// add two triples
-forall(otype T | { T ?+?(T, T); })
-[T, T, T] ?+?([T, T, T] x, [T, T, T] y) {
-	return [x.0+y.0, x.1+y.1, x.2+y.2];
-}
-
-int main() {
-	int x1 = 123, x3 = 456;
-	double x2 = 999.123;
-
-	int i1 = 111, i3 = 222;
-	double i2 = 333;
-
-	int d1 = 555, d3 = 444;
-	double d2 = 666;
-
-
-	[i1, i2, i3] = ([x1, (int)x2, x3]) + ([9, 2, 3]);
-	[d1, d2, d3] = ([x1, x2, x3]) + ([9, 2, 3]);
-	printf("%d %g %d\n", i1, i2, i3);
-	printf("%d %g %d\n", d1, d2, d3);
-
-	[double, double, double] zzz;
-	zzz = [x1, x2, x3];
-	printf("%g %g %g\n", zzz);
-	[x1, x2, x3] = zzz+zzz;
-	printf("%d %g %d\n", x1, x2, x3);
-
-	// ensure non-matching assertions are specialized correctly
-	g((A){ 1.21, 'x', 10.21}, (B){ 1111LL, 'v', 54385938LL });
-}
-
-forall(otype T)
-[T, T] foo([T, T] y) {
-	[T, T] x;
-	return x;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/tuple/tupleVariadic.c
===================================================================
--- src/tests/tuple/tupleVariadic.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,133 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// tuplePolymorphism.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Fri Dec 16 10:25:35 2016
-// Last Modified By : Rob Schluntz
-// Last Modified On : Fri Dec 21 14:42:48 2016
-// Update Count     : 2
-//
-
-void func(void) {
-	printf("called func(void)\n");
-}
-forall(otype T, ttype Params | { void process(T); void func(Params); })
-void func(T arg1, Params p) {
-	process(arg1);
-	func(p);
-}
-void process(int x) {
-	printf("called process(int) %d\n", x);
-}
-void process(double x) {
-	printf("called process(double) %g\n", x);
-}
-
-forall( dtype T, ttype Params | sized(T) | { void ?{}(T &, Params); } )
-T * new(Params p);
-
-struct array {
-	int * data;
-	int size;
-};
-
-// xxx - eventually this will be collapsed...x
-void ?{}(array & a) {
-	a.size = 0;
-	a.data = 0;
-	printf("called ?{} with no a\n");
-}
-
-void ?{}(array & a, int a0) {
-	a.size = 1;
-	a.data = (int*)malloc(sizeof(int)*a.size);
-	a.data[0] = a0;
-	printf("called ?{} with a: %d\n", a0);
-}
-
-void ?{}(array & a, int a0, int a1) {
-	a.size = 2;
-	a.data = (int*)malloc(sizeof(int)*a.size);
-	a.data[0] = a0;
-	a.data[1] = a1;
-	printf("called ?{} with a: %d %d\n", a0, a1);
-}
-
-void ?{}(array & a, int a0, int a1, int a2) {
-	a.size = 3;
-	a.data = (int*)malloc(sizeof(int)*a.size);
-	a.data[0] = a0;
-	a.data[1] = a1;
-	a.data[2] = a2;
-	printf("called ?{} with a: %d %d %d\n", a0, a1, a2);
-}
-
-// test use of a tuple argument
-[void] ?{}(array & a, [int, int, int, int] args) {
-	int a0, a1, a2, a3;
-	[a0, a1, a2, a3] = args;
-	a.size = 4;
-	a.data = (int *)malloc(sizeof(int)*a.size);
-	a.data[0] = a0;
-	a.data[1] = a1;
-	a.data[2] = a2;
-	a.data[3] = a3;
-	printf("called ?{} with a: %d %d %d %d\n", a0, a1, a2, a3);
-}
-
-void print(array * x) {
-	printf("array = { ");
-	for (int i = 0; i < x->size; ++i) {
-		printf("%d, ", x->data[i]);
-	}
-	printf("}\n");
-}
-
-forall(otype T)
-T * copy(T x) {
-	// test calling new inside a polymorphic function
-	return new(x);
-}
-
-forall(ttype T | { void foo(T); }) void bar(T x) {}
-void foo(int) {}
-
-int main() {
-	array * x0 = new();
-	print(x0);
-
-	array * x1 = new(999);
-	print(x1);
-
-	array * x2 = new(123, 456);
-	print(x2);
-
-	array * x3 = new(100, 200, 300);
-	print(x3);
-
-	array * x4 = new(10, 2, 3, 4);
-	print(x4);
-
-	int * ptr = copy(111111);
-	printf("copy=%d\n", *ptr);
-
-	printf("calling func\n");
-	func(3, 2.0, 111, 4.145);
-	printf("finished func\n");
-
-	{
-		// T = [const int] -- this ensures that void(*)(int) satisfies void(*)(const int)
-		const int x;
-		bar(x);
-	}
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
-
Index: c/tests/tuple/tuples.c
===================================================================
--- src/tests/tuple/tuples.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,32 +1,0 @@
-int a;
-float a;
-int f( int );
-float f( float );
-
-void g() {
-	// selects the same f each time but without a cast would be ambiguous
-	f( (int)a );
-	(int)f( a );
-}
-
-[ int ] p;
-[ int, double ] p;
-[ int, int, int ] p;
-[ int, int, int, int ] p;
-
-[ char ] q;
-[ int, int ] q;
-[ int, int, float ] q;
-[ int, int, int, int ] q;
-
-[ int, int ] r( int, int, int, int );
-
-void s() {
-	r( p, q );
-	r( [ q, p ] );
-	r( r( p, q ), r( q, q ) );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/typeGenerator.c
===================================================================
--- src/tests/typeGenerator.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,30 +1,0 @@
-context addable( otype T ) {
-	T ?+?( T,T );
-	T ?=?( T*, T);
-};
-
-otype List1( otype T | addable( T ) ) = struct { T data; List1( T ) *next; } *;
-typedef List1( int ) ListOfIntegers;
-//List1( int ) li;
-ListOfIntegers li;
-int f( List1( int ) ( (*g ))( int ) );
-[int] h( * List1( int ) p );							// new declaration syntax
-
-struct( otype T ) S2 { T i; };							// actual definition
-struct( int ) S3 v1, *p;								// expansion and instantiation
-struct( otype T )( int ) S24 { T i; } v2;				// actual definition, expansion and instantiation
-struct( otype T )( int ) { T i; } v2;					// anonymous actual definition, expansion and instantiation
-
-struct( otype T | addable( T ) ) node { T data; struct( T ) node *next; };
-otype List( otype T ) = struct( T ) node *;
-List( int ) my_list;
-
-otype Complex | addable( Complex );
-
-int main() {
-	(struct( int ) node)my_list;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/typedef.c
===================================================================
--- src/tests/typedef.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,47 +1,0 @@
-typedef int T;
-
-void f( void ) {
-    int T( T p ) { return 3; }
-    T( 3 );
-}
-
-struct {
-    T (T);
-} fred = { 3 };
-
-typedef int (*a)(int, char);
-a b;
-
-int g(void) {
-    double a;
-}
-a c;
-
-typedef typeof(3) x, y;  // GCC
-
-x p;
-y q;
-
-int main() {
-    typedef typeof(3) z, p;
-    z w;
-    p x;
-}
-
-// new-style function definitions
-
-typedef [10] * int arrayOf10Pointers;
-arrayOf10Pointers array;
-typedef const * int constantPointer;
-typedef * [ int ]( [] int ) funcPtr;
-typedef [ int ] funcProto( []  int );
-typedef [ int, int ] tupleType;
-typedef * [ int, int ] tupleTypePtr;
-typedef * int c, d;
-typedef [ int ] f( * int ), g;
-typedef [ * [static 10] int ] t;
-typedef [ * [static 10] int x ] h();
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/typedefDeclarator.c
===================================================================
--- src/tests/typedefDeclarator.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,120 +1,0 @@
-typedef int
-	 f0,  f1,  f2,  f3,  f4,  f5,  f6,  f7,  f8,  f9,
-	f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
-	f20, f21, f22, f23, f24, f25, f26, f27, f28, f29,
-	f30, f31, f32, f33, f34, f35, f36, f37, f38, f39,
-	f40, f41, f42, f43, f44, f45, f46, f47, f48, f49,
-	f50, f51, f52, f53, f54, f55, f56, f57, f58, f59,
-	f60, f61, f62, f63, f64, f65, f66, f67, f68, f69,
-	f70, f71, f72, f73, f74, f75, f76, f77, f78, f79,
-	f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
-
-int main() {
-	//int f0[]();
-	//int (f0[])();
-	//int f0()[];
-	//int f0()();
-	//int (*f0)()();
-	//int ((*f0())())[];
-	
-	int f1;
-	int (f2);
-
-	int *f3;
-	int **f4;
-	int * const *f5;
-	int * const * const f6;
-
-	int *(f7);
-	int **(f8);
-	int * const *(f9);
-	int * const * const (f10);
-
-	int (*f11);
-	int (**f12);
-	int (* const *f13);
-	int (* const * const f14);
-
-	int f15[];
-	int f16[10];
-	int (f17[]);
-	int (f18[10]);
-
-	int *f19[];
-	int *f20[10];
-	int **f21[];
-	int **f22[10];
-	int * const *f23[];
-	int * const *f24[10];
-	int * const * const f25[];
-	int * const * const f26[10];
-
-	int *(f27[]);
-	int *(f28[10]);
-	int **(f29[]);
-	int **(f30[10]);
-	int * const *(f31[]);
-	int * const *(f32[10]);
-	int * const * const (f33[]);
-	int * const * const (f34[10]);
-
-	int (*f35[]);
-	int (*f36[10]);
-	int (**f37[]);
-	int (**f38[10]);
-	int (* const *f39[]);
-	int (* const *f40[10]);
-	int (* const * const f41[]);
-	int (* const * const f42[10]);
-
-	int f43[][3];
-	int f44[3][3];
-	int (f45[])[3];
-	int (f46[3])[3];
-	int ((f47[]))[3];
-	int ((f48[3]))[3];
-
-	int *f49[][3];
-	int *f50[3][3];
-	int **f51[][3];
-	int **f52[3][3];
-	int * const *f53[][3];
-	int * const *f54[3][3];
-	int * const * const f55[][3];
-	int * const * const f56[3][3];
-
-	int (*f57[][3]);
-	int (*f58[3][3]);
-	int (**f59[][3]);
-	int (**f60[3][3]);
-	int (* const *f61[][3]);
-	int (* const *f62[3][3]);
-	int (* const * const f63[][3]);
-	int (* const * const f64[3][3]);
-
-	int f65(int);
-	int (f66)(int);
-
-	int *f67(int);
-	int **f68(int);
-	int * const *f69(int);
-	int * const * const f70(int);
-
-	int *(f71)(int);
-	int **(f72)(int);
-	int * const *(f73)(int);
-	int * const * const (f74)(int);
-
-	int (*f75)(int);
-	int (**f76)(int);
-	int (* const *f77)(int);
-	int (* const * const f78)(int);
-
-	int (*(*f79)(int))();
-	int (*(* const f80)(int))();
-	int (* const(* const f81)(int))();
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/typedefRedef.c
===================================================================
--- src/tests/typedefRedef.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,69 +1,0 @@
-typedef volatile struct Foo FooInterm;
-typedef const FooInterm Foo;
-#ifdef ERR1
-typedef struct Foo Foo;
-#endif
-
-typedef int ** pt;
-typedef int ** pt;
-
-#ifdef __CFA__
-extern "C" {
-#endif
-typedef int __io_read_fn ( char buf);
-typedef int __io_write_fn ( const char buf);
-
-
-__io_read_fn read;
-__io_write_fn write;
-#ifdef __CFA__
-}
-#endif
-
-int sz;
-typedef int FUNC(int, ...);
-typedef int FUNC(int, ...);
-
-typedef int ARR[];
-typedef int ARR[];
-// #ifdef ERR1
-// if a typedef has an array dimension,
-// it can only be redefined to the same dimension
-typedef int ARR[2];
-// #endif
-
-typedef int X;
-typedef int Y;
-typedef Y Y2;
-typedef X X2;
-
-typedef Y2 Z;
-typedef X2 Z;
-
-typedef Z X2;
-typedef int X2;
-typedef Z X2;
-typedef int X2;
-
-// xxx - this doesn't work yet due to parsing problems with generic types
-// #ifdef __CFA__
-// typedef forall(type T) void foo(T);
-// typedef forall(type T) void foo(T);
-// typedef forall(type S) void foo(S); // should be allowed to do this...
-// #endif
-
-int main() {
-  typedef int ARR[sz];
-
-  // can't redefine typedef which is VLA
-#if ERR1
-  typedef int ARR[sz];
-#endif
-
-  Foo *x;
-
-  typedef struct Bar Foo;
-  Foo *y;
-
-  typedef int *** pt;
-}
Index: c/tests/typeof.c
===================================================================
--- src/tests/typeof.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,11 +1,0 @@
-int main() {
-    int *v1;
-    typeof(v1) v2;
-    typeof(*v1) v3[4];
-    char *v4[4];
-    typeof(typeof(char *)[4]) v5;
-    typeof (int *) v6;
-    typeof( int ( int, int p ) ) *v7;
-    typeof( [int] ( int, int p ) ) *v8;
-    (typeof(v1)) v2; // cast with typeof
-}
Index: c/tests/user_literals.c
===================================================================
--- src/tests/user_literals.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,93 +1,0 @@
-// 
-// 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.
-// 
-// user_literals.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Sep  6 21:40:50 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Apr 29 16:51:42 2018
-// Update Count     : 54
-// 
-
-#include <fstream>
-#include <wchar.h>
-#include <uchar.h>
-
-int ?`s( int s ) { sout | "secs" | s | endl; return s; }
-int ?`m( int m ) { sout | "mins" | m | endl; return m * 60; }
-int ?`h( int h ) { sout | "hours" | h | endl; return h * 3600; }
-int ?`_A_( int x ) { sout | "_A_" | x | endl; return x; }
-int ?`__thingy_( int x ) { sout | "_thingy_" | x | endl; return x; }
-
-int ?`s( const char * s ) { sout | "secs" | s | endl; return 0; }
-int ?`m( const char16_t * m ) { sout | "mins" | m | endl; return 0;}
-int ?`h( const char32_t * h ) { sout | "hours" | h | endl; return 0; }
-int ?`_A_( const wchar_t * str ) { sout | "_A_" | str | endl; return 0; }
-int ?`__thingy_( const char * str ) { sout | "_thingy_" | str | endl; return 0; }
-
-
-struct Weight { double stones; };
-void ?{}( Weight & w ) { w.stones = 0; }
-void ?{}( Weight & w, double w ) { w.stones = w; }
-Weight ?+?( Weight l, Weight r ) {
-	return (Weight){ l.stones + r.stones };
-}
-ofstream & ?|?( ofstream & os, Weight w ) { return os | w.stones; }
-
-Weight ?`st( double w ) { return (Weight){ w }; }		// backquote for user literals
-Weight ?`lb( double w ) { return (Weight){ w / 14.0 }; }
-Weight ?`kg( double w ) { return (Weight) { w * 0.16 }; }
-
-int main() {
-	Weight w, heavy = { 20 };							// 20 stone
-	w = 155`lb;
-	sout | w | endl;
-	w = 0b_1111`st;
-	sout | w | endl;
-	w = 0_233`lb;										// octal weight (155)
-	sout | w | endl;
-	w = 0x_9b_u`kg;
-	sout | w | endl;
-	w = 70.3`kg;
-	sout | w | endl;
-	w = 11`st + 1`lb;
-	sout | w | endl;
-	w = 5`st + 8`kg + 25`lb + heavy;
-	sout | w | endl;
-
-//	0`secs;
-	1`s;
-	23`s;
-	23u`m;
-	23l`h;
-	23_ul`_A_;
-	1_234_LL`__thingy_;
-
-	0xff_ffl;
-	0xff_ff`s;
-	0xff_ffu`m;
-	0xff_ffl`h;
-	0xff_fful`_A_;
-	0xff_ffLL`__thingy_;
-
-	'\n'`s;
-	L'\n'`h;
-	u'\n'`m;
-	L_'\n'`_A_;
-	U_'\n'`__thingy_;
-
-	"abc"`s;
-//	u"abc"`m;
-//	U_"abc"`h;
-//	L"abc"`_A_;
-	u8_"abc"`__thingy_;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa user_literals.c" //
-// End: //
Index: c/tests/variableDeclarator.c
===================================================================
--- src/tests/variableDeclarator.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,185 +1,0 @@
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// variableDeclarator.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Aug 17 08:41:42 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 17 08:42:21 2016
-// Update Count     : 1
-// 
-
-// Variable declarations test
-int f1;
-int (f2);
-
-int *f3;
-int **f4;
-int * const *f5;
-int * const * const f6;
-
-int *(f7);
-int **(f8);
-int * const *(f9);
-int * const * const (f10);
-
-int (*f11);
-int (**f12);
-int (* const *f13);
-int (* const * const f14);
-
-int f15[];
-int f16[10];
-int (f17[]);
-int (f18[10]);
-
-int *f19[];
-int *f20[10];
-int **f21[];
-int **f22[10];
-int * const *f23[];
-int * const *f24[10];
-int * const * const f25[];
-int * const * const f26[10];
-
-int *(f27[]);
-int *(f28[10]);
-int **(f29[]);
-int **(f30[10]);
-int * const *(f31[]);
-int * const *(f32[10]);
-int * const * const (f33[]);
-int * const * const (f34[10]);
-
-int (*f35)[];
-int (*f36)[10];
-int (**f37)[];
-int (**f38)[10];
-int (* const *f39)[];
-int (* const *f40)[10];
-int (* const * const f41)[];
-int (* const * const f42)[10];
-
-int f43[][3];
-int f44[3][3];
-int (f45[])[3];
-int (f46[3])[3];
-int ((f47[]))[3];
-int ((f48[3]))[3];
-
-int *f49[][3];
-int *f50[3][3];
-int **f51[][3];
-int **f52[3][3];
-int * const *f53[][3];
-int * const *f54[3][3];
-int * const * const f55[][3];
-int * const * const f56[3][3];
-
-int (*f57[][3]);
-int (*f58[3][3]);
-int (**f59[][3]);
-int (**f60[3][3]);
-int (* const *f61[][3]);
-int (* const *f62[3][3]);
-int (* const * const f63[][3]);
-int (* const * const f64[3][3]);
-
-int f65(int);
-int (f66)(int);
-
-int *f67(int);
-int **f68(int);
-int * const *f69(int);
-int * const * const f70(int);
-
-int *(f71)(int);
-int **(f72)(int);
-int * const *(f73)(int);
-
-int * const * const (f74)(int);
-
-int (*f75)(int);
-int (**f76)(int);
-int (* const *f77)(int);
-int (* const * const f78)(int);
-
-int (*(*f79)(int))();
-int (*(* const f80)(int))();
-int (* const(* const f81)(int))();
-
-// errors
-
-//int fe0[]();				// array of functions
-//int (fe1[])();				// array of functions
-//int fe2()[];				// returning an array
-//int fe3()();				// returning a function
-//int (*fe4)()();				// returning a function
-//int ((*fe5())())[];			// returning an array
-
-// Cforall extensions
-
-* int cf3;
-* * int cf4;
-* const * int cf5;
-const * const * int cf6;
-
-[] int cf15;
-[10] int cf16;
-
-[] * int cf19;
-[10] * int cf20;
-int **cf21[];
-[10] * * int cf22;
-[] * const * int cf23;
-[10] * const * int cf24;
-[] const * const * int cf25;
-[10] const * const * int cf26;
-
-* [] int cf35;
-* [10] int cf36;
-* * [] int cf37;
-* * [10] int cf38;
-* const * [] int cf39;
-* const * [10] int cf40;
-const * const * [] int cf41;
-const * const * [10] int cf42;
-
-[][3] int cf43;
-[3][3] int cf44;
-
-[][3] * int cf49;
-[3][3] * int cf50;
-[][3] * * int cf51;
-[3][3] * * int cf52;
-[][3] const * int cf53;
-[3][3] * const * int cf54;
-[][3] const * const * int cf55;
-[3][3] const * const * int cf56;
-
-[int] cf65(int);
-[int] cf66(int);
-
-[* int] cf67(int);
-[* * int] cf68(int);
-[const * * int] cf69(int);
-[const * const * int] cf70(int);
-
-// function pointer
-
-*[]*[]* [ *[]*[] int ]( *[]*[] int, *[]*[] int ) v3;
-
-//Dummy main
-int main(int argc, char const *argv[])
-{
-	return 0;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa variableDeclarator.c" //
-// End: //
Index: c/tests/vector.c
===================================================================
--- src/tests/vector.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// vector.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Jul  4 23:36:19 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jan 18 17:08:08 2018
-// Update Count     : 27
-//
-
-#include <fstream>
-#include <vector>
-
-#undef assert
-#define assert(x)								\
-	do {										\
-		if ( !(x) ) {							\
-			sout | "CHECK failed :" | #x | "at" | __FILE__ | " :" | __LINE__ | endl;	\
-			abort();							\
-		}										\
-	} while( 0 == 1 )
-
-int main() {
-	vector( int ) iv;
-
-	assert( empty( &iv ) );
-	assert( size( &iv ) == 0 );
-	sout | size( &iv ) | endl;
-
-	push_back( &iv, 1 );
-	assert( size( &iv ) == 1 );
-	sout | size( &iv ) | endl;
-
-	push_back( &iv, 2 );
-	assert( size( &iv ) == 2 );
-	sout | size( &iv ) | endl;
-
-	push_back( &iv, 3 );
-	assert( size( &iv ) == 3 );
-	sout | size( &iv ) | endl;
-
-	assert( !empty( &iv ) );
-	assert( size( &iv ) == 3 );
-	assert( at( &iv, 0 ) == 1 );
-	assert( (&iv)[0] == 1 );
-	assert( at( &iv, 1 ) == 2 );
-	assert( (&iv)[1] == 2 );
-	assert( at( &iv, 2 ) == 3 );
-	assert( (&iv)[2] == 3 );
-
-	clear( &iv );
-
-	assert( empty( &iv ) );
-	assert( size( &iv ) == 0 );
-	sout | size( &iv ) | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa vector.c" //
-// End: //
Index: c/tests/virtualCast.c
===================================================================
--- src/tests/virtualCast.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,76 +1,0 @@
-// Testing the virtual cast, as part of strict inheritance.
-
-/* IMPORTANT: This test does not repersent the final feature set.
- * We are missing a number of important aspects such as:
- * + vtable type generation.
- * + vtable instance generation, that might use different resolution rules.
- * + Virtual syntax to force said generation on structures and traits.
- * + Trait references/pointers that do the virtual_table lookup.
- */
-
-#include <stdlib>
-#include <assert.h>
-
-struct alpha_vtable {
-	alpha_vtable const * const parent;
-	char (*code)(void);
-};
-
-struct alpha {
-	alpha_vtable const * virtual_table;
-};
-
-char ret_a(void) {
-	return 'a';
-}
-
-
-
-struct beta_vtable {
-	alpha_vtable const * const parent;
-	char (*code)(void);
-};
-
-struct beta {
-	beta_vtable const * virtual_table;
-};
-
-char ret_b(void) {
-	return 'b';
-}
-
-
-
-struct gamma_vtable {
-	beta_vtable const * const parent;
-	char (*code)(void);
-};
-
-struct gamma {
-	gamma_vtable const * virtual_table;
-};
-
-char ret_g(void) {
-	return 'g';
-}
-
-
-extern "C" {
-	alpha_vtable _alpha_vtable_instance = { 0, ret_a };
-	beta_vtable _beta_vtable_instance = { &_alpha_vtable_instance, ret_b };
-	gamma_vtable _gamma_vtable_instance = { &_beta_vtable_instance, ret_g };
-}
-
-int main (int argc, char * argv[]) {
-
-	gamma * tri = malloc(); tri->virtual_table = &_gamma_vtable_instance;
-	beta * mid = (virtual beta *)tri;
-	assert( 'g' == mid->virtual_table->code() );
-
-	alpha * top = malloc(); top->virtual_table = &_alpha_vtable_instance;
-	mid = (virtual beta *)top;
-	assert( ! mid );
-
-	free(tri);
-	free(top);
-}
Index: c/tests/voidPtr.c
===================================================================
--- src/tests/voidPtr.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,17 +1,0 @@
-int main() {
-	int i, j;
-	void *a = &i, *b = &j;
-
-	if ( a == 0 ) {
-		abort();
-	}
-
-	if ( a == b ) {
-		abort();
-	}
-
-	if ( ! a ) {
-		abort();
-	}	
-}
-
Index: c/tests/warnings/.expect/self-assignment.txt
===================================================================
--- src/tests/warnings/.expect/self-assignment.txt	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,25 +1,0 @@
-warnings/self-assignment.c:29:1 warning: self assignment of expression: Cast of:
-  Variable Expression: j: signed int
-... to:
-  reference to signed int
-warnings/self-assignment.c:30:1 warning: self assignment of expression: Cast of:
-  Variable Expression: s: instance of struct S with body 1 
-... to:
-  reference to instance of struct S with body 1 
-warnings/self-assignment.c:31:1 warning: self assignment of expression: Cast of:
-  Member Expression, with field: 
-    i: signed int
-  ... from aggregate: 
-    Variable Expression: s: instance of struct S with body 1 
-... to:
-  reference to signed int
-warnings/self-assignment.c:32:1 warning: self assignment of expression: Cast of:
-  Member Expression, with field: 
-    i: signed int
-  ... from aggregate: 
-    Member Expression, with field: 
-      s: instance of struct S with body 1 
-    ... from aggregate: 
-      Variable Expression: t: instance of struct T with body 1 
-... to:
-  reference to signed int
Index: c/tests/warnings/self-assignment.c
===================================================================
--- src/tests/warnings/self-assignment.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,38 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// self-assignment.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Thu Mar 1 13:53:57 2018
-// Last Modified By : Rob Schluntz
-// Last Modified On : Thu Mar 1 13:53:57 2018
-// Update Count     : 2
-//
-
-struct S {
-  int i;
-};
-
-struct T {
-  S s;
-};
-
-int main() {
-  int j = 0;
-  S s = { 0 };
-  T t = { { 0 } };
-
-  j = j;
-  s = s;
-  s.i = s.i;
-  t.s.i = t.s.i;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa dtor-early-exit" //
-// End: //
Index: c/tests/with-statement.c
===================================================================
--- src/tests/with-statement.c	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ 	(revision )
@@ -1,108 +1,0 @@
-//
-// 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.
-//
-// tupleFunction.c --
-//
-// Author           : Rob Schluntz
-// Created On       : Mon Dec 04 17:41:45 2017
-// Last Modified By : Rob Schluntz
-// Last Modified On : Mon Dec 04 17:45:07 2017
-// Update Count     : 2
-//
-
-struct S {
-  int i;
-  // dynamically allocated member ensures ctor/dtors are called correctly on temporaries
-  int * ptr;
-};
-
-// with clause on reference parameter
-void ?{}(S & this, int n) with(this) {
-  i = n;
-  ptr = (int *)malloc(sizeof(int));
-}
-
-void ?{}(S & this) {
-  this{ 0 };
-}
-
-void ?{}(S & this, S other) {
-  this{ other.i };
-}
-
-S ?=?(S & this, S other) with(this) {
-  i = other.i;
-  *ptr = *other.ptr;
-  return this;
-}
-
-void ^?{}(S & this) with(this) {
-  free(ptr);
-}
-
-struct S2 {
-  S s;
-};
-
-void ?{}(S2 & this, int n) {
-  (this.s){ n };
-}
-
-forall(otype T)
-struct Box {
-  T x;
-};
-
-forall(otype T)
-void ?{}(Box(T) & this) with(this) { // with clause in polymorphic function
-  x{};
-}
-
-void print(int i) { printf("%d", i); }
-
-forall(otype T | { void print(T); })
-void foo(T t) {
-  Box(T) b = { t };
-  with(b) {  // with statement in polymorphic function
-    print(x);
-    printf("\n");
-  }
-}
-
-// ensure with-statement temporary generation works correctly
-S mk() {
-  printf("called mk\n");
-  return (S) { 444 };
-}
-
-// ensure with-statement temporary generation with reference-returning functions works correctly
-S & ref() {
-  static S var = { 123456789 };
-  return var;
-}
-
-int main() {
-  S2 s2 = { 12345 };
-  with (s2) {
-    with(s) { // with s2.s
-      printf("%d %d %d\n", i, s.i, s2.s.i);
-      foo(i);  // s.i
-      with(mk()) {
-        printf("%d %d %d\n", i, i, i);
-        with(ref()) {
-          printf("%d %d %d\n", i, i, i);
-        } // with ref()
-        with(ref()) {
-          printf("%d %d %d\n", i, i, i);
-        } // with ref()
-      } // with mk()
-    } // with s
-  } // with s2
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: tests/.expect/KRfunctions.x64.txt
===================================================================
--- tests/.expect/KRfunctions.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/KRfunctions.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,93 @@
+signed int _X2f0Fi_iPKii__1(signed int _X1ai_1, const signed int *_X1bPKi_1, signed int _X1ci_1){
+    __attribute__ ((unused)) signed int _X10_retval_f0i_1;
+}
+signed int _X2f1Fi_PiiPi__1(signed int *_X1aPi_1, __attribute__ ((unused)) signed int _X1bi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+signed int _X2f2Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f2i_1;
+}
+struct S {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    struct S _X4_retS1S_1;
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1));
+    ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
+    return _X4_retS1S_1;
+}
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+signed int _X2f3Fi_S1SS1SPi__1(struct S _X1aS1S_1, struct S _X1bS1S_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f3i_1;
+    struct S _X1sS1S_2;
+}
+signed int _X2f4Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f4i_1;
+}
+signed int _X2f5Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f5i_1;
+}
+signed int (*_X2f6FFi_i__iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))(signed int __anonymous_object0){
+    __attribute__ ((unused)) signed int (*_X10_retval_f6Fi_i__1)(signed int __anonymous_object1);
+}
+signed int (*_X2f7FFi_ii__iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))(signed int _X1ai_1, signed int _X1bi_1){
+    __attribute__ ((unused)) signed int (*_X10_retval_f7Fi_ii__1)(signed int _X1ai_1, signed int _X1bi_1);
+}
+signed int *_X2f8FPi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int *_X10_retval_f8Pi_1;
+}
+signed int *const _X2f9FPi_PiiPi__1(signed int *_X1aPi_1, signed int _X1bi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int *const _X10_retval_f9KPi_1;
+}
+signed int *(*_X3f10FFPi_ii__iPiPid__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1, double _X1yd_1))(signed int _X1xi_1, signed int _X1yi_1){
+    __attribute__ ((unused)) signed int *(*_X11_retval_f10FPi_ii__1)(signed int _X1xi_1, signed int _X1yi_1);
+    signed int *_X1xFPi_ii__2(signed int __anonymous_object2, signed int __anonymous_object3);
+    ((void)(_X11_retval_f10FPi_ii__1=_X1xFPi_ii__2) /* ?{} */);
+    return _X11_retval_f10FPi_ii__1;
+}
+signed int (*_X3f11FPA0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f11PA0i_1)[];
+}
+signed int (*_X3f12FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f12PA0A0i_1)[][((unsigned long int )10)];
+}
+signed int (*_X3f13FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f13PA0A0i_1)[][((unsigned long int )10)];
+}
+signed int (*_X3f14FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f14PA0A0i_1)[][((unsigned long int )10)];
+}
+signed int _X3f15Fi_iii__1(signed int _X1ai_1, signed int _X1bi_1, signed int _X1ci_1){
+    __attribute__ ((unused)) signed int _X11_retval_f15i_1;
+}
+const signed int _X4fredFi___1(){
+    __attribute__ ((unused)) const signed int _X12_retval_fredKi_1;
+    signed int *(*_X1xFPi_ii__2)(signed int __anonymous_object4, signed int __anonymous_object5);
+    signed int _X1ai_2;
+    signed int _X1bi_2;
+    signed int *(*_tmp_cp_ret2)(signed int _X1xi_1, signed int _X1yi_1);
+    ((void)(_X1xFPi_ii__2=(((void)(_tmp_cp_ret2=_X3f10FFPi_ii__iPiPid__1(3, (&_X1ai_2), (&_X1bi_2), 3.5))) , _tmp_cp_ret2)));
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
+    const signed int _X2f1Fi_iPiPi__2(signed int _X1ai_2, signed int *_X1bPi_2, signed int *_X1cPi_2){
+        __attribute__ ((unused)) const signed int _X10_retval_f1Ki_2;
+    }
+    const signed int _X2f2Fi_iii__2(signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2){
+        __attribute__ ((unused)) const signed int _X10_retval_f2Ki_2;
+    }
+}
Index: tests/.expect/KRfunctions.x86.txt
===================================================================
--- tests/.expect/KRfunctions.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/KRfunctions.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,93 @@
+signed int _X2f0Fi_iPKii__1(signed int _X1ai_1, const signed int *_X1bPKi_1, signed int _X1ci_1){
+    __attribute__ ((unused)) signed int _X10_retval_f0i_1;
+}
+signed int _X2f1Fi_PiiPi__1(signed int *_X1aPi_1, __attribute__ ((unused)) signed int _X1bi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+signed int _X2f2Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f2i_1;
+}
+struct S {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    struct S _X4_retS1S_1;
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1));
+    ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
+    return _X4_retS1S_1;
+}
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+signed int _X2f3Fi_S1SS1SPi__1(struct S _X1aS1S_1, struct S _X1bS1S_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f3i_1;
+    struct S _X1sS1S_2;
+}
+signed int _X2f4Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f4i_1;
+}
+signed int _X2f5Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f5i_1;
+}
+signed int (*_X2f6FFi_i__iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))(signed int __anonymous_object0){
+    __attribute__ ((unused)) signed int (*_X10_retval_f6Fi_i__1)(signed int __anonymous_object1);
+}
+signed int (*_X2f7FFi_ii__iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))(signed int _X1ai_1, signed int _X1bi_1){
+    __attribute__ ((unused)) signed int (*_X10_retval_f7Fi_ii__1)(signed int _X1ai_1, signed int _X1bi_1);
+}
+signed int *_X2f8FPi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int *_X10_retval_f8Pi_1;
+}
+signed int *const _X2f9FPi_PiiPi__1(signed int *_X1aPi_1, signed int _X1bi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int *const _X10_retval_f9KPi_1;
+}
+signed int *(*_X3f10FFPi_ii__iPiPid__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1, double _X1yd_1))(signed int _X1xi_1, signed int _X1yi_1){
+    __attribute__ ((unused)) signed int *(*_X11_retval_f10FPi_ii__1)(signed int _X1xi_1, signed int _X1yi_1);
+    signed int *_X1xFPi_ii__2(signed int __anonymous_object2, signed int __anonymous_object3);
+    ((void)(_X11_retval_f10FPi_ii__1=_X1xFPi_ii__2) /* ?{} */);
+    return _X11_retval_f10FPi_ii__1;
+}
+signed int (*_X3f11FPA0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f11PA0i_1)[];
+}
+signed int (*_X3f12FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f12PA0A0i_1)[][((unsigned int )10)];
+}
+signed int (*_X3f13FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f13PA0A0i_1)[][((unsigned int )10)];
+}
+signed int (*_X3f14FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f14PA0A0i_1)[][((unsigned int )10)];
+}
+signed int _X3f15Fi_iii__1(signed int _X1ai_1, signed int _X1bi_1, signed int _X1ci_1){
+    __attribute__ ((unused)) signed int _X11_retval_f15i_1;
+}
+const signed int _X4fredFi___1(){
+    __attribute__ ((unused)) const signed int _X12_retval_fredKi_1;
+    signed int *(*_X1xFPi_ii__2)(signed int __anonymous_object4, signed int __anonymous_object5);
+    signed int _X1ai_2;
+    signed int _X1bi_2;
+    signed int *(*_tmp_cp_ret2)(signed int _X1xi_1, signed int _X1yi_1);
+    ((void)(_X1xFPi_ii__2=(((void)(_tmp_cp_ret2=_X3f10FFPi_ii__iPiPid__1(3, (&_X1ai_2), (&_X1bi_2), 3.5))) , _tmp_cp_ret2)));
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
+    const signed int _X2f1Fi_iPiPi__2(signed int _X1ai_2, signed int *_X1bPi_2, signed int *_X1cPi_2){
+        __attribute__ ((unused)) const signed int _X10_retval_f1Ki_2;
+    }
+    const signed int _X2f2Fi_iii__2(signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2){
+        __attribute__ ((unused)) const signed int _X10_retval_f2Ki_2;
+    }
+}
Index: tests/.expect/abs.txt
===================================================================
--- tests/.expect/abs.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/abs.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,10 @@
+char			-65	abs 65
+signed int		-65	abs 65
+signed long int		-65	abs 65
+signed long long int	-65	abs 65
+float			-65	abs 65
+double			-65	abs 65
+long double		-65	abs 65
+float _Complex		-65-2i	abs 65.0308
+double _Complex		-65-2i	abs 65.0307619515564
+long double _Complex	-65-2i	abs 65.0307619515564342
Index: tests/.expect/alloc-ERROR.txt
===================================================================
--- tests/.expect/alloc-ERROR.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/alloc-ERROR.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,64 @@
+alloc.c:265:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: ?=?
+...to: 
+  Name: p
+  Applying untyped: 
+    Name: realloc
+  ...to: 
+    Name: stp
+    Applying untyped: 
+      Name: ?*?
+    ...to: 
+      Name: dim
+      Sizeof Expression on: Applying untyped: 
+          Name: *?
+        ...to: 
+          Name: stp
+
+
+
+
+alloc.c:266:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: ?=?
+...to: 
+  Name: p
+  Applying untyped: 
+    Name: alloc
+  ...to: 
+    Name: stp
+    Applying untyped: 
+      Name: ?*?
+    ...to: 
+      Name: dim
+      Sizeof Expression on: Applying untyped: 
+          Name: *?
+        ...to: 
+          Name: stp
+
+
+
+
+alloc.c:267:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: ?=?
+...to: 
+  Name: p
+  Applying untyped: 
+    Name: memset
+  ...to: 
+    Name: stp
+    constant expression (10 10: signed int)
+
+
+alloc.c:268:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: ?=?
+...to: 
+  Name: p
+  Applying untyped: 
+    Name: memcpy
+  ...to: 
+    Address of:
+      Name: st1
+    Address of:
+      Name: st
+
+
Index: tests/.expect/alloc.txt
===================================================================
--- tests/.expect/alloc.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/alloc.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,61 @@
+C   malloc 0xdeadbeef
+CFA malloc 0xdeadbeef
+CFA alloc 0xdeadbeef
+CFA alloc, fill ffffffff
+
+C   array calloc, fill 0
+0 0 0 0 0 0 0 0 0 0 
+CFA array calloc, fill 0
+0 0 0 0 0 0 0 0 0 0 
+CFA array alloc, no fill
+0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 
+CFA array alloc, fill 0xff
+0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 
+
+C   realloc
+0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 
+CFA realloc
+0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 
+
+CFA resize alloc
+0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 
+CFA resize array alloc
+0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 
+CFA resize array alloc
+0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 
+CFA resize array alloc, fill
+0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 
+CFA resize array alloc, fill
+0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 
+CFA resize array alloc, fill
+0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 
+
+C   memalign 42 42.5
+CFA memalign 42 42.5
+CFA posix_memalign 42 42.5
+CFA posix_memalign 42 42.5
+CFA aligned_alloc 42 42.5
+CFA align_alloc 42 42.5
+CFA align_alloc fill 0xffffffff -nan
+
+CFA array align_alloc
+42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 
+CFA array align_alloc, fill
+0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 
+
+CFA memset 0xffffffff -nan
+CFA memcpy 0xffffffff -nan
+
+CFA array memset
+0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 
+CFA array memcpy
+0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 0xffffffff -nan, 
+
+CFA new initialize
+42 42.5 42 42.5
+CFA array new initialize
+42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 
+42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 42 42.5, 
+
+pointer arithmetic 0
+CFA deep malloc 0xdeadbeef
Index: tests/.expect/ato.txt
===================================================================
--- tests/.expect/ato.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/ato.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,27 @@
+-123 -123
+123 123
+-123 -123
+123 123
+-123 -123
+123 123
+-123.456 -123.456
+-123.456789012346 -123.4567890123456
+-123.456789012345679 -123.45678901234567890123456789
+-123.456-123.456i -123.456-123.456i
+-123.456789012346+123.456789012346i -123.4567890123456+123.4567890123456i
+123.456789012345679-123.456789012345679i 123.45678901234567890123456789-123.45678901234567890123456789i
+123.45678901234-123.456789i 123.45678901234-123.4567890i
+-123 -123
+123 123
+-123 -123
+123 123
+-123 -123
+123 123
+-123.456 -123.456
+-123.456789012346 -123.4567890123456
+-123.456789012345679 -123.45678901234567890123456789
+-123.456-123.456i -123.456-123.456i
+0+0i 2  3
+-123.456789012346+123.456789012346i -123.4567890123456+123.4567890123456i
+123.456789012345679-123.456789012345679i 123.45678901234567890123456789-123.45678901234567890123456789i
+123.45678901234-123.456789i 123.45678901234-123.4567890i
Index: tests/.expect/attributes.x64.txt
===================================================================
--- tests/.expect/attributes.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/attributes.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,387 @@
+signed int _X2laFi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_lai_1;
+    L: __attribute__ ((unused)) ((void)1);
+}
+struct __attribute__ ((unused)) __anonymous0 {
+};
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+}
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+}
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+}
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+    struct __anonymous0 _X4_retS12__anonymous0_1;
+    ((void)_X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1((&_X4_retS12__anonymous0_1), (*_X4_dstS12__anonymous0_1)));
+    return _X4_retS12__anonymous0_1;
+}
+struct __attribute__ ((unused)) Agn1;
+struct __attribute__ ((unused)) Agn2 {
+};
+static inline void _X12_constructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1);
+static inline void _X12_constructorFv_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1);
+static inline void _X11_destructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1);
+static inline struct Agn2 _X16_operator_assignFS4Agn2_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1);
+static inline void _X12_constructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1){
+}
+static inline void _X12_constructorFv_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1){
+}
+static inline void _X11_destructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1){
+}
+static inline struct Agn2 _X16_operator_assignFS4Agn2_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1){
+    struct Agn2 _X4_retS4Agn2_1;
+    ((void)_X12_constructorFv_S4Agn2S4Agn2_autogen___1((&_X4_retS4Agn2_1), (*_X4_dstS4Agn2_1)));
+    return _X4_retS4Agn2_1;
+}
+enum __attribute__ ((unused)) __anonymous1 {
+    _X2E1KM12__anonymous1_1,
+};
+enum __attribute__ ((unused)) Agn3;
+enum __attribute__ ((packed)) Agn3 {
+    _X2E2KM4Agn3_1,
+};
+struct __attribute__ ((unused)) __anonymous2 {
+};
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+}
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+}
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+}
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+    struct __anonymous2 _X4_retS12__anonymous2_1;
+    ((void)_X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1((&_X4_retS12__anonymous2_1), (*_X4_dstS12__anonymous2_1)));
+    return _X4_retS12__anonymous2_1;
+}
+struct __attribute__ ((unused)) Agn4 {
+};
+static inline void _X12_constructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1);
+static inline void _X12_constructorFv_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1);
+static inline void _X11_destructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1);
+static inline struct Agn4 _X16_operator_assignFS4Agn4_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1);
+static inline void _X12_constructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1){
+}
+static inline void _X12_constructorFv_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1){
+}
+static inline void _X11_destructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1){
+}
+static inline struct Agn4 _X16_operator_assignFS4Agn4_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1){
+    struct Agn4 _X4_retS4Agn4_1;
+    ((void)_X12_constructorFv_S4Agn4S4Agn4_autogen___1((&_X4_retS4Agn4_1), (*_X4_dstS4Agn4_1)));
+    return _X4_retS4Agn4_1;
+}
+struct Fdl {
+    __attribute__ ((unused)) signed int _X2f1i_1;
+    __attribute__ ((unused)) signed int _X2f2i_1;
+    __attribute__ ((unused,unused)) signed int _X2f3i_1;
+    __attribute__ ((unused)) signed int _X2f4i_1;
+    __attribute__ ((unused,unused)) signed int _X2f5i_1;
+    __attribute__ ((used,packed)) signed int _X2f6i_1;
+    __attribute__ ((used,unused,unused)) signed int _X2f7i_1;
+    __attribute__ ((used,used,unused)) signed int _X2f8i_1;
+    __attribute__ ((unused,unused)) signed int *_X2f9Pi_1;
+};
+static inline void _X12_constructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1);
+static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1);
+static inline void _X11_destructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1);
+static inline struct Fdl _X16_operator_assignFS3Fdl_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1);
+static inline void _X12_constructorFv_S3Fdli_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1);
+static inline void _X12_constructorFv_S3Fdlii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1);
+static inline void _X12_constructorFv_S3Fdliii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1);
+static inline void _X12_constructorFv_S3Fdliiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1);
+static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1);
+static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1);
+static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1);
+static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1);
+static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused,unused)) signed int *_X2f9Pi_1);
+static inline void _X12_constructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X4_srcS3Fdl_1._X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X4_srcS3Fdl_1._X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X4_srcS3Fdl_1._X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X4_srcS3Fdl_1._X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X4_srcS3Fdl_1._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X4_srcS3Fdl_1._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X4_srcS3Fdl_1._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X4_srcS3Fdl_1._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X4_srcS3Fdl_1._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1) /* ^?{} */);
+}
+static inline struct Fdl _X16_operator_assignFS3Fdl_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1){
+    struct Fdl _X4_retS3Fdl_1;
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X4_srcS3Fdl_1._X2f1i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X4_srcS3Fdl_1._X2f2i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X4_srcS3Fdl_1._X2f3i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X4_srcS3Fdl_1._X2f4i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X4_srcS3Fdl_1._X2f5i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X4_srcS3Fdl_1._X2f6i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X4_srcS3Fdl_1._X2f7i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X4_srcS3Fdl_1._X2f8i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X4_srcS3Fdl_1._X2f9Pi_1));
+    ((void)_X12_constructorFv_S3FdlS3Fdl_autogen___1((&_X4_retS3Fdl_1), (*_X4_dstS3Fdl_1)));
+    return _X4_retS3Fdl_1;
+}
+static inline void _X12_constructorFv_S3Fdli_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdlii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused,unused)) signed int *_X2f9Pi_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X2f9Pi_1) /* ?{} */);
+}
+__attribute__ ((unused)) signed int _X1fFi___1() asm ( "xyz" );
+__attribute__ ((used,used)) const signed int _X3vd1Ki_1;
+__attribute__ ((used,unused)) const signed int _X3vd2Ki_1;
+__attribute__ ((used,used,used,used)) const signed int *_X3vd3PKi_1;
+__attribute__ ((used,used,unused,used,unused)) const signed int *_X3vd4PKi_1;
+__attribute__ ((used,used,used)) const signed int _X3vd5A0Ki_1[((unsigned long int )5)];
+__attribute__ ((used,used,unused,used)) const signed int _X3vd6A0Ki_1[((unsigned long int )5)];
+__attribute__ ((used,used,used,used)) const signed int (*_X3vd7Fi___1)();
+__attribute__ ((used,used,unused,used,used)) const signed int (*_X3vd8Fi___1)();
+__attribute__ ((unused,used)) signed int _X2f1Fi___1();
+__attribute__ ((unused)) signed int _X2f1Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+__attribute__ ((unused,unused,unused,used)) signed int **const _X2f2FPPi___1();
+__attribute__ ((unused,unused,unused)) signed int **const _X2f2FPPi___1(){
+    __attribute__ ((unused)) signed int **const _X10_retval_f2KPPi_1;
+}
+__attribute__ ((unused,used,unused)) signed int (*_X2f3FPA0i_i__1(signed int __anonymous_object0))[];
+__attribute__ ((unused,unused)) signed int (*_X2f3FPA0i_i__1(signed int _X1pi_1))[]{
+    __attribute__ ((unused)) signed int (*_X10_retval_f3PA0i_1)[];
+}
+__attribute__ ((unused,used,unused)) signed int (*_X2f4FFi_i____1())(signed int __anonymous_object1);
+__attribute__ ((unused,unused)) signed int (*_X2f4FFi_i____1())(signed int __anonymous_object2){
+    __attribute__ ((unused)) signed int (*_X10_retval_f4Fi_i__1)(signed int __anonymous_object3);
+}
+signed int _X3vtrFi___1(){
+    __attribute__ ((unused)) signed int _X11_retval_vtri_1;
+    __attribute__ ((unused,unused,used)) signed int _X2t1i_2;
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int **_X2t2PPi_2;
+    __attribute__ ((unused,unused,unused)) signed int _X2t3A0i_2[((unsigned long int )5)];
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int **_X2t4A0PPi_2[((unsigned long int )5)];
+    __attribute__ ((unused,unused,unused)) signed int _X2t5Fi___2();
+    __attribute__ ((unused,unused,unused,unused)) signed int *_X2t6FPi___2();
+}
+signed int _X4ipd1Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int _X1pi_1, __attribute__ ((unused,unused,unused)) signed int _X1qi_1);
+signed int _X4ipd1Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int _X1pi_1, __attribute__ ((unused,unused,unused)) signed int _X1qi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd1i_1;
+}
+signed int _X4ipd2Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1);
+signed int _X4ipd2Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd2i_1;
+}
+signed int _X4ipd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1);
+signed int _X4ipd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd3i_1;
+}
+signed int _X4ipd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X1pFi___1)(), __attribute__ ((unused,unused,unused)) signed int (*_X1qFi___1)());
+signed int _X4ipd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X1pFi___1)(), __attribute__ ((unused,unused,unused)) signed int (*_X1qFi___1)()){
+    __attribute__ ((unused)) signed int _X12_retval_ipd4i_1;
+}
+signed int _X4tpr1Fi_i__1(__attribute__ ((unused,unused,unused)) signed int _X3Fooi_1);
+signed int _X4tpr2Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **_X3FooPPi_1);
+signed int _X4tpr3Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *_X3FooPi_1);
+signed int _X4tpr4Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object4)(__attribute__ ((unused,unused)) signed int __anonymous_object5[((unsigned long int )5)]));
+signed int _X4tpr5Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X3FooFi___1)());
+signed int _X4tpr6Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X3FooFi___1)());
+signed int _X4tpr7Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object6)(__attribute__ ((unused)) signed int (*__anonymous_object7)(__attribute__ ((unused,unused)) signed int __anonymous_object8)));
+signed int _X2adFi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_adi_1;
+    __attribute__ ((used,unused)) signed int _X3ad1i_2;
+    __attribute__ ((unused,unused,unused)) signed int *_X3ad2Pi_2;
+    __attribute__ ((unused,unused,unused)) signed int _X3ad3A0i_2[((unsigned long int )5)];
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int (*_X3ad4PA0i_2)[((unsigned long int )10)];
+    __attribute__ ((unused,unused,unused,unused,used)) signed int _X3ad5i_2;
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int _X3ad6Fi___2();
+    ((void)sizeof(__attribute__ ((unused,unused)) signed int ));
+    ((void)sizeof(__attribute__ ((unused,unused,unused,unused)) signed int **));
+    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int [((unsigned long int )5)]));
+    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int (*)[((unsigned long int )10)]));
+    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int ()));
+    struct __attribute__ ((unused)) __anonymous3 {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2){
+        ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, struct __anonymous3 _X4_srcS12__anonymous3_2){
+        ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X4_srcS12__anonymous3_2._X1ii_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2){
+        ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2) /* ^?{} */);
+    }
+    inline struct __anonymous3 _X16_operator_assignFS12__anonymous3_S12__anonymous3S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, struct __anonymous3 _X4_srcS12__anonymous3_2){
+        struct __anonymous3 _X4_retS12__anonymous3_2;
+        ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X4_srcS12__anonymous3_2._X1ii_2));
+        ((void)_X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___2((&_X4_retS12__anonymous3_2), (*_X4_dstS12__anonymous3_2)));
+        return _X4_retS12__anonymous3_2;
+    }
+    inline void _X12_constructorFv_S12__anonymous3i_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, signed int _X1ii_2){
+        ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X1ii_2) /* ?{} */);
+    }
+    ((void)sizeof(struct __anonymous3 ));
+    enum __attribute__ ((unused)) __anonymous4 {
+        _X1RKM12__anonymous4_2,
+    };
+    inline void _X12_constructorFv_M12__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *_X4_dstM12__anonymous4_2){
+    }
+    inline void _X12_constructorFv_M12__anonymous4M12__anonymous4_intrinsic___2(enum __anonymous4 *_X4_dstM12__anonymous4_2, enum __anonymous4 _X4_srcM12__anonymous4_2){
+        ((void)((*_X4_dstM12__anonymous4_2)=_X4_srcM12__anonymous4_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_M12__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *_X4_dstM12__anonymous4_2){
+    }
+    inline enum __anonymous4 _X16_operator_assignFM12__anonymous4_M12__anonymous4M12__anonymous4_intrinsic___2(enum __anonymous4 *_X4_dstM12__anonymous4_2, enum __anonymous4 _X4_srcM12__anonymous4_2){
+        enum __anonymous4 _X4_retM12__anonymous4_2;
+        ((void)((*_X4_dstM12__anonymous4_2)=_X4_srcM12__anonymous4_2));
+        ((void)(_X4_retM12__anonymous4_2=(*_X4_dstM12__anonymous4_2)) /* ?{} */);
+        return _X4_retM12__anonymous4_2;
+    }
+    ((void)sizeof(enum __anonymous4 ));
+}
+signed int _X4apd1Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object9, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object10);
+signed int _X4apd2Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object11, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object12);
+signed int _X4apd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object13, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object14);
+signed int _X4apd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)());
+signed int _X4apd5Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __anonymous_object18), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object19)(__attribute__ ((unused)) signed int __anonymous_object20));
+signed int _X4apd6Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object22)());
+signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object23)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26));
+struct Vad {
+    __attribute__ ((unused)) signed int __anonymous_object27:4;
+    __attribute__ ((unused)) signed int __anonymous_object28:4;
+    __attribute__ ((unused,unused)) signed int __anonymous_object29:6;
+};
+static inline void _X12_constructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1);
+static inline void _X12_constructorFv_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1);
+static inline void _X11_destructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1);
+static inline struct Vad _X16_operator_assignFS3Vad_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1);
+static inline void _X12_constructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1){
+}
+static inline void _X12_constructorFv_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1){
+}
+static inline void _X11_destructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1){
+}
+static inline struct Vad _X16_operator_assignFS3Vad_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1){
+    struct Vad _X4_retS3Vad_1;
+    ((void)_X12_constructorFv_S3VadS3Vad_autogen___1((&_X4_retS3Vad_1), (*_X4_dstS3Vad_1)));
+    return _X4_retS3Vad_1;
+}
Index: tests/.expect/attributes.x86.txt
===================================================================
--- tests/.expect/attributes.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/attributes.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,387 @@
+signed int _X2laFi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_lai_1;
+    L: __attribute__ ((unused)) ((void)1);
+}
+struct __attribute__ ((unused)) __anonymous0 {
+};
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+}
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+}
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+}
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+    struct __anonymous0 _X4_retS12__anonymous0_1;
+    ((void)_X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1((&_X4_retS12__anonymous0_1), (*_X4_dstS12__anonymous0_1)));
+    return _X4_retS12__anonymous0_1;
+}
+struct __attribute__ ((unused)) Agn1;
+struct __attribute__ ((unused)) Agn2 {
+};
+static inline void _X12_constructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1);
+static inline void _X12_constructorFv_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1);
+static inline void _X11_destructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1);
+static inline struct Agn2 _X16_operator_assignFS4Agn2_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1);
+static inline void _X12_constructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1){
+}
+static inline void _X12_constructorFv_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1){
+}
+static inline void _X11_destructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1){
+}
+static inline struct Agn2 _X16_operator_assignFS4Agn2_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1){
+    struct Agn2 _X4_retS4Agn2_1;
+    ((void)_X12_constructorFv_S4Agn2S4Agn2_autogen___1((&_X4_retS4Agn2_1), (*_X4_dstS4Agn2_1)));
+    return _X4_retS4Agn2_1;
+}
+enum __attribute__ ((unused)) __anonymous1 {
+    _X2E1KM12__anonymous1_1,
+};
+enum __attribute__ ((unused)) Agn3;
+enum __attribute__ ((packed)) Agn3 {
+    _X2E2KM4Agn3_1,
+};
+struct __attribute__ ((unused)) __anonymous2 {
+};
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+}
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+}
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+}
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+    struct __anonymous2 _X4_retS12__anonymous2_1;
+    ((void)_X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1((&_X4_retS12__anonymous2_1), (*_X4_dstS12__anonymous2_1)));
+    return _X4_retS12__anonymous2_1;
+}
+struct __attribute__ ((unused)) Agn4 {
+};
+static inline void _X12_constructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1);
+static inline void _X12_constructorFv_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1);
+static inline void _X11_destructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1);
+static inline struct Agn4 _X16_operator_assignFS4Agn4_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1);
+static inline void _X12_constructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1){
+}
+static inline void _X12_constructorFv_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1){
+}
+static inline void _X11_destructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1){
+}
+static inline struct Agn4 _X16_operator_assignFS4Agn4_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1){
+    struct Agn4 _X4_retS4Agn4_1;
+    ((void)_X12_constructorFv_S4Agn4S4Agn4_autogen___1((&_X4_retS4Agn4_1), (*_X4_dstS4Agn4_1)));
+    return _X4_retS4Agn4_1;
+}
+struct Fdl {
+    __attribute__ ((unused)) signed int _X2f1i_1;
+    __attribute__ ((unused)) signed int _X2f2i_1;
+    __attribute__ ((unused,unused)) signed int _X2f3i_1;
+    __attribute__ ((unused)) signed int _X2f4i_1;
+    __attribute__ ((unused,unused)) signed int _X2f5i_1;
+    __attribute__ ((used,packed)) signed int _X2f6i_1;
+    __attribute__ ((used,unused,unused)) signed int _X2f7i_1;
+    __attribute__ ((used,used,unused)) signed int _X2f8i_1;
+    __attribute__ ((unused,unused)) signed int *_X2f9Pi_1;
+};
+static inline void _X12_constructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1);
+static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1);
+static inline void _X11_destructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1);
+static inline struct Fdl _X16_operator_assignFS3Fdl_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1);
+static inline void _X12_constructorFv_S3Fdli_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1);
+static inline void _X12_constructorFv_S3Fdlii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1);
+static inline void _X12_constructorFv_S3Fdliii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1);
+static inline void _X12_constructorFv_S3Fdliiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1);
+static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1);
+static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1);
+static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1);
+static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1);
+static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused,unused)) signed int *_X2f9Pi_1);
+static inline void _X12_constructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X4_srcS3Fdl_1._X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X4_srcS3Fdl_1._X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X4_srcS3Fdl_1._X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X4_srcS3Fdl_1._X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X4_srcS3Fdl_1._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X4_srcS3Fdl_1._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X4_srcS3Fdl_1._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X4_srcS3Fdl_1._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X4_srcS3Fdl_1._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ^?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1) /* ^?{} */);
+}
+static inline struct Fdl _X16_operator_assignFS3Fdl_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1){
+    struct Fdl _X4_retS3Fdl_1;
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X4_srcS3Fdl_1._X2f1i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X4_srcS3Fdl_1._X2f2i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X4_srcS3Fdl_1._X2f3i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X4_srcS3Fdl_1._X2f4i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X4_srcS3Fdl_1._X2f5i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X4_srcS3Fdl_1._X2f6i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X4_srcS3Fdl_1._X2f7i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X4_srcS3Fdl_1._X2f8i_1));
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X4_srcS3Fdl_1._X2f9Pi_1));
+    ((void)_X12_constructorFv_S3FdlS3Fdl_autogen___1((&_X4_retS3Fdl_1), (*_X4_dstS3Fdl_1)));
+    return _X4_retS3Fdl_1;
+}
+static inline void _X12_constructorFv_S3Fdli_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdlii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused,unused)) signed int *_X2f9Pi_1){
+    ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
+    ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X2f9Pi_1) /* ?{} */);
+}
+__attribute__ ((unused)) signed int _X1fFi___1() asm ( "xyz" );
+__attribute__ ((used,used)) const signed int _X3vd1Ki_1;
+__attribute__ ((used,unused)) const signed int _X3vd2Ki_1;
+__attribute__ ((used,used,used,used)) const signed int *_X3vd3PKi_1;
+__attribute__ ((used,used,unused,used,unused)) const signed int *_X3vd4PKi_1;
+__attribute__ ((used,used,used)) const signed int _X3vd5A0Ki_1[((unsigned int )5)];
+__attribute__ ((used,used,unused,used)) const signed int _X3vd6A0Ki_1[((unsigned int )5)];
+__attribute__ ((used,used,used,used)) const signed int (*_X3vd7Fi___1)();
+__attribute__ ((used,used,unused,used,used)) const signed int (*_X3vd8Fi___1)();
+__attribute__ ((unused,used)) signed int _X2f1Fi___1();
+__attribute__ ((unused)) signed int _X2f1Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+__attribute__ ((unused,unused,unused,used)) signed int **const _X2f2FPPi___1();
+__attribute__ ((unused,unused,unused)) signed int **const _X2f2FPPi___1(){
+    __attribute__ ((unused)) signed int **const _X10_retval_f2KPPi_1;
+}
+__attribute__ ((unused,used,unused)) signed int (*_X2f3FPA0i_i__1(signed int __anonymous_object0))[];
+__attribute__ ((unused,unused)) signed int (*_X2f3FPA0i_i__1(signed int _X1pi_1))[]{
+    __attribute__ ((unused)) signed int (*_X10_retval_f3PA0i_1)[];
+}
+__attribute__ ((unused,used,unused)) signed int (*_X2f4FFi_i____1())(signed int __anonymous_object1);
+__attribute__ ((unused,unused)) signed int (*_X2f4FFi_i____1())(signed int __anonymous_object2){
+    __attribute__ ((unused)) signed int (*_X10_retval_f4Fi_i__1)(signed int __anonymous_object3);
+}
+signed int _X3vtrFi___1(){
+    __attribute__ ((unused)) signed int _X11_retval_vtri_1;
+    __attribute__ ((unused,unused,used)) signed int _X2t1i_2;
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int **_X2t2PPi_2;
+    __attribute__ ((unused,unused,unused)) signed int _X2t3A0i_2[((unsigned int )5)];
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int **_X2t4A0PPi_2[((unsigned int )5)];
+    __attribute__ ((unused,unused,unused)) signed int _X2t5Fi___2();
+    __attribute__ ((unused,unused,unused,unused)) signed int *_X2t6FPi___2();
+}
+signed int _X4ipd1Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int _X1pi_1, __attribute__ ((unused,unused,unused)) signed int _X1qi_1);
+signed int _X4ipd1Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int _X1pi_1, __attribute__ ((unused,unused,unused)) signed int _X1qi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd1i_1;
+}
+signed int _X4ipd2Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1);
+signed int _X4ipd2Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd2i_1;
+}
+signed int _X4ipd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1);
+signed int _X4ipd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd3i_1;
+}
+signed int _X4ipd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X1pFi___1)(), __attribute__ ((unused,unused,unused)) signed int (*_X1qFi___1)());
+signed int _X4ipd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X1pFi___1)(), __attribute__ ((unused,unused,unused)) signed int (*_X1qFi___1)()){
+    __attribute__ ((unused)) signed int _X12_retval_ipd4i_1;
+}
+signed int _X4tpr1Fi_i__1(__attribute__ ((unused,unused,unused)) signed int _X3Fooi_1);
+signed int _X4tpr2Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **_X3FooPPi_1);
+signed int _X4tpr3Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *_X3FooPi_1);
+signed int _X4tpr4Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object4)(__attribute__ ((unused,unused)) signed int __anonymous_object5[((unsigned int )5)]));
+signed int _X4tpr5Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X3FooFi___1)());
+signed int _X4tpr6Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X3FooFi___1)());
+signed int _X4tpr7Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object6)(__attribute__ ((unused)) signed int (*__anonymous_object7)(__attribute__ ((unused,unused)) signed int __anonymous_object8)));
+signed int _X2adFi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_adi_1;
+    __attribute__ ((used,unused)) signed int _X3ad1i_2;
+    __attribute__ ((unused,unused,unused)) signed int *_X3ad2Pi_2;
+    __attribute__ ((unused,unused,unused)) signed int _X3ad3A0i_2[((unsigned int )5)];
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int (*_X3ad4PA0i_2)[((unsigned int )10)];
+    __attribute__ ((unused,unused,unused,unused,used)) signed int _X3ad5i_2;
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int _X3ad6Fi___2();
+    ((void)sizeof(__attribute__ ((unused,unused)) signed int ));
+    ((void)sizeof(__attribute__ ((unused,unused,unused,unused)) signed int **));
+    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int [((unsigned int )5)]));
+    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int (*)[((unsigned int )10)]));
+    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int ()));
+    struct __attribute__ ((unused)) __anonymous3 {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2){
+        ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, struct __anonymous3 _X4_srcS12__anonymous3_2){
+        ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X4_srcS12__anonymous3_2._X1ii_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2){
+        ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2) /* ^?{} */);
+    }
+    inline struct __anonymous3 _X16_operator_assignFS12__anonymous3_S12__anonymous3S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, struct __anonymous3 _X4_srcS12__anonymous3_2){
+        struct __anonymous3 _X4_retS12__anonymous3_2;
+        ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X4_srcS12__anonymous3_2._X1ii_2));
+        ((void)_X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___2((&_X4_retS12__anonymous3_2), (*_X4_dstS12__anonymous3_2)));
+        return _X4_retS12__anonymous3_2;
+    }
+    inline void _X12_constructorFv_S12__anonymous3i_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, signed int _X1ii_2){
+        ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X1ii_2) /* ?{} */);
+    }
+    ((void)sizeof(struct __anonymous3 ));
+    enum __attribute__ ((unused)) __anonymous4 {
+        _X1RKM12__anonymous4_2,
+    };
+    inline void _X12_constructorFv_M12__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *_X4_dstM12__anonymous4_2){
+    }
+    inline void _X12_constructorFv_M12__anonymous4M12__anonymous4_intrinsic___2(enum __anonymous4 *_X4_dstM12__anonymous4_2, enum __anonymous4 _X4_srcM12__anonymous4_2){
+        ((void)((*_X4_dstM12__anonymous4_2)=_X4_srcM12__anonymous4_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_M12__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *_X4_dstM12__anonymous4_2){
+    }
+    inline enum __anonymous4 _X16_operator_assignFM12__anonymous4_M12__anonymous4M12__anonymous4_intrinsic___2(enum __anonymous4 *_X4_dstM12__anonymous4_2, enum __anonymous4 _X4_srcM12__anonymous4_2){
+        enum __anonymous4 _X4_retM12__anonymous4_2;
+        ((void)((*_X4_dstM12__anonymous4_2)=_X4_srcM12__anonymous4_2));
+        ((void)(_X4_retM12__anonymous4_2=(*_X4_dstM12__anonymous4_2)) /* ?{} */);
+        return _X4_retM12__anonymous4_2;
+    }
+    ((void)sizeof(enum __anonymous4 ));
+}
+signed int _X4apd1Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object9, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object10);
+signed int _X4apd2Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object11, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object12);
+signed int _X4apd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object13, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object14);
+signed int _X4apd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)());
+signed int _X4apd5Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __anonymous_object18), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object19)(__attribute__ ((unused)) signed int __anonymous_object20));
+signed int _X4apd6Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object22)());
+signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object23)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26));
+struct Vad {
+    __attribute__ ((unused)) signed int __anonymous_object27:4;
+    __attribute__ ((unused)) signed int __anonymous_object28:4;
+    __attribute__ ((unused,unused)) signed int __anonymous_object29:6;
+};
+static inline void _X12_constructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1);
+static inline void _X12_constructorFv_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1);
+static inline void _X11_destructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1);
+static inline struct Vad _X16_operator_assignFS3Vad_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1);
+static inline void _X12_constructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1){
+}
+static inline void _X12_constructorFv_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1){
+}
+static inline void _X11_destructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1){
+}
+static inline struct Vad _X16_operator_assignFS3Vad_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1){
+    struct Vad _X4_retS3Vad_1;
+    ((void)_X12_constructorFv_S3VadS3Vad_autogen___1((&_X4_retS3Vad_1), (*_X4_dstS3Vad_1)));
+    return _X4_retS3Vad_1;
+}
Index: tests/.expect/avl_test.txt
===================================================================
--- tests/.expect/avl_test.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/avl_test.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,3 @@
+3 13 0
+foo bar baz
+world bar cheese
Index: tests/.expect/castError.txt
===================================================================
--- tests/.expect/castError.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/castError.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,36 @@
+castError.c:7:1 error: Cannot choose between 3 alternatives for expression
+Cast of:
+  Name: f
+... to:
+  charAlternatives are:
+Cost ( 1, 0, 0, 0 ): Cast of:
+     Variable Expression: f: function
+       accepting unspecified arguments
+     ... returning nothing 
+
+   ... to:
+     char
+ (types:
+   char
+ )
+ Environment: 
+
+Cost ( 1, 0, 0, 0 ): Cast of:
+     Variable Expression: f: double
+   ... to:
+     char
+ (types:
+   char
+ )
+ Environment: 
+
+Cost ( 1, 0, 0, 0 ): Cast of:
+     Variable Expression: f: signed int
+   ... to:
+     char
+ (types:
+   char
+ )
+ Environment: 
+
+
Index: tests/.expect/completeTypeError.txt
===================================================================
--- tests/.expect/completeTypeError.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/completeTypeError.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,45 @@
+completeTypeError.c:33:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: *?
+...to: 
+  Name: v
+
+completeTypeError.c:34:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: *?
+...to: 
+  Name: y
+
+completeTypeError.c:35:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: foo
+...to: 
+  Name: v
+
+completeTypeError.c:36:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: baz
+...to: 
+  Name: v
+
+completeTypeError.c:37:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: quux
+...to: 
+  Name: v
+
+completeTypeError.c:58:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: baz
+...to: 
+  Name: y
+
+completeTypeError.c:59:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: quux
+...to: 
+  Name: y
+
+completeTypeError.c:60:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: *?
+...to: 
+  Name: y
+
+completeTypeError.c:72:1 error: No reasonable alternatives for expression Applying untyped: 
+  Name: baz
+...to: 
+  Name: z
+
Index: tests/.expect/complex.txt
===================================================================
--- tests/.expect/complex.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/complex.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,4 @@
+x:3+2i y:4+5i z:7+7i
+x:3+2i y:4+5i z:7+7i
+x:2.1+1.3i y:3.2+4.5i z:5.3+5.8i
+x:2.1+1.3i y:3.2+4.5i z:5.3+5.8i
Index: tests/.expect/counter.txt
===================================================================
--- tests/.expect/counter.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/counter.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,2 @@
+45
+42
Index: tests/.expect/declarationErrors.txt
===================================================================
--- tests/.expect/declarationErrors.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/declarationErrors.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,70 @@
+declarationErrors.c:16:1 error: duplicate static in declaration of x1: static const volatile short int 
+
+declarationErrors.c:17:1 error: conflicting extern & static in declaration of x2: extern const volatile short int 
+
+declarationErrors.c:18:1 error: conflicting extern & auto, conflicting extern & static, conflicting extern & static, duplicate extern in declaration of x3: extern const volatile short int 
+
+declarationErrors.c:19:1 error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous0
+  with members 
+    i: int 
+   with body 
+
+
+declarationErrors.c:20:1 error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous1
+  with members 
+    i: int 
+   with body 
+
+
+declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile Int
+
+declarationErrors.c:24:1 error: duplicate const in declaration of f01: static inline function
+  with no parameters 
+  returning const volatile int 
+
+
+declarationErrors.c:25:1 error: duplicate volatile in declaration of f02: static inline function
+  with no parameters 
+  returning const volatile int 
+
+
+declarationErrors.c:26:1 error: duplicate const in declaration of f03: static inline function
+  with no parameters 
+  returning const volatile int 
+
+
+declarationErrors.c:27:1 error: duplicate volatile in declaration of f04: static inline function
+  with no parameters 
+  returning const volatile int 
+
+
+declarationErrors.c:28:1 error: duplicate const in declaration of f05: static inline function
+  with no parameters 
+  returning const volatile int 
+
+
+declarationErrors.c:29:1 error: duplicate volatile in declaration of f06: static inline function
+  with no parameters 
+  returning const volatile int 
+
+
+declarationErrors.c:30:1 error: duplicate const in declaration of f07: static inline function
+  with no parameters 
+  returning const volatile int 
+
+
+declarationErrors.c:31:1 error: duplicate const, duplicate volatile in declaration of f08: static inline function
+  with no parameters 
+  returning const volatile int 
+
+
+declarationErrors.c:33:1 error: duplicate const, duplicate volatile in declaration of f09: static inline function
+  with no parameters 
+  returning const volatile int 
+
+
+declarationErrors.c:34:1 error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function
+  with no parameters 
+  returning const restrict volatile _Atomic int 
+
+
Index: tests/.expect/declarationSpecifier.x64.txt
===================================================================
--- tests/.expect/declarationSpecifier.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/declarationSpecifier.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,704 @@
+volatile const signed short int _X2x1KVs_1;
+static volatile const signed short int _X2x2KVs_1;
+static volatile const signed short int _X2x3KVs_1;
+static volatile const signed short int _X2x4KVs_1;
+static volatile const signed short int _X2x5KVs_1;
+static volatile const signed short int _X2x6KVs_1;
+static volatile const signed short int _X2x7KVs_1;
+static volatile const signed short int _X2x8KVs_1;
+struct __anonymous0 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0i_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+    ((void)((*_X4_dstS12__anonymous0_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+    ((void)((*_X4_dstS12__anonymous0_1)._X1ii_1=_X4_srcS12__anonymous0_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+    ((void)((*_X4_dstS12__anonymous0_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+    struct __anonymous0 _X4_retS12__anonymous0_1;
+    ((void)((*_X4_dstS12__anonymous0_1)._X1ii_1=_X4_srcS12__anonymous0_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1((&_X4_retS12__anonymous0_1), (*_X4_dstS12__anonymous0_1)));
+    return _X4_retS12__anonymous0_1;
+}
+static inline void _X12_constructorFv_S12__anonymous0i_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous0_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+volatile const struct __anonymous0 _X3x10KVS12__anonymous0_1;
+struct __anonymous1 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1);
+static inline void _X12_constructorFv_S12__anonymous1S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, struct __anonymous1 _X4_srcS12__anonymous1_1);
+static inline void _X11_destructorFv_S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1);
+static inline struct __anonymous1 _X16_operator_assignFS12__anonymous1_S12__anonymous1S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, struct __anonymous1 _X4_srcS12__anonymous1_1);
+static inline void _X12_constructorFv_S12__anonymous1i_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1){
+    ((void)((*_X4_dstS12__anonymous1_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous1S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, struct __anonymous1 _X4_srcS12__anonymous1_1){
+    ((void)((*_X4_dstS12__anonymous1_1)._X1ii_1=_X4_srcS12__anonymous1_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1){
+    ((void)((*_X4_dstS12__anonymous1_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous1 _X16_operator_assignFS12__anonymous1_S12__anonymous1S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, struct __anonymous1 _X4_srcS12__anonymous1_1){
+    struct __anonymous1 _X4_retS12__anonymous1_1;
+    ((void)((*_X4_dstS12__anonymous1_1)._X1ii_1=_X4_srcS12__anonymous1_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous1S12__anonymous1_autogen___1((&_X4_retS12__anonymous1_1), (*_X4_dstS12__anonymous1_1)));
+    return _X4_retS12__anonymous1_1;
+}
+static inline void _X12_constructorFv_S12__anonymous1i_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous1_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+volatile const struct __anonymous1 _X3x11KVS12__anonymous1_1;
+struct __anonymous2 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2i_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+    ((void)((*_X4_dstS12__anonymous2_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+    ((void)((*_X4_dstS12__anonymous2_1)._X1ii_1=_X4_srcS12__anonymous2_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+    ((void)((*_X4_dstS12__anonymous2_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+    struct __anonymous2 _X4_retS12__anonymous2_1;
+    ((void)((*_X4_dstS12__anonymous2_1)._X1ii_1=_X4_srcS12__anonymous2_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1((&_X4_retS12__anonymous2_1), (*_X4_dstS12__anonymous2_1)));
+    return _X4_retS12__anonymous2_1;
+}
+static inline void _X12_constructorFv_S12__anonymous2i_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous2_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+volatile const struct __anonymous2 _X3x12KVS12__anonymous2_1;
+struct __anonymous3 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1);
+static inline void _X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, struct __anonymous3 _X4_srcS12__anonymous3_1);
+static inline void _X11_destructorFv_S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1);
+static inline struct __anonymous3 _X16_operator_assignFS12__anonymous3_S12__anonymous3S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, struct __anonymous3 _X4_srcS12__anonymous3_1);
+static inline void _X12_constructorFv_S12__anonymous3i_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1){
+    ((void)((*_X4_dstS12__anonymous3_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, struct __anonymous3 _X4_srcS12__anonymous3_1){
+    ((void)((*_X4_dstS12__anonymous3_1)._X1ii_1=_X4_srcS12__anonymous3_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1){
+    ((void)((*_X4_dstS12__anonymous3_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous3 _X16_operator_assignFS12__anonymous3_S12__anonymous3S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, struct __anonymous3 _X4_srcS12__anonymous3_1){
+    struct __anonymous3 _X4_retS12__anonymous3_1;
+    ((void)((*_X4_dstS12__anonymous3_1)._X1ii_1=_X4_srcS12__anonymous3_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___1((&_X4_retS12__anonymous3_1), (*_X4_dstS12__anonymous3_1)));
+    return _X4_retS12__anonymous3_1;
+}
+static inline void _X12_constructorFv_S12__anonymous3i_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous3_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static volatile const struct __anonymous3 _X3x13KVS12__anonymous3_1;
+struct __anonymous4 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1);
+static inline void _X12_constructorFv_S12__anonymous4S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, struct __anonymous4 _X4_srcS12__anonymous4_1);
+static inline void _X11_destructorFv_S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1);
+static inline struct __anonymous4 _X16_operator_assignFS12__anonymous4_S12__anonymous4S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, struct __anonymous4 _X4_srcS12__anonymous4_1);
+static inline void _X12_constructorFv_S12__anonymous4i_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1){
+    ((void)((*_X4_dstS12__anonymous4_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous4S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, struct __anonymous4 _X4_srcS12__anonymous4_1){
+    ((void)((*_X4_dstS12__anonymous4_1)._X1ii_1=_X4_srcS12__anonymous4_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1){
+    ((void)((*_X4_dstS12__anonymous4_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous4 _X16_operator_assignFS12__anonymous4_S12__anonymous4S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, struct __anonymous4 _X4_srcS12__anonymous4_1){
+    struct __anonymous4 _X4_retS12__anonymous4_1;
+    ((void)((*_X4_dstS12__anonymous4_1)._X1ii_1=_X4_srcS12__anonymous4_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous4S12__anonymous4_autogen___1((&_X4_retS12__anonymous4_1), (*_X4_dstS12__anonymous4_1)));
+    return _X4_retS12__anonymous4_1;
+}
+static inline void _X12_constructorFv_S12__anonymous4i_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous4_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static volatile const struct __anonymous4 _X3x14KVS12__anonymous4_1;
+struct __anonymous5 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1);
+static inline void _X12_constructorFv_S12__anonymous5S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, struct __anonymous5 _X4_srcS12__anonymous5_1);
+static inline void _X11_destructorFv_S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1);
+static inline struct __anonymous5 _X16_operator_assignFS12__anonymous5_S12__anonymous5S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, struct __anonymous5 _X4_srcS12__anonymous5_1);
+static inline void _X12_constructorFv_S12__anonymous5i_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1){
+    ((void)((*_X4_dstS12__anonymous5_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous5S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, struct __anonymous5 _X4_srcS12__anonymous5_1){
+    ((void)((*_X4_dstS12__anonymous5_1)._X1ii_1=_X4_srcS12__anonymous5_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1){
+    ((void)((*_X4_dstS12__anonymous5_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous5 _X16_operator_assignFS12__anonymous5_S12__anonymous5S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, struct __anonymous5 _X4_srcS12__anonymous5_1){
+    struct __anonymous5 _X4_retS12__anonymous5_1;
+    ((void)((*_X4_dstS12__anonymous5_1)._X1ii_1=_X4_srcS12__anonymous5_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous5S12__anonymous5_autogen___1((&_X4_retS12__anonymous5_1), (*_X4_dstS12__anonymous5_1)));
+    return _X4_retS12__anonymous5_1;
+}
+static inline void _X12_constructorFv_S12__anonymous5i_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous5_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static volatile const struct __anonymous5 _X3x15KVS12__anonymous5_1;
+struct __anonymous6 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1);
+static inline void _X12_constructorFv_S12__anonymous6S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, struct __anonymous6 _X4_srcS12__anonymous6_1);
+static inline void _X11_destructorFv_S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1);
+static inline struct __anonymous6 _X16_operator_assignFS12__anonymous6_S12__anonymous6S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, struct __anonymous6 _X4_srcS12__anonymous6_1);
+static inline void _X12_constructorFv_S12__anonymous6i_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1){
+    ((void)((*_X4_dstS12__anonymous6_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous6S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, struct __anonymous6 _X4_srcS12__anonymous6_1){
+    ((void)((*_X4_dstS12__anonymous6_1)._X1ii_1=_X4_srcS12__anonymous6_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1){
+    ((void)((*_X4_dstS12__anonymous6_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous6 _X16_operator_assignFS12__anonymous6_S12__anonymous6S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, struct __anonymous6 _X4_srcS12__anonymous6_1){
+    struct __anonymous6 _X4_retS12__anonymous6_1;
+    ((void)((*_X4_dstS12__anonymous6_1)._X1ii_1=_X4_srcS12__anonymous6_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous6S12__anonymous6_autogen___1((&_X4_retS12__anonymous6_1), (*_X4_dstS12__anonymous6_1)));
+    return _X4_retS12__anonymous6_1;
+}
+static inline void _X12_constructorFv_S12__anonymous6i_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous6_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static volatile const struct __anonymous6 _X3x16KVS12__anonymous6_1;
+struct __anonymous7 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
+static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
+static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
+static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
+static inline void _X12_constructorFv_S12__anonymous7i_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
+    ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
+    ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X4_srcS12__anonymous7_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
+    ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
+    struct __anonymous7 _X4_retS12__anonymous7_1;
+    ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X4_srcS12__anonymous7_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1((&_X4_retS12__anonymous7_1), (*_X4_dstS12__anonymous7_1)));
+    return _X4_retS12__anonymous7_1;
+}
+static inline void _X12_constructorFv_S12__anonymous7i_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static volatile const struct __anonymous7 _X3x17KVS12__anonymous7_1;
+volatile const signed short int _X3x20KVs_1;
+static volatile const signed short int _X3x21KVs_1;
+static volatile const signed short int _X3x22KVs_1;
+static volatile const signed short int _X3x23KVs_1;
+static volatile const signed short int _X3x24KVs_1;
+static volatile const signed short int _X3x25KVs_1;
+static volatile const signed short int _X3x26KVs_1;
+static volatile const signed short int _X3x27KVs_1;
+struct __anonymous8 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1);
+static inline void _X12_constructorFv_S12__anonymous8S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, struct __anonymous8 _X4_srcS12__anonymous8_1);
+static inline void _X11_destructorFv_S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1);
+static inline struct __anonymous8 _X16_operator_assignFS12__anonymous8_S12__anonymous8S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, struct __anonymous8 _X4_srcS12__anonymous8_1);
+static inline void _X12_constructorFv_S12__anonymous8s_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1){
+    ((void)((*_X4_dstS12__anonymous8_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous8S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, struct __anonymous8 _X4_srcS12__anonymous8_1){
+    ((void)((*_X4_dstS12__anonymous8_1)._X1is_1=_X4_srcS12__anonymous8_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1){
+    ((void)((*_X4_dstS12__anonymous8_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous8 _X16_operator_assignFS12__anonymous8_S12__anonymous8S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, struct __anonymous8 _X4_srcS12__anonymous8_1){
+    struct __anonymous8 _X4_retS12__anonymous8_1;
+    ((void)((*_X4_dstS12__anonymous8_1)._X1is_1=_X4_srcS12__anonymous8_1._X1is_1));
+    ((void)_X12_constructorFv_S12__anonymous8S12__anonymous8_autogen___1((&_X4_retS12__anonymous8_1), (*_X4_dstS12__anonymous8_1)));
+    return _X4_retS12__anonymous8_1;
+}
+static inline void _X12_constructorFv_S12__anonymous8s_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS12__anonymous8_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+volatile const struct __anonymous8 _X3x29KVS12__anonymous8_1;
+struct __anonymous9 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1);
+static inline void _X12_constructorFv_S12__anonymous9S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, struct __anonymous9 _X4_srcS12__anonymous9_1);
+static inline void _X11_destructorFv_S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1);
+static inline struct __anonymous9 _X16_operator_assignFS12__anonymous9_S12__anonymous9S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, struct __anonymous9 _X4_srcS12__anonymous9_1);
+static inline void _X12_constructorFv_S12__anonymous9s_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1){
+    ((void)((*_X4_dstS12__anonymous9_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous9S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, struct __anonymous9 _X4_srcS12__anonymous9_1){
+    ((void)((*_X4_dstS12__anonymous9_1)._X1is_1=_X4_srcS12__anonymous9_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1){
+    ((void)((*_X4_dstS12__anonymous9_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous9 _X16_operator_assignFS12__anonymous9_S12__anonymous9S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, struct __anonymous9 _X4_srcS12__anonymous9_1){
+    struct __anonymous9 _X4_retS12__anonymous9_1;
+    ((void)((*_X4_dstS12__anonymous9_1)._X1is_1=_X4_srcS12__anonymous9_1._X1is_1));
+    ((void)_X12_constructorFv_S12__anonymous9S12__anonymous9_autogen___1((&_X4_retS12__anonymous9_1), (*_X4_dstS12__anonymous9_1)));
+    return _X4_retS12__anonymous9_1;
+}
+static inline void _X12_constructorFv_S12__anonymous9s_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS12__anonymous9_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+volatile const struct __anonymous9 _X3x30KVS12__anonymous9_1;
+struct __anonymous10 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1);
+static inline void _X12_constructorFv_S13__anonymous10S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, struct __anonymous10 _X4_srcS13__anonymous10_1);
+static inline void _X11_destructorFv_S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1);
+static inline struct __anonymous10 _X16_operator_assignFS13__anonymous10_S13__anonymous10S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, struct __anonymous10 _X4_srcS13__anonymous10_1);
+static inline void _X12_constructorFv_S13__anonymous10s_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1){
+    ((void)((*_X4_dstS13__anonymous10_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous10S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, struct __anonymous10 _X4_srcS13__anonymous10_1){
+    ((void)((*_X4_dstS13__anonymous10_1)._X1is_1=_X4_srcS13__anonymous10_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1){
+    ((void)((*_X4_dstS13__anonymous10_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous10 _X16_operator_assignFS13__anonymous10_S13__anonymous10S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, struct __anonymous10 _X4_srcS13__anonymous10_1){
+    struct __anonymous10 _X4_retS13__anonymous10_1;
+    ((void)((*_X4_dstS13__anonymous10_1)._X1is_1=_X4_srcS13__anonymous10_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous10S13__anonymous10_autogen___1((&_X4_retS13__anonymous10_1), (*_X4_dstS13__anonymous10_1)));
+    return _X4_retS13__anonymous10_1;
+}
+static inline void _X12_constructorFv_S13__anonymous10s_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous10_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+volatile const struct __anonymous10 _X3x31KVS13__anonymous10_1;
+struct __anonymous11 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1);
+static inline void _X12_constructorFv_S13__anonymous11S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, struct __anonymous11 _X4_srcS13__anonymous11_1);
+static inline void _X11_destructorFv_S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1);
+static inline struct __anonymous11 _X16_operator_assignFS13__anonymous11_S13__anonymous11S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, struct __anonymous11 _X4_srcS13__anonymous11_1);
+static inline void _X12_constructorFv_S13__anonymous11s_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1){
+    ((void)((*_X4_dstS13__anonymous11_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous11S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, struct __anonymous11 _X4_srcS13__anonymous11_1){
+    ((void)((*_X4_dstS13__anonymous11_1)._X1is_1=_X4_srcS13__anonymous11_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1){
+    ((void)((*_X4_dstS13__anonymous11_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous11 _X16_operator_assignFS13__anonymous11_S13__anonymous11S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, struct __anonymous11 _X4_srcS13__anonymous11_1){
+    struct __anonymous11 _X4_retS13__anonymous11_1;
+    ((void)((*_X4_dstS13__anonymous11_1)._X1is_1=_X4_srcS13__anonymous11_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous11S13__anonymous11_autogen___1((&_X4_retS13__anonymous11_1), (*_X4_dstS13__anonymous11_1)));
+    return _X4_retS13__anonymous11_1;
+}
+static inline void _X12_constructorFv_S13__anonymous11s_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous11_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+static volatile const struct __anonymous11 _X3x32KVS13__anonymous11_1;
+struct __anonymous12 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1);
+static inline void _X12_constructorFv_S13__anonymous12S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, struct __anonymous12 _X4_srcS13__anonymous12_1);
+static inline void _X11_destructorFv_S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1);
+static inline struct __anonymous12 _X16_operator_assignFS13__anonymous12_S13__anonymous12S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, struct __anonymous12 _X4_srcS13__anonymous12_1);
+static inline void _X12_constructorFv_S13__anonymous12s_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1){
+    ((void)((*_X4_dstS13__anonymous12_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous12S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, struct __anonymous12 _X4_srcS13__anonymous12_1){
+    ((void)((*_X4_dstS13__anonymous12_1)._X1is_1=_X4_srcS13__anonymous12_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1){
+    ((void)((*_X4_dstS13__anonymous12_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous12 _X16_operator_assignFS13__anonymous12_S13__anonymous12S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, struct __anonymous12 _X4_srcS13__anonymous12_1){
+    struct __anonymous12 _X4_retS13__anonymous12_1;
+    ((void)((*_X4_dstS13__anonymous12_1)._X1is_1=_X4_srcS13__anonymous12_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous12S13__anonymous12_autogen___1((&_X4_retS13__anonymous12_1), (*_X4_dstS13__anonymous12_1)));
+    return _X4_retS13__anonymous12_1;
+}
+static inline void _X12_constructorFv_S13__anonymous12s_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous12_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+static volatile const struct __anonymous12 _X3x33KVS13__anonymous12_1;
+struct __anonymous13 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1);
+static inline void _X12_constructorFv_S13__anonymous13S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, struct __anonymous13 _X4_srcS13__anonymous13_1);
+static inline void _X11_destructorFv_S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1);
+static inline struct __anonymous13 _X16_operator_assignFS13__anonymous13_S13__anonymous13S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, struct __anonymous13 _X4_srcS13__anonymous13_1);
+static inline void _X12_constructorFv_S13__anonymous13s_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1){
+    ((void)((*_X4_dstS13__anonymous13_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous13S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, struct __anonymous13 _X4_srcS13__anonymous13_1){
+    ((void)((*_X4_dstS13__anonymous13_1)._X1is_1=_X4_srcS13__anonymous13_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1){
+    ((void)((*_X4_dstS13__anonymous13_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous13 _X16_operator_assignFS13__anonymous13_S13__anonymous13S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, struct __anonymous13 _X4_srcS13__anonymous13_1){
+    struct __anonymous13 _X4_retS13__anonymous13_1;
+    ((void)((*_X4_dstS13__anonymous13_1)._X1is_1=_X4_srcS13__anonymous13_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous13S13__anonymous13_autogen___1((&_X4_retS13__anonymous13_1), (*_X4_dstS13__anonymous13_1)));
+    return _X4_retS13__anonymous13_1;
+}
+static inline void _X12_constructorFv_S13__anonymous13s_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous13_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+static volatile const struct __anonymous13 _X3x34KVS13__anonymous13_1;
+struct __anonymous14 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
+static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
+static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
+static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
+static inline void _X12_constructorFv_S13__anonymous14s_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
+    ((void)((*_X4_dstS13__anonymous14_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
+    ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X4_srcS13__anonymous14_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
+    ((void)((*_X4_dstS13__anonymous14_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
+    struct __anonymous14 _X4_retS13__anonymous14_1;
+    ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X4_srcS13__anonymous14_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1((&_X4_retS13__anonymous14_1), (*_X4_dstS13__anonymous14_1)));
+    return _X4_retS13__anonymous14_1;
+}
+static inline void _X12_constructorFv_S13__anonymous14s_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+static volatile const struct __anonymous14 _X3x35KVS13__anonymous14_1;
+struct __anonymous15 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
+static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
+static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
+static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
+static inline void _X12_constructorFv_S13__anonymous15s_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
+    ((void)((*_X4_dstS13__anonymous15_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
+    ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X4_srcS13__anonymous15_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
+    ((void)((*_X4_dstS13__anonymous15_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
+    struct __anonymous15 _X4_retS13__anonymous15_1;
+    ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X4_srcS13__anonymous15_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1((&_X4_retS13__anonymous15_1), (*_X4_dstS13__anonymous15_1)));
+    return _X4_retS13__anonymous15_1;
+}
+static inline void _X12_constructorFv_S13__anonymous15s_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+static volatile const struct __anonymous15 _X3x36KVS13__anonymous15_1;
+static inline volatile const signed int _X3f11Fi___1();
+static inline volatile const signed int _X3f12Fi___1();
+static inline volatile const signed int _X3f13Fi___1();
+static inline volatile const signed int _X3f14Fi___1();
+static inline volatile const signed int _X3f15Fi___1();
+static inline volatile const signed int _X3f16Fi___1();
+static inline volatile const signed int _X3f17Fi___1();
+static inline volatile const signed int _X3f18Fi___1();
+static inline volatile const signed short int _X3f21Fs___1();
+static inline volatile const signed short int _X3f22Fs___1();
+static inline volatile const signed short int _X3f23Fs___1();
+static inline volatile const signed short int _X3f24Fs___1();
+static inline volatile const signed short int _X3f25Fs___1();
+static inline volatile const signed short int _X3f26Fs___1();
+static inline volatile const signed short int _X3f27Fs___1();
+static inline volatile const signed short int _X3f28Fs___1();
+struct __anonymous16 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1);
+static inline void _X12_constructorFv_S13__anonymous16S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, struct __anonymous16 _X4_srcS13__anonymous16_1);
+static inline void _X11_destructorFv_S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1);
+static inline struct __anonymous16 _X16_operator_assignFS13__anonymous16_S13__anonymous16S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, struct __anonymous16 _X4_srcS13__anonymous16_1);
+static inline void _X12_constructorFv_S13__anonymous16i_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1){
+    ((void)((*_X4_dstS13__anonymous16_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous16S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, struct __anonymous16 _X4_srcS13__anonymous16_1){
+    ((void)((*_X4_dstS13__anonymous16_1)._X1ii_1=_X4_srcS13__anonymous16_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1){
+    ((void)((*_X4_dstS13__anonymous16_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous16 _X16_operator_assignFS13__anonymous16_S13__anonymous16S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, struct __anonymous16 _X4_srcS13__anonymous16_1){
+    struct __anonymous16 _X4_retS13__anonymous16_1;
+    ((void)((*_X4_dstS13__anonymous16_1)._X1ii_1=_X4_srcS13__anonymous16_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous16S13__anonymous16_autogen___1((&_X4_retS13__anonymous16_1), (*_X4_dstS13__anonymous16_1)));
+    return _X4_retS13__anonymous16_1;
+}
+static inline void _X12_constructorFv_S13__anonymous16i_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous16_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous16 _X3f31FS13__anonymous16___1();
+struct __anonymous17 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1);
+static inline void _X12_constructorFv_S13__anonymous17S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, struct __anonymous17 _X4_srcS13__anonymous17_1);
+static inline void _X11_destructorFv_S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1);
+static inline struct __anonymous17 _X16_operator_assignFS13__anonymous17_S13__anonymous17S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, struct __anonymous17 _X4_srcS13__anonymous17_1);
+static inline void _X12_constructorFv_S13__anonymous17i_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1){
+    ((void)((*_X4_dstS13__anonymous17_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous17S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, struct __anonymous17 _X4_srcS13__anonymous17_1){
+    ((void)((*_X4_dstS13__anonymous17_1)._X1ii_1=_X4_srcS13__anonymous17_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1){
+    ((void)((*_X4_dstS13__anonymous17_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous17 _X16_operator_assignFS13__anonymous17_S13__anonymous17S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, struct __anonymous17 _X4_srcS13__anonymous17_1){
+    struct __anonymous17 _X4_retS13__anonymous17_1;
+    ((void)((*_X4_dstS13__anonymous17_1)._X1ii_1=_X4_srcS13__anonymous17_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous17S13__anonymous17_autogen___1((&_X4_retS13__anonymous17_1), (*_X4_dstS13__anonymous17_1)));
+    return _X4_retS13__anonymous17_1;
+}
+static inline void _X12_constructorFv_S13__anonymous17i_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous17_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous17 _X3f32FS13__anonymous17___1();
+struct __anonymous18 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1);
+static inline void _X12_constructorFv_S13__anonymous18S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, struct __anonymous18 _X4_srcS13__anonymous18_1);
+static inline void _X11_destructorFv_S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1);
+static inline struct __anonymous18 _X16_operator_assignFS13__anonymous18_S13__anonymous18S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, struct __anonymous18 _X4_srcS13__anonymous18_1);
+static inline void _X12_constructorFv_S13__anonymous18i_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1){
+    ((void)((*_X4_dstS13__anonymous18_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous18S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, struct __anonymous18 _X4_srcS13__anonymous18_1){
+    ((void)((*_X4_dstS13__anonymous18_1)._X1ii_1=_X4_srcS13__anonymous18_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1){
+    ((void)((*_X4_dstS13__anonymous18_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous18 _X16_operator_assignFS13__anonymous18_S13__anonymous18S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, struct __anonymous18 _X4_srcS13__anonymous18_1){
+    struct __anonymous18 _X4_retS13__anonymous18_1;
+    ((void)((*_X4_dstS13__anonymous18_1)._X1ii_1=_X4_srcS13__anonymous18_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous18S13__anonymous18_autogen___1((&_X4_retS13__anonymous18_1), (*_X4_dstS13__anonymous18_1)));
+    return _X4_retS13__anonymous18_1;
+}
+static inline void _X12_constructorFv_S13__anonymous18i_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous18_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous18 _X3f33FS13__anonymous18___1();
+struct __anonymous19 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1);
+static inline void _X12_constructorFv_S13__anonymous19S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, struct __anonymous19 _X4_srcS13__anonymous19_1);
+static inline void _X11_destructorFv_S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1);
+static inline struct __anonymous19 _X16_operator_assignFS13__anonymous19_S13__anonymous19S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, struct __anonymous19 _X4_srcS13__anonymous19_1);
+static inline void _X12_constructorFv_S13__anonymous19i_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1){
+    ((void)((*_X4_dstS13__anonymous19_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous19S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, struct __anonymous19 _X4_srcS13__anonymous19_1){
+    ((void)((*_X4_dstS13__anonymous19_1)._X1ii_1=_X4_srcS13__anonymous19_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1){
+    ((void)((*_X4_dstS13__anonymous19_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous19 _X16_operator_assignFS13__anonymous19_S13__anonymous19S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, struct __anonymous19 _X4_srcS13__anonymous19_1){
+    struct __anonymous19 _X4_retS13__anonymous19_1;
+    ((void)((*_X4_dstS13__anonymous19_1)._X1ii_1=_X4_srcS13__anonymous19_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous19S13__anonymous19_autogen___1((&_X4_retS13__anonymous19_1), (*_X4_dstS13__anonymous19_1)));
+    return _X4_retS13__anonymous19_1;
+}
+static inline void _X12_constructorFv_S13__anonymous19i_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous19_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous19 _X3f34FS13__anonymous19___1();
+struct __anonymous20 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1);
+static inline void _X12_constructorFv_S13__anonymous20S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, struct __anonymous20 _X4_srcS13__anonymous20_1);
+static inline void _X11_destructorFv_S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1);
+static inline struct __anonymous20 _X16_operator_assignFS13__anonymous20_S13__anonymous20S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, struct __anonymous20 _X4_srcS13__anonymous20_1);
+static inline void _X12_constructorFv_S13__anonymous20i_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1){
+    ((void)((*_X4_dstS13__anonymous20_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous20S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, struct __anonymous20 _X4_srcS13__anonymous20_1){
+    ((void)((*_X4_dstS13__anonymous20_1)._X1ii_1=_X4_srcS13__anonymous20_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1){
+    ((void)((*_X4_dstS13__anonymous20_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous20 _X16_operator_assignFS13__anonymous20_S13__anonymous20S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, struct __anonymous20 _X4_srcS13__anonymous20_1){
+    struct __anonymous20 _X4_retS13__anonymous20_1;
+    ((void)((*_X4_dstS13__anonymous20_1)._X1ii_1=_X4_srcS13__anonymous20_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous20S13__anonymous20_autogen___1((&_X4_retS13__anonymous20_1), (*_X4_dstS13__anonymous20_1)));
+    return _X4_retS13__anonymous20_1;
+}
+static inline void _X12_constructorFv_S13__anonymous20i_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous20_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous20 _X3f35FS13__anonymous20___1();
+struct __anonymous21 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1);
+static inline void _X12_constructorFv_S13__anonymous21S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, struct __anonymous21 _X4_srcS13__anonymous21_1);
+static inline void _X11_destructorFv_S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1);
+static inline struct __anonymous21 _X16_operator_assignFS13__anonymous21_S13__anonymous21S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, struct __anonymous21 _X4_srcS13__anonymous21_1);
+static inline void _X12_constructorFv_S13__anonymous21i_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1){
+    ((void)((*_X4_dstS13__anonymous21_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous21S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, struct __anonymous21 _X4_srcS13__anonymous21_1){
+    ((void)((*_X4_dstS13__anonymous21_1)._X1ii_1=_X4_srcS13__anonymous21_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1){
+    ((void)((*_X4_dstS13__anonymous21_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous21 _X16_operator_assignFS13__anonymous21_S13__anonymous21S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, struct __anonymous21 _X4_srcS13__anonymous21_1){
+    struct __anonymous21 _X4_retS13__anonymous21_1;
+    ((void)((*_X4_dstS13__anonymous21_1)._X1ii_1=_X4_srcS13__anonymous21_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous21S13__anonymous21_autogen___1((&_X4_retS13__anonymous21_1), (*_X4_dstS13__anonymous21_1)));
+    return _X4_retS13__anonymous21_1;
+}
+static inline void _X12_constructorFv_S13__anonymous21i_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous21_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous21 _X3f36FS13__anonymous21___1();
+struct __anonymous22 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1);
+static inline void _X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1);
+static inline void _X11_destructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1);
+static inline struct __anonymous22 _X16_operator_assignFS13__anonymous22_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1);
+static inline void _X12_constructorFv_S13__anonymous22i_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1){
+    ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1){
+    ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X4_srcS13__anonymous22_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1){
+    ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous22 _X16_operator_assignFS13__anonymous22_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1){
+    struct __anonymous22 _X4_retS13__anonymous22_1;
+    ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X4_srcS13__anonymous22_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1((&_X4_retS13__anonymous22_1), (*_X4_dstS13__anonymous22_1)));
+    return _X4_retS13__anonymous22_1;
+}
+static inline void _X12_constructorFv_S13__anonymous22i_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous22 _X3f37FS13__anonymous22___1();
+struct __anonymous23 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1);
+static inline void _X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1);
+static inline void _X11_destructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1);
+static inline struct __anonymous23 _X16_operator_assignFS13__anonymous23_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1);
+static inline void _X12_constructorFv_S13__anonymous23i_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1){
+    ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1){
+    ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X4_srcS13__anonymous23_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1){
+    ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous23 _X16_operator_assignFS13__anonymous23_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1){
+    struct __anonymous23 _X4_retS13__anonymous23_1;
+    ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X4_srcS13__anonymous23_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1((&_X4_retS13__anonymous23_1), (*_X4_dstS13__anonymous23_1)));
+    return _X4_retS13__anonymous23_1;
+}
+static inline void _X12_constructorFv_S13__anonymous23i_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous23 _X3f38FS13__anonymous23___1();
+static inline volatile const signed short int _X3f41Fs___1();
+static inline volatile const signed short int _X3f42Fs___1();
+static inline volatile const signed short int _X3f43Fs___1();
+static inline volatile const signed short int _X3f44Fs___1();
+static inline volatile const signed short int _X3f45Fs___1();
+static inline volatile const signed short int _X3f46Fs___1();
+static inline volatile const signed short int _X3f47Fs___1();
+static inline volatile const signed short int _X3f48Fs___1();
+signed int _X4mainFi_iPPKc__1(signed int _X4argci_1, const char **_X4argvPPKc_1){
+    __attribute__ ((unused)) signed int _X12_retval_maini_1;
+    ((void)(_X12_retval_maini_1=((signed int )0)) /* ?{} */);
+    return _X12_retval_maini_1;
+    ((void)(_X12_retval_maini_1=0) /* ?{} */);
+    return _X12_retval_maini_1;
+}
+static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return _X4mainFi_iPPKc__1((signed int )argc, (const char **)argv); }
+static inline signed int invoke_main(signed int argc, char **argv, char **envp);
+signed int main(signed int _X4argci_1, char **_X4argvPPc_1, char **_X4envpPPc_1){
+    __attribute__ ((unused)) signed int _X12_retval_maini_1;
+    signed int _tmp_cp_ret2;
+    ((void)(_X12_retval_maini_1=(((void)(_tmp_cp_ret2=invoke_main(_X4argci_1, _X4argvPPc_1, _X4envpPPc_1))) , _tmp_cp_ret2)) /* ?{} */);
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
+    return _X12_retval_maini_1;
+}
Index: tests/.expect/declarationSpecifier.x86.txt
===================================================================
--- tests/.expect/declarationSpecifier.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/declarationSpecifier.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,704 @@
+volatile const signed short int _X2x1KVs_1;
+static volatile const signed short int _X2x2KVs_1;
+static volatile const signed short int _X2x3KVs_1;
+static volatile const signed short int _X2x4KVs_1;
+static volatile const signed short int _X2x5KVs_1;
+static volatile const signed short int _X2x6KVs_1;
+static volatile const signed short int _X2x7KVs_1;
+static volatile const signed short int _X2x8KVs_1;
+struct __anonymous0 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0i_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+    ((void)((*_X4_dstS12__anonymous0_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+    ((void)((*_X4_dstS12__anonymous0_1)._X1ii_1=_X4_srcS12__anonymous0_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+    ((void)((*_X4_dstS12__anonymous0_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+    struct __anonymous0 _X4_retS12__anonymous0_1;
+    ((void)((*_X4_dstS12__anonymous0_1)._X1ii_1=_X4_srcS12__anonymous0_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1((&_X4_retS12__anonymous0_1), (*_X4_dstS12__anonymous0_1)));
+    return _X4_retS12__anonymous0_1;
+}
+static inline void _X12_constructorFv_S12__anonymous0i_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous0_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+volatile const struct __anonymous0 _X3x10KVS12__anonymous0_1;
+struct __anonymous1 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1);
+static inline void _X12_constructorFv_S12__anonymous1S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, struct __anonymous1 _X4_srcS12__anonymous1_1);
+static inline void _X11_destructorFv_S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1);
+static inline struct __anonymous1 _X16_operator_assignFS12__anonymous1_S12__anonymous1S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, struct __anonymous1 _X4_srcS12__anonymous1_1);
+static inline void _X12_constructorFv_S12__anonymous1i_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1){
+    ((void)((*_X4_dstS12__anonymous1_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous1S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, struct __anonymous1 _X4_srcS12__anonymous1_1){
+    ((void)((*_X4_dstS12__anonymous1_1)._X1ii_1=_X4_srcS12__anonymous1_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1){
+    ((void)((*_X4_dstS12__anonymous1_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous1 _X16_operator_assignFS12__anonymous1_S12__anonymous1S12__anonymous1_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, struct __anonymous1 _X4_srcS12__anonymous1_1){
+    struct __anonymous1 _X4_retS12__anonymous1_1;
+    ((void)((*_X4_dstS12__anonymous1_1)._X1ii_1=_X4_srcS12__anonymous1_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous1S12__anonymous1_autogen___1((&_X4_retS12__anonymous1_1), (*_X4_dstS12__anonymous1_1)));
+    return _X4_retS12__anonymous1_1;
+}
+static inline void _X12_constructorFv_S12__anonymous1i_autogen___1(struct __anonymous1 *_X4_dstS12__anonymous1_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous1_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+volatile const struct __anonymous1 _X3x11KVS12__anonymous1_1;
+struct __anonymous2 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2i_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+    ((void)((*_X4_dstS12__anonymous2_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+    ((void)((*_X4_dstS12__anonymous2_1)._X1ii_1=_X4_srcS12__anonymous2_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+    ((void)((*_X4_dstS12__anonymous2_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+    struct __anonymous2 _X4_retS12__anonymous2_1;
+    ((void)((*_X4_dstS12__anonymous2_1)._X1ii_1=_X4_srcS12__anonymous2_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1((&_X4_retS12__anonymous2_1), (*_X4_dstS12__anonymous2_1)));
+    return _X4_retS12__anonymous2_1;
+}
+static inline void _X12_constructorFv_S12__anonymous2i_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous2_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+volatile const struct __anonymous2 _X3x12KVS12__anonymous2_1;
+struct __anonymous3 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1);
+static inline void _X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, struct __anonymous3 _X4_srcS12__anonymous3_1);
+static inline void _X11_destructorFv_S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1);
+static inline struct __anonymous3 _X16_operator_assignFS12__anonymous3_S12__anonymous3S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, struct __anonymous3 _X4_srcS12__anonymous3_1);
+static inline void _X12_constructorFv_S12__anonymous3i_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1){
+    ((void)((*_X4_dstS12__anonymous3_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, struct __anonymous3 _X4_srcS12__anonymous3_1){
+    ((void)((*_X4_dstS12__anonymous3_1)._X1ii_1=_X4_srcS12__anonymous3_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1){
+    ((void)((*_X4_dstS12__anonymous3_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous3 _X16_operator_assignFS12__anonymous3_S12__anonymous3S12__anonymous3_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, struct __anonymous3 _X4_srcS12__anonymous3_1){
+    struct __anonymous3 _X4_retS12__anonymous3_1;
+    ((void)((*_X4_dstS12__anonymous3_1)._X1ii_1=_X4_srcS12__anonymous3_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___1((&_X4_retS12__anonymous3_1), (*_X4_dstS12__anonymous3_1)));
+    return _X4_retS12__anonymous3_1;
+}
+static inline void _X12_constructorFv_S12__anonymous3i_autogen___1(struct __anonymous3 *_X4_dstS12__anonymous3_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous3_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static volatile const struct __anonymous3 _X3x13KVS12__anonymous3_1;
+struct __anonymous4 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1);
+static inline void _X12_constructorFv_S12__anonymous4S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, struct __anonymous4 _X4_srcS12__anonymous4_1);
+static inline void _X11_destructorFv_S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1);
+static inline struct __anonymous4 _X16_operator_assignFS12__anonymous4_S12__anonymous4S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, struct __anonymous4 _X4_srcS12__anonymous4_1);
+static inline void _X12_constructorFv_S12__anonymous4i_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1){
+    ((void)((*_X4_dstS12__anonymous4_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous4S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, struct __anonymous4 _X4_srcS12__anonymous4_1){
+    ((void)((*_X4_dstS12__anonymous4_1)._X1ii_1=_X4_srcS12__anonymous4_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1){
+    ((void)((*_X4_dstS12__anonymous4_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous4 _X16_operator_assignFS12__anonymous4_S12__anonymous4S12__anonymous4_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, struct __anonymous4 _X4_srcS12__anonymous4_1){
+    struct __anonymous4 _X4_retS12__anonymous4_1;
+    ((void)((*_X4_dstS12__anonymous4_1)._X1ii_1=_X4_srcS12__anonymous4_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous4S12__anonymous4_autogen___1((&_X4_retS12__anonymous4_1), (*_X4_dstS12__anonymous4_1)));
+    return _X4_retS12__anonymous4_1;
+}
+static inline void _X12_constructorFv_S12__anonymous4i_autogen___1(struct __anonymous4 *_X4_dstS12__anonymous4_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous4_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static volatile const struct __anonymous4 _X3x14KVS12__anonymous4_1;
+struct __anonymous5 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1);
+static inline void _X12_constructorFv_S12__anonymous5S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, struct __anonymous5 _X4_srcS12__anonymous5_1);
+static inline void _X11_destructorFv_S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1);
+static inline struct __anonymous5 _X16_operator_assignFS12__anonymous5_S12__anonymous5S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, struct __anonymous5 _X4_srcS12__anonymous5_1);
+static inline void _X12_constructorFv_S12__anonymous5i_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1){
+    ((void)((*_X4_dstS12__anonymous5_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous5S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, struct __anonymous5 _X4_srcS12__anonymous5_1){
+    ((void)((*_X4_dstS12__anonymous5_1)._X1ii_1=_X4_srcS12__anonymous5_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1){
+    ((void)((*_X4_dstS12__anonymous5_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous5 _X16_operator_assignFS12__anonymous5_S12__anonymous5S12__anonymous5_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, struct __anonymous5 _X4_srcS12__anonymous5_1){
+    struct __anonymous5 _X4_retS12__anonymous5_1;
+    ((void)((*_X4_dstS12__anonymous5_1)._X1ii_1=_X4_srcS12__anonymous5_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous5S12__anonymous5_autogen___1((&_X4_retS12__anonymous5_1), (*_X4_dstS12__anonymous5_1)));
+    return _X4_retS12__anonymous5_1;
+}
+static inline void _X12_constructorFv_S12__anonymous5i_autogen___1(struct __anonymous5 *_X4_dstS12__anonymous5_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous5_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static volatile const struct __anonymous5 _X3x15KVS12__anonymous5_1;
+struct __anonymous6 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1);
+static inline void _X12_constructorFv_S12__anonymous6S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, struct __anonymous6 _X4_srcS12__anonymous6_1);
+static inline void _X11_destructorFv_S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1);
+static inline struct __anonymous6 _X16_operator_assignFS12__anonymous6_S12__anonymous6S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, struct __anonymous6 _X4_srcS12__anonymous6_1);
+static inline void _X12_constructorFv_S12__anonymous6i_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1){
+    ((void)((*_X4_dstS12__anonymous6_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous6S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, struct __anonymous6 _X4_srcS12__anonymous6_1){
+    ((void)((*_X4_dstS12__anonymous6_1)._X1ii_1=_X4_srcS12__anonymous6_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1){
+    ((void)((*_X4_dstS12__anonymous6_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous6 _X16_operator_assignFS12__anonymous6_S12__anonymous6S12__anonymous6_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, struct __anonymous6 _X4_srcS12__anonymous6_1){
+    struct __anonymous6 _X4_retS12__anonymous6_1;
+    ((void)((*_X4_dstS12__anonymous6_1)._X1ii_1=_X4_srcS12__anonymous6_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous6S12__anonymous6_autogen___1((&_X4_retS12__anonymous6_1), (*_X4_dstS12__anonymous6_1)));
+    return _X4_retS12__anonymous6_1;
+}
+static inline void _X12_constructorFv_S12__anonymous6i_autogen___1(struct __anonymous6 *_X4_dstS12__anonymous6_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous6_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static volatile const struct __anonymous6 _X3x16KVS12__anonymous6_1;
+struct __anonymous7 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
+static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
+static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1);
+static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1);
+static inline void _X12_constructorFv_S12__anonymous7i_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
+    ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
+    ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X4_srcS12__anonymous7_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1){
+    ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous7 _X16_operator_assignFS12__anonymous7_S12__anonymous7S12__anonymous7_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, struct __anonymous7 _X4_srcS12__anonymous7_1){
+    struct __anonymous7 _X4_retS12__anonymous7_1;
+    ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X4_srcS12__anonymous7_1._X1ii_1));
+    ((void)_X12_constructorFv_S12__anonymous7S12__anonymous7_autogen___1((&_X4_retS12__anonymous7_1), (*_X4_dstS12__anonymous7_1)));
+    return _X4_retS12__anonymous7_1;
+}
+static inline void _X12_constructorFv_S12__anonymous7i_autogen___1(struct __anonymous7 *_X4_dstS12__anonymous7_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS12__anonymous7_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static volatile const struct __anonymous7 _X3x17KVS12__anonymous7_1;
+volatile const signed short int _X3x20KVs_1;
+static volatile const signed short int _X3x21KVs_1;
+static volatile const signed short int _X3x22KVs_1;
+static volatile const signed short int _X3x23KVs_1;
+static volatile const signed short int _X3x24KVs_1;
+static volatile const signed short int _X3x25KVs_1;
+static volatile const signed short int _X3x26KVs_1;
+static volatile const signed short int _X3x27KVs_1;
+struct __anonymous8 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1);
+static inline void _X12_constructorFv_S12__anonymous8S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, struct __anonymous8 _X4_srcS12__anonymous8_1);
+static inline void _X11_destructorFv_S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1);
+static inline struct __anonymous8 _X16_operator_assignFS12__anonymous8_S12__anonymous8S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, struct __anonymous8 _X4_srcS12__anonymous8_1);
+static inline void _X12_constructorFv_S12__anonymous8s_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1){
+    ((void)((*_X4_dstS12__anonymous8_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous8S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, struct __anonymous8 _X4_srcS12__anonymous8_1){
+    ((void)((*_X4_dstS12__anonymous8_1)._X1is_1=_X4_srcS12__anonymous8_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1){
+    ((void)((*_X4_dstS12__anonymous8_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous8 _X16_operator_assignFS12__anonymous8_S12__anonymous8S12__anonymous8_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, struct __anonymous8 _X4_srcS12__anonymous8_1){
+    struct __anonymous8 _X4_retS12__anonymous8_1;
+    ((void)((*_X4_dstS12__anonymous8_1)._X1is_1=_X4_srcS12__anonymous8_1._X1is_1));
+    ((void)_X12_constructorFv_S12__anonymous8S12__anonymous8_autogen___1((&_X4_retS12__anonymous8_1), (*_X4_dstS12__anonymous8_1)));
+    return _X4_retS12__anonymous8_1;
+}
+static inline void _X12_constructorFv_S12__anonymous8s_autogen___1(struct __anonymous8 *_X4_dstS12__anonymous8_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS12__anonymous8_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+volatile const struct __anonymous8 _X3x29KVS12__anonymous8_1;
+struct __anonymous9 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1);
+static inline void _X12_constructorFv_S12__anonymous9S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, struct __anonymous9 _X4_srcS12__anonymous9_1);
+static inline void _X11_destructorFv_S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1);
+static inline struct __anonymous9 _X16_operator_assignFS12__anonymous9_S12__anonymous9S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, struct __anonymous9 _X4_srcS12__anonymous9_1);
+static inline void _X12_constructorFv_S12__anonymous9s_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1){
+    ((void)((*_X4_dstS12__anonymous9_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S12__anonymous9S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, struct __anonymous9 _X4_srcS12__anonymous9_1){
+    ((void)((*_X4_dstS12__anonymous9_1)._X1is_1=_X4_srcS12__anonymous9_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1){
+    ((void)((*_X4_dstS12__anonymous9_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous9 _X16_operator_assignFS12__anonymous9_S12__anonymous9S12__anonymous9_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, struct __anonymous9 _X4_srcS12__anonymous9_1){
+    struct __anonymous9 _X4_retS12__anonymous9_1;
+    ((void)((*_X4_dstS12__anonymous9_1)._X1is_1=_X4_srcS12__anonymous9_1._X1is_1));
+    ((void)_X12_constructorFv_S12__anonymous9S12__anonymous9_autogen___1((&_X4_retS12__anonymous9_1), (*_X4_dstS12__anonymous9_1)));
+    return _X4_retS12__anonymous9_1;
+}
+static inline void _X12_constructorFv_S12__anonymous9s_autogen___1(struct __anonymous9 *_X4_dstS12__anonymous9_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS12__anonymous9_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+volatile const struct __anonymous9 _X3x30KVS12__anonymous9_1;
+struct __anonymous10 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1);
+static inline void _X12_constructorFv_S13__anonymous10S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, struct __anonymous10 _X4_srcS13__anonymous10_1);
+static inline void _X11_destructorFv_S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1);
+static inline struct __anonymous10 _X16_operator_assignFS13__anonymous10_S13__anonymous10S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, struct __anonymous10 _X4_srcS13__anonymous10_1);
+static inline void _X12_constructorFv_S13__anonymous10s_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1){
+    ((void)((*_X4_dstS13__anonymous10_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous10S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, struct __anonymous10 _X4_srcS13__anonymous10_1){
+    ((void)((*_X4_dstS13__anonymous10_1)._X1is_1=_X4_srcS13__anonymous10_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1){
+    ((void)((*_X4_dstS13__anonymous10_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous10 _X16_operator_assignFS13__anonymous10_S13__anonymous10S13__anonymous10_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, struct __anonymous10 _X4_srcS13__anonymous10_1){
+    struct __anonymous10 _X4_retS13__anonymous10_1;
+    ((void)((*_X4_dstS13__anonymous10_1)._X1is_1=_X4_srcS13__anonymous10_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous10S13__anonymous10_autogen___1((&_X4_retS13__anonymous10_1), (*_X4_dstS13__anonymous10_1)));
+    return _X4_retS13__anonymous10_1;
+}
+static inline void _X12_constructorFv_S13__anonymous10s_autogen___1(struct __anonymous10 *_X4_dstS13__anonymous10_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous10_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+volatile const struct __anonymous10 _X3x31KVS13__anonymous10_1;
+struct __anonymous11 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1);
+static inline void _X12_constructorFv_S13__anonymous11S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, struct __anonymous11 _X4_srcS13__anonymous11_1);
+static inline void _X11_destructorFv_S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1);
+static inline struct __anonymous11 _X16_operator_assignFS13__anonymous11_S13__anonymous11S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, struct __anonymous11 _X4_srcS13__anonymous11_1);
+static inline void _X12_constructorFv_S13__anonymous11s_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1){
+    ((void)((*_X4_dstS13__anonymous11_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous11S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, struct __anonymous11 _X4_srcS13__anonymous11_1){
+    ((void)((*_X4_dstS13__anonymous11_1)._X1is_1=_X4_srcS13__anonymous11_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1){
+    ((void)((*_X4_dstS13__anonymous11_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous11 _X16_operator_assignFS13__anonymous11_S13__anonymous11S13__anonymous11_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, struct __anonymous11 _X4_srcS13__anonymous11_1){
+    struct __anonymous11 _X4_retS13__anonymous11_1;
+    ((void)((*_X4_dstS13__anonymous11_1)._X1is_1=_X4_srcS13__anonymous11_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous11S13__anonymous11_autogen___1((&_X4_retS13__anonymous11_1), (*_X4_dstS13__anonymous11_1)));
+    return _X4_retS13__anonymous11_1;
+}
+static inline void _X12_constructorFv_S13__anonymous11s_autogen___1(struct __anonymous11 *_X4_dstS13__anonymous11_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous11_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+static volatile const struct __anonymous11 _X3x32KVS13__anonymous11_1;
+struct __anonymous12 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1);
+static inline void _X12_constructorFv_S13__anonymous12S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, struct __anonymous12 _X4_srcS13__anonymous12_1);
+static inline void _X11_destructorFv_S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1);
+static inline struct __anonymous12 _X16_operator_assignFS13__anonymous12_S13__anonymous12S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, struct __anonymous12 _X4_srcS13__anonymous12_1);
+static inline void _X12_constructorFv_S13__anonymous12s_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1){
+    ((void)((*_X4_dstS13__anonymous12_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous12S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, struct __anonymous12 _X4_srcS13__anonymous12_1){
+    ((void)((*_X4_dstS13__anonymous12_1)._X1is_1=_X4_srcS13__anonymous12_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1){
+    ((void)((*_X4_dstS13__anonymous12_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous12 _X16_operator_assignFS13__anonymous12_S13__anonymous12S13__anonymous12_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, struct __anonymous12 _X4_srcS13__anonymous12_1){
+    struct __anonymous12 _X4_retS13__anonymous12_1;
+    ((void)((*_X4_dstS13__anonymous12_1)._X1is_1=_X4_srcS13__anonymous12_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous12S13__anonymous12_autogen___1((&_X4_retS13__anonymous12_1), (*_X4_dstS13__anonymous12_1)));
+    return _X4_retS13__anonymous12_1;
+}
+static inline void _X12_constructorFv_S13__anonymous12s_autogen___1(struct __anonymous12 *_X4_dstS13__anonymous12_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous12_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+static volatile const struct __anonymous12 _X3x33KVS13__anonymous12_1;
+struct __anonymous13 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1);
+static inline void _X12_constructorFv_S13__anonymous13S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, struct __anonymous13 _X4_srcS13__anonymous13_1);
+static inline void _X11_destructorFv_S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1);
+static inline struct __anonymous13 _X16_operator_assignFS13__anonymous13_S13__anonymous13S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, struct __anonymous13 _X4_srcS13__anonymous13_1);
+static inline void _X12_constructorFv_S13__anonymous13s_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1){
+    ((void)((*_X4_dstS13__anonymous13_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous13S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, struct __anonymous13 _X4_srcS13__anonymous13_1){
+    ((void)((*_X4_dstS13__anonymous13_1)._X1is_1=_X4_srcS13__anonymous13_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1){
+    ((void)((*_X4_dstS13__anonymous13_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous13 _X16_operator_assignFS13__anonymous13_S13__anonymous13S13__anonymous13_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, struct __anonymous13 _X4_srcS13__anonymous13_1){
+    struct __anonymous13 _X4_retS13__anonymous13_1;
+    ((void)((*_X4_dstS13__anonymous13_1)._X1is_1=_X4_srcS13__anonymous13_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous13S13__anonymous13_autogen___1((&_X4_retS13__anonymous13_1), (*_X4_dstS13__anonymous13_1)));
+    return _X4_retS13__anonymous13_1;
+}
+static inline void _X12_constructorFv_S13__anonymous13s_autogen___1(struct __anonymous13 *_X4_dstS13__anonymous13_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous13_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+static volatile const struct __anonymous13 _X3x34KVS13__anonymous13_1;
+struct __anonymous14 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
+static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
+static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1);
+static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1);
+static inline void _X12_constructorFv_S13__anonymous14s_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
+    ((void)((*_X4_dstS13__anonymous14_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
+    ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X4_srcS13__anonymous14_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1){
+    ((void)((*_X4_dstS13__anonymous14_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous14 _X16_operator_assignFS13__anonymous14_S13__anonymous14S13__anonymous14_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, struct __anonymous14 _X4_srcS13__anonymous14_1){
+    struct __anonymous14 _X4_retS13__anonymous14_1;
+    ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X4_srcS13__anonymous14_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous14S13__anonymous14_autogen___1((&_X4_retS13__anonymous14_1), (*_X4_dstS13__anonymous14_1)));
+    return _X4_retS13__anonymous14_1;
+}
+static inline void _X12_constructorFv_S13__anonymous14s_autogen___1(struct __anonymous14 *_X4_dstS13__anonymous14_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous14_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+static volatile const struct __anonymous14 _X3x35KVS13__anonymous14_1;
+struct __anonymous15 {
+    signed short int _X1is_1;
+};
+static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
+static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
+static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1);
+static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1);
+static inline void _X12_constructorFv_S13__anonymous15s_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed short int _X1is_1);
+static inline void _X12_constructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
+    ((void)((*_X4_dstS13__anonymous15_1)._X1is_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
+    ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X4_srcS13__anonymous15_1._X1is_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1){
+    ((void)((*_X4_dstS13__anonymous15_1)._X1is_1) /* ^?{} */);
+}
+static inline struct __anonymous15 _X16_operator_assignFS13__anonymous15_S13__anonymous15S13__anonymous15_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, struct __anonymous15 _X4_srcS13__anonymous15_1){
+    struct __anonymous15 _X4_retS13__anonymous15_1;
+    ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X4_srcS13__anonymous15_1._X1is_1));
+    ((void)_X12_constructorFv_S13__anonymous15S13__anonymous15_autogen___1((&_X4_retS13__anonymous15_1), (*_X4_dstS13__anonymous15_1)));
+    return _X4_retS13__anonymous15_1;
+}
+static inline void _X12_constructorFv_S13__anonymous15s_autogen___1(struct __anonymous15 *_X4_dstS13__anonymous15_1, signed short int _X1is_1){
+    ((void)((*_X4_dstS13__anonymous15_1)._X1is_1=_X1is_1) /* ?{} */);
+}
+static volatile const struct __anonymous15 _X3x36KVS13__anonymous15_1;
+static inline volatile const signed int _X3f11Fi___1();
+static inline volatile const signed int _X3f12Fi___1();
+static inline volatile const signed int _X3f13Fi___1();
+static inline volatile const signed int _X3f14Fi___1();
+static inline volatile const signed int _X3f15Fi___1();
+static inline volatile const signed int _X3f16Fi___1();
+static inline volatile const signed int _X3f17Fi___1();
+static inline volatile const signed int _X3f18Fi___1();
+static inline volatile const signed short int _X3f21Fs___1();
+static inline volatile const signed short int _X3f22Fs___1();
+static inline volatile const signed short int _X3f23Fs___1();
+static inline volatile const signed short int _X3f24Fs___1();
+static inline volatile const signed short int _X3f25Fs___1();
+static inline volatile const signed short int _X3f26Fs___1();
+static inline volatile const signed short int _X3f27Fs___1();
+static inline volatile const signed short int _X3f28Fs___1();
+struct __anonymous16 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1);
+static inline void _X12_constructorFv_S13__anonymous16S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, struct __anonymous16 _X4_srcS13__anonymous16_1);
+static inline void _X11_destructorFv_S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1);
+static inline struct __anonymous16 _X16_operator_assignFS13__anonymous16_S13__anonymous16S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, struct __anonymous16 _X4_srcS13__anonymous16_1);
+static inline void _X12_constructorFv_S13__anonymous16i_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1){
+    ((void)((*_X4_dstS13__anonymous16_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous16S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, struct __anonymous16 _X4_srcS13__anonymous16_1){
+    ((void)((*_X4_dstS13__anonymous16_1)._X1ii_1=_X4_srcS13__anonymous16_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1){
+    ((void)((*_X4_dstS13__anonymous16_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous16 _X16_operator_assignFS13__anonymous16_S13__anonymous16S13__anonymous16_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, struct __anonymous16 _X4_srcS13__anonymous16_1){
+    struct __anonymous16 _X4_retS13__anonymous16_1;
+    ((void)((*_X4_dstS13__anonymous16_1)._X1ii_1=_X4_srcS13__anonymous16_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous16S13__anonymous16_autogen___1((&_X4_retS13__anonymous16_1), (*_X4_dstS13__anonymous16_1)));
+    return _X4_retS13__anonymous16_1;
+}
+static inline void _X12_constructorFv_S13__anonymous16i_autogen___1(struct __anonymous16 *_X4_dstS13__anonymous16_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous16_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous16 _X3f31FS13__anonymous16___1();
+struct __anonymous17 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1);
+static inline void _X12_constructorFv_S13__anonymous17S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, struct __anonymous17 _X4_srcS13__anonymous17_1);
+static inline void _X11_destructorFv_S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1);
+static inline struct __anonymous17 _X16_operator_assignFS13__anonymous17_S13__anonymous17S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, struct __anonymous17 _X4_srcS13__anonymous17_1);
+static inline void _X12_constructorFv_S13__anonymous17i_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1){
+    ((void)((*_X4_dstS13__anonymous17_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous17S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, struct __anonymous17 _X4_srcS13__anonymous17_1){
+    ((void)((*_X4_dstS13__anonymous17_1)._X1ii_1=_X4_srcS13__anonymous17_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1){
+    ((void)((*_X4_dstS13__anonymous17_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous17 _X16_operator_assignFS13__anonymous17_S13__anonymous17S13__anonymous17_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, struct __anonymous17 _X4_srcS13__anonymous17_1){
+    struct __anonymous17 _X4_retS13__anonymous17_1;
+    ((void)((*_X4_dstS13__anonymous17_1)._X1ii_1=_X4_srcS13__anonymous17_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous17S13__anonymous17_autogen___1((&_X4_retS13__anonymous17_1), (*_X4_dstS13__anonymous17_1)));
+    return _X4_retS13__anonymous17_1;
+}
+static inline void _X12_constructorFv_S13__anonymous17i_autogen___1(struct __anonymous17 *_X4_dstS13__anonymous17_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous17_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous17 _X3f32FS13__anonymous17___1();
+struct __anonymous18 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1);
+static inline void _X12_constructorFv_S13__anonymous18S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, struct __anonymous18 _X4_srcS13__anonymous18_1);
+static inline void _X11_destructorFv_S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1);
+static inline struct __anonymous18 _X16_operator_assignFS13__anonymous18_S13__anonymous18S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, struct __anonymous18 _X4_srcS13__anonymous18_1);
+static inline void _X12_constructorFv_S13__anonymous18i_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1){
+    ((void)((*_X4_dstS13__anonymous18_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous18S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, struct __anonymous18 _X4_srcS13__anonymous18_1){
+    ((void)((*_X4_dstS13__anonymous18_1)._X1ii_1=_X4_srcS13__anonymous18_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1){
+    ((void)((*_X4_dstS13__anonymous18_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous18 _X16_operator_assignFS13__anonymous18_S13__anonymous18S13__anonymous18_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, struct __anonymous18 _X4_srcS13__anonymous18_1){
+    struct __anonymous18 _X4_retS13__anonymous18_1;
+    ((void)((*_X4_dstS13__anonymous18_1)._X1ii_1=_X4_srcS13__anonymous18_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous18S13__anonymous18_autogen___1((&_X4_retS13__anonymous18_1), (*_X4_dstS13__anonymous18_1)));
+    return _X4_retS13__anonymous18_1;
+}
+static inline void _X12_constructorFv_S13__anonymous18i_autogen___1(struct __anonymous18 *_X4_dstS13__anonymous18_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous18_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous18 _X3f33FS13__anonymous18___1();
+struct __anonymous19 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1);
+static inline void _X12_constructorFv_S13__anonymous19S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, struct __anonymous19 _X4_srcS13__anonymous19_1);
+static inline void _X11_destructorFv_S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1);
+static inline struct __anonymous19 _X16_operator_assignFS13__anonymous19_S13__anonymous19S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, struct __anonymous19 _X4_srcS13__anonymous19_1);
+static inline void _X12_constructorFv_S13__anonymous19i_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1){
+    ((void)((*_X4_dstS13__anonymous19_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous19S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, struct __anonymous19 _X4_srcS13__anonymous19_1){
+    ((void)((*_X4_dstS13__anonymous19_1)._X1ii_1=_X4_srcS13__anonymous19_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1){
+    ((void)((*_X4_dstS13__anonymous19_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous19 _X16_operator_assignFS13__anonymous19_S13__anonymous19S13__anonymous19_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, struct __anonymous19 _X4_srcS13__anonymous19_1){
+    struct __anonymous19 _X4_retS13__anonymous19_1;
+    ((void)((*_X4_dstS13__anonymous19_1)._X1ii_1=_X4_srcS13__anonymous19_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous19S13__anonymous19_autogen___1((&_X4_retS13__anonymous19_1), (*_X4_dstS13__anonymous19_1)));
+    return _X4_retS13__anonymous19_1;
+}
+static inline void _X12_constructorFv_S13__anonymous19i_autogen___1(struct __anonymous19 *_X4_dstS13__anonymous19_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous19_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous19 _X3f34FS13__anonymous19___1();
+struct __anonymous20 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1);
+static inline void _X12_constructorFv_S13__anonymous20S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, struct __anonymous20 _X4_srcS13__anonymous20_1);
+static inline void _X11_destructorFv_S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1);
+static inline struct __anonymous20 _X16_operator_assignFS13__anonymous20_S13__anonymous20S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, struct __anonymous20 _X4_srcS13__anonymous20_1);
+static inline void _X12_constructorFv_S13__anonymous20i_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1){
+    ((void)((*_X4_dstS13__anonymous20_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous20S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, struct __anonymous20 _X4_srcS13__anonymous20_1){
+    ((void)((*_X4_dstS13__anonymous20_1)._X1ii_1=_X4_srcS13__anonymous20_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1){
+    ((void)((*_X4_dstS13__anonymous20_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous20 _X16_operator_assignFS13__anonymous20_S13__anonymous20S13__anonymous20_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, struct __anonymous20 _X4_srcS13__anonymous20_1){
+    struct __anonymous20 _X4_retS13__anonymous20_1;
+    ((void)((*_X4_dstS13__anonymous20_1)._X1ii_1=_X4_srcS13__anonymous20_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous20S13__anonymous20_autogen___1((&_X4_retS13__anonymous20_1), (*_X4_dstS13__anonymous20_1)));
+    return _X4_retS13__anonymous20_1;
+}
+static inline void _X12_constructorFv_S13__anonymous20i_autogen___1(struct __anonymous20 *_X4_dstS13__anonymous20_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous20_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous20 _X3f35FS13__anonymous20___1();
+struct __anonymous21 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1);
+static inline void _X12_constructorFv_S13__anonymous21S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, struct __anonymous21 _X4_srcS13__anonymous21_1);
+static inline void _X11_destructorFv_S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1);
+static inline struct __anonymous21 _X16_operator_assignFS13__anonymous21_S13__anonymous21S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, struct __anonymous21 _X4_srcS13__anonymous21_1);
+static inline void _X12_constructorFv_S13__anonymous21i_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1){
+    ((void)((*_X4_dstS13__anonymous21_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous21S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, struct __anonymous21 _X4_srcS13__anonymous21_1){
+    ((void)((*_X4_dstS13__anonymous21_1)._X1ii_1=_X4_srcS13__anonymous21_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1){
+    ((void)((*_X4_dstS13__anonymous21_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous21 _X16_operator_assignFS13__anonymous21_S13__anonymous21S13__anonymous21_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, struct __anonymous21 _X4_srcS13__anonymous21_1){
+    struct __anonymous21 _X4_retS13__anonymous21_1;
+    ((void)((*_X4_dstS13__anonymous21_1)._X1ii_1=_X4_srcS13__anonymous21_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous21S13__anonymous21_autogen___1((&_X4_retS13__anonymous21_1), (*_X4_dstS13__anonymous21_1)));
+    return _X4_retS13__anonymous21_1;
+}
+static inline void _X12_constructorFv_S13__anonymous21i_autogen___1(struct __anonymous21 *_X4_dstS13__anonymous21_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous21_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous21 _X3f36FS13__anonymous21___1();
+struct __anonymous22 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1);
+static inline void _X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1);
+static inline void _X11_destructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1);
+static inline struct __anonymous22 _X16_operator_assignFS13__anonymous22_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1);
+static inline void _X12_constructorFv_S13__anonymous22i_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1){
+    ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1){
+    ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X4_srcS13__anonymous22_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1){
+    ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous22 _X16_operator_assignFS13__anonymous22_S13__anonymous22S13__anonymous22_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, struct __anonymous22 _X4_srcS13__anonymous22_1){
+    struct __anonymous22 _X4_retS13__anonymous22_1;
+    ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X4_srcS13__anonymous22_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous22S13__anonymous22_autogen___1((&_X4_retS13__anonymous22_1), (*_X4_dstS13__anonymous22_1)));
+    return _X4_retS13__anonymous22_1;
+}
+static inline void _X12_constructorFv_S13__anonymous22i_autogen___1(struct __anonymous22 *_X4_dstS13__anonymous22_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous22_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous22 _X3f37FS13__anonymous22___1();
+struct __anonymous23 {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1);
+static inline void _X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1);
+static inline void _X11_destructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1);
+static inline struct __anonymous23 _X16_operator_assignFS13__anonymous23_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1);
+static inline void _X12_constructorFv_S13__anonymous23i_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1){
+    ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1){
+    ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X4_srcS13__anonymous23_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1){
+    ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct __anonymous23 _X16_operator_assignFS13__anonymous23_S13__anonymous23S13__anonymous23_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, struct __anonymous23 _X4_srcS13__anonymous23_1){
+    struct __anonymous23 _X4_retS13__anonymous23_1;
+    ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X4_srcS13__anonymous23_1._X1ii_1));
+    ((void)_X12_constructorFv_S13__anonymous23S13__anonymous23_autogen___1((&_X4_retS13__anonymous23_1), (*_X4_dstS13__anonymous23_1)));
+    return _X4_retS13__anonymous23_1;
+}
+static inline void _X12_constructorFv_S13__anonymous23i_autogen___1(struct __anonymous23 *_X4_dstS13__anonymous23_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS13__anonymous23_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous23 _X3f38FS13__anonymous23___1();
+static inline volatile const signed short int _X3f41Fs___1();
+static inline volatile const signed short int _X3f42Fs___1();
+static inline volatile const signed short int _X3f43Fs___1();
+static inline volatile const signed short int _X3f44Fs___1();
+static inline volatile const signed short int _X3f45Fs___1();
+static inline volatile const signed short int _X3f46Fs___1();
+static inline volatile const signed short int _X3f47Fs___1();
+static inline volatile const signed short int _X3f48Fs___1();
+signed int _X4mainFi_iPPKc__1(signed int _X4argci_1, const char **_X4argvPPKc_1){
+    __attribute__ ((unused)) signed int _X12_retval_maini_1;
+    ((void)(_X12_retval_maini_1=((signed int )0)) /* ?{} */);
+    return _X12_retval_maini_1;
+    ((void)(_X12_retval_maini_1=0) /* ?{} */);
+    return _X12_retval_maini_1;
+}
+static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return _X4mainFi_iPPKc__1((signed int )argc, (const char **)argv); }
+static inline signed int invoke_main(signed int argc, char **argv, char **envp);
+signed int main(signed int _X4argci_1, char **_X4argvPPc_1, char **_X4envpPPc_1){
+    __attribute__ ((unused)) signed int _X12_retval_maini_1;
+    signed int _tmp_cp_ret2;
+    ((void)(_X12_retval_maini_1=(((void)(_tmp_cp_ret2=invoke_main(_X4argci_1, _X4argvPPc_1, _X4envpPPc_1))) , _tmp_cp_ret2)) /* ?{} */);
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
+    return _X12_retval_maini_1;
+}
Index: tests/.expect/designations.txt
===================================================================
--- tests/.expect/designations.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/designations.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,53 @@
+=====A=====
+(A){ 2 3 (nil) }
+(A){ 2 3 (nil) }
+(A){ 0 3 (nil) }
+=====A=====
+
+=====B=====
+(B){
+  (A){ 5 0 (nil) }
+  (A){ 0 0 (nil) }
+}
+(B){
+  (A){ 5 2 (nil) }
+  (A){ 6 0 (nil) }
+}
+(B){
+  (A){ 1 0 (nil) }
+  (A){ 2 3 (nil) }
+}
+(B){
+  (A){ 1 2 (nil) }
+  (A){ 4 5 (nil) }
+}
+(B){
+  (A){ 1 0 (nil) }
+  (A){ 2 3 (nil) }
+}
+(B){
+  (A){ 1 0 (nil) }
+  (A){ 2 3 (nil) }
+}
+=====B=====
+
+=====C=====
+(C){
+  (int[]{ 2 3 4 }
+  (B){
+    (A){ 5 6 (nil) }
+    (A){ 7 8 (nil) }
+  }
+}
+=====C=====
+
+=====E=====
+(A){ 2 3 (nil) }
+(A){ 2 3 (nil) }
+(A){ 2 3 (nil) }
+(B){
+  (A){ 2 3 (nil) }
+  (A){ 5 6 (nil) }
+}
+=====E=====
+
Index: tests/.expect/div.txt
===================================================================
--- tests/.expect/div.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/div.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,3 @@
+div 2, 3 2, 3 2, 3
+div 2, 3
+div 2, 3
Index: tests/.expect/extension.x64.txt
===================================================================
--- tests/.expect/extension.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/extension.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,201 @@
+__extension__ signed int _X1ai_1;
+__extension__ signed int _X1bi_1;
+__extension__ signed int _X1ci_1;
+__extension__ struct S {
+    __extension__ signed int _X1ai_1;
+    __extension__ signed int _X1bi_1;
+    __extension__ signed int _X1ci_1;
+};
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1);
+static inline void _X12_constructorFv_S1Sii_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1, signed int _X1bi_1);
+static inline void _X12_constructorFv_S1Siii_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1, signed int _X1bi_1, signed int _X1ci_1);
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ai_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ci_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ai_1=_X4_srcS1S_1._X1ai_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1=_X4_srcS1S_1._X1bi_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ci_1=_X4_srcS1S_1._X1ci_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ci_1) /* ^?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1) /* ^?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ai_1) /* ^?{} */);
+}
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    struct S _X4_retS1S_1;
+    ((void)((*_X4_dstS1S_1)._X1ai_1=_X4_srcS1S_1._X1ai_1));
+    ((void)((*_X4_dstS1S_1)._X1bi_1=_X4_srcS1S_1._X1bi_1));
+    ((void)((*_X4_dstS1S_1)._X1ci_1=_X4_srcS1S_1._X1ci_1));
+    ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
+    return _X4_retS1S_1;
+}
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1){
+    ((void)((*_X4_dstS1S_1)._X1ai_1=_X1ai_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ci_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S1Sii_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1, signed int _X1bi_1){
+    ((void)((*_X4_dstS1S_1)._X1ai_1=_X1ai_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1=_X1bi_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ci_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S1Siii_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1, signed int _X1bi_1, signed int _X1ci_1){
+    ((void)((*_X4_dstS1S_1)._X1ai_1=_X1ai_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1=_X1bi_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ci_1=_X1ci_1) /* ?{} */);
+}
+__extension__ union U {
+    __extension__ signed int _X1ai_1;
+    __extension__ signed int _X1bi_1;
+    __extension__ signed int _X1ci_1;
+};
+static inline void _X12_constructorFv_U1U_autogen___1(__attribute__ ((unused)) union U *_X4_dstU1U_1);
+static inline void _X12_constructorFv_U1UU1U_autogen___1(union U *_X4_dstU1U_1, union U _X4_srcU1U_1);
+static inline void _X11_destructorFv_U1U_autogen___1(__attribute__ ((unused)) union U *_X4_dstU1U_1);
+static inline union U _X16_operator_assignFU1U_U1UU1U_autogen___1(union U *_X4_dstU1U_1, union U _X4_srcU1U_1);
+static inline void _X12_constructorFv_U1Ui_autogen___1(union U *_X4_dstU1U_1, signed int _X1ai_1);
+static inline void _X12_constructorFv_U1U_autogen___1(__attribute__ ((unused)) union U *_X4_dstU1U_1){
+}
+static inline void _X12_constructorFv_U1UU1U_autogen___1(union U *_X4_dstU1U_1, union U _X4_srcU1U_1){
+    ((void)__builtin_memcpy(((void *)_X4_dstU1U_1), ((const void *)(&_X4_srcU1U_1)), sizeof(union U )));
+}
+static inline void _X11_destructorFv_U1U_autogen___1(__attribute__ ((unused)) union U *_X4_dstU1U_1){
+}
+static inline union U _X16_operator_assignFU1U_U1UU1U_autogen___1(union U *_X4_dstU1U_1, union U _X4_srcU1U_1){
+    union U _X4_retU1U_1;
+    ((void)__builtin_memcpy(((void *)_X4_dstU1U_1), ((const void *)(&_X4_srcU1U_1)), sizeof(union U )));
+    ((void)_X12_constructorFv_U1UU1U_autogen___1((&_X4_retU1U_1), (*_X4_dstU1U_1)));
+    return _X4_retU1U_1;
+}
+static inline void _X12_constructorFv_U1Ui_autogen___1(union U *_X4_dstU1U_1, signed int _X1ai_1){
+    ((void)__builtin_memcpy(((void *)_X4_dstU1U_1), ((const void *)(&_X1ai_1)), sizeof(signed int )));
+}
+__extension__ enum E {
+    _X1RKM1E_1,
+    _X1GKM1E_1,
+    _X1BKM1E_1,
+};
+__extension__ signed int _X1fFi___1();
+__extension__ signed int i;
+__extension__ signed int j;
+__extension__ signed int _X4fredFi_i__1(signed int _X1pi_1){
+    __attribute__ ((unused)) signed int _X12_retval_fredi_1;
+    __extension__ struct S {
+        __extension__ signed int _X1ai_2;
+        __extension__ signed int _X1bi_2;
+        __extension__ signed int _X1ci_2;
+        __extension__ signed int *_X1xPi_2;
+        __extension__ signed int *_X1yPi_2;
+        __extension__ signed int *_X1zPi_2;
+    };
+    inline void _X12_constructorFv_S1S_autogen___2(struct S *_X4_dstS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1SS1S_autogen___2(struct S *_X4_dstS1S_2, struct S _X4_srcS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X4_srcS1S_2._X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X4_srcS1S_2._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X4_srcS1S_2._X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2=_X4_srcS1S_2._X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2=_X4_srcS1S_2._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2=_X4_srcS1S_2._X1zPi_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S1S_autogen___2(struct S *_X4_dstS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ai_2) /* ^?{} */);
+    }
+    inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___2(struct S *_X4_dstS1S_2, struct S _X4_srcS1S_2){
+        struct S _X4_retS1S_2;
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X4_srcS1S_2._X1ai_2));
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X4_srcS1S_2._X1bi_2));
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X4_srcS1S_2._X1ci_2));
+        ((void)((*_X4_dstS1S_2)._X1xPi_2=_X4_srcS1S_2._X1xPi_2));
+        ((void)((*_X4_dstS1S_2)._X1yPi_2=_X4_srcS1S_2._X1yPi_2));
+        ((void)((*_X4_dstS1S_2)._X1zPi_2=_X4_srcS1S_2._X1zPi_2));
+        ((void)_X12_constructorFv_S1SS1S_autogen___2((&_X4_retS1S_2), (*_X4_dstS1S_2)));
+        return _X4_retS1S_2;
+    }
+    inline void _X12_constructorFv_S1Si_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1Sii_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1Siii_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1SiiiPi_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2, signed int *_X1xPi_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2=_X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1SiiiPiPi_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2, signed int *_X1xPi_2, signed int *_X1yPi_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2=_X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2=_X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1SiiiPiPiPi_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2, signed int *_X1xPi_2, signed int *_X1yPi_2, signed int *_X1zPi_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2=_X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2=_X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2=_X1zPi_2) /* ?{} */);
+    }
+    signed int _X1ii_2 = (__extension__ _X1ai_1+__extension__ 3);
+    ((void)__extension__ 3);
+    ((void)__extension__ _X1ai_1);
+    __extension__ signed int _X1ai_2;
+    __extension__ signed int _X1bi_2;
+    __extension__ signed int _X1ci_2;
+    ((void)(__extension__ _X1ai_2=(__extension__ _X1bi_2+__extension__ _X1ci_2)));
+    signed int _tmp_cp_ret2;
+    ((void)(((void)(_tmp_cp_ret2=__extension__ _X4fredFi_i__1(3))) , _tmp_cp_ret2));
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
+    __extension__ signed int _X4maryFi_i__2(signed int _X1pi_2){
+        __attribute__ ((unused)) signed int _X12_retval_maryi_2;
+    }
+    ((void)__extension__ sizeof(3));
+    ((void)__extension__ ((3!=((signed int )0)) || (4!=((signed int )0))));
+    ((void)__extension__ __alignof__(__extension__ _X1ai_2));
+    ((void)((__extension__ _X1ai_2!=((signed int )0)) || (((__extension__ _X1bi_2!=((signed int )0)) && (__extension__ _X1ci_2!=((signed int )0)))!=((signed int )0))));
+    ((void)(((__extension__ _X1ai_2>__extension__ _X1bi_2)!=((signed int )0)) ? __extension__ _X1ci_2 : __extension__ _X1ci_2));
+    ((void)(__extension__ _X1ai_2=__extension__ (__extension__ _X1bi_2+__extension__ _X1ci_2)));
+    ((void)(((void)(((void)__extension__ _X1ai_2) , __extension__ _X1bi_2)) , __extension__ _X1ci_2));
+}
Index: tests/.expect/extension.x86.txt
===================================================================
--- tests/.expect/extension.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/extension.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,201 @@
+__extension__ signed int _X1ai_1;
+__extension__ signed int _X1bi_1;
+__extension__ signed int _X1ci_1;
+__extension__ struct S {
+    __extension__ signed int _X1ai_1;
+    __extension__ signed int _X1bi_1;
+    __extension__ signed int _X1ci_1;
+};
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1);
+static inline void _X12_constructorFv_S1Sii_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1, signed int _X1bi_1);
+static inline void _X12_constructorFv_S1Siii_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1, signed int _X1bi_1, signed int _X1ci_1);
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ai_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ci_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ai_1=_X4_srcS1S_1._X1ai_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1=_X4_srcS1S_1._X1bi_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ci_1=_X4_srcS1S_1._X1ci_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ci_1) /* ^?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1) /* ^?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ai_1) /* ^?{} */);
+}
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    struct S _X4_retS1S_1;
+    ((void)((*_X4_dstS1S_1)._X1ai_1=_X4_srcS1S_1._X1ai_1));
+    ((void)((*_X4_dstS1S_1)._X1bi_1=_X4_srcS1S_1._X1bi_1));
+    ((void)((*_X4_dstS1S_1)._X1ci_1=_X4_srcS1S_1._X1ci_1));
+    ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
+    return _X4_retS1S_1;
+}
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1){
+    ((void)((*_X4_dstS1S_1)._X1ai_1=_X1ai_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ci_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S1Sii_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1, signed int _X1bi_1){
+    ((void)((*_X4_dstS1S_1)._X1ai_1=_X1ai_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1=_X1bi_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ci_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S1Siii_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ai_1, signed int _X1bi_1, signed int _X1ci_1){
+    ((void)((*_X4_dstS1S_1)._X1ai_1=_X1ai_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1bi_1=_X1bi_1) /* ?{} */);
+    ((void)((*_X4_dstS1S_1)._X1ci_1=_X1ci_1) /* ?{} */);
+}
+__extension__ union U {
+    __extension__ signed int _X1ai_1;
+    __extension__ signed int _X1bi_1;
+    __extension__ signed int _X1ci_1;
+};
+static inline void _X12_constructorFv_U1U_autogen___1(__attribute__ ((unused)) union U *_X4_dstU1U_1);
+static inline void _X12_constructorFv_U1UU1U_autogen___1(union U *_X4_dstU1U_1, union U _X4_srcU1U_1);
+static inline void _X11_destructorFv_U1U_autogen___1(__attribute__ ((unused)) union U *_X4_dstU1U_1);
+static inline union U _X16_operator_assignFU1U_U1UU1U_autogen___1(union U *_X4_dstU1U_1, union U _X4_srcU1U_1);
+static inline void _X12_constructorFv_U1Ui_autogen___1(union U *_X4_dstU1U_1, signed int _X1ai_1);
+static inline void _X12_constructorFv_U1U_autogen___1(__attribute__ ((unused)) union U *_X4_dstU1U_1){
+}
+static inline void _X12_constructorFv_U1UU1U_autogen___1(union U *_X4_dstU1U_1, union U _X4_srcU1U_1){
+    ((void)__builtin_memcpy(((void *)_X4_dstU1U_1), ((const void *)(&_X4_srcU1U_1)), sizeof(union U )));
+}
+static inline void _X11_destructorFv_U1U_autogen___1(__attribute__ ((unused)) union U *_X4_dstU1U_1){
+}
+static inline union U _X16_operator_assignFU1U_U1UU1U_autogen___1(union U *_X4_dstU1U_1, union U _X4_srcU1U_1){
+    union U _X4_retU1U_1;
+    ((void)__builtin_memcpy(((void *)_X4_dstU1U_1), ((const void *)(&_X4_srcU1U_1)), sizeof(union U )));
+    ((void)_X12_constructorFv_U1UU1U_autogen___1((&_X4_retU1U_1), (*_X4_dstU1U_1)));
+    return _X4_retU1U_1;
+}
+static inline void _X12_constructorFv_U1Ui_autogen___1(union U *_X4_dstU1U_1, signed int _X1ai_1){
+    ((void)__builtin_memcpy(((void *)_X4_dstU1U_1), ((const void *)(&_X1ai_1)), sizeof(signed int )));
+}
+__extension__ enum E {
+    _X1RKM1E_1,
+    _X1GKM1E_1,
+    _X1BKM1E_1,
+};
+__extension__ signed int _X1fFi___1();
+__extension__ signed int i;
+__extension__ signed int j;
+__extension__ signed int _X4fredFi_i__1(signed int _X1pi_1){
+    __attribute__ ((unused)) signed int _X12_retval_fredi_1;
+    __extension__ struct S {
+        __extension__ signed int _X1ai_2;
+        __extension__ signed int _X1bi_2;
+        __extension__ signed int _X1ci_2;
+        __extension__ signed int *_X1xPi_2;
+        __extension__ signed int *_X1yPi_2;
+        __extension__ signed int *_X1zPi_2;
+    };
+    inline void _X12_constructorFv_S1S_autogen___2(struct S *_X4_dstS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1SS1S_autogen___2(struct S *_X4_dstS1S_2, struct S _X4_srcS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X4_srcS1S_2._X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X4_srcS1S_2._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X4_srcS1S_2._X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2=_X4_srcS1S_2._X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2=_X4_srcS1S_2._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2=_X4_srcS1S_2._X1zPi_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S1S_autogen___2(struct S *_X4_dstS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ai_2) /* ^?{} */);
+    }
+    inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___2(struct S *_X4_dstS1S_2, struct S _X4_srcS1S_2){
+        struct S _X4_retS1S_2;
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X4_srcS1S_2._X1ai_2));
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X4_srcS1S_2._X1bi_2));
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X4_srcS1S_2._X1ci_2));
+        ((void)((*_X4_dstS1S_2)._X1xPi_2=_X4_srcS1S_2._X1xPi_2));
+        ((void)((*_X4_dstS1S_2)._X1yPi_2=_X4_srcS1S_2._X1yPi_2));
+        ((void)((*_X4_dstS1S_2)._X1zPi_2=_X4_srcS1S_2._X1zPi_2));
+        ((void)_X12_constructorFv_S1SS1S_autogen___2((&_X4_retS1S_2), (*_X4_dstS1S_2)));
+        return _X4_retS1S_2;
+    }
+    inline void _X12_constructorFv_S1Si_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1Sii_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1Siii_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1SiiiPi_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2, signed int *_X1xPi_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2=_X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1SiiiPiPi_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2, signed int *_X1xPi_2, signed int *_X1yPi_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2=_X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2=_X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1SiiiPiPiPi_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2, signed int *_X1xPi_2, signed int *_X1yPi_2, signed int *_X1zPi_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X1ci_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1xPi_2=_X1xPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1yPi_2=_X1yPi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1zPi_2=_X1zPi_2) /* ?{} */);
+    }
+    signed int _X1ii_2 = (__extension__ _X1ai_1+__extension__ 3);
+    ((void)__extension__ 3);
+    ((void)__extension__ _X1ai_1);
+    __extension__ signed int _X1ai_2;
+    __extension__ signed int _X1bi_2;
+    __extension__ signed int _X1ci_2;
+    ((void)(__extension__ _X1ai_2=(__extension__ _X1bi_2+__extension__ _X1ci_2)));
+    signed int _tmp_cp_ret2;
+    ((void)(((void)(_tmp_cp_ret2=__extension__ _X4fredFi_i__1(3))) , _tmp_cp_ret2));
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
+    __extension__ signed int _X4maryFi_i__2(signed int _X1pi_2){
+        __attribute__ ((unused)) signed int _X12_retval_maryi_2;
+    }
+    ((void)__extension__ sizeof(3));
+    ((void)__extension__ ((3!=((signed int )0)) || (4!=((signed int )0))));
+    ((void)__extension__ __alignof__(__extension__ _X1ai_2));
+    ((void)((__extension__ _X1ai_2!=((signed int )0)) || (((__extension__ _X1bi_2!=((signed int )0)) && (__extension__ _X1ci_2!=((signed int )0)))!=((signed int )0))));
+    ((void)(((__extension__ _X1ai_2>__extension__ _X1bi_2)!=((signed int )0)) ? __extension__ _X1ci_2 : __extension__ _X1ci_2));
+    ((void)(__extension__ _X1ai_2=__extension__ (__extension__ _X1bi_2+__extension__ _X1ci_2)));
+    ((void)(((void)(((void)__extension__ _X1ai_2) , __extension__ _X1bi_2)) , __extension__ _X1ci_2));
+}
Index: tests/.expect/fallthrough.txt
===================================================================
--- tests/.expect/fallthrough.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/fallthrough.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,20 @@
+case 1
+case 2
+case 3
+default
+
+case 1
+case 1
+0
+1
+2
+common
+default
+
+case 5
+common2
+
+case 5
+check
+common
+default
Index: tests/.expect/forctrl.txt
===================================================================
--- tests/.expect/forctrl.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/forctrl.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,15 @@
+empty
+empty
+empty
+X X X X X X X X X X
+Y Y Y Y Y
+Z Z Z Z Z
+0 1 2 3 4 5 6 7 8 9
+0 1 2 3 4 5 6 7 8 9
+0.5 1.5 2.5 3.5 4.5
+2 4 6 8 10
+2 4 6 8 10
+3 6 9
+(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
+(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
+(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
Index: tests/.expect/fstream_test.txt
===================================================================
--- tests/.expect/fstream_test.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/fstream_test.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,5 @@
+Entrez un nombre, s'il vous plaît:
+Vous avez entré -2
+le nombre -2 est négatif
+Entrez trois nombres, s'il vous plaît:
+Vous avez entré i:2 j:3 k:4
Index: tests/.expect/function-operator.txt
===================================================================
--- tests/.expect/function-operator.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/function-operator.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,32 @@
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+Found 5 in x.
+Did not find 5 in y.
+0
+2
+4
+6
+8
+10
+12
+14
+16
+18
Index: tests/.expect/functions.x64.txt
===================================================================
--- tests/.expect/functions.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/functions.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,249 @@
+void _X1hFv___1(void){
+}
+signed int _X1fFi_Fi__Fi_i_Fi__Fi_i_Fv____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 (*_X1gFv___1)(void)){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    ((void)(*_X1gFv___1)());
+    ((void)_X1gFv___1());
+    ((void)(_X1gFv___1=_X1hFv___1));
+}
+signed int _X2f1Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+signed int _X2f2Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f2i_1;
+}
+signed int (*_X2f3FFi_____1())(){
+    __attribute__ ((unused)) signed int (*_X10_retval_f3Fi___1)();
+}
+signed int *_X2f4FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f4Pi_1;
+}
+signed int (*_X2f5FFi_____1())(){
+    __attribute__ ((unused)) signed int (*_X10_retval_f5Fi___1)();
+}
+signed int *_X2f6FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f6Pi_1;
+}
+signed int *_X2f7FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f7Pi_1;
+}
+signed int **_X2f8FPPi___1(){
+    __attribute__ ((unused)) signed int **_X10_retval_f8PPi_1;
+}
+signed int *const *_X2f9FPKPi___1(){
+    __attribute__ ((unused)) signed int *const *_X10_retval_f9PKPi_1;
+}
+signed int (*_X3f10FPA0i___1())[]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f10PA0i_1)[];
+}
+signed int (*_X3f11FPA0A0i___1())[][((unsigned long int )3)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f11PA0A0i_1)[][((unsigned long int )3)];
+}
+signed int (*_X3f12FPA0A0i___1())[][((unsigned long int )3)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f12PA0A0i_1)[][((unsigned long int )3)];
+}
+signed int _X4fII1Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X12_retval_fII1i_1;
+}
+const signed int _X4fII2Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X12_retval_fII2Ki_1;
+}
+extern signed int _X4fII3Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X12_retval_fII3i_1;
+}
+extern const signed int _X4fII4Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X12_retval_fII4Ki_1;
+}
+signed int *_X4fII5FPi___1(){
+    __attribute__ ((unused)) signed int *_X12_retval_fII5Pi_1;
+}
+signed int *const _X4fII6FPi___1(){
+    __attribute__ ((unused)) signed int *const _X12_retval_fII6KPi_1;
+}
+const signed long int *_X4fII7FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII7PKl_1;
+}
+static const signed long int *_X4fII8FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII8PKl_1;
+}
+static const signed long int *_X4fII9FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII9PKl_1;
+}
+signed int _X3fO1Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO1i_1;
+}
+signed int _X3fO2Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO2i_1;
+}
+const signed int _X3fO3Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X11_retval_fO3Ki_1;
+}
+extern signed int _X3fO4Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO4i_1;
+}
+extern const signed int _X3fO5Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X11_retval_fO5Ki_1;
+}
+signed int _X1fFi___1(void);
+signed int _X1fFi_i__1(signed int __anonymous_object6);
+signed int _X1fFi___1(void){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi_i__1(signed int __anonymous_object7){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi___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_Y15tuple_param_2_0, unsigned long int _alignof_Y15tuple_param_2_0, unsigned long int _sizeof_Y15tuple_param_2_1, unsigned long int _alignof_Y15tuple_param_2_1){
+    ((void)((*_sizeof__tuple2_)=0));
+    ((void)((*_alignof__tuple2_)=1));
+    ((void)(_offsetof__tuple2_[0]=(*_sizeof__tuple2_)));
+    ((void)((*_sizeof__tuple2_)+=_sizeof_Y15tuple_param_2_0));
+    if ( ((*_alignof__tuple2_)<_alignof_Y15tuple_param_2_0) ) ((void)((*_alignof__tuple2_)=_alignof_Y15tuple_param_2_0));
+
+    if ( ((*_sizeof__tuple2_)&(_alignof_Y15tuple_param_2_1-1)) ) ((void)((*_sizeof__tuple2_)+=(_alignof_Y15tuple_param_2_1-((*_sizeof__tuple2_)&(_alignof_Y15tuple_param_2_1-1)))));
+
+    ((void)(_offsetof__tuple2_[1]=(*_sizeof__tuple2_)));
+    ((void)((*_sizeof__tuple2_)+=_sizeof_Y15tuple_param_2_1));
+    if ( ((*_alignof__tuple2_)<_alignof_Y15tuple_param_2_1) ) ((void)((*_alignof__tuple2_)=_alignof_Y15tuple_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 _X1fFT2ii___1(void);
+struct _conc__tuple2_0 _X1fFT2ii_ii__1(signed int __anonymous_object8, signed int _X1xi_1);
+struct _conc__tuple2_0 _X1fFT2ii___1(void){
+    __attribute__ ((unused)) struct _conc__tuple2_0 _X9_retval_fT2ii_1 = {  };
+}
+struct _conc__tuple2_0 _X1fFT2ii_ii__1(signed int __anonymous_object9, signed int _X1xi_1){
+    __attribute__ ((unused)) struct _conc__tuple2_0 _X9_retval_fT2ii_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_Y15tuple_param_3_0, unsigned long int _alignof_Y15tuple_param_3_0, unsigned long int _sizeof_Y15tuple_param_3_1, unsigned long int _alignof_Y15tuple_param_3_1, unsigned long int _sizeof_Y15tuple_param_3_2, unsigned long int _alignof_Y15tuple_param_3_2){
+    ((void)((*_sizeof__tuple3_)=0));
+    ((void)((*_alignof__tuple3_)=1));
+    ((void)(_offsetof__tuple3_[0]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_0));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_0) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_0));
+
+    if ( ((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_1-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_Y15tuple_param_3_1-((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_1-1)))));
+
+    ((void)(_offsetof__tuple3_[1]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_1));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_1) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_1));
+
+    if ( ((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_2-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_Y15tuple_param_3_2-((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_2-1)))));
+
+    ((void)(_offsetof__tuple3_[2]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_2));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_2) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_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 _X1fFT3iii___1(void);
+struct _conc__tuple3_1 _X1fFT3iii_iii__1(signed int __anonymous_object10, signed int _X1xi_1, signed int __anonymous_object11);
+struct _conc__tuple3_1 _X1fFT3iii___1(void){
+    __attribute__ ((unused)) struct _conc__tuple3_1 _X9_retval_fT3iii_1 = {  };
+}
+struct _conc__tuple3_1 _X1fFT3iii_iii__1(signed int __anonymous_object12, signed int _X1xi_1, signed int __anonymous_object13){
+    __attribute__ ((unused)) struct _conc__tuple3_1 _X9_retval_fT3iii_1 = {  };
+}
+struct _conc__tuple3_2 {
+    signed int field_0;
+    signed int field_1;
+    signed int *field_2;
+};
+struct _conc__tuple3_2 _X1fFT3iiPi___1(void);
+struct _conc__tuple3_2 _X1fFT3iiPi_iiPi__1(signed int __anonymous_object14, signed int _X1xi_1, signed int *_X1yPi_1);
+struct _conc__tuple3_2 _X1fFT3iiPi___1(void){
+    __attribute__ ((unused)) struct _conc__tuple3_2 _X9_retval_fT3iiPi_1 = {  };
+}
+struct _conc__tuple3_2 _X1fFT3iiPi_iiPi__1(signed int __anonymous_object15, signed int _X1xi_1, signed int *_X1yPi_1){
+    __attribute__ ((unused)) struct _conc__tuple3_2 _X9_retval_fT3iiPi_1 = {  };
+}
+signed int _X3f11Fi_i__1(signed int __anonymous_object16);
+signed int _X3f12Fi___1(void);
+const double _X4bar1Fd___1();
+const double _X4bar2Fd_i__1(signed int __anonymous_object17);
+const double _X4bar3Fd_d__1(double __anonymous_object18);
+const double _X3fooFd___1(void);
+const double _X3fooFd_i__1(signed int __anonymous_object19);
+const double _X3fooFd_d__1(double __anonymous_object20){
+    __attribute__ ((unused)) const double _X11_retval_fooKd_1;
+    ((void)((*((double *)(&_X11_retval_fooKd_1)))=3.0) /* ?{} */);
+    return _X11_retval_fooKd_1;
+}
+struct S {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    struct S _X4_retS1S_1;
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1));
+    ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
+    return _X4_retS1S_1;
+}
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+struct S _X3rtnFS1S_i__1(signed int __anonymous_object21){
+    __attribute__ ((unused)) struct S _X11_retval_rtnS1S_1;
+}
+signed int _X1fFi_Fi_ii_Fi_i___1(signed int (*__anonymous_object22)(signed int __anonymous_object23, signed int _X1pi_1), signed int (*__anonymous_object24)(signed int __anonymous_object25)){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    signed int (*(*_X2pcPA0A0PA0A0i_2)[][((unsigned long int )10)])[][((unsigned long int )3)];
+    signed int (*(*_X1pPA0A0PA0A0i_2)[][((unsigned long int )10)])[][((unsigned long int )3)];
+    signed int (*(*_X1pPA0Fi_i__2)[])(signed int __anonymous_object26);
+}
+static const signed int *_X2f1FPKi___1(){
+    __attribute__ ((unused)) const signed int *_X10_retval_f1PKi_1;
+}
+static const signed int *_X2f2FPKi___1(void){
+    __attribute__ ((unused)) const signed int *_X10_retval_f2PKi_1;
+}
+static inline signed int *const _X2f3FPi___1(void){
+    __attribute__ ((unused)) signed int *const _X10_retval_f3KPi_1;
+}
+struct _conc__tuple2_3 {
+    signed int *field_0;
+    signed int field_1;
+};
+static inline const struct _conc__tuple2_3 _X2f4FT2Pii___1(void){
+    __attribute__ ((unused)) const struct _conc__tuple2_3 _X10_retval_f4KT2Pii_1;
+}
+static const struct _conc__tuple2_3 _X2f5FT2PiKi___1(void){
+    __attribute__ ((unused)) const struct _conc__tuple2_3 _X10_retval_f5KT2PiKi_1;
+}
+signed int _X1fFi_Fi__FPi__FPPi__FPKPi__FPKPi__PiPiPPiPPiPPPiPPPiPPKPiPPKPiPKPKPiPKPKPi__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 _X1fFi_Fi__FPi__FPPi__FPKPi__FPKPi__PiPiPPiPPiPPPiPPPiPPKPiPPKPiPKPKPiPKPKPi__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 _X9_retval_fi_1;
+}
+signed int _X1fFi_Pii__1(signed int *_X1fPi_1, signed int _X1ti_1){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    signed int _X1Ti_2;
+}
Index: tests/.expect/functions.x86.txt
===================================================================
--- tests/.expect/functions.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/functions.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,249 @@
+void _X1hFv___1(void){
+}
+signed int _X1fFi_Fi__Fi_i_Fi__Fi_i_Fv____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 (*_X1gFv___1)(void)){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    ((void)(*_X1gFv___1)());
+    ((void)_X1gFv___1());
+    ((void)(_X1gFv___1=_X1hFv___1));
+}
+signed int _X2f1Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+signed int _X2f2Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f2i_1;
+}
+signed int (*_X2f3FFi_____1())(){
+    __attribute__ ((unused)) signed int (*_X10_retval_f3Fi___1)();
+}
+signed int *_X2f4FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f4Pi_1;
+}
+signed int (*_X2f5FFi_____1())(){
+    __attribute__ ((unused)) signed int (*_X10_retval_f5Fi___1)();
+}
+signed int *_X2f6FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f6Pi_1;
+}
+signed int *_X2f7FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f7Pi_1;
+}
+signed int **_X2f8FPPi___1(){
+    __attribute__ ((unused)) signed int **_X10_retval_f8PPi_1;
+}
+signed int *const *_X2f9FPKPi___1(){
+    __attribute__ ((unused)) signed int *const *_X10_retval_f9PKPi_1;
+}
+signed int (*_X3f10FPA0i___1())[]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f10PA0i_1)[];
+}
+signed int (*_X3f11FPA0A0i___1())[][((unsigned int )3)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f11PA0A0i_1)[][((unsigned int )3)];
+}
+signed int (*_X3f12FPA0A0i___1())[][((unsigned int )3)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f12PA0A0i_1)[][((unsigned int )3)];
+}
+signed int _X4fII1Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X12_retval_fII1i_1;
+}
+const signed int _X4fII2Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X12_retval_fII2Ki_1;
+}
+extern signed int _X4fII3Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X12_retval_fII3i_1;
+}
+extern const signed int _X4fII4Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X12_retval_fII4Ki_1;
+}
+signed int *_X4fII5FPi___1(){
+    __attribute__ ((unused)) signed int *_X12_retval_fII5Pi_1;
+}
+signed int *const _X4fII6FPi___1(){
+    __attribute__ ((unused)) signed int *const _X12_retval_fII6KPi_1;
+}
+const signed long int *_X4fII7FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII7PKl_1;
+}
+static const signed long int *_X4fII8FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII8PKl_1;
+}
+static const signed long int *_X4fII9FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII9PKl_1;
+}
+signed int _X3fO1Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO1i_1;
+}
+signed int _X3fO2Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO2i_1;
+}
+const signed int _X3fO3Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X11_retval_fO3Ki_1;
+}
+extern signed int _X3fO4Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO4i_1;
+}
+extern const signed int _X3fO5Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X11_retval_fO5Ki_1;
+}
+signed int _X1fFi___1(void);
+signed int _X1fFi_i__1(signed int __anonymous_object6);
+signed int _X1fFi___1(void){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi_i__1(signed int __anonymous_object7){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi___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_Y15tuple_param_2_0, unsigned long int _alignof_Y15tuple_param_2_0, unsigned long int _sizeof_Y15tuple_param_2_1, unsigned long int _alignof_Y15tuple_param_2_1){
+    ((void)((*_sizeof__tuple2_)=0));
+    ((void)((*_alignof__tuple2_)=1));
+    ((void)(_offsetof__tuple2_[0]=(*_sizeof__tuple2_)));
+    ((void)((*_sizeof__tuple2_)+=_sizeof_Y15tuple_param_2_0));
+    if ( ((*_alignof__tuple2_)<_alignof_Y15tuple_param_2_0) ) ((void)((*_alignof__tuple2_)=_alignof_Y15tuple_param_2_0));
+
+    if ( ((*_sizeof__tuple2_)&(_alignof_Y15tuple_param_2_1-1)) ) ((void)((*_sizeof__tuple2_)+=(_alignof_Y15tuple_param_2_1-((*_sizeof__tuple2_)&(_alignof_Y15tuple_param_2_1-1)))));
+
+    ((void)(_offsetof__tuple2_[1]=(*_sizeof__tuple2_)));
+    ((void)((*_sizeof__tuple2_)+=_sizeof_Y15tuple_param_2_1));
+    if ( ((*_alignof__tuple2_)<_alignof_Y15tuple_param_2_1) ) ((void)((*_alignof__tuple2_)=_alignof_Y15tuple_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 _X1fFT2ii___1(void);
+struct _conc__tuple2_0 _X1fFT2ii_ii__1(signed int __anonymous_object8, signed int _X1xi_1);
+struct _conc__tuple2_0 _X1fFT2ii___1(void){
+    __attribute__ ((unused)) struct _conc__tuple2_0 _X9_retval_fT2ii_1 = {  };
+}
+struct _conc__tuple2_0 _X1fFT2ii_ii__1(signed int __anonymous_object9, signed int _X1xi_1){
+    __attribute__ ((unused)) struct _conc__tuple2_0 _X9_retval_fT2ii_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_Y15tuple_param_3_0, unsigned long int _alignof_Y15tuple_param_3_0, unsigned long int _sizeof_Y15tuple_param_3_1, unsigned long int _alignof_Y15tuple_param_3_1, unsigned long int _sizeof_Y15tuple_param_3_2, unsigned long int _alignof_Y15tuple_param_3_2){
+    ((void)((*_sizeof__tuple3_)=0));
+    ((void)((*_alignof__tuple3_)=1));
+    ((void)(_offsetof__tuple3_[0]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_0));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_0) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_0));
+
+    if ( ((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_1-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_Y15tuple_param_3_1-((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_1-1)))));
+
+    ((void)(_offsetof__tuple3_[1]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_1));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_1) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_1));
+
+    if ( ((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_2-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_Y15tuple_param_3_2-((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_2-1)))));
+
+    ((void)(_offsetof__tuple3_[2]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_2));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_2) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_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 _X1fFT3iii___1(void);
+struct _conc__tuple3_1 _X1fFT3iii_iii__1(signed int __anonymous_object10, signed int _X1xi_1, signed int __anonymous_object11);
+struct _conc__tuple3_1 _X1fFT3iii___1(void){
+    __attribute__ ((unused)) struct _conc__tuple3_1 _X9_retval_fT3iii_1 = {  };
+}
+struct _conc__tuple3_1 _X1fFT3iii_iii__1(signed int __anonymous_object12, signed int _X1xi_1, signed int __anonymous_object13){
+    __attribute__ ((unused)) struct _conc__tuple3_1 _X9_retval_fT3iii_1 = {  };
+}
+struct _conc__tuple3_2 {
+    signed int field_0;
+    signed int field_1;
+    signed int *field_2;
+};
+struct _conc__tuple3_2 _X1fFT3iiPi___1(void);
+struct _conc__tuple3_2 _X1fFT3iiPi_iiPi__1(signed int __anonymous_object14, signed int _X1xi_1, signed int *_X1yPi_1);
+struct _conc__tuple3_2 _X1fFT3iiPi___1(void){
+    __attribute__ ((unused)) struct _conc__tuple3_2 _X9_retval_fT3iiPi_1 = {  };
+}
+struct _conc__tuple3_2 _X1fFT3iiPi_iiPi__1(signed int __anonymous_object15, signed int _X1xi_1, signed int *_X1yPi_1){
+    __attribute__ ((unused)) struct _conc__tuple3_2 _X9_retval_fT3iiPi_1 = {  };
+}
+signed int _X3f11Fi_i__1(signed int __anonymous_object16);
+signed int _X3f12Fi___1(void);
+const double _X4bar1Fd___1();
+const double _X4bar2Fd_i__1(signed int __anonymous_object17);
+const double _X4bar3Fd_d__1(double __anonymous_object18);
+const double _X3fooFd___1(void);
+const double _X3fooFd_i__1(signed int __anonymous_object19);
+const double _X3fooFd_d__1(double __anonymous_object20){
+    __attribute__ ((unused)) const double _X11_retval_fooKd_1;
+    ((void)((*((double *)(&_X11_retval_fooKd_1)))=3.0) /* ?{} */);
+    return _X11_retval_fooKd_1;
+}
+struct S {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1) /* ?{} */);
+}
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1) /* ?{} */);
+}
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1) /* ^?{} */);
+}
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    struct S _X4_retS1S_1;
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1));
+    ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
+    return _X4_retS1S_1;
+}
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1){
+    ((void)((*_X4_dstS1S_1)._X1ii_1=_X1ii_1) /* ?{} */);
+}
+struct S _X3rtnFS1S_i__1(signed int __anonymous_object21){
+    __attribute__ ((unused)) struct S _X11_retval_rtnS1S_1;
+}
+signed int _X1fFi_Fi_ii_Fi_i___1(signed int (*__anonymous_object22)(signed int __anonymous_object23, signed int _X1pi_1), signed int (*__anonymous_object24)(signed int __anonymous_object25)){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    signed int (*(*_X2pcPA0A0PA0A0i_2)[][((unsigned int )10)])[][((unsigned int )3)];
+    signed int (*(*_X1pPA0A0PA0A0i_2)[][((unsigned int )10)])[][((unsigned int )3)];
+    signed int (*(*_X1pPA0Fi_i__2)[])(signed int __anonymous_object26);
+}
+static const signed int *_X2f1FPKi___1(){
+    __attribute__ ((unused)) const signed int *_X10_retval_f1PKi_1;
+}
+static const signed int *_X2f2FPKi___1(void){
+    __attribute__ ((unused)) const signed int *_X10_retval_f2PKi_1;
+}
+static inline signed int *const _X2f3FPi___1(void){
+    __attribute__ ((unused)) signed int *const _X10_retval_f3KPi_1;
+}
+struct _conc__tuple2_3 {
+    signed int *field_0;
+    signed int field_1;
+};
+static inline const struct _conc__tuple2_3 _X2f4FT2Pii___1(void){
+    __attribute__ ((unused)) const struct _conc__tuple2_3 _X10_retval_f4KT2Pii_1;
+}
+static const struct _conc__tuple2_3 _X2f5FT2PiKi___1(void){
+    __attribute__ ((unused)) const struct _conc__tuple2_3 _X10_retval_f5KT2PiKi_1;
+}
+signed int _X1fFi_Fi__FPi__FPPi__FPKPi__FPKPi__PiPiPPiPPiPPPiPPPiPPKPiPPKPiPKPKPiPKPKPi__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 int )10)], signed int **__anonymous_object34, signed int *__anonymous_object35[((unsigned int )10)], signed int ***__anonymous_object36, signed int **__anonymous_object37[((unsigned int )10)], signed int *const **__anonymous_object38, signed int *const *__anonymous_object39[((unsigned int )10)], signed int *const *const *__anonymous_object40, signed int *const *const __anonymous_object41[((unsigned int )10)]);
+signed int _X1fFi_Fi__FPi__FPPi__FPKPi__FPKPi__PiPiPPiPPiPPPiPPPiPPKPiPPKPiPKPKPiPKPKPi__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 int )10)], signed int **__anonymous_object49, signed int *__anonymous_object50[((unsigned int )10)], signed int ***__anonymous_object51, signed int **__anonymous_object52[((unsigned int )10)], signed int *const **__anonymous_object53, signed int *const *__anonymous_object54[((unsigned int )10)], signed int *const *const *__anonymous_object55, signed int *const *const __anonymous_object56[((unsigned int )10)]){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi_Pii__1(signed int *_X1fPi_1, signed int _X1ti_1){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    signed int _X1Ti_2;
+}
Index: tests/.expect/gccExtensions.x64.txt
===================================================================
--- tests/.expect/gccExtensions.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/gccExtensions.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,177 @@
+extern signed int _X1xi_1 asm ( "xx" );
+signed int _X4mainFi_iPPKc__1(signed int _X4argci_1, const char **_X4argvPPKc_1){
+    __attribute__ ((unused)) signed int _X12_retval_maini_1;
+    asm ( "nop" :  :  :  );
+    asm ( "nop" :  :  :  );
+    asm ( "nop" :  :  :  );
+    static signed int _X1yi_2 asm ( "yy" );
+    static signed int *_X1zPi_2 asm ( "zz" );
+    signed int _X3srci_2;
+    signed int _X3dsti_2;
+    asm volatile ( "mov %1, %0\n\t" "add $1, %0" :  :  :  );
+    asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=" "r" ( _X3dsti_2 ) :  :  );
+    asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( _X3dsti_2 ) : "r" ( _X3srci_2 ) :  );
+    asm ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( _X3dsti_2 ), "=r" ( _X3srci_2 ) : [ _X3srci_2 ] "r" ( _X3dsti_2 ) : "r0" );
+    L2: L1: asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5" :  : "r" ( _X3srci_2 ), "r" ( (&_X3dsti_2) ) : "r5", "memory" : L1, L2 );
+    double _Complex _X2c1Cd_2;
+    double _Complex _X2c2Cd_2;
+    const signed int _X2i1Ki_2;
+    const signed int _X2i2Ki_2;
+    const signed int _X2i3Ki_2;
+    inline signed int _X2f1Fi___2(){
+        __attribute__ ((unused)) signed int _X10_retval_f1i_2;
+    }
+    inline signed int _X2f2Fi___2(){
+        __attribute__ ((unused)) signed int _X10_retval_f2i_2;
+    }
+    signed int _X2s1i_2;
+    signed int _X2s2i_2;
+    volatile signed int _X2v1Vi_2;
+    volatile signed int _X2v2Vi_2;
+    signed int _X2t1i_2;
+    signed int _X2t2i_2;
+    __extension__ const signed int _X2exKi_2;
+    struct S {
+        __extension__ signed int _X1ai_2;
+        __extension__ signed int _X1bi_2;
+        __extension__ signed int _X1ci_2;
+    };
+    inline void _X12_constructorFv_S1S_autogen___2(struct S *_X4_dstS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1SS1S_autogen___2(struct S *_X4_dstS1S_2, struct S _X4_srcS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X4_srcS1S_2._X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X4_srcS1S_2._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X4_srcS1S_2._X1ci_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S1S_autogen___2(struct S *_X4_dstS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ai_2) /* ^?{} */);
+    }
+    inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___2(struct S *_X4_dstS1S_2, struct S _X4_srcS1S_2){
+        struct S _X4_retS1S_2;
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X4_srcS1S_2._X1ai_2));
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X4_srcS1S_2._X1bi_2));
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X4_srcS1S_2._X1ci_2));
+        ((void)_X12_constructorFv_S1SS1S_autogen___2((&_X4_retS1S_2), (*_X4_dstS1S_2)));
+        return _X4_retS1S_2;
+    }
+    inline void _X12_constructorFv_S1Si_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1Sii_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1Siii_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X1ci_2) /* ?{} */);
+    }
+    signed int _X1ii_2 = __extension__ 3;
+    __extension__ signed int _X1ai_2;
+    __extension__ signed int _X1bi_2;
+    __extension__ signed int _X1ci_2;
+    ((void)(((void)(((void)__extension__ _X1ai_2) , __extension__ _X1bi_2)) , __extension__ _X1ci_2));
+    ((void)(__extension__ _X1ai_2=(__extension__ _X1bi_2+__extension__ _X1ci_2)));
+    ((void)(__extension__ _X1ai_2=__extension__ (__extension__ _X1bi_2+__extension__ _X1ci_2)));
+    signed int _X2a1i_2;
+    const signed int _X2a2Ki_2;
+    static const signed int _X2a3Ki_2;
+    static const signed int _X2a4Ki_2;
+    static const signed int _X2a5Ki_2;
+    static const signed int _X2a6Ki_2;
+    static const signed int _X2a7Ki_2;
+    signed int *_X2p1Pi_2;
+    signed int *_X2p2Pi_2;
+    struct s1;
+    struct s2 {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S2s2_autogen___2(struct s2 *_X4_dstS2s2_2){
+        ((void)((*_X4_dstS2s2_2)._X1ii_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S2s2S2s2_autogen___2(struct s2 *_X4_dstS2s2_2, struct s2 _X4_srcS2s2_2){
+        ((void)((*_X4_dstS2s2_2)._X1ii_2=_X4_srcS2s2_2._X1ii_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S2s2_autogen___2(struct s2 *_X4_dstS2s2_2){
+        ((void)((*_X4_dstS2s2_2)._X1ii_2) /* ^?{} */);
+    }
+    inline struct s2 _X16_operator_assignFS2s2_S2s2S2s2_autogen___2(struct s2 *_X4_dstS2s2_2, struct s2 _X4_srcS2s2_2){
+        struct s2 _X4_retS2s2_2;
+        ((void)((*_X4_dstS2s2_2)._X1ii_2=_X4_srcS2s2_2._X1ii_2));
+        ((void)_X12_constructorFv_S2s2S2s2_autogen___2((&_X4_retS2s2_2), (*_X4_dstS2s2_2)));
+        return _X4_retS2s2_2;
+    }
+    inline void _X12_constructorFv_S2s2i_autogen___2(struct s2 *_X4_dstS2s2_2, signed int _X1ii_2){
+        ((void)((*_X4_dstS2s2_2)._X1ii_2=_X1ii_2) /* ?{} */);
+    }
+    struct s3 {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S2s3_autogen___2(struct s3 *_X4_dstS2s3_2){
+        ((void)((*_X4_dstS2s3_2)._X1ii_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S2s3S2s3_autogen___2(struct s3 *_X4_dstS2s3_2, struct s3 _X4_srcS2s3_2){
+        ((void)((*_X4_dstS2s3_2)._X1ii_2=_X4_srcS2s3_2._X1ii_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S2s3_autogen___2(struct s3 *_X4_dstS2s3_2){
+        ((void)((*_X4_dstS2s3_2)._X1ii_2) /* ^?{} */);
+    }
+    inline struct s3 _X16_operator_assignFS2s3_S2s3S2s3_autogen___2(struct s3 *_X4_dstS2s3_2, struct s3 _X4_srcS2s3_2){
+        struct s3 _X4_retS2s3_2;
+        ((void)((*_X4_dstS2s3_2)._X1ii_2=_X4_srcS2s3_2._X1ii_2));
+        ((void)_X12_constructorFv_S2s3S2s3_autogen___2((&_X4_retS2s3_2), (*_X4_dstS2s3_2)));
+        return _X4_retS2s3_2;
+    }
+    inline void _X12_constructorFv_S2s3i_autogen___2(struct s3 *_X4_dstS2s3_2, signed int _X1ii_2){
+        ((void)((*_X4_dstS2s3_2)._X1ii_2=_X1ii_2) /* ?{} */);
+    }
+    struct s3 _X2x1S2s3_2;
+    struct s3 _X2y1S2s3_2;
+    struct s4 {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S2s4_autogen___2(struct s4 *_X4_dstS2s4_2){
+        ((void)((*_X4_dstS2s4_2)._X1ii_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S2s4S2s4_autogen___2(struct s4 *_X4_dstS2s4_2, struct s4 _X4_srcS2s4_2){
+        ((void)((*_X4_dstS2s4_2)._X1ii_2=_X4_srcS2s4_2._X1ii_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S2s4_autogen___2(struct s4 *_X4_dstS2s4_2){
+        ((void)((*_X4_dstS2s4_2)._X1ii_2) /* ^?{} */);
+    }
+    inline struct s4 _X16_operator_assignFS2s4_S2s4S2s4_autogen___2(struct s4 *_X4_dstS2s4_2, struct s4 _X4_srcS2s4_2){
+        struct s4 _X4_retS2s4_2;
+        ((void)((*_X4_dstS2s4_2)._X1ii_2=_X4_srcS2s4_2._X1ii_2));
+        ((void)_X12_constructorFv_S2s4S2s4_autogen___2((&_X4_retS2s4_2), (*_X4_dstS2s4_2)));
+        return _X4_retS2s4_2;
+    }
+    inline void _X12_constructorFv_S2s4i_autogen___2(struct s4 *_X4_dstS2s4_2, signed int _X1ii_2){
+        ((void)((*_X4_dstS2s4_2)._X1ii_2=_X1ii_2) /* ?{} */);
+    }
+    struct s4 _X2x2S2s4_2;
+    struct s4 _X2y2S2s4_2;
+    signed int _X2m1A0i_2[((unsigned long int )10)];
+    signed int _X2m2A0A0i_2[((unsigned long int )10)][((unsigned long int )10)];
+    signed int _X2m3A0A0i_2[((unsigned long int )10)][((unsigned long int )10)];
+    ((void)(_X12_retval_maini_1=((signed int )0)) /* ?{} */);
+    return _X12_retval_maini_1;
+    ((void)(_X12_retval_maini_1=0) /* ?{} */);
+    return _X12_retval_maini_1;
+}
+static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return _X4mainFi_iPPKc__1((signed int )argc, (const char **)argv); }
+static inline signed int invoke_main(signed int argc, char **argv, char **envp);
+signed int main(signed int _X4argci_1, char **_X4argvPPc_1, char **_X4envpPPc_1){
+    __attribute__ ((unused)) signed int _X12_retval_maini_1;
+    signed int _tmp_cp_ret2;
+    ((void)(_X12_retval_maini_1=(((void)(_tmp_cp_ret2=invoke_main(_X4argci_1, _X4argvPPc_1, _X4envpPPc_1))) , _tmp_cp_ret2)) /* ?{} */);
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
+    return _X12_retval_maini_1;
+}
Index: tests/.expect/gccExtensions.x86.txt
===================================================================
--- tests/.expect/gccExtensions.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/gccExtensions.x86.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,177 @@
+extern signed int _X1xi_1 asm ( "xx" );
+signed int _X4mainFi_iPPKc__1(signed int _X4argci_1, const char **_X4argvPPKc_1){
+    __attribute__ ((unused)) signed int _X12_retval_maini_1;
+    asm ( "nop" :  :  :  );
+    asm ( "nop" :  :  :  );
+    asm ( "nop" :  :  :  );
+    static signed int _X1yi_2 asm ( "yy" );
+    static signed int *_X1zPi_2 asm ( "zz" );
+    signed int _X3srci_2;
+    signed int _X3dsti_2;
+    asm volatile ( "mov %1, %0\n\t" "add $1, %0" :  :  :  );
+    asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=" "r" ( _X3dsti_2 ) :  :  );
+    asm volatile ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( _X3dsti_2 ) : "r" ( _X3srci_2 ) :  );
+    asm ( "mov %1, %0\n\t" "add $1, %0" : "=r" ( _X3dsti_2 ), "=r" ( _X3srci_2 ) : [ _X3srci_2 ] "r" ( _X3dsti_2 ) : "r0" );
+    L2: L1: asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5" :  : "r" ( _X3srci_2 ), "r" ( (&_X3dsti_2) ) : "r5", "memory" : L1, L2 );
+    double _Complex _X2c1Cd_2;
+    double _Complex _X2c2Cd_2;
+    const signed int _X2i1Ki_2;
+    const signed int _X2i2Ki_2;
+    const signed int _X2i3Ki_2;
+    inline signed int _X2f1Fi___2(){
+        __attribute__ ((unused)) signed int _X10_retval_f1i_2;
+    }
+    inline signed int _X2f2Fi___2(){
+        __attribute__ ((unused)) signed int _X10_retval_f2i_2;
+    }
+    signed int _X2s1i_2;
+    signed int _X2s2i_2;
+    volatile signed int _X2v1Vi_2;
+    volatile signed int _X2v2Vi_2;
+    signed int _X2t1i_2;
+    signed int _X2t2i_2;
+    __extension__ const signed int _X2exKi_2;
+    struct S {
+        __extension__ signed int _X1ai_2;
+        __extension__ signed int _X1bi_2;
+        __extension__ signed int _X1ci_2;
+    };
+    inline void _X12_constructorFv_S1S_autogen___2(struct S *_X4_dstS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1SS1S_autogen___2(struct S *_X4_dstS1S_2, struct S _X4_srcS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X4_srcS1S_2._X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X4_srcS1S_2._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X4_srcS1S_2._X1ci_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S1S_autogen___2(struct S *_X4_dstS1S_2){
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ^?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ai_2) /* ^?{} */);
+    }
+    inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___2(struct S *_X4_dstS1S_2, struct S _X4_srcS1S_2){
+        struct S _X4_retS1S_2;
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X4_srcS1S_2._X1ai_2));
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X4_srcS1S_2._X1bi_2));
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X4_srcS1S_2._X1ci_2));
+        ((void)_X12_constructorFv_S1SS1S_autogen___2((&_X4_retS1S_2), (*_X4_dstS1S_2)));
+        return _X4_retS1S_2;
+    }
+    inline void _X12_constructorFv_S1Si_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1Sii_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S1Siii_autogen___2(struct S *_X4_dstS1S_2, signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2){
+        ((void)((*_X4_dstS1S_2)._X1ai_2=_X1ai_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1bi_2=_X1bi_2) /* ?{} */);
+        ((void)((*_X4_dstS1S_2)._X1ci_2=_X1ci_2) /* ?{} */);
+    }
+    signed int _X1ii_2 = __extension__ 3;
+    __extension__ signed int _X1ai_2;
+    __extension__ signed int _X1bi_2;
+    __extension__ signed int _X1ci_2;
+    ((void)(((void)(((void)__extension__ _X1ai_2) , __extension__ _X1bi_2)) , __extension__ _X1ci_2));
+    ((void)(__extension__ _X1ai_2=(__extension__ _X1bi_2+__extension__ _X1ci_2)));
+    ((void)(__extension__ _X1ai_2=__extension__ (__extension__ _X1bi_2+__extension__ _X1ci_2)));
+    signed int _X2a1i_2;
+    const signed int _X2a2Ki_2;
+    static const signed int _X2a3Ki_2;
+    static const signed int _X2a4Ki_2;
+    static const signed int _X2a5Ki_2;
+    static const signed int _X2a6Ki_2;
+    static const signed int _X2a7Ki_2;
+    signed int *_X2p1Pi_2;
+    signed int *_X2p2Pi_2;
+    struct s1;
+    struct s2 {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S2s2_autogen___2(struct s2 *_X4_dstS2s2_2){
+        ((void)((*_X4_dstS2s2_2)._X1ii_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S2s2S2s2_autogen___2(struct s2 *_X4_dstS2s2_2, struct s2 _X4_srcS2s2_2){
+        ((void)((*_X4_dstS2s2_2)._X1ii_2=_X4_srcS2s2_2._X1ii_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S2s2_autogen___2(struct s2 *_X4_dstS2s2_2){
+        ((void)((*_X4_dstS2s2_2)._X1ii_2) /* ^?{} */);
+    }
+    inline struct s2 _X16_operator_assignFS2s2_S2s2S2s2_autogen___2(struct s2 *_X4_dstS2s2_2, struct s2 _X4_srcS2s2_2){
+        struct s2 _X4_retS2s2_2;
+        ((void)((*_X4_dstS2s2_2)._X1ii_2=_X4_srcS2s2_2._X1ii_2));
+        ((void)_X12_constructorFv_S2s2S2s2_autogen___2((&_X4_retS2s2_2), (*_X4_dstS2s2_2)));
+        return _X4_retS2s2_2;
+    }
+    inline void _X12_constructorFv_S2s2i_autogen___2(struct s2 *_X4_dstS2s2_2, signed int _X1ii_2){
+        ((void)((*_X4_dstS2s2_2)._X1ii_2=_X1ii_2) /* ?{} */);
+    }
+    struct s3 {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S2s3_autogen___2(struct s3 *_X4_dstS2s3_2){
+        ((void)((*_X4_dstS2s3_2)._X1ii_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S2s3S2s3_autogen___2(struct s3 *_X4_dstS2s3_2, struct s3 _X4_srcS2s3_2){
+        ((void)((*_X4_dstS2s3_2)._X1ii_2=_X4_srcS2s3_2._X1ii_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S2s3_autogen___2(struct s3 *_X4_dstS2s3_2){
+        ((void)((*_X4_dstS2s3_2)._X1ii_2) /* ^?{} */);
+    }
+    inline struct s3 _X16_operator_assignFS2s3_S2s3S2s3_autogen___2(struct s3 *_X4_dstS2s3_2, struct s3 _X4_srcS2s3_2){
+        struct s3 _X4_retS2s3_2;
+        ((void)((*_X4_dstS2s3_2)._X1ii_2=_X4_srcS2s3_2._X1ii_2));
+        ((void)_X12_constructorFv_S2s3S2s3_autogen___2((&_X4_retS2s3_2), (*_X4_dstS2s3_2)));
+        return _X4_retS2s3_2;
+    }
+    inline void _X12_constructorFv_S2s3i_autogen___2(struct s3 *_X4_dstS2s3_2, signed int _X1ii_2){
+        ((void)((*_X4_dstS2s3_2)._X1ii_2=_X1ii_2) /* ?{} */);
+    }
+    struct s3 _X2x1S2s3_2;
+    struct s3 _X2y1S2s3_2;
+    struct s4 {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S2s4_autogen___2(struct s4 *_X4_dstS2s4_2){
+        ((void)((*_X4_dstS2s4_2)._X1ii_2) /* ?{} */);
+    }
+    inline void _X12_constructorFv_S2s4S2s4_autogen___2(struct s4 *_X4_dstS2s4_2, struct s4 _X4_srcS2s4_2){
+        ((void)((*_X4_dstS2s4_2)._X1ii_2=_X4_srcS2s4_2._X1ii_2) /* ?{} */);
+    }
+    inline void _X11_destructorFv_S2s4_autogen___2(struct s4 *_X4_dstS2s4_2){
+        ((void)((*_X4_dstS2s4_2)._X1ii_2) /* ^?{} */);
+    }
+    inline struct s4 _X16_operator_assignFS2s4_S2s4S2s4_autogen___2(struct s4 *_X4_dstS2s4_2, struct s4 _X4_srcS2s4_2){
+        struct s4 _X4_retS2s4_2;
+        ((void)((*_X4_dstS2s4_2)._X1ii_2=_X4_srcS2s4_2._X1ii_2));
+        ((void)_X12_constructorFv_S2s4S2s4_autogen___2((&_X4_retS2s4_2), (*_X4_dstS2s4_2)));
+        return _X4_retS2s4_2;
+    }
+    inline void _X12_constructorFv_S2s4i_autogen___2(struct s4 *_X4_dstS2s4_2, signed int _X1ii_2){
+        ((void)((*_X4_dstS2s4_2)._X1ii_2=_X1ii_2) /* ?{} */);
+    }
+    struct s4 _X2x2S2s4_2;
+    struct s4 _X2y2S2s4_2;
+    signed int _X2m1A0i_2[((unsigned int )10)];
+    signed int _X2m2A0A0i_2[((unsigned int )10)][((unsigned int )10)];
+    signed int _X2m3A0A0i_2[((unsigned int )10)][((unsigned int )10)];
+    ((void)(_X12_retval_maini_1=((signed int )0)) /* ?{} */);
+    return _X12_retval_maini_1;
+    ((void)(_X12_retval_maini_1=0) /* ?{} */);
+    return _X12_retval_maini_1;
+}
+static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return _X4mainFi_iPPKc__1((signed int )argc, (const char **)argv); }
+static inline signed int invoke_main(signed int argc, char **argv, char **envp);
+signed int main(signed int _X4argci_1, char **_X4argvPPc_1, char **_X4envpPPc_1){
+    __attribute__ ((unused)) signed int _X12_retval_maini_1;
+    signed int _tmp_cp_ret2;
+    ((void)(_X12_retval_maini_1=(((void)(_tmp_cp_ret2=invoke_main(_X4argci_1, _X4argvPPc_1, _X4envpPPc_1))) , _tmp_cp_ret2)) /* ?{} */);
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
+    return _X12_retval_maini_1;
+}
Index: tests/.expect/genericUnion.txt
===================================================================
--- tests/.expect/genericUnion.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/genericUnion.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,2 @@
+00000000 ffffffff
+00000000 ffffffff
Index: tests/.expect/gmp.x64.txt
===================================================================
--- tests/.expect/gmp.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/gmp.x64.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,279 @@
+constructors
+50000000000000000000 3 50000000000000000003
+x:50000000000000000000 y:3 z:50000000000000000003
+conversions
+y:97
+y:12345678901234567890123456789
+y:200
+y:-400
+y:24691357802469135780246913578
+y:3
+y:-3
+y:4
+y:3
+y:3 b:3 si:3
+comparison
+1
+0
+0
+1
+0
+1
+arithmetic
+z:100000000000000000006
+z:50000000000000000000
+z:-3
+z:-450000000000000000000
+z:150000000000000000000
+z:150000000000000000000
+z:16666666666666666666
+16666666666666666666, 2 16666666666666666666, 2
+x:16666666666666666666 y:2
+
+12345678901234567890123456789 12345678901234567890123456789 12345678901234567890123456789
+
+Fibonacci Numbers
+0 0
+1 1
+2 1
+3 2
+4 3
+5 5
+6 8
+7 13
+8 21
+9 34
+10 55
+11 89
+12 144
+13 233
+14 377
+15 610
+16 987
+17 1597
+18 2584
+19 4181
+20 6765
+21 10946
+22 17711
+23 28657
+24 46368
+25 75025
+26 121393
+27 196418
+28 317811
+29 514229
+30 832040
+31 1346269
+32 2178309
+33 3524578
+34 5702887
+35 9227465
+36 14930352
+37 24157817
+38 39088169
+39 63245986
+40 102334155
+41 165580141
+42 267914296
+43 433494437
+44 701408733
+45 1134903170
+46 1836311903
+47 2971215073
+48 4807526976
+49 7778742049
+50 12586269025
+51 20365011074
+52 32951280099
+53 53316291173
+54 86267571272
+55 139583862445
+56 225851433717
+57 365435296162
+58 591286729879
+59 956722026041
+60 1548008755920
+61 2504730781961
+62 4052739537881
+63 6557470319842
+64 10610209857723
+65 17167680177565
+66 27777890035288
+67 44945570212853
+68 72723460248141
+69 117669030460994
+70 190392490709135
+71 308061521170129
+72 498454011879264
+73 806515533049393
+74 1304969544928657
+75 2111485077978050
+76 3416454622906707
+77 5527939700884757
+78 8944394323791464
+79 14472334024676221
+80 23416728348467685
+81 37889062373143906
+82 61305790721611591
+83 99194853094755497
+84 160500643816367088
+85 259695496911122585
+86 420196140727489673
+87 679891637638612258
+88 1100087778366101931
+89 1779979416004714189
+90 2880067194370816120
+91 4660046610375530309
+92 7540113804746346429
+93 12200160415121876738
+94 19740274219868223167
+95 31940434634990099905
+96 51680708854858323072
+97 83621143489848422977
+98 135301852344706746049
+99 218922995834555169026
+100 354224848179261915075
+101 573147844013817084101
+102 927372692193078999176
+103 1500520536206896083277
+104 2427893228399975082453
+105 3928413764606871165730
+106 6356306993006846248183
+107 10284720757613717413913
+108 16641027750620563662096
+109 26925748508234281076009
+110 43566776258854844738105
+111 70492524767089125814114
+112 114059301025943970552219
+113 184551825793033096366333
+114 298611126818977066918552
+115 483162952612010163284885
+116 781774079430987230203437
+117 1264937032042997393488322
+118 2046711111473984623691759
+119 3311648143516982017180081
+120 5358359254990966640871840
+121 8670007398507948658051921
+122 14028366653498915298923761
+123 22698374052006863956975682
+124 36726740705505779255899443
+125 59425114757512643212875125
+126 96151855463018422468774568
+127 155576970220531065681649693
+128 251728825683549488150424261
+129 407305795904080553832073954
+130 659034621587630041982498215
+131 1066340417491710595814572169
+132 1725375039079340637797070384
+133 2791715456571051233611642553
+134 4517090495650391871408712937
+135 7308805952221443105020355490
+136 11825896447871834976429068427
+137 19134702400093278081449423917
+138 30960598847965113057878492344
+139 50095301248058391139327916261
+140 81055900096023504197206408605
+141 131151201344081895336534324866
+142 212207101440105399533740733471
+143 343358302784187294870275058337
+144 555565404224292694404015791808
+145 898923707008479989274290850145
+146 1454489111232772683678306641953
+147 2353412818241252672952597492098
+148 3807901929474025356630904134051
+149 6161314747715278029583501626149
+150 9969216677189303386214405760200
+151 16130531424904581415797907386349
+152 26099748102093884802012313146549
+153 42230279526998466217810220532898
+154 68330027629092351019822533679447
+155 110560307156090817237632754212345
+156 178890334785183168257455287891792
+157 289450641941273985495088042104137
+158 468340976726457153752543329995929
+159 757791618667731139247631372100066
+160 1226132595394188293000174702095995
+161 1983924214061919432247806074196061
+162 3210056809456107725247980776292056
+163 5193981023518027157495786850488117
+164 8404037832974134882743767626780173
+165 13598018856492162040239554477268290
+166 22002056689466296922983322104048463
+167 35600075545958458963222876581316753
+168 57602132235424755886206198685365216
+169 93202207781383214849429075266681969
+170 150804340016807970735635273952047185
+171 244006547798191185585064349218729154
+172 394810887814999156320699623170776339
+173 638817435613190341905763972389505493
+174 1033628323428189498226463595560281832
+175 1672445759041379840132227567949787325
+176 2706074082469569338358691163510069157
+177 4378519841510949178490918731459856482
+178 7084593923980518516849609894969925639
+179 11463113765491467695340528626429782121
+180 18547707689471986212190138521399707760
+181 30010821454963453907530667147829489881
+182 48558529144435440119720805669229197641
+183 78569350599398894027251472817058687522
+184 127127879743834334146972278486287885163
+185 205697230343233228174223751303346572685
+186 332825110087067562321196029789634457848
+187 538522340430300790495419781092981030533
+188 871347450517368352816615810882615488381
+189 1409869790947669143312035591975596518914
+190 2281217241465037496128651402858212007295
+191 3691087032412706639440686994833808526209
+192 5972304273877744135569338397692020533504
+193 9663391306290450775010025392525829059713
+194 15635695580168194910579363790217849593217
+195 25299086886458645685589389182743678652930
+196 40934782466626840596168752972961528246147
+197 66233869353085486281758142155705206899077
+198 107168651819712326877926895128666735145224
+199 173402521172797813159685037284371942044301
+200 280571172992510140037611932413038677189525
+
+Factorial Numbers
+0 1
+1 1
+2 2
+3 6
+4 24
+5 120
+6 720
+7 5040
+8 40320
+9 362880
+10 3628800
+11 39916800
+12 479001600
+13 6227020800
+14 87178291200
+15 1307674368000
+16 20922789888000
+17 355687428096000
+18 6402373705728000
+19 121645100408832000
+20 2432902008176640000
+21 51090942171709440000
+22 1124000727777607680000
+23 25852016738884976640000
+24 620448401733239439360000
+25 15511210043330985984000000
+26 403291461126605635584000000
+27 10888869450418352160768000000
+28 304888344611713860501504000000
+29 8841761993739701954543616000000
+30 265252859812191058636308480000000
+31 8222838654177922817725562880000000
+32 263130836933693530167218012160000000
+33 8683317618811886495518194401280000000
+34 295232799039604140847618609643520000000
+35 10333147966386144929666651337523200000000
+36 371993326789901217467999448150835200000000
+37 13763753091226345046315979581580902400000000
+38 523022617466601111760007224100074291200000000
+39 20397882081197443358640281739902897356800000000
+40 815915283247897734345611269596115894272000000000
Index: tests/.expect/hello.txt
===================================================================
--- tests/.expect/hello.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/hello.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,12 @@
+Hello world!
+Bonjour le monde!
+Hola Mundo!
+Hallo Welt!
+Kaixo Mundua!
+Chào thế giới!
+Привет мир!
+שלום עולם!
+你好，世界!
+こんにちは世界!
+안녕하세요 세계!
+नमस्ते दुनिया!
Index: tests/.expect/identity.txt
===================================================================
--- tests/.expect/identity.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/identity.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,13 @@
+char			z
+signed int		4
+unsigned int		4
+signed long int		4
+unsigned long int	4
+signed long long int	4
+unsigned long long int	4
+float			4.1
+double			4.1
+long double		4.1
+float _Complex		-4.1-2i
+double _Complex		-4.1-2i
+long double _Complex	-4.1-2i
Index: tests/.expect/ifwhileCtl.txt
===================================================================
--- tests/.expect/ifwhileCtl.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/ifwhileCtl.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,7 @@
+x != 0 correct
+x != 0 && y != 0 correct
+x == y correct
+s.i < 4 correct
+x != 0 correct
+x == y correct
+s.i < 4 correct
Index: tests/.expect/io1.txt
===================================================================
--- tests/.expect/io1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/io1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+9 6 28 0 7 1 2
+1 2 3
+123
+123
+
+opening delimiters
+x (1 x [2 x {3 x =4 x $5 x £6 x ¥7 x ¡8 x ¿9 x «10
+
+closing delimiters
+1, x 2. x 3; x 4! x 5? x 6% x 7 ¢ x 8 » x 9) x 10] x 11} x
+
+opening/closing delimiters
+x`1`x'2'x"3"x:4:x 5 x	6	x
+7
+x
+8
+x
+9
+x
+10
+x
+
+override opening/closing delimiters
+x ( 1 ) x 2 , x 3 :x: 4
+
Index: tests/.expect/io2.txt
===================================================================
--- tests/.expect/io2.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/io2.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,60 @@
+input bacis types
+
+output basic types
+false
+A 23 93
+1 2 3 4 5 6 7 8
+1.1 1.2 1.3
+1.1+2.3i 1.1-2.3i 1.1-2.3i
+
+tuples
+1, 2, 3 4, 5, 6
+
+toggle separator
+1.11.21.3
+1.1+2.3i1.1-2.3i1.1-2.3i
+1.1+2.3i 1.1-2.3i1.1-2.3i
+1.1+2.3i 1.1-2.3i 1.1-2.3i
+1.1+2.3i1.1-2.3i 1.1-2.3i
+abcxyz
+abcxyz
+
+change separator
+from " " to ", $"
+1.1, $1.2, $1.3
+1.1+2.3i, $1.1-2.3i, $1.1-2.3i
+abc, $xyz
+1, 2, 3, $4, 5, 6
+
+from ", $" to " "
+1.1 1.2 1.3
+1.1+2.3i 1.1-2.3i 1.1-2.3i
+abc xyz
+1, 2, 3 4, 5, 6
+
+check sepOn/sepOff
+1 2 3
+12 3
+1 2 3
+1 2 3
+
+1 2 3
+
+check enable/disable
+123
+1 23
+1 2 3
+123
+1 2 3
+123
+1 2 3
+
+1 2 3 4 5 6 " "
+1, 2, 3 4, 5, 6 " "
+1, 2, 3 4, 5, 6
+
+3, 4, a, 7.2
+3, 4, a, 7.2
+3 4 a 7.2
+3 4 a 7.234a7.23 4 a 7.2
+3-4-a-7.2^3^4^3-4-a-7.2
Index: tests/.expect/literals.txt
===================================================================
--- tests/.expect/literals.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/literals.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,6 @@
+char a
+signed char 20
+unsigned char 21
+signed short int 22
+unsigned short int 23
+size_t 24
Index: tests/.expect/math1.txt
===================================================================
--- tests/.expect/math1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/math1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,13 @@
+fmod:1 1 1 1 1 1
+remainder:-1 -1 -1
+remquo:7 0.0999999 7 0.1 7 0.0999999999999999999
+div:7, 0.2 7, 0.2 7, 0.2
+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
+pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i -0.638110484918098871+0.705394566961838155i
+\ 16 256
+\ 912673 256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i
Index: tests/.expect/math2.txt
===================================================================
--- tests/.expect/math2.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/math2.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,16 @@
+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
+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
Index: tests/.expect/math3.txt
===================================================================
--- tests/.expect/math3.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/math3.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,11 @@
+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
Index: tests/.expect/math4.txt
===================================================================
--- tests/.expect/math4.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/math4.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,23 @@
+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
+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: tests/.expect/minmax.txt
===================================================================
--- tests/.expect/minmax.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/minmax.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,21 @@
+char			z a	min a
+signed int		4 3	min 3
+unsigned int		4 3	min 3
+signed long int		4 3	min 3
+unsigned long int	4 3	min 3
+signed long long int	4 3	min 3
+unsigned long long int	4 3	min 3
+float			4 3.1	min 3.1
+double			4 3.1	min 3.1
+long double		4 3.1	min 3.1
+
+char			z a	max z
+signed int		4 3	max 4
+unsigned int		4 3	max 4
+signed long int		4 3	max 4
+unsigned long int	4 3	max 4
+signed long long int	4 3	max 4
+unsigned long long int	4 3	max 4
+float			4 3.1	max 4
+double			4 3.1	max 4
+long double		4 3.1	max 4
Index: tests/.expect/nested-types-ERR1.txt
===================================================================
--- tests/.expect/nested-types-ERR1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/nested-types-ERR1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+nested-types.c:70:1 error: Use of undefined type T
Index: tests/.expect/nested-types-ERR2.txt
===================================================================
--- tests/.expect/nested-types-ERR2.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/nested-types-ERR2.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,6 @@
+nested-types.c:73:1 error: Use of undefined global type Z
+nested-types.c:74:1 error: Qualified type requires an aggregate on the left, but has: signed int
+nested-types.c:75:1 error: Undefined type in qualified type: Qualified Type: 
+  instance of struct S with body 1 
+  instance of type Z (not function type) 
+
Index: tests/.expect/polymorphism.txt
===================================================================
--- tests/.expect/polymorphism.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/polymorphism.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,2 @@
+123 456 456
+5 5
Index: tests/.expect/quoted_keyword.txt
===================================================================
--- tests/.expect/quoted_keyword.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/quoted_keyword.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+10
Index: tests/.expect/random.txt
===================================================================
--- tests/.expect/random.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/random.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,20 @@
+õ
+=
+V
+-911259971
+6
+-4
+1232105397
+0
+18
+-914096085
+1
+15
+2077092859
+1
+11
+0.677254
+0.678106775246139
+0.298107+0.951551i
+0.724141628787955+0.18815430330314i
+0.358747528448063235+0.27913860468074958i
Index: tests/.expect/rational.txt
===================================================================
--- tests/.expect/rational.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/rational.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,36 @@
+constructor
+3/1 4/1 0/1
+1/2 5/7
+2/3 -3/2
+-2/3 3/2
+logical
+-2/1 -3/2
+1
+1
+1
+0
+0
+arithmetic
+-2/1 -3/2
+-7/2
+-1/2
+3/1
+4/3
+conversion
+0.75
+0.142857142857143
+3.14159292035398
+3/4
+1/7
+355/113
+decompose
+more tests
+-3/2
+0
+1/2 1 1/2
+2/1 1 2/1
+0/1
+1/2 1 1/2
+2/2147483647
+5/2147483647
+2/3 4/5
Index: tests/.expect/references.txt
===================================================================
--- tests/.expect/references.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/references.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,43 @@
+3 3 1
+12 12 1
+12 12 1 1
+13 1 12
+14 14
+x = 6 ; x2 = 789
+x = 6 ; x2 = 999
+x = 12345 ; x2 = 999
+x = 22222 ; x2 = 999
+Default constructing a Y
+Copy constructing a Y
+Copy constructing a Y
+Copy constructing a Y
+Destructing a Y
+Destructing a Y
+Default constructing a Y
+Copy constructing a Y
+Value constructing a Y 56
+Value constructing a Y 78
+Copy constructing a Y
+Copy constructing a Y
+Assigning a Y
+Copy constructing a Y
+Destructing a Y
+Destructing a Y
+Copy constructing a Y
+Assigning a Y
+Copy constructing a Y
+Destructing a Y
+Destructing a Y
+Copy constructing a Y
+Destructing a Y
+Destructing a Y
+3 3
+3
+3
+3 9 { 1, 7 }, [1, 2, 3]
+Destructing a Y
+Destructing a Y
+Destructing a Y
+Destructing a Y
+Destructing a Y
+Destructing a Y
Index: tests/.expect/scopeErrors.txt
===================================================================
--- tests/.expect/scopeErrors.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/scopeErrors.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,12 @@
+scopeErrors.c:2:1 error: duplicate object definition for thisIsAnError: signed int
+scopeErrors.c:20:1 error: duplicate function definition for butThisIsAnError: function
+... with parameters
+  double
+... returning 
+  _retval_butThisIsAnError: double
+  ... with attributes: 
+    Attribute with name: unused
+
+... with body 
+  CompoundStmt
+
Index: tests/.expect/searchsort.txt
===================================================================
--- tests/.expect/searchsort.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/searchsort.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,26 @@
+10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 
+
+1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1, 
+10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1, 
+10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1, 
+
+1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 
+10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1, 
+10:10, 9:9, 8:8, 7:7, 6:6, 5:5, 4:4, 3:3, 2:2, 1:1, 
+
+10.5, 9.5, 8.5, 7.5, 6.5, 5.5, 4.5, 3.5, 2.5, 1.5, 
+1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 
+10.5:10.5, 9.5:9.5, 8.5:8.5, 7.5:7.5, 6.5:6.5, 5.5:5.5, 4.5:4.5, 3.5:3.5, 2.5:2.5, 1.5:1.5, 
+10.5:10.5, 9.5:9.5, 8.5:8.5, 7.5:7.5, 6.5:6.5, 5.5:5.5, 4.5:4.5, 3.5:3.5, 2.5:2.5, 1.5:1.5, 
+
+10 11, 9 10, 8 9, 7 8, 6 7, 5 6, 4 5, 3 4, 2 3, 1 2, 
+1 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 8, 8 9, 9 10, 10 11, 
+10 11:10 11, 9 10:9 10, 8 9:8 9, 7 8:7 8, 6 7:6 7, 5 6:5 6, 4 5:4 5, 3 4:3 4, 2 3:2 3, 1 2:1 2, 
+10 11:10 11, 9 10:9 10, 8 9:8 9, 7 8:7 8, 6 7:6 7, 5 6:5 6, 4 5:4 5, 3 4:3 4, 2 3:2 3, 1 2:1 2, 
+
+1 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 8, 8 9, 9 10, 10 11, 
+11:10 11, 10:9 10, 9:8 9, 8:7 8, 7:6 7, 6:5 6, 5:4 5, 4:3 4, 3:2 3, 2:1 2, 
+11:10 11, 10:9 10, 9:8 9, 8:7 8, 7:6 7, 6:5 6, 5:4 5, 4:3 4, 3:2 3, 2:1 2, 
+
Index: tests/.expect/shortCircuit.txt
===================================================================
--- tests/.expect/shortCircuit.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/shortCircuit.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,4 @@
+1 0 
+1 
+0 
+0 1 
Index: tests/.expect/simpleGenericTriple.txt
===================================================================
--- tests/.expect/simpleGenericTriple.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/simpleGenericTriple.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,2 @@
+132 1001 459
+132 1001.12 459
Index: tests/.expect/sum.txt
===================================================================
--- tests/.expect/sum.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/sum.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,6 @@
+sum from 5 to 15 is 95, check 95
+sum from 5 to 15 is 95, check 95
+sum from 0.5 to 1.5 is 9.5, check 9.5
+sum from 0.5 to 1.5 is 9.5, check 9.5
+sum from 5 to 15 is 95 95, check 95 95
+sum from 5 to 15 is 95, check 95
Index: tests/.expect/swap.txt
===================================================================
--- tests/.expect/swap.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/swap.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,14 @@
+char			a b			swap 	b a
+signed int		-1 -2			swap 	-2 -1
+unsigned int		1 2			swap 	2 1
+signed long int		-1 -2			swap 	-2 -1
+unsigned long int	1 2			swap 	2 1
+signed long long int	-1 -2			swap 	-2 -1
+unsigned long long int	1 2			swap 	2 1
+float			1.5 2.5			swap 	2.5 1.5
+double			1.5 2.5			swap 	2.5 1.5
+long double		1.5 2.5			swap 	2.5 1.5
+float _Complex		1.5+1.5i 2.5+2.5i	swap 	2.5+2.5i 1.5+1.5i
+double _Complex		1.5+1.5i 2.5+2.5i	swap 	2.5+2.5i 1.5+1.5i
+long double _Complex	1.5+1.5i 2.5+2.5i	swap 	2.5+2.5i 1.5+1.5i
+struct S		1 2, 2 1		swap 	2 1, 1 2
Index: tests/.expect/time.txt
===================================================================
--- tests/.expect/time.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/time.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,19 @@
+10800 2 3.375 12 1.00001
+0 2 3.375
+7 7 7
+14
+false false false
+3.5
+
+Fri Jan  2 00:00:00.01 1970
+Fri Jan  2 00:00:14.01 1970 104414010000000
+Fri Jan  2 00:00:14.01 1970 104414010000000
+0 Fri Jan  2 00:00:15.01001 1970 104414010000000
+yy/mm/dd 70/01/02 mm/dd/yy 01/02/70 mm/dd/yy 01/02/70 dd/yy/mm 02/01/70
+Wed Jul  4 00:00:01 2001 994219201000000000
+Wed Jul  4 00:00:01 2001 994219201000000000
+
+1 hour + 2*10 min + 70/10 sec = 4807 seconds
+Dividing that by 2 minutes gives 40
+Dividing that by 2 gives 2403.5 seconds
+4807 seconds is 1 hours, 20 minutes, 7 seconds
Index: tests/.expect/typedefRedef-ERR1.txt
===================================================================
--- tests/.expect/typedefRedef-ERR1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/typedefRedef-ERR1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,2 @@
+typedefRedef.c:4:1 error: Cannot redefine typedef: Foo
+typedefRedef.c:60:1 error: Cannot redefine typedef: ARR
Index: tests/.expect/user_literals.txt
===================================================================
--- tests/.expect/user_literals.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/user_literals.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+11.0714285714286
+15
+11.0714285714286
+24.8
+11.248
+11.0714285714286
+28.0657142857143
+secs 1
+secs 23
+mins 23
+hours 23
+_A_ 23
+_thingy_ 1234
+secs 65535
+mins 65535
+hours 65535
+_A_ 65535
+_thingy_ 65535
+secs 10
+hours 10
+mins 10
+_A_ 10
+_thingy_ 10
+secs abc
+_thingy_ abc
Index: tests/.expect/vector.txt
===================================================================
--- tests/.expect/vector.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/vector.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,5 @@
+0
+1
+2
+3
+0
Index: tests/.expect/with-statement.txt
===================================================================
--- tests/.expect/with-statement.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.expect/with-statement.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,6 @@
+12345 12345 12345
+12345
+called mk
+444 444 444
+123456789 123456789 123456789
+123456789 123456789 123456789
Index: tests/.gitignore
===================================================================
--- tests/.gitignore	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.gitignore	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,3 @@
+.out/
+.err/
+.type
Index: tests/.in/fstream_test.txt
===================================================================
--- tests/.in/fstream_test.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.in/fstream_test.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,3 @@
+-2
+2 3
+4
Index: tests/.in/gmp.txt
===================================================================
--- tests/.in/gmp.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.in/gmp.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+12345678901234567890123456789 12345678901234567890123456789 12345678901234567890123456789
Index: tests/.in/io.data
===================================================================
--- tests/.in/io.data	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.in/io.data	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+falseA 23 93 1 2 3 4 5 6 7 8 1.1 1.2 1.3 1.1+2.3 1.1-2.3 1.1-2.3 abc xyz
Index: tests/.in/rational.txt
===================================================================
--- tests/.in/rational.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/.in/rational.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+2 3 4 5
Index: tests/KRfunctions.c
===================================================================
--- tests/KRfunctions.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/KRfunctions.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,52 @@
+// 
+// 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.
+// 
+// KRfunctions.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Thu Feb 16 15:23:17 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Aug 20 07:34:17 2017
+// Update Count     : 7
+// 
+
+f0( a, b, c ) const int * b; {}
+f1( a, b, c ) int b __attribute__ (( unused )), * a, c[]; {}
+(f2)( a, b, c ) int a, * b, c[]; {}
+
+struct S { int i; };
+int f3( a, b, c ) struct S a; struct S b; int c[]; { struct S s;}
+int (f4)( a, b, c ) int a, * b, c[]; {}
+int (f5( a, b, c )) int a, * b, c[]; {}
+
+int (* f6( a, b, c ))(int) int a, * b, c[]; {}
+int (* f7( a, b, c ))(int a, int b) int a, * b, c[]; {}
+int * f8( a, b, c ) int a, * b, c[]; {}
+int * const f9( a, b, c ) int b, * a, c[]; {}
+
+int (* (* f10( a, b, c, y ))( int x, int y ) ) int a, * b, c[]; double y; {
+    int *x( int, int );
+    return x;
+}
+
+int (* f11( a, b, c ))[] int a, * b, c[]; {}
+int (* f12( a, b, c ))[][10] int a, * b, c[]; {}
+int ((* f13( a, b, c ))[])[10] int a, * b, c[]; {}
+int (((* f14( a, b, c ))[])[10]) int a, * b, c[]; {}
+f15( a, b, c ) {}
+
+const fred() {
+    int *(*x)( int, int );
+    int a, b;
+    x = f10( 3, &a, &b, 3.5 );
+    const f1( a, b, c ) int a, * b, c[]; {}
+    const f2( int a, int b, int c ) {}
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa KRfunctions.c" //
+// End: //
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,140 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am --
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 09:08:15 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Wed Jun  6 16:42:20 2018
+## Update Count     : 49
+###############################################################################
+
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+
+debug=yes
+installed=no
+
+quick_test=avl_test operators numericConstants expression enum array typeof cast raii/dtor-early-exit raii/init_once attributes
+
+concurrent=
+
+TEST_PY = python ${builddir}/test.py
+
+# applies to both programs
+AM_CFLAGS = $(if $(test), 2> $(test), ) \
+	-g \
+	-Wall \
+	-Wno-unused-function \
+	-quiet @CFA_FLAGS@ \
+	-DIN_DIR="${srcdir}/.in/"
+
+AM_CFLAGS += ${DEBUG_FLAGS} ${INSTALL_FLAGS} ${ARCH_FLAGS}
+
+CC = @CFACC@
+
+PRETTY_PATH=cd ${srcdir} &&
+
+.PHONY: list .validate
+.INTERMEDIATE: .validate .validate.c
+EXTRA_PROGRAMS = fstream_test avl_test # build but do not install
+
+fstream_test_SOURCES = fstream_test.c
+
+avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
+
+#----------------------------------------------------------------------------------------------------------------
+all-local :
+	@+${TEST_PY} --debug=${debug}  --install=${installed} ${concurrent} ${quick_test}
+
+all-tests :
+	@+${TEST_PY} --all --debug=${debug}  --install=${installed} ${concurrent}		# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
+
+clean-local :
+	rm -f ${EXTRA_PROGRAMS}
+
+list :
+	@+${TEST_PY} --list ${concurrent}
+
+.validate: .validate.c
+	$(COMPILE) .validate.c -fsyntax-only -Wall -Wextra -Werror
+
+.validate.c:
+	@echo "int main() { return 0; }" > ${@}
+
+concurrency :
+	@+${TEST_PY} --debug=${debug}  --install=${installed} -Iconcurrent
+
+#----------------------------------------------------------------------------------------------------------------
+# implicit rule so not all test require a rule
+% : %.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+declarationSpecifier: declarationSpecifier.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+gccExtensions : gccExtensions.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+extension : extension.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+attributes : attributes.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+functions: functions.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+KRfunctions : KRfunctions.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+sched-ext-parse : sched-ext-parse.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+gmp : gmp.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -lgmp $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+#builtins
+builtins/sync: builtins/sync.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) $(shell realpath --relative-to=${srcdir} ${<}) 2> $(abspath ${@}) -fsyntax-only
+
+#------------------------------------------------------------------------------
+#To make errors path independent we need to cd into the correct directories
+completeTypeError : completeTypeError.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+typedefRedef-ERR1: typedefRedef.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+alloc-ERROR: alloc.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+fallthrough-ERROR: fallthrough.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+nested-types-ERR1: nested-types.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+nested-types-ERR2: nested-types.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR2 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+# Constructor/destructor tests
+raii/dtor-early-exit-ERR1: raii/dtor-early-exit.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+raii/dtor-early-exit-ERR2: raii/dtor-early-exit.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR2 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+raii/memberCtors-ERR1: raii/memberCtors.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+raii/ctor-autogen-ERR1: raii/ctor-autogen.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+# Warnings
+warnings/self-assignment: warnings/self-assignment.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) $(shell realpath --relative-to=${srcdir} ${<}) 2> $(abspath ${@}) -fsyntax-only
Index: tests/Makefile.in
===================================================================
--- tests/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,710 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+EXTRA_PROGRAMS = fstream_test$(EXEEXT) avl_test$(EXEEXT)
+subdir = tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = config.py
+CONFIG_CLEAN_VPATH_FILES = test.py
+am__dirstamp = $(am__leading_dot)dirstamp
+am_avl_test_OBJECTS = avltree/avl_test.$(OBJEXT) \
+	avltree/avl0.$(OBJEXT) avltree/avl1.$(OBJEXT) \
+	avltree/avl2.$(OBJEXT) avltree/avl3.$(OBJEXT) \
+	avltree/avl4.$(OBJEXT) avltree/avl-private.$(OBJEXT)
+avl_test_OBJECTS = $(am_avl_test_OBJECTS)
+avl_test_LDADD = $(LDADD)
+am_fstream_test_OBJECTS = fstream_test.$(OBJEXT)
+fstream_test_OBJECTS = $(am_fstream_test_OBJECTS)
+fstream_test_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES)
+DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.py.in \
+	$(srcdir)/test.py $(top_srcdir)/automake/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKEND_CC = @BACKEND_CC@
+BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
+CC = @CFACC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFACC = @CFACC@
+CFACPP = @CFACPP@
+CFA_BACKEND_CC = @CFA_BACKEND_CC@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_FLAGS = @CFA_FLAGS@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_NAME = @CFA_NAME@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_DIR = @DRIVER_DIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+HOST_FLAGS = @HOST_FLAGS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBCFA_TARGET_DIRS = @LIBCFA_TARGET_DIRS@
+LIBCFA_TARGET_MAKEFILES = @LIBCFA_TARGET_MAKEFILES@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
+VERSION = @VERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+debug = yes
+installed = no
+quick_test = avl_test operators numericConstants expression enum array typeof cast raii/dtor-early-exit raii/init_once attributes
+concurrent = 
+TEST_PY = python ${builddir}/test.py
+
+# applies to both programs
+AM_CFLAGS = $(if $(test), 2> $(test), ) -g -Wall -Wno-unused-function \
+	-quiet @CFA_FLAGS@ -DIN_DIR="${srcdir}/.in/" ${DEBUG_FLAGS} \
+	${INSTALL_FLAGS} ${ARCH_FLAGS}
+PRETTY_PATH = cd ${srcdir} &&
+fstream_test_SOURCES = fstream_test.c
+avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj .validate
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign tests/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+config.py: $(top_builddir)/config.status $(srcdir)/config.py.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+avltree/$(am__dirstamp):
+	@$(MKDIR_P) avltree
+	@: > avltree/$(am__dirstamp)
+avltree/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) avltree/$(DEPDIR)
+	@: > avltree/$(DEPDIR)/$(am__dirstamp)
+avltree/avl_test.$(OBJEXT): avltree/$(am__dirstamp) \
+	avltree/$(DEPDIR)/$(am__dirstamp)
+avltree/avl0.$(OBJEXT): avltree/$(am__dirstamp) \
+	avltree/$(DEPDIR)/$(am__dirstamp)
+avltree/avl1.$(OBJEXT): avltree/$(am__dirstamp) \
+	avltree/$(DEPDIR)/$(am__dirstamp)
+avltree/avl2.$(OBJEXT): avltree/$(am__dirstamp) \
+	avltree/$(DEPDIR)/$(am__dirstamp)
+avltree/avl3.$(OBJEXT): avltree/$(am__dirstamp) \
+	avltree/$(DEPDIR)/$(am__dirstamp)
+avltree/avl4.$(OBJEXT): avltree/$(am__dirstamp) \
+	avltree/$(DEPDIR)/$(am__dirstamp)
+avltree/avl-private.$(OBJEXT): avltree/$(am__dirstamp) \
+	avltree/$(DEPDIR)/$(am__dirstamp)
+
+avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES) 
+	@rm -f avl_test$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS)
+
+fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES) 
+	@rm -f fstream_test$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f avltree/*.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl-private.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl0.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f avltree/$(DEPDIR)/$(am__dirstamp)
+	-rm -f avltree/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-local mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) avltree/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) avltree/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+	clean-generic clean-local cscopelist-am ctags ctags-am \
+	distclean distclean-compile distclean-generic distclean-tags \
+	distdir dvi dvi-am html html-am info info-am install \
+	install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+.PHONY: list .validate
+.INTERMEDIATE: .validate .validate.c
+
+#----------------------------------------------------------------------------------------------------------------
+all-local :
+	@+${TEST_PY} --debug=${debug}  --install=${installed} ${concurrent} ${quick_test}
+
+all-tests :
+	@+${TEST_PY} --all --debug=${debug}  --install=${installed} ${concurrent}		# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
+
+clean-local :
+	rm -f ${EXTRA_PROGRAMS}
+
+list :
+	@+${TEST_PY} --list ${concurrent}
+
+.validate: .validate.c
+	$(COMPILE) .validate.c -fsyntax-only -Wall -Wextra -Werror
+
+.validate.c:
+	@echo "int main() { return 0; }" > ${@}
+
+concurrency :
+	@+${TEST_PY} --debug=${debug}  --install=${installed} -Iconcurrent
+
+#----------------------------------------------------------------------------------------------------------------
+# implicit rule so not all test require a rule
+% : %.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+declarationSpecifier: declarationSpecifier.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+gccExtensions : gccExtensions.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+extension : extension.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+attributes : attributes.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+functions: functions.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+KRfunctions : KRfunctions.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+sched-ext-parse : sched-ext-parse.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -CFA -XCFA -p $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+gmp : gmp.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -lgmp $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+#builtins
+builtins/sync: builtins/sync.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) $(shell realpath --relative-to=${srcdir} ${<}) 2> $(abspath ${@}) -fsyntax-only
+
+#------------------------------------------------------------------------------
+#To make errors path independent we need to cd into the correct directories
+completeTypeError : completeTypeError.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+typedefRedef-ERR1: typedefRedef.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+alloc-ERROR: alloc.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+fallthrough-ERROR: fallthrough.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+nested-types-ERR1: nested-types.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+nested-types-ERR2: nested-types.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR2 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+# Constructor/destructor tests
+raii/dtor-early-exit-ERR1: raii/dtor-early-exit.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+raii/dtor-early-exit-ERR2: raii/dtor-early-exit.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR2 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+raii/memberCtors-ERR1: raii/memberCtors.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+raii/ctor-autogen-ERR1: raii/ctor-autogen.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) -DERR1 $(shell realpath --relative-to=${srcdir} ${<}) -o $(abspath ${@})
+
+# Warnings
+warnings/self-assignment: warnings/self-assignment.c $(CC)
+	$(PRETTY_PATH) $(COMPILE) $(shell realpath --relative-to=${srcdir} ${<}) 2> $(abspath ${@}) -fsyntax-only
+
+# 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.
+.NOEXPORT:
Index: tests/abs.c
===================================================================
--- tests/abs.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/abs.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,36 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// abs.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Thu Jan 28 18:26:16 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Feb 22 22:31:03 2017
+// Update Count     : 52
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>										// abs
+
+int main( void ) {
+	signed char ch = -65;
+	sout | "char\t\t\t"					| ch     | "\tabs " | abs( ch ) | endl;
+	sout | "signed int\t\t"				| -65    | "\tabs" | abs( -65 ) | endl;
+	sout | "signed long int\t\t" 		| -65l   | "\tabs" | abs( -65l ) | endl;
+	sout | "signed long long int\t"		| -65ll  | "\tabs" | abs( -65ll ) | endl;
+	sout | "float\t\t\t" 				| -65.0f | "\tabs" | abs( -65.0f ) | endl;
+	sout | "double\t\t\t"				| -65.0  | "\tabs" | abs( -65.0 ) | endl;
+	sout | "long double\t\t"			| -65.0l | "\tabs" | abs( -65.0l ) | endl;
+	sout | "float _Complex\t\t"			| -65.0F-2.0iF | "\tabs" | abs( -65.0F-2.0iF ) | endl;
+	sout | "double _Complex\t\t"		| -65.0D-2.0iD | "\tabs" | abs( -65.0D-2.0iD ) | endl;
+	sout | "long double _Complex\t"		| -65.0L-2.0iL | "\tabs" | abs( -65.0L-2.0iL ) | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa abs.c" //
+// End: //
Index: tests/alloc.c
===================================================================
--- tests/alloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/alloc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,275 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// alloc.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Feb  3 07:56:22 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug  9 06:21:35 2018
+// Update Count     : 337
+//
+
+#include <assert.h>
+#include <malloc.h>										// malloc_usable_size
+#include <stdint.h>										// uintptr_t
+#include <stdlib.h>										// posix_memalign
+#include <fstream.hfa>
+#include <stdlib.hfa>										// access C malloc, realloc
+
+int * foo( int * p, int c ) { return p; }
+int * bar( int * p, int c ) { return p; }
+int * baz( int * p, int c ) { return p; }
+
+int main( void ) {
+	size_t dim = 10;
+	char fill = '\xff';
+	int * p;
+
+	// allocation, non-array types
+
+	// int & r = malloc();
+	// r = 0xdeadbeef;
+	// printf( "C   malloc %#x\n", r );
+	// free( &r );
+
+	p = (int *)malloc( sizeof(*p) );					// C malloc, type unsafe
+	*p = 0xdeadbeef;
+	printf( "C   malloc %#x\n", *p );
+	free( p );
+
+	p = malloc();                                       // CFA malloc, type safe
+	*p = 0xdeadbeef;
+	printf( "CFA malloc %#x\n", *p );
+	free( p );
+
+	p = alloc();                                        // CFA alloc, type safe
+	*p = 0xdeadbeef;
+	printf( "CFA alloc %#x\n", *p );
+	free( p );
+
+	p = alloc( fill );                                  // CFA alloc, fill
+	printf( "CFA alloc, fill %08x\n", *p );
+	free( p );
+
+
+	// allocation, array types
+	printf( "\n" );
+
+	p = (int *)calloc( dim, sizeof( *p ) );				// C array calloc, type unsafe
+	printf( "C   array calloc, fill 0\n" );
+	for ( i; dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+	free( p );
+
+	p = calloc( dim );                                  // CFA array calloc, type safe
+	printf( "CFA array calloc, fill 0\n" );
+	for ( i; dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+	free( p );
+
+	p = alloc( dim );                                   // CFA array alloc, type safe
+	for ( i; dim ) { p[i] = 0xdeadbeef; }
+	printf( "CFA array alloc, no fill\n" );
+	for ( i; dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+	free( p );
+
+	p = alloc( 2 * dim, fill );                         // CFA array alloc, fill
+	printf( "CFA array alloc, fill %#hhx\n", fill );
+	for ( i; 2 * dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+	// do not free
+
+
+	// resize, non-array types
+	printf( "\n" );
+
+	p = (int *)realloc( p, dim * sizeof(*p) );			// C realloc
+	for ( i; dim ) { p[i] = 0xdeadbeef; }
+	printf( "C   realloc\n" );
+	for ( i; dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+
+	p = realloc( p, 2 * dim * sizeof(*p) );             // CFA realloc
+	for ( i; dim ~ 2 * dim ) { p[i] = 0x1010101; }
+	printf( "CFA realloc\n" );
+	for ( i; 2 * dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+	// do not free
+
+
+	// resize, array types
+	printf( "\n" );
+
+	p = alloc( p, dim );                                // CFA resize array alloc
+	for ( i; dim ) { p[i] = 0xdeadbeef; }
+	printf( "CFA resize alloc\n" );
+	for ( i; dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+
+	p = alloc( p, 2 * dim );                            // CFA resize array alloc
+	for ( i; dim ~ 2 * dim ) { p[i] = 0x1010101; }
+	printf( "CFA resize array alloc\n" );
+	for ( i; 2 * dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+
+	p = alloc( p, dim );                                // CFA array alloc
+	printf( "CFA resize array alloc\n" );
+	for ( i; dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+
+	free( p );
+	p = 0;
+
+	p = alloc( p, dim, fill );                          // CFA array alloc, fill
+	printf( "CFA resize array alloc, fill\n" );
+	for ( i; dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+
+	p = alloc( p, 2 * dim, fill );                      // CFA array alloc, fill
+	printf( "CFA resize array alloc, fill\n" );
+	for ( i; 2 * dim ) { printf( "%#x ", p[i] ); }
+	printf( "\n" );
+
+	p = alloc( p, dim, fill );                          // CFA array alloc, fill
+	printf( "CFA resize array alloc, fill\n" );
+	for ( i; dim ) { printf( "%#x ", p[i] );; }
+	printf( "\n" );
+	free( p );
+
+
+	struct Struct { int x; double y; };
+	Struct st, st1, sta[dim], sta1[dim], * stp, * stp1;
+
+	// alignment, non-array types
+	printf( "\n" );
+	enum { Alignment = 128 };
+
+	stp = &(*(Struct*)memalign( Alignment, sizeof( *stp ) ) ){ 42, 42.5 }; // C memalign
+	assert( (uintptr_t)stp % Alignment == 0 );
+	printf( "C   memalign %d %g\n", stp->x, stp->y );
+	free( stp );
+
+	stp = &(*memalign( Alignment )){ 42, 42.5 };          // CFA memalign
+	assert( (uintptr_t)stp % Alignment == 0 );
+	printf( "CFA memalign %d %g\n", stp->x, stp->y );
+	free( stp );
+
+	posix_memalign( (void **)&stp, Alignment, sizeof( *stp ) ); // C posix_memalign
+	*stp = (Struct){ 42, 42.5 };
+	assert( (uintptr_t)stp % Alignment == 0 );
+	printf( "CFA posix_memalign %d %g\n", stp->x, stp->y );
+	free( stp );
+
+	posix_memalign( &stp, Alignment );                  // CFA posix_memalign
+	*stp = (Struct){ 42, 42.5 };
+	assert( (uintptr_t)stp % Alignment == 0 );
+	printf( "CFA posix_memalign %d %g\n", stp->x, stp->y );
+	free( stp );
+
+	stp = &(*aligned_alloc( Alignment )){ 42, 42.5 };     // CFA aligned_alloc
+	assert( (uintptr_t)stp % Alignment == 0 );
+	printf( "CFA aligned_alloc %d %g\n", stp->x, stp->y );
+	free( stp );
+
+	stp = &(*align_alloc( Alignment )){ 42, 42.5 };       // CFA align_alloc
+	assert( (uintptr_t)stp % Alignment == 0 );
+	printf( "CFA align_alloc %d %g\n", stp->x, stp->y );
+	free( stp );
+
+	stp = align_alloc( Alignment, fill );               // CFA memalign, fill
+	assert( (uintptr_t)stp % Alignment == 0 );
+	printf( "CFA align_alloc fill %#x %a\n", stp->x, stp->y );
+	free( stp );
+
+
+	// alignment, array types
+	printf( "\n" );
+
+	stp = align_alloc( Alignment, dim );                // CFA array memalign
+	assert( (uintptr_t)stp % Alignment == 0 );
+	for ( i; dim ) { stp[i] = (Struct){ 42, 42.5 }; }
+	printf( "CFA array align_alloc\n" );
+	for ( i; dim ) { printf( "%d %g, ", stp[i].x, stp[i].y ); }
+	printf( "\n" );
+	free( stp );
+
+	stp = align_alloc( Alignment, dim, fill );          // CFA array memalign, fill
+	assert( (uintptr_t)stp % Alignment == 0 );
+	printf( "CFA array align_alloc, fill\n" );
+	for ( i; dim ) { printf( "%#x %a, ", stp[i].x, stp[i].y ); }
+	printf( "\n" );
+	free( stp );
+
+
+	// data, non-array types
+	printf( "\n" );
+
+	memset( &st, fill );                                // CFA memset, type safe
+	printf( "CFA memset %#x %a\n", st.x, st.y );
+	memcpy( &st1, &st );                                // CFA memcpy, type safe
+	printf( "CFA memcpy %#x %a\n", st1.x, st1.y );
+
+
+	// data, array types
+	printf( "\n" );
+
+	amemset( sta, fill, dim );							// CFA array memset, type safe
+	printf( "CFA array memset\n" );
+	for ( i; dim ) { printf( "%#x %a, ", sta[i].x, sta[i].y ); }
+	printf( "\n" );
+
+	amemcpy( sta1, sta, dim );							// CFA array memcpy, type safe
+	printf( "CFA array memcpy\n" );
+	for ( i; dim ) { printf( "%#x %a, ", sta1[i].x, sta1[i].y ); }
+	printf( "\n" );
+
+
+	// new, non-array types
+	printf( "\n" );
+
+	stp = new( 42, 42.5 );
+	stp1 = new( 42, 42.5 );
+	printf( "CFA new initialize\n%d %g %d %g\n", stp->x, stp->y, stp1->x, stp1->y );
+	delete( stp, stp1 );
+
+	// new, array types
+	stp = anew( dim, 42, 42.5 );
+	printf( "CFA array new initialize\n" );
+	for ( i; dim ) { printf( "%d %g, ", stp[i].x, stp[i].y ); }
+	printf( "\n" );
+	stp1 = anew( dim, 42, 42.5 );
+	for ( i; dim ) { printf( "%d %g, ", stp1[i].x, stp1[i].y ); }
+	printf( "\n" );
+	adelete( dim, stp, dim, stp1 );
+
+	// extras
+	printf( "\n" );
+
+	float * fp = malloc() + 1;
+	printf( "pointer arithmetic %d\n", fp == fp - 1 );
+	free( fp - 1 );
+
+	p = foo( bar( baz( malloc(), 0 ), 0 ), 0 );
+	*p = 0xdeadbeef;
+	printf( "CFA deep malloc %#x\n", *p );
+	free( p );
+
+#ifdef ERR1
+	stp = malloc();
+	printf( "\nSHOULD FAIL\n" );
+	p = realloc( stp, dim * sizeof( *stp ) );
+	p = alloc( stp, dim * sizeof( *stp ) );
+	p = memset( stp, 10 );
+	p = memcpy( &st1, &st );
+#endif
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa alloc.c" //
+// End: //
Index: tests/array.c
===================================================================
--- tests/array.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/array.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,40 @@
+//Testing array declarations
+int a1[];
+//int a2[*];
+//double a4[3.0];
+
+int m1[][3];
+//int m2[*][*];
+int m4[3][3];
+
+typedef int T;
+
+int fred() {
+//	int a1[];
+//	int a2[*];
+	int a4[3];
+	int T[3];
+}
+
+int mary( int T[3],
+		  int p1[const 3],
+		  int p2[static 3],
+		  int p3[static const 3]
+	) {
+}
+
+int (*tom())[3] {
+}
+
+int (*(jane)())( int T[3],
+				 int p1[const 3],
+				 int p2[static 3],
+				 int p3[static const 3]
+	) {
+}
+
+//Dummy main
+int main(int argc, char const *argv[])
+{
+	return 0;
+}
Index: tests/ato.c
===================================================================
--- tests/ato.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/ato.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,123 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// ato.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Thu Feb  4 08:10:57 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Nov 16 18:31:56 2017
+// Update Count     : 89
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>										// ato, strto
+
+int main( void ) {
+	const char * sptr = "-123";
+	int i = ato( sptr );
+	sout | i | sptr | endl;
+	sptr = "123";
+	unsigned int ui = ato( sptr );
+	sout | ui | sptr | endl;
+
+	sptr = "-123";
+	long int li = ato( sptr );
+	sout | li | sptr | endl;
+	sptr = "123";
+	unsigned long int uli = ato( sptr );
+	sout | uli | sptr | endl;
+
+	sptr = "-123";
+	long long int lli = ato( sptr );
+	sout | lli | sptr | endl;
+	sptr = "123";
+	unsigned long long int ulli = ato( sptr );
+	sout | ulli | sptr | endl;
+
+	sptr = "-123.456";
+	float f = ato( sptr );
+	sout | f | sptr | endl;
+	sptr = "-123.4567890123456";
+	double d = ato( sptr );
+	sout | d | sptr | endl;
+	sptr = "-123.45678901234567890123456789";
+	long double ld = ato( sptr );
+	sout | ld | sptr | endl;
+
+	sptr = "-123.456-123.456i";
+	float _Complex fc = ato( sptr );
+	sout | fc | sptr | endl;
+	sptr = "-123.4567890123456+123.4567890123456i";
+	double _Complex dc = ato( sptr );
+	sout | dc | sptr | endl;
+	sptr = "123.45678901234567890123456789-123.45678901234567890123456789i";
+	long double _Complex ldc = ato( sptr );
+	sout | ldc | sptr | endl;
+	sptr = "123.45678901234-123.4567890i";
+	long double _Complex ldc2 = ato( sptr );
+	sout | ldc2 | sptr | endl;
+
+
+	sptr = "-123";
+	i = strto( sptr, 0, 10 );
+	sout | i | sptr | endl;
+	sptr = "123";
+	ui = strto( sptr, 0, 10 );
+	sout | ui | sptr | endl;
+
+	sptr = "-123";
+	li = strto( sptr, 0, 10 );
+	sout | li | sptr | endl;
+	sptr = "123";
+	uli = strto( sptr, 0, 10 );
+	sout | uli | sptr | endl;
+
+	sptr = "-123";
+	lli = strto( sptr, 0, 10 );
+	sout | lli | sptr | endl;
+	sptr = "123";
+	ulli = strto( sptr, 0, 10 );
+	sout | ulli | sptr | endl;
+
+	sptr = "-123.456";
+	f = strto( sptr, 0 );
+	sout | f | sptr | endl;
+	sptr = "-123.4567890123456";
+	d = strto( sptr, 0 );
+	sout | d | sptr | endl;
+	sptr = "-123.45678901234567890123456789";
+	ld = strto( sptr, 0 );
+	sout | ld | sptr | endl;
+
+	sptr = "-123.456-123.456i";
+	fc = strto( sptr, 0 );
+	sout | fc | sptr | endl;
+
+	char * eptr = 0;
+	// sptr = "2fred";
+	// fc = strto( sptr, &eptr );
+	// sout | fc | sptr | eptr | endl;
+
+	sptr = "2  3";
+	fc = strto( sptr, &eptr );
+	sout | fc | sptr | eptr | endl;
+
+	sptr = "-123.4567890123456+123.4567890123456i";
+	dc = strto( sptr, 0 );
+	sout | dc | sptr | endl;
+	sptr = "123.45678901234567890123456789-123.45678901234567890123456789i";
+	ldc = strto( sptr, 0 );
+	sout | ldc | sptr | endl;
+	sptr = "123.45678901234-123.4567890i";
+	ldc2 = strto( sptr, 0 );
+	sout | ldc2 | sptr | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa ato.c" //
+// End: //
Index: tests/attributes.c
===================================================================
--- tests/attributes.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/attributes.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,157 @@
+// 
+// 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.
+// 
+// attributes.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Mon Feb  6 16:07:02 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 19 13:50:51 2018
+// Update Count     : 15
+// 
+
+
+// label attribute
+int la() {
+  L: __attribute__(( unused )) 1;
+}
+
+
+// aggregate_name
+struct __attribute__(( unused )) {};
+struct __attribute__(( unused )) Agn1;
+struct __attribute__(( unused )) Agn2 {};
+enum __attribute__(( unused )) { E1 };
+enum __attribute__(( unused )) Agn3;
+enum __attribute__(( packed )) Agn3 { E2 };
+#ifdef __CFA__
+struct __attribute__(( unused )) {} ( int );
+struct __attribute__(( unused )) Agn4 {} ( int );
+#endif // __CFA__
+
+
+// field_declaring_list
+struct Fdl {
+    int f1 __attribute__(( unused ));
+    int __attribute__(( unused )) f2;
+    int __attribute__(( unused )) f3 __attribute__(( unused ));
+    __attribute__(( unused )) int f4;
+    __attribute__(( unused )) int f5 __attribute__(( unused ));
+    __attribute__(( used )) int f6 __attribute__(( packed )), f7 __attribute__(( unused )) __attribute__(( unused )), __attribute__(( used )) f8 __attribute__(( unused ));
+    int ( ( * (f9) __attribute__(( unused )) ) __attribute__(( unused )) );
+};
+
+
+// asm_name_opt
+int f() asm( "xyz" ) __attribute__(( unused ));
+
+
+// variable_declarator
+const __attribute__(( used )) int vd1 __attribute__(( used )), __attribute__(( unused )) vd2;
+const __attribute__(( used )) int __attribute__(( used )) * __attribute__(( used )) vd3 __attribute__(( used )), __attribute__(( unused )) (* __attribute__(( unused )) (vd4)) __attribute__(( used ));
+const __attribute__(( used )) int __attribute__(( used )) vd5[5] __attribute__(( used )), __attribute__(( unused )) ((vd6)[5]) __attribute__(( used ));
+const __attribute__(( used )) int __attribute__(( used )) (* __attribute__(( used )) vd7)() __attribute__(( used )), __attribute__(( unused )) ((* __attribute__(( used )) vd8)()) __attribute__(( used ));
+
+
+// function_declarator
+__attribute__(( unused )) int f1() __attribute__(( used ));
+__attribute__(( unused )) int f1() {}
+__attribute__(( unused )) int * __attribute__(( unused )) * const __attribute__(( unused )) f2() __attribute__(( used ));
+__attribute__(( unused )) int * __attribute__(( unused )) * const __attribute__(( unused )) f2() {}
+__attribute__(( unused )) int (* __attribute__(( unused )) f3(int))[] __attribute__(( used ));
+__attribute__(( unused )) int (* __attribute__(( unused )) f3(int p))[] {}
+__attribute__(( unused )) int (* __attribute__(( unused )) f4())(int) __attribute__(( used ));
+__attribute__(( unused )) int (* __attribute__(( unused )) f4())(int) {}
+
+
+// variable_type_redeclarator
+typedef int t1, t2, t3, t4, t5, t6, t7, t8;
+int vtr() {
+    // redefine typedef name in new scope
+    __attribute__(( unused )) int __attribute__(( unused )) t1 __attribute__(( used ));
+    __attribute__(( unused )) int __attribute__(( unused )) (* (* t2 __attribute__(( unused )) ) __attribute__(( unused )) ) __attribute__(( unused ));
+    __attribute__(( unused )) int __attribute__(( unused )) t3[5] __attribute__(( unused ));
+    __attribute__(( unused )) int __attribute__(( unused )) (* (* __attribute__(( unused )) t4[5]) __attribute__(( unused )) ) __attribute__(( unused ));
+    __attribute__(( unused )) int __attribute__(( unused )) t5() __attribute__(( unused ));
+    __attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )) ((t6))() __attribute__(( unused ));
+}
+
+
+// identifier_parameter_declarator
+int ipd1( __attribute__(( unused )) int __attribute__(( unused )) p __attribute__(( unused )),
+	  __attribute__(( unused )) int __attribute__(( unused )) q __attribute__(( unused )) );
+int ipd1( __attribute__(( unused )) int __attribute__(( unused )) p __attribute__(( unused )),
+	  __attribute__(( unused )) int __attribute__(( unused )) q __attribute__(( unused )) ) {}
+int ipd2( __attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )) p __attribute__(( unused )),
+	  __attribute__(( unused )) int __attribute__(( unused )) (* (q)) __attribute__(( unused )) );
+int ipd2( __attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )) p __attribute__(( unused )),
+	  __attribute__(( unused )) int __attribute__(( unused )) (* (q)) __attribute__(( unused )) ) {}
+int ipd3( __attribute__(( unused )) int __attribute__(( unused )) p[] __attribute__(( unused )),
+	  __attribute__(( unused )) int __attribute__(( unused )) ((q)[]) __attribute__(( unused )) );
+int ipd3( __attribute__(( unused )) int __attribute__(( unused )) p[] __attribute__(( unused )),
+	  __attribute__(( unused )) int __attribute__(( unused )) ((q)[]) __attribute__(( unused )) ) {}
+int ipd4( __attribute__(( unused )) int __attribute__(( unused )) p() __attribute__(( unused )),
+	  __attribute__(( unused )) int __attribute__(( unused )) ((q)()) __attribute__(( unused )) );
+int ipd4( __attribute__(( unused )) int __attribute__(( unused )) p() __attribute__(( unused )),
+	  __attribute__(( unused )) int __attribute__(( unused )) ((q)()) __attribute__(( unused )) ) {}
+
+
+// type_parameter_redeclarator
+typedef int Foo;
+int tpr1( __attribute__(( unused )) int __attribute__(( unused )) Foo __attribute__(( unused )) );
+int tpr2( __attribute__(( unused )) int __attribute__(( unused )) (* __attribute__(( unused )) (* __attribute__(( unused )) Foo) __attribute__(( unused )) ) __attribute__(( unused )) );
+int tpr3( __attribute__(( unused )) int __attribute__(( unused )) Foo[]  __attribute__(( unused )));
+int tpr4( __attribute__(( unused )) int __attribute__(( unused )) ( __attribute__(( unused )) Foo[5] __attribute__(( unused )) ) );
+int tpr5( __attribute__(( unused )) int __attribute__(( unused )) (*Foo)() __attribute__(( unused )) );
+int tpr6( __attribute__(( unused )) int __attribute__(( unused )) Foo() __attribute__(( unused )) );
+int tpr7( __attribute__(( unused )) int __attribute__(( unused )) ( __attribute__(( unused )) Foo( __attribute__(( unused )) int __attribute__(( unused )) ) ) );
+
+
+// abstract_declarator
+int ad() {
+    typeof( int __attribute__(( used )) ) ad1 __attribute__(( unused ));
+    typeof( int __attribute__(( unused )) * __attribute__(( unused )) ) ad2 __attribute__(( unused ));
+    typeof( int __attribute__(( unused )) [5] ) __attribute__(( unused )) ad3 __attribute__(( unused ));
+    typeof( __attribute__(( unused )) int __attribute__(( unused )) (*)[10] __attribute__(( unused )) ) __attribute__(( unused )) ad4 __attribute__(( unused )), ad5 __attribute__(( used ));
+    typeof( __attribute__(( unused )) int __attribute__(( unused )) () __attribute__(( unused )) ) __attribute__(( unused )) ad6 __attribute__(( unused ));
+    sizeof( __attribute__(( unused )) int __attribute__(( unused )) );
+    sizeof( __attribute__(( unused )) int __attribute__(( unused )) (* __attribute__(( unused )) (* __attribute__(( unused )) ) ) );
+    sizeof( __attribute__(( unused )) int __attribute__(( unused )) [5] __attribute__(( unused )) );
+    sizeof( __attribute__(( unused )) int __attribute__(( unused )) (*)[10] __attribute__(( unused )) );
+    sizeof( __attribute__(( unused )) int __attribute__(( unused )) () __attribute__(( unused )) );
+    sizeof( struct { int i; } __attribute__(( unused )) );
+    sizeof( enum { R } __attribute__(( unused )) );
+}
+
+
+// abstract_parameter_declarator
+int apd1( __attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )),
+	__attribute__(( unused )) int __attribute__(( unused )) * __attribute__(( unused )) );
+int apd2( __attribute__(( unused )) int __attribute__(( unused )) (* (* __attribute__(( unused )) ) __attribute__(( unused )) ),
+	__attribute__(( unused )) int __attribute__(( unused )) (* (* __attribute__(( unused )) ) __attribute__(( unused )) ) );
+int apd3( __attribute__(( unused )) int __attribute__(( unused )) ([]) __attribute__(( unused )),
+	__attribute__(( unused )) int __attribute__(( unused )) ([]) __attribute__(( unused )) );
+int apd4( __attribute__(( unused )) int __attribute__(( unused )) ()  __attribute__(( unused )),
+	__attribute__(( unused )) int __attribute__(( unused )) ()  __attribute__(( unused )) );
+int apd5( __attribute__(( unused )) int __attribute__(( unused )) (( __attribute__(( unused )) int )) __attribute__(( unused )),
+	__attribute__(( unused )) int __attribute__(( unused )) ( __attribute__(( unused )) int ) __attribute__(( unused )) );
+int apd6( __attribute__(( unused )) int __attribute__(( unused )) (*)()  __attribute__(( unused )),
+	__attribute__(( unused )) int __attribute__(( unused )) (*)()  __attribute__(( unused )) );
+int apd7( __attribute__(( unused )) int __attribute__(( unused )) ((*)( __attribute__(( unused )) int ) ) __attribute__(( unused )),
+	__attribute__(( unused )) int __attribute__(( unused )) ((*)( __attribute__(( unused )) int ) ) __attribute__(( unused )) );
+
+
+// variable_abstract_declarator
+struct Vad {
+    int __attribute__(( unused ));
+    int __attribute__(( unused )) :4;
+    int __attribute__(( unused )) :4, __attribute__(( unused )) :6;
+};
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa attributes.c" //
+// End: //
Index: tests/avltree/avl-private.c
===================================================================
--- tests/avltree/avl-private.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/avltree/avl-private.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,134 @@
+#include "avl.h"
+#include "avl-private.h"
+
+// AVL tree specific (internal) operations:
+// rotateLeft, rotateRight, fix
+//
+// AVL tree enhanced height operation
+//
+// calcBalance is a simple computation of height(R) - height(L)
+
+// an AVL tree's height is easy to compute
+// just follow path with the larger balance
+forall(otype K | Comparable(K), otype V)
+int height(tree(K, V) * t){
+  int helper(tree(K, V) * t, int ht){
+    if (empty(t)){
+      return ht;
+    } else if (t->balance > 0){
+      return helper(t->right, 1+ht);
+    } else {
+      // can traverse either branch to find the height
+      // of an AVL tree whose balance is 0
+      return helper(t->left, 1+ht);
+    }
+  }
+  return helper(t, 0);
+}
+
+forall(otype K | Comparable(K), otype V)
+int calcBalance(tree(K, V) * t){
+  int l = height(t->left);
+  int r = height(t->right);
+  t->balance = r-l;
+  return t->balance;
+}
+
+// re-establish the link between parent and child
+forall(otype K | Comparable(K), otype V)
+void relinkToParent(tree(K, V) * t){
+  tree(K, V) * parent = t->parent; // FIX ME!!
+  if (empty(t->parent)){
+    return;
+  } else if (parent->key < t->key){
+    parent->right = t;
+  } else {
+    parent->left = t;
+  }
+}
+
+// rotate left from t
+forall(otype K | Comparable(K), otype V)
+tree(K, V) * rotateLeft(tree(K, V) * t){
+  tree(K, V) * newRoot = t->right;
+  t->right = newRoot->left;
+  newRoot->left = t;
+
+  // swap parents
+  newRoot->parent = t->parent;
+  t->parent = newRoot;
+  if (t->right != NULL) {
+    tree(K, V) * right = t->right; // FIX ME!!
+    right->parent = t;
+  }
+  // re-establish the link between newRoot and its parent
+  relinkToParent(newRoot);
+  return newRoot;
+}
+
+// rotate right from t
+forall(otype K | Comparable(K), otype V)
+tree(K, V) * rotateRight(tree(K, V) * t){
+  tree(K, V) * newRoot = t->left;
+  t->left = newRoot->right;
+  newRoot->right = t;
+
+  // swap parents
+  newRoot->parent = t->parent;
+  t->parent = newRoot;
+  if (t->left != NULL){
+    tree(K, V) * left = t->left; // FIX ME!!
+    left->parent = t;
+  }
+  // re-establish the link between newRoot and its parent
+  relinkToParent(newRoot);
+  return newRoot;
+}
+
+// balances a node that has balance factor -2 or 2
+forall(otype K | Comparable(K), otype V)
+tree(K, V) * fix(tree(K, V) * t){
+  // ensure that t's balance factor is one of
+  // the appropriate values
+  assert(t->balance == 2 || t->balance == -2);
+
+  if (t->balance == -2){
+    tree(K, V) * left = t->left; // FIX ME!!
+    if (left->balance == 1){
+      t->left = rotateLeft(t->left);
+    }
+    return rotateRight(t);
+  } else if (t->balance == 2){
+    tree(K, V) * right = t->right; // FIX ME!!
+    if (right->balance == -1){
+      t->right = rotateRight(t->right);
+    }
+    return rotateLeft(t);
+  } else {
+    // shouldn't ever get here
+    assert((int)0);
+    return t;
+  }
+}
+
+// attempt to fix the tree, if necessary
+forall(otype K | Comparable(K), otype V)
+tree(K, V) * tryFix(tree(K, V) * t){
+  int b = calcBalance(t);
+
+  if (b == -2 || b == 2){
+    t = fix(t);
+  } else {
+    assert(b == 0 || b == 1 || b == -1);
+  }
+  return t;
+}
+
+// sets parent field of c to be p
+forall(otype K | Comparable(K), otype V)
+void setParent(tree(K, V) * c, tree(K, V) * p){
+  if (! empty(c)){
+    c->parent = p;
+  }
+}
+
Index: tests/avltree/avl-private.h
===================================================================
--- tests/avltree/avl-private.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/avltree/avl-private.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,15 @@
+#pragma once
+#include "avl.h"
+
+// functions that really shouldn't be exposed, but are to reduce compilation time
+
+// attempt to fix the tree, if necessary
+forall(otype K | Comparable(K), otype V)
+tree(K, V) * tryFix(tree(K, V) * t);
+
+// sets parent field of c to be p
+forall(otype K | Comparable(K), otype V)
+void setParent(tree(K, V) * c, tree(K, V) * p);
+
+forall(otype K | Comparable(K), otype V)
+int height(tree(K, V) * t);
Index: tests/avltree/avl.h
===================================================================
--- tests/avltree/avl.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/avltree/avl.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,101 @@
+#pragma once
+
+extern "C" {
+#define NULL 0
+#define assert(cond) if (! (cond)) { printf("Assertion failed: (%s) at %s:%d\n", #cond, __FILE__, __LINE__); abort(); }
+}
+
+// #include <types.h>
+// #include <lib.h>
+
+trait Comparable(otype T) {
+  int ?<?(T, T);
+};
+
+forall(otype T | Comparable(T))
+int ?==?(T t1, T t2);
+
+forall(otype T | Comparable(T))
+int ?>?(T t1, T t2);
+
+// xxx - unbound type variable problems when trying to use new instead of create
+// forall( otype T, ttype Params | { void ?{}(T *, Params); } ) T * new( Params p );
+
+// To-do: properly use height or balance factor
+// Right now I'm recomputing the height for each
+// node multiple times. It's Theta-log(n), but still..
+
+// Balanced Binary Search Tree of void pointers; almost an AVL tree -
+//   just needs to make use of the balance factor properly
+// Operations:
+// ?{}, ^?{}
+// create   - allocate a new tree. Just a wrapper around malloc which also calls the tree constructor.
+// find     - search through the tree for the given key; return the associated value
+// empty    - return true if the tree is empty
+// insert   - insert node with key and value pair. Returns 0 on success
+// remove   - remove node with the given key, returns 0 on success, 1 on failure
+// copy     - deep copy of a tree
+// for_each - applies the given function to every data element in the tree
+//    assumes that a non-zero return value is an error, will return
+//    the error code from func
+
+// temporary: need forward decl to get around typedef problem
+forall(otype K | Comparable(K), otype V)
+struct tree;
+
+forall(otype K | Comparable(K), otype V)
+struct tree {
+  K key;
+  V value;
+  tree(K, V) * parent;
+  tree(K, V) * left;
+  tree(K, V) * right;
+  int balance;
+};
+
+forall(otype K | Comparable(K), otype V)
+void ?{}(tree(K, V) &t, K key, V value);
+
+forall(otype K, otype V)
+void ^?{}(tree(K, V) & t);
+
+forall(otype K | Comparable(K), otype V)
+tree(K, V) * create(K key, V value);
+
+forall(otype K | Comparable(K), otype V)
+V * find(tree(K, V) * t, K key);
+
+forall(otype K | Comparable(K), otype V)
+int empty(tree(K, V) * t);
+
+// returns the root of the tree
+forall(otype K | Comparable(K), otype V)
+int insert(tree(K, V) ** t, K key, V value);
+
+forall(otype K | Comparable(K), otype V)
+int remove(tree(K, V) ** t, K key);
+
+forall(otype K | Comparable(K), otype V)
+void copy(tree(K, V) * src, tree(K, V) ** ret);
+
+forall(otype K | Comparable(K), otype V)
+void for_each(tree(K, V) * t, void (*func)(V));
+
+// // Helper function to print trees
+// forall(otype K | Comparable(K), otype V)
+// void printTree(tree * t, int level){
+//   if (empty(t)){
+//     return;
+//   }
+
+//   printTree(t->left, level+1);
+//   printf("key: %d, value: %s, level: %d\n", t->key, t->value, level);
+//   printTree(t->right, level+1);
+// }
+
+// // inorder traversal of t
+// // prints each key, followed by the value
+// forall(otype K | Comparable(K), otype V)
+// void printTree(tree(K, V) * t){
+//     printTree(t, 0);
+// }
Index: tests/avltree/avl0.c
===================================================================
--- tests/avltree/avl0.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/avltree/avl0.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,11 @@
+#include "avl.h"
+
+forall(otype T | Comparable(T))
+int ?==?(T t1, T t2) {
+  return !(t1 < t2) && !(t2 < t1);
+}
+
+forall(otype T | Comparable(T))
+int ?>?(T t1, T t2) {
+  return t2 < t1;
+}
Index: tests/avltree/avl1.c
===================================================================
--- tests/avltree/avl1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/avltree/avl1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,48 @@
+#include "avl.h"
+// #include "cwrap.h"
+#include <stdlib.hfa>
+
+forall(otype K | Comparable(K), otype V)
+void ?{}(tree(K, V) &t, K key, V value){
+  (t.key) { key };
+  (t.value) { value };
+  t.parent = NULL;
+  t.left = NULL;
+  t.right = NULL;
+  t.balance = 0;
+}
+
+forall(otype K, otype V)
+void ^?{}(tree(K, V) & t){
+  delete(t.left);
+  delete(t.right);
+  ^(t.key){};
+  ^(t.value){};
+}
+
+forall(otype K | Comparable(K), otype V)
+tree(K, V) * create(K key, V value) {
+  // infinite loop trying to resolve ... t = malloc();
+  tree(K, V) * t = malloc(sizeof(tree(K,V)));
+  (*t){ key, value };
+  return t;
+}
+
+// // Helper function to print trees
+// forall(otype K | Comparable(K), otype V)
+// void printTree(tree * t, int level){
+//   if (empty(t)){
+//     return;
+//   }
+
+//   printTree(t->left, level+1);
+//   printf("key: %d, value: %s, level: %d\n", t->key, t->value, level);
+//   printTree(t->right, level+1);
+// }
+
+// // inorder traversal of t
+// // prints each key, followed by the value
+// forall(otype K | Comparable(K), otype V)
+// void printTree(tree(K, V) * t){
+//     printTree(t, 0);
+// }
Index: tests/avltree/avl2.c
===================================================================
--- tests/avltree/avl2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/avltree/avl2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,84 @@
+#include "avl.h"
+#include "avl-private.h"
+
+forall(otype K | Comparable(K), otype V)
+V * find(tree(K, V) * t, K key){
+  if (empty(t)){
+    return NULL;
+  }
+
+  if (t->key == key){
+    return &t->value;
+  } else if (t->key < key){
+    return find(t->right, key);
+  } else {
+    // t->key > key
+    return find(t->left, key);
+  }
+}
+
+forall(otype K | Comparable(K), otype V)
+int empty(tree(K, V) * t){
+  return t == NULL;
+}
+
+// returns the root of the tree
+forall(otype K | Comparable(K), otype V)
+int insert(tree(K, V) ** t, K key, V value) {
+  // handles a non-empty tree
+  // problem if the following signature is used: tries to use an adapter to call helper, but shouldn't
+  // be necessary - seems to be a problem with helper's type variables not being renamed
+  // tree(K, V) * helper(tree(K, V) * t, K key, V value){
+  tree(K, V) * helper(tree(K, V) * t){
+    if (t->key == key){
+      // ran into the same key - uh-oh
+      return NULL;
+    } else if (t->key < key){
+      if (t->right == NULL){
+        t->right = create(key, value);
+        tree(K, V) * right = t->right; // FIX ME!
+        right->parent = t;             // !!!!!!!
+        return t->right;
+      } else {
+        return helper(t->right);
+      }
+    } else {
+      if (t->left == NULL){
+        t->left = create(key, value);
+        tree(K, V) * left = t->left;   // FIX ME!
+        left->parent = t;              // !!!!!!!
+        return t->left;
+      } else {
+        return helper(t->left);
+      }
+    }
+  }
+
+  if (empty(*t)){
+    // be nice and return a new tree
+    *t = create(key, value);
+    return 0;
+  }
+  tree(K, V) * newTree = helper(*t);
+  if (newTree == NULL){
+    // insert error handling code, only possibility
+    // currently is that the key already exists
+    return 99;
+  }
+  // move up the tree, updating balance factors
+  // if the balance factor is -1, 0, or 1 keep going
+  // if the balance factor is -2 or 2, call fix
+  while (newTree->parent != NULL){ // loop until newTree == NULL?
+    newTree = tryFix(newTree);
+    tree(K, V) * parent = newTree->parent;  // FIX ME!!
+    assert(parent->left == newTree ||
+         parent->right == newTree);
+    newTree = newTree->parent;
+  }
+  insert(t, key, value);
+
+  // do it one more time - this is the root
+  newTree = tryFix(newTree);
+  *t = newTree;
+  return 0;
+}
Index: tests/avltree/avl3.c
===================================================================
--- tests/avltree/avl3.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/avltree/avl3.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,118 @@
+#include "avl.h"
+#include "avl-private.h"
+#include <stdlib.hfa>
+
+// swaps the data within two tree nodes
+forall(otype K | Comparable(K), otype V)
+void node_swap(tree(K, V) * t, tree(K, V) * t2){
+	swap( t->key,  t2->key);
+	swap( t->value, t2->value);
+}
+
+// go left as deep as possible from within the right subtree
+forall(otype K | Comparable(K), otype V)
+tree(K, V) * find_successor(tree(K, V) * t){
+	tree(K, V) * find_successor_helper(tree(K, V) * t){
+		// go left as deep as possible, return the last node
+		if (empty(t->left)){
+			return t;
+		} else {
+			return find_successor_helper(t->left);
+		}
+	}
+	return find_successor_helper(t->right);
+}
+
+// cleanup - don't want to deep delete, so set children to NULL first.
+forall(otype K | Comparable(K), otype V)
+void deleteSingleNode(tree(K, V) * t) {
+	t->left = NULL;
+	t->right = NULL;
+	delete(t);
+}
+
+// does the actual remove operation once we've found the node in question
+forall(otype K | Comparable(K), otype V)
+tree(K, V) * remove_node(tree(K, V) * t){
+	// is the node a leaf?
+	if (empty(t->left) && empty(t->right)){
+		// yes, just delete this node
+		delete(t);
+		return NULL;
+	} else if (empty(t->left)){
+		// if the left is empty, there is only one child -> move right up
+		node_swap(t, t->right);
+		tree(K, V) * tmp = t->right;
+
+		// relink tree
+		t->left = tmp->left;
+		t->right = tmp->right;
+
+		setParent(t->left, t);
+		setParent(t->right, t);
+		deleteSingleNode(tmp);
+		return t;
+	} else if (empty(t->right)){
+		// if the right is empty, there is only one child -> move left up
+		node_swap(t, t->left);
+		tree(K, V) * tmp = t->left;
+
+		// relink tree
+		t->left = tmp->left;
+		t->right = tmp->right;
+
+		setParent(t->left, t);
+		setParent(t->right, t);
+		deleteSingleNode(tmp);
+		return t;
+	} else {
+		// swap with the successor
+		tree(K, V) * s = find_successor(t);
+		tree(K, V) * parent = s->parent;
+
+		if (parent->left == s){
+			parent->left = s->right;
+		} else {
+			assert(parent->right == s);
+			parent->right = s->right;
+		}
+		setParent(s->right, parent);
+		node_swap(t, s);
+		deleteSingleNode(s);
+		return t;
+	}
+}
+
+// finds the node that needs to be removed
+forall(otype K | Comparable(K), otype V)
+tree(K, V) * remove_helper(tree(K, V) * t, K key, int * worked){
+	if (empty(t)){
+		// did not work because key was not found
+		// set the status variable and return
+		*worked = 1;
+	} else if (t->key == key) {
+		t = remove_node(t);
+	} else if (t->key < key){
+		t->right = remove_helper(t->right, key, worked);
+	} else {
+		// t->key > key
+		t->left = remove_helper(t->left, key, worked);
+	}
+	// try to fix after deleting
+	if (! empty(t)) {
+		t = tryFix(t);
+	}
+	return t;
+}
+
+forall(otype K | Comparable(K), otype V)
+int remove(tree(K, V) ** t, K key){
+	int worked = 0;
+	tree(K, V) * newTree = remove_helper(*t, key, &worked);
+	*t = newTree;
+	return worked;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/avltree/avl4.c
===================================================================
--- tests/avltree/avl4.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/avltree/avl4.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,48 @@
+#include "avl.h"
+#include "avl-private.h"
+
+// Perform a shallow copy of src, return the
+// new tree in ret
+forall(otype K | Comparable(K), otype V)
+int copy(tree(K, V) * src, tree(K, V) ** ret){
+  tree(K, V) * helper(tree(K, V) * t, int * worked){
+    if (empty(t)){
+      // given empty tree, return empty tree
+      return NULL;
+    }
+
+    // otherwise, this is not an empty node,
+    // create a new node
+    tree(K, V) * newTree = create(t->key, t->value);
+    if (empty(newTree)) {
+      *worked = 1;
+      return NULL;
+    }
+
+    // recursively copy the left and right branches
+    newTree->left = helper(t->left, worked);
+    newTree->right = helper(t->right, worked);
+
+    setParent(newTree->left, newTree);
+    setParent(newTree->right, newTree);
+    return newTree;
+  }
+
+  int worked = 0;
+  *ret = helper(src, &worked);
+  return worked;
+}
+
+// Apply func to every value element in t, using an in order traversal
+forall(otype K | Comparable(K), otype V)
+void for_each(tree(K, V) * t, int (*func)(V)) {
+  if (t == NULL) {
+    return;
+  }
+  // recursively apply the function to the left,
+  // apply the function to this node,
+  // recursively apply the function to the right
+  for_each(t->left, func);
+  func(t->value);
+  for_each(t->right, func);
+}
Index: tests/avltree/avl_test.c
===================================================================
--- tests/avltree/avl_test.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/avltree/avl_test.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,52 @@
+#include "avl.h"
+#include "avl-private.h"
+#include <stdlib.hfa>
+
+extern "C" {
+  int strcmp(const char *, const char *);
+}
+
+int main(){
+  // operations:
+  // find(tree(K, V) *, K)
+  // int empty(tree(K, V) *);
+  // tree(K, V) * insert(tree(K, V) *, K, V);
+  // int remove(tree(K, V) **, K);
+
+  // int -> int
+  tree(int, int) * imap = create(-1, (int)0);
+  insert(&imap, 12, 13);
+  insert(&imap, 2, 3);
+  assert( height(imap) == 2 );
+
+  printf("%d %d %d\n", *find(imap, 2), *find(imap, 12), *find(imap, -1));
+
+  remove(&imap, -1);
+  delete(imap);
+
+  // int -> char *
+  tree(int, const char *) * smap = create(-1, "baz");
+  insert(&smap, 12, "bar");
+  insert(&smap, 2, "foo");
+  assert( height(smap) == 2 );
+
+  printf("%s %s %s\n", *find(smap, 2), *find(smap, 12), *find(smap, -1));
+
+  remove(&smap, -2);
+  delete(smap);
+
+  // const char* -> const char*
+  int ?<?(const char * a, const char * b) {
+    return strcmp(a, b) < 0;
+  }
+
+  tree(const char *, const char *) * ssmap = create("queso", "cheese");
+  insert(&ssmap, "foo", "bar");
+  insert(&ssmap, "hello", "world");
+  assert( height(ssmap) == 2 );
+
+  printf("%s %s %s\n", *find(ssmap, "hello"), *find(ssmap, "foo"), *find(ssmap, "queso"));
+
+  remove(&ssmap, "foo");
+  delete(ssmap);
+}
Index: tests/builtins/sync.c
===================================================================
--- tests/builtins/sync.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/builtins/sync.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,468 @@
+#include <stdbool.h>
+#include <stdint.h>
+
+void foo() {
+	volatile _Bool * vpB = 0; _Bool vB = 0;
+	volatile char * vp1 = 0; char * rp1 = 0; char v1 = 0;
+	volatile short * vp2 = 0; short * rp2 = 0; short v2 = 0;
+	volatile int * vp4 = 0; int * rp4 = 0; int v4 = 0;
+	volatile long long int * vp8 = 0; long long int * rp8 = 0; long long int v8 = 0;
+	#if defined(__SIZEOF_INT128__)
+	volatile __int128 * vp16 = 0; __int128 * rp16 = 0; __int128 v16 = 0;
+	#endif
+
+	{ char ret; ret = __sync_fetch_and_add(vp1, v1); }
+	{ char ret; ret = __sync_fetch_and_add_1(vp1, v1); }
+	{ short ret; ret = __sync_fetch_and_add(vp2, v2); }
+	{ short ret; ret = __sync_fetch_and_add_2(vp2, v2); }
+	{ int ret; ret = __sync_fetch_and_add(vp4, v4); }
+	{ int ret; ret = __sync_fetch_and_add_4(vp4, v4); }
+	{ long long int ret; ret = __sync_fetch_and_add(vp8, v8); }
+	{ long long int ret; ret = __sync_fetch_and_add_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_fetch_and_add(vp16, v16); }
+	{ __int128 ret; ret = __sync_fetch_and_add_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_fetch_and_sub(vp1, v1); }
+	{ char ret; ret = __sync_fetch_and_sub_1(vp1, v1); }
+	{ short ret; ret = __sync_fetch_and_sub(vp2, v2); }
+	{ short ret; ret = __sync_fetch_and_sub_2(vp2, v2); }
+	{ int ret; ret = __sync_fetch_and_sub(vp4, v4); }
+	{ int ret; ret = __sync_fetch_and_sub_4(vp4, v4); }
+	{ long long int ret; ret = __sync_fetch_and_sub(vp8, v8); }
+	{ long long int ret; ret = __sync_fetch_and_sub_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_fetch_and_sub(vp16, v16); }
+	{ __int128 ret; ret = __sync_fetch_and_sub_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_fetch_and_or(vp1, v1); }
+	{ char ret; ret = __sync_fetch_and_or_1(vp1, v1); }
+	{ short ret; ret = __sync_fetch_and_or(vp2, v2); }
+	{ short ret; ret = __sync_fetch_and_or_2(vp2, v2); }
+	{ int ret; ret = __sync_fetch_and_or(vp4, v4); }
+	{ int ret; ret = __sync_fetch_and_or_4(vp4, v4); }
+	{ long long int ret; ret = __sync_fetch_and_or(vp8, v8); }
+	{ long long int ret; ret = __sync_fetch_and_or_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_fetch_and_or(vp16, v16); }
+	{ __int128 ret; ret = __sync_fetch_and_or_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_fetch_and_and(vp1, v1); }
+	{ char ret; ret = __sync_fetch_and_and_1(vp1, v1); }
+	{ short ret; ret = __sync_fetch_and_and(vp2, v2); }
+	{ short ret; ret = __sync_fetch_and_and_2(vp2, v2); }
+	{ int ret; ret = __sync_fetch_and_and(vp4, v4); }
+	{ int ret; ret = __sync_fetch_and_and_4(vp4, v4); }
+	{ long long int ret; ret = __sync_fetch_and_and(vp8, v8); }
+	{ long long int ret; ret = __sync_fetch_and_and_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_fetch_and_and(vp16, v16); }
+	{ __int128 ret; ret = __sync_fetch_and_and_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_fetch_and_xor(vp1, v1); }
+	{ char ret; ret = __sync_fetch_and_xor_1(vp1, v1); }
+	{ short ret; ret = __sync_fetch_and_xor(vp2, v2); }
+	{ short ret; ret = __sync_fetch_and_xor_2(vp2, v2); }
+	{ int ret; ret = __sync_fetch_and_xor(vp4, v4); }
+	{ int ret; ret = __sync_fetch_and_xor_4(vp4, v4); }
+	{ long long int ret; ret = __sync_fetch_and_xor(vp8, v8); }
+	{ long long int ret; ret = __sync_fetch_and_xor_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_fetch_and_xor(vp16, v16); }
+	{ __int128 ret; ret = __sync_fetch_and_xor_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_fetch_and_nand(vp1, v1); }
+	{ char ret; ret = __sync_fetch_and_nand_1(vp1, v1); }
+	{ short ret; ret = __sync_fetch_and_nand(vp2, v2); }
+	{ short ret; ret = __sync_fetch_and_nand_2(vp2, v2); }
+	{ int ret; ret = __sync_fetch_and_nand(vp4, v4); }
+	{ int ret; ret = __sync_fetch_and_nand_4(vp4, v4); }
+	{ long long int ret; ret = __sync_fetch_and_nand(vp8, v8); }
+	{ long long int ret; ret = __sync_fetch_and_nand_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_fetch_and_nand(vp16, v16); }
+	{ __int128 ret; ret = __sync_fetch_and_nand_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_add_and_fetch(vp1, v1); }
+	{ char ret; ret = __sync_add_and_fetch_1(vp1, v1); }
+	{ short ret; ret = __sync_add_and_fetch(vp2, v2); }
+	{ short ret; ret = __sync_add_and_fetch_2(vp2, v2); }
+	{ int ret; ret = __sync_add_and_fetch(vp4, v4); }
+	{ int ret; ret = __sync_add_and_fetch_4(vp4, v4); }
+	{ long long int ret; ret = __sync_add_and_fetch(vp8, v8); }
+	{ long long int ret; ret = __sync_add_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_add_and_fetch(vp16, v16); }
+	{ __int128 ret; ret = __sync_add_and_fetch_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_sub_and_fetch(vp1, v1); }
+	{ char ret; ret = __sync_sub_and_fetch_1(vp1, v1); }
+	{ short ret; ret = __sync_sub_and_fetch(vp2, v2); }
+	{ short ret; ret = __sync_sub_and_fetch_2(vp2, v2); }
+	{ int ret; ret = __sync_sub_and_fetch(vp4, v4); }
+	{ int ret; ret = __sync_sub_and_fetch_4(vp4, v4); }
+	{ long long int ret; ret = __sync_sub_and_fetch(vp8, v8); }
+	{ long long int ret; ret = __sync_sub_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_sub_and_fetch(vp16, v16); }
+	{ __int128 ret; ret = __sync_sub_and_fetch_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_or_and_fetch(vp1, v1); }
+	{ char ret; ret = __sync_or_and_fetch_1(vp1, v1); }
+	{ short ret; ret = __sync_or_and_fetch(vp2, v2); }
+	{ short ret; ret = __sync_or_and_fetch_2(vp2, v2); }
+	{ int ret; ret = __sync_or_and_fetch(vp4, v4); }
+	{ int ret; ret = __sync_or_and_fetch_4(vp4, v4); }
+	{ long long int ret; ret = __sync_or_and_fetch(vp8, v8); }
+	{ long long int ret; ret = __sync_or_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_or_and_fetch(vp16, v16); }
+	{ __int128 ret; ret = __sync_or_and_fetch_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_and_and_fetch(vp1, v1); }
+	{ char ret; ret = __sync_and_and_fetch_1(vp1, v1); }
+	{ short ret; ret = __sync_and_and_fetch(vp2, v2); }
+	{ short ret; ret = __sync_and_and_fetch_2(vp2, v2); }
+	{ int ret; ret = __sync_and_and_fetch(vp4, v4); }
+	{ int ret; ret = __sync_and_and_fetch_4(vp4, v4); }
+	{ long long int ret; ret = __sync_and_and_fetch(vp8, v8); }
+	{ long long int ret; ret = __sync_and_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_and_and_fetch(vp16, v16); }
+	{ __int128 ret; ret = __sync_and_and_fetch_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_xor_and_fetch(vp1, v1); }
+	{ char ret; ret = __sync_xor_and_fetch_1(vp1, v1); }
+	{ short ret; ret = __sync_xor_and_fetch(vp2, v2); }
+	{ short ret; ret = __sync_xor_and_fetch_2(vp2, v2); }
+	{ int ret; ret = __sync_xor_and_fetch(vp4, v4); }
+	{ int ret; ret = __sync_xor_and_fetch_4(vp4, v4); }
+	{ long long int ret; ret = __sync_xor_and_fetch(vp8, v8); }
+	{ long long int ret; ret = __sync_xor_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_xor_and_fetch(vp16, v16); }
+	{ __int128 ret; ret = __sync_xor_and_fetch_16(vp16, v16); }
+	#endif
+
+	{ char ret; ret = __sync_nand_and_fetch(vp1, v1); }
+	{ char ret; ret = __sync_nand_and_fetch_1(vp1, v1); }
+	{ short ret; ret = __sync_nand_and_fetch(vp2, v2); }
+	{ short ret; ret = __sync_nand_and_fetch_2(vp2, v2); }
+	{ int ret; ret = __sync_nand_and_fetch(vp4, v4); }
+	{ int ret; ret = __sync_nand_and_fetch_4(vp4, v4); }
+	{ long long int ret; ret = __sync_nand_and_fetch(vp8, v8); }
+	{ long long int ret; ret = __sync_nand_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_nand_and_fetch(vp16, v16); }
+	{ __int128 ret; ret = __sync_nand_and_fetch_16(vp16, v16); }
+	#endif
+
+	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp1, v1, v1); }
+	{ _Bool ret; ret = __sync_bool_compare_and_swap_1(vp1, v1, v1); }
+	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp2, v2, v2); }
+	{ _Bool ret; ret = __sync_bool_compare_and_swap_2(vp2, v2, v2); }
+	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp4, v4, v4); }
+	{ _Bool ret; ret = __sync_bool_compare_and_swap_4(vp4, v4, v4); }
+	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp8, v8, v8); }
+	{ _Bool ret; ret = __sync_bool_compare_and_swap_8(vp8, v8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp16, v16, v16); }
+	{ _Bool ret; ret = __sync_bool_compare_and_swap_16(vp16, v16,v16); }
+	#endif
+
+	{ char ret; ret = __sync_val_compare_and_swap(vp1, v1, v1); }
+	{ char ret; ret = __sync_val_compare_and_swap_1(vp1, v1, v1); }
+	{ short ret; ret = __sync_val_compare_and_swap(vp2, v2, v2); }
+	{ short ret; ret = __sync_val_compare_and_swap_2(vp2, v2, v2); }
+	{ int ret; ret = __sync_val_compare_and_swap(vp4, v4, v4); }
+	{ int ret; ret = __sync_val_compare_and_swap_4(vp4, v4, v4); }
+	{ long long int ret; ret = __sync_val_compare_and_swap(vp8, v8, v8); }
+	{ long long int ret; ret = __sync_val_compare_and_swap_8(vp8, v8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_val_compare_and_swap(vp16, v16, v16); }
+	{ __int128 ret; ret = __sync_val_compare_and_swap_16(vp16, v16,v16); }
+	#endif
+
+	{ char ret; ret = __sync_lock_test_and_set(vp1, v1); }
+	{ char ret; ret = __sync_lock_test_and_set_1(vp1, v1); }
+	{ short ret; ret = __sync_lock_test_and_set(vp2, v2); }
+	{ short ret; ret = __sync_lock_test_and_set_2(vp2, v2); }
+	{ int ret; ret = __sync_lock_test_and_set(vp4, v4); }
+	{ int ret; ret = __sync_lock_test_and_set_4(vp4, v4); }
+	{ long long int ret; ret = __sync_lock_test_and_set(vp8, v8); }
+	{ long long int ret; ret = __sync_lock_test_and_set_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __sync_lock_test_and_set(vp16, v16); }
+	{ __int128 ret; ret = __sync_lock_test_and_set_16(vp16, v16); }
+	#endif
+
+	{ __sync_lock_release(vp1); }
+	{ __sync_lock_release_1(vp1); }
+	{ __sync_lock_release(vp2); }
+	{ __sync_lock_release_2(vp2); }
+	{ __sync_lock_release(vp4); }
+	{ __sync_lock_release_4(vp4); }
+	{ __sync_lock_release(vp8); }
+	{ __sync_lock_release_8(vp8); }
+	#if defined(__SIZEOF_INT128__)
+	{ __sync_lock_release(vp16); }
+	{ __sync_lock_release_16(vp16); }
+	#endif
+
+	{ __sync_synchronize(); }
+
+
+
+
+	{ _Bool ret; ret = __atomic_test_and_set(vpB, vB); }
+	{ _Bool ret; ret = __atomic_test_and_set(vp1, v1); }
+	{ __atomic_clear(vpB, vB); }
+	{ __atomic_clear(vp1, v1); }
+
+	{ char ret; ret = __atomic_exchange_n(vp1, &v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_exchange_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; __atomic_exchange(vp1, &v1, &ret, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_exchange_n(vp2, &v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_exchange_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; __atomic_exchange(vp2, &v2, &ret, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_exchange_n(vp4, &v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_exchange_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; __atomic_exchange(vp4, &v4, &ret, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_exchange_n(vp8, &v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_exchange_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; __atomic_exchange(vp8, &v8, &ret, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_exchange_n(vp16, &v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_exchange_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; __atomic_exchange(vp16, &v16, &ret, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_load_n(vp1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_load_1(vp1, __ATOMIC_SEQ_CST); }
+	{ char ret; __atomic_load(vp1, &ret, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_load_n(vp2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_load_2(vp2, __ATOMIC_SEQ_CST); }
+	{ short ret; __atomic_load(vp2, &ret, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_load_n(vp4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_load_4(vp4, __ATOMIC_SEQ_CST); }
+	{ int ret; __atomic_load(vp4, &ret, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_load_n(vp8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_load_8(vp8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; __atomic_load(vp8, &ret, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_load_n(vp16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_load_16(vp16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; __atomic_load(vp16, &ret, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ _Bool ret; ret = __atomic_compare_exchange_n(vp1, rp1, v1, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange_1(vp1, rp1, v1, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange(vp1, rp1, &v1, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange_n(vp2, rp2, v2, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange_2(vp2, rp2, v2, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange(vp2, rp2, &v2, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange_n(vp4, rp4, v4, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange_4(vp4, rp4, v4, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange(vp4, rp4, &v4, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange_n(vp8, rp8, v8, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange_8(vp8, rp8, v8, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange(vp8, rp8, &v8, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ _Bool ret; ret = __atomic_compare_exchange_n(vp16, rp16, v16, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange_16(vp16, rp16, v16, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	{ _Bool ret; ret = __atomic_compare_exchange(vp16, rp16, &v16, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ __atomic_store_n(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ __atomic_store_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ __atomic_store(vp1, &v1, __ATOMIC_SEQ_CST); }
+	{ __atomic_store_n(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ __atomic_store_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ __atomic_store(vp2, &v2, __ATOMIC_SEQ_CST); }
+	{ __atomic_store_n(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ __atomic_store_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ __atomic_store(vp4, &v4, __ATOMIC_SEQ_CST); }
+	{ __atomic_store_n(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ __atomic_store_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ __atomic_store(vp8, &v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __atomic_store_n(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __atomic_store_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __atomic_store(vp16, &v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_add_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_add_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_add_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_add_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_add_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_add_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_add_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_add_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_add_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_add_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_sub_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_sub_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_sub_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_sub_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_sub_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_sub_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_sub_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_sub_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_sub_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_sub_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_and_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_and_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_and_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_and_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_and_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_and_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_and_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_and_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_and_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_and_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_nand_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_nand_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_nand_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_nand_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_nand_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_nand_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_nand_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_nand_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_nand_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_nand_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_xor_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_xor_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_xor_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_xor_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_xor_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_xor_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_xor_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_xor_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_xor_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_xor_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_or_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_or_fetch_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_or_fetch(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_or_fetch_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_or_fetch(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_or_fetch_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_or_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_or_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_or_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_or_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_fetch_add(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_fetch_add_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_add(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_add_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_add(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_add_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_add(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_add_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_fetch_add(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_fetch_add_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_fetch_sub(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_fetch_sub_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_sub(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_sub_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_sub(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_sub_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_sub(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_sub_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_fetch_sub(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_fetch_sub_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_fetch_and(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_fetch_and_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_and(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_and_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_and(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_and_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_and(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_and_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_fetch_and(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_fetch_and_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_fetch_nand(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_fetch_nand_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_nand(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_nand_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_nand(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_nand_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_nand(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_nand_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_fetch_nand(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_fetch_nand_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_fetch_xor(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_fetch_xor_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_xor(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_xor_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_xor(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_xor_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_xor(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_xor_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_fetch_xor(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_fetch_xor_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ char ret; ret = __atomic_fetch_or(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ char ret; ret = __atomic_fetch_or_1(vp1, v1, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_or(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ short ret; ret = __atomic_fetch_or_2(vp2, v2, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_or(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ int ret; ret = __atomic_fetch_or_4(vp4, v4, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_or(vp8, v8, __ATOMIC_SEQ_CST); }
+	{ long long int ret; ret = __atomic_fetch_or_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
+	{ __int128 ret; ret = __atomic_fetch_or(vp16, v16, __ATOMIC_SEQ_CST); }
+	{ __int128 ret; ret = __atomic_fetch_or_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
+
+	{ _Bool ret; ret = __atomic_always_lock_free(sizeof(int), vp4); }
+	{ _Bool ret; ret = __atomic_is_lock_free(sizeof(int), vp4); }
+	{ __atomic_thread_fence(__ATOMIC_SEQ_CST); }
+	{ __atomic_signal_fence(__ATOMIC_SEQ_CST); }
+}
+
+int main() {
+	return 0;
+}
Index: tests/cast.c
===================================================================
--- tests/cast.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/cast.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+//Testing some valid casts of chars
+char f;
+
+void f() {
+	char f;
+	double f;
+	(int)f;
+	short f;
+	(int)f;
+	(void(*)())f;
+//	([long, long double, *[]()])([f, f, f]);
+}
+
+//Dummy main
+int main(int argc, char const *argv[])
+{
+	return 0;
+}
Index: tests/castError.c
===================================================================
--- tests/castError.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/castError.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,15 @@
+//Testing some of the invalid casts of chars
+int f;
+
+void f() {
+	int f;
+	double f;
+	(char)f;
+	(int(*)())f;
+}
+
+//Dummy main
+int main(int argc, char const *argv[])
+{
+	return 0;
+}
Index: tests/commentMisc.c
===================================================================
--- tests/commentMisc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/commentMisc.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,6 @@
+// alternative ANSI99 brackets
+
+int main() <%
+    int x<:10:>;
+%>
+
Index: tests/completeTypeError.c
===================================================================
--- tests/completeTypeError.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/completeTypeError.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,73 @@
+void foo(int *) {}
+void bar(void *) {}
+forall(otype T) void baz(T *);
+forall(dtype T) void qux(T *);
+forall(dtype T | sized(T)) void quux(T *);
+
+struct A; // incomplete
+struct B {}; // complete
+
+int main() {
+	int *i;
+	void *v;
+
+	A * x;
+	A * y;
+	B * x;
+	B * z;
+
+	// okay
+	*i;
+	*x; // picks B
+	*z;
+	foo(i);
+	bar(i);
+	baz(i);
+	qux(i);
+	quux(i);
+
+	bar(v);
+	qux(v);
+
+	// bad
+	*v;
+	*y;
+	foo(v);
+	baz(v);
+	quux(v);
+}
+
+
+forall(otype T)
+void baz(T * x) {
+	// okay
+	bar(x);
+	baz(x);
+	qux(x);
+	quux(x);
+	*x;
+}
+
+forall(dtype T)
+void qux(T * y) {
+	// okay
+	bar(y);
+	qux(y);
+
+	// bad
+	baz(y);
+	quux(y);
+	*y;
+}
+
+forall(dtype T | sized(T))
+void quux(T * z) {
+	// okay
+	bar(z);
+	qux(z);
+	quux(z);
+	*z;
+
+	// bad
+	baz(z);
+}
Index: tests/complex.c
===================================================================
--- tests/complex.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/complex.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,41 @@
+//
+// 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.
+//
+// complex.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 24 22:07:31 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 24 22:08:01 2017
+// Update Count     : 1
+//
+
+#include <stdio.h>
+#include <complex.h>
+#ifdef __CFA__
+#include <fstream.hfa>
+#endif // __CFA
+
+int main( void ) {
+    double _Complex x = 3 + 2i, y = 4 + 5i, z;
+    z = x + y;
+    printf( "x:%g+%gi y:%g+%gi z:%g+%gi\n", creal(x), cimag(x), creal(y), cimag(y), creal(z), cimag(z) );
+#ifdef __CFA__
+    sout | "x:" | x | "y:" | y | "z:" | z | endl;
+#endif // __CFA
+    x = 2.1 + 1.3i;
+    y = 3.2 + 4.5i;
+    z = x + y;
+    printf( "x:%g+%gi y:%g+%gi z:%g+%gi\n", creal(x), cimag(x), creal(y), cimag(y), creal(z), cimag(z) );
+#ifdef __CFA__
+    sout | "x:" | x | "y:" | y | "z:" | z | endl;
+#endif // __CFA
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa complex.c" //
+// End: //
Index: tests/concurrent/.expect/coroutineYield.txt
===================================================================
--- tests/concurrent/.expect/coroutineYield.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/.expect/coroutineYield.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,4000 @@
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
Index: tests/concurrent/.expect/monitor.txt
===================================================================
--- tests/concurrent/.expect/monitor.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/.expect/monitor.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+4000000
Index: tests/concurrent/.expect/multi-monitor.txt
===================================================================
--- tests/concurrent/.expect/multi-monitor.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/.expect/multi-monitor.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+2000000 2000000 2000000
Index: tests/concurrent/.expect/preempt.txt
===================================================================
--- tests/concurrent/.expect/preempt.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/.expect/preempt.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,5 @@
+100
+200
+300
+400
+500
Index: tests/concurrent/.expect/thread.txt
===================================================================
--- tests/concurrent/.expect/thread.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/.expect/thread.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,22 @@
+User main begin
+First : Suspend No. 1
+First : Suspend No. 2
+First : Suspend No. 3
+First : Suspend No. 4
+First : Suspend No. 5
+First : Suspend No. 6
+First : Suspend No. 7
+First : Suspend No. 8
+First : Suspend No. 9
+First : Suspend No. 10
+Second : Suspend No. 1
+Second : Suspend No. 2
+Second : Suspend No. 3
+Second : Suspend No. 4
+Second : Suspend No. 5
+Second : Suspend No. 6
+Second : Suspend No. 7
+Second : Suspend No. 8
+Second : Suspend No. 9
+Second : Suspend No. 10
+User main end
Index: tests/concurrent/coroutineYield.c
===================================================================
--- tests/concurrent/coroutineYield.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/coroutineYield.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,53 @@
+#include <fstream.hfa>
+#include <kernel.hfa>hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 150000ul
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 600_000ul;
+#else
+static const unsigned long N = 1_000ul;
+#endif
+
+coroutine Coroutine {};
+
+void main(Coroutine& this) {
+	while(true) {
+		#if !defined(TEST_FOREVER)
+			sout | "Coroutine 1" | endl;
+		#endif
+		yield();
+		#if !defined(TEST_FOREVER)
+			sout | "Coroutine 2" | endl;
+		#endif
+		suspend();
+	}
+}
+
+
+int main(int argc, char* argv[]) {
+	Coroutine c;
+	for(int i = 0; TEST(i < N); i++) {
+		#if !defined(TEST_FOREVER)
+			sout | "Thread 1" | endl;
+		#endif
+		resume(c);
+		#if !defined(TEST_FOREVER)
+			sout | "Thread 2" | endl;
+		#endif
+		yield();
+		KICK_WATCHDOG;
+	}
+}
Index: tests/concurrent/examples/.expect/boundedBufferEXT.txt
===================================================================
--- tests/concurrent/examples/.expect/boundedBufferEXT.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/.expect/boundedBufferEXT.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+total:400000
Index: tests/concurrent/examples/.expect/boundedBufferINT.txt
===================================================================
--- tests/concurrent/examples/.expect/boundedBufferINT.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/.expect/boundedBufferINT.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+total:400000
Index: tests/concurrent/examples/.expect/datingService.txt
===================================================================
--- tests/concurrent/examples/.expect/datingService.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/.expect/datingService.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,40 @@
+Girl:17 is dating Boy at 2 with ccode 17
+ Boy:2 is dating Girl 17 with ccode 17
+ Boy:14 is dating Girl 5 with ccode 5
+Girl:5 is dating Boy at 14 with ccode 5
+ Boy:9 is dating Girl 10 with ccode 10
+Girl:10 is dating Boy at 9 with ccode 10
+ Boy:1 is dating Girl 18 with ccode 18
+Girl:18 is dating Boy at 1 with ccode 18
+ Boy:16 is dating Girl 3 with ccode 3
+Girl:3 is dating Boy at 16 with ccode 3
+ Boy:5 is dating Girl 14 with ccode 14
+Girl:14 is dating Boy at 5 with ccode 14
+ Boy:15 is dating Girl 4 with ccode 4
+Girl:4 is dating Boy at 15 with ccode 4
+Girl:0 is dating Boy at 19 with ccode 0
+ Boy:19 is dating Girl 0 with ccode 0
+Girl:9 is dating Boy at 10 with ccode 9
+ Boy:10 is dating Girl 9 with ccode 9
+Girl:11 is dating Boy at 8 with ccode 11
+ Boy:8 is dating Girl 11 with ccode 11
+ Boy:12 is dating Girl 7 with ccode 7
+Girl:7 is dating Boy at 12 with ccode 7
+ Boy:11 is dating Girl 8 with ccode 8
+Girl:8 is dating Boy at 11 with ccode 8
+Girl:16 is dating Boy at 3 with ccode 16
+ Boy:3 is dating Girl 16 with ccode 16
+Girl:15 is dating Boy at 4 with ccode 15
+ Boy:4 is dating Girl 15 with ccode 15
+Girl:19 is dating Boy at 0 with ccode 19
+ Boy:0 is dating Girl 19 with ccode 19
+Girl:2 is dating Boy at 17 with ccode 2
+ Boy:17 is dating Girl 2 with ccode 2
+ Boy:13 is dating Girl 6 with ccode 6
+Girl:6 is dating Boy at 13 with ccode 6
+ Boy:7 is dating Girl 12 with ccode 12
+Girl:12 is dating Boy at 7 with ccode 12
+Girl:13 is dating Boy at 6 with ccode 13
+ Boy:6 is dating Girl 13 with ccode 13
+Girl:1 is dating Boy at 18 with ccode 1
+ Boy:18 is dating Girl 1 with ccode 1
Index: tests/concurrent/examples/.expect/matrixSum.txt
===================================================================
--- tests/concurrent/examples/.expect/matrixSum.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/.expect/matrixSum.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+10000
Index: tests/concurrent/examples/.expect/quickSort.txt
===================================================================
--- tests/concurrent/examples/.expect/quickSort.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/.expect/quickSort.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,32 @@
+25 6 8 -5 99 100 101 7
+-5 6 7 8 25 99 100 101
+
+1 -3 5
+-3 1 5
+
+
+
+
+9 8 7 6 5 4 3 2 1 0
+0 1 2 3 4 5 6 7 8 9
+
+1 2 3 4 5
+1 2 3 4 5
+
+5 4 3 2 1
+1 2 3 4 5
+
+3 1 5 4 2
+1 2 3 4 5
+
+
+
+
+1 1 1 1 1
+1 1 1 1 1
+
+29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+  7 6 5 4 3 2 1 0
+0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
+  22 23 24 25 26 27 28 29
+
Index: tests/concurrent/examples/.in/quickSort.txt
===================================================================
--- tests/concurrent/examples/.in/quickSort.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/.in/quickSort.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,10 @@
+8 25 6 8 -5 99 100 101 7
+3 1 -3 5
+0
+10 9 8 7 6 5 4 3 2 1 0
+5 1 2 3 4 5
+5 5 4 3 2 1
+5 3 1 5 4 2
+0
+5 1 1 1 1 1
+30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Index: tests/concurrent/examples/boundedBufferEXT.c
===================================================================
--- tests/concurrent/examples/boundedBufferEXT.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/boundedBufferEXT.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,123 @@
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// boundedBufferEXT.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Apr 18 22:52:12 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 16 08:17:03 2018
+// Update Count     : 8
+//
+
+#include <stdlib.hfa>										// random
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <unistd.h>										// getpid
+
+//Duration default_preemption() { return 0; }
+
+enum { BufferSize = 50 };
+
+forall( otype T ) {
+	monitor Buffer {
+		int front, back, count;
+		T elements[BufferSize];
+	}; // Buffer
+
+	void ?{}( Buffer(T) & buffer ) with( buffer ) { [front, back, count] = 0; }
+
+	int query( Buffer(T) & buffer ) { return buffer.count; } // read-only, no mutual exclusion
+
+	T remove( Buffer(T) & mutex buffer );				// forward
+
+	void insert( Buffer(T) & mutex buffer, T elem ) with( buffer ) {
+		if ( count == BufferSize ) waitfor( remove, buffer );
+		elements[back] = elem;
+		back = ( back + 1 ) % BufferSize;
+		count += 1;
+	} // insert
+
+	T remove( Buffer(T) & mutex buffer ) with( buffer ) {
+		if ( count == 0 ) waitfor( insert, buffer );
+		T elem = elements[front];
+		front = ( front + 1 ) % BufferSize;
+		count -= 1;
+		return elem;
+	} // remove
+}
+
+const int Sentinel = -1;
+
+thread Producer {
+	Buffer(int) & buffer;
+	unsigned int N;
+};
+void main( Producer & prod ) with( prod ) {
+	for ( int i = 1; i <= N; i += 1 ) {
+		yield( random( 5 ) );
+		insert( buffer, 1 );
+	} // for
+}
+void ?{}( Producer & prod, Buffer(int) * buffer, int N ) {
+	&prod.buffer = buffer;
+	prod.N = N;
+}
+
+thread Consumer {
+	Buffer(int) & buffer;
+	int & sum;											// summation of producer values
+};
+void main( Consumer & cons ) with( cons ) {
+	sum = 0;
+	for () {
+		yield( random( 5 ) );
+		int item = remove( buffer );
+	  if ( item == Sentinel ) break;					// sentinel ?
+		sum += item;
+	} // for
+}
+void ?{}( Consumer & cons, Buffer(int) * buffer, int & sum ) {
+	&cons.buffer = buffer;
+	&cons.sum = &sum;
+}
+
+int main() {
+	Buffer(int) buffer;
+	enum { Prods = 4, Cons = 5 };
+	Producer * prods[Prods];
+	Consumer * cons[Cons];
+	int sums[Cons];
+	int i;
+	processor p;
+
+	//srandom( getpid() );
+	srandom( 1003 );
+
+	for ( i = 0; i < Cons; i += 1 ) {					// create consumers
+		cons[i] = new( &buffer, sums[i] );
+	} // for
+	for ( i = 0; i < Prods; i += 1 ) {					// create producers
+		prods[i] = new( &buffer, 100000 );
+	} // for
+
+	for ( i = 0; i < Prods; i += 1 ) {					// wait for producers to finish
+		delete( prods[i] );
+	} // for
+	for ( i = 0; i < Cons; i += 1 ) {					// generate sentinal values to stop consumers
+		insert( buffer, Sentinel );
+	} // for
+	int sum = 0;
+	for ( i = 0; i < Cons; i += 1 ) {					// wait for consumers to finish
+		delete( cons[i] );
+		sum += sums[i];
+	} // for
+	sout | "total:" | sum | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa boundedBufferEXT.c" //
+// End: //
Index: tests/concurrent/examples/boundedBufferINT.c
===================================================================
--- tests/concurrent/examples/boundedBufferINT.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/boundedBufferINT.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,124 @@
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// boundedBuffer.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Oct 30 12:45:13 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 16 08:17:58 2018
+// Update Count     : 83
+//
+
+#include <stdlib.hfa>										// random
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <unistd.h>										// getpid
+
+//Duration default_preemption() { return 0; }
+
+enum { BufferSize = 50 };
+
+forall( otype T ) {
+	monitor Buffer {
+		condition full, empty;
+		int front, back, count;
+		T elements[BufferSize];
+	}; // Buffer
+
+	void ?{}( Buffer(T) & buffer ) with( buffer ) { [front, back, count] = 0; }
+
+	int query( Buffer(T) & buffer ) { return buffer.count; } // read-only, no mutual exclusion
+
+	void insert( Buffer(T) & mutex buffer, T elem ) with( buffer ) {
+		if ( count == BufferSize ) wait( empty );
+		elements[back] = elem;
+		back = ( back + 1 ) % BufferSize;
+		count += 1;
+		signal( full );
+	} // insert
+
+	T remove( Buffer(T) & mutex buffer ) with( buffer ) {
+		if ( count == 0 ) wait( full );
+		T elem = elements[front];
+		front = ( front + 1 ) % BufferSize;
+		count -= 1;
+		signal( empty );
+		return elem;
+	} // remove
+}
+
+const int Sentinel = -1;
+
+thread Producer {
+	Buffer(int) & buffer;
+	unsigned int N;
+};
+void main( Producer & prod ) with( prod ) {
+	for ( int i = 1; i <= N; i += 1 ) {
+		yield( random( 5 ) );
+		insert( buffer, 1 );
+	} // for
+}
+void ?{}( Producer & prod, Buffer(int) * buffer, int N ) {
+	&prod.buffer = buffer;
+	prod.N = N;
+}
+
+thread Consumer {
+	Buffer(int) & buffer;
+	int & sum;											// summation of producer values
+};
+void main( Consumer & cons ) with( cons ) {
+	sum = 0;
+	for () {
+		yield( random( 5 ) );
+		int item = remove( buffer );
+	  if ( item == Sentinel ) break;					// sentinel ?
+		sum += item;
+	} // for
+}
+void ?{}( Consumer & cons, Buffer(int) * buffer, int & sum ) {
+	&cons.buffer = buffer;
+	&cons.sum = &sum;
+}
+
+int main() {
+	Buffer(int) buffer;
+	enum { Prods = 4, Cons = 5 };
+	Producer * prods[Prods];
+	Consumer * cons[Cons];
+	int sums[Cons];
+	int i;
+	processor p;
+
+	//srandom( getpid() );
+	srandom( 1003 );
+
+	for ( i = 0; i < Cons; i += 1 ) {					// create consumers
+		cons[i] = new( &buffer, sums[i] );
+	} // for
+	for ( i = 0; i < Prods; i += 1 ) {					// create producers
+		prods[i] = new( &buffer, 100000 );
+	} // for
+
+	for ( i = 0; i < Prods; i += 1 ) {					// wait for producers to finish
+		delete( prods[i] );
+	} // for
+	for ( i = 0; i < Cons; i += 1 ) {					// generate sentinal values to stop consumers
+		insert( buffer, Sentinel );
+	} // for
+	int sum = 0;
+	for ( i = 0; i < Cons; i += 1 ) {					// wait for consumers to finish
+		delete( cons[i] );
+		sum += sums[i];
+	} // for
+	sout | "total:" | sum | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa boundedBufferINT.c" //
+// End: //
Index: tests/concurrent/examples/datingService.c
===================================================================
--- tests/concurrent/examples/datingService.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/datingService.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,113 @@
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// datingService.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Oct 30 12:56:20 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun May 27 09:05:18 2018
+// Update Count     : 26
+//
+
+#include <stdlib.hfa>										// random
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <unistd.h>										// getpid
+
+enum { CompCodes = 20 };								// number of compatibility codes
+
+monitor DatingService {
+	condition Girls[CompCodes], Boys[CompCodes];
+	unsigned int GirlPhoneNo, BoyPhoneNo;
+}; // DatingService
+
+unsigned int girl( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
+	if ( is_empty( Boys[ccode] ) ) {					// no compatible boy ?
+		wait( Girls[ccode] );							// wait for boy
+		GirlPhoneNo = PhoneNo;							// make phone number available
+	} else {
+		GirlPhoneNo = PhoneNo;							// make phone number available
+		signal_block( Boys[ccode] );					// restart boy to set phone number
+	} // if
+	return BoyPhoneNo;
+} // DatingService girl
+
+unsigned int boy( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
+	if ( is_empty( Girls[ccode] ) ) {					// no compatible girl ?
+		wait( Boys[ccode] );							// wait for girl
+		BoyPhoneNo = PhoneNo;							// make phone number available
+	} else {
+		BoyPhoneNo = PhoneNo;							// make phone number available
+		signal_block( Girls[ccode] );					// restart girl to set phone number
+	} // if
+	return GirlPhoneNo;
+} // DatingService boy
+
+unsigned int girlck[CompCodes];
+unsigned int boyck[CompCodes];
+
+thread Girl {
+	DatingService & TheExchange;
+	unsigned int id, ccode;
+}; // Girl
+
+void main( Girl & g ) with( g ) {
+	yield( random( 100 ) );								// don't all start at the same time
+	unsigned int partner = girl( TheExchange, id, ccode );
+	sout | "Girl:" | id | "is dating Boy at" | partner | "with ccode" | ccode | endl;
+	girlck[id] = partner;
+} // Girl main
+
+void ?{}( Girl & g, DatingService * TheExchange, unsigned int id, unsigned int ccode ) {
+	&g.TheExchange = TheExchange;
+	g.id = id;
+	g.ccode = ccode;
+} // Girl ?{}
+
+thread Boy {
+	DatingService &TheExchange;
+	unsigned int id, ccode;
+}; // Boy
+
+void main( Boy & b ) with( b ) {
+	yield( random( 100 ) );								// don't all start at the same time
+	unsigned int partner = boy( TheExchange, id, ccode );
+	sout | " Boy:" | id | "is dating Girl" | partner | "with ccode" | ccode | endl;
+	boyck[id] = partner;
+} // Boy main
+
+void ?{}( Boy & b, DatingService * TheExchange, unsigned int id, unsigned int ccode ) {
+	&b.TheExchange = TheExchange;
+	b.id = id;
+	b.ccode = ccode;
+} // Boy ?{}
+
+int main() {
+	DatingService TheExchange;
+	Girl * girls[CompCodes];
+	Boy  * boys[CompCodes];
+
+	srandom( /*getpid()*/ 103 );
+
+	for ( unsigned int i = 0; i < CompCodes; i += 1 ) {
+		girls[i] = new( &TheExchange, i, i );
+		boys[i]  = new( &TheExchange, i, CompCodes - ( i + 1 ) );
+	} // for
+
+	for ( unsigned int i = 0; i < CompCodes; i += 1 ) {
+		delete( boys[i] );
+		delete( girls[i] );
+	} // for
+
+	for ( unsigned int i = 0; i < CompCodes; i += 1 ) {
+		if ( girlck[ boyck[i] ] != boyck[ girlck[i] ] ) abort();
+	} // for
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa datingService.c" //
+// End: //
Index: tests/concurrent/examples/matrixSum.c
===================================================================
--- tests/concurrent/examples/matrixSum.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/matrixSum.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,62 @@
+//                               -*- 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 : Thu Aug  9 09:17:30 2018
+// Update Count     : 13
+//
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+
+thread Adder {
+	int * row, cols, & subtotal;						// communication
+};
+
+void ?{}( Adder & adder, int row[], int cols, int & subtotal ) {
+	adder.[ row, cols ] = [ row, cols ];				// expression disallowed in multi-member access
+	&adder.subtotal = &subtotal;
+}
+
+void main( Adder & adder ) with( adder ) {				// thread starts here
+	subtotal = 0;
+	for ( c; cols ) {
+		subtotal += row[c];
+	} // for
+}
+
+int main() {
+	/* const */ int rows = 10, cols = 1000;
+	int matrix[rows][cols], subtotals[rows], total = 0;
+	processor p;										// add kernel thread
+
+	for ( r; rows ) {
+		for ( c; cols ) {
+			matrix[r][c] = 1;
+		} // for
+	} // for
+	Adder * adders[rows];
+	for ( r; rows ) {									// start threads to sum rows
+		adders[r] = &(*malloc()){ matrix[r], cols, subtotals[r] };
+//		adders[r] = new( matrix[r], cols, &subtotals[r] );
+	} // for
+	for ( r; rows ) {									// 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: //
Index: tests/concurrent/examples/quickSort.c
===================================================================
--- tests/concurrent/examples/quickSort.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/examples/quickSort.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,180 @@
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// quickSort.c -- In-place concurrent quick-sort: threads are created to partition to a specific depth, then sequential
+//		recursive-calls are use to sort each partition.
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Dec  6 12:15:52 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 16 08:17:41 2018
+// Update Count     : 163
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <string.h>										// strcmp
+
+thread Quicksort {
+	int * values;										// communication variables
+	int low, high, depth;
+};
+
+void ?{}( Quicksort & qs, int values[], int size, int depth ) {
+	qs.values = values;  qs.low = 0;  qs.high = size;  qs.depth = depth;
+} // Quicksort
+
+void main( Quicksort & qs ) {							// thread starts here
+	// nested routines: information hiding
+
+	void ?{}( Quicksort & qs, int values[], int low, int high, int depth ) {
+		qs.values = values;  qs.low = low;  qs.high = high;  qs.depth = depth;
+	} // Quicksort
+
+	void sort( int values[], int low, int high, int depth ) {
+		int left, right;								// index to left/right-hand side of the values
+		int pivot;										// pivot value of values
+		int swap;										// temporary
+
+		//verify();										// check for stack overflow due to recursion
+
+		// partition while 2 or more elements in the array
+		if ( low < high ) {
+			pivot = values[low + ( high - low ) / 2];
+			left  = low;
+			right = high;
+
+			// partition: move values less < pivot before the pivot and values > pivot after the pivot
+			do {
+				while ( values[left] < pivot ) left += 1; // changed values[left] < pivot
+				while ( pivot < values[right] ) right -= 1;
+				if ( left <= right ) {
+					swap = values[left];				// interchange values
+					values[left]  = values[right];
+					values[right] = swap;
+					left += 1;
+					right -= 1;
+				} // if
+			} while ( left <= right );
+
+			// restrict number of tasks to slightly greater than number of processors
+			if ( depth > 0 ) {
+				depth -= 1;
+				Quicksort rqs = { values, low, right, depth }; // concurrently sort upper half
+				//Quicksort lqs( values, left, high, depth ); // concurrently sort lower half
+				sort( values, left, high, depth );		// concurrently sort lower half
+			} else {
+				sort( values, low, right, 0 );			// sequentially sort lower half
+				sort( values, left, high, 0 );			// sequentially sort upper half
+			} // if
+		} // if
+	} // sort
+
+	with( qs ) {
+		sort( values, low, high, depth );
+	} // with
+} // main
+
+
+bool convert( int & val, const char * nptr ) {			// convert C string to integer
+	char * eptr;
+	int temp = strto( nptr, &eptr, 10 );				// do not change val on false
+	// true => entire string valid with no extra characters
+	return *nptr != '\0' && *eptr == '\0' ? val = temp, true : false;
+} // convert
+
+void usage( char * argv[] ) {
+	sout | "Usage:" | argv[0] | "( -s unsorted-file [ sorted-file ] | -t size (>= 0) [ depth (>= 0) ] )" | endl;
+	exit( EXIT_FAILURE );								// TERMINATE!
+} // usage
+
+
+int main( int argc, char * argv[] ) {
+	ifstream & unsortedfile = sin;
+	ofstream & sortedfile = sout;						// default value
+	int depth = 0, size;
+
+	if ( argc != 1 ) {									// do not use defaults
+		if ( argc < 2 || argc > 4 ) usage( argv );		// wrong number of options
+		if ( strcmp( argv[1], "-t" ) == 0 ) {			// timing ?
+			&unsortedfile = (ifstream *)0;				// no input
+			choose ( argc ) {
+			  case 4:
+				if ( ! convert( depth, argv[3] ) || depth < 0 ) usage( argv );
+				fallthrough;
+			  case 3:
+				if ( ! convert( size, argv[2] ) || size < 0 ) usage( argv );
+			} // choose
+		} else {										// sort file
+			choose ( argc ) {
+			  case 3:
+				&sortedfile = new( (const char *)argv[2] ); // open the output file
+				if ( fail( sortedfile ) ) {
+					serr | "Error! Could not open sorted output file \"" | argv[2] | "\"" | endl;
+					usage( argv );
+				} // if
+				fallthrough;
+			  case 2:
+				&unsortedfile = new( (const char *)argv[1] ); // open the input file
+				if ( fail( unsortedfile ) ) {
+					serr | "Error! Could not open unsorted input file \"" | argv[1] | "\"" | endl;
+					usage( argv );
+				} // if
+			} // choose
+		} // if
+	} // if
+
+	enum { ValuesPerLine = 22 };						// number of values printed per line
+
+	if ( &unsortedfile ) {								// generate output ?
+		for () {
+			unsortedfile | size;						// read number of elements in the list
+		  if ( eof( unsortedfile ) ) break;
+			int * values = alloc( size );				// values to be sorted, too large to put on stack
+			for ( int counter = 0; counter < size; counter += 1 ) { // read unsorted numbers
+				unsortedfile | values[counter];
+				if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | endl | "  ";
+				sortedfile | values[counter];
+				if ( counter < size - 1 && (counter + 1) % ValuesPerLine != 0 ) sortedfile | ' ';
+			} // for
+			sortedfile | endl;
+			if ( size > 0 ) {							// values to sort ?
+				Quicksort QS = { values, size - 1, 0 }; // sort values
+			} // wait until sort tasks terminate
+			for ( int counter = 0; counter < size; counter += 1 ) { // print sorted list
+				if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | endl | "  ";
+				sortedfile | values[counter];
+				if ( counter < size - 1 && (counter + 1) % ValuesPerLine != 0 ) sortedfile | ' ';
+			} // for
+			sortedfile | endl | endl;
+
+			delete( values );
+		} // for
+		if ( &unsortedfile != &sin ) delete( &unsortedfile ); // close input/output files
+		if ( &sortedfile != &sout ) delete( &sortedfile );
+	} else {
+		processor processors[ (1 << depth) - 1 ] __attribute__(( unused )); // create 2^depth-1 kernel threads
+
+		int * values = alloc( size );				// values to be sorted, too large to put on stack
+		for ( int counter = 0; counter < size; counter += 1 ) { // generate unsorted numbers
+			values[counter] = size - counter;			// descending values
+		} // for
+		{
+			Quicksort QS = { values, size - 1, depth }; // sort values
+		} // wait until sort tasks terminate
+
+		// for ( int counter = 0; counter < size - 1; counter += 1 ) { // check sorting
+		// 	if ( values[counter] > values[counter + 1] ) abort();
+		// } // for
+
+		delete( values );
+	} // if
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa quickSort.c" //
+// End: //
Index: tests/concurrent/monitor.c
===================================================================
--- tests/concurrent/monitor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/monitor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,43 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+
+monitor global_t {
+	int value;
+};
+
+void ?{}(global_t & this) {
+	this.value = 0;
+}
+
+static global_t global;
+
+void increment3( global_t & mutex this ) {
+	this.value += 1;
+}
+
+void increment2( global_t & mutex this ) {
+	increment3( this );
+}
+
+void increment( global_t & mutex this ) {
+	increment2( this );
+}
+
+thread MyThread {};
+
+void main( MyThread & this ) {
+	for(int i = 0; i < 1_000_000; i++) {
+		increment( global );
+	}
+}
+
+int main(int argc, char* argv[]) {
+	assert( global.__mon.entry_queue.tail != NULL );
+	processor p;
+	{
+		MyThread f[4];
+	}
+	sout | global.value | endl;
+}
Index: tests/concurrent/multi-monitor.c
===================================================================
--- tests/concurrent/multi-monitor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/multi-monitor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,55 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+
+static int global12, global23, global13;
+
+monitor monitor_t {};
+
+static monitor_t m1, m2, m3;
+
+void increment( monitor_t & mutex p1, monitor_t & mutex p2, int & value ) {
+	value += 1;
+}
+
+thread MyThread {
+	int target;
+};
+
+void ?{}( MyThread & this, int target ) {
+	this.target = target;
+}
+
+void ^?{}( MyThread & mutex this ) {}
+
+void main( MyThread & this ) {
+	for(int i = 0; i < 1000000; i++) {
+		choose(this.target) {
+			case 0: increment( m1, m2, global12 );
+			case 1: increment( m2, m3, global23 );
+			case 2: increment( m1, m3, global13 );
+		}
+	}
+}
+
+forall(dtype T | sized(T) | { void ^?{}(T & mutex); })
+void delete_mutex(T * x) {
+	^(*x){};
+	free(x);
+}
+
+int main(int argc, char* argv[]) {
+	processor p;
+	{
+		MyThread * f[6];
+		for(int i = 0; i < 6; i++) {
+			f[i] = new(i % 3);
+		}
+
+		for(int i = 0; i < 6; i++) {
+			delete_mutex( f[i] );
+		}
+	}
+	sout | global12 | global23 | global13 | endl;
+}
Index: tests/concurrent/preempt.c
===================================================================
--- tests/concurrent/preempt.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/preempt.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,59 @@
+#include <kernel.hfa>hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 30_000ul;
+#else
+static const unsigned long N = 500ul;
+#endif
+
+extern void __cfaabi_check_preemption();
+
+static volatile int counter = 0;
+
+thread worker_t {
+	int value;
+};
+
+void ?{}( worker_t & this, int value ) {
+	this.value = value;
+}
+
+void main(worker_t & this) {
+	while(TEST(counter < N)) {
+		__cfaabi_check_preemption();
+		if( (counter % 7) == this.value ) {
+			__cfaabi_check_preemption();
+			int next = __atomic_add_fetch_4(&counter, 1, __ATOMIC_SEQ_CST);
+			__cfaabi_check_preemption();
+			if( (next % 100) == 0 ) printf("%d\n", (int)next);
+			__cfaabi_check_preemption();
+		}
+		__cfaabi_check_preemption();
+		KICK_WATCHDOG;
+	}
+}
+
+int main(int argc, char* argv[]) {
+	processor p;
+	{
+		worker_t w0 = 0;
+		worker_t w1 = 1;
+		worker_t w2 = 2;
+		worker_t w3 = 3;
+		worker_t w4 = 4;
+		worker_t w5 = 5;
+		worker_t w6 = 6;
+	}
+}
Index: tests/concurrent/signal/.expect/block.txt
===================================================================
--- tests/concurrent/signal/.expect/block.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/signal/.expect/block.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,2 @@
+Starting waiters
+Waiters done
Index: tests/concurrent/signal/.expect/disjoint.txt
===================================================================
--- tests/concurrent/signal/.expect/disjoint.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/signal/.expect/disjoint.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,11 @@
+1000
+2000
+3000
+4000
+5000
+6000
+7000
+8000
+9000
+10000
+All waiter done
Index: tests/concurrent/signal/.expect/wait.txt
===================================================================
--- tests/concurrent/signal/.expect/wait.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/signal/.expect/wait.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,2 @@
+Starting
+Done
Index: tests/concurrent/signal/block.c
===================================================================
--- tests/concurrent/signal/block.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/signal/block.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,139 @@
+//---------------------------------------------------------
+// Barging test
+// Ensures that no barging can occur between :
+//   - the frontend of the signal_block and the signaled thread
+//   - the signaled  threadand the backend of the signal_block
+//---------------------------------------------------------
+
+
+#include <fstream.hfa>
+#include <kernel.hfa>hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 150_000ul;
+#else
+static const unsigned long N = 5_000ul;
+#endif
+
+enum state_t { WAITED, SIGNAL, BARGE };
+
+monitor global_data_t {
+	thread_desc * last_thread;
+	thread_desc * last_signaller;
+};
+
+void ?{} ( global_data_t & this ) {
+	this.last_thread = NULL;
+	this.last_signaller = NULL;
+}
+
+void ^?{} ( global_data_t & mutex this ) {}
+
+global_data_t globalA, globalB;
+
+condition cond;
+
+volatile bool done;
+
+//------------------------------------------------------------------------------
+void wait_op( global_data_t & mutex a, global_data_t & mutex b, unsigned i ) {
+    wait( cond, (uintptr_t)active_thread() );
+
+	yield( random( 10 ) );
+
+	if(a.last_thread != a.last_signaller || b.last_thread != b.last_signaller ) {
+		sout | "ERROR Barging detected, expected" | a.last_signaller | b.last_signaller | "got" | a.last_thread | b.last_thread | endl;
+		abort();
+	}
+
+	a.last_thread = b.last_thread = active_thread();
+
+	yield( random( 10 ) );
+}
+
+thread Waiter {};
+void main( Waiter & this ) {
+	for( int i = 0; TEST(i < N); i++ ) {
+		wait_op( globalA, globalB, i );
+		KICK_WATCHDOG;
+	}
+}
+
+//------------------------------------------------------------------------------
+void signal_op( global_data_t & mutex a, global_data_t & mutex b ) {
+	yield( random( 10 ) );
+
+	[a.last_thread, b.last_thread, a.last_signaller, b.last_signaller] = active_thread();
+
+	if( !is_empty( cond ) ) {
+
+		thread_desc * next = front( cond );
+
+		if( ! signal_block( cond ) ) {
+			sout | "ERROR expected to be able to signal" | endl;
+			abort();
+		}
+
+		yield( random( 10 ) );
+
+		if(a.last_thread != next || b.last_thread != next) {
+			sout | "ERROR Barging detected, expected" | next | "got" | a.last_thread | b.last_thread | endl;
+			abort();
+		}
+	}
+
+}
+
+thread Signaller {};
+void main( Signaller & this ) {
+	while( !done ) {
+		signal_op( globalA, globalB );
+	}
+}
+
+//------------------------------------------------------------------------------
+void barge_op( global_data_t & mutex a ) {
+	a.last_thread = active_thread();
+}
+
+thread Barger {};
+void main( Barger & this ) {
+	for( unsigned i = 0; !done; i++ ) {
+		//Choose some monitor to barge into with some irregular pattern
+		bool choose_a = (i % 13) > (i % 17);
+		if ( choose_a ) barge_op( globalA );
+		else barge_op( globalB );
+	}
+}
+
+//------------------------------------------------------------------------------
+
+int main(int argc, char* argv[]) {
+	srandom( time( NULL ) );
+	done = false;
+	processor p;
+	{
+		Signaller s[4];
+		Barger b[13];
+		sout | "Starting waiters" | endl;
+		{
+			Waiter w[3];
+		}
+		sout | "Waiters done" | endl;
+		done = true;
+	}
+}
Index: tests/concurrent/signal/disjoint.c
===================================================================
--- tests/concurrent/signal/disjoint.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/signal/disjoint.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,129 @@
+#include <fstream.hfa>
+#include <kernel.hfa>hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 300_000ul;
+#else
+static const unsigned long N = 10_000ul;
+#endif
+
+enum state_t { WAIT, SIGNAL, BARGE };
+
+monitor global_t {};
+global_t mut;
+
+monitor global_data_t;
+void ?{}( global_data_t & this );
+void ^?{} ( global_data_t & mutex this );
+
+monitor global_data_t {
+	int counter;
+	state_t state;
+} data;
+
+condition cond;
+
+volatile bool all_done;
+
+void ?{}( global_data_t & this ) {
+	this.counter == 0;
+	this.state = BARGE;
+}
+
+void ^?{} ( global_data_t & mutex this ) {}
+
+//------------------------------------------------------------------------------
+// Barging logic
+void barge( global_data_t & mutex d ) {
+	d.state = BARGE;
+}
+
+thread Barger {};
+
+void main( Barger & this ) {
+	while( !all_done ) {
+		barge( data );
+		yield();
+	}
+}
+
+//------------------------------------------------------------------------------
+// Waiting logic
+bool wait( global_t & mutex m, global_data_t & mutex d ) {
+	wait( cond );
+	if( d.state != SIGNAL ) {
+		sout | "ERROR barging!" | endl;
+	}
+
+	#if !defined(TEST_FOREVER)
+		d.counter++;
+		if( (d.counter % 1000) == 0 ) sout | d.counter | endl;
+	#endif
+
+	return TEST(d.counter < N);
+}
+
+thread Waiter {};
+
+void main( Waiter & this ) {
+	while( wait( mut, data ) ) { KICK_WATCHDOG; yield(); }
+}
+
+
+//------------------------------------------------------------------------------
+// Signalling logic
+void signal( condition & cond, global_t & mutex a, global_data_t & mutex b ) {
+	b.state = SIGNAL;
+	signal( cond );
+}
+
+void logic( global_t & mutex a ) {
+	signal( cond, a, data );
+
+	yield( random( 10 ) );
+
+	//This is technically a mutual exclusion violation but the mutex monitor protects us
+	bool running = TEST(data.counter < N) && data.counter > 0;
+	if( data.state != SIGNAL && running ) {
+		sout | "ERROR Eager signal" | data.state | endl;
+	}
+}
+
+thread Signaller {};
+
+void main( Signaller & this ) {
+	while( !all_done ) {
+		logic( mut );
+		yield();
+	}
+}
+
+//------------------------------------------------------------------------------
+// Main loop
+int main(int argc, char* argv[]) {
+	srandom( time( NULL ) );
+	all_done = false;
+	processor p;
+	{
+		Signaller s;
+		Barger b[17];
+		{
+			Waiter w[4];
+		}
+		sout | "All waiter done" | endl;
+		all_done = true;
+	}
+}
Index: tests/concurrent/signal/wait.c
===================================================================
--- tests/concurrent/signal/wait.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/signal/wait.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,153 @@
+//---------------------------------------------------------
+// Multi wait test
+// Ensures that no deadlock from waiting/signalling conditions
+//---------------------------------------------------------
+
+
+#include <fstream.hfa>
+#include <kernel.hfa>hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 12000ul
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 375_000ul;
+#else
+static const unsigned long N = 2_500ul;
+#endif
+
+monitor global_t {};
+
+global_t globalA;
+global_t globalB;
+global_t globalC;
+
+condition condAB, condAC, condBC, condABC;
+
+thread Signaler {};
+thread WaiterAB {};
+thread WaiterAC {};
+thread WaiterBC {};
+thread WaiterABC{};
+
+volatile int waiter_left;
+
+//----------------------------------------------------------------------------------------------------
+// Tools
+void signal( condition & cond, global_t & mutex a, global_t & mutex b ) {
+	signal( cond );
+}
+
+void signal( condition & cond, global_t & mutex a, global_t & mutex b, global_t & mutex c ) {
+	signal( cond );
+}
+
+void wait( condition & cond, global_t & mutex a, global_t & mutex b ) {
+	wait( cond );
+}
+
+void wait( condition & cond, global_t & mutex a, global_t & mutex b, global_t & mutex c ) {
+	wait( cond );
+}
+
+//----------------------------------------------------------------------------------------------------
+// Signaler
+void main( Signaler & this ) {
+
+	while( waiter_left != 0 ) {
+		unsigned action = random( 4 );
+		switch( action ) {
+			case 0:
+				signal( condABC, globalA, globalB, globalC );
+				break;
+			case 1:
+				signal( condAB , globalA, globalB );
+				break;
+			case 2:
+				signal( condBC , globalB, globalC );
+				break;
+			case 3:
+				signal( condAC , globalA, globalC );
+				break;
+			default:
+				sout | "Something went wrong" | endl;
+				abort();
+		}
+		yield();
+	}
+}
+
+//----------------------------------------------------------------------------------------------------
+// Waiter ABC
+void main( WaiterABC & this ) {
+	for( int i = 0; TEST(i < N); i++ ) {
+		wait( condABC, globalA, globalB, globalC );
+		KICK_WATCHDOG;
+	}
+
+	__sync_fetch_and_sub_4( &waiter_left, 1);
+}
+
+//----------------------------------------------------------------------------------------------------
+// Waiter AB
+void main( WaiterAB & this ) {
+	for( int i = 0; TEST(i < N); i++ ) {
+		wait( condAB , globalA, globalB );
+		KICK_WATCHDOG;
+	}
+
+	__sync_fetch_and_sub_4( &waiter_left, 1);
+}
+
+//----------------------------------------------------------------------------------------------------
+// Waiter AC
+void main( WaiterAC & this ) {
+	for( int i = 0; TEST(i < N); i++ ) {
+		wait( condAC , globalA, globalC );
+		KICK_WATCHDOG;
+	}
+
+	__sync_fetch_and_sub_4( &waiter_left, 1);
+}
+
+//----------------------------------------------------------------------------------------------------
+// Waiter BC
+void main( WaiterBC & this ) {
+	for( int i = 0; TEST(i < N); i++ ) {
+		wait( condBC , globalB, globalC );
+		KICK_WATCHDOG;
+	}
+
+	__sync_fetch_and_sub_4( &waiter_left, 1);
+}
+
+//----------------------------------------------------------------------------------------------------
+// Main
+int main(int argc, char* argv[]) {
+	srandom( time( NULL ) );
+	waiter_left = 4;
+	processor p[2];
+	sout | "Starting" | endl;
+	{
+		Signaler  e;
+		{
+			WaiterABC a;
+			WaiterAB  b;
+			WaiterBC  c;
+			WaiterAC  d;
+		}
+	}
+	sout | "Done" | endl;
+}
Index: tests/concurrent/thread.c
===================================================================
--- tests/concurrent/thread.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/thread.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,40 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+thread First  { semaphore* lock; };
+thread Second { semaphore* lock; };
+
+void ?{}( First  & this, semaphore & lock ) { ((thread&)this){"Thread 1"}; this.lock = &lock; }
+void ?{}( Second & this, semaphore & lock ) { ((thread&)this){"Thread 2"}; this.lock = &lock; }
+
+void main(First& this) {
+	for(int i = 0; i < 10; i++) {
+		sout | "First : Suspend No." | i + 1 | endl;
+		yield();
+	}
+	V(*this.lock);
+}
+
+void main(Second& this) {
+	P(*this.lock);
+	for(int i = 0; i < 10; i++) {
+		sout | "Second : Suspend No." | i + 1 | endl;
+		yield();
+	}
+}
+
+
+int main(int argc, char* argv[]) {
+	semaphore lock = { 0 };
+	sout | "User main begin" | endl;
+	{
+		processor p;
+		{
+			First  f = { lock };
+			Second s = { lock };
+		}
+	}
+	sout | "User main end" | endl;
+}
Index: tests/concurrent/waitfor/.expect/barge.txt
===================================================================
--- tests/concurrent/waitfor/.expect/barge.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/.expect/barge.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,5002 @@
+Starting
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+815
+816
+817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
+833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
+852
+853
+854
+855
+856
+857
+858
+859
+860
+861
+862
+863
+864
+865
+866
+867
+868
+869
+870
+871
+872
+873
+874
+875
+876
+877
+878
+879
+880
+881
+882
+883
+884
+885
+886
+887
+888
+889
+890
+891
+892
+893
+894
+895
+896
+897
+898
+899
+900
+901
+902
+903
+904
+905
+906
+907
+908
+909
+910
+911
+912
+913
+914
+915
+916
+917
+918
+919
+920
+921
+922
+923
+924
+925
+926
+927
+928
+929
+930
+931
+932
+933
+934
+935
+936
+937
+938
+939
+940
+941
+942
+943
+944
+945
+946
+947
+948
+949
+950
+951
+952
+953
+954
+955
+956
+957
+958
+959
+960
+961
+962
+963
+964
+965
+966
+967
+968
+969
+970
+971
+972
+973
+974
+975
+976
+977
+978
+979
+980
+981
+982
+983
+984
+985
+986
+987
+988
+989
+990
+991
+992
+993
+994
+995
+996
+997
+998
+999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+1084
+1085
+1086
+1087
+1088
+1089
+1090
+1091
+1092
+1093
+1094
+1095
+1096
+1097
+1098
+1099
+1100
+1101
+1102
+1103
+1104
+1105
+1106
+1107
+1108
+1109
+1110
+1111
+1112
+1113
+1114
+1115
+1116
+1117
+1118
+1119
+1120
+1121
+1122
+1123
+1124
+1125
+1126
+1127
+1128
+1129
+1130
+1131
+1132
+1133
+1134
+1135
+1136
+1137
+1138
+1139
+1140
+1141
+1142
+1143
+1144
+1145
+1146
+1147
+1148
+1149
+1150
+1151
+1152
+1153
+1154
+1155
+1156
+1157
+1158
+1159
+1160
+1161
+1162
+1163
+1164
+1165
+1166
+1167
+1168
+1169
+1170
+1171
+1172
+1173
+1174
+1175
+1176
+1177
+1178
+1179
+1180
+1181
+1182
+1183
+1184
+1185
+1186
+1187
+1188
+1189
+1190
+1191
+1192
+1193
+1194
+1195
+1196
+1197
+1198
+1199
+1200
+1201
+1202
+1203
+1204
+1205
+1206
+1207
+1208
+1209
+1210
+1211
+1212
+1213
+1214
+1215
+1216
+1217
+1218
+1219
+1220
+1221
+1222
+1223
+1224
+1225
+1226
+1227
+1228
+1229
+1230
+1231
+1232
+1233
+1234
+1235
+1236
+1237
+1238
+1239
+1240
+1241
+1242
+1243
+1244
+1245
+1246
+1247
+1248
+1249
+1250
+1251
+1252
+1253
+1254
+1255
+1256
+1257
+1258
+1259
+1260
+1261
+1262
+1263
+1264
+1265
+1266
+1267
+1268
+1269
+1270
+1271
+1272
+1273
+1274
+1275
+1276
+1277
+1278
+1279
+1280
+1281
+1282
+1283
+1284
+1285
+1286
+1287
+1288
+1289
+1290
+1291
+1292
+1293
+1294
+1295
+1296
+1297
+1298
+1299
+1300
+1301
+1302
+1303
+1304
+1305
+1306
+1307
+1308
+1309
+1310
+1311
+1312
+1313
+1314
+1315
+1316
+1317
+1318
+1319
+1320
+1321
+1322
+1323
+1324
+1325
+1326
+1327
+1328
+1329
+1330
+1331
+1332
+1333
+1334
+1335
+1336
+1337
+1338
+1339
+1340
+1341
+1342
+1343
+1344
+1345
+1346
+1347
+1348
+1349
+1350
+1351
+1352
+1353
+1354
+1355
+1356
+1357
+1358
+1359
+1360
+1361
+1362
+1363
+1364
+1365
+1366
+1367
+1368
+1369
+1370
+1371
+1372
+1373
+1374
+1375
+1376
+1377
+1378
+1379
+1380
+1381
+1382
+1383
+1384
+1385
+1386
+1387
+1388
+1389
+1390
+1391
+1392
+1393
+1394
+1395
+1396
+1397
+1398
+1399
+1400
+1401
+1402
+1403
+1404
+1405
+1406
+1407
+1408
+1409
+1410
+1411
+1412
+1413
+1414
+1415
+1416
+1417
+1418
+1419
+1420
+1421
+1422
+1423
+1424
+1425
+1426
+1427
+1428
+1429
+1430
+1431
+1432
+1433
+1434
+1435
+1436
+1437
+1438
+1439
+1440
+1441
+1442
+1443
+1444
+1445
+1446
+1447
+1448
+1449
+1450
+1451
+1452
+1453
+1454
+1455
+1456
+1457
+1458
+1459
+1460
+1461
+1462
+1463
+1464
+1465
+1466
+1467
+1468
+1469
+1470
+1471
+1472
+1473
+1474
+1475
+1476
+1477
+1478
+1479
+1480
+1481
+1482
+1483
+1484
+1485
+1486
+1487
+1488
+1489
+1490
+1491
+1492
+1493
+1494
+1495
+1496
+1497
+1498
+1499
+1500
+1501
+1502
+1503
+1504
+1505
+1506
+1507
+1508
+1509
+1510
+1511
+1512
+1513
+1514
+1515
+1516
+1517
+1518
+1519
+1520
+1521
+1522
+1523
+1524
+1525
+1526
+1527
+1528
+1529
+1530
+1531
+1532
+1533
+1534
+1535
+1536
+1537
+1538
+1539
+1540
+1541
+1542
+1543
+1544
+1545
+1546
+1547
+1548
+1549
+1550
+1551
+1552
+1553
+1554
+1555
+1556
+1557
+1558
+1559
+1560
+1561
+1562
+1563
+1564
+1565
+1566
+1567
+1568
+1569
+1570
+1571
+1572
+1573
+1574
+1575
+1576
+1577
+1578
+1579
+1580
+1581
+1582
+1583
+1584
+1585
+1586
+1587
+1588
+1589
+1590
+1591
+1592
+1593
+1594
+1595
+1596
+1597
+1598
+1599
+1600
+1601
+1602
+1603
+1604
+1605
+1606
+1607
+1608
+1609
+1610
+1611
+1612
+1613
+1614
+1615
+1616
+1617
+1618
+1619
+1620
+1621
+1622
+1623
+1624
+1625
+1626
+1627
+1628
+1629
+1630
+1631
+1632
+1633
+1634
+1635
+1636
+1637
+1638
+1639
+1640
+1641
+1642
+1643
+1644
+1645
+1646
+1647
+1648
+1649
+1650
+1651
+1652
+1653
+1654
+1655
+1656
+1657
+1658
+1659
+1660
+1661
+1662
+1663
+1664
+1665
+1666
+1667
+1668
+1669
+1670
+1671
+1672
+1673
+1674
+1675
+1676
+1677
+1678
+1679
+1680
+1681
+1682
+1683
+1684
+1685
+1686
+1687
+1688
+1689
+1690
+1691
+1692
+1693
+1694
+1695
+1696
+1697
+1698
+1699
+1700
+1701
+1702
+1703
+1704
+1705
+1706
+1707
+1708
+1709
+1710
+1711
+1712
+1713
+1714
+1715
+1716
+1717
+1718
+1719
+1720
+1721
+1722
+1723
+1724
+1725
+1726
+1727
+1728
+1729
+1730
+1731
+1732
+1733
+1734
+1735
+1736
+1737
+1738
+1739
+1740
+1741
+1742
+1743
+1744
+1745
+1746
+1747
+1748
+1749
+1750
+1751
+1752
+1753
+1754
+1755
+1756
+1757
+1758
+1759
+1760
+1761
+1762
+1763
+1764
+1765
+1766
+1767
+1768
+1769
+1770
+1771
+1772
+1773
+1774
+1775
+1776
+1777
+1778
+1779
+1780
+1781
+1782
+1783
+1784
+1785
+1786
+1787
+1788
+1789
+1790
+1791
+1792
+1793
+1794
+1795
+1796
+1797
+1798
+1799
+1800
+1801
+1802
+1803
+1804
+1805
+1806
+1807
+1808
+1809
+1810
+1811
+1812
+1813
+1814
+1815
+1816
+1817
+1818
+1819
+1820
+1821
+1822
+1823
+1824
+1825
+1826
+1827
+1828
+1829
+1830
+1831
+1832
+1833
+1834
+1835
+1836
+1837
+1838
+1839
+1840
+1841
+1842
+1843
+1844
+1845
+1846
+1847
+1848
+1849
+1850
+1851
+1852
+1853
+1854
+1855
+1856
+1857
+1858
+1859
+1860
+1861
+1862
+1863
+1864
+1865
+1866
+1867
+1868
+1869
+1870
+1871
+1872
+1873
+1874
+1875
+1876
+1877
+1878
+1879
+1880
+1881
+1882
+1883
+1884
+1885
+1886
+1887
+1888
+1889
+1890
+1891
+1892
+1893
+1894
+1895
+1896
+1897
+1898
+1899
+1900
+1901
+1902
+1903
+1904
+1905
+1906
+1907
+1908
+1909
+1910
+1911
+1912
+1913
+1914
+1915
+1916
+1917
+1918
+1919
+1920
+1921
+1922
+1923
+1924
+1925
+1926
+1927
+1928
+1929
+1930
+1931
+1932
+1933
+1934
+1935
+1936
+1937
+1938
+1939
+1940
+1941
+1942
+1943
+1944
+1945
+1946
+1947
+1948
+1949
+1950
+1951
+1952
+1953
+1954
+1955
+1956
+1957
+1958
+1959
+1960
+1961
+1962
+1963
+1964
+1965
+1966
+1967
+1968
+1969
+1970
+1971
+1972
+1973
+1974
+1975
+1976
+1977
+1978
+1979
+1980
+1981
+1982
+1983
+1984
+1985
+1986
+1987
+1988
+1989
+1990
+1991
+1992
+1993
+1994
+1995
+1996
+1997
+1998
+1999
+2000
+2001
+2002
+2003
+2004
+2005
+2006
+2007
+2008
+2009
+2010
+2011
+2012
+2013
+2014
+2015
+2016
+2017
+2018
+2019
+2020
+2021
+2022
+2023
+2024
+2025
+2026
+2027
+2028
+2029
+2030
+2031
+2032
+2033
+2034
+2035
+2036
+2037
+2038
+2039
+2040
+2041
+2042
+2043
+2044
+2045
+2046
+2047
+2048
+2049
+2050
+2051
+2052
+2053
+2054
+2055
+2056
+2057
+2058
+2059
+2060
+2061
+2062
+2063
+2064
+2065
+2066
+2067
+2068
+2069
+2070
+2071
+2072
+2073
+2074
+2075
+2076
+2077
+2078
+2079
+2080
+2081
+2082
+2083
+2084
+2085
+2086
+2087
+2088
+2089
+2090
+2091
+2092
+2093
+2094
+2095
+2096
+2097
+2098
+2099
+2100
+2101
+2102
+2103
+2104
+2105
+2106
+2107
+2108
+2109
+2110
+2111
+2112
+2113
+2114
+2115
+2116
+2117
+2118
+2119
+2120
+2121
+2122
+2123
+2124
+2125
+2126
+2127
+2128
+2129
+2130
+2131
+2132
+2133
+2134
+2135
+2136
+2137
+2138
+2139
+2140
+2141
+2142
+2143
+2144
+2145
+2146
+2147
+2148
+2149
+2150
+2151
+2152
+2153
+2154
+2155
+2156
+2157
+2158
+2159
+2160
+2161
+2162
+2163
+2164
+2165
+2166
+2167
+2168
+2169
+2170
+2171
+2172
+2173
+2174
+2175
+2176
+2177
+2178
+2179
+2180
+2181
+2182
+2183
+2184
+2185
+2186
+2187
+2188
+2189
+2190
+2191
+2192
+2193
+2194
+2195
+2196
+2197
+2198
+2199
+2200
+2201
+2202
+2203
+2204
+2205
+2206
+2207
+2208
+2209
+2210
+2211
+2212
+2213
+2214
+2215
+2216
+2217
+2218
+2219
+2220
+2221
+2222
+2223
+2224
+2225
+2226
+2227
+2228
+2229
+2230
+2231
+2232
+2233
+2234
+2235
+2236
+2237
+2238
+2239
+2240
+2241
+2242
+2243
+2244
+2245
+2246
+2247
+2248
+2249
+2250
+2251
+2252
+2253
+2254
+2255
+2256
+2257
+2258
+2259
+2260
+2261
+2262
+2263
+2264
+2265
+2266
+2267
+2268
+2269
+2270
+2271
+2272
+2273
+2274
+2275
+2276
+2277
+2278
+2279
+2280
+2281
+2282
+2283
+2284
+2285
+2286
+2287
+2288
+2289
+2290
+2291
+2292
+2293
+2294
+2295
+2296
+2297
+2298
+2299
+2300
+2301
+2302
+2303
+2304
+2305
+2306
+2307
+2308
+2309
+2310
+2311
+2312
+2313
+2314
+2315
+2316
+2317
+2318
+2319
+2320
+2321
+2322
+2323
+2324
+2325
+2326
+2327
+2328
+2329
+2330
+2331
+2332
+2333
+2334
+2335
+2336
+2337
+2338
+2339
+2340
+2341
+2342
+2343
+2344
+2345
+2346
+2347
+2348
+2349
+2350
+2351
+2352
+2353
+2354
+2355
+2356
+2357
+2358
+2359
+2360
+2361
+2362
+2363
+2364
+2365
+2366
+2367
+2368
+2369
+2370
+2371
+2372
+2373
+2374
+2375
+2376
+2377
+2378
+2379
+2380
+2381
+2382
+2383
+2384
+2385
+2386
+2387
+2388
+2389
+2390
+2391
+2392
+2393
+2394
+2395
+2396
+2397
+2398
+2399
+2400
+2401
+2402
+2403
+2404
+2405
+2406
+2407
+2408
+2409
+2410
+2411
+2412
+2413
+2414
+2415
+2416
+2417
+2418
+2419
+2420
+2421
+2422
+2423
+2424
+2425
+2426
+2427
+2428
+2429
+2430
+2431
+2432
+2433
+2434
+2435
+2436
+2437
+2438
+2439
+2440
+2441
+2442
+2443
+2444
+2445
+2446
+2447
+2448
+2449
+2450
+2451
+2452
+2453
+2454
+2455
+2456
+2457
+2458
+2459
+2460
+2461
+2462
+2463
+2464
+2465
+2466
+2467
+2468
+2469
+2470
+2471
+2472
+2473
+2474
+2475
+2476
+2477
+2478
+2479
+2480
+2481
+2482
+2483
+2484
+2485
+2486
+2487
+2488
+2489
+2490
+2491
+2492
+2493
+2494
+2495
+2496
+2497
+2498
+2499
+2500
+2501
+2502
+2503
+2504
+2505
+2506
+2507
+2508
+2509
+2510
+2511
+2512
+2513
+2514
+2515
+2516
+2517
+2518
+2519
+2520
+2521
+2522
+2523
+2524
+2525
+2526
+2527
+2528
+2529
+2530
+2531
+2532
+2533
+2534
+2535
+2536
+2537
+2538
+2539
+2540
+2541
+2542
+2543
+2544
+2545
+2546
+2547
+2548
+2549
+2550
+2551
+2552
+2553
+2554
+2555
+2556
+2557
+2558
+2559
+2560
+2561
+2562
+2563
+2564
+2565
+2566
+2567
+2568
+2569
+2570
+2571
+2572
+2573
+2574
+2575
+2576
+2577
+2578
+2579
+2580
+2581
+2582
+2583
+2584
+2585
+2586
+2587
+2588
+2589
+2590
+2591
+2592
+2593
+2594
+2595
+2596
+2597
+2598
+2599
+2600
+2601
+2602
+2603
+2604
+2605
+2606
+2607
+2608
+2609
+2610
+2611
+2612
+2613
+2614
+2615
+2616
+2617
+2618
+2619
+2620
+2621
+2622
+2623
+2624
+2625
+2626
+2627
+2628
+2629
+2630
+2631
+2632
+2633
+2634
+2635
+2636
+2637
+2638
+2639
+2640
+2641
+2642
+2643
+2644
+2645
+2646
+2647
+2648
+2649
+2650
+2651
+2652
+2653
+2654
+2655
+2656
+2657
+2658
+2659
+2660
+2661
+2662
+2663
+2664
+2665
+2666
+2667
+2668
+2669
+2670
+2671
+2672
+2673
+2674
+2675
+2676
+2677
+2678
+2679
+2680
+2681
+2682
+2683
+2684
+2685
+2686
+2687
+2688
+2689
+2690
+2691
+2692
+2693
+2694
+2695
+2696
+2697
+2698
+2699
+2700
+2701
+2702
+2703
+2704
+2705
+2706
+2707
+2708
+2709
+2710
+2711
+2712
+2713
+2714
+2715
+2716
+2717
+2718
+2719
+2720
+2721
+2722
+2723
+2724
+2725
+2726
+2727
+2728
+2729
+2730
+2731
+2732
+2733
+2734
+2735
+2736
+2737
+2738
+2739
+2740
+2741
+2742
+2743
+2744
+2745
+2746
+2747
+2748
+2749
+2750
+2751
+2752
+2753
+2754
+2755
+2756
+2757
+2758
+2759
+2760
+2761
+2762
+2763
+2764
+2765
+2766
+2767
+2768
+2769
+2770
+2771
+2772
+2773
+2774
+2775
+2776
+2777
+2778
+2779
+2780
+2781
+2782
+2783
+2784
+2785
+2786
+2787
+2788
+2789
+2790
+2791
+2792
+2793
+2794
+2795
+2796
+2797
+2798
+2799
+2800
+2801
+2802
+2803
+2804
+2805
+2806
+2807
+2808
+2809
+2810
+2811
+2812
+2813
+2814
+2815
+2816
+2817
+2818
+2819
+2820
+2821
+2822
+2823
+2824
+2825
+2826
+2827
+2828
+2829
+2830
+2831
+2832
+2833
+2834
+2835
+2836
+2837
+2838
+2839
+2840
+2841
+2842
+2843
+2844
+2845
+2846
+2847
+2848
+2849
+2850
+2851
+2852
+2853
+2854
+2855
+2856
+2857
+2858
+2859
+2860
+2861
+2862
+2863
+2864
+2865
+2866
+2867
+2868
+2869
+2870
+2871
+2872
+2873
+2874
+2875
+2876
+2877
+2878
+2879
+2880
+2881
+2882
+2883
+2884
+2885
+2886
+2887
+2888
+2889
+2890
+2891
+2892
+2893
+2894
+2895
+2896
+2897
+2898
+2899
+2900
+2901
+2902
+2903
+2904
+2905
+2906
+2907
+2908
+2909
+2910
+2911
+2912
+2913
+2914
+2915
+2916
+2917
+2918
+2919
+2920
+2921
+2922
+2923
+2924
+2925
+2926
+2927
+2928
+2929
+2930
+2931
+2932
+2933
+2934
+2935
+2936
+2937
+2938
+2939
+2940
+2941
+2942
+2943
+2944
+2945
+2946
+2947
+2948
+2949
+2950
+2951
+2952
+2953
+2954
+2955
+2956
+2957
+2958
+2959
+2960
+2961
+2962
+2963
+2964
+2965
+2966
+2967
+2968
+2969
+2970
+2971
+2972
+2973
+2974
+2975
+2976
+2977
+2978
+2979
+2980
+2981
+2982
+2983
+2984
+2985
+2986
+2987
+2988
+2989
+2990
+2991
+2992
+2993
+2994
+2995
+2996
+2997
+2998
+2999
+3000
+3001
+3002
+3003
+3004
+3005
+3006
+3007
+3008
+3009
+3010
+3011
+3012
+3013
+3014
+3015
+3016
+3017
+3018
+3019
+3020
+3021
+3022
+3023
+3024
+3025
+3026
+3027
+3028
+3029
+3030
+3031
+3032
+3033
+3034
+3035
+3036
+3037
+3038
+3039
+3040
+3041
+3042
+3043
+3044
+3045
+3046
+3047
+3048
+3049
+3050
+3051
+3052
+3053
+3054
+3055
+3056
+3057
+3058
+3059
+3060
+3061
+3062
+3063
+3064
+3065
+3066
+3067
+3068
+3069
+3070
+3071
+3072
+3073
+3074
+3075
+3076
+3077
+3078
+3079
+3080
+3081
+3082
+3083
+3084
+3085
+3086
+3087
+3088
+3089
+3090
+3091
+3092
+3093
+3094
+3095
+3096
+3097
+3098
+3099
+3100
+3101
+3102
+3103
+3104
+3105
+3106
+3107
+3108
+3109
+3110
+3111
+3112
+3113
+3114
+3115
+3116
+3117
+3118
+3119
+3120
+3121
+3122
+3123
+3124
+3125
+3126
+3127
+3128
+3129
+3130
+3131
+3132
+3133
+3134
+3135
+3136
+3137
+3138
+3139
+3140
+3141
+3142
+3143
+3144
+3145
+3146
+3147
+3148
+3149
+3150
+3151
+3152
+3153
+3154
+3155
+3156
+3157
+3158
+3159
+3160
+3161
+3162
+3163
+3164
+3165
+3166
+3167
+3168
+3169
+3170
+3171
+3172
+3173
+3174
+3175
+3176
+3177
+3178
+3179
+3180
+3181
+3182
+3183
+3184
+3185
+3186
+3187
+3188
+3189
+3190
+3191
+3192
+3193
+3194
+3195
+3196
+3197
+3198
+3199
+3200
+3201
+3202
+3203
+3204
+3205
+3206
+3207
+3208
+3209
+3210
+3211
+3212
+3213
+3214
+3215
+3216
+3217
+3218
+3219
+3220
+3221
+3222
+3223
+3224
+3225
+3226
+3227
+3228
+3229
+3230
+3231
+3232
+3233
+3234
+3235
+3236
+3237
+3238
+3239
+3240
+3241
+3242
+3243
+3244
+3245
+3246
+3247
+3248
+3249
+3250
+3251
+3252
+3253
+3254
+3255
+3256
+3257
+3258
+3259
+3260
+3261
+3262
+3263
+3264
+3265
+3266
+3267
+3268
+3269
+3270
+3271
+3272
+3273
+3274
+3275
+3276
+3277
+3278
+3279
+3280
+3281
+3282
+3283
+3284
+3285
+3286
+3287
+3288
+3289
+3290
+3291
+3292
+3293
+3294
+3295
+3296
+3297
+3298
+3299
+3300
+3301
+3302
+3303
+3304
+3305
+3306
+3307
+3308
+3309
+3310
+3311
+3312
+3313
+3314
+3315
+3316
+3317
+3318
+3319
+3320
+3321
+3322
+3323
+3324
+3325
+3326
+3327
+3328
+3329
+3330
+3331
+3332
+3333
+3334
+3335
+3336
+3337
+3338
+3339
+3340
+3341
+3342
+3343
+3344
+3345
+3346
+3347
+3348
+3349
+3350
+3351
+3352
+3353
+3354
+3355
+3356
+3357
+3358
+3359
+3360
+3361
+3362
+3363
+3364
+3365
+3366
+3367
+3368
+3369
+3370
+3371
+3372
+3373
+3374
+3375
+3376
+3377
+3378
+3379
+3380
+3381
+3382
+3383
+3384
+3385
+3386
+3387
+3388
+3389
+3390
+3391
+3392
+3393
+3394
+3395
+3396
+3397
+3398
+3399
+3400
+3401
+3402
+3403
+3404
+3405
+3406
+3407
+3408
+3409
+3410
+3411
+3412
+3413
+3414
+3415
+3416
+3417
+3418
+3419
+3420
+3421
+3422
+3423
+3424
+3425
+3426
+3427
+3428
+3429
+3430
+3431
+3432
+3433
+3434
+3435
+3436
+3437
+3438
+3439
+3440
+3441
+3442
+3443
+3444
+3445
+3446
+3447
+3448
+3449
+3450
+3451
+3452
+3453
+3454
+3455
+3456
+3457
+3458
+3459
+3460
+3461
+3462
+3463
+3464
+3465
+3466
+3467
+3468
+3469
+3470
+3471
+3472
+3473
+3474
+3475
+3476
+3477
+3478
+3479
+3480
+3481
+3482
+3483
+3484
+3485
+3486
+3487
+3488
+3489
+3490
+3491
+3492
+3493
+3494
+3495
+3496
+3497
+3498
+3499
+3500
+3501
+3502
+3503
+3504
+3505
+3506
+3507
+3508
+3509
+3510
+3511
+3512
+3513
+3514
+3515
+3516
+3517
+3518
+3519
+3520
+3521
+3522
+3523
+3524
+3525
+3526
+3527
+3528
+3529
+3530
+3531
+3532
+3533
+3534
+3535
+3536
+3537
+3538
+3539
+3540
+3541
+3542
+3543
+3544
+3545
+3546
+3547
+3548
+3549
+3550
+3551
+3552
+3553
+3554
+3555
+3556
+3557
+3558
+3559
+3560
+3561
+3562
+3563
+3564
+3565
+3566
+3567
+3568
+3569
+3570
+3571
+3572
+3573
+3574
+3575
+3576
+3577
+3578
+3579
+3580
+3581
+3582
+3583
+3584
+3585
+3586
+3587
+3588
+3589
+3590
+3591
+3592
+3593
+3594
+3595
+3596
+3597
+3598
+3599
+3600
+3601
+3602
+3603
+3604
+3605
+3606
+3607
+3608
+3609
+3610
+3611
+3612
+3613
+3614
+3615
+3616
+3617
+3618
+3619
+3620
+3621
+3622
+3623
+3624
+3625
+3626
+3627
+3628
+3629
+3630
+3631
+3632
+3633
+3634
+3635
+3636
+3637
+3638
+3639
+3640
+3641
+3642
+3643
+3644
+3645
+3646
+3647
+3648
+3649
+3650
+3651
+3652
+3653
+3654
+3655
+3656
+3657
+3658
+3659
+3660
+3661
+3662
+3663
+3664
+3665
+3666
+3667
+3668
+3669
+3670
+3671
+3672
+3673
+3674
+3675
+3676
+3677
+3678
+3679
+3680
+3681
+3682
+3683
+3684
+3685
+3686
+3687
+3688
+3689
+3690
+3691
+3692
+3693
+3694
+3695
+3696
+3697
+3698
+3699
+3700
+3701
+3702
+3703
+3704
+3705
+3706
+3707
+3708
+3709
+3710
+3711
+3712
+3713
+3714
+3715
+3716
+3717
+3718
+3719
+3720
+3721
+3722
+3723
+3724
+3725
+3726
+3727
+3728
+3729
+3730
+3731
+3732
+3733
+3734
+3735
+3736
+3737
+3738
+3739
+3740
+3741
+3742
+3743
+3744
+3745
+3746
+3747
+3748
+3749
+3750
+3751
+3752
+3753
+3754
+3755
+3756
+3757
+3758
+3759
+3760
+3761
+3762
+3763
+3764
+3765
+3766
+3767
+3768
+3769
+3770
+3771
+3772
+3773
+3774
+3775
+3776
+3777
+3778
+3779
+3780
+3781
+3782
+3783
+3784
+3785
+3786
+3787
+3788
+3789
+3790
+3791
+3792
+3793
+3794
+3795
+3796
+3797
+3798
+3799
+3800
+3801
+3802
+3803
+3804
+3805
+3806
+3807
+3808
+3809
+3810
+3811
+3812
+3813
+3814
+3815
+3816
+3817
+3818
+3819
+3820
+3821
+3822
+3823
+3824
+3825
+3826
+3827
+3828
+3829
+3830
+3831
+3832
+3833
+3834
+3835
+3836
+3837
+3838
+3839
+3840
+3841
+3842
+3843
+3844
+3845
+3846
+3847
+3848
+3849
+3850
+3851
+3852
+3853
+3854
+3855
+3856
+3857
+3858
+3859
+3860
+3861
+3862
+3863
+3864
+3865
+3866
+3867
+3868
+3869
+3870
+3871
+3872
+3873
+3874
+3875
+3876
+3877
+3878
+3879
+3880
+3881
+3882
+3883
+3884
+3885
+3886
+3887
+3888
+3889
+3890
+3891
+3892
+3893
+3894
+3895
+3896
+3897
+3898
+3899
+3900
+3901
+3902
+3903
+3904
+3905
+3906
+3907
+3908
+3909
+3910
+3911
+3912
+3913
+3914
+3915
+3916
+3917
+3918
+3919
+3920
+3921
+3922
+3923
+3924
+3925
+3926
+3927
+3928
+3929
+3930
+3931
+3932
+3933
+3934
+3935
+3936
+3937
+3938
+3939
+3940
+3941
+3942
+3943
+3944
+3945
+3946
+3947
+3948
+3949
+3950
+3951
+3952
+3953
+3954
+3955
+3956
+3957
+3958
+3959
+3960
+3961
+3962
+3963
+3964
+3965
+3966
+3967
+3968
+3969
+3970
+3971
+3972
+3973
+3974
+3975
+3976
+3977
+3978
+3979
+3980
+3981
+3982
+3983
+3984
+3985
+3986
+3987
+3988
+3989
+3990
+3991
+3992
+3993
+3994
+3995
+3996
+3997
+3998
+3999
+4000
+4001
+4002
+4003
+4004
+4005
+4006
+4007
+4008
+4009
+4010
+4011
+4012
+4013
+4014
+4015
+4016
+4017
+4018
+4019
+4020
+4021
+4022
+4023
+4024
+4025
+4026
+4027
+4028
+4029
+4030
+4031
+4032
+4033
+4034
+4035
+4036
+4037
+4038
+4039
+4040
+4041
+4042
+4043
+4044
+4045
+4046
+4047
+4048
+4049
+4050
+4051
+4052
+4053
+4054
+4055
+4056
+4057
+4058
+4059
+4060
+4061
+4062
+4063
+4064
+4065
+4066
+4067
+4068
+4069
+4070
+4071
+4072
+4073
+4074
+4075
+4076
+4077
+4078
+4079
+4080
+4081
+4082
+4083
+4084
+4085
+4086
+4087
+4088
+4089
+4090
+4091
+4092
+4093
+4094
+4095
+4096
+4097
+4098
+4099
+4100
+4101
+4102
+4103
+4104
+4105
+4106
+4107
+4108
+4109
+4110
+4111
+4112
+4113
+4114
+4115
+4116
+4117
+4118
+4119
+4120
+4121
+4122
+4123
+4124
+4125
+4126
+4127
+4128
+4129
+4130
+4131
+4132
+4133
+4134
+4135
+4136
+4137
+4138
+4139
+4140
+4141
+4142
+4143
+4144
+4145
+4146
+4147
+4148
+4149
+4150
+4151
+4152
+4153
+4154
+4155
+4156
+4157
+4158
+4159
+4160
+4161
+4162
+4163
+4164
+4165
+4166
+4167
+4168
+4169
+4170
+4171
+4172
+4173
+4174
+4175
+4176
+4177
+4178
+4179
+4180
+4181
+4182
+4183
+4184
+4185
+4186
+4187
+4188
+4189
+4190
+4191
+4192
+4193
+4194
+4195
+4196
+4197
+4198
+4199
+4200
+4201
+4202
+4203
+4204
+4205
+4206
+4207
+4208
+4209
+4210
+4211
+4212
+4213
+4214
+4215
+4216
+4217
+4218
+4219
+4220
+4221
+4222
+4223
+4224
+4225
+4226
+4227
+4228
+4229
+4230
+4231
+4232
+4233
+4234
+4235
+4236
+4237
+4238
+4239
+4240
+4241
+4242
+4243
+4244
+4245
+4246
+4247
+4248
+4249
+4250
+4251
+4252
+4253
+4254
+4255
+4256
+4257
+4258
+4259
+4260
+4261
+4262
+4263
+4264
+4265
+4266
+4267
+4268
+4269
+4270
+4271
+4272
+4273
+4274
+4275
+4276
+4277
+4278
+4279
+4280
+4281
+4282
+4283
+4284
+4285
+4286
+4287
+4288
+4289
+4290
+4291
+4292
+4293
+4294
+4295
+4296
+4297
+4298
+4299
+4300
+4301
+4302
+4303
+4304
+4305
+4306
+4307
+4308
+4309
+4310
+4311
+4312
+4313
+4314
+4315
+4316
+4317
+4318
+4319
+4320
+4321
+4322
+4323
+4324
+4325
+4326
+4327
+4328
+4329
+4330
+4331
+4332
+4333
+4334
+4335
+4336
+4337
+4338
+4339
+4340
+4341
+4342
+4343
+4344
+4345
+4346
+4347
+4348
+4349
+4350
+4351
+4352
+4353
+4354
+4355
+4356
+4357
+4358
+4359
+4360
+4361
+4362
+4363
+4364
+4365
+4366
+4367
+4368
+4369
+4370
+4371
+4372
+4373
+4374
+4375
+4376
+4377
+4378
+4379
+4380
+4381
+4382
+4383
+4384
+4385
+4386
+4387
+4388
+4389
+4390
+4391
+4392
+4393
+4394
+4395
+4396
+4397
+4398
+4399
+4400
+4401
+4402
+4403
+4404
+4405
+4406
+4407
+4408
+4409
+4410
+4411
+4412
+4413
+4414
+4415
+4416
+4417
+4418
+4419
+4420
+4421
+4422
+4423
+4424
+4425
+4426
+4427
+4428
+4429
+4430
+4431
+4432
+4433
+4434
+4435
+4436
+4437
+4438
+4439
+4440
+4441
+4442
+4443
+4444
+4445
+4446
+4447
+4448
+4449
+4450
+4451
+4452
+4453
+4454
+4455
+4456
+4457
+4458
+4459
+4460
+4461
+4462
+4463
+4464
+4465
+4466
+4467
+4468
+4469
+4470
+4471
+4472
+4473
+4474
+4475
+4476
+4477
+4478
+4479
+4480
+4481
+4482
+4483
+4484
+4485
+4486
+4487
+4488
+4489
+4490
+4491
+4492
+4493
+4494
+4495
+4496
+4497
+4498
+4499
+4500
+4501
+4502
+4503
+4504
+4505
+4506
+4507
+4508
+4509
+4510
+4511
+4512
+4513
+4514
+4515
+4516
+4517
+4518
+4519
+4520
+4521
+4522
+4523
+4524
+4525
+4526
+4527
+4528
+4529
+4530
+4531
+4532
+4533
+4534
+4535
+4536
+4537
+4538
+4539
+4540
+4541
+4542
+4543
+4544
+4545
+4546
+4547
+4548
+4549
+4550
+4551
+4552
+4553
+4554
+4555
+4556
+4557
+4558
+4559
+4560
+4561
+4562
+4563
+4564
+4565
+4566
+4567
+4568
+4569
+4570
+4571
+4572
+4573
+4574
+4575
+4576
+4577
+4578
+4579
+4580
+4581
+4582
+4583
+4584
+4585
+4586
+4587
+4588
+4589
+4590
+4591
+4592
+4593
+4594
+4595
+4596
+4597
+4598
+4599
+4600
+4601
+4602
+4603
+4604
+4605
+4606
+4607
+4608
+4609
+4610
+4611
+4612
+4613
+4614
+4615
+4616
+4617
+4618
+4619
+4620
+4621
+4622
+4623
+4624
+4625
+4626
+4627
+4628
+4629
+4630
+4631
+4632
+4633
+4634
+4635
+4636
+4637
+4638
+4639
+4640
+4641
+4642
+4643
+4644
+4645
+4646
+4647
+4648
+4649
+4650
+4651
+4652
+4653
+4654
+4655
+4656
+4657
+4658
+4659
+4660
+4661
+4662
+4663
+4664
+4665
+4666
+4667
+4668
+4669
+4670
+4671
+4672
+4673
+4674
+4675
+4676
+4677
+4678
+4679
+4680
+4681
+4682
+4683
+4684
+4685
+4686
+4687
+4688
+4689
+4690
+4691
+4692
+4693
+4694
+4695
+4696
+4697
+4698
+4699
+4700
+4701
+4702
+4703
+4704
+4705
+4706
+4707
+4708
+4709
+4710
+4711
+4712
+4713
+4714
+4715
+4716
+4717
+4718
+4719
+4720
+4721
+4722
+4723
+4724
+4725
+4726
+4727
+4728
+4729
+4730
+4731
+4732
+4733
+4734
+4735
+4736
+4737
+4738
+4739
+4740
+4741
+4742
+4743
+4744
+4745
+4746
+4747
+4748
+4749
+4750
+4751
+4752
+4753
+4754
+4755
+4756
+4757
+4758
+4759
+4760
+4761
+4762
+4763
+4764
+4765
+4766
+4767
+4768
+4769
+4770
+4771
+4772
+4773
+4774
+4775
+4776
+4777
+4778
+4779
+4780
+4781
+4782
+4783
+4784
+4785
+4786
+4787
+4788
+4789
+4790
+4791
+4792
+4793
+4794
+4795
+4796
+4797
+4798
+4799
+4800
+4801
+4802
+4803
+4804
+4805
+4806
+4807
+4808
+4809
+4810
+4811
+4812
+4813
+4814
+4815
+4816
+4817
+4818
+4819
+4820
+4821
+4822
+4823
+4824
+4825
+4826
+4827
+4828
+4829
+4830
+4831
+4832
+4833
+4834
+4835
+4836
+4837
+4838
+4839
+4840
+4841
+4842
+4843
+4844
+4845
+4846
+4847
+4848
+4849
+4850
+4851
+4852
+4853
+4854
+4855
+4856
+4857
+4858
+4859
+4860
+4861
+4862
+4863
+4864
+4865
+4866
+4867
+4868
+4869
+4870
+4871
+4872
+4873
+4874
+4875
+4876
+4877
+4878
+4879
+4880
+4881
+4882
+4883
+4884
+4885
+4886
+4887
+4888
+4889
+4890
+4891
+4892
+4893
+4894
+4895
+4896
+4897
+4898
+4899
+4900
+4901
+4902
+4903
+4904
+4905
+4906
+4907
+4908
+4909
+4910
+4911
+4912
+4913
+4914
+4915
+4916
+4917
+4918
+4919
+4920
+4921
+4922
+4923
+4924
+4925
+4926
+4927
+4928
+4929
+4930
+4931
+4932
+4933
+4934
+4935
+4936
+4937
+4938
+4939
+4940
+4941
+4942
+4943
+4944
+4945
+4946
+4947
+4948
+4949
+4950
+4951
+4952
+4953
+4954
+4955
+4956
+4957
+4958
+4959
+4960
+4961
+4962
+4963
+4964
+4965
+4966
+4967
+4968
+4969
+4970
+4971
+4972
+4973
+4974
+4975
+4976
+4977
+4978
+4979
+4980
+4981
+4982
+4983
+4984
+4985
+4986
+4987
+4988
+4989
+4990
+4991
+4992
+4993
+4994
+4995
+4996
+4997
+4998
+4999
+Stopping
Index: tests/concurrent/waitfor/.expect/dtor.txt
===================================================================
--- tests/concurrent/waitfor/.expect/dtor.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/.expect/dtor.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,2 @@
+Starting
+Stopping
Index: tests/concurrent/waitfor/.expect/else.txt
===================================================================
--- tests/concurrent/waitfor/.expect/else.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/.expect/else.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,9 @@
+Starting
+Step 0
+else called
+Step 1
+else called
+Step 2
+else called
+Step 3
+Done
Index: tests/concurrent/waitfor/.expect/recurse.txt
===================================================================
--- tests/concurrent/waitfor/.expect/recurse.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/.expect/recurse.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,5002 @@
+Starting
+0 1st 2nd 3rd Last 3rd 2nd 1st
+1 1st 2nd 3rd Last 3rd 2nd 1st
+2 1st 2nd 3rd Last 3rd 2nd 1st
+3 1st 2nd 3rd Last 3rd 2nd 1st
+4 1st 2nd 3rd Last 3rd 2nd 1st
+5 1st 2nd 3rd Last 3rd 2nd 1st
+6 1st 2nd 3rd Last 3rd 2nd 1st
+7 1st 2nd 3rd Last 3rd 2nd 1st
+8 1st 2nd 3rd Last 3rd 2nd 1st
+9 1st 2nd 3rd Last 3rd 2nd 1st
+10 1st 2nd 3rd Last 3rd 2nd 1st
+11 1st 2nd 3rd Last 3rd 2nd 1st
+12 1st 2nd 3rd Last 3rd 2nd 1st
+13 1st 2nd 3rd Last 3rd 2nd 1st
+14 1st 2nd 3rd Last 3rd 2nd 1st
+15 1st 2nd 3rd Last 3rd 2nd 1st
+16 1st 2nd 3rd Last 3rd 2nd 1st
+17 1st 2nd 3rd Last 3rd 2nd 1st
+18 1st 2nd 3rd Last 3rd 2nd 1st
+19 1st 2nd 3rd Last 3rd 2nd 1st
+20 1st 2nd 3rd Last 3rd 2nd 1st
+21 1st 2nd 3rd Last 3rd 2nd 1st
+22 1st 2nd 3rd Last 3rd 2nd 1st
+23 1st 2nd 3rd Last 3rd 2nd 1st
+24 1st 2nd 3rd Last 3rd 2nd 1st
+25 1st 2nd 3rd Last 3rd 2nd 1st
+26 1st 2nd 3rd Last 3rd 2nd 1st
+27 1st 2nd 3rd Last 3rd 2nd 1st
+28 1st 2nd 3rd Last 3rd 2nd 1st
+29 1st 2nd 3rd Last 3rd 2nd 1st
+30 1st 2nd 3rd Last 3rd 2nd 1st
+31 1st 2nd 3rd Last 3rd 2nd 1st
+32 1st 2nd 3rd Last 3rd 2nd 1st
+33 1st 2nd 3rd Last 3rd 2nd 1st
+34 1st 2nd 3rd Last 3rd 2nd 1st
+35 1st 2nd 3rd Last 3rd 2nd 1st
+36 1st 2nd 3rd Last 3rd 2nd 1st
+37 1st 2nd 3rd Last 3rd 2nd 1st
+38 1st 2nd 3rd Last 3rd 2nd 1st
+39 1st 2nd 3rd Last 3rd 2nd 1st
+40 1st 2nd 3rd Last 3rd 2nd 1st
+41 1st 2nd 3rd Last 3rd 2nd 1st
+42 1st 2nd 3rd Last 3rd 2nd 1st
+43 1st 2nd 3rd Last 3rd 2nd 1st
+44 1st 2nd 3rd Last 3rd 2nd 1st
+45 1st 2nd 3rd Last 3rd 2nd 1st
+46 1st 2nd 3rd Last 3rd 2nd 1st
+47 1st 2nd 3rd Last 3rd 2nd 1st
+48 1st 2nd 3rd Last 3rd 2nd 1st
+49 1st 2nd 3rd Last 3rd 2nd 1st
+50 1st 2nd 3rd Last 3rd 2nd 1st
+51 1st 2nd 3rd Last 3rd 2nd 1st
+52 1st 2nd 3rd Last 3rd 2nd 1st
+53 1st 2nd 3rd Last 3rd 2nd 1st
+54 1st 2nd 3rd Last 3rd 2nd 1st
+55 1st 2nd 3rd Last 3rd 2nd 1st
+56 1st 2nd 3rd Last 3rd 2nd 1st
+57 1st 2nd 3rd Last 3rd 2nd 1st
+58 1st 2nd 3rd Last 3rd 2nd 1st
+59 1st 2nd 3rd Last 3rd 2nd 1st
+60 1st 2nd 3rd Last 3rd 2nd 1st
+61 1st 2nd 3rd Last 3rd 2nd 1st
+62 1st 2nd 3rd Last 3rd 2nd 1st
+63 1st 2nd 3rd Last 3rd 2nd 1st
+64 1st 2nd 3rd Last 3rd 2nd 1st
+65 1st 2nd 3rd Last 3rd 2nd 1st
+66 1st 2nd 3rd Last 3rd 2nd 1st
+67 1st 2nd 3rd Last 3rd 2nd 1st
+68 1st 2nd 3rd Last 3rd 2nd 1st
+69 1st 2nd 3rd Last 3rd 2nd 1st
+70 1st 2nd 3rd Last 3rd 2nd 1st
+71 1st 2nd 3rd Last 3rd 2nd 1st
+72 1st 2nd 3rd Last 3rd 2nd 1st
+73 1st 2nd 3rd Last 3rd 2nd 1st
+74 1st 2nd 3rd Last 3rd 2nd 1st
+75 1st 2nd 3rd Last 3rd 2nd 1st
+76 1st 2nd 3rd Last 3rd 2nd 1st
+77 1st 2nd 3rd Last 3rd 2nd 1st
+78 1st 2nd 3rd Last 3rd 2nd 1st
+79 1st 2nd 3rd Last 3rd 2nd 1st
+80 1st 2nd 3rd Last 3rd 2nd 1st
+81 1st 2nd 3rd Last 3rd 2nd 1st
+82 1st 2nd 3rd Last 3rd 2nd 1st
+83 1st 2nd 3rd Last 3rd 2nd 1st
+84 1st 2nd 3rd Last 3rd 2nd 1st
+85 1st 2nd 3rd Last 3rd 2nd 1st
+86 1st 2nd 3rd Last 3rd 2nd 1st
+87 1st 2nd 3rd Last 3rd 2nd 1st
+88 1st 2nd 3rd Last 3rd 2nd 1st
+89 1st 2nd 3rd Last 3rd 2nd 1st
+90 1st 2nd 3rd Last 3rd 2nd 1st
+91 1st 2nd 3rd Last 3rd 2nd 1st
+92 1st 2nd 3rd Last 3rd 2nd 1st
+93 1st 2nd 3rd Last 3rd 2nd 1st
+94 1st 2nd 3rd Last 3rd 2nd 1st
+95 1st 2nd 3rd Last 3rd 2nd 1st
+96 1st 2nd 3rd Last 3rd 2nd 1st
+97 1st 2nd 3rd Last 3rd 2nd 1st
+98 1st 2nd 3rd Last 3rd 2nd 1st
+99 1st 2nd 3rd Last 3rd 2nd 1st
+100 1st 2nd 3rd Last 3rd 2nd 1st
+101 1st 2nd 3rd Last 3rd 2nd 1st
+102 1st 2nd 3rd Last 3rd 2nd 1st
+103 1st 2nd 3rd Last 3rd 2nd 1st
+104 1st 2nd 3rd Last 3rd 2nd 1st
+105 1st 2nd 3rd Last 3rd 2nd 1st
+106 1st 2nd 3rd Last 3rd 2nd 1st
+107 1st 2nd 3rd Last 3rd 2nd 1st
+108 1st 2nd 3rd Last 3rd 2nd 1st
+109 1st 2nd 3rd Last 3rd 2nd 1st
+110 1st 2nd 3rd Last 3rd 2nd 1st
+111 1st 2nd 3rd Last 3rd 2nd 1st
+112 1st 2nd 3rd Last 3rd 2nd 1st
+113 1st 2nd 3rd Last 3rd 2nd 1st
+114 1st 2nd 3rd Last 3rd 2nd 1st
+115 1st 2nd 3rd Last 3rd 2nd 1st
+116 1st 2nd 3rd Last 3rd 2nd 1st
+117 1st 2nd 3rd Last 3rd 2nd 1st
+118 1st 2nd 3rd Last 3rd 2nd 1st
+119 1st 2nd 3rd Last 3rd 2nd 1st
+120 1st 2nd 3rd Last 3rd 2nd 1st
+121 1st 2nd 3rd Last 3rd 2nd 1st
+122 1st 2nd 3rd Last 3rd 2nd 1st
+123 1st 2nd 3rd Last 3rd 2nd 1st
+124 1st 2nd 3rd Last 3rd 2nd 1st
+125 1st 2nd 3rd Last 3rd 2nd 1st
+126 1st 2nd 3rd Last 3rd 2nd 1st
+127 1st 2nd 3rd Last 3rd 2nd 1st
+128 1st 2nd 3rd Last 3rd 2nd 1st
+129 1st 2nd 3rd Last 3rd 2nd 1st
+130 1st 2nd 3rd Last 3rd 2nd 1st
+131 1st 2nd 3rd Last 3rd 2nd 1st
+132 1st 2nd 3rd Last 3rd 2nd 1st
+133 1st 2nd 3rd Last 3rd 2nd 1st
+134 1st 2nd 3rd Last 3rd 2nd 1st
+135 1st 2nd 3rd Last 3rd 2nd 1st
+136 1st 2nd 3rd Last 3rd 2nd 1st
+137 1st 2nd 3rd Last 3rd 2nd 1st
+138 1st 2nd 3rd Last 3rd 2nd 1st
+139 1st 2nd 3rd Last 3rd 2nd 1st
+140 1st 2nd 3rd Last 3rd 2nd 1st
+141 1st 2nd 3rd Last 3rd 2nd 1st
+142 1st 2nd 3rd Last 3rd 2nd 1st
+143 1st 2nd 3rd Last 3rd 2nd 1st
+144 1st 2nd 3rd Last 3rd 2nd 1st
+145 1st 2nd 3rd Last 3rd 2nd 1st
+146 1st 2nd 3rd Last 3rd 2nd 1st
+147 1st 2nd 3rd Last 3rd 2nd 1st
+148 1st 2nd 3rd Last 3rd 2nd 1st
+149 1st 2nd 3rd Last 3rd 2nd 1st
+150 1st 2nd 3rd Last 3rd 2nd 1st
+151 1st 2nd 3rd Last 3rd 2nd 1st
+152 1st 2nd 3rd Last 3rd 2nd 1st
+153 1st 2nd 3rd Last 3rd 2nd 1st
+154 1st 2nd 3rd Last 3rd 2nd 1st
+155 1st 2nd 3rd Last 3rd 2nd 1st
+156 1st 2nd 3rd Last 3rd 2nd 1st
+157 1st 2nd 3rd Last 3rd 2nd 1st
+158 1st 2nd 3rd Last 3rd 2nd 1st
+159 1st 2nd 3rd Last 3rd 2nd 1st
+160 1st 2nd 3rd Last 3rd 2nd 1st
+161 1st 2nd 3rd Last 3rd 2nd 1st
+162 1st 2nd 3rd Last 3rd 2nd 1st
+163 1st 2nd 3rd Last 3rd 2nd 1st
+164 1st 2nd 3rd Last 3rd 2nd 1st
+165 1st 2nd 3rd Last 3rd 2nd 1st
+166 1st 2nd 3rd Last 3rd 2nd 1st
+167 1st 2nd 3rd Last 3rd 2nd 1st
+168 1st 2nd 3rd Last 3rd 2nd 1st
+169 1st 2nd 3rd Last 3rd 2nd 1st
+170 1st 2nd 3rd Last 3rd 2nd 1st
+171 1st 2nd 3rd Last 3rd 2nd 1st
+172 1st 2nd 3rd Last 3rd 2nd 1st
+173 1st 2nd 3rd Last 3rd 2nd 1st
+174 1st 2nd 3rd Last 3rd 2nd 1st
+175 1st 2nd 3rd Last 3rd 2nd 1st
+176 1st 2nd 3rd Last 3rd 2nd 1st
+177 1st 2nd 3rd Last 3rd 2nd 1st
+178 1st 2nd 3rd Last 3rd 2nd 1st
+179 1st 2nd 3rd Last 3rd 2nd 1st
+180 1st 2nd 3rd Last 3rd 2nd 1st
+181 1st 2nd 3rd Last 3rd 2nd 1st
+182 1st 2nd 3rd Last 3rd 2nd 1st
+183 1st 2nd 3rd Last 3rd 2nd 1st
+184 1st 2nd 3rd Last 3rd 2nd 1st
+185 1st 2nd 3rd Last 3rd 2nd 1st
+186 1st 2nd 3rd Last 3rd 2nd 1st
+187 1st 2nd 3rd Last 3rd 2nd 1st
+188 1st 2nd 3rd Last 3rd 2nd 1st
+189 1st 2nd 3rd Last 3rd 2nd 1st
+190 1st 2nd 3rd Last 3rd 2nd 1st
+191 1st 2nd 3rd Last 3rd 2nd 1st
+192 1st 2nd 3rd Last 3rd 2nd 1st
+193 1st 2nd 3rd Last 3rd 2nd 1st
+194 1st 2nd 3rd Last 3rd 2nd 1st
+195 1st 2nd 3rd Last 3rd 2nd 1st
+196 1st 2nd 3rd Last 3rd 2nd 1st
+197 1st 2nd 3rd Last 3rd 2nd 1st
+198 1st 2nd 3rd Last 3rd 2nd 1st
+199 1st 2nd 3rd Last 3rd 2nd 1st
+200 1st 2nd 3rd Last 3rd 2nd 1st
+201 1st 2nd 3rd Last 3rd 2nd 1st
+202 1st 2nd 3rd Last 3rd 2nd 1st
+203 1st 2nd 3rd Last 3rd 2nd 1st
+204 1st 2nd 3rd Last 3rd 2nd 1st
+205 1st 2nd 3rd Last 3rd 2nd 1st
+206 1st 2nd 3rd Last 3rd 2nd 1st
+207 1st 2nd 3rd Last 3rd 2nd 1st
+208 1st 2nd 3rd Last 3rd 2nd 1st
+209 1st 2nd 3rd Last 3rd 2nd 1st
+210 1st 2nd 3rd Last 3rd 2nd 1st
+211 1st 2nd 3rd Last 3rd 2nd 1st
+212 1st 2nd 3rd Last 3rd 2nd 1st
+213 1st 2nd 3rd Last 3rd 2nd 1st
+214 1st 2nd 3rd Last 3rd 2nd 1st
+215 1st 2nd 3rd Last 3rd 2nd 1st
+216 1st 2nd 3rd Last 3rd 2nd 1st
+217 1st 2nd 3rd Last 3rd 2nd 1st
+218 1st 2nd 3rd Last 3rd 2nd 1st
+219 1st 2nd 3rd Last 3rd 2nd 1st
+220 1st 2nd 3rd Last 3rd 2nd 1st
+221 1st 2nd 3rd Last 3rd 2nd 1st
+222 1st 2nd 3rd Last 3rd 2nd 1st
+223 1st 2nd 3rd Last 3rd 2nd 1st
+224 1st 2nd 3rd Last 3rd 2nd 1st
+225 1st 2nd 3rd Last 3rd 2nd 1st
+226 1st 2nd 3rd Last 3rd 2nd 1st
+227 1st 2nd 3rd Last 3rd 2nd 1st
+228 1st 2nd 3rd Last 3rd 2nd 1st
+229 1st 2nd 3rd Last 3rd 2nd 1st
+230 1st 2nd 3rd Last 3rd 2nd 1st
+231 1st 2nd 3rd Last 3rd 2nd 1st
+232 1st 2nd 3rd Last 3rd 2nd 1st
+233 1st 2nd 3rd Last 3rd 2nd 1st
+234 1st 2nd 3rd Last 3rd 2nd 1st
+235 1st 2nd 3rd Last 3rd 2nd 1st
+236 1st 2nd 3rd Last 3rd 2nd 1st
+237 1st 2nd 3rd Last 3rd 2nd 1st
+238 1st 2nd 3rd Last 3rd 2nd 1st
+239 1st 2nd 3rd Last 3rd 2nd 1st
+240 1st 2nd 3rd Last 3rd 2nd 1st
+241 1st 2nd 3rd Last 3rd 2nd 1st
+242 1st 2nd 3rd Last 3rd 2nd 1st
+243 1st 2nd 3rd Last 3rd 2nd 1st
+244 1st 2nd 3rd Last 3rd 2nd 1st
+245 1st 2nd 3rd Last 3rd 2nd 1st
+246 1st 2nd 3rd Last 3rd 2nd 1st
+247 1st 2nd 3rd Last 3rd 2nd 1st
+248 1st 2nd 3rd Last 3rd 2nd 1st
+249 1st 2nd 3rd Last 3rd 2nd 1st
+250 1st 2nd 3rd Last 3rd 2nd 1st
+251 1st 2nd 3rd Last 3rd 2nd 1st
+252 1st 2nd 3rd Last 3rd 2nd 1st
+253 1st 2nd 3rd Last 3rd 2nd 1st
+254 1st 2nd 3rd Last 3rd 2nd 1st
+255 1st 2nd 3rd Last 3rd 2nd 1st
+256 1st 2nd 3rd Last 3rd 2nd 1st
+257 1st 2nd 3rd Last 3rd 2nd 1st
+258 1st 2nd 3rd Last 3rd 2nd 1st
+259 1st 2nd 3rd Last 3rd 2nd 1st
+260 1st 2nd 3rd Last 3rd 2nd 1st
+261 1st 2nd 3rd Last 3rd 2nd 1st
+262 1st 2nd 3rd Last 3rd 2nd 1st
+263 1st 2nd 3rd Last 3rd 2nd 1st
+264 1st 2nd 3rd Last 3rd 2nd 1st
+265 1st 2nd 3rd Last 3rd 2nd 1st
+266 1st 2nd 3rd Last 3rd 2nd 1st
+267 1st 2nd 3rd Last 3rd 2nd 1st
+268 1st 2nd 3rd Last 3rd 2nd 1st
+269 1st 2nd 3rd Last 3rd 2nd 1st
+270 1st 2nd 3rd Last 3rd 2nd 1st
+271 1st 2nd 3rd Last 3rd 2nd 1st
+272 1st 2nd 3rd Last 3rd 2nd 1st
+273 1st 2nd 3rd Last 3rd 2nd 1st
+274 1st 2nd 3rd Last 3rd 2nd 1st
+275 1st 2nd 3rd Last 3rd 2nd 1st
+276 1st 2nd 3rd Last 3rd 2nd 1st
+277 1st 2nd 3rd Last 3rd 2nd 1st
+278 1st 2nd 3rd Last 3rd 2nd 1st
+279 1st 2nd 3rd Last 3rd 2nd 1st
+280 1st 2nd 3rd Last 3rd 2nd 1st
+281 1st 2nd 3rd Last 3rd 2nd 1st
+282 1st 2nd 3rd Last 3rd 2nd 1st
+283 1st 2nd 3rd Last 3rd 2nd 1st
+284 1st 2nd 3rd Last 3rd 2nd 1st
+285 1st 2nd 3rd Last 3rd 2nd 1st
+286 1st 2nd 3rd Last 3rd 2nd 1st
+287 1st 2nd 3rd Last 3rd 2nd 1st
+288 1st 2nd 3rd Last 3rd 2nd 1st
+289 1st 2nd 3rd Last 3rd 2nd 1st
+290 1st 2nd 3rd Last 3rd 2nd 1st
+291 1st 2nd 3rd Last 3rd 2nd 1st
+292 1st 2nd 3rd Last 3rd 2nd 1st
+293 1st 2nd 3rd Last 3rd 2nd 1st
+294 1st 2nd 3rd Last 3rd 2nd 1st
+295 1st 2nd 3rd Last 3rd 2nd 1st
+296 1st 2nd 3rd Last 3rd 2nd 1st
+297 1st 2nd 3rd Last 3rd 2nd 1st
+298 1st 2nd 3rd Last 3rd 2nd 1st
+299 1st 2nd 3rd Last 3rd 2nd 1st
+300 1st 2nd 3rd Last 3rd 2nd 1st
+301 1st 2nd 3rd Last 3rd 2nd 1st
+302 1st 2nd 3rd Last 3rd 2nd 1st
+303 1st 2nd 3rd Last 3rd 2nd 1st
+304 1st 2nd 3rd Last 3rd 2nd 1st
+305 1st 2nd 3rd Last 3rd 2nd 1st
+306 1st 2nd 3rd Last 3rd 2nd 1st
+307 1st 2nd 3rd Last 3rd 2nd 1st
+308 1st 2nd 3rd Last 3rd 2nd 1st
+309 1st 2nd 3rd Last 3rd 2nd 1st
+310 1st 2nd 3rd Last 3rd 2nd 1st
+311 1st 2nd 3rd Last 3rd 2nd 1st
+312 1st 2nd 3rd Last 3rd 2nd 1st
+313 1st 2nd 3rd Last 3rd 2nd 1st
+314 1st 2nd 3rd Last 3rd 2nd 1st
+315 1st 2nd 3rd Last 3rd 2nd 1st
+316 1st 2nd 3rd Last 3rd 2nd 1st
+317 1st 2nd 3rd Last 3rd 2nd 1st
+318 1st 2nd 3rd Last 3rd 2nd 1st
+319 1st 2nd 3rd Last 3rd 2nd 1st
+320 1st 2nd 3rd Last 3rd 2nd 1st
+321 1st 2nd 3rd Last 3rd 2nd 1st
+322 1st 2nd 3rd Last 3rd 2nd 1st
+323 1st 2nd 3rd Last 3rd 2nd 1st
+324 1st 2nd 3rd Last 3rd 2nd 1st
+325 1st 2nd 3rd Last 3rd 2nd 1st
+326 1st 2nd 3rd Last 3rd 2nd 1st
+327 1st 2nd 3rd Last 3rd 2nd 1st
+328 1st 2nd 3rd Last 3rd 2nd 1st
+329 1st 2nd 3rd Last 3rd 2nd 1st
+330 1st 2nd 3rd Last 3rd 2nd 1st
+331 1st 2nd 3rd Last 3rd 2nd 1st
+332 1st 2nd 3rd Last 3rd 2nd 1st
+333 1st 2nd 3rd Last 3rd 2nd 1st
+334 1st 2nd 3rd Last 3rd 2nd 1st
+335 1st 2nd 3rd Last 3rd 2nd 1st
+336 1st 2nd 3rd Last 3rd 2nd 1st
+337 1st 2nd 3rd Last 3rd 2nd 1st
+338 1st 2nd 3rd Last 3rd 2nd 1st
+339 1st 2nd 3rd Last 3rd 2nd 1st
+340 1st 2nd 3rd Last 3rd 2nd 1st
+341 1st 2nd 3rd Last 3rd 2nd 1st
+342 1st 2nd 3rd Last 3rd 2nd 1st
+343 1st 2nd 3rd Last 3rd 2nd 1st
+344 1st 2nd 3rd Last 3rd 2nd 1st
+345 1st 2nd 3rd Last 3rd 2nd 1st
+346 1st 2nd 3rd Last 3rd 2nd 1st
+347 1st 2nd 3rd Last 3rd 2nd 1st
+348 1st 2nd 3rd Last 3rd 2nd 1st
+349 1st 2nd 3rd Last 3rd 2nd 1st
+350 1st 2nd 3rd Last 3rd 2nd 1st
+351 1st 2nd 3rd Last 3rd 2nd 1st
+352 1st 2nd 3rd Last 3rd 2nd 1st
+353 1st 2nd 3rd Last 3rd 2nd 1st
+354 1st 2nd 3rd Last 3rd 2nd 1st
+355 1st 2nd 3rd Last 3rd 2nd 1st
+356 1st 2nd 3rd Last 3rd 2nd 1st
+357 1st 2nd 3rd Last 3rd 2nd 1st
+358 1st 2nd 3rd Last 3rd 2nd 1st
+359 1st 2nd 3rd Last 3rd 2nd 1st
+360 1st 2nd 3rd Last 3rd 2nd 1st
+361 1st 2nd 3rd Last 3rd 2nd 1st
+362 1st 2nd 3rd Last 3rd 2nd 1st
+363 1st 2nd 3rd Last 3rd 2nd 1st
+364 1st 2nd 3rd Last 3rd 2nd 1st
+365 1st 2nd 3rd Last 3rd 2nd 1st
+366 1st 2nd 3rd Last 3rd 2nd 1st
+367 1st 2nd 3rd Last 3rd 2nd 1st
+368 1st 2nd 3rd Last 3rd 2nd 1st
+369 1st 2nd 3rd Last 3rd 2nd 1st
+370 1st 2nd 3rd Last 3rd 2nd 1st
+371 1st 2nd 3rd Last 3rd 2nd 1st
+372 1st 2nd 3rd Last 3rd 2nd 1st
+373 1st 2nd 3rd Last 3rd 2nd 1st
+374 1st 2nd 3rd Last 3rd 2nd 1st
+375 1st 2nd 3rd Last 3rd 2nd 1st
+376 1st 2nd 3rd Last 3rd 2nd 1st
+377 1st 2nd 3rd Last 3rd 2nd 1st
+378 1st 2nd 3rd Last 3rd 2nd 1st
+379 1st 2nd 3rd Last 3rd 2nd 1st
+380 1st 2nd 3rd Last 3rd 2nd 1st
+381 1st 2nd 3rd Last 3rd 2nd 1st
+382 1st 2nd 3rd Last 3rd 2nd 1st
+383 1st 2nd 3rd Last 3rd 2nd 1st
+384 1st 2nd 3rd Last 3rd 2nd 1st
+385 1st 2nd 3rd Last 3rd 2nd 1st
+386 1st 2nd 3rd Last 3rd 2nd 1st
+387 1st 2nd 3rd Last 3rd 2nd 1st
+388 1st 2nd 3rd Last 3rd 2nd 1st
+389 1st 2nd 3rd Last 3rd 2nd 1st
+390 1st 2nd 3rd Last 3rd 2nd 1st
+391 1st 2nd 3rd Last 3rd 2nd 1st
+392 1st 2nd 3rd Last 3rd 2nd 1st
+393 1st 2nd 3rd Last 3rd 2nd 1st
+394 1st 2nd 3rd Last 3rd 2nd 1st
+395 1st 2nd 3rd Last 3rd 2nd 1st
+396 1st 2nd 3rd Last 3rd 2nd 1st
+397 1st 2nd 3rd Last 3rd 2nd 1st
+398 1st 2nd 3rd Last 3rd 2nd 1st
+399 1st 2nd 3rd Last 3rd 2nd 1st
+400 1st 2nd 3rd Last 3rd 2nd 1st
+401 1st 2nd 3rd Last 3rd 2nd 1st
+402 1st 2nd 3rd Last 3rd 2nd 1st
+403 1st 2nd 3rd Last 3rd 2nd 1st
+404 1st 2nd 3rd Last 3rd 2nd 1st
+405 1st 2nd 3rd Last 3rd 2nd 1st
+406 1st 2nd 3rd Last 3rd 2nd 1st
+407 1st 2nd 3rd Last 3rd 2nd 1st
+408 1st 2nd 3rd Last 3rd 2nd 1st
+409 1st 2nd 3rd Last 3rd 2nd 1st
+410 1st 2nd 3rd Last 3rd 2nd 1st
+411 1st 2nd 3rd Last 3rd 2nd 1st
+412 1st 2nd 3rd Last 3rd 2nd 1st
+413 1st 2nd 3rd Last 3rd 2nd 1st
+414 1st 2nd 3rd Last 3rd 2nd 1st
+415 1st 2nd 3rd Last 3rd 2nd 1st
+416 1st 2nd 3rd Last 3rd 2nd 1st
+417 1st 2nd 3rd Last 3rd 2nd 1st
+418 1st 2nd 3rd Last 3rd 2nd 1st
+419 1st 2nd 3rd Last 3rd 2nd 1st
+420 1st 2nd 3rd Last 3rd 2nd 1st
+421 1st 2nd 3rd Last 3rd 2nd 1st
+422 1st 2nd 3rd Last 3rd 2nd 1st
+423 1st 2nd 3rd Last 3rd 2nd 1st
+424 1st 2nd 3rd Last 3rd 2nd 1st
+425 1st 2nd 3rd Last 3rd 2nd 1st
+426 1st 2nd 3rd Last 3rd 2nd 1st
+427 1st 2nd 3rd Last 3rd 2nd 1st
+428 1st 2nd 3rd Last 3rd 2nd 1st
+429 1st 2nd 3rd Last 3rd 2nd 1st
+430 1st 2nd 3rd Last 3rd 2nd 1st
+431 1st 2nd 3rd Last 3rd 2nd 1st
+432 1st 2nd 3rd Last 3rd 2nd 1st
+433 1st 2nd 3rd Last 3rd 2nd 1st
+434 1st 2nd 3rd Last 3rd 2nd 1st
+435 1st 2nd 3rd Last 3rd 2nd 1st
+436 1st 2nd 3rd Last 3rd 2nd 1st
+437 1st 2nd 3rd Last 3rd 2nd 1st
+438 1st 2nd 3rd Last 3rd 2nd 1st
+439 1st 2nd 3rd Last 3rd 2nd 1st
+440 1st 2nd 3rd Last 3rd 2nd 1st
+441 1st 2nd 3rd Last 3rd 2nd 1st
+442 1st 2nd 3rd Last 3rd 2nd 1st
+443 1st 2nd 3rd Last 3rd 2nd 1st
+444 1st 2nd 3rd Last 3rd 2nd 1st
+445 1st 2nd 3rd Last 3rd 2nd 1st
+446 1st 2nd 3rd Last 3rd 2nd 1st
+447 1st 2nd 3rd Last 3rd 2nd 1st
+448 1st 2nd 3rd Last 3rd 2nd 1st
+449 1st 2nd 3rd Last 3rd 2nd 1st
+450 1st 2nd 3rd Last 3rd 2nd 1st
+451 1st 2nd 3rd Last 3rd 2nd 1st
+452 1st 2nd 3rd Last 3rd 2nd 1st
+453 1st 2nd 3rd Last 3rd 2nd 1st
+454 1st 2nd 3rd Last 3rd 2nd 1st
+455 1st 2nd 3rd Last 3rd 2nd 1st
+456 1st 2nd 3rd Last 3rd 2nd 1st
+457 1st 2nd 3rd Last 3rd 2nd 1st
+458 1st 2nd 3rd Last 3rd 2nd 1st
+459 1st 2nd 3rd Last 3rd 2nd 1st
+460 1st 2nd 3rd Last 3rd 2nd 1st
+461 1st 2nd 3rd Last 3rd 2nd 1st
+462 1st 2nd 3rd Last 3rd 2nd 1st
+463 1st 2nd 3rd Last 3rd 2nd 1st
+464 1st 2nd 3rd Last 3rd 2nd 1st
+465 1st 2nd 3rd Last 3rd 2nd 1st
+466 1st 2nd 3rd Last 3rd 2nd 1st
+467 1st 2nd 3rd Last 3rd 2nd 1st
+468 1st 2nd 3rd Last 3rd 2nd 1st
+469 1st 2nd 3rd Last 3rd 2nd 1st
+470 1st 2nd 3rd Last 3rd 2nd 1st
+471 1st 2nd 3rd Last 3rd 2nd 1st
+472 1st 2nd 3rd Last 3rd 2nd 1st
+473 1st 2nd 3rd Last 3rd 2nd 1st
+474 1st 2nd 3rd Last 3rd 2nd 1st
+475 1st 2nd 3rd Last 3rd 2nd 1st
+476 1st 2nd 3rd Last 3rd 2nd 1st
+477 1st 2nd 3rd Last 3rd 2nd 1st
+478 1st 2nd 3rd Last 3rd 2nd 1st
+479 1st 2nd 3rd Last 3rd 2nd 1st
+480 1st 2nd 3rd Last 3rd 2nd 1st
+481 1st 2nd 3rd Last 3rd 2nd 1st
+482 1st 2nd 3rd Last 3rd 2nd 1st
+483 1st 2nd 3rd Last 3rd 2nd 1st
+484 1st 2nd 3rd Last 3rd 2nd 1st
+485 1st 2nd 3rd Last 3rd 2nd 1st
+486 1st 2nd 3rd Last 3rd 2nd 1st
+487 1st 2nd 3rd Last 3rd 2nd 1st
+488 1st 2nd 3rd Last 3rd 2nd 1st
+489 1st 2nd 3rd Last 3rd 2nd 1st
+490 1st 2nd 3rd Last 3rd 2nd 1st
+491 1st 2nd 3rd Last 3rd 2nd 1st
+492 1st 2nd 3rd Last 3rd 2nd 1st
+493 1st 2nd 3rd Last 3rd 2nd 1st
+494 1st 2nd 3rd Last 3rd 2nd 1st
+495 1st 2nd 3rd Last 3rd 2nd 1st
+496 1st 2nd 3rd Last 3rd 2nd 1st
+497 1st 2nd 3rd Last 3rd 2nd 1st
+498 1st 2nd 3rd Last 3rd 2nd 1st
+499 1st 2nd 3rd Last 3rd 2nd 1st
+500 1st 2nd 3rd Last 3rd 2nd 1st
+501 1st 2nd 3rd Last 3rd 2nd 1st
+502 1st 2nd 3rd Last 3rd 2nd 1st
+503 1st 2nd 3rd Last 3rd 2nd 1st
+504 1st 2nd 3rd Last 3rd 2nd 1st
+505 1st 2nd 3rd Last 3rd 2nd 1st
+506 1st 2nd 3rd Last 3rd 2nd 1st
+507 1st 2nd 3rd Last 3rd 2nd 1st
+508 1st 2nd 3rd Last 3rd 2nd 1st
+509 1st 2nd 3rd Last 3rd 2nd 1st
+510 1st 2nd 3rd Last 3rd 2nd 1st
+511 1st 2nd 3rd Last 3rd 2nd 1st
+512 1st 2nd 3rd Last 3rd 2nd 1st
+513 1st 2nd 3rd Last 3rd 2nd 1st
+514 1st 2nd 3rd Last 3rd 2nd 1st
+515 1st 2nd 3rd Last 3rd 2nd 1st
+516 1st 2nd 3rd Last 3rd 2nd 1st
+517 1st 2nd 3rd Last 3rd 2nd 1st
+518 1st 2nd 3rd Last 3rd 2nd 1st
+519 1st 2nd 3rd Last 3rd 2nd 1st
+520 1st 2nd 3rd Last 3rd 2nd 1st
+521 1st 2nd 3rd Last 3rd 2nd 1st
+522 1st 2nd 3rd Last 3rd 2nd 1st
+523 1st 2nd 3rd Last 3rd 2nd 1st
+524 1st 2nd 3rd Last 3rd 2nd 1st
+525 1st 2nd 3rd Last 3rd 2nd 1st
+526 1st 2nd 3rd Last 3rd 2nd 1st
+527 1st 2nd 3rd Last 3rd 2nd 1st
+528 1st 2nd 3rd Last 3rd 2nd 1st
+529 1st 2nd 3rd Last 3rd 2nd 1st
+530 1st 2nd 3rd Last 3rd 2nd 1st
+531 1st 2nd 3rd Last 3rd 2nd 1st
+532 1st 2nd 3rd Last 3rd 2nd 1st
+533 1st 2nd 3rd Last 3rd 2nd 1st
+534 1st 2nd 3rd Last 3rd 2nd 1st
+535 1st 2nd 3rd Last 3rd 2nd 1st
+536 1st 2nd 3rd Last 3rd 2nd 1st
+537 1st 2nd 3rd Last 3rd 2nd 1st
+538 1st 2nd 3rd Last 3rd 2nd 1st
+539 1st 2nd 3rd Last 3rd 2nd 1st
+540 1st 2nd 3rd Last 3rd 2nd 1st
+541 1st 2nd 3rd Last 3rd 2nd 1st
+542 1st 2nd 3rd Last 3rd 2nd 1st
+543 1st 2nd 3rd Last 3rd 2nd 1st
+544 1st 2nd 3rd Last 3rd 2nd 1st
+545 1st 2nd 3rd Last 3rd 2nd 1st
+546 1st 2nd 3rd Last 3rd 2nd 1st
+547 1st 2nd 3rd Last 3rd 2nd 1st
+548 1st 2nd 3rd Last 3rd 2nd 1st
+549 1st 2nd 3rd Last 3rd 2nd 1st
+550 1st 2nd 3rd Last 3rd 2nd 1st
+551 1st 2nd 3rd Last 3rd 2nd 1st
+552 1st 2nd 3rd Last 3rd 2nd 1st
+553 1st 2nd 3rd Last 3rd 2nd 1st
+554 1st 2nd 3rd Last 3rd 2nd 1st
+555 1st 2nd 3rd Last 3rd 2nd 1st
+556 1st 2nd 3rd Last 3rd 2nd 1st
+557 1st 2nd 3rd Last 3rd 2nd 1st
+558 1st 2nd 3rd Last 3rd 2nd 1st
+559 1st 2nd 3rd Last 3rd 2nd 1st
+560 1st 2nd 3rd Last 3rd 2nd 1st
+561 1st 2nd 3rd Last 3rd 2nd 1st
+562 1st 2nd 3rd Last 3rd 2nd 1st
+563 1st 2nd 3rd Last 3rd 2nd 1st
+564 1st 2nd 3rd Last 3rd 2nd 1st
+565 1st 2nd 3rd Last 3rd 2nd 1st
+566 1st 2nd 3rd Last 3rd 2nd 1st
+567 1st 2nd 3rd Last 3rd 2nd 1st
+568 1st 2nd 3rd Last 3rd 2nd 1st
+569 1st 2nd 3rd Last 3rd 2nd 1st
+570 1st 2nd 3rd Last 3rd 2nd 1st
+571 1st 2nd 3rd Last 3rd 2nd 1st
+572 1st 2nd 3rd Last 3rd 2nd 1st
+573 1st 2nd 3rd Last 3rd 2nd 1st
+574 1st 2nd 3rd Last 3rd 2nd 1st
+575 1st 2nd 3rd Last 3rd 2nd 1st
+576 1st 2nd 3rd Last 3rd 2nd 1st
+577 1st 2nd 3rd Last 3rd 2nd 1st
+578 1st 2nd 3rd Last 3rd 2nd 1st
+579 1st 2nd 3rd Last 3rd 2nd 1st
+580 1st 2nd 3rd Last 3rd 2nd 1st
+581 1st 2nd 3rd Last 3rd 2nd 1st
+582 1st 2nd 3rd Last 3rd 2nd 1st
+583 1st 2nd 3rd Last 3rd 2nd 1st
+584 1st 2nd 3rd Last 3rd 2nd 1st
+585 1st 2nd 3rd Last 3rd 2nd 1st
+586 1st 2nd 3rd Last 3rd 2nd 1st
+587 1st 2nd 3rd Last 3rd 2nd 1st
+588 1st 2nd 3rd Last 3rd 2nd 1st
+589 1st 2nd 3rd Last 3rd 2nd 1st
+590 1st 2nd 3rd Last 3rd 2nd 1st
+591 1st 2nd 3rd Last 3rd 2nd 1st
+592 1st 2nd 3rd Last 3rd 2nd 1st
+593 1st 2nd 3rd Last 3rd 2nd 1st
+594 1st 2nd 3rd Last 3rd 2nd 1st
+595 1st 2nd 3rd Last 3rd 2nd 1st
+596 1st 2nd 3rd Last 3rd 2nd 1st
+597 1st 2nd 3rd Last 3rd 2nd 1st
+598 1st 2nd 3rd Last 3rd 2nd 1st
+599 1st 2nd 3rd Last 3rd 2nd 1st
+600 1st 2nd 3rd Last 3rd 2nd 1st
+601 1st 2nd 3rd Last 3rd 2nd 1st
+602 1st 2nd 3rd Last 3rd 2nd 1st
+603 1st 2nd 3rd Last 3rd 2nd 1st
+604 1st 2nd 3rd Last 3rd 2nd 1st
+605 1st 2nd 3rd Last 3rd 2nd 1st
+606 1st 2nd 3rd Last 3rd 2nd 1st
+607 1st 2nd 3rd Last 3rd 2nd 1st
+608 1st 2nd 3rd Last 3rd 2nd 1st
+609 1st 2nd 3rd Last 3rd 2nd 1st
+610 1st 2nd 3rd Last 3rd 2nd 1st
+611 1st 2nd 3rd Last 3rd 2nd 1st
+612 1st 2nd 3rd Last 3rd 2nd 1st
+613 1st 2nd 3rd Last 3rd 2nd 1st
+614 1st 2nd 3rd Last 3rd 2nd 1st
+615 1st 2nd 3rd Last 3rd 2nd 1st
+616 1st 2nd 3rd Last 3rd 2nd 1st
+617 1st 2nd 3rd Last 3rd 2nd 1st
+618 1st 2nd 3rd Last 3rd 2nd 1st
+619 1st 2nd 3rd Last 3rd 2nd 1st
+620 1st 2nd 3rd Last 3rd 2nd 1st
+621 1st 2nd 3rd Last 3rd 2nd 1st
+622 1st 2nd 3rd Last 3rd 2nd 1st
+623 1st 2nd 3rd Last 3rd 2nd 1st
+624 1st 2nd 3rd Last 3rd 2nd 1st
+625 1st 2nd 3rd Last 3rd 2nd 1st
+626 1st 2nd 3rd Last 3rd 2nd 1st
+627 1st 2nd 3rd Last 3rd 2nd 1st
+628 1st 2nd 3rd Last 3rd 2nd 1st
+629 1st 2nd 3rd Last 3rd 2nd 1st
+630 1st 2nd 3rd Last 3rd 2nd 1st
+631 1st 2nd 3rd Last 3rd 2nd 1st
+632 1st 2nd 3rd Last 3rd 2nd 1st
+633 1st 2nd 3rd Last 3rd 2nd 1st
+634 1st 2nd 3rd Last 3rd 2nd 1st
+635 1st 2nd 3rd Last 3rd 2nd 1st
+636 1st 2nd 3rd Last 3rd 2nd 1st
+637 1st 2nd 3rd Last 3rd 2nd 1st
+638 1st 2nd 3rd Last 3rd 2nd 1st
+639 1st 2nd 3rd Last 3rd 2nd 1st
+640 1st 2nd 3rd Last 3rd 2nd 1st
+641 1st 2nd 3rd Last 3rd 2nd 1st
+642 1st 2nd 3rd Last 3rd 2nd 1st
+643 1st 2nd 3rd Last 3rd 2nd 1st
+644 1st 2nd 3rd Last 3rd 2nd 1st
+645 1st 2nd 3rd Last 3rd 2nd 1st
+646 1st 2nd 3rd Last 3rd 2nd 1st
+647 1st 2nd 3rd Last 3rd 2nd 1st
+648 1st 2nd 3rd Last 3rd 2nd 1st
+649 1st 2nd 3rd Last 3rd 2nd 1st
+650 1st 2nd 3rd Last 3rd 2nd 1st
+651 1st 2nd 3rd Last 3rd 2nd 1st
+652 1st 2nd 3rd Last 3rd 2nd 1st
+653 1st 2nd 3rd Last 3rd 2nd 1st
+654 1st 2nd 3rd Last 3rd 2nd 1st
+655 1st 2nd 3rd Last 3rd 2nd 1st
+656 1st 2nd 3rd Last 3rd 2nd 1st
+657 1st 2nd 3rd Last 3rd 2nd 1st
+658 1st 2nd 3rd Last 3rd 2nd 1st
+659 1st 2nd 3rd Last 3rd 2nd 1st
+660 1st 2nd 3rd Last 3rd 2nd 1st
+661 1st 2nd 3rd Last 3rd 2nd 1st
+662 1st 2nd 3rd Last 3rd 2nd 1st
+663 1st 2nd 3rd Last 3rd 2nd 1st
+664 1st 2nd 3rd Last 3rd 2nd 1st
+665 1st 2nd 3rd Last 3rd 2nd 1st
+666 1st 2nd 3rd Last 3rd 2nd 1st
+667 1st 2nd 3rd Last 3rd 2nd 1st
+668 1st 2nd 3rd Last 3rd 2nd 1st
+669 1st 2nd 3rd Last 3rd 2nd 1st
+670 1st 2nd 3rd Last 3rd 2nd 1st
+671 1st 2nd 3rd Last 3rd 2nd 1st
+672 1st 2nd 3rd Last 3rd 2nd 1st
+673 1st 2nd 3rd Last 3rd 2nd 1st
+674 1st 2nd 3rd Last 3rd 2nd 1st
+675 1st 2nd 3rd Last 3rd 2nd 1st
+676 1st 2nd 3rd Last 3rd 2nd 1st
+677 1st 2nd 3rd Last 3rd 2nd 1st
+678 1st 2nd 3rd Last 3rd 2nd 1st
+679 1st 2nd 3rd Last 3rd 2nd 1st
+680 1st 2nd 3rd Last 3rd 2nd 1st
+681 1st 2nd 3rd Last 3rd 2nd 1st
+682 1st 2nd 3rd Last 3rd 2nd 1st
+683 1st 2nd 3rd Last 3rd 2nd 1st
+684 1st 2nd 3rd Last 3rd 2nd 1st
+685 1st 2nd 3rd Last 3rd 2nd 1st
+686 1st 2nd 3rd Last 3rd 2nd 1st
+687 1st 2nd 3rd Last 3rd 2nd 1st
+688 1st 2nd 3rd Last 3rd 2nd 1st
+689 1st 2nd 3rd Last 3rd 2nd 1st
+690 1st 2nd 3rd Last 3rd 2nd 1st
+691 1st 2nd 3rd Last 3rd 2nd 1st
+692 1st 2nd 3rd Last 3rd 2nd 1st
+693 1st 2nd 3rd Last 3rd 2nd 1st
+694 1st 2nd 3rd Last 3rd 2nd 1st
+695 1st 2nd 3rd Last 3rd 2nd 1st
+696 1st 2nd 3rd Last 3rd 2nd 1st
+697 1st 2nd 3rd Last 3rd 2nd 1st
+698 1st 2nd 3rd Last 3rd 2nd 1st
+699 1st 2nd 3rd Last 3rd 2nd 1st
+700 1st 2nd 3rd Last 3rd 2nd 1st
+701 1st 2nd 3rd Last 3rd 2nd 1st
+702 1st 2nd 3rd Last 3rd 2nd 1st
+703 1st 2nd 3rd Last 3rd 2nd 1st
+704 1st 2nd 3rd Last 3rd 2nd 1st
+705 1st 2nd 3rd Last 3rd 2nd 1st
+706 1st 2nd 3rd Last 3rd 2nd 1st
+707 1st 2nd 3rd Last 3rd 2nd 1st
+708 1st 2nd 3rd Last 3rd 2nd 1st
+709 1st 2nd 3rd Last 3rd 2nd 1st
+710 1st 2nd 3rd Last 3rd 2nd 1st
+711 1st 2nd 3rd Last 3rd 2nd 1st
+712 1st 2nd 3rd Last 3rd 2nd 1st
+713 1st 2nd 3rd Last 3rd 2nd 1st
+714 1st 2nd 3rd Last 3rd 2nd 1st
+715 1st 2nd 3rd Last 3rd 2nd 1st
+716 1st 2nd 3rd Last 3rd 2nd 1st
+717 1st 2nd 3rd Last 3rd 2nd 1st
+718 1st 2nd 3rd Last 3rd 2nd 1st
+719 1st 2nd 3rd Last 3rd 2nd 1st
+720 1st 2nd 3rd Last 3rd 2nd 1st
+721 1st 2nd 3rd Last 3rd 2nd 1st
+722 1st 2nd 3rd Last 3rd 2nd 1st
+723 1st 2nd 3rd Last 3rd 2nd 1st
+724 1st 2nd 3rd Last 3rd 2nd 1st
+725 1st 2nd 3rd Last 3rd 2nd 1st
+726 1st 2nd 3rd Last 3rd 2nd 1st
+727 1st 2nd 3rd Last 3rd 2nd 1st
+728 1st 2nd 3rd Last 3rd 2nd 1st
+729 1st 2nd 3rd Last 3rd 2nd 1st
+730 1st 2nd 3rd Last 3rd 2nd 1st
+731 1st 2nd 3rd Last 3rd 2nd 1st
+732 1st 2nd 3rd Last 3rd 2nd 1st
+733 1st 2nd 3rd Last 3rd 2nd 1st
+734 1st 2nd 3rd Last 3rd 2nd 1st
+735 1st 2nd 3rd Last 3rd 2nd 1st
+736 1st 2nd 3rd Last 3rd 2nd 1st
+737 1st 2nd 3rd Last 3rd 2nd 1st
+738 1st 2nd 3rd Last 3rd 2nd 1st
+739 1st 2nd 3rd Last 3rd 2nd 1st
+740 1st 2nd 3rd Last 3rd 2nd 1st
+741 1st 2nd 3rd Last 3rd 2nd 1st
+742 1st 2nd 3rd Last 3rd 2nd 1st
+743 1st 2nd 3rd Last 3rd 2nd 1st
+744 1st 2nd 3rd Last 3rd 2nd 1st
+745 1st 2nd 3rd Last 3rd 2nd 1st
+746 1st 2nd 3rd Last 3rd 2nd 1st
+747 1st 2nd 3rd Last 3rd 2nd 1st
+748 1st 2nd 3rd Last 3rd 2nd 1st
+749 1st 2nd 3rd Last 3rd 2nd 1st
+750 1st 2nd 3rd Last 3rd 2nd 1st
+751 1st 2nd 3rd Last 3rd 2nd 1st
+752 1st 2nd 3rd Last 3rd 2nd 1st
+753 1st 2nd 3rd Last 3rd 2nd 1st
+754 1st 2nd 3rd Last 3rd 2nd 1st
+755 1st 2nd 3rd Last 3rd 2nd 1st
+756 1st 2nd 3rd Last 3rd 2nd 1st
+757 1st 2nd 3rd Last 3rd 2nd 1st
+758 1st 2nd 3rd Last 3rd 2nd 1st
+759 1st 2nd 3rd Last 3rd 2nd 1st
+760 1st 2nd 3rd Last 3rd 2nd 1st
+761 1st 2nd 3rd Last 3rd 2nd 1st
+762 1st 2nd 3rd Last 3rd 2nd 1st
+763 1st 2nd 3rd Last 3rd 2nd 1st
+764 1st 2nd 3rd Last 3rd 2nd 1st
+765 1st 2nd 3rd Last 3rd 2nd 1st
+766 1st 2nd 3rd Last 3rd 2nd 1st
+767 1st 2nd 3rd Last 3rd 2nd 1st
+768 1st 2nd 3rd Last 3rd 2nd 1st
+769 1st 2nd 3rd Last 3rd 2nd 1st
+770 1st 2nd 3rd Last 3rd 2nd 1st
+771 1st 2nd 3rd Last 3rd 2nd 1st
+772 1st 2nd 3rd Last 3rd 2nd 1st
+773 1st 2nd 3rd Last 3rd 2nd 1st
+774 1st 2nd 3rd Last 3rd 2nd 1st
+775 1st 2nd 3rd Last 3rd 2nd 1st
+776 1st 2nd 3rd Last 3rd 2nd 1st
+777 1st 2nd 3rd Last 3rd 2nd 1st
+778 1st 2nd 3rd Last 3rd 2nd 1st
+779 1st 2nd 3rd Last 3rd 2nd 1st
+780 1st 2nd 3rd Last 3rd 2nd 1st
+781 1st 2nd 3rd Last 3rd 2nd 1st
+782 1st 2nd 3rd Last 3rd 2nd 1st
+783 1st 2nd 3rd Last 3rd 2nd 1st
+784 1st 2nd 3rd Last 3rd 2nd 1st
+785 1st 2nd 3rd Last 3rd 2nd 1st
+786 1st 2nd 3rd Last 3rd 2nd 1st
+787 1st 2nd 3rd Last 3rd 2nd 1st
+788 1st 2nd 3rd Last 3rd 2nd 1st
+789 1st 2nd 3rd Last 3rd 2nd 1st
+790 1st 2nd 3rd Last 3rd 2nd 1st
+791 1st 2nd 3rd Last 3rd 2nd 1st
+792 1st 2nd 3rd Last 3rd 2nd 1st
+793 1st 2nd 3rd Last 3rd 2nd 1st
+794 1st 2nd 3rd Last 3rd 2nd 1st
+795 1st 2nd 3rd Last 3rd 2nd 1st
+796 1st 2nd 3rd Last 3rd 2nd 1st
+797 1st 2nd 3rd Last 3rd 2nd 1st
+798 1st 2nd 3rd Last 3rd 2nd 1st
+799 1st 2nd 3rd Last 3rd 2nd 1st
+800 1st 2nd 3rd Last 3rd 2nd 1st
+801 1st 2nd 3rd Last 3rd 2nd 1st
+802 1st 2nd 3rd Last 3rd 2nd 1st
+803 1st 2nd 3rd Last 3rd 2nd 1st
+804 1st 2nd 3rd Last 3rd 2nd 1st
+805 1st 2nd 3rd Last 3rd 2nd 1st
+806 1st 2nd 3rd Last 3rd 2nd 1st
+807 1st 2nd 3rd Last 3rd 2nd 1st
+808 1st 2nd 3rd Last 3rd 2nd 1st
+809 1st 2nd 3rd Last 3rd 2nd 1st
+810 1st 2nd 3rd Last 3rd 2nd 1st
+811 1st 2nd 3rd Last 3rd 2nd 1st
+812 1st 2nd 3rd Last 3rd 2nd 1st
+813 1st 2nd 3rd Last 3rd 2nd 1st
+814 1st 2nd 3rd Last 3rd 2nd 1st
+815 1st 2nd 3rd Last 3rd 2nd 1st
+816 1st 2nd 3rd Last 3rd 2nd 1st
+817 1st 2nd 3rd Last 3rd 2nd 1st
+818 1st 2nd 3rd Last 3rd 2nd 1st
+819 1st 2nd 3rd Last 3rd 2nd 1st
+820 1st 2nd 3rd Last 3rd 2nd 1st
+821 1st 2nd 3rd Last 3rd 2nd 1st
+822 1st 2nd 3rd Last 3rd 2nd 1st
+823 1st 2nd 3rd Last 3rd 2nd 1st
+824 1st 2nd 3rd Last 3rd 2nd 1st
+825 1st 2nd 3rd Last 3rd 2nd 1st
+826 1st 2nd 3rd Last 3rd 2nd 1st
+827 1st 2nd 3rd Last 3rd 2nd 1st
+828 1st 2nd 3rd Last 3rd 2nd 1st
+829 1st 2nd 3rd Last 3rd 2nd 1st
+830 1st 2nd 3rd Last 3rd 2nd 1st
+831 1st 2nd 3rd Last 3rd 2nd 1st
+832 1st 2nd 3rd Last 3rd 2nd 1st
+833 1st 2nd 3rd Last 3rd 2nd 1st
+834 1st 2nd 3rd Last 3rd 2nd 1st
+835 1st 2nd 3rd Last 3rd 2nd 1st
+836 1st 2nd 3rd Last 3rd 2nd 1st
+837 1st 2nd 3rd Last 3rd 2nd 1st
+838 1st 2nd 3rd Last 3rd 2nd 1st
+839 1st 2nd 3rd Last 3rd 2nd 1st
+840 1st 2nd 3rd Last 3rd 2nd 1st
+841 1st 2nd 3rd Last 3rd 2nd 1st
+842 1st 2nd 3rd Last 3rd 2nd 1st
+843 1st 2nd 3rd Last 3rd 2nd 1st
+844 1st 2nd 3rd Last 3rd 2nd 1st
+845 1st 2nd 3rd Last 3rd 2nd 1st
+846 1st 2nd 3rd Last 3rd 2nd 1st
+847 1st 2nd 3rd Last 3rd 2nd 1st
+848 1st 2nd 3rd Last 3rd 2nd 1st
+849 1st 2nd 3rd Last 3rd 2nd 1st
+850 1st 2nd 3rd Last 3rd 2nd 1st
+851 1st 2nd 3rd Last 3rd 2nd 1st
+852 1st 2nd 3rd Last 3rd 2nd 1st
+853 1st 2nd 3rd Last 3rd 2nd 1st
+854 1st 2nd 3rd Last 3rd 2nd 1st
+855 1st 2nd 3rd Last 3rd 2nd 1st
+856 1st 2nd 3rd Last 3rd 2nd 1st
+857 1st 2nd 3rd Last 3rd 2nd 1st
+858 1st 2nd 3rd Last 3rd 2nd 1st
+859 1st 2nd 3rd Last 3rd 2nd 1st
+860 1st 2nd 3rd Last 3rd 2nd 1st
+861 1st 2nd 3rd Last 3rd 2nd 1st
+862 1st 2nd 3rd Last 3rd 2nd 1st
+863 1st 2nd 3rd Last 3rd 2nd 1st
+864 1st 2nd 3rd Last 3rd 2nd 1st
+865 1st 2nd 3rd Last 3rd 2nd 1st
+866 1st 2nd 3rd Last 3rd 2nd 1st
+867 1st 2nd 3rd Last 3rd 2nd 1st
+868 1st 2nd 3rd Last 3rd 2nd 1st
+869 1st 2nd 3rd Last 3rd 2nd 1st
+870 1st 2nd 3rd Last 3rd 2nd 1st
+871 1st 2nd 3rd Last 3rd 2nd 1st
+872 1st 2nd 3rd Last 3rd 2nd 1st
+873 1st 2nd 3rd Last 3rd 2nd 1st
+874 1st 2nd 3rd Last 3rd 2nd 1st
+875 1st 2nd 3rd Last 3rd 2nd 1st
+876 1st 2nd 3rd Last 3rd 2nd 1st
+877 1st 2nd 3rd Last 3rd 2nd 1st
+878 1st 2nd 3rd Last 3rd 2nd 1st
+879 1st 2nd 3rd Last 3rd 2nd 1st
+880 1st 2nd 3rd Last 3rd 2nd 1st
+881 1st 2nd 3rd Last 3rd 2nd 1st
+882 1st 2nd 3rd Last 3rd 2nd 1st
+883 1st 2nd 3rd Last 3rd 2nd 1st
+884 1st 2nd 3rd Last 3rd 2nd 1st
+885 1st 2nd 3rd Last 3rd 2nd 1st
+886 1st 2nd 3rd Last 3rd 2nd 1st
+887 1st 2nd 3rd Last 3rd 2nd 1st
+888 1st 2nd 3rd Last 3rd 2nd 1st
+889 1st 2nd 3rd Last 3rd 2nd 1st
+890 1st 2nd 3rd Last 3rd 2nd 1st
+891 1st 2nd 3rd Last 3rd 2nd 1st
+892 1st 2nd 3rd Last 3rd 2nd 1st
+893 1st 2nd 3rd Last 3rd 2nd 1st
+894 1st 2nd 3rd Last 3rd 2nd 1st
+895 1st 2nd 3rd Last 3rd 2nd 1st
+896 1st 2nd 3rd Last 3rd 2nd 1st
+897 1st 2nd 3rd Last 3rd 2nd 1st
+898 1st 2nd 3rd Last 3rd 2nd 1st
+899 1st 2nd 3rd Last 3rd 2nd 1st
+900 1st 2nd 3rd Last 3rd 2nd 1st
+901 1st 2nd 3rd Last 3rd 2nd 1st
+902 1st 2nd 3rd Last 3rd 2nd 1st
+903 1st 2nd 3rd Last 3rd 2nd 1st
+904 1st 2nd 3rd Last 3rd 2nd 1st
+905 1st 2nd 3rd Last 3rd 2nd 1st
+906 1st 2nd 3rd Last 3rd 2nd 1st
+907 1st 2nd 3rd Last 3rd 2nd 1st
+908 1st 2nd 3rd Last 3rd 2nd 1st
+909 1st 2nd 3rd Last 3rd 2nd 1st
+910 1st 2nd 3rd Last 3rd 2nd 1st
+911 1st 2nd 3rd Last 3rd 2nd 1st
+912 1st 2nd 3rd Last 3rd 2nd 1st
+913 1st 2nd 3rd Last 3rd 2nd 1st
+914 1st 2nd 3rd Last 3rd 2nd 1st
+915 1st 2nd 3rd Last 3rd 2nd 1st
+916 1st 2nd 3rd Last 3rd 2nd 1st
+917 1st 2nd 3rd Last 3rd 2nd 1st
+918 1st 2nd 3rd Last 3rd 2nd 1st
+919 1st 2nd 3rd Last 3rd 2nd 1st
+920 1st 2nd 3rd Last 3rd 2nd 1st
+921 1st 2nd 3rd Last 3rd 2nd 1st
+922 1st 2nd 3rd Last 3rd 2nd 1st
+923 1st 2nd 3rd Last 3rd 2nd 1st
+924 1st 2nd 3rd Last 3rd 2nd 1st
+925 1st 2nd 3rd Last 3rd 2nd 1st
+926 1st 2nd 3rd Last 3rd 2nd 1st
+927 1st 2nd 3rd Last 3rd 2nd 1st
+928 1st 2nd 3rd Last 3rd 2nd 1st
+929 1st 2nd 3rd Last 3rd 2nd 1st
+930 1st 2nd 3rd Last 3rd 2nd 1st
+931 1st 2nd 3rd Last 3rd 2nd 1st
+932 1st 2nd 3rd Last 3rd 2nd 1st
+933 1st 2nd 3rd Last 3rd 2nd 1st
+934 1st 2nd 3rd Last 3rd 2nd 1st
+935 1st 2nd 3rd Last 3rd 2nd 1st
+936 1st 2nd 3rd Last 3rd 2nd 1st
+937 1st 2nd 3rd Last 3rd 2nd 1st
+938 1st 2nd 3rd Last 3rd 2nd 1st
+939 1st 2nd 3rd Last 3rd 2nd 1st
+940 1st 2nd 3rd Last 3rd 2nd 1st
+941 1st 2nd 3rd Last 3rd 2nd 1st
+942 1st 2nd 3rd Last 3rd 2nd 1st
+943 1st 2nd 3rd Last 3rd 2nd 1st
+944 1st 2nd 3rd Last 3rd 2nd 1st
+945 1st 2nd 3rd Last 3rd 2nd 1st
+946 1st 2nd 3rd Last 3rd 2nd 1st
+947 1st 2nd 3rd Last 3rd 2nd 1st
+948 1st 2nd 3rd Last 3rd 2nd 1st
+949 1st 2nd 3rd Last 3rd 2nd 1st
+950 1st 2nd 3rd Last 3rd 2nd 1st
+951 1st 2nd 3rd Last 3rd 2nd 1st
+952 1st 2nd 3rd Last 3rd 2nd 1st
+953 1st 2nd 3rd Last 3rd 2nd 1st
+954 1st 2nd 3rd Last 3rd 2nd 1st
+955 1st 2nd 3rd Last 3rd 2nd 1st
+956 1st 2nd 3rd Last 3rd 2nd 1st
+957 1st 2nd 3rd Last 3rd 2nd 1st
+958 1st 2nd 3rd Last 3rd 2nd 1st
+959 1st 2nd 3rd Last 3rd 2nd 1st
+960 1st 2nd 3rd Last 3rd 2nd 1st
+961 1st 2nd 3rd Last 3rd 2nd 1st
+962 1st 2nd 3rd Last 3rd 2nd 1st
+963 1st 2nd 3rd Last 3rd 2nd 1st
+964 1st 2nd 3rd Last 3rd 2nd 1st
+965 1st 2nd 3rd Last 3rd 2nd 1st
+966 1st 2nd 3rd Last 3rd 2nd 1st
+967 1st 2nd 3rd Last 3rd 2nd 1st
+968 1st 2nd 3rd Last 3rd 2nd 1st
+969 1st 2nd 3rd Last 3rd 2nd 1st
+970 1st 2nd 3rd Last 3rd 2nd 1st
+971 1st 2nd 3rd Last 3rd 2nd 1st
+972 1st 2nd 3rd Last 3rd 2nd 1st
+973 1st 2nd 3rd Last 3rd 2nd 1st
+974 1st 2nd 3rd Last 3rd 2nd 1st
+975 1st 2nd 3rd Last 3rd 2nd 1st
+976 1st 2nd 3rd Last 3rd 2nd 1st
+977 1st 2nd 3rd Last 3rd 2nd 1st
+978 1st 2nd 3rd Last 3rd 2nd 1st
+979 1st 2nd 3rd Last 3rd 2nd 1st
+980 1st 2nd 3rd Last 3rd 2nd 1st
+981 1st 2nd 3rd Last 3rd 2nd 1st
+982 1st 2nd 3rd Last 3rd 2nd 1st
+983 1st 2nd 3rd Last 3rd 2nd 1st
+984 1st 2nd 3rd Last 3rd 2nd 1st
+985 1st 2nd 3rd Last 3rd 2nd 1st
+986 1st 2nd 3rd Last 3rd 2nd 1st
+987 1st 2nd 3rd Last 3rd 2nd 1st
+988 1st 2nd 3rd Last 3rd 2nd 1st
+989 1st 2nd 3rd Last 3rd 2nd 1st
+990 1st 2nd 3rd Last 3rd 2nd 1st
+991 1st 2nd 3rd Last 3rd 2nd 1st
+992 1st 2nd 3rd Last 3rd 2nd 1st
+993 1st 2nd 3rd Last 3rd 2nd 1st
+994 1st 2nd 3rd Last 3rd 2nd 1st
+995 1st 2nd 3rd Last 3rd 2nd 1st
+996 1st 2nd 3rd Last 3rd 2nd 1st
+997 1st 2nd 3rd Last 3rd 2nd 1st
+998 1st 2nd 3rd Last 3rd 2nd 1st
+999 1st 2nd 3rd Last 3rd 2nd 1st
+1000 1st 2nd 3rd Last 3rd 2nd 1st
+1001 1st 2nd 3rd Last 3rd 2nd 1st
+1002 1st 2nd 3rd Last 3rd 2nd 1st
+1003 1st 2nd 3rd Last 3rd 2nd 1st
+1004 1st 2nd 3rd Last 3rd 2nd 1st
+1005 1st 2nd 3rd Last 3rd 2nd 1st
+1006 1st 2nd 3rd Last 3rd 2nd 1st
+1007 1st 2nd 3rd Last 3rd 2nd 1st
+1008 1st 2nd 3rd Last 3rd 2nd 1st
+1009 1st 2nd 3rd Last 3rd 2nd 1st
+1010 1st 2nd 3rd Last 3rd 2nd 1st
+1011 1st 2nd 3rd Last 3rd 2nd 1st
+1012 1st 2nd 3rd Last 3rd 2nd 1st
+1013 1st 2nd 3rd Last 3rd 2nd 1st
+1014 1st 2nd 3rd Last 3rd 2nd 1st
+1015 1st 2nd 3rd Last 3rd 2nd 1st
+1016 1st 2nd 3rd Last 3rd 2nd 1st
+1017 1st 2nd 3rd Last 3rd 2nd 1st
+1018 1st 2nd 3rd Last 3rd 2nd 1st
+1019 1st 2nd 3rd Last 3rd 2nd 1st
+1020 1st 2nd 3rd Last 3rd 2nd 1st
+1021 1st 2nd 3rd Last 3rd 2nd 1st
+1022 1st 2nd 3rd Last 3rd 2nd 1st
+1023 1st 2nd 3rd Last 3rd 2nd 1st
+1024 1st 2nd 3rd Last 3rd 2nd 1st
+1025 1st 2nd 3rd Last 3rd 2nd 1st
+1026 1st 2nd 3rd Last 3rd 2nd 1st
+1027 1st 2nd 3rd Last 3rd 2nd 1st
+1028 1st 2nd 3rd Last 3rd 2nd 1st
+1029 1st 2nd 3rd Last 3rd 2nd 1st
+1030 1st 2nd 3rd Last 3rd 2nd 1st
+1031 1st 2nd 3rd Last 3rd 2nd 1st
+1032 1st 2nd 3rd Last 3rd 2nd 1st
+1033 1st 2nd 3rd Last 3rd 2nd 1st
+1034 1st 2nd 3rd Last 3rd 2nd 1st
+1035 1st 2nd 3rd Last 3rd 2nd 1st
+1036 1st 2nd 3rd Last 3rd 2nd 1st
+1037 1st 2nd 3rd Last 3rd 2nd 1st
+1038 1st 2nd 3rd Last 3rd 2nd 1st
+1039 1st 2nd 3rd Last 3rd 2nd 1st
+1040 1st 2nd 3rd Last 3rd 2nd 1st
+1041 1st 2nd 3rd Last 3rd 2nd 1st
+1042 1st 2nd 3rd Last 3rd 2nd 1st
+1043 1st 2nd 3rd Last 3rd 2nd 1st
+1044 1st 2nd 3rd Last 3rd 2nd 1st
+1045 1st 2nd 3rd Last 3rd 2nd 1st
+1046 1st 2nd 3rd Last 3rd 2nd 1st
+1047 1st 2nd 3rd Last 3rd 2nd 1st
+1048 1st 2nd 3rd Last 3rd 2nd 1st
+1049 1st 2nd 3rd Last 3rd 2nd 1st
+1050 1st 2nd 3rd Last 3rd 2nd 1st
+1051 1st 2nd 3rd Last 3rd 2nd 1st
+1052 1st 2nd 3rd Last 3rd 2nd 1st
+1053 1st 2nd 3rd Last 3rd 2nd 1st
+1054 1st 2nd 3rd Last 3rd 2nd 1st
+1055 1st 2nd 3rd Last 3rd 2nd 1st
+1056 1st 2nd 3rd Last 3rd 2nd 1st
+1057 1st 2nd 3rd Last 3rd 2nd 1st
+1058 1st 2nd 3rd Last 3rd 2nd 1st
+1059 1st 2nd 3rd Last 3rd 2nd 1st
+1060 1st 2nd 3rd Last 3rd 2nd 1st
+1061 1st 2nd 3rd Last 3rd 2nd 1st
+1062 1st 2nd 3rd Last 3rd 2nd 1st
+1063 1st 2nd 3rd Last 3rd 2nd 1st
+1064 1st 2nd 3rd Last 3rd 2nd 1st
+1065 1st 2nd 3rd Last 3rd 2nd 1st
+1066 1st 2nd 3rd Last 3rd 2nd 1st
+1067 1st 2nd 3rd Last 3rd 2nd 1st
+1068 1st 2nd 3rd Last 3rd 2nd 1st
+1069 1st 2nd 3rd Last 3rd 2nd 1st
+1070 1st 2nd 3rd Last 3rd 2nd 1st
+1071 1st 2nd 3rd Last 3rd 2nd 1st
+1072 1st 2nd 3rd Last 3rd 2nd 1st
+1073 1st 2nd 3rd Last 3rd 2nd 1st
+1074 1st 2nd 3rd Last 3rd 2nd 1st
+1075 1st 2nd 3rd Last 3rd 2nd 1st
+1076 1st 2nd 3rd Last 3rd 2nd 1st
+1077 1st 2nd 3rd Last 3rd 2nd 1st
+1078 1st 2nd 3rd Last 3rd 2nd 1st
+1079 1st 2nd 3rd Last 3rd 2nd 1st
+1080 1st 2nd 3rd Last 3rd 2nd 1st
+1081 1st 2nd 3rd Last 3rd 2nd 1st
+1082 1st 2nd 3rd Last 3rd 2nd 1st
+1083 1st 2nd 3rd Last 3rd 2nd 1st
+1084 1st 2nd 3rd Last 3rd 2nd 1st
+1085 1st 2nd 3rd Last 3rd 2nd 1st
+1086 1st 2nd 3rd Last 3rd 2nd 1st
+1087 1st 2nd 3rd Last 3rd 2nd 1st
+1088 1st 2nd 3rd Last 3rd 2nd 1st
+1089 1st 2nd 3rd Last 3rd 2nd 1st
+1090 1st 2nd 3rd Last 3rd 2nd 1st
+1091 1st 2nd 3rd Last 3rd 2nd 1st
+1092 1st 2nd 3rd Last 3rd 2nd 1st
+1093 1st 2nd 3rd Last 3rd 2nd 1st
+1094 1st 2nd 3rd Last 3rd 2nd 1st
+1095 1st 2nd 3rd Last 3rd 2nd 1st
+1096 1st 2nd 3rd Last 3rd 2nd 1st
+1097 1st 2nd 3rd Last 3rd 2nd 1st
+1098 1st 2nd 3rd Last 3rd 2nd 1st
+1099 1st 2nd 3rd Last 3rd 2nd 1st
+1100 1st 2nd 3rd Last 3rd 2nd 1st
+1101 1st 2nd 3rd Last 3rd 2nd 1st
+1102 1st 2nd 3rd Last 3rd 2nd 1st
+1103 1st 2nd 3rd Last 3rd 2nd 1st
+1104 1st 2nd 3rd Last 3rd 2nd 1st
+1105 1st 2nd 3rd Last 3rd 2nd 1st
+1106 1st 2nd 3rd Last 3rd 2nd 1st
+1107 1st 2nd 3rd Last 3rd 2nd 1st
+1108 1st 2nd 3rd Last 3rd 2nd 1st
+1109 1st 2nd 3rd Last 3rd 2nd 1st
+1110 1st 2nd 3rd Last 3rd 2nd 1st
+1111 1st 2nd 3rd Last 3rd 2nd 1st
+1112 1st 2nd 3rd Last 3rd 2nd 1st
+1113 1st 2nd 3rd Last 3rd 2nd 1st
+1114 1st 2nd 3rd Last 3rd 2nd 1st
+1115 1st 2nd 3rd Last 3rd 2nd 1st
+1116 1st 2nd 3rd Last 3rd 2nd 1st
+1117 1st 2nd 3rd Last 3rd 2nd 1st
+1118 1st 2nd 3rd Last 3rd 2nd 1st
+1119 1st 2nd 3rd Last 3rd 2nd 1st
+1120 1st 2nd 3rd Last 3rd 2nd 1st
+1121 1st 2nd 3rd Last 3rd 2nd 1st
+1122 1st 2nd 3rd Last 3rd 2nd 1st
+1123 1st 2nd 3rd Last 3rd 2nd 1st
+1124 1st 2nd 3rd Last 3rd 2nd 1st
+1125 1st 2nd 3rd Last 3rd 2nd 1st
+1126 1st 2nd 3rd Last 3rd 2nd 1st
+1127 1st 2nd 3rd Last 3rd 2nd 1st
+1128 1st 2nd 3rd Last 3rd 2nd 1st
+1129 1st 2nd 3rd Last 3rd 2nd 1st
+1130 1st 2nd 3rd Last 3rd 2nd 1st
+1131 1st 2nd 3rd Last 3rd 2nd 1st
+1132 1st 2nd 3rd Last 3rd 2nd 1st
+1133 1st 2nd 3rd Last 3rd 2nd 1st
+1134 1st 2nd 3rd Last 3rd 2nd 1st
+1135 1st 2nd 3rd Last 3rd 2nd 1st
+1136 1st 2nd 3rd Last 3rd 2nd 1st
+1137 1st 2nd 3rd Last 3rd 2nd 1st
+1138 1st 2nd 3rd Last 3rd 2nd 1st
+1139 1st 2nd 3rd Last 3rd 2nd 1st
+1140 1st 2nd 3rd Last 3rd 2nd 1st
+1141 1st 2nd 3rd Last 3rd 2nd 1st
+1142 1st 2nd 3rd Last 3rd 2nd 1st
+1143 1st 2nd 3rd Last 3rd 2nd 1st
+1144 1st 2nd 3rd Last 3rd 2nd 1st
+1145 1st 2nd 3rd Last 3rd 2nd 1st
+1146 1st 2nd 3rd Last 3rd 2nd 1st
+1147 1st 2nd 3rd Last 3rd 2nd 1st
+1148 1st 2nd 3rd Last 3rd 2nd 1st
+1149 1st 2nd 3rd Last 3rd 2nd 1st
+1150 1st 2nd 3rd Last 3rd 2nd 1st
+1151 1st 2nd 3rd Last 3rd 2nd 1st
+1152 1st 2nd 3rd Last 3rd 2nd 1st
+1153 1st 2nd 3rd Last 3rd 2nd 1st
+1154 1st 2nd 3rd Last 3rd 2nd 1st
+1155 1st 2nd 3rd Last 3rd 2nd 1st
+1156 1st 2nd 3rd Last 3rd 2nd 1st
+1157 1st 2nd 3rd Last 3rd 2nd 1st
+1158 1st 2nd 3rd Last 3rd 2nd 1st
+1159 1st 2nd 3rd Last 3rd 2nd 1st
+1160 1st 2nd 3rd Last 3rd 2nd 1st
+1161 1st 2nd 3rd Last 3rd 2nd 1st
+1162 1st 2nd 3rd Last 3rd 2nd 1st
+1163 1st 2nd 3rd Last 3rd 2nd 1st
+1164 1st 2nd 3rd Last 3rd 2nd 1st
+1165 1st 2nd 3rd Last 3rd 2nd 1st
+1166 1st 2nd 3rd Last 3rd 2nd 1st
+1167 1st 2nd 3rd Last 3rd 2nd 1st
+1168 1st 2nd 3rd Last 3rd 2nd 1st
+1169 1st 2nd 3rd Last 3rd 2nd 1st
+1170 1st 2nd 3rd Last 3rd 2nd 1st
+1171 1st 2nd 3rd Last 3rd 2nd 1st
+1172 1st 2nd 3rd Last 3rd 2nd 1st
+1173 1st 2nd 3rd Last 3rd 2nd 1st
+1174 1st 2nd 3rd Last 3rd 2nd 1st
+1175 1st 2nd 3rd Last 3rd 2nd 1st
+1176 1st 2nd 3rd Last 3rd 2nd 1st
+1177 1st 2nd 3rd Last 3rd 2nd 1st
+1178 1st 2nd 3rd Last 3rd 2nd 1st
+1179 1st 2nd 3rd Last 3rd 2nd 1st
+1180 1st 2nd 3rd Last 3rd 2nd 1st
+1181 1st 2nd 3rd Last 3rd 2nd 1st
+1182 1st 2nd 3rd Last 3rd 2nd 1st
+1183 1st 2nd 3rd Last 3rd 2nd 1st
+1184 1st 2nd 3rd Last 3rd 2nd 1st
+1185 1st 2nd 3rd Last 3rd 2nd 1st
+1186 1st 2nd 3rd Last 3rd 2nd 1st
+1187 1st 2nd 3rd Last 3rd 2nd 1st
+1188 1st 2nd 3rd Last 3rd 2nd 1st
+1189 1st 2nd 3rd Last 3rd 2nd 1st
+1190 1st 2nd 3rd Last 3rd 2nd 1st
+1191 1st 2nd 3rd Last 3rd 2nd 1st
+1192 1st 2nd 3rd Last 3rd 2nd 1st
+1193 1st 2nd 3rd Last 3rd 2nd 1st
+1194 1st 2nd 3rd Last 3rd 2nd 1st
+1195 1st 2nd 3rd Last 3rd 2nd 1st
+1196 1st 2nd 3rd Last 3rd 2nd 1st
+1197 1st 2nd 3rd Last 3rd 2nd 1st
+1198 1st 2nd 3rd Last 3rd 2nd 1st
+1199 1st 2nd 3rd Last 3rd 2nd 1st
+1200 1st 2nd 3rd Last 3rd 2nd 1st
+1201 1st 2nd 3rd Last 3rd 2nd 1st
+1202 1st 2nd 3rd Last 3rd 2nd 1st
+1203 1st 2nd 3rd Last 3rd 2nd 1st
+1204 1st 2nd 3rd Last 3rd 2nd 1st
+1205 1st 2nd 3rd Last 3rd 2nd 1st
+1206 1st 2nd 3rd Last 3rd 2nd 1st
+1207 1st 2nd 3rd Last 3rd 2nd 1st
+1208 1st 2nd 3rd Last 3rd 2nd 1st
+1209 1st 2nd 3rd Last 3rd 2nd 1st
+1210 1st 2nd 3rd Last 3rd 2nd 1st
+1211 1st 2nd 3rd Last 3rd 2nd 1st
+1212 1st 2nd 3rd Last 3rd 2nd 1st
+1213 1st 2nd 3rd Last 3rd 2nd 1st
+1214 1st 2nd 3rd Last 3rd 2nd 1st
+1215 1st 2nd 3rd Last 3rd 2nd 1st
+1216 1st 2nd 3rd Last 3rd 2nd 1st
+1217 1st 2nd 3rd Last 3rd 2nd 1st
+1218 1st 2nd 3rd Last 3rd 2nd 1st
+1219 1st 2nd 3rd Last 3rd 2nd 1st
+1220 1st 2nd 3rd Last 3rd 2nd 1st
+1221 1st 2nd 3rd Last 3rd 2nd 1st
+1222 1st 2nd 3rd Last 3rd 2nd 1st
+1223 1st 2nd 3rd Last 3rd 2nd 1st
+1224 1st 2nd 3rd Last 3rd 2nd 1st
+1225 1st 2nd 3rd Last 3rd 2nd 1st
+1226 1st 2nd 3rd Last 3rd 2nd 1st
+1227 1st 2nd 3rd Last 3rd 2nd 1st
+1228 1st 2nd 3rd Last 3rd 2nd 1st
+1229 1st 2nd 3rd Last 3rd 2nd 1st
+1230 1st 2nd 3rd Last 3rd 2nd 1st
+1231 1st 2nd 3rd Last 3rd 2nd 1st
+1232 1st 2nd 3rd Last 3rd 2nd 1st
+1233 1st 2nd 3rd Last 3rd 2nd 1st
+1234 1st 2nd 3rd Last 3rd 2nd 1st
+1235 1st 2nd 3rd Last 3rd 2nd 1st
+1236 1st 2nd 3rd Last 3rd 2nd 1st
+1237 1st 2nd 3rd Last 3rd 2nd 1st
+1238 1st 2nd 3rd Last 3rd 2nd 1st
+1239 1st 2nd 3rd Last 3rd 2nd 1st
+1240 1st 2nd 3rd Last 3rd 2nd 1st
+1241 1st 2nd 3rd Last 3rd 2nd 1st
+1242 1st 2nd 3rd Last 3rd 2nd 1st
+1243 1st 2nd 3rd Last 3rd 2nd 1st
+1244 1st 2nd 3rd Last 3rd 2nd 1st
+1245 1st 2nd 3rd Last 3rd 2nd 1st
+1246 1st 2nd 3rd Last 3rd 2nd 1st
+1247 1st 2nd 3rd Last 3rd 2nd 1st
+1248 1st 2nd 3rd Last 3rd 2nd 1st
+1249 1st 2nd 3rd Last 3rd 2nd 1st
+1250 1st 2nd 3rd Last 3rd 2nd 1st
+1251 1st 2nd 3rd Last 3rd 2nd 1st
+1252 1st 2nd 3rd Last 3rd 2nd 1st
+1253 1st 2nd 3rd Last 3rd 2nd 1st
+1254 1st 2nd 3rd Last 3rd 2nd 1st
+1255 1st 2nd 3rd Last 3rd 2nd 1st
+1256 1st 2nd 3rd Last 3rd 2nd 1st
+1257 1st 2nd 3rd Last 3rd 2nd 1st
+1258 1st 2nd 3rd Last 3rd 2nd 1st
+1259 1st 2nd 3rd Last 3rd 2nd 1st
+1260 1st 2nd 3rd Last 3rd 2nd 1st
+1261 1st 2nd 3rd Last 3rd 2nd 1st
+1262 1st 2nd 3rd Last 3rd 2nd 1st
+1263 1st 2nd 3rd Last 3rd 2nd 1st
+1264 1st 2nd 3rd Last 3rd 2nd 1st
+1265 1st 2nd 3rd Last 3rd 2nd 1st
+1266 1st 2nd 3rd Last 3rd 2nd 1st
+1267 1st 2nd 3rd Last 3rd 2nd 1st
+1268 1st 2nd 3rd Last 3rd 2nd 1st
+1269 1st 2nd 3rd Last 3rd 2nd 1st
+1270 1st 2nd 3rd Last 3rd 2nd 1st
+1271 1st 2nd 3rd Last 3rd 2nd 1st
+1272 1st 2nd 3rd Last 3rd 2nd 1st
+1273 1st 2nd 3rd Last 3rd 2nd 1st
+1274 1st 2nd 3rd Last 3rd 2nd 1st
+1275 1st 2nd 3rd Last 3rd 2nd 1st
+1276 1st 2nd 3rd Last 3rd 2nd 1st
+1277 1st 2nd 3rd Last 3rd 2nd 1st
+1278 1st 2nd 3rd Last 3rd 2nd 1st
+1279 1st 2nd 3rd Last 3rd 2nd 1st
+1280 1st 2nd 3rd Last 3rd 2nd 1st
+1281 1st 2nd 3rd Last 3rd 2nd 1st
+1282 1st 2nd 3rd Last 3rd 2nd 1st
+1283 1st 2nd 3rd Last 3rd 2nd 1st
+1284 1st 2nd 3rd Last 3rd 2nd 1st
+1285 1st 2nd 3rd Last 3rd 2nd 1st
+1286 1st 2nd 3rd Last 3rd 2nd 1st
+1287 1st 2nd 3rd Last 3rd 2nd 1st
+1288 1st 2nd 3rd Last 3rd 2nd 1st
+1289 1st 2nd 3rd Last 3rd 2nd 1st
+1290 1st 2nd 3rd Last 3rd 2nd 1st
+1291 1st 2nd 3rd Last 3rd 2nd 1st
+1292 1st 2nd 3rd Last 3rd 2nd 1st
+1293 1st 2nd 3rd Last 3rd 2nd 1st
+1294 1st 2nd 3rd Last 3rd 2nd 1st
+1295 1st 2nd 3rd Last 3rd 2nd 1st
+1296 1st 2nd 3rd Last 3rd 2nd 1st
+1297 1st 2nd 3rd Last 3rd 2nd 1st
+1298 1st 2nd 3rd Last 3rd 2nd 1st
+1299 1st 2nd 3rd Last 3rd 2nd 1st
+1300 1st 2nd 3rd Last 3rd 2nd 1st
+1301 1st 2nd 3rd Last 3rd 2nd 1st
+1302 1st 2nd 3rd Last 3rd 2nd 1st
+1303 1st 2nd 3rd Last 3rd 2nd 1st
+1304 1st 2nd 3rd Last 3rd 2nd 1st
+1305 1st 2nd 3rd Last 3rd 2nd 1st
+1306 1st 2nd 3rd Last 3rd 2nd 1st
+1307 1st 2nd 3rd Last 3rd 2nd 1st
+1308 1st 2nd 3rd Last 3rd 2nd 1st
+1309 1st 2nd 3rd Last 3rd 2nd 1st
+1310 1st 2nd 3rd Last 3rd 2nd 1st
+1311 1st 2nd 3rd Last 3rd 2nd 1st
+1312 1st 2nd 3rd Last 3rd 2nd 1st
+1313 1st 2nd 3rd Last 3rd 2nd 1st
+1314 1st 2nd 3rd Last 3rd 2nd 1st
+1315 1st 2nd 3rd Last 3rd 2nd 1st
+1316 1st 2nd 3rd Last 3rd 2nd 1st
+1317 1st 2nd 3rd Last 3rd 2nd 1st
+1318 1st 2nd 3rd Last 3rd 2nd 1st
+1319 1st 2nd 3rd Last 3rd 2nd 1st
+1320 1st 2nd 3rd Last 3rd 2nd 1st
+1321 1st 2nd 3rd Last 3rd 2nd 1st
+1322 1st 2nd 3rd Last 3rd 2nd 1st
+1323 1st 2nd 3rd Last 3rd 2nd 1st
+1324 1st 2nd 3rd Last 3rd 2nd 1st
+1325 1st 2nd 3rd Last 3rd 2nd 1st
+1326 1st 2nd 3rd Last 3rd 2nd 1st
+1327 1st 2nd 3rd Last 3rd 2nd 1st
+1328 1st 2nd 3rd Last 3rd 2nd 1st
+1329 1st 2nd 3rd Last 3rd 2nd 1st
+1330 1st 2nd 3rd Last 3rd 2nd 1st
+1331 1st 2nd 3rd Last 3rd 2nd 1st
+1332 1st 2nd 3rd Last 3rd 2nd 1st
+1333 1st 2nd 3rd Last 3rd 2nd 1st
+1334 1st 2nd 3rd Last 3rd 2nd 1st
+1335 1st 2nd 3rd Last 3rd 2nd 1st
+1336 1st 2nd 3rd Last 3rd 2nd 1st
+1337 1st 2nd 3rd Last 3rd 2nd 1st
+1338 1st 2nd 3rd Last 3rd 2nd 1st
+1339 1st 2nd 3rd Last 3rd 2nd 1st
+1340 1st 2nd 3rd Last 3rd 2nd 1st
+1341 1st 2nd 3rd Last 3rd 2nd 1st
+1342 1st 2nd 3rd Last 3rd 2nd 1st
+1343 1st 2nd 3rd Last 3rd 2nd 1st
+1344 1st 2nd 3rd Last 3rd 2nd 1st
+1345 1st 2nd 3rd Last 3rd 2nd 1st
+1346 1st 2nd 3rd Last 3rd 2nd 1st
+1347 1st 2nd 3rd Last 3rd 2nd 1st
+1348 1st 2nd 3rd Last 3rd 2nd 1st
+1349 1st 2nd 3rd Last 3rd 2nd 1st
+1350 1st 2nd 3rd Last 3rd 2nd 1st
+1351 1st 2nd 3rd Last 3rd 2nd 1st
+1352 1st 2nd 3rd Last 3rd 2nd 1st
+1353 1st 2nd 3rd Last 3rd 2nd 1st
+1354 1st 2nd 3rd Last 3rd 2nd 1st
+1355 1st 2nd 3rd Last 3rd 2nd 1st
+1356 1st 2nd 3rd Last 3rd 2nd 1st
+1357 1st 2nd 3rd Last 3rd 2nd 1st
+1358 1st 2nd 3rd Last 3rd 2nd 1st
+1359 1st 2nd 3rd Last 3rd 2nd 1st
+1360 1st 2nd 3rd Last 3rd 2nd 1st
+1361 1st 2nd 3rd Last 3rd 2nd 1st
+1362 1st 2nd 3rd Last 3rd 2nd 1st
+1363 1st 2nd 3rd Last 3rd 2nd 1st
+1364 1st 2nd 3rd Last 3rd 2nd 1st
+1365 1st 2nd 3rd Last 3rd 2nd 1st
+1366 1st 2nd 3rd Last 3rd 2nd 1st
+1367 1st 2nd 3rd Last 3rd 2nd 1st
+1368 1st 2nd 3rd Last 3rd 2nd 1st
+1369 1st 2nd 3rd Last 3rd 2nd 1st
+1370 1st 2nd 3rd Last 3rd 2nd 1st
+1371 1st 2nd 3rd Last 3rd 2nd 1st
+1372 1st 2nd 3rd Last 3rd 2nd 1st
+1373 1st 2nd 3rd Last 3rd 2nd 1st
+1374 1st 2nd 3rd Last 3rd 2nd 1st
+1375 1st 2nd 3rd Last 3rd 2nd 1st
+1376 1st 2nd 3rd Last 3rd 2nd 1st
+1377 1st 2nd 3rd Last 3rd 2nd 1st
+1378 1st 2nd 3rd Last 3rd 2nd 1st
+1379 1st 2nd 3rd Last 3rd 2nd 1st
+1380 1st 2nd 3rd Last 3rd 2nd 1st
+1381 1st 2nd 3rd Last 3rd 2nd 1st
+1382 1st 2nd 3rd Last 3rd 2nd 1st
+1383 1st 2nd 3rd Last 3rd 2nd 1st
+1384 1st 2nd 3rd Last 3rd 2nd 1st
+1385 1st 2nd 3rd Last 3rd 2nd 1st
+1386 1st 2nd 3rd Last 3rd 2nd 1st
+1387 1st 2nd 3rd Last 3rd 2nd 1st
+1388 1st 2nd 3rd Last 3rd 2nd 1st
+1389 1st 2nd 3rd Last 3rd 2nd 1st
+1390 1st 2nd 3rd Last 3rd 2nd 1st
+1391 1st 2nd 3rd Last 3rd 2nd 1st
+1392 1st 2nd 3rd Last 3rd 2nd 1st
+1393 1st 2nd 3rd Last 3rd 2nd 1st
+1394 1st 2nd 3rd Last 3rd 2nd 1st
+1395 1st 2nd 3rd Last 3rd 2nd 1st
+1396 1st 2nd 3rd Last 3rd 2nd 1st
+1397 1st 2nd 3rd Last 3rd 2nd 1st
+1398 1st 2nd 3rd Last 3rd 2nd 1st
+1399 1st 2nd 3rd Last 3rd 2nd 1st
+1400 1st 2nd 3rd Last 3rd 2nd 1st
+1401 1st 2nd 3rd Last 3rd 2nd 1st
+1402 1st 2nd 3rd Last 3rd 2nd 1st
+1403 1st 2nd 3rd Last 3rd 2nd 1st
+1404 1st 2nd 3rd Last 3rd 2nd 1st
+1405 1st 2nd 3rd Last 3rd 2nd 1st
+1406 1st 2nd 3rd Last 3rd 2nd 1st
+1407 1st 2nd 3rd Last 3rd 2nd 1st
+1408 1st 2nd 3rd Last 3rd 2nd 1st
+1409 1st 2nd 3rd Last 3rd 2nd 1st
+1410 1st 2nd 3rd Last 3rd 2nd 1st
+1411 1st 2nd 3rd Last 3rd 2nd 1st
+1412 1st 2nd 3rd Last 3rd 2nd 1st
+1413 1st 2nd 3rd Last 3rd 2nd 1st
+1414 1st 2nd 3rd Last 3rd 2nd 1st
+1415 1st 2nd 3rd Last 3rd 2nd 1st
+1416 1st 2nd 3rd Last 3rd 2nd 1st
+1417 1st 2nd 3rd Last 3rd 2nd 1st
+1418 1st 2nd 3rd Last 3rd 2nd 1st
+1419 1st 2nd 3rd Last 3rd 2nd 1st
+1420 1st 2nd 3rd Last 3rd 2nd 1st
+1421 1st 2nd 3rd Last 3rd 2nd 1st
+1422 1st 2nd 3rd Last 3rd 2nd 1st
+1423 1st 2nd 3rd Last 3rd 2nd 1st
+1424 1st 2nd 3rd Last 3rd 2nd 1st
+1425 1st 2nd 3rd Last 3rd 2nd 1st
+1426 1st 2nd 3rd Last 3rd 2nd 1st
+1427 1st 2nd 3rd Last 3rd 2nd 1st
+1428 1st 2nd 3rd Last 3rd 2nd 1st
+1429 1st 2nd 3rd Last 3rd 2nd 1st
+1430 1st 2nd 3rd Last 3rd 2nd 1st
+1431 1st 2nd 3rd Last 3rd 2nd 1st
+1432 1st 2nd 3rd Last 3rd 2nd 1st
+1433 1st 2nd 3rd Last 3rd 2nd 1st
+1434 1st 2nd 3rd Last 3rd 2nd 1st
+1435 1st 2nd 3rd Last 3rd 2nd 1st
+1436 1st 2nd 3rd Last 3rd 2nd 1st
+1437 1st 2nd 3rd Last 3rd 2nd 1st
+1438 1st 2nd 3rd Last 3rd 2nd 1st
+1439 1st 2nd 3rd Last 3rd 2nd 1st
+1440 1st 2nd 3rd Last 3rd 2nd 1st
+1441 1st 2nd 3rd Last 3rd 2nd 1st
+1442 1st 2nd 3rd Last 3rd 2nd 1st
+1443 1st 2nd 3rd Last 3rd 2nd 1st
+1444 1st 2nd 3rd Last 3rd 2nd 1st
+1445 1st 2nd 3rd Last 3rd 2nd 1st
+1446 1st 2nd 3rd Last 3rd 2nd 1st
+1447 1st 2nd 3rd Last 3rd 2nd 1st
+1448 1st 2nd 3rd Last 3rd 2nd 1st
+1449 1st 2nd 3rd Last 3rd 2nd 1st
+1450 1st 2nd 3rd Last 3rd 2nd 1st
+1451 1st 2nd 3rd Last 3rd 2nd 1st
+1452 1st 2nd 3rd Last 3rd 2nd 1st
+1453 1st 2nd 3rd Last 3rd 2nd 1st
+1454 1st 2nd 3rd Last 3rd 2nd 1st
+1455 1st 2nd 3rd Last 3rd 2nd 1st
+1456 1st 2nd 3rd Last 3rd 2nd 1st
+1457 1st 2nd 3rd Last 3rd 2nd 1st
+1458 1st 2nd 3rd Last 3rd 2nd 1st
+1459 1st 2nd 3rd Last 3rd 2nd 1st
+1460 1st 2nd 3rd Last 3rd 2nd 1st
+1461 1st 2nd 3rd Last 3rd 2nd 1st
+1462 1st 2nd 3rd Last 3rd 2nd 1st
+1463 1st 2nd 3rd Last 3rd 2nd 1st
+1464 1st 2nd 3rd Last 3rd 2nd 1st
+1465 1st 2nd 3rd Last 3rd 2nd 1st
+1466 1st 2nd 3rd Last 3rd 2nd 1st
+1467 1st 2nd 3rd Last 3rd 2nd 1st
+1468 1st 2nd 3rd Last 3rd 2nd 1st
+1469 1st 2nd 3rd Last 3rd 2nd 1st
+1470 1st 2nd 3rd Last 3rd 2nd 1st
+1471 1st 2nd 3rd Last 3rd 2nd 1st
+1472 1st 2nd 3rd Last 3rd 2nd 1st
+1473 1st 2nd 3rd Last 3rd 2nd 1st
+1474 1st 2nd 3rd Last 3rd 2nd 1st
+1475 1st 2nd 3rd Last 3rd 2nd 1st
+1476 1st 2nd 3rd Last 3rd 2nd 1st
+1477 1st 2nd 3rd Last 3rd 2nd 1st
+1478 1st 2nd 3rd Last 3rd 2nd 1st
+1479 1st 2nd 3rd Last 3rd 2nd 1st
+1480 1st 2nd 3rd Last 3rd 2nd 1st
+1481 1st 2nd 3rd Last 3rd 2nd 1st
+1482 1st 2nd 3rd Last 3rd 2nd 1st
+1483 1st 2nd 3rd Last 3rd 2nd 1st
+1484 1st 2nd 3rd Last 3rd 2nd 1st
+1485 1st 2nd 3rd Last 3rd 2nd 1st
+1486 1st 2nd 3rd Last 3rd 2nd 1st
+1487 1st 2nd 3rd Last 3rd 2nd 1st
+1488 1st 2nd 3rd Last 3rd 2nd 1st
+1489 1st 2nd 3rd Last 3rd 2nd 1st
+1490 1st 2nd 3rd Last 3rd 2nd 1st
+1491 1st 2nd 3rd Last 3rd 2nd 1st
+1492 1st 2nd 3rd Last 3rd 2nd 1st
+1493 1st 2nd 3rd Last 3rd 2nd 1st
+1494 1st 2nd 3rd Last 3rd 2nd 1st
+1495 1st 2nd 3rd Last 3rd 2nd 1st
+1496 1st 2nd 3rd Last 3rd 2nd 1st
+1497 1st 2nd 3rd Last 3rd 2nd 1st
+1498 1st 2nd 3rd Last 3rd 2nd 1st
+1499 1st 2nd 3rd Last 3rd 2nd 1st
+1500 1st 2nd 3rd Last 3rd 2nd 1st
+1501 1st 2nd 3rd Last 3rd 2nd 1st
+1502 1st 2nd 3rd Last 3rd 2nd 1st
+1503 1st 2nd 3rd Last 3rd 2nd 1st
+1504 1st 2nd 3rd Last 3rd 2nd 1st
+1505 1st 2nd 3rd Last 3rd 2nd 1st
+1506 1st 2nd 3rd Last 3rd 2nd 1st
+1507 1st 2nd 3rd Last 3rd 2nd 1st
+1508 1st 2nd 3rd Last 3rd 2nd 1st
+1509 1st 2nd 3rd Last 3rd 2nd 1st
+1510 1st 2nd 3rd Last 3rd 2nd 1st
+1511 1st 2nd 3rd Last 3rd 2nd 1st
+1512 1st 2nd 3rd Last 3rd 2nd 1st
+1513 1st 2nd 3rd Last 3rd 2nd 1st
+1514 1st 2nd 3rd Last 3rd 2nd 1st
+1515 1st 2nd 3rd Last 3rd 2nd 1st
+1516 1st 2nd 3rd Last 3rd 2nd 1st
+1517 1st 2nd 3rd Last 3rd 2nd 1st
+1518 1st 2nd 3rd Last 3rd 2nd 1st
+1519 1st 2nd 3rd Last 3rd 2nd 1st
+1520 1st 2nd 3rd Last 3rd 2nd 1st
+1521 1st 2nd 3rd Last 3rd 2nd 1st
+1522 1st 2nd 3rd Last 3rd 2nd 1st
+1523 1st 2nd 3rd Last 3rd 2nd 1st
+1524 1st 2nd 3rd Last 3rd 2nd 1st
+1525 1st 2nd 3rd Last 3rd 2nd 1st
+1526 1st 2nd 3rd Last 3rd 2nd 1st
+1527 1st 2nd 3rd Last 3rd 2nd 1st
+1528 1st 2nd 3rd Last 3rd 2nd 1st
+1529 1st 2nd 3rd Last 3rd 2nd 1st
+1530 1st 2nd 3rd Last 3rd 2nd 1st
+1531 1st 2nd 3rd Last 3rd 2nd 1st
+1532 1st 2nd 3rd Last 3rd 2nd 1st
+1533 1st 2nd 3rd Last 3rd 2nd 1st
+1534 1st 2nd 3rd Last 3rd 2nd 1st
+1535 1st 2nd 3rd Last 3rd 2nd 1st
+1536 1st 2nd 3rd Last 3rd 2nd 1st
+1537 1st 2nd 3rd Last 3rd 2nd 1st
+1538 1st 2nd 3rd Last 3rd 2nd 1st
+1539 1st 2nd 3rd Last 3rd 2nd 1st
+1540 1st 2nd 3rd Last 3rd 2nd 1st
+1541 1st 2nd 3rd Last 3rd 2nd 1st
+1542 1st 2nd 3rd Last 3rd 2nd 1st
+1543 1st 2nd 3rd Last 3rd 2nd 1st
+1544 1st 2nd 3rd Last 3rd 2nd 1st
+1545 1st 2nd 3rd Last 3rd 2nd 1st
+1546 1st 2nd 3rd Last 3rd 2nd 1st
+1547 1st 2nd 3rd Last 3rd 2nd 1st
+1548 1st 2nd 3rd Last 3rd 2nd 1st
+1549 1st 2nd 3rd Last 3rd 2nd 1st
+1550 1st 2nd 3rd Last 3rd 2nd 1st
+1551 1st 2nd 3rd Last 3rd 2nd 1st
+1552 1st 2nd 3rd Last 3rd 2nd 1st
+1553 1st 2nd 3rd Last 3rd 2nd 1st
+1554 1st 2nd 3rd Last 3rd 2nd 1st
+1555 1st 2nd 3rd Last 3rd 2nd 1st
+1556 1st 2nd 3rd Last 3rd 2nd 1st
+1557 1st 2nd 3rd Last 3rd 2nd 1st
+1558 1st 2nd 3rd Last 3rd 2nd 1st
+1559 1st 2nd 3rd Last 3rd 2nd 1st
+1560 1st 2nd 3rd Last 3rd 2nd 1st
+1561 1st 2nd 3rd Last 3rd 2nd 1st
+1562 1st 2nd 3rd Last 3rd 2nd 1st
+1563 1st 2nd 3rd Last 3rd 2nd 1st
+1564 1st 2nd 3rd Last 3rd 2nd 1st
+1565 1st 2nd 3rd Last 3rd 2nd 1st
+1566 1st 2nd 3rd Last 3rd 2nd 1st
+1567 1st 2nd 3rd Last 3rd 2nd 1st
+1568 1st 2nd 3rd Last 3rd 2nd 1st
+1569 1st 2nd 3rd Last 3rd 2nd 1st
+1570 1st 2nd 3rd Last 3rd 2nd 1st
+1571 1st 2nd 3rd Last 3rd 2nd 1st
+1572 1st 2nd 3rd Last 3rd 2nd 1st
+1573 1st 2nd 3rd Last 3rd 2nd 1st
+1574 1st 2nd 3rd Last 3rd 2nd 1st
+1575 1st 2nd 3rd Last 3rd 2nd 1st
+1576 1st 2nd 3rd Last 3rd 2nd 1st
+1577 1st 2nd 3rd Last 3rd 2nd 1st
+1578 1st 2nd 3rd Last 3rd 2nd 1st
+1579 1st 2nd 3rd Last 3rd 2nd 1st
+1580 1st 2nd 3rd Last 3rd 2nd 1st
+1581 1st 2nd 3rd Last 3rd 2nd 1st
+1582 1st 2nd 3rd Last 3rd 2nd 1st
+1583 1st 2nd 3rd Last 3rd 2nd 1st
+1584 1st 2nd 3rd Last 3rd 2nd 1st
+1585 1st 2nd 3rd Last 3rd 2nd 1st
+1586 1st 2nd 3rd Last 3rd 2nd 1st
+1587 1st 2nd 3rd Last 3rd 2nd 1st
+1588 1st 2nd 3rd Last 3rd 2nd 1st
+1589 1st 2nd 3rd Last 3rd 2nd 1st
+1590 1st 2nd 3rd Last 3rd 2nd 1st
+1591 1st 2nd 3rd Last 3rd 2nd 1st
+1592 1st 2nd 3rd Last 3rd 2nd 1st
+1593 1st 2nd 3rd Last 3rd 2nd 1st
+1594 1st 2nd 3rd Last 3rd 2nd 1st
+1595 1st 2nd 3rd Last 3rd 2nd 1st
+1596 1st 2nd 3rd Last 3rd 2nd 1st
+1597 1st 2nd 3rd Last 3rd 2nd 1st
+1598 1st 2nd 3rd Last 3rd 2nd 1st
+1599 1st 2nd 3rd Last 3rd 2nd 1st
+1600 1st 2nd 3rd Last 3rd 2nd 1st
+1601 1st 2nd 3rd Last 3rd 2nd 1st
+1602 1st 2nd 3rd Last 3rd 2nd 1st
+1603 1st 2nd 3rd Last 3rd 2nd 1st
+1604 1st 2nd 3rd Last 3rd 2nd 1st
+1605 1st 2nd 3rd Last 3rd 2nd 1st
+1606 1st 2nd 3rd Last 3rd 2nd 1st
+1607 1st 2nd 3rd Last 3rd 2nd 1st
+1608 1st 2nd 3rd Last 3rd 2nd 1st
+1609 1st 2nd 3rd Last 3rd 2nd 1st
+1610 1st 2nd 3rd Last 3rd 2nd 1st
+1611 1st 2nd 3rd Last 3rd 2nd 1st
+1612 1st 2nd 3rd Last 3rd 2nd 1st
+1613 1st 2nd 3rd Last 3rd 2nd 1st
+1614 1st 2nd 3rd Last 3rd 2nd 1st
+1615 1st 2nd 3rd Last 3rd 2nd 1st
+1616 1st 2nd 3rd Last 3rd 2nd 1st
+1617 1st 2nd 3rd Last 3rd 2nd 1st
+1618 1st 2nd 3rd Last 3rd 2nd 1st
+1619 1st 2nd 3rd Last 3rd 2nd 1st
+1620 1st 2nd 3rd Last 3rd 2nd 1st
+1621 1st 2nd 3rd Last 3rd 2nd 1st
+1622 1st 2nd 3rd Last 3rd 2nd 1st
+1623 1st 2nd 3rd Last 3rd 2nd 1st
+1624 1st 2nd 3rd Last 3rd 2nd 1st
+1625 1st 2nd 3rd Last 3rd 2nd 1st
+1626 1st 2nd 3rd Last 3rd 2nd 1st
+1627 1st 2nd 3rd Last 3rd 2nd 1st
+1628 1st 2nd 3rd Last 3rd 2nd 1st
+1629 1st 2nd 3rd Last 3rd 2nd 1st
+1630 1st 2nd 3rd Last 3rd 2nd 1st
+1631 1st 2nd 3rd Last 3rd 2nd 1st
+1632 1st 2nd 3rd Last 3rd 2nd 1st
+1633 1st 2nd 3rd Last 3rd 2nd 1st
+1634 1st 2nd 3rd Last 3rd 2nd 1st
+1635 1st 2nd 3rd Last 3rd 2nd 1st
+1636 1st 2nd 3rd Last 3rd 2nd 1st
+1637 1st 2nd 3rd Last 3rd 2nd 1st
+1638 1st 2nd 3rd Last 3rd 2nd 1st
+1639 1st 2nd 3rd Last 3rd 2nd 1st
+1640 1st 2nd 3rd Last 3rd 2nd 1st
+1641 1st 2nd 3rd Last 3rd 2nd 1st
+1642 1st 2nd 3rd Last 3rd 2nd 1st
+1643 1st 2nd 3rd Last 3rd 2nd 1st
+1644 1st 2nd 3rd Last 3rd 2nd 1st
+1645 1st 2nd 3rd Last 3rd 2nd 1st
+1646 1st 2nd 3rd Last 3rd 2nd 1st
+1647 1st 2nd 3rd Last 3rd 2nd 1st
+1648 1st 2nd 3rd Last 3rd 2nd 1st
+1649 1st 2nd 3rd Last 3rd 2nd 1st
+1650 1st 2nd 3rd Last 3rd 2nd 1st
+1651 1st 2nd 3rd Last 3rd 2nd 1st
+1652 1st 2nd 3rd Last 3rd 2nd 1st
+1653 1st 2nd 3rd Last 3rd 2nd 1st
+1654 1st 2nd 3rd Last 3rd 2nd 1st
+1655 1st 2nd 3rd Last 3rd 2nd 1st
+1656 1st 2nd 3rd Last 3rd 2nd 1st
+1657 1st 2nd 3rd Last 3rd 2nd 1st
+1658 1st 2nd 3rd Last 3rd 2nd 1st
+1659 1st 2nd 3rd Last 3rd 2nd 1st
+1660 1st 2nd 3rd Last 3rd 2nd 1st
+1661 1st 2nd 3rd Last 3rd 2nd 1st
+1662 1st 2nd 3rd Last 3rd 2nd 1st
+1663 1st 2nd 3rd Last 3rd 2nd 1st
+1664 1st 2nd 3rd Last 3rd 2nd 1st
+1665 1st 2nd 3rd Last 3rd 2nd 1st
+1666 1st 2nd 3rd Last 3rd 2nd 1st
+1667 1st 2nd 3rd Last 3rd 2nd 1st
+1668 1st 2nd 3rd Last 3rd 2nd 1st
+1669 1st 2nd 3rd Last 3rd 2nd 1st
+1670 1st 2nd 3rd Last 3rd 2nd 1st
+1671 1st 2nd 3rd Last 3rd 2nd 1st
+1672 1st 2nd 3rd Last 3rd 2nd 1st
+1673 1st 2nd 3rd Last 3rd 2nd 1st
+1674 1st 2nd 3rd Last 3rd 2nd 1st
+1675 1st 2nd 3rd Last 3rd 2nd 1st
+1676 1st 2nd 3rd Last 3rd 2nd 1st
+1677 1st 2nd 3rd Last 3rd 2nd 1st
+1678 1st 2nd 3rd Last 3rd 2nd 1st
+1679 1st 2nd 3rd Last 3rd 2nd 1st
+1680 1st 2nd 3rd Last 3rd 2nd 1st
+1681 1st 2nd 3rd Last 3rd 2nd 1st
+1682 1st 2nd 3rd Last 3rd 2nd 1st
+1683 1st 2nd 3rd Last 3rd 2nd 1st
+1684 1st 2nd 3rd Last 3rd 2nd 1st
+1685 1st 2nd 3rd Last 3rd 2nd 1st
+1686 1st 2nd 3rd Last 3rd 2nd 1st
+1687 1st 2nd 3rd Last 3rd 2nd 1st
+1688 1st 2nd 3rd Last 3rd 2nd 1st
+1689 1st 2nd 3rd Last 3rd 2nd 1st
+1690 1st 2nd 3rd Last 3rd 2nd 1st
+1691 1st 2nd 3rd Last 3rd 2nd 1st
+1692 1st 2nd 3rd Last 3rd 2nd 1st
+1693 1st 2nd 3rd Last 3rd 2nd 1st
+1694 1st 2nd 3rd Last 3rd 2nd 1st
+1695 1st 2nd 3rd Last 3rd 2nd 1st
+1696 1st 2nd 3rd Last 3rd 2nd 1st
+1697 1st 2nd 3rd Last 3rd 2nd 1st
+1698 1st 2nd 3rd Last 3rd 2nd 1st
+1699 1st 2nd 3rd Last 3rd 2nd 1st
+1700 1st 2nd 3rd Last 3rd 2nd 1st
+1701 1st 2nd 3rd Last 3rd 2nd 1st
+1702 1st 2nd 3rd Last 3rd 2nd 1st
+1703 1st 2nd 3rd Last 3rd 2nd 1st
+1704 1st 2nd 3rd Last 3rd 2nd 1st
+1705 1st 2nd 3rd Last 3rd 2nd 1st
+1706 1st 2nd 3rd Last 3rd 2nd 1st
+1707 1st 2nd 3rd Last 3rd 2nd 1st
+1708 1st 2nd 3rd Last 3rd 2nd 1st
+1709 1st 2nd 3rd Last 3rd 2nd 1st
+1710 1st 2nd 3rd Last 3rd 2nd 1st
+1711 1st 2nd 3rd Last 3rd 2nd 1st
+1712 1st 2nd 3rd Last 3rd 2nd 1st
+1713 1st 2nd 3rd Last 3rd 2nd 1st
+1714 1st 2nd 3rd Last 3rd 2nd 1st
+1715 1st 2nd 3rd Last 3rd 2nd 1st
+1716 1st 2nd 3rd Last 3rd 2nd 1st
+1717 1st 2nd 3rd Last 3rd 2nd 1st
+1718 1st 2nd 3rd Last 3rd 2nd 1st
+1719 1st 2nd 3rd Last 3rd 2nd 1st
+1720 1st 2nd 3rd Last 3rd 2nd 1st
+1721 1st 2nd 3rd Last 3rd 2nd 1st
+1722 1st 2nd 3rd Last 3rd 2nd 1st
+1723 1st 2nd 3rd Last 3rd 2nd 1st
+1724 1st 2nd 3rd Last 3rd 2nd 1st
+1725 1st 2nd 3rd Last 3rd 2nd 1st
+1726 1st 2nd 3rd Last 3rd 2nd 1st
+1727 1st 2nd 3rd Last 3rd 2nd 1st
+1728 1st 2nd 3rd Last 3rd 2nd 1st
+1729 1st 2nd 3rd Last 3rd 2nd 1st
+1730 1st 2nd 3rd Last 3rd 2nd 1st
+1731 1st 2nd 3rd Last 3rd 2nd 1st
+1732 1st 2nd 3rd Last 3rd 2nd 1st
+1733 1st 2nd 3rd Last 3rd 2nd 1st
+1734 1st 2nd 3rd Last 3rd 2nd 1st
+1735 1st 2nd 3rd Last 3rd 2nd 1st
+1736 1st 2nd 3rd Last 3rd 2nd 1st
+1737 1st 2nd 3rd Last 3rd 2nd 1st
+1738 1st 2nd 3rd Last 3rd 2nd 1st
+1739 1st 2nd 3rd Last 3rd 2nd 1st
+1740 1st 2nd 3rd Last 3rd 2nd 1st
+1741 1st 2nd 3rd Last 3rd 2nd 1st
+1742 1st 2nd 3rd Last 3rd 2nd 1st
+1743 1st 2nd 3rd Last 3rd 2nd 1st
+1744 1st 2nd 3rd Last 3rd 2nd 1st
+1745 1st 2nd 3rd Last 3rd 2nd 1st
+1746 1st 2nd 3rd Last 3rd 2nd 1st
+1747 1st 2nd 3rd Last 3rd 2nd 1st
+1748 1st 2nd 3rd Last 3rd 2nd 1st
+1749 1st 2nd 3rd Last 3rd 2nd 1st
+1750 1st 2nd 3rd Last 3rd 2nd 1st
+1751 1st 2nd 3rd Last 3rd 2nd 1st
+1752 1st 2nd 3rd Last 3rd 2nd 1st
+1753 1st 2nd 3rd Last 3rd 2nd 1st
+1754 1st 2nd 3rd Last 3rd 2nd 1st
+1755 1st 2nd 3rd Last 3rd 2nd 1st
+1756 1st 2nd 3rd Last 3rd 2nd 1st
+1757 1st 2nd 3rd Last 3rd 2nd 1st
+1758 1st 2nd 3rd Last 3rd 2nd 1st
+1759 1st 2nd 3rd Last 3rd 2nd 1st
+1760 1st 2nd 3rd Last 3rd 2nd 1st
+1761 1st 2nd 3rd Last 3rd 2nd 1st
+1762 1st 2nd 3rd Last 3rd 2nd 1st
+1763 1st 2nd 3rd Last 3rd 2nd 1st
+1764 1st 2nd 3rd Last 3rd 2nd 1st
+1765 1st 2nd 3rd Last 3rd 2nd 1st
+1766 1st 2nd 3rd Last 3rd 2nd 1st
+1767 1st 2nd 3rd Last 3rd 2nd 1st
+1768 1st 2nd 3rd Last 3rd 2nd 1st
+1769 1st 2nd 3rd Last 3rd 2nd 1st
+1770 1st 2nd 3rd Last 3rd 2nd 1st
+1771 1st 2nd 3rd Last 3rd 2nd 1st
+1772 1st 2nd 3rd Last 3rd 2nd 1st
+1773 1st 2nd 3rd Last 3rd 2nd 1st
+1774 1st 2nd 3rd Last 3rd 2nd 1st
+1775 1st 2nd 3rd Last 3rd 2nd 1st
+1776 1st 2nd 3rd Last 3rd 2nd 1st
+1777 1st 2nd 3rd Last 3rd 2nd 1st
+1778 1st 2nd 3rd Last 3rd 2nd 1st
+1779 1st 2nd 3rd Last 3rd 2nd 1st
+1780 1st 2nd 3rd Last 3rd 2nd 1st
+1781 1st 2nd 3rd Last 3rd 2nd 1st
+1782 1st 2nd 3rd Last 3rd 2nd 1st
+1783 1st 2nd 3rd Last 3rd 2nd 1st
+1784 1st 2nd 3rd Last 3rd 2nd 1st
+1785 1st 2nd 3rd Last 3rd 2nd 1st
+1786 1st 2nd 3rd Last 3rd 2nd 1st
+1787 1st 2nd 3rd Last 3rd 2nd 1st
+1788 1st 2nd 3rd Last 3rd 2nd 1st
+1789 1st 2nd 3rd Last 3rd 2nd 1st
+1790 1st 2nd 3rd Last 3rd 2nd 1st
+1791 1st 2nd 3rd Last 3rd 2nd 1st
+1792 1st 2nd 3rd Last 3rd 2nd 1st
+1793 1st 2nd 3rd Last 3rd 2nd 1st
+1794 1st 2nd 3rd Last 3rd 2nd 1st
+1795 1st 2nd 3rd Last 3rd 2nd 1st
+1796 1st 2nd 3rd Last 3rd 2nd 1st
+1797 1st 2nd 3rd Last 3rd 2nd 1st
+1798 1st 2nd 3rd Last 3rd 2nd 1st
+1799 1st 2nd 3rd Last 3rd 2nd 1st
+1800 1st 2nd 3rd Last 3rd 2nd 1st
+1801 1st 2nd 3rd Last 3rd 2nd 1st
+1802 1st 2nd 3rd Last 3rd 2nd 1st
+1803 1st 2nd 3rd Last 3rd 2nd 1st
+1804 1st 2nd 3rd Last 3rd 2nd 1st
+1805 1st 2nd 3rd Last 3rd 2nd 1st
+1806 1st 2nd 3rd Last 3rd 2nd 1st
+1807 1st 2nd 3rd Last 3rd 2nd 1st
+1808 1st 2nd 3rd Last 3rd 2nd 1st
+1809 1st 2nd 3rd Last 3rd 2nd 1st
+1810 1st 2nd 3rd Last 3rd 2nd 1st
+1811 1st 2nd 3rd Last 3rd 2nd 1st
+1812 1st 2nd 3rd Last 3rd 2nd 1st
+1813 1st 2nd 3rd Last 3rd 2nd 1st
+1814 1st 2nd 3rd Last 3rd 2nd 1st
+1815 1st 2nd 3rd Last 3rd 2nd 1st
+1816 1st 2nd 3rd Last 3rd 2nd 1st
+1817 1st 2nd 3rd Last 3rd 2nd 1st
+1818 1st 2nd 3rd Last 3rd 2nd 1st
+1819 1st 2nd 3rd Last 3rd 2nd 1st
+1820 1st 2nd 3rd Last 3rd 2nd 1st
+1821 1st 2nd 3rd Last 3rd 2nd 1st
+1822 1st 2nd 3rd Last 3rd 2nd 1st
+1823 1st 2nd 3rd Last 3rd 2nd 1st
+1824 1st 2nd 3rd Last 3rd 2nd 1st
+1825 1st 2nd 3rd Last 3rd 2nd 1st
+1826 1st 2nd 3rd Last 3rd 2nd 1st
+1827 1st 2nd 3rd Last 3rd 2nd 1st
+1828 1st 2nd 3rd Last 3rd 2nd 1st
+1829 1st 2nd 3rd Last 3rd 2nd 1st
+1830 1st 2nd 3rd Last 3rd 2nd 1st
+1831 1st 2nd 3rd Last 3rd 2nd 1st
+1832 1st 2nd 3rd Last 3rd 2nd 1st
+1833 1st 2nd 3rd Last 3rd 2nd 1st
+1834 1st 2nd 3rd Last 3rd 2nd 1st
+1835 1st 2nd 3rd Last 3rd 2nd 1st
+1836 1st 2nd 3rd Last 3rd 2nd 1st
+1837 1st 2nd 3rd Last 3rd 2nd 1st
+1838 1st 2nd 3rd Last 3rd 2nd 1st
+1839 1st 2nd 3rd Last 3rd 2nd 1st
+1840 1st 2nd 3rd Last 3rd 2nd 1st
+1841 1st 2nd 3rd Last 3rd 2nd 1st
+1842 1st 2nd 3rd Last 3rd 2nd 1st
+1843 1st 2nd 3rd Last 3rd 2nd 1st
+1844 1st 2nd 3rd Last 3rd 2nd 1st
+1845 1st 2nd 3rd Last 3rd 2nd 1st
+1846 1st 2nd 3rd Last 3rd 2nd 1st
+1847 1st 2nd 3rd Last 3rd 2nd 1st
+1848 1st 2nd 3rd Last 3rd 2nd 1st
+1849 1st 2nd 3rd Last 3rd 2nd 1st
+1850 1st 2nd 3rd Last 3rd 2nd 1st
+1851 1st 2nd 3rd Last 3rd 2nd 1st
+1852 1st 2nd 3rd Last 3rd 2nd 1st
+1853 1st 2nd 3rd Last 3rd 2nd 1st
+1854 1st 2nd 3rd Last 3rd 2nd 1st
+1855 1st 2nd 3rd Last 3rd 2nd 1st
+1856 1st 2nd 3rd Last 3rd 2nd 1st
+1857 1st 2nd 3rd Last 3rd 2nd 1st
+1858 1st 2nd 3rd Last 3rd 2nd 1st
+1859 1st 2nd 3rd Last 3rd 2nd 1st
+1860 1st 2nd 3rd Last 3rd 2nd 1st
+1861 1st 2nd 3rd Last 3rd 2nd 1st
+1862 1st 2nd 3rd Last 3rd 2nd 1st
+1863 1st 2nd 3rd Last 3rd 2nd 1st
+1864 1st 2nd 3rd Last 3rd 2nd 1st
+1865 1st 2nd 3rd Last 3rd 2nd 1st
+1866 1st 2nd 3rd Last 3rd 2nd 1st
+1867 1st 2nd 3rd Last 3rd 2nd 1st
+1868 1st 2nd 3rd Last 3rd 2nd 1st
+1869 1st 2nd 3rd Last 3rd 2nd 1st
+1870 1st 2nd 3rd Last 3rd 2nd 1st
+1871 1st 2nd 3rd Last 3rd 2nd 1st
+1872 1st 2nd 3rd Last 3rd 2nd 1st
+1873 1st 2nd 3rd Last 3rd 2nd 1st
+1874 1st 2nd 3rd Last 3rd 2nd 1st
+1875 1st 2nd 3rd Last 3rd 2nd 1st
+1876 1st 2nd 3rd Last 3rd 2nd 1st
+1877 1st 2nd 3rd Last 3rd 2nd 1st
+1878 1st 2nd 3rd Last 3rd 2nd 1st
+1879 1st 2nd 3rd Last 3rd 2nd 1st
+1880 1st 2nd 3rd Last 3rd 2nd 1st
+1881 1st 2nd 3rd Last 3rd 2nd 1st
+1882 1st 2nd 3rd Last 3rd 2nd 1st
+1883 1st 2nd 3rd Last 3rd 2nd 1st
+1884 1st 2nd 3rd Last 3rd 2nd 1st
+1885 1st 2nd 3rd Last 3rd 2nd 1st
+1886 1st 2nd 3rd Last 3rd 2nd 1st
+1887 1st 2nd 3rd Last 3rd 2nd 1st
+1888 1st 2nd 3rd Last 3rd 2nd 1st
+1889 1st 2nd 3rd Last 3rd 2nd 1st
+1890 1st 2nd 3rd Last 3rd 2nd 1st
+1891 1st 2nd 3rd Last 3rd 2nd 1st
+1892 1st 2nd 3rd Last 3rd 2nd 1st
+1893 1st 2nd 3rd Last 3rd 2nd 1st
+1894 1st 2nd 3rd Last 3rd 2nd 1st
+1895 1st 2nd 3rd Last 3rd 2nd 1st
+1896 1st 2nd 3rd Last 3rd 2nd 1st
+1897 1st 2nd 3rd Last 3rd 2nd 1st
+1898 1st 2nd 3rd Last 3rd 2nd 1st
+1899 1st 2nd 3rd Last 3rd 2nd 1st
+1900 1st 2nd 3rd Last 3rd 2nd 1st
+1901 1st 2nd 3rd Last 3rd 2nd 1st
+1902 1st 2nd 3rd Last 3rd 2nd 1st
+1903 1st 2nd 3rd Last 3rd 2nd 1st
+1904 1st 2nd 3rd Last 3rd 2nd 1st
+1905 1st 2nd 3rd Last 3rd 2nd 1st
+1906 1st 2nd 3rd Last 3rd 2nd 1st
+1907 1st 2nd 3rd Last 3rd 2nd 1st
+1908 1st 2nd 3rd Last 3rd 2nd 1st
+1909 1st 2nd 3rd Last 3rd 2nd 1st
+1910 1st 2nd 3rd Last 3rd 2nd 1st
+1911 1st 2nd 3rd Last 3rd 2nd 1st
+1912 1st 2nd 3rd Last 3rd 2nd 1st
+1913 1st 2nd 3rd Last 3rd 2nd 1st
+1914 1st 2nd 3rd Last 3rd 2nd 1st
+1915 1st 2nd 3rd Last 3rd 2nd 1st
+1916 1st 2nd 3rd Last 3rd 2nd 1st
+1917 1st 2nd 3rd Last 3rd 2nd 1st
+1918 1st 2nd 3rd Last 3rd 2nd 1st
+1919 1st 2nd 3rd Last 3rd 2nd 1st
+1920 1st 2nd 3rd Last 3rd 2nd 1st
+1921 1st 2nd 3rd Last 3rd 2nd 1st
+1922 1st 2nd 3rd Last 3rd 2nd 1st
+1923 1st 2nd 3rd Last 3rd 2nd 1st
+1924 1st 2nd 3rd Last 3rd 2nd 1st
+1925 1st 2nd 3rd Last 3rd 2nd 1st
+1926 1st 2nd 3rd Last 3rd 2nd 1st
+1927 1st 2nd 3rd Last 3rd 2nd 1st
+1928 1st 2nd 3rd Last 3rd 2nd 1st
+1929 1st 2nd 3rd Last 3rd 2nd 1st
+1930 1st 2nd 3rd Last 3rd 2nd 1st
+1931 1st 2nd 3rd Last 3rd 2nd 1st
+1932 1st 2nd 3rd Last 3rd 2nd 1st
+1933 1st 2nd 3rd Last 3rd 2nd 1st
+1934 1st 2nd 3rd Last 3rd 2nd 1st
+1935 1st 2nd 3rd Last 3rd 2nd 1st
+1936 1st 2nd 3rd Last 3rd 2nd 1st
+1937 1st 2nd 3rd Last 3rd 2nd 1st
+1938 1st 2nd 3rd Last 3rd 2nd 1st
+1939 1st 2nd 3rd Last 3rd 2nd 1st
+1940 1st 2nd 3rd Last 3rd 2nd 1st
+1941 1st 2nd 3rd Last 3rd 2nd 1st
+1942 1st 2nd 3rd Last 3rd 2nd 1st
+1943 1st 2nd 3rd Last 3rd 2nd 1st
+1944 1st 2nd 3rd Last 3rd 2nd 1st
+1945 1st 2nd 3rd Last 3rd 2nd 1st
+1946 1st 2nd 3rd Last 3rd 2nd 1st
+1947 1st 2nd 3rd Last 3rd 2nd 1st
+1948 1st 2nd 3rd Last 3rd 2nd 1st
+1949 1st 2nd 3rd Last 3rd 2nd 1st
+1950 1st 2nd 3rd Last 3rd 2nd 1st
+1951 1st 2nd 3rd Last 3rd 2nd 1st
+1952 1st 2nd 3rd Last 3rd 2nd 1st
+1953 1st 2nd 3rd Last 3rd 2nd 1st
+1954 1st 2nd 3rd Last 3rd 2nd 1st
+1955 1st 2nd 3rd Last 3rd 2nd 1st
+1956 1st 2nd 3rd Last 3rd 2nd 1st
+1957 1st 2nd 3rd Last 3rd 2nd 1st
+1958 1st 2nd 3rd Last 3rd 2nd 1st
+1959 1st 2nd 3rd Last 3rd 2nd 1st
+1960 1st 2nd 3rd Last 3rd 2nd 1st
+1961 1st 2nd 3rd Last 3rd 2nd 1st
+1962 1st 2nd 3rd Last 3rd 2nd 1st
+1963 1st 2nd 3rd Last 3rd 2nd 1st
+1964 1st 2nd 3rd Last 3rd 2nd 1st
+1965 1st 2nd 3rd Last 3rd 2nd 1st
+1966 1st 2nd 3rd Last 3rd 2nd 1st
+1967 1st 2nd 3rd Last 3rd 2nd 1st
+1968 1st 2nd 3rd Last 3rd 2nd 1st
+1969 1st 2nd 3rd Last 3rd 2nd 1st
+1970 1st 2nd 3rd Last 3rd 2nd 1st
+1971 1st 2nd 3rd Last 3rd 2nd 1st
+1972 1st 2nd 3rd Last 3rd 2nd 1st
+1973 1st 2nd 3rd Last 3rd 2nd 1st
+1974 1st 2nd 3rd Last 3rd 2nd 1st
+1975 1st 2nd 3rd Last 3rd 2nd 1st
+1976 1st 2nd 3rd Last 3rd 2nd 1st
+1977 1st 2nd 3rd Last 3rd 2nd 1st
+1978 1st 2nd 3rd Last 3rd 2nd 1st
+1979 1st 2nd 3rd Last 3rd 2nd 1st
+1980 1st 2nd 3rd Last 3rd 2nd 1st
+1981 1st 2nd 3rd Last 3rd 2nd 1st
+1982 1st 2nd 3rd Last 3rd 2nd 1st
+1983 1st 2nd 3rd Last 3rd 2nd 1st
+1984 1st 2nd 3rd Last 3rd 2nd 1st
+1985 1st 2nd 3rd Last 3rd 2nd 1st
+1986 1st 2nd 3rd Last 3rd 2nd 1st
+1987 1st 2nd 3rd Last 3rd 2nd 1st
+1988 1st 2nd 3rd Last 3rd 2nd 1st
+1989 1st 2nd 3rd Last 3rd 2nd 1st
+1990 1st 2nd 3rd Last 3rd 2nd 1st
+1991 1st 2nd 3rd Last 3rd 2nd 1st
+1992 1st 2nd 3rd Last 3rd 2nd 1st
+1993 1st 2nd 3rd Last 3rd 2nd 1st
+1994 1st 2nd 3rd Last 3rd 2nd 1st
+1995 1st 2nd 3rd Last 3rd 2nd 1st
+1996 1st 2nd 3rd Last 3rd 2nd 1st
+1997 1st 2nd 3rd Last 3rd 2nd 1st
+1998 1st 2nd 3rd Last 3rd 2nd 1st
+1999 1st 2nd 3rd Last 3rd 2nd 1st
+2000 1st 2nd 3rd Last 3rd 2nd 1st
+2001 1st 2nd 3rd Last 3rd 2nd 1st
+2002 1st 2nd 3rd Last 3rd 2nd 1st
+2003 1st 2nd 3rd Last 3rd 2nd 1st
+2004 1st 2nd 3rd Last 3rd 2nd 1st
+2005 1st 2nd 3rd Last 3rd 2nd 1st
+2006 1st 2nd 3rd Last 3rd 2nd 1st
+2007 1st 2nd 3rd Last 3rd 2nd 1st
+2008 1st 2nd 3rd Last 3rd 2nd 1st
+2009 1st 2nd 3rd Last 3rd 2nd 1st
+2010 1st 2nd 3rd Last 3rd 2nd 1st
+2011 1st 2nd 3rd Last 3rd 2nd 1st
+2012 1st 2nd 3rd Last 3rd 2nd 1st
+2013 1st 2nd 3rd Last 3rd 2nd 1st
+2014 1st 2nd 3rd Last 3rd 2nd 1st
+2015 1st 2nd 3rd Last 3rd 2nd 1st
+2016 1st 2nd 3rd Last 3rd 2nd 1st
+2017 1st 2nd 3rd Last 3rd 2nd 1st
+2018 1st 2nd 3rd Last 3rd 2nd 1st
+2019 1st 2nd 3rd Last 3rd 2nd 1st
+2020 1st 2nd 3rd Last 3rd 2nd 1st
+2021 1st 2nd 3rd Last 3rd 2nd 1st
+2022 1st 2nd 3rd Last 3rd 2nd 1st
+2023 1st 2nd 3rd Last 3rd 2nd 1st
+2024 1st 2nd 3rd Last 3rd 2nd 1st
+2025 1st 2nd 3rd Last 3rd 2nd 1st
+2026 1st 2nd 3rd Last 3rd 2nd 1st
+2027 1st 2nd 3rd Last 3rd 2nd 1st
+2028 1st 2nd 3rd Last 3rd 2nd 1st
+2029 1st 2nd 3rd Last 3rd 2nd 1st
+2030 1st 2nd 3rd Last 3rd 2nd 1st
+2031 1st 2nd 3rd Last 3rd 2nd 1st
+2032 1st 2nd 3rd Last 3rd 2nd 1st
+2033 1st 2nd 3rd Last 3rd 2nd 1st
+2034 1st 2nd 3rd Last 3rd 2nd 1st
+2035 1st 2nd 3rd Last 3rd 2nd 1st
+2036 1st 2nd 3rd Last 3rd 2nd 1st
+2037 1st 2nd 3rd Last 3rd 2nd 1st
+2038 1st 2nd 3rd Last 3rd 2nd 1st
+2039 1st 2nd 3rd Last 3rd 2nd 1st
+2040 1st 2nd 3rd Last 3rd 2nd 1st
+2041 1st 2nd 3rd Last 3rd 2nd 1st
+2042 1st 2nd 3rd Last 3rd 2nd 1st
+2043 1st 2nd 3rd Last 3rd 2nd 1st
+2044 1st 2nd 3rd Last 3rd 2nd 1st
+2045 1st 2nd 3rd Last 3rd 2nd 1st
+2046 1st 2nd 3rd Last 3rd 2nd 1st
+2047 1st 2nd 3rd Last 3rd 2nd 1st
+2048 1st 2nd 3rd Last 3rd 2nd 1st
+2049 1st 2nd 3rd Last 3rd 2nd 1st
+2050 1st 2nd 3rd Last 3rd 2nd 1st
+2051 1st 2nd 3rd Last 3rd 2nd 1st
+2052 1st 2nd 3rd Last 3rd 2nd 1st
+2053 1st 2nd 3rd Last 3rd 2nd 1st
+2054 1st 2nd 3rd Last 3rd 2nd 1st
+2055 1st 2nd 3rd Last 3rd 2nd 1st
+2056 1st 2nd 3rd Last 3rd 2nd 1st
+2057 1st 2nd 3rd Last 3rd 2nd 1st
+2058 1st 2nd 3rd Last 3rd 2nd 1st
+2059 1st 2nd 3rd Last 3rd 2nd 1st
+2060 1st 2nd 3rd Last 3rd 2nd 1st
+2061 1st 2nd 3rd Last 3rd 2nd 1st
+2062 1st 2nd 3rd Last 3rd 2nd 1st
+2063 1st 2nd 3rd Last 3rd 2nd 1st
+2064 1st 2nd 3rd Last 3rd 2nd 1st
+2065 1st 2nd 3rd Last 3rd 2nd 1st
+2066 1st 2nd 3rd Last 3rd 2nd 1st
+2067 1st 2nd 3rd Last 3rd 2nd 1st
+2068 1st 2nd 3rd Last 3rd 2nd 1st
+2069 1st 2nd 3rd Last 3rd 2nd 1st
+2070 1st 2nd 3rd Last 3rd 2nd 1st
+2071 1st 2nd 3rd Last 3rd 2nd 1st
+2072 1st 2nd 3rd Last 3rd 2nd 1st
+2073 1st 2nd 3rd Last 3rd 2nd 1st
+2074 1st 2nd 3rd Last 3rd 2nd 1st
+2075 1st 2nd 3rd Last 3rd 2nd 1st
+2076 1st 2nd 3rd Last 3rd 2nd 1st
+2077 1st 2nd 3rd Last 3rd 2nd 1st
+2078 1st 2nd 3rd Last 3rd 2nd 1st
+2079 1st 2nd 3rd Last 3rd 2nd 1st
+2080 1st 2nd 3rd Last 3rd 2nd 1st
+2081 1st 2nd 3rd Last 3rd 2nd 1st
+2082 1st 2nd 3rd Last 3rd 2nd 1st
+2083 1st 2nd 3rd Last 3rd 2nd 1st
+2084 1st 2nd 3rd Last 3rd 2nd 1st
+2085 1st 2nd 3rd Last 3rd 2nd 1st
+2086 1st 2nd 3rd Last 3rd 2nd 1st
+2087 1st 2nd 3rd Last 3rd 2nd 1st
+2088 1st 2nd 3rd Last 3rd 2nd 1st
+2089 1st 2nd 3rd Last 3rd 2nd 1st
+2090 1st 2nd 3rd Last 3rd 2nd 1st
+2091 1st 2nd 3rd Last 3rd 2nd 1st
+2092 1st 2nd 3rd Last 3rd 2nd 1st
+2093 1st 2nd 3rd Last 3rd 2nd 1st
+2094 1st 2nd 3rd Last 3rd 2nd 1st
+2095 1st 2nd 3rd Last 3rd 2nd 1st
+2096 1st 2nd 3rd Last 3rd 2nd 1st
+2097 1st 2nd 3rd Last 3rd 2nd 1st
+2098 1st 2nd 3rd Last 3rd 2nd 1st
+2099 1st 2nd 3rd Last 3rd 2nd 1st
+2100 1st 2nd 3rd Last 3rd 2nd 1st
+2101 1st 2nd 3rd Last 3rd 2nd 1st
+2102 1st 2nd 3rd Last 3rd 2nd 1st
+2103 1st 2nd 3rd Last 3rd 2nd 1st
+2104 1st 2nd 3rd Last 3rd 2nd 1st
+2105 1st 2nd 3rd Last 3rd 2nd 1st
+2106 1st 2nd 3rd Last 3rd 2nd 1st
+2107 1st 2nd 3rd Last 3rd 2nd 1st
+2108 1st 2nd 3rd Last 3rd 2nd 1st
+2109 1st 2nd 3rd Last 3rd 2nd 1st
+2110 1st 2nd 3rd Last 3rd 2nd 1st
+2111 1st 2nd 3rd Last 3rd 2nd 1st
+2112 1st 2nd 3rd Last 3rd 2nd 1st
+2113 1st 2nd 3rd Last 3rd 2nd 1st
+2114 1st 2nd 3rd Last 3rd 2nd 1st
+2115 1st 2nd 3rd Last 3rd 2nd 1st
+2116 1st 2nd 3rd Last 3rd 2nd 1st
+2117 1st 2nd 3rd Last 3rd 2nd 1st
+2118 1st 2nd 3rd Last 3rd 2nd 1st
+2119 1st 2nd 3rd Last 3rd 2nd 1st
+2120 1st 2nd 3rd Last 3rd 2nd 1st
+2121 1st 2nd 3rd Last 3rd 2nd 1st
+2122 1st 2nd 3rd Last 3rd 2nd 1st
+2123 1st 2nd 3rd Last 3rd 2nd 1st
+2124 1st 2nd 3rd Last 3rd 2nd 1st
+2125 1st 2nd 3rd Last 3rd 2nd 1st
+2126 1st 2nd 3rd Last 3rd 2nd 1st
+2127 1st 2nd 3rd Last 3rd 2nd 1st
+2128 1st 2nd 3rd Last 3rd 2nd 1st
+2129 1st 2nd 3rd Last 3rd 2nd 1st
+2130 1st 2nd 3rd Last 3rd 2nd 1st
+2131 1st 2nd 3rd Last 3rd 2nd 1st
+2132 1st 2nd 3rd Last 3rd 2nd 1st
+2133 1st 2nd 3rd Last 3rd 2nd 1st
+2134 1st 2nd 3rd Last 3rd 2nd 1st
+2135 1st 2nd 3rd Last 3rd 2nd 1st
+2136 1st 2nd 3rd Last 3rd 2nd 1st
+2137 1st 2nd 3rd Last 3rd 2nd 1st
+2138 1st 2nd 3rd Last 3rd 2nd 1st
+2139 1st 2nd 3rd Last 3rd 2nd 1st
+2140 1st 2nd 3rd Last 3rd 2nd 1st
+2141 1st 2nd 3rd Last 3rd 2nd 1st
+2142 1st 2nd 3rd Last 3rd 2nd 1st
+2143 1st 2nd 3rd Last 3rd 2nd 1st
+2144 1st 2nd 3rd Last 3rd 2nd 1st
+2145 1st 2nd 3rd Last 3rd 2nd 1st
+2146 1st 2nd 3rd Last 3rd 2nd 1st
+2147 1st 2nd 3rd Last 3rd 2nd 1st
+2148 1st 2nd 3rd Last 3rd 2nd 1st
+2149 1st 2nd 3rd Last 3rd 2nd 1st
+2150 1st 2nd 3rd Last 3rd 2nd 1st
+2151 1st 2nd 3rd Last 3rd 2nd 1st
+2152 1st 2nd 3rd Last 3rd 2nd 1st
+2153 1st 2nd 3rd Last 3rd 2nd 1st
+2154 1st 2nd 3rd Last 3rd 2nd 1st
+2155 1st 2nd 3rd Last 3rd 2nd 1st
+2156 1st 2nd 3rd Last 3rd 2nd 1st
+2157 1st 2nd 3rd Last 3rd 2nd 1st
+2158 1st 2nd 3rd Last 3rd 2nd 1st
+2159 1st 2nd 3rd Last 3rd 2nd 1st
+2160 1st 2nd 3rd Last 3rd 2nd 1st
+2161 1st 2nd 3rd Last 3rd 2nd 1st
+2162 1st 2nd 3rd Last 3rd 2nd 1st
+2163 1st 2nd 3rd Last 3rd 2nd 1st
+2164 1st 2nd 3rd Last 3rd 2nd 1st
+2165 1st 2nd 3rd Last 3rd 2nd 1st
+2166 1st 2nd 3rd Last 3rd 2nd 1st
+2167 1st 2nd 3rd Last 3rd 2nd 1st
+2168 1st 2nd 3rd Last 3rd 2nd 1st
+2169 1st 2nd 3rd Last 3rd 2nd 1st
+2170 1st 2nd 3rd Last 3rd 2nd 1st
+2171 1st 2nd 3rd Last 3rd 2nd 1st
+2172 1st 2nd 3rd Last 3rd 2nd 1st
+2173 1st 2nd 3rd Last 3rd 2nd 1st
+2174 1st 2nd 3rd Last 3rd 2nd 1st
+2175 1st 2nd 3rd Last 3rd 2nd 1st
+2176 1st 2nd 3rd Last 3rd 2nd 1st
+2177 1st 2nd 3rd Last 3rd 2nd 1st
+2178 1st 2nd 3rd Last 3rd 2nd 1st
+2179 1st 2nd 3rd Last 3rd 2nd 1st
+2180 1st 2nd 3rd Last 3rd 2nd 1st
+2181 1st 2nd 3rd Last 3rd 2nd 1st
+2182 1st 2nd 3rd Last 3rd 2nd 1st
+2183 1st 2nd 3rd Last 3rd 2nd 1st
+2184 1st 2nd 3rd Last 3rd 2nd 1st
+2185 1st 2nd 3rd Last 3rd 2nd 1st
+2186 1st 2nd 3rd Last 3rd 2nd 1st
+2187 1st 2nd 3rd Last 3rd 2nd 1st
+2188 1st 2nd 3rd Last 3rd 2nd 1st
+2189 1st 2nd 3rd Last 3rd 2nd 1st
+2190 1st 2nd 3rd Last 3rd 2nd 1st
+2191 1st 2nd 3rd Last 3rd 2nd 1st
+2192 1st 2nd 3rd Last 3rd 2nd 1st
+2193 1st 2nd 3rd Last 3rd 2nd 1st
+2194 1st 2nd 3rd Last 3rd 2nd 1st
+2195 1st 2nd 3rd Last 3rd 2nd 1st
+2196 1st 2nd 3rd Last 3rd 2nd 1st
+2197 1st 2nd 3rd Last 3rd 2nd 1st
+2198 1st 2nd 3rd Last 3rd 2nd 1st
+2199 1st 2nd 3rd Last 3rd 2nd 1st
+2200 1st 2nd 3rd Last 3rd 2nd 1st
+2201 1st 2nd 3rd Last 3rd 2nd 1st
+2202 1st 2nd 3rd Last 3rd 2nd 1st
+2203 1st 2nd 3rd Last 3rd 2nd 1st
+2204 1st 2nd 3rd Last 3rd 2nd 1st
+2205 1st 2nd 3rd Last 3rd 2nd 1st
+2206 1st 2nd 3rd Last 3rd 2nd 1st
+2207 1st 2nd 3rd Last 3rd 2nd 1st
+2208 1st 2nd 3rd Last 3rd 2nd 1st
+2209 1st 2nd 3rd Last 3rd 2nd 1st
+2210 1st 2nd 3rd Last 3rd 2nd 1st
+2211 1st 2nd 3rd Last 3rd 2nd 1st
+2212 1st 2nd 3rd Last 3rd 2nd 1st
+2213 1st 2nd 3rd Last 3rd 2nd 1st
+2214 1st 2nd 3rd Last 3rd 2nd 1st
+2215 1st 2nd 3rd Last 3rd 2nd 1st
+2216 1st 2nd 3rd Last 3rd 2nd 1st
+2217 1st 2nd 3rd Last 3rd 2nd 1st
+2218 1st 2nd 3rd Last 3rd 2nd 1st
+2219 1st 2nd 3rd Last 3rd 2nd 1st
+2220 1st 2nd 3rd Last 3rd 2nd 1st
+2221 1st 2nd 3rd Last 3rd 2nd 1st
+2222 1st 2nd 3rd Last 3rd 2nd 1st
+2223 1st 2nd 3rd Last 3rd 2nd 1st
+2224 1st 2nd 3rd Last 3rd 2nd 1st
+2225 1st 2nd 3rd Last 3rd 2nd 1st
+2226 1st 2nd 3rd Last 3rd 2nd 1st
+2227 1st 2nd 3rd Last 3rd 2nd 1st
+2228 1st 2nd 3rd Last 3rd 2nd 1st
+2229 1st 2nd 3rd Last 3rd 2nd 1st
+2230 1st 2nd 3rd Last 3rd 2nd 1st
+2231 1st 2nd 3rd Last 3rd 2nd 1st
+2232 1st 2nd 3rd Last 3rd 2nd 1st
+2233 1st 2nd 3rd Last 3rd 2nd 1st
+2234 1st 2nd 3rd Last 3rd 2nd 1st
+2235 1st 2nd 3rd Last 3rd 2nd 1st
+2236 1st 2nd 3rd Last 3rd 2nd 1st
+2237 1st 2nd 3rd Last 3rd 2nd 1st
+2238 1st 2nd 3rd Last 3rd 2nd 1st
+2239 1st 2nd 3rd Last 3rd 2nd 1st
+2240 1st 2nd 3rd Last 3rd 2nd 1st
+2241 1st 2nd 3rd Last 3rd 2nd 1st
+2242 1st 2nd 3rd Last 3rd 2nd 1st
+2243 1st 2nd 3rd Last 3rd 2nd 1st
+2244 1st 2nd 3rd Last 3rd 2nd 1st
+2245 1st 2nd 3rd Last 3rd 2nd 1st
+2246 1st 2nd 3rd Last 3rd 2nd 1st
+2247 1st 2nd 3rd Last 3rd 2nd 1st
+2248 1st 2nd 3rd Last 3rd 2nd 1st
+2249 1st 2nd 3rd Last 3rd 2nd 1st
+2250 1st 2nd 3rd Last 3rd 2nd 1st
+2251 1st 2nd 3rd Last 3rd 2nd 1st
+2252 1st 2nd 3rd Last 3rd 2nd 1st
+2253 1st 2nd 3rd Last 3rd 2nd 1st
+2254 1st 2nd 3rd Last 3rd 2nd 1st
+2255 1st 2nd 3rd Last 3rd 2nd 1st
+2256 1st 2nd 3rd Last 3rd 2nd 1st
+2257 1st 2nd 3rd Last 3rd 2nd 1st
+2258 1st 2nd 3rd Last 3rd 2nd 1st
+2259 1st 2nd 3rd Last 3rd 2nd 1st
+2260 1st 2nd 3rd Last 3rd 2nd 1st
+2261 1st 2nd 3rd Last 3rd 2nd 1st
+2262 1st 2nd 3rd Last 3rd 2nd 1st
+2263 1st 2nd 3rd Last 3rd 2nd 1st
+2264 1st 2nd 3rd Last 3rd 2nd 1st
+2265 1st 2nd 3rd Last 3rd 2nd 1st
+2266 1st 2nd 3rd Last 3rd 2nd 1st
+2267 1st 2nd 3rd Last 3rd 2nd 1st
+2268 1st 2nd 3rd Last 3rd 2nd 1st
+2269 1st 2nd 3rd Last 3rd 2nd 1st
+2270 1st 2nd 3rd Last 3rd 2nd 1st
+2271 1st 2nd 3rd Last 3rd 2nd 1st
+2272 1st 2nd 3rd Last 3rd 2nd 1st
+2273 1st 2nd 3rd Last 3rd 2nd 1st
+2274 1st 2nd 3rd Last 3rd 2nd 1st
+2275 1st 2nd 3rd Last 3rd 2nd 1st
+2276 1st 2nd 3rd Last 3rd 2nd 1st
+2277 1st 2nd 3rd Last 3rd 2nd 1st
+2278 1st 2nd 3rd Last 3rd 2nd 1st
+2279 1st 2nd 3rd Last 3rd 2nd 1st
+2280 1st 2nd 3rd Last 3rd 2nd 1st
+2281 1st 2nd 3rd Last 3rd 2nd 1st
+2282 1st 2nd 3rd Last 3rd 2nd 1st
+2283 1st 2nd 3rd Last 3rd 2nd 1st
+2284 1st 2nd 3rd Last 3rd 2nd 1st
+2285 1st 2nd 3rd Last 3rd 2nd 1st
+2286 1st 2nd 3rd Last 3rd 2nd 1st
+2287 1st 2nd 3rd Last 3rd 2nd 1st
+2288 1st 2nd 3rd Last 3rd 2nd 1st
+2289 1st 2nd 3rd Last 3rd 2nd 1st
+2290 1st 2nd 3rd Last 3rd 2nd 1st
+2291 1st 2nd 3rd Last 3rd 2nd 1st
+2292 1st 2nd 3rd Last 3rd 2nd 1st
+2293 1st 2nd 3rd Last 3rd 2nd 1st
+2294 1st 2nd 3rd Last 3rd 2nd 1st
+2295 1st 2nd 3rd Last 3rd 2nd 1st
+2296 1st 2nd 3rd Last 3rd 2nd 1st
+2297 1st 2nd 3rd Last 3rd 2nd 1st
+2298 1st 2nd 3rd Last 3rd 2nd 1st
+2299 1st 2nd 3rd Last 3rd 2nd 1st
+2300 1st 2nd 3rd Last 3rd 2nd 1st
+2301 1st 2nd 3rd Last 3rd 2nd 1st
+2302 1st 2nd 3rd Last 3rd 2nd 1st
+2303 1st 2nd 3rd Last 3rd 2nd 1st
+2304 1st 2nd 3rd Last 3rd 2nd 1st
+2305 1st 2nd 3rd Last 3rd 2nd 1st
+2306 1st 2nd 3rd Last 3rd 2nd 1st
+2307 1st 2nd 3rd Last 3rd 2nd 1st
+2308 1st 2nd 3rd Last 3rd 2nd 1st
+2309 1st 2nd 3rd Last 3rd 2nd 1st
+2310 1st 2nd 3rd Last 3rd 2nd 1st
+2311 1st 2nd 3rd Last 3rd 2nd 1st
+2312 1st 2nd 3rd Last 3rd 2nd 1st
+2313 1st 2nd 3rd Last 3rd 2nd 1st
+2314 1st 2nd 3rd Last 3rd 2nd 1st
+2315 1st 2nd 3rd Last 3rd 2nd 1st
+2316 1st 2nd 3rd Last 3rd 2nd 1st
+2317 1st 2nd 3rd Last 3rd 2nd 1st
+2318 1st 2nd 3rd Last 3rd 2nd 1st
+2319 1st 2nd 3rd Last 3rd 2nd 1st
+2320 1st 2nd 3rd Last 3rd 2nd 1st
+2321 1st 2nd 3rd Last 3rd 2nd 1st
+2322 1st 2nd 3rd Last 3rd 2nd 1st
+2323 1st 2nd 3rd Last 3rd 2nd 1st
+2324 1st 2nd 3rd Last 3rd 2nd 1st
+2325 1st 2nd 3rd Last 3rd 2nd 1st
+2326 1st 2nd 3rd Last 3rd 2nd 1st
+2327 1st 2nd 3rd Last 3rd 2nd 1st
+2328 1st 2nd 3rd Last 3rd 2nd 1st
+2329 1st 2nd 3rd Last 3rd 2nd 1st
+2330 1st 2nd 3rd Last 3rd 2nd 1st
+2331 1st 2nd 3rd Last 3rd 2nd 1st
+2332 1st 2nd 3rd Last 3rd 2nd 1st
+2333 1st 2nd 3rd Last 3rd 2nd 1st
+2334 1st 2nd 3rd Last 3rd 2nd 1st
+2335 1st 2nd 3rd Last 3rd 2nd 1st
+2336 1st 2nd 3rd Last 3rd 2nd 1st
+2337 1st 2nd 3rd Last 3rd 2nd 1st
+2338 1st 2nd 3rd Last 3rd 2nd 1st
+2339 1st 2nd 3rd Last 3rd 2nd 1st
+2340 1st 2nd 3rd Last 3rd 2nd 1st
+2341 1st 2nd 3rd Last 3rd 2nd 1st
+2342 1st 2nd 3rd Last 3rd 2nd 1st
+2343 1st 2nd 3rd Last 3rd 2nd 1st
+2344 1st 2nd 3rd Last 3rd 2nd 1st
+2345 1st 2nd 3rd Last 3rd 2nd 1st
+2346 1st 2nd 3rd Last 3rd 2nd 1st
+2347 1st 2nd 3rd Last 3rd 2nd 1st
+2348 1st 2nd 3rd Last 3rd 2nd 1st
+2349 1st 2nd 3rd Last 3rd 2nd 1st
+2350 1st 2nd 3rd Last 3rd 2nd 1st
+2351 1st 2nd 3rd Last 3rd 2nd 1st
+2352 1st 2nd 3rd Last 3rd 2nd 1st
+2353 1st 2nd 3rd Last 3rd 2nd 1st
+2354 1st 2nd 3rd Last 3rd 2nd 1st
+2355 1st 2nd 3rd Last 3rd 2nd 1st
+2356 1st 2nd 3rd Last 3rd 2nd 1st
+2357 1st 2nd 3rd Last 3rd 2nd 1st
+2358 1st 2nd 3rd Last 3rd 2nd 1st
+2359 1st 2nd 3rd Last 3rd 2nd 1st
+2360 1st 2nd 3rd Last 3rd 2nd 1st
+2361 1st 2nd 3rd Last 3rd 2nd 1st
+2362 1st 2nd 3rd Last 3rd 2nd 1st
+2363 1st 2nd 3rd Last 3rd 2nd 1st
+2364 1st 2nd 3rd Last 3rd 2nd 1st
+2365 1st 2nd 3rd Last 3rd 2nd 1st
+2366 1st 2nd 3rd Last 3rd 2nd 1st
+2367 1st 2nd 3rd Last 3rd 2nd 1st
+2368 1st 2nd 3rd Last 3rd 2nd 1st
+2369 1st 2nd 3rd Last 3rd 2nd 1st
+2370 1st 2nd 3rd Last 3rd 2nd 1st
+2371 1st 2nd 3rd Last 3rd 2nd 1st
+2372 1st 2nd 3rd Last 3rd 2nd 1st
+2373 1st 2nd 3rd Last 3rd 2nd 1st
+2374 1st 2nd 3rd Last 3rd 2nd 1st
+2375 1st 2nd 3rd Last 3rd 2nd 1st
+2376 1st 2nd 3rd Last 3rd 2nd 1st
+2377 1st 2nd 3rd Last 3rd 2nd 1st
+2378 1st 2nd 3rd Last 3rd 2nd 1st
+2379 1st 2nd 3rd Last 3rd 2nd 1st
+2380 1st 2nd 3rd Last 3rd 2nd 1st
+2381 1st 2nd 3rd Last 3rd 2nd 1st
+2382 1st 2nd 3rd Last 3rd 2nd 1st
+2383 1st 2nd 3rd Last 3rd 2nd 1st
+2384 1st 2nd 3rd Last 3rd 2nd 1st
+2385 1st 2nd 3rd Last 3rd 2nd 1st
+2386 1st 2nd 3rd Last 3rd 2nd 1st
+2387 1st 2nd 3rd Last 3rd 2nd 1st
+2388 1st 2nd 3rd Last 3rd 2nd 1st
+2389 1st 2nd 3rd Last 3rd 2nd 1st
+2390 1st 2nd 3rd Last 3rd 2nd 1st
+2391 1st 2nd 3rd Last 3rd 2nd 1st
+2392 1st 2nd 3rd Last 3rd 2nd 1st
+2393 1st 2nd 3rd Last 3rd 2nd 1st
+2394 1st 2nd 3rd Last 3rd 2nd 1st
+2395 1st 2nd 3rd Last 3rd 2nd 1st
+2396 1st 2nd 3rd Last 3rd 2nd 1st
+2397 1st 2nd 3rd Last 3rd 2nd 1st
+2398 1st 2nd 3rd Last 3rd 2nd 1st
+2399 1st 2nd 3rd Last 3rd 2nd 1st
+2400 1st 2nd 3rd Last 3rd 2nd 1st
+2401 1st 2nd 3rd Last 3rd 2nd 1st
+2402 1st 2nd 3rd Last 3rd 2nd 1st
+2403 1st 2nd 3rd Last 3rd 2nd 1st
+2404 1st 2nd 3rd Last 3rd 2nd 1st
+2405 1st 2nd 3rd Last 3rd 2nd 1st
+2406 1st 2nd 3rd Last 3rd 2nd 1st
+2407 1st 2nd 3rd Last 3rd 2nd 1st
+2408 1st 2nd 3rd Last 3rd 2nd 1st
+2409 1st 2nd 3rd Last 3rd 2nd 1st
+2410 1st 2nd 3rd Last 3rd 2nd 1st
+2411 1st 2nd 3rd Last 3rd 2nd 1st
+2412 1st 2nd 3rd Last 3rd 2nd 1st
+2413 1st 2nd 3rd Last 3rd 2nd 1st
+2414 1st 2nd 3rd Last 3rd 2nd 1st
+2415 1st 2nd 3rd Last 3rd 2nd 1st
+2416 1st 2nd 3rd Last 3rd 2nd 1st
+2417 1st 2nd 3rd Last 3rd 2nd 1st
+2418 1st 2nd 3rd Last 3rd 2nd 1st
+2419 1st 2nd 3rd Last 3rd 2nd 1st
+2420 1st 2nd 3rd Last 3rd 2nd 1st
+2421 1st 2nd 3rd Last 3rd 2nd 1st
+2422 1st 2nd 3rd Last 3rd 2nd 1st
+2423 1st 2nd 3rd Last 3rd 2nd 1st
+2424 1st 2nd 3rd Last 3rd 2nd 1st
+2425 1st 2nd 3rd Last 3rd 2nd 1st
+2426 1st 2nd 3rd Last 3rd 2nd 1st
+2427 1st 2nd 3rd Last 3rd 2nd 1st
+2428 1st 2nd 3rd Last 3rd 2nd 1st
+2429 1st 2nd 3rd Last 3rd 2nd 1st
+2430 1st 2nd 3rd Last 3rd 2nd 1st
+2431 1st 2nd 3rd Last 3rd 2nd 1st
+2432 1st 2nd 3rd Last 3rd 2nd 1st
+2433 1st 2nd 3rd Last 3rd 2nd 1st
+2434 1st 2nd 3rd Last 3rd 2nd 1st
+2435 1st 2nd 3rd Last 3rd 2nd 1st
+2436 1st 2nd 3rd Last 3rd 2nd 1st
+2437 1st 2nd 3rd Last 3rd 2nd 1st
+2438 1st 2nd 3rd Last 3rd 2nd 1st
+2439 1st 2nd 3rd Last 3rd 2nd 1st
+2440 1st 2nd 3rd Last 3rd 2nd 1st
+2441 1st 2nd 3rd Last 3rd 2nd 1st
+2442 1st 2nd 3rd Last 3rd 2nd 1st
+2443 1st 2nd 3rd Last 3rd 2nd 1st
+2444 1st 2nd 3rd Last 3rd 2nd 1st
+2445 1st 2nd 3rd Last 3rd 2nd 1st
+2446 1st 2nd 3rd Last 3rd 2nd 1st
+2447 1st 2nd 3rd Last 3rd 2nd 1st
+2448 1st 2nd 3rd Last 3rd 2nd 1st
+2449 1st 2nd 3rd Last 3rd 2nd 1st
+2450 1st 2nd 3rd Last 3rd 2nd 1st
+2451 1st 2nd 3rd Last 3rd 2nd 1st
+2452 1st 2nd 3rd Last 3rd 2nd 1st
+2453 1st 2nd 3rd Last 3rd 2nd 1st
+2454 1st 2nd 3rd Last 3rd 2nd 1st
+2455 1st 2nd 3rd Last 3rd 2nd 1st
+2456 1st 2nd 3rd Last 3rd 2nd 1st
+2457 1st 2nd 3rd Last 3rd 2nd 1st
+2458 1st 2nd 3rd Last 3rd 2nd 1st
+2459 1st 2nd 3rd Last 3rd 2nd 1st
+2460 1st 2nd 3rd Last 3rd 2nd 1st
+2461 1st 2nd 3rd Last 3rd 2nd 1st
+2462 1st 2nd 3rd Last 3rd 2nd 1st
+2463 1st 2nd 3rd Last 3rd 2nd 1st
+2464 1st 2nd 3rd Last 3rd 2nd 1st
+2465 1st 2nd 3rd Last 3rd 2nd 1st
+2466 1st 2nd 3rd Last 3rd 2nd 1st
+2467 1st 2nd 3rd Last 3rd 2nd 1st
+2468 1st 2nd 3rd Last 3rd 2nd 1st
+2469 1st 2nd 3rd Last 3rd 2nd 1st
+2470 1st 2nd 3rd Last 3rd 2nd 1st
+2471 1st 2nd 3rd Last 3rd 2nd 1st
+2472 1st 2nd 3rd Last 3rd 2nd 1st
+2473 1st 2nd 3rd Last 3rd 2nd 1st
+2474 1st 2nd 3rd Last 3rd 2nd 1st
+2475 1st 2nd 3rd Last 3rd 2nd 1st
+2476 1st 2nd 3rd Last 3rd 2nd 1st
+2477 1st 2nd 3rd Last 3rd 2nd 1st
+2478 1st 2nd 3rd Last 3rd 2nd 1st
+2479 1st 2nd 3rd Last 3rd 2nd 1st
+2480 1st 2nd 3rd Last 3rd 2nd 1st
+2481 1st 2nd 3rd Last 3rd 2nd 1st
+2482 1st 2nd 3rd Last 3rd 2nd 1st
+2483 1st 2nd 3rd Last 3rd 2nd 1st
+2484 1st 2nd 3rd Last 3rd 2nd 1st
+2485 1st 2nd 3rd Last 3rd 2nd 1st
+2486 1st 2nd 3rd Last 3rd 2nd 1st
+2487 1st 2nd 3rd Last 3rd 2nd 1st
+2488 1st 2nd 3rd Last 3rd 2nd 1st
+2489 1st 2nd 3rd Last 3rd 2nd 1st
+2490 1st 2nd 3rd Last 3rd 2nd 1st
+2491 1st 2nd 3rd Last 3rd 2nd 1st
+2492 1st 2nd 3rd Last 3rd 2nd 1st
+2493 1st 2nd 3rd Last 3rd 2nd 1st
+2494 1st 2nd 3rd Last 3rd 2nd 1st
+2495 1st 2nd 3rd Last 3rd 2nd 1st
+2496 1st 2nd 3rd Last 3rd 2nd 1st
+2497 1st 2nd 3rd Last 3rd 2nd 1st
+2498 1st 2nd 3rd Last 3rd 2nd 1st
+2499 1st 2nd 3rd Last 3rd 2nd 1st
+2500 1st 2nd 3rd Last 3rd 2nd 1st
+2501 1st 2nd 3rd Last 3rd 2nd 1st
+2502 1st 2nd 3rd Last 3rd 2nd 1st
+2503 1st 2nd 3rd Last 3rd 2nd 1st
+2504 1st 2nd 3rd Last 3rd 2nd 1st
+2505 1st 2nd 3rd Last 3rd 2nd 1st
+2506 1st 2nd 3rd Last 3rd 2nd 1st
+2507 1st 2nd 3rd Last 3rd 2nd 1st
+2508 1st 2nd 3rd Last 3rd 2nd 1st
+2509 1st 2nd 3rd Last 3rd 2nd 1st
+2510 1st 2nd 3rd Last 3rd 2nd 1st
+2511 1st 2nd 3rd Last 3rd 2nd 1st
+2512 1st 2nd 3rd Last 3rd 2nd 1st
+2513 1st 2nd 3rd Last 3rd 2nd 1st
+2514 1st 2nd 3rd Last 3rd 2nd 1st
+2515 1st 2nd 3rd Last 3rd 2nd 1st
+2516 1st 2nd 3rd Last 3rd 2nd 1st
+2517 1st 2nd 3rd Last 3rd 2nd 1st
+2518 1st 2nd 3rd Last 3rd 2nd 1st
+2519 1st 2nd 3rd Last 3rd 2nd 1st
+2520 1st 2nd 3rd Last 3rd 2nd 1st
+2521 1st 2nd 3rd Last 3rd 2nd 1st
+2522 1st 2nd 3rd Last 3rd 2nd 1st
+2523 1st 2nd 3rd Last 3rd 2nd 1st
+2524 1st 2nd 3rd Last 3rd 2nd 1st
+2525 1st 2nd 3rd Last 3rd 2nd 1st
+2526 1st 2nd 3rd Last 3rd 2nd 1st
+2527 1st 2nd 3rd Last 3rd 2nd 1st
+2528 1st 2nd 3rd Last 3rd 2nd 1st
+2529 1st 2nd 3rd Last 3rd 2nd 1st
+2530 1st 2nd 3rd Last 3rd 2nd 1st
+2531 1st 2nd 3rd Last 3rd 2nd 1st
+2532 1st 2nd 3rd Last 3rd 2nd 1st
+2533 1st 2nd 3rd Last 3rd 2nd 1st
+2534 1st 2nd 3rd Last 3rd 2nd 1st
+2535 1st 2nd 3rd Last 3rd 2nd 1st
+2536 1st 2nd 3rd Last 3rd 2nd 1st
+2537 1st 2nd 3rd Last 3rd 2nd 1st
+2538 1st 2nd 3rd Last 3rd 2nd 1st
+2539 1st 2nd 3rd Last 3rd 2nd 1st
+2540 1st 2nd 3rd Last 3rd 2nd 1st
+2541 1st 2nd 3rd Last 3rd 2nd 1st
+2542 1st 2nd 3rd Last 3rd 2nd 1st
+2543 1st 2nd 3rd Last 3rd 2nd 1st
+2544 1st 2nd 3rd Last 3rd 2nd 1st
+2545 1st 2nd 3rd Last 3rd 2nd 1st
+2546 1st 2nd 3rd Last 3rd 2nd 1st
+2547 1st 2nd 3rd Last 3rd 2nd 1st
+2548 1st 2nd 3rd Last 3rd 2nd 1st
+2549 1st 2nd 3rd Last 3rd 2nd 1st
+2550 1st 2nd 3rd Last 3rd 2nd 1st
+2551 1st 2nd 3rd Last 3rd 2nd 1st
+2552 1st 2nd 3rd Last 3rd 2nd 1st
+2553 1st 2nd 3rd Last 3rd 2nd 1st
+2554 1st 2nd 3rd Last 3rd 2nd 1st
+2555 1st 2nd 3rd Last 3rd 2nd 1st
+2556 1st 2nd 3rd Last 3rd 2nd 1st
+2557 1st 2nd 3rd Last 3rd 2nd 1st
+2558 1st 2nd 3rd Last 3rd 2nd 1st
+2559 1st 2nd 3rd Last 3rd 2nd 1st
+2560 1st 2nd 3rd Last 3rd 2nd 1st
+2561 1st 2nd 3rd Last 3rd 2nd 1st
+2562 1st 2nd 3rd Last 3rd 2nd 1st
+2563 1st 2nd 3rd Last 3rd 2nd 1st
+2564 1st 2nd 3rd Last 3rd 2nd 1st
+2565 1st 2nd 3rd Last 3rd 2nd 1st
+2566 1st 2nd 3rd Last 3rd 2nd 1st
+2567 1st 2nd 3rd Last 3rd 2nd 1st
+2568 1st 2nd 3rd Last 3rd 2nd 1st
+2569 1st 2nd 3rd Last 3rd 2nd 1st
+2570 1st 2nd 3rd Last 3rd 2nd 1st
+2571 1st 2nd 3rd Last 3rd 2nd 1st
+2572 1st 2nd 3rd Last 3rd 2nd 1st
+2573 1st 2nd 3rd Last 3rd 2nd 1st
+2574 1st 2nd 3rd Last 3rd 2nd 1st
+2575 1st 2nd 3rd Last 3rd 2nd 1st
+2576 1st 2nd 3rd Last 3rd 2nd 1st
+2577 1st 2nd 3rd Last 3rd 2nd 1st
+2578 1st 2nd 3rd Last 3rd 2nd 1st
+2579 1st 2nd 3rd Last 3rd 2nd 1st
+2580 1st 2nd 3rd Last 3rd 2nd 1st
+2581 1st 2nd 3rd Last 3rd 2nd 1st
+2582 1st 2nd 3rd Last 3rd 2nd 1st
+2583 1st 2nd 3rd Last 3rd 2nd 1st
+2584 1st 2nd 3rd Last 3rd 2nd 1st
+2585 1st 2nd 3rd Last 3rd 2nd 1st
+2586 1st 2nd 3rd Last 3rd 2nd 1st
+2587 1st 2nd 3rd Last 3rd 2nd 1st
+2588 1st 2nd 3rd Last 3rd 2nd 1st
+2589 1st 2nd 3rd Last 3rd 2nd 1st
+2590 1st 2nd 3rd Last 3rd 2nd 1st
+2591 1st 2nd 3rd Last 3rd 2nd 1st
+2592 1st 2nd 3rd Last 3rd 2nd 1st
+2593 1st 2nd 3rd Last 3rd 2nd 1st
+2594 1st 2nd 3rd Last 3rd 2nd 1st
+2595 1st 2nd 3rd Last 3rd 2nd 1st
+2596 1st 2nd 3rd Last 3rd 2nd 1st
+2597 1st 2nd 3rd Last 3rd 2nd 1st
+2598 1st 2nd 3rd Last 3rd 2nd 1st
+2599 1st 2nd 3rd Last 3rd 2nd 1st
+2600 1st 2nd 3rd Last 3rd 2nd 1st
+2601 1st 2nd 3rd Last 3rd 2nd 1st
+2602 1st 2nd 3rd Last 3rd 2nd 1st
+2603 1st 2nd 3rd Last 3rd 2nd 1st
+2604 1st 2nd 3rd Last 3rd 2nd 1st
+2605 1st 2nd 3rd Last 3rd 2nd 1st
+2606 1st 2nd 3rd Last 3rd 2nd 1st
+2607 1st 2nd 3rd Last 3rd 2nd 1st
+2608 1st 2nd 3rd Last 3rd 2nd 1st
+2609 1st 2nd 3rd Last 3rd 2nd 1st
+2610 1st 2nd 3rd Last 3rd 2nd 1st
+2611 1st 2nd 3rd Last 3rd 2nd 1st
+2612 1st 2nd 3rd Last 3rd 2nd 1st
+2613 1st 2nd 3rd Last 3rd 2nd 1st
+2614 1st 2nd 3rd Last 3rd 2nd 1st
+2615 1st 2nd 3rd Last 3rd 2nd 1st
+2616 1st 2nd 3rd Last 3rd 2nd 1st
+2617 1st 2nd 3rd Last 3rd 2nd 1st
+2618 1st 2nd 3rd Last 3rd 2nd 1st
+2619 1st 2nd 3rd Last 3rd 2nd 1st
+2620 1st 2nd 3rd Last 3rd 2nd 1st
+2621 1st 2nd 3rd Last 3rd 2nd 1st
+2622 1st 2nd 3rd Last 3rd 2nd 1st
+2623 1st 2nd 3rd Last 3rd 2nd 1st
+2624 1st 2nd 3rd Last 3rd 2nd 1st
+2625 1st 2nd 3rd Last 3rd 2nd 1st
+2626 1st 2nd 3rd Last 3rd 2nd 1st
+2627 1st 2nd 3rd Last 3rd 2nd 1st
+2628 1st 2nd 3rd Last 3rd 2nd 1st
+2629 1st 2nd 3rd Last 3rd 2nd 1st
+2630 1st 2nd 3rd Last 3rd 2nd 1st
+2631 1st 2nd 3rd Last 3rd 2nd 1st
+2632 1st 2nd 3rd Last 3rd 2nd 1st
+2633 1st 2nd 3rd Last 3rd 2nd 1st
+2634 1st 2nd 3rd Last 3rd 2nd 1st
+2635 1st 2nd 3rd Last 3rd 2nd 1st
+2636 1st 2nd 3rd Last 3rd 2nd 1st
+2637 1st 2nd 3rd Last 3rd 2nd 1st
+2638 1st 2nd 3rd Last 3rd 2nd 1st
+2639 1st 2nd 3rd Last 3rd 2nd 1st
+2640 1st 2nd 3rd Last 3rd 2nd 1st
+2641 1st 2nd 3rd Last 3rd 2nd 1st
+2642 1st 2nd 3rd Last 3rd 2nd 1st
+2643 1st 2nd 3rd Last 3rd 2nd 1st
+2644 1st 2nd 3rd Last 3rd 2nd 1st
+2645 1st 2nd 3rd Last 3rd 2nd 1st
+2646 1st 2nd 3rd Last 3rd 2nd 1st
+2647 1st 2nd 3rd Last 3rd 2nd 1st
+2648 1st 2nd 3rd Last 3rd 2nd 1st
+2649 1st 2nd 3rd Last 3rd 2nd 1st
+2650 1st 2nd 3rd Last 3rd 2nd 1st
+2651 1st 2nd 3rd Last 3rd 2nd 1st
+2652 1st 2nd 3rd Last 3rd 2nd 1st
+2653 1st 2nd 3rd Last 3rd 2nd 1st
+2654 1st 2nd 3rd Last 3rd 2nd 1st
+2655 1st 2nd 3rd Last 3rd 2nd 1st
+2656 1st 2nd 3rd Last 3rd 2nd 1st
+2657 1st 2nd 3rd Last 3rd 2nd 1st
+2658 1st 2nd 3rd Last 3rd 2nd 1st
+2659 1st 2nd 3rd Last 3rd 2nd 1st
+2660 1st 2nd 3rd Last 3rd 2nd 1st
+2661 1st 2nd 3rd Last 3rd 2nd 1st
+2662 1st 2nd 3rd Last 3rd 2nd 1st
+2663 1st 2nd 3rd Last 3rd 2nd 1st
+2664 1st 2nd 3rd Last 3rd 2nd 1st
+2665 1st 2nd 3rd Last 3rd 2nd 1st
+2666 1st 2nd 3rd Last 3rd 2nd 1st
+2667 1st 2nd 3rd Last 3rd 2nd 1st
+2668 1st 2nd 3rd Last 3rd 2nd 1st
+2669 1st 2nd 3rd Last 3rd 2nd 1st
+2670 1st 2nd 3rd Last 3rd 2nd 1st
+2671 1st 2nd 3rd Last 3rd 2nd 1st
+2672 1st 2nd 3rd Last 3rd 2nd 1st
+2673 1st 2nd 3rd Last 3rd 2nd 1st
+2674 1st 2nd 3rd Last 3rd 2nd 1st
+2675 1st 2nd 3rd Last 3rd 2nd 1st
+2676 1st 2nd 3rd Last 3rd 2nd 1st
+2677 1st 2nd 3rd Last 3rd 2nd 1st
+2678 1st 2nd 3rd Last 3rd 2nd 1st
+2679 1st 2nd 3rd Last 3rd 2nd 1st
+2680 1st 2nd 3rd Last 3rd 2nd 1st
+2681 1st 2nd 3rd Last 3rd 2nd 1st
+2682 1st 2nd 3rd Last 3rd 2nd 1st
+2683 1st 2nd 3rd Last 3rd 2nd 1st
+2684 1st 2nd 3rd Last 3rd 2nd 1st
+2685 1st 2nd 3rd Last 3rd 2nd 1st
+2686 1st 2nd 3rd Last 3rd 2nd 1st
+2687 1st 2nd 3rd Last 3rd 2nd 1st
+2688 1st 2nd 3rd Last 3rd 2nd 1st
+2689 1st 2nd 3rd Last 3rd 2nd 1st
+2690 1st 2nd 3rd Last 3rd 2nd 1st
+2691 1st 2nd 3rd Last 3rd 2nd 1st
+2692 1st 2nd 3rd Last 3rd 2nd 1st
+2693 1st 2nd 3rd Last 3rd 2nd 1st
+2694 1st 2nd 3rd Last 3rd 2nd 1st
+2695 1st 2nd 3rd Last 3rd 2nd 1st
+2696 1st 2nd 3rd Last 3rd 2nd 1st
+2697 1st 2nd 3rd Last 3rd 2nd 1st
+2698 1st 2nd 3rd Last 3rd 2nd 1st
+2699 1st 2nd 3rd Last 3rd 2nd 1st
+2700 1st 2nd 3rd Last 3rd 2nd 1st
+2701 1st 2nd 3rd Last 3rd 2nd 1st
+2702 1st 2nd 3rd Last 3rd 2nd 1st
+2703 1st 2nd 3rd Last 3rd 2nd 1st
+2704 1st 2nd 3rd Last 3rd 2nd 1st
+2705 1st 2nd 3rd Last 3rd 2nd 1st
+2706 1st 2nd 3rd Last 3rd 2nd 1st
+2707 1st 2nd 3rd Last 3rd 2nd 1st
+2708 1st 2nd 3rd Last 3rd 2nd 1st
+2709 1st 2nd 3rd Last 3rd 2nd 1st
+2710 1st 2nd 3rd Last 3rd 2nd 1st
+2711 1st 2nd 3rd Last 3rd 2nd 1st
+2712 1st 2nd 3rd Last 3rd 2nd 1st
+2713 1st 2nd 3rd Last 3rd 2nd 1st
+2714 1st 2nd 3rd Last 3rd 2nd 1st
+2715 1st 2nd 3rd Last 3rd 2nd 1st
+2716 1st 2nd 3rd Last 3rd 2nd 1st
+2717 1st 2nd 3rd Last 3rd 2nd 1st
+2718 1st 2nd 3rd Last 3rd 2nd 1st
+2719 1st 2nd 3rd Last 3rd 2nd 1st
+2720 1st 2nd 3rd Last 3rd 2nd 1st
+2721 1st 2nd 3rd Last 3rd 2nd 1st
+2722 1st 2nd 3rd Last 3rd 2nd 1st
+2723 1st 2nd 3rd Last 3rd 2nd 1st
+2724 1st 2nd 3rd Last 3rd 2nd 1st
+2725 1st 2nd 3rd Last 3rd 2nd 1st
+2726 1st 2nd 3rd Last 3rd 2nd 1st
+2727 1st 2nd 3rd Last 3rd 2nd 1st
+2728 1st 2nd 3rd Last 3rd 2nd 1st
+2729 1st 2nd 3rd Last 3rd 2nd 1st
+2730 1st 2nd 3rd Last 3rd 2nd 1st
+2731 1st 2nd 3rd Last 3rd 2nd 1st
+2732 1st 2nd 3rd Last 3rd 2nd 1st
+2733 1st 2nd 3rd Last 3rd 2nd 1st
+2734 1st 2nd 3rd Last 3rd 2nd 1st
+2735 1st 2nd 3rd Last 3rd 2nd 1st
+2736 1st 2nd 3rd Last 3rd 2nd 1st
+2737 1st 2nd 3rd Last 3rd 2nd 1st
+2738 1st 2nd 3rd Last 3rd 2nd 1st
+2739 1st 2nd 3rd Last 3rd 2nd 1st
+2740 1st 2nd 3rd Last 3rd 2nd 1st
+2741 1st 2nd 3rd Last 3rd 2nd 1st
+2742 1st 2nd 3rd Last 3rd 2nd 1st
+2743 1st 2nd 3rd Last 3rd 2nd 1st
+2744 1st 2nd 3rd Last 3rd 2nd 1st
+2745 1st 2nd 3rd Last 3rd 2nd 1st
+2746 1st 2nd 3rd Last 3rd 2nd 1st
+2747 1st 2nd 3rd Last 3rd 2nd 1st
+2748 1st 2nd 3rd Last 3rd 2nd 1st
+2749 1st 2nd 3rd Last 3rd 2nd 1st
+2750 1st 2nd 3rd Last 3rd 2nd 1st
+2751 1st 2nd 3rd Last 3rd 2nd 1st
+2752 1st 2nd 3rd Last 3rd 2nd 1st
+2753 1st 2nd 3rd Last 3rd 2nd 1st
+2754 1st 2nd 3rd Last 3rd 2nd 1st
+2755 1st 2nd 3rd Last 3rd 2nd 1st
+2756 1st 2nd 3rd Last 3rd 2nd 1st
+2757 1st 2nd 3rd Last 3rd 2nd 1st
+2758 1st 2nd 3rd Last 3rd 2nd 1st
+2759 1st 2nd 3rd Last 3rd 2nd 1st
+2760 1st 2nd 3rd Last 3rd 2nd 1st
+2761 1st 2nd 3rd Last 3rd 2nd 1st
+2762 1st 2nd 3rd Last 3rd 2nd 1st
+2763 1st 2nd 3rd Last 3rd 2nd 1st
+2764 1st 2nd 3rd Last 3rd 2nd 1st
+2765 1st 2nd 3rd Last 3rd 2nd 1st
+2766 1st 2nd 3rd Last 3rd 2nd 1st
+2767 1st 2nd 3rd Last 3rd 2nd 1st
+2768 1st 2nd 3rd Last 3rd 2nd 1st
+2769 1st 2nd 3rd Last 3rd 2nd 1st
+2770 1st 2nd 3rd Last 3rd 2nd 1st
+2771 1st 2nd 3rd Last 3rd 2nd 1st
+2772 1st 2nd 3rd Last 3rd 2nd 1st
+2773 1st 2nd 3rd Last 3rd 2nd 1st
+2774 1st 2nd 3rd Last 3rd 2nd 1st
+2775 1st 2nd 3rd Last 3rd 2nd 1st
+2776 1st 2nd 3rd Last 3rd 2nd 1st
+2777 1st 2nd 3rd Last 3rd 2nd 1st
+2778 1st 2nd 3rd Last 3rd 2nd 1st
+2779 1st 2nd 3rd Last 3rd 2nd 1st
+2780 1st 2nd 3rd Last 3rd 2nd 1st
+2781 1st 2nd 3rd Last 3rd 2nd 1st
+2782 1st 2nd 3rd Last 3rd 2nd 1st
+2783 1st 2nd 3rd Last 3rd 2nd 1st
+2784 1st 2nd 3rd Last 3rd 2nd 1st
+2785 1st 2nd 3rd Last 3rd 2nd 1st
+2786 1st 2nd 3rd Last 3rd 2nd 1st
+2787 1st 2nd 3rd Last 3rd 2nd 1st
+2788 1st 2nd 3rd Last 3rd 2nd 1st
+2789 1st 2nd 3rd Last 3rd 2nd 1st
+2790 1st 2nd 3rd Last 3rd 2nd 1st
+2791 1st 2nd 3rd Last 3rd 2nd 1st
+2792 1st 2nd 3rd Last 3rd 2nd 1st
+2793 1st 2nd 3rd Last 3rd 2nd 1st
+2794 1st 2nd 3rd Last 3rd 2nd 1st
+2795 1st 2nd 3rd Last 3rd 2nd 1st
+2796 1st 2nd 3rd Last 3rd 2nd 1st
+2797 1st 2nd 3rd Last 3rd 2nd 1st
+2798 1st 2nd 3rd Last 3rd 2nd 1st
+2799 1st 2nd 3rd Last 3rd 2nd 1st
+2800 1st 2nd 3rd Last 3rd 2nd 1st
+2801 1st 2nd 3rd Last 3rd 2nd 1st
+2802 1st 2nd 3rd Last 3rd 2nd 1st
+2803 1st 2nd 3rd Last 3rd 2nd 1st
+2804 1st 2nd 3rd Last 3rd 2nd 1st
+2805 1st 2nd 3rd Last 3rd 2nd 1st
+2806 1st 2nd 3rd Last 3rd 2nd 1st
+2807 1st 2nd 3rd Last 3rd 2nd 1st
+2808 1st 2nd 3rd Last 3rd 2nd 1st
+2809 1st 2nd 3rd Last 3rd 2nd 1st
+2810 1st 2nd 3rd Last 3rd 2nd 1st
+2811 1st 2nd 3rd Last 3rd 2nd 1st
+2812 1st 2nd 3rd Last 3rd 2nd 1st
+2813 1st 2nd 3rd Last 3rd 2nd 1st
+2814 1st 2nd 3rd Last 3rd 2nd 1st
+2815 1st 2nd 3rd Last 3rd 2nd 1st
+2816 1st 2nd 3rd Last 3rd 2nd 1st
+2817 1st 2nd 3rd Last 3rd 2nd 1st
+2818 1st 2nd 3rd Last 3rd 2nd 1st
+2819 1st 2nd 3rd Last 3rd 2nd 1st
+2820 1st 2nd 3rd Last 3rd 2nd 1st
+2821 1st 2nd 3rd Last 3rd 2nd 1st
+2822 1st 2nd 3rd Last 3rd 2nd 1st
+2823 1st 2nd 3rd Last 3rd 2nd 1st
+2824 1st 2nd 3rd Last 3rd 2nd 1st
+2825 1st 2nd 3rd Last 3rd 2nd 1st
+2826 1st 2nd 3rd Last 3rd 2nd 1st
+2827 1st 2nd 3rd Last 3rd 2nd 1st
+2828 1st 2nd 3rd Last 3rd 2nd 1st
+2829 1st 2nd 3rd Last 3rd 2nd 1st
+2830 1st 2nd 3rd Last 3rd 2nd 1st
+2831 1st 2nd 3rd Last 3rd 2nd 1st
+2832 1st 2nd 3rd Last 3rd 2nd 1st
+2833 1st 2nd 3rd Last 3rd 2nd 1st
+2834 1st 2nd 3rd Last 3rd 2nd 1st
+2835 1st 2nd 3rd Last 3rd 2nd 1st
+2836 1st 2nd 3rd Last 3rd 2nd 1st
+2837 1st 2nd 3rd Last 3rd 2nd 1st
+2838 1st 2nd 3rd Last 3rd 2nd 1st
+2839 1st 2nd 3rd Last 3rd 2nd 1st
+2840 1st 2nd 3rd Last 3rd 2nd 1st
+2841 1st 2nd 3rd Last 3rd 2nd 1st
+2842 1st 2nd 3rd Last 3rd 2nd 1st
+2843 1st 2nd 3rd Last 3rd 2nd 1st
+2844 1st 2nd 3rd Last 3rd 2nd 1st
+2845 1st 2nd 3rd Last 3rd 2nd 1st
+2846 1st 2nd 3rd Last 3rd 2nd 1st
+2847 1st 2nd 3rd Last 3rd 2nd 1st
+2848 1st 2nd 3rd Last 3rd 2nd 1st
+2849 1st 2nd 3rd Last 3rd 2nd 1st
+2850 1st 2nd 3rd Last 3rd 2nd 1st
+2851 1st 2nd 3rd Last 3rd 2nd 1st
+2852 1st 2nd 3rd Last 3rd 2nd 1st
+2853 1st 2nd 3rd Last 3rd 2nd 1st
+2854 1st 2nd 3rd Last 3rd 2nd 1st
+2855 1st 2nd 3rd Last 3rd 2nd 1st
+2856 1st 2nd 3rd Last 3rd 2nd 1st
+2857 1st 2nd 3rd Last 3rd 2nd 1st
+2858 1st 2nd 3rd Last 3rd 2nd 1st
+2859 1st 2nd 3rd Last 3rd 2nd 1st
+2860 1st 2nd 3rd Last 3rd 2nd 1st
+2861 1st 2nd 3rd Last 3rd 2nd 1st
+2862 1st 2nd 3rd Last 3rd 2nd 1st
+2863 1st 2nd 3rd Last 3rd 2nd 1st
+2864 1st 2nd 3rd Last 3rd 2nd 1st
+2865 1st 2nd 3rd Last 3rd 2nd 1st
+2866 1st 2nd 3rd Last 3rd 2nd 1st
+2867 1st 2nd 3rd Last 3rd 2nd 1st
+2868 1st 2nd 3rd Last 3rd 2nd 1st
+2869 1st 2nd 3rd Last 3rd 2nd 1st
+2870 1st 2nd 3rd Last 3rd 2nd 1st
+2871 1st 2nd 3rd Last 3rd 2nd 1st
+2872 1st 2nd 3rd Last 3rd 2nd 1st
+2873 1st 2nd 3rd Last 3rd 2nd 1st
+2874 1st 2nd 3rd Last 3rd 2nd 1st
+2875 1st 2nd 3rd Last 3rd 2nd 1st
+2876 1st 2nd 3rd Last 3rd 2nd 1st
+2877 1st 2nd 3rd Last 3rd 2nd 1st
+2878 1st 2nd 3rd Last 3rd 2nd 1st
+2879 1st 2nd 3rd Last 3rd 2nd 1st
+2880 1st 2nd 3rd Last 3rd 2nd 1st
+2881 1st 2nd 3rd Last 3rd 2nd 1st
+2882 1st 2nd 3rd Last 3rd 2nd 1st
+2883 1st 2nd 3rd Last 3rd 2nd 1st
+2884 1st 2nd 3rd Last 3rd 2nd 1st
+2885 1st 2nd 3rd Last 3rd 2nd 1st
+2886 1st 2nd 3rd Last 3rd 2nd 1st
+2887 1st 2nd 3rd Last 3rd 2nd 1st
+2888 1st 2nd 3rd Last 3rd 2nd 1st
+2889 1st 2nd 3rd Last 3rd 2nd 1st
+2890 1st 2nd 3rd Last 3rd 2nd 1st
+2891 1st 2nd 3rd Last 3rd 2nd 1st
+2892 1st 2nd 3rd Last 3rd 2nd 1st
+2893 1st 2nd 3rd Last 3rd 2nd 1st
+2894 1st 2nd 3rd Last 3rd 2nd 1st
+2895 1st 2nd 3rd Last 3rd 2nd 1st
+2896 1st 2nd 3rd Last 3rd 2nd 1st
+2897 1st 2nd 3rd Last 3rd 2nd 1st
+2898 1st 2nd 3rd Last 3rd 2nd 1st
+2899 1st 2nd 3rd Last 3rd 2nd 1st
+2900 1st 2nd 3rd Last 3rd 2nd 1st
+2901 1st 2nd 3rd Last 3rd 2nd 1st
+2902 1st 2nd 3rd Last 3rd 2nd 1st
+2903 1st 2nd 3rd Last 3rd 2nd 1st
+2904 1st 2nd 3rd Last 3rd 2nd 1st
+2905 1st 2nd 3rd Last 3rd 2nd 1st
+2906 1st 2nd 3rd Last 3rd 2nd 1st
+2907 1st 2nd 3rd Last 3rd 2nd 1st
+2908 1st 2nd 3rd Last 3rd 2nd 1st
+2909 1st 2nd 3rd Last 3rd 2nd 1st
+2910 1st 2nd 3rd Last 3rd 2nd 1st
+2911 1st 2nd 3rd Last 3rd 2nd 1st
+2912 1st 2nd 3rd Last 3rd 2nd 1st
+2913 1st 2nd 3rd Last 3rd 2nd 1st
+2914 1st 2nd 3rd Last 3rd 2nd 1st
+2915 1st 2nd 3rd Last 3rd 2nd 1st
+2916 1st 2nd 3rd Last 3rd 2nd 1st
+2917 1st 2nd 3rd Last 3rd 2nd 1st
+2918 1st 2nd 3rd Last 3rd 2nd 1st
+2919 1st 2nd 3rd Last 3rd 2nd 1st
+2920 1st 2nd 3rd Last 3rd 2nd 1st
+2921 1st 2nd 3rd Last 3rd 2nd 1st
+2922 1st 2nd 3rd Last 3rd 2nd 1st
+2923 1st 2nd 3rd Last 3rd 2nd 1st
+2924 1st 2nd 3rd Last 3rd 2nd 1st
+2925 1st 2nd 3rd Last 3rd 2nd 1st
+2926 1st 2nd 3rd Last 3rd 2nd 1st
+2927 1st 2nd 3rd Last 3rd 2nd 1st
+2928 1st 2nd 3rd Last 3rd 2nd 1st
+2929 1st 2nd 3rd Last 3rd 2nd 1st
+2930 1st 2nd 3rd Last 3rd 2nd 1st
+2931 1st 2nd 3rd Last 3rd 2nd 1st
+2932 1st 2nd 3rd Last 3rd 2nd 1st
+2933 1st 2nd 3rd Last 3rd 2nd 1st
+2934 1st 2nd 3rd Last 3rd 2nd 1st
+2935 1st 2nd 3rd Last 3rd 2nd 1st
+2936 1st 2nd 3rd Last 3rd 2nd 1st
+2937 1st 2nd 3rd Last 3rd 2nd 1st
+2938 1st 2nd 3rd Last 3rd 2nd 1st
+2939 1st 2nd 3rd Last 3rd 2nd 1st
+2940 1st 2nd 3rd Last 3rd 2nd 1st
+2941 1st 2nd 3rd Last 3rd 2nd 1st
+2942 1st 2nd 3rd Last 3rd 2nd 1st
+2943 1st 2nd 3rd Last 3rd 2nd 1st
+2944 1st 2nd 3rd Last 3rd 2nd 1st
+2945 1st 2nd 3rd Last 3rd 2nd 1st
+2946 1st 2nd 3rd Last 3rd 2nd 1st
+2947 1st 2nd 3rd Last 3rd 2nd 1st
+2948 1st 2nd 3rd Last 3rd 2nd 1st
+2949 1st 2nd 3rd Last 3rd 2nd 1st
+2950 1st 2nd 3rd Last 3rd 2nd 1st
+2951 1st 2nd 3rd Last 3rd 2nd 1st
+2952 1st 2nd 3rd Last 3rd 2nd 1st
+2953 1st 2nd 3rd Last 3rd 2nd 1st
+2954 1st 2nd 3rd Last 3rd 2nd 1st
+2955 1st 2nd 3rd Last 3rd 2nd 1st
+2956 1st 2nd 3rd Last 3rd 2nd 1st
+2957 1st 2nd 3rd Last 3rd 2nd 1st
+2958 1st 2nd 3rd Last 3rd 2nd 1st
+2959 1st 2nd 3rd Last 3rd 2nd 1st
+2960 1st 2nd 3rd Last 3rd 2nd 1st
+2961 1st 2nd 3rd Last 3rd 2nd 1st
+2962 1st 2nd 3rd Last 3rd 2nd 1st
+2963 1st 2nd 3rd Last 3rd 2nd 1st
+2964 1st 2nd 3rd Last 3rd 2nd 1st
+2965 1st 2nd 3rd Last 3rd 2nd 1st
+2966 1st 2nd 3rd Last 3rd 2nd 1st
+2967 1st 2nd 3rd Last 3rd 2nd 1st
+2968 1st 2nd 3rd Last 3rd 2nd 1st
+2969 1st 2nd 3rd Last 3rd 2nd 1st
+2970 1st 2nd 3rd Last 3rd 2nd 1st
+2971 1st 2nd 3rd Last 3rd 2nd 1st
+2972 1st 2nd 3rd Last 3rd 2nd 1st
+2973 1st 2nd 3rd Last 3rd 2nd 1st
+2974 1st 2nd 3rd Last 3rd 2nd 1st
+2975 1st 2nd 3rd Last 3rd 2nd 1st
+2976 1st 2nd 3rd Last 3rd 2nd 1st
+2977 1st 2nd 3rd Last 3rd 2nd 1st
+2978 1st 2nd 3rd Last 3rd 2nd 1st
+2979 1st 2nd 3rd Last 3rd 2nd 1st
+2980 1st 2nd 3rd Last 3rd 2nd 1st
+2981 1st 2nd 3rd Last 3rd 2nd 1st
+2982 1st 2nd 3rd Last 3rd 2nd 1st
+2983 1st 2nd 3rd Last 3rd 2nd 1st
+2984 1st 2nd 3rd Last 3rd 2nd 1st
+2985 1st 2nd 3rd Last 3rd 2nd 1st
+2986 1st 2nd 3rd Last 3rd 2nd 1st
+2987 1st 2nd 3rd Last 3rd 2nd 1st
+2988 1st 2nd 3rd Last 3rd 2nd 1st
+2989 1st 2nd 3rd Last 3rd 2nd 1st
+2990 1st 2nd 3rd Last 3rd 2nd 1st
+2991 1st 2nd 3rd Last 3rd 2nd 1st
+2992 1st 2nd 3rd Last 3rd 2nd 1st
+2993 1st 2nd 3rd Last 3rd 2nd 1st
+2994 1st 2nd 3rd Last 3rd 2nd 1st
+2995 1st 2nd 3rd Last 3rd 2nd 1st
+2996 1st 2nd 3rd Last 3rd 2nd 1st
+2997 1st 2nd 3rd Last 3rd 2nd 1st
+2998 1st 2nd 3rd Last 3rd 2nd 1st
+2999 1st 2nd 3rd Last 3rd 2nd 1st
+3000 1st 2nd 3rd Last 3rd 2nd 1st
+3001 1st 2nd 3rd Last 3rd 2nd 1st
+3002 1st 2nd 3rd Last 3rd 2nd 1st
+3003 1st 2nd 3rd Last 3rd 2nd 1st
+3004 1st 2nd 3rd Last 3rd 2nd 1st
+3005 1st 2nd 3rd Last 3rd 2nd 1st
+3006 1st 2nd 3rd Last 3rd 2nd 1st
+3007 1st 2nd 3rd Last 3rd 2nd 1st
+3008 1st 2nd 3rd Last 3rd 2nd 1st
+3009 1st 2nd 3rd Last 3rd 2nd 1st
+3010 1st 2nd 3rd Last 3rd 2nd 1st
+3011 1st 2nd 3rd Last 3rd 2nd 1st
+3012 1st 2nd 3rd Last 3rd 2nd 1st
+3013 1st 2nd 3rd Last 3rd 2nd 1st
+3014 1st 2nd 3rd Last 3rd 2nd 1st
+3015 1st 2nd 3rd Last 3rd 2nd 1st
+3016 1st 2nd 3rd Last 3rd 2nd 1st
+3017 1st 2nd 3rd Last 3rd 2nd 1st
+3018 1st 2nd 3rd Last 3rd 2nd 1st
+3019 1st 2nd 3rd Last 3rd 2nd 1st
+3020 1st 2nd 3rd Last 3rd 2nd 1st
+3021 1st 2nd 3rd Last 3rd 2nd 1st
+3022 1st 2nd 3rd Last 3rd 2nd 1st
+3023 1st 2nd 3rd Last 3rd 2nd 1st
+3024 1st 2nd 3rd Last 3rd 2nd 1st
+3025 1st 2nd 3rd Last 3rd 2nd 1st
+3026 1st 2nd 3rd Last 3rd 2nd 1st
+3027 1st 2nd 3rd Last 3rd 2nd 1st
+3028 1st 2nd 3rd Last 3rd 2nd 1st
+3029 1st 2nd 3rd Last 3rd 2nd 1st
+3030 1st 2nd 3rd Last 3rd 2nd 1st
+3031 1st 2nd 3rd Last 3rd 2nd 1st
+3032 1st 2nd 3rd Last 3rd 2nd 1st
+3033 1st 2nd 3rd Last 3rd 2nd 1st
+3034 1st 2nd 3rd Last 3rd 2nd 1st
+3035 1st 2nd 3rd Last 3rd 2nd 1st
+3036 1st 2nd 3rd Last 3rd 2nd 1st
+3037 1st 2nd 3rd Last 3rd 2nd 1st
+3038 1st 2nd 3rd Last 3rd 2nd 1st
+3039 1st 2nd 3rd Last 3rd 2nd 1st
+3040 1st 2nd 3rd Last 3rd 2nd 1st
+3041 1st 2nd 3rd Last 3rd 2nd 1st
+3042 1st 2nd 3rd Last 3rd 2nd 1st
+3043 1st 2nd 3rd Last 3rd 2nd 1st
+3044 1st 2nd 3rd Last 3rd 2nd 1st
+3045 1st 2nd 3rd Last 3rd 2nd 1st
+3046 1st 2nd 3rd Last 3rd 2nd 1st
+3047 1st 2nd 3rd Last 3rd 2nd 1st
+3048 1st 2nd 3rd Last 3rd 2nd 1st
+3049 1st 2nd 3rd Last 3rd 2nd 1st
+3050 1st 2nd 3rd Last 3rd 2nd 1st
+3051 1st 2nd 3rd Last 3rd 2nd 1st
+3052 1st 2nd 3rd Last 3rd 2nd 1st
+3053 1st 2nd 3rd Last 3rd 2nd 1st
+3054 1st 2nd 3rd Last 3rd 2nd 1st
+3055 1st 2nd 3rd Last 3rd 2nd 1st
+3056 1st 2nd 3rd Last 3rd 2nd 1st
+3057 1st 2nd 3rd Last 3rd 2nd 1st
+3058 1st 2nd 3rd Last 3rd 2nd 1st
+3059 1st 2nd 3rd Last 3rd 2nd 1st
+3060 1st 2nd 3rd Last 3rd 2nd 1st
+3061 1st 2nd 3rd Last 3rd 2nd 1st
+3062 1st 2nd 3rd Last 3rd 2nd 1st
+3063 1st 2nd 3rd Last 3rd 2nd 1st
+3064 1st 2nd 3rd Last 3rd 2nd 1st
+3065 1st 2nd 3rd Last 3rd 2nd 1st
+3066 1st 2nd 3rd Last 3rd 2nd 1st
+3067 1st 2nd 3rd Last 3rd 2nd 1st
+3068 1st 2nd 3rd Last 3rd 2nd 1st
+3069 1st 2nd 3rd Last 3rd 2nd 1st
+3070 1st 2nd 3rd Last 3rd 2nd 1st
+3071 1st 2nd 3rd Last 3rd 2nd 1st
+3072 1st 2nd 3rd Last 3rd 2nd 1st
+3073 1st 2nd 3rd Last 3rd 2nd 1st
+3074 1st 2nd 3rd Last 3rd 2nd 1st
+3075 1st 2nd 3rd Last 3rd 2nd 1st
+3076 1st 2nd 3rd Last 3rd 2nd 1st
+3077 1st 2nd 3rd Last 3rd 2nd 1st
+3078 1st 2nd 3rd Last 3rd 2nd 1st
+3079 1st 2nd 3rd Last 3rd 2nd 1st
+3080 1st 2nd 3rd Last 3rd 2nd 1st
+3081 1st 2nd 3rd Last 3rd 2nd 1st
+3082 1st 2nd 3rd Last 3rd 2nd 1st
+3083 1st 2nd 3rd Last 3rd 2nd 1st
+3084 1st 2nd 3rd Last 3rd 2nd 1st
+3085 1st 2nd 3rd Last 3rd 2nd 1st
+3086 1st 2nd 3rd Last 3rd 2nd 1st
+3087 1st 2nd 3rd Last 3rd 2nd 1st
+3088 1st 2nd 3rd Last 3rd 2nd 1st
+3089 1st 2nd 3rd Last 3rd 2nd 1st
+3090 1st 2nd 3rd Last 3rd 2nd 1st
+3091 1st 2nd 3rd Last 3rd 2nd 1st
+3092 1st 2nd 3rd Last 3rd 2nd 1st
+3093 1st 2nd 3rd Last 3rd 2nd 1st
+3094 1st 2nd 3rd Last 3rd 2nd 1st
+3095 1st 2nd 3rd Last 3rd 2nd 1st
+3096 1st 2nd 3rd Last 3rd 2nd 1st
+3097 1st 2nd 3rd Last 3rd 2nd 1st
+3098 1st 2nd 3rd Last 3rd 2nd 1st
+3099 1st 2nd 3rd Last 3rd 2nd 1st
+3100 1st 2nd 3rd Last 3rd 2nd 1st
+3101 1st 2nd 3rd Last 3rd 2nd 1st
+3102 1st 2nd 3rd Last 3rd 2nd 1st
+3103 1st 2nd 3rd Last 3rd 2nd 1st
+3104 1st 2nd 3rd Last 3rd 2nd 1st
+3105 1st 2nd 3rd Last 3rd 2nd 1st
+3106 1st 2nd 3rd Last 3rd 2nd 1st
+3107 1st 2nd 3rd Last 3rd 2nd 1st
+3108 1st 2nd 3rd Last 3rd 2nd 1st
+3109 1st 2nd 3rd Last 3rd 2nd 1st
+3110 1st 2nd 3rd Last 3rd 2nd 1st
+3111 1st 2nd 3rd Last 3rd 2nd 1st
+3112 1st 2nd 3rd Last 3rd 2nd 1st
+3113 1st 2nd 3rd Last 3rd 2nd 1st
+3114 1st 2nd 3rd Last 3rd 2nd 1st
+3115 1st 2nd 3rd Last 3rd 2nd 1st
+3116 1st 2nd 3rd Last 3rd 2nd 1st
+3117 1st 2nd 3rd Last 3rd 2nd 1st
+3118 1st 2nd 3rd Last 3rd 2nd 1st
+3119 1st 2nd 3rd Last 3rd 2nd 1st
+3120 1st 2nd 3rd Last 3rd 2nd 1st
+3121 1st 2nd 3rd Last 3rd 2nd 1st
+3122 1st 2nd 3rd Last 3rd 2nd 1st
+3123 1st 2nd 3rd Last 3rd 2nd 1st
+3124 1st 2nd 3rd Last 3rd 2nd 1st
+3125 1st 2nd 3rd Last 3rd 2nd 1st
+3126 1st 2nd 3rd Last 3rd 2nd 1st
+3127 1st 2nd 3rd Last 3rd 2nd 1st
+3128 1st 2nd 3rd Last 3rd 2nd 1st
+3129 1st 2nd 3rd Last 3rd 2nd 1st
+3130 1st 2nd 3rd Last 3rd 2nd 1st
+3131 1st 2nd 3rd Last 3rd 2nd 1st
+3132 1st 2nd 3rd Last 3rd 2nd 1st
+3133 1st 2nd 3rd Last 3rd 2nd 1st
+3134 1st 2nd 3rd Last 3rd 2nd 1st
+3135 1st 2nd 3rd Last 3rd 2nd 1st
+3136 1st 2nd 3rd Last 3rd 2nd 1st
+3137 1st 2nd 3rd Last 3rd 2nd 1st
+3138 1st 2nd 3rd Last 3rd 2nd 1st
+3139 1st 2nd 3rd Last 3rd 2nd 1st
+3140 1st 2nd 3rd Last 3rd 2nd 1st
+3141 1st 2nd 3rd Last 3rd 2nd 1st
+3142 1st 2nd 3rd Last 3rd 2nd 1st
+3143 1st 2nd 3rd Last 3rd 2nd 1st
+3144 1st 2nd 3rd Last 3rd 2nd 1st
+3145 1st 2nd 3rd Last 3rd 2nd 1st
+3146 1st 2nd 3rd Last 3rd 2nd 1st
+3147 1st 2nd 3rd Last 3rd 2nd 1st
+3148 1st 2nd 3rd Last 3rd 2nd 1st
+3149 1st 2nd 3rd Last 3rd 2nd 1st
+3150 1st 2nd 3rd Last 3rd 2nd 1st
+3151 1st 2nd 3rd Last 3rd 2nd 1st
+3152 1st 2nd 3rd Last 3rd 2nd 1st
+3153 1st 2nd 3rd Last 3rd 2nd 1st
+3154 1st 2nd 3rd Last 3rd 2nd 1st
+3155 1st 2nd 3rd Last 3rd 2nd 1st
+3156 1st 2nd 3rd Last 3rd 2nd 1st
+3157 1st 2nd 3rd Last 3rd 2nd 1st
+3158 1st 2nd 3rd Last 3rd 2nd 1st
+3159 1st 2nd 3rd Last 3rd 2nd 1st
+3160 1st 2nd 3rd Last 3rd 2nd 1st
+3161 1st 2nd 3rd Last 3rd 2nd 1st
+3162 1st 2nd 3rd Last 3rd 2nd 1st
+3163 1st 2nd 3rd Last 3rd 2nd 1st
+3164 1st 2nd 3rd Last 3rd 2nd 1st
+3165 1st 2nd 3rd Last 3rd 2nd 1st
+3166 1st 2nd 3rd Last 3rd 2nd 1st
+3167 1st 2nd 3rd Last 3rd 2nd 1st
+3168 1st 2nd 3rd Last 3rd 2nd 1st
+3169 1st 2nd 3rd Last 3rd 2nd 1st
+3170 1st 2nd 3rd Last 3rd 2nd 1st
+3171 1st 2nd 3rd Last 3rd 2nd 1st
+3172 1st 2nd 3rd Last 3rd 2nd 1st
+3173 1st 2nd 3rd Last 3rd 2nd 1st
+3174 1st 2nd 3rd Last 3rd 2nd 1st
+3175 1st 2nd 3rd Last 3rd 2nd 1st
+3176 1st 2nd 3rd Last 3rd 2nd 1st
+3177 1st 2nd 3rd Last 3rd 2nd 1st
+3178 1st 2nd 3rd Last 3rd 2nd 1st
+3179 1st 2nd 3rd Last 3rd 2nd 1st
+3180 1st 2nd 3rd Last 3rd 2nd 1st
+3181 1st 2nd 3rd Last 3rd 2nd 1st
+3182 1st 2nd 3rd Last 3rd 2nd 1st
+3183 1st 2nd 3rd Last 3rd 2nd 1st
+3184 1st 2nd 3rd Last 3rd 2nd 1st
+3185 1st 2nd 3rd Last 3rd 2nd 1st
+3186 1st 2nd 3rd Last 3rd 2nd 1st
+3187 1st 2nd 3rd Last 3rd 2nd 1st
+3188 1st 2nd 3rd Last 3rd 2nd 1st
+3189 1st 2nd 3rd Last 3rd 2nd 1st
+3190 1st 2nd 3rd Last 3rd 2nd 1st
+3191 1st 2nd 3rd Last 3rd 2nd 1st
+3192 1st 2nd 3rd Last 3rd 2nd 1st
+3193 1st 2nd 3rd Last 3rd 2nd 1st
+3194 1st 2nd 3rd Last 3rd 2nd 1st
+3195 1st 2nd 3rd Last 3rd 2nd 1st
+3196 1st 2nd 3rd Last 3rd 2nd 1st
+3197 1st 2nd 3rd Last 3rd 2nd 1st
+3198 1st 2nd 3rd Last 3rd 2nd 1st
+3199 1st 2nd 3rd Last 3rd 2nd 1st
+3200 1st 2nd 3rd Last 3rd 2nd 1st
+3201 1st 2nd 3rd Last 3rd 2nd 1st
+3202 1st 2nd 3rd Last 3rd 2nd 1st
+3203 1st 2nd 3rd Last 3rd 2nd 1st
+3204 1st 2nd 3rd Last 3rd 2nd 1st
+3205 1st 2nd 3rd Last 3rd 2nd 1st
+3206 1st 2nd 3rd Last 3rd 2nd 1st
+3207 1st 2nd 3rd Last 3rd 2nd 1st
+3208 1st 2nd 3rd Last 3rd 2nd 1st
+3209 1st 2nd 3rd Last 3rd 2nd 1st
+3210 1st 2nd 3rd Last 3rd 2nd 1st
+3211 1st 2nd 3rd Last 3rd 2nd 1st
+3212 1st 2nd 3rd Last 3rd 2nd 1st
+3213 1st 2nd 3rd Last 3rd 2nd 1st
+3214 1st 2nd 3rd Last 3rd 2nd 1st
+3215 1st 2nd 3rd Last 3rd 2nd 1st
+3216 1st 2nd 3rd Last 3rd 2nd 1st
+3217 1st 2nd 3rd Last 3rd 2nd 1st
+3218 1st 2nd 3rd Last 3rd 2nd 1st
+3219 1st 2nd 3rd Last 3rd 2nd 1st
+3220 1st 2nd 3rd Last 3rd 2nd 1st
+3221 1st 2nd 3rd Last 3rd 2nd 1st
+3222 1st 2nd 3rd Last 3rd 2nd 1st
+3223 1st 2nd 3rd Last 3rd 2nd 1st
+3224 1st 2nd 3rd Last 3rd 2nd 1st
+3225 1st 2nd 3rd Last 3rd 2nd 1st
+3226 1st 2nd 3rd Last 3rd 2nd 1st
+3227 1st 2nd 3rd Last 3rd 2nd 1st
+3228 1st 2nd 3rd Last 3rd 2nd 1st
+3229 1st 2nd 3rd Last 3rd 2nd 1st
+3230 1st 2nd 3rd Last 3rd 2nd 1st
+3231 1st 2nd 3rd Last 3rd 2nd 1st
+3232 1st 2nd 3rd Last 3rd 2nd 1st
+3233 1st 2nd 3rd Last 3rd 2nd 1st
+3234 1st 2nd 3rd Last 3rd 2nd 1st
+3235 1st 2nd 3rd Last 3rd 2nd 1st
+3236 1st 2nd 3rd Last 3rd 2nd 1st
+3237 1st 2nd 3rd Last 3rd 2nd 1st
+3238 1st 2nd 3rd Last 3rd 2nd 1st
+3239 1st 2nd 3rd Last 3rd 2nd 1st
+3240 1st 2nd 3rd Last 3rd 2nd 1st
+3241 1st 2nd 3rd Last 3rd 2nd 1st
+3242 1st 2nd 3rd Last 3rd 2nd 1st
+3243 1st 2nd 3rd Last 3rd 2nd 1st
+3244 1st 2nd 3rd Last 3rd 2nd 1st
+3245 1st 2nd 3rd Last 3rd 2nd 1st
+3246 1st 2nd 3rd Last 3rd 2nd 1st
+3247 1st 2nd 3rd Last 3rd 2nd 1st
+3248 1st 2nd 3rd Last 3rd 2nd 1st
+3249 1st 2nd 3rd Last 3rd 2nd 1st
+3250 1st 2nd 3rd Last 3rd 2nd 1st
+3251 1st 2nd 3rd Last 3rd 2nd 1st
+3252 1st 2nd 3rd Last 3rd 2nd 1st
+3253 1st 2nd 3rd Last 3rd 2nd 1st
+3254 1st 2nd 3rd Last 3rd 2nd 1st
+3255 1st 2nd 3rd Last 3rd 2nd 1st
+3256 1st 2nd 3rd Last 3rd 2nd 1st
+3257 1st 2nd 3rd Last 3rd 2nd 1st
+3258 1st 2nd 3rd Last 3rd 2nd 1st
+3259 1st 2nd 3rd Last 3rd 2nd 1st
+3260 1st 2nd 3rd Last 3rd 2nd 1st
+3261 1st 2nd 3rd Last 3rd 2nd 1st
+3262 1st 2nd 3rd Last 3rd 2nd 1st
+3263 1st 2nd 3rd Last 3rd 2nd 1st
+3264 1st 2nd 3rd Last 3rd 2nd 1st
+3265 1st 2nd 3rd Last 3rd 2nd 1st
+3266 1st 2nd 3rd Last 3rd 2nd 1st
+3267 1st 2nd 3rd Last 3rd 2nd 1st
+3268 1st 2nd 3rd Last 3rd 2nd 1st
+3269 1st 2nd 3rd Last 3rd 2nd 1st
+3270 1st 2nd 3rd Last 3rd 2nd 1st
+3271 1st 2nd 3rd Last 3rd 2nd 1st
+3272 1st 2nd 3rd Last 3rd 2nd 1st
+3273 1st 2nd 3rd Last 3rd 2nd 1st
+3274 1st 2nd 3rd Last 3rd 2nd 1st
+3275 1st 2nd 3rd Last 3rd 2nd 1st
+3276 1st 2nd 3rd Last 3rd 2nd 1st
+3277 1st 2nd 3rd Last 3rd 2nd 1st
+3278 1st 2nd 3rd Last 3rd 2nd 1st
+3279 1st 2nd 3rd Last 3rd 2nd 1st
+3280 1st 2nd 3rd Last 3rd 2nd 1st
+3281 1st 2nd 3rd Last 3rd 2nd 1st
+3282 1st 2nd 3rd Last 3rd 2nd 1st
+3283 1st 2nd 3rd Last 3rd 2nd 1st
+3284 1st 2nd 3rd Last 3rd 2nd 1st
+3285 1st 2nd 3rd Last 3rd 2nd 1st
+3286 1st 2nd 3rd Last 3rd 2nd 1st
+3287 1st 2nd 3rd Last 3rd 2nd 1st
+3288 1st 2nd 3rd Last 3rd 2nd 1st
+3289 1st 2nd 3rd Last 3rd 2nd 1st
+3290 1st 2nd 3rd Last 3rd 2nd 1st
+3291 1st 2nd 3rd Last 3rd 2nd 1st
+3292 1st 2nd 3rd Last 3rd 2nd 1st
+3293 1st 2nd 3rd Last 3rd 2nd 1st
+3294 1st 2nd 3rd Last 3rd 2nd 1st
+3295 1st 2nd 3rd Last 3rd 2nd 1st
+3296 1st 2nd 3rd Last 3rd 2nd 1st
+3297 1st 2nd 3rd Last 3rd 2nd 1st
+3298 1st 2nd 3rd Last 3rd 2nd 1st
+3299 1st 2nd 3rd Last 3rd 2nd 1st
+3300 1st 2nd 3rd Last 3rd 2nd 1st
+3301 1st 2nd 3rd Last 3rd 2nd 1st
+3302 1st 2nd 3rd Last 3rd 2nd 1st
+3303 1st 2nd 3rd Last 3rd 2nd 1st
+3304 1st 2nd 3rd Last 3rd 2nd 1st
+3305 1st 2nd 3rd Last 3rd 2nd 1st
+3306 1st 2nd 3rd Last 3rd 2nd 1st
+3307 1st 2nd 3rd Last 3rd 2nd 1st
+3308 1st 2nd 3rd Last 3rd 2nd 1st
+3309 1st 2nd 3rd Last 3rd 2nd 1st
+3310 1st 2nd 3rd Last 3rd 2nd 1st
+3311 1st 2nd 3rd Last 3rd 2nd 1st
+3312 1st 2nd 3rd Last 3rd 2nd 1st
+3313 1st 2nd 3rd Last 3rd 2nd 1st
+3314 1st 2nd 3rd Last 3rd 2nd 1st
+3315 1st 2nd 3rd Last 3rd 2nd 1st
+3316 1st 2nd 3rd Last 3rd 2nd 1st
+3317 1st 2nd 3rd Last 3rd 2nd 1st
+3318 1st 2nd 3rd Last 3rd 2nd 1st
+3319 1st 2nd 3rd Last 3rd 2nd 1st
+3320 1st 2nd 3rd Last 3rd 2nd 1st
+3321 1st 2nd 3rd Last 3rd 2nd 1st
+3322 1st 2nd 3rd Last 3rd 2nd 1st
+3323 1st 2nd 3rd Last 3rd 2nd 1st
+3324 1st 2nd 3rd Last 3rd 2nd 1st
+3325 1st 2nd 3rd Last 3rd 2nd 1st
+3326 1st 2nd 3rd Last 3rd 2nd 1st
+3327 1st 2nd 3rd Last 3rd 2nd 1st
+3328 1st 2nd 3rd Last 3rd 2nd 1st
+3329 1st 2nd 3rd Last 3rd 2nd 1st
+3330 1st 2nd 3rd Last 3rd 2nd 1st
+3331 1st 2nd 3rd Last 3rd 2nd 1st
+3332 1st 2nd 3rd Last 3rd 2nd 1st
+3333 1st 2nd 3rd Last 3rd 2nd 1st
+3334 1st 2nd 3rd Last 3rd 2nd 1st
+3335 1st 2nd 3rd Last 3rd 2nd 1st
+3336 1st 2nd 3rd Last 3rd 2nd 1st
+3337 1st 2nd 3rd Last 3rd 2nd 1st
+3338 1st 2nd 3rd Last 3rd 2nd 1st
+3339 1st 2nd 3rd Last 3rd 2nd 1st
+3340 1st 2nd 3rd Last 3rd 2nd 1st
+3341 1st 2nd 3rd Last 3rd 2nd 1st
+3342 1st 2nd 3rd Last 3rd 2nd 1st
+3343 1st 2nd 3rd Last 3rd 2nd 1st
+3344 1st 2nd 3rd Last 3rd 2nd 1st
+3345 1st 2nd 3rd Last 3rd 2nd 1st
+3346 1st 2nd 3rd Last 3rd 2nd 1st
+3347 1st 2nd 3rd Last 3rd 2nd 1st
+3348 1st 2nd 3rd Last 3rd 2nd 1st
+3349 1st 2nd 3rd Last 3rd 2nd 1st
+3350 1st 2nd 3rd Last 3rd 2nd 1st
+3351 1st 2nd 3rd Last 3rd 2nd 1st
+3352 1st 2nd 3rd Last 3rd 2nd 1st
+3353 1st 2nd 3rd Last 3rd 2nd 1st
+3354 1st 2nd 3rd Last 3rd 2nd 1st
+3355 1st 2nd 3rd Last 3rd 2nd 1st
+3356 1st 2nd 3rd Last 3rd 2nd 1st
+3357 1st 2nd 3rd Last 3rd 2nd 1st
+3358 1st 2nd 3rd Last 3rd 2nd 1st
+3359 1st 2nd 3rd Last 3rd 2nd 1st
+3360 1st 2nd 3rd Last 3rd 2nd 1st
+3361 1st 2nd 3rd Last 3rd 2nd 1st
+3362 1st 2nd 3rd Last 3rd 2nd 1st
+3363 1st 2nd 3rd Last 3rd 2nd 1st
+3364 1st 2nd 3rd Last 3rd 2nd 1st
+3365 1st 2nd 3rd Last 3rd 2nd 1st
+3366 1st 2nd 3rd Last 3rd 2nd 1st
+3367 1st 2nd 3rd Last 3rd 2nd 1st
+3368 1st 2nd 3rd Last 3rd 2nd 1st
+3369 1st 2nd 3rd Last 3rd 2nd 1st
+3370 1st 2nd 3rd Last 3rd 2nd 1st
+3371 1st 2nd 3rd Last 3rd 2nd 1st
+3372 1st 2nd 3rd Last 3rd 2nd 1st
+3373 1st 2nd 3rd Last 3rd 2nd 1st
+3374 1st 2nd 3rd Last 3rd 2nd 1st
+3375 1st 2nd 3rd Last 3rd 2nd 1st
+3376 1st 2nd 3rd Last 3rd 2nd 1st
+3377 1st 2nd 3rd Last 3rd 2nd 1st
+3378 1st 2nd 3rd Last 3rd 2nd 1st
+3379 1st 2nd 3rd Last 3rd 2nd 1st
+3380 1st 2nd 3rd Last 3rd 2nd 1st
+3381 1st 2nd 3rd Last 3rd 2nd 1st
+3382 1st 2nd 3rd Last 3rd 2nd 1st
+3383 1st 2nd 3rd Last 3rd 2nd 1st
+3384 1st 2nd 3rd Last 3rd 2nd 1st
+3385 1st 2nd 3rd Last 3rd 2nd 1st
+3386 1st 2nd 3rd Last 3rd 2nd 1st
+3387 1st 2nd 3rd Last 3rd 2nd 1st
+3388 1st 2nd 3rd Last 3rd 2nd 1st
+3389 1st 2nd 3rd Last 3rd 2nd 1st
+3390 1st 2nd 3rd Last 3rd 2nd 1st
+3391 1st 2nd 3rd Last 3rd 2nd 1st
+3392 1st 2nd 3rd Last 3rd 2nd 1st
+3393 1st 2nd 3rd Last 3rd 2nd 1st
+3394 1st 2nd 3rd Last 3rd 2nd 1st
+3395 1st 2nd 3rd Last 3rd 2nd 1st
+3396 1st 2nd 3rd Last 3rd 2nd 1st
+3397 1st 2nd 3rd Last 3rd 2nd 1st
+3398 1st 2nd 3rd Last 3rd 2nd 1st
+3399 1st 2nd 3rd Last 3rd 2nd 1st
+3400 1st 2nd 3rd Last 3rd 2nd 1st
+3401 1st 2nd 3rd Last 3rd 2nd 1st
+3402 1st 2nd 3rd Last 3rd 2nd 1st
+3403 1st 2nd 3rd Last 3rd 2nd 1st
+3404 1st 2nd 3rd Last 3rd 2nd 1st
+3405 1st 2nd 3rd Last 3rd 2nd 1st
+3406 1st 2nd 3rd Last 3rd 2nd 1st
+3407 1st 2nd 3rd Last 3rd 2nd 1st
+3408 1st 2nd 3rd Last 3rd 2nd 1st
+3409 1st 2nd 3rd Last 3rd 2nd 1st
+3410 1st 2nd 3rd Last 3rd 2nd 1st
+3411 1st 2nd 3rd Last 3rd 2nd 1st
+3412 1st 2nd 3rd Last 3rd 2nd 1st
+3413 1st 2nd 3rd Last 3rd 2nd 1st
+3414 1st 2nd 3rd Last 3rd 2nd 1st
+3415 1st 2nd 3rd Last 3rd 2nd 1st
+3416 1st 2nd 3rd Last 3rd 2nd 1st
+3417 1st 2nd 3rd Last 3rd 2nd 1st
+3418 1st 2nd 3rd Last 3rd 2nd 1st
+3419 1st 2nd 3rd Last 3rd 2nd 1st
+3420 1st 2nd 3rd Last 3rd 2nd 1st
+3421 1st 2nd 3rd Last 3rd 2nd 1st
+3422 1st 2nd 3rd Last 3rd 2nd 1st
+3423 1st 2nd 3rd Last 3rd 2nd 1st
+3424 1st 2nd 3rd Last 3rd 2nd 1st
+3425 1st 2nd 3rd Last 3rd 2nd 1st
+3426 1st 2nd 3rd Last 3rd 2nd 1st
+3427 1st 2nd 3rd Last 3rd 2nd 1st
+3428 1st 2nd 3rd Last 3rd 2nd 1st
+3429 1st 2nd 3rd Last 3rd 2nd 1st
+3430 1st 2nd 3rd Last 3rd 2nd 1st
+3431 1st 2nd 3rd Last 3rd 2nd 1st
+3432 1st 2nd 3rd Last 3rd 2nd 1st
+3433 1st 2nd 3rd Last 3rd 2nd 1st
+3434 1st 2nd 3rd Last 3rd 2nd 1st
+3435 1st 2nd 3rd Last 3rd 2nd 1st
+3436 1st 2nd 3rd Last 3rd 2nd 1st
+3437 1st 2nd 3rd Last 3rd 2nd 1st
+3438 1st 2nd 3rd Last 3rd 2nd 1st
+3439 1st 2nd 3rd Last 3rd 2nd 1st
+3440 1st 2nd 3rd Last 3rd 2nd 1st
+3441 1st 2nd 3rd Last 3rd 2nd 1st
+3442 1st 2nd 3rd Last 3rd 2nd 1st
+3443 1st 2nd 3rd Last 3rd 2nd 1st
+3444 1st 2nd 3rd Last 3rd 2nd 1st
+3445 1st 2nd 3rd Last 3rd 2nd 1st
+3446 1st 2nd 3rd Last 3rd 2nd 1st
+3447 1st 2nd 3rd Last 3rd 2nd 1st
+3448 1st 2nd 3rd Last 3rd 2nd 1st
+3449 1st 2nd 3rd Last 3rd 2nd 1st
+3450 1st 2nd 3rd Last 3rd 2nd 1st
+3451 1st 2nd 3rd Last 3rd 2nd 1st
+3452 1st 2nd 3rd Last 3rd 2nd 1st
+3453 1st 2nd 3rd Last 3rd 2nd 1st
+3454 1st 2nd 3rd Last 3rd 2nd 1st
+3455 1st 2nd 3rd Last 3rd 2nd 1st
+3456 1st 2nd 3rd Last 3rd 2nd 1st
+3457 1st 2nd 3rd Last 3rd 2nd 1st
+3458 1st 2nd 3rd Last 3rd 2nd 1st
+3459 1st 2nd 3rd Last 3rd 2nd 1st
+3460 1st 2nd 3rd Last 3rd 2nd 1st
+3461 1st 2nd 3rd Last 3rd 2nd 1st
+3462 1st 2nd 3rd Last 3rd 2nd 1st
+3463 1st 2nd 3rd Last 3rd 2nd 1st
+3464 1st 2nd 3rd Last 3rd 2nd 1st
+3465 1st 2nd 3rd Last 3rd 2nd 1st
+3466 1st 2nd 3rd Last 3rd 2nd 1st
+3467 1st 2nd 3rd Last 3rd 2nd 1st
+3468 1st 2nd 3rd Last 3rd 2nd 1st
+3469 1st 2nd 3rd Last 3rd 2nd 1st
+3470 1st 2nd 3rd Last 3rd 2nd 1st
+3471 1st 2nd 3rd Last 3rd 2nd 1st
+3472 1st 2nd 3rd Last 3rd 2nd 1st
+3473 1st 2nd 3rd Last 3rd 2nd 1st
+3474 1st 2nd 3rd Last 3rd 2nd 1st
+3475 1st 2nd 3rd Last 3rd 2nd 1st
+3476 1st 2nd 3rd Last 3rd 2nd 1st
+3477 1st 2nd 3rd Last 3rd 2nd 1st
+3478 1st 2nd 3rd Last 3rd 2nd 1st
+3479 1st 2nd 3rd Last 3rd 2nd 1st
+3480 1st 2nd 3rd Last 3rd 2nd 1st
+3481 1st 2nd 3rd Last 3rd 2nd 1st
+3482 1st 2nd 3rd Last 3rd 2nd 1st
+3483 1st 2nd 3rd Last 3rd 2nd 1st
+3484 1st 2nd 3rd Last 3rd 2nd 1st
+3485 1st 2nd 3rd Last 3rd 2nd 1st
+3486 1st 2nd 3rd Last 3rd 2nd 1st
+3487 1st 2nd 3rd Last 3rd 2nd 1st
+3488 1st 2nd 3rd Last 3rd 2nd 1st
+3489 1st 2nd 3rd Last 3rd 2nd 1st
+3490 1st 2nd 3rd Last 3rd 2nd 1st
+3491 1st 2nd 3rd Last 3rd 2nd 1st
+3492 1st 2nd 3rd Last 3rd 2nd 1st
+3493 1st 2nd 3rd Last 3rd 2nd 1st
+3494 1st 2nd 3rd Last 3rd 2nd 1st
+3495 1st 2nd 3rd Last 3rd 2nd 1st
+3496 1st 2nd 3rd Last 3rd 2nd 1st
+3497 1st 2nd 3rd Last 3rd 2nd 1st
+3498 1st 2nd 3rd Last 3rd 2nd 1st
+3499 1st 2nd 3rd Last 3rd 2nd 1st
+3500 1st 2nd 3rd Last 3rd 2nd 1st
+3501 1st 2nd 3rd Last 3rd 2nd 1st
+3502 1st 2nd 3rd Last 3rd 2nd 1st
+3503 1st 2nd 3rd Last 3rd 2nd 1st
+3504 1st 2nd 3rd Last 3rd 2nd 1st
+3505 1st 2nd 3rd Last 3rd 2nd 1st
+3506 1st 2nd 3rd Last 3rd 2nd 1st
+3507 1st 2nd 3rd Last 3rd 2nd 1st
+3508 1st 2nd 3rd Last 3rd 2nd 1st
+3509 1st 2nd 3rd Last 3rd 2nd 1st
+3510 1st 2nd 3rd Last 3rd 2nd 1st
+3511 1st 2nd 3rd Last 3rd 2nd 1st
+3512 1st 2nd 3rd Last 3rd 2nd 1st
+3513 1st 2nd 3rd Last 3rd 2nd 1st
+3514 1st 2nd 3rd Last 3rd 2nd 1st
+3515 1st 2nd 3rd Last 3rd 2nd 1st
+3516 1st 2nd 3rd Last 3rd 2nd 1st
+3517 1st 2nd 3rd Last 3rd 2nd 1st
+3518 1st 2nd 3rd Last 3rd 2nd 1st
+3519 1st 2nd 3rd Last 3rd 2nd 1st
+3520 1st 2nd 3rd Last 3rd 2nd 1st
+3521 1st 2nd 3rd Last 3rd 2nd 1st
+3522 1st 2nd 3rd Last 3rd 2nd 1st
+3523 1st 2nd 3rd Last 3rd 2nd 1st
+3524 1st 2nd 3rd Last 3rd 2nd 1st
+3525 1st 2nd 3rd Last 3rd 2nd 1st
+3526 1st 2nd 3rd Last 3rd 2nd 1st
+3527 1st 2nd 3rd Last 3rd 2nd 1st
+3528 1st 2nd 3rd Last 3rd 2nd 1st
+3529 1st 2nd 3rd Last 3rd 2nd 1st
+3530 1st 2nd 3rd Last 3rd 2nd 1st
+3531 1st 2nd 3rd Last 3rd 2nd 1st
+3532 1st 2nd 3rd Last 3rd 2nd 1st
+3533 1st 2nd 3rd Last 3rd 2nd 1st
+3534 1st 2nd 3rd Last 3rd 2nd 1st
+3535 1st 2nd 3rd Last 3rd 2nd 1st
+3536 1st 2nd 3rd Last 3rd 2nd 1st
+3537 1st 2nd 3rd Last 3rd 2nd 1st
+3538 1st 2nd 3rd Last 3rd 2nd 1st
+3539 1st 2nd 3rd Last 3rd 2nd 1st
+3540 1st 2nd 3rd Last 3rd 2nd 1st
+3541 1st 2nd 3rd Last 3rd 2nd 1st
+3542 1st 2nd 3rd Last 3rd 2nd 1st
+3543 1st 2nd 3rd Last 3rd 2nd 1st
+3544 1st 2nd 3rd Last 3rd 2nd 1st
+3545 1st 2nd 3rd Last 3rd 2nd 1st
+3546 1st 2nd 3rd Last 3rd 2nd 1st
+3547 1st 2nd 3rd Last 3rd 2nd 1st
+3548 1st 2nd 3rd Last 3rd 2nd 1st
+3549 1st 2nd 3rd Last 3rd 2nd 1st
+3550 1st 2nd 3rd Last 3rd 2nd 1st
+3551 1st 2nd 3rd Last 3rd 2nd 1st
+3552 1st 2nd 3rd Last 3rd 2nd 1st
+3553 1st 2nd 3rd Last 3rd 2nd 1st
+3554 1st 2nd 3rd Last 3rd 2nd 1st
+3555 1st 2nd 3rd Last 3rd 2nd 1st
+3556 1st 2nd 3rd Last 3rd 2nd 1st
+3557 1st 2nd 3rd Last 3rd 2nd 1st
+3558 1st 2nd 3rd Last 3rd 2nd 1st
+3559 1st 2nd 3rd Last 3rd 2nd 1st
+3560 1st 2nd 3rd Last 3rd 2nd 1st
+3561 1st 2nd 3rd Last 3rd 2nd 1st
+3562 1st 2nd 3rd Last 3rd 2nd 1st
+3563 1st 2nd 3rd Last 3rd 2nd 1st
+3564 1st 2nd 3rd Last 3rd 2nd 1st
+3565 1st 2nd 3rd Last 3rd 2nd 1st
+3566 1st 2nd 3rd Last 3rd 2nd 1st
+3567 1st 2nd 3rd Last 3rd 2nd 1st
+3568 1st 2nd 3rd Last 3rd 2nd 1st
+3569 1st 2nd 3rd Last 3rd 2nd 1st
+3570 1st 2nd 3rd Last 3rd 2nd 1st
+3571 1st 2nd 3rd Last 3rd 2nd 1st
+3572 1st 2nd 3rd Last 3rd 2nd 1st
+3573 1st 2nd 3rd Last 3rd 2nd 1st
+3574 1st 2nd 3rd Last 3rd 2nd 1st
+3575 1st 2nd 3rd Last 3rd 2nd 1st
+3576 1st 2nd 3rd Last 3rd 2nd 1st
+3577 1st 2nd 3rd Last 3rd 2nd 1st
+3578 1st 2nd 3rd Last 3rd 2nd 1st
+3579 1st 2nd 3rd Last 3rd 2nd 1st
+3580 1st 2nd 3rd Last 3rd 2nd 1st
+3581 1st 2nd 3rd Last 3rd 2nd 1st
+3582 1st 2nd 3rd Last 3rd 2nd 1st
+3583 1st 2nd 3rd Last 3rd 2nd 1st
+3584 1st 2nd 3rd Last 3rd 2nd 1st
+3585 1st 2nd 3rd Last 3rd 2nd 1st
+3586 1st 2nd 3rd Last 3rd 2nd 1st
+3587 1st 2nd 3rd Last 3rd 2nd 1st
+3588 1st 2nd 3rd Last 3rd 2nd 1st
+3589 1st 2nd 3rd Last 3rd 2nd 1st
+3590 1st 2nd 3rd Last 3rd 2nd 1st
+3591 1st 2nd 3rd Last 3rd 2nd 1st
+3592 1st 2nd 3rd Last 3rd 2nd 1st
+3593 1st 2nd 3rd Last 3rd 2nd 1st
+3594 1st 2nd 3rd Last 3rd 2nd 1st
+3595 1st 2nd 3rd Last 3rd 2nd 1st
+3596 1st 2nd 3rd Last 3rd 2nd 1st
+3597 1st 2nd 3rd Last 3rd 2nd 1st
+3598 1st 2nd 3rd Last 3rd 2nd 1st
+3599 1st 2nd 3rd Last 3rd 2nd 1st
+3600 1st 2nd 3rd Last 3rd 2nd 1st
+3601 1st 2nd 3rd Last 3rd 2nd 1st
+3602 1st 2nd 3rd Last 3rd 2nd 1st
+3603 1st 2nd 3rd Last 3rd 2nd 1st
+3604 1st 2nd 3rd Last 3rd 2nd 1st
+3605 1st 2nd 3rd Last 3rd 2nd 1st
+3606 1st 2nd 3rd Last 3rd 2nd 1st
+3607 1st 2nd 3rd Last 3rd 2nd 1st
+3608 1st 2nd 3rd Last 3rd 2nd 1st
+3609 1st 2nd 3rd Last 3rd 2nd 1st
+3610 1st 2nd 3rd Last 3rd 2nd 1st
+3611 1st 2nd 3rd Last 3rd 2nd 1st
+3612 1st 2nd 3rd Last 3rd 2nd 1st
+3613 1st 2nd 3rd Last 3rd 2nd 1st
+3614 1st 2nd 3rd Last 3rd 2nd 1st
+3615 1st 2nd 3rd Last 3rd 2nd 1st
+3616 1st 2nd 3rd Last 3rd 2nd 1st
+3617 1st 2nd 3rd Last 3rd 2nd 1st
+3618 1st 2nd 3rd Last 3rd 2nd 1st
+3619 1st 2nd 3rd Last 3rd 2nd 1st
+3620 1st 2nd 3rd Last 3rd 2nd 1st
+3621 1st 2nd 3rd Last 3rd 2nd 1st
+3622 1st 2nd 3rd Last 3rd 2nd 1st
+3623 1st 2nd 3rd Last 3rd 2nd 1st
+3624 1st 2nd 3rd Last 3rd 2nd 1st
+3625 1st 2nd 3rd Last 3rd 2nd 1st
+3626 1st 2nd 3rd Last 3rd 2nd 1st
+3627 1st 2nd 3rd Last 3rd 2nd 1st
+3628 1st 2nd 3rd Last 3rd 2nd 1st
+3629 1st 2nd 3rd Last 3rd 2nd 1st
+3630 1st 2nd 3rd Last 3rd 2nd 1st
+3631 1st 2nd 3rd Last 3rd 2nd 1st
+3632 1st 2nd 3rd Last 3rd 2nd 1st
+3633 1st 2nd 3rd Last 3rd 2nd 1st
+3634 1st 2nd 3rd Last 3rd 2nd 1st
+3635 1st 2nd 3rd Last 3rd 2nd 1st
+3636 1st 2nd 3rd Last 3rd 2nd 1st
+3637 1st 2nd 3rd Last 3rd 2nd 1st
+3638 1st 2nd 3rd Last 3rd 2nd 1st
+3639 1st 2nd 3rd Last 3rd 2nd 1st
+3640 1st 2nd 3rd Last 3rd 2nd 1st
+3641 1st 2nd 3rd Last 3rd 2nd 1st
+3642 1st 2nd 3rd Last 3rd 2nd 1st
+3643 1st 2nd 3rd Last 3rd 2nd 1st
+3644 1st 2nd 3rd Last 3rd 2nd 1st
+3645 1st 2nd 3rd Last 3rd 2nd 1st
+3646 1st 2nd 3rd Last 3rd 2nd 1st
+3647 1st 2nd 3rd Last 3rd 2nd 1st
+3648 1st 2nd 3rd Last 3rd 2nd 1st
+3649 1st 2nd 3rd Last 3rd 2nd 1st
+3650 1st 2nd 3rd Last 3rd 2nd 1st
+3651 1st 2nd 3rd Last 3rd 2nd 1st
+3652 1st 2nd 3rd Last 3rd 2nd 1st
+3653 1st 2nd 3rd Last 3rd 2nd 1st
+3654 1st 2nd 3rd Last 3rd 2nd 1st
+3655 1st 2nd 3rd Last 3rd 2nd 1st
+3656 1st 2nd 3rd Last 3rd 2nd 1st
+3657 1st 2nd 3rd Last 3rd 2nd 1st
+3658 1st 2nd 3rd Last 3rd 2nd 1st
+3659 1st 2nd 3rd Last 3rd 2nd 1st
+3660 1st 2nd 3rd Last 3rd 2nd 1st
+3661 1st 2nd 3rd Last 3rd 2nd 1st
+3662 1st 2nd 3rd Last 3rd 2nd 1st
+3663 1st 2nd 3rd Last 3rd 2nd 1st
+3664 1st 2nd 3rd Last 3rd 2nd 1st
+3665 1st 2nd 3rd Last 3rd 2nd 1st
+3666 1st 2nd 3rd Last 3rd 2nd 1st
+3667 1st 2nd 3rd Last 3rd 2nd 1st
+3668 1st 2nd 3rd Last 3rd 2nd 1st
+3669 1st 2nd 3rd Last 3rd 2nd 1st
+3670 1st 2nd 3rd Last 3rd 2nd 1st
+3671 1st 2nd 3rd Last 3rd 2nd 1st
+3672 1st 2nd 3rd Last 3rd 2nd 1st
+3673 1st 2nd 3rd Last 3rd 2nd 1st
+3674 1st 2nd 3rd Last 3rd 2nd 1st
+3675 1st 2nd 3rd Last 3rd 2nd 1st
+3676 1st 2nd 3rd Last 3rd 2nd 1st
+3677 1st 2nd 3rd Last 3rd 2nd 1st
+3678 1st 2nd 3rd Last 3rd 2nd 1st
+3679 1st 2nd 3rd Last 3rd 2nd 1st
+3680 1st 2nd 3rd Last 3rd 2nd 1st
+3681 1st 2nd 3rd Last 3rd 2nd 1st
+3682 1st 2nd 3rd Last 3rd 2nd 1st
+3683 1st 2nd 3rd Last 3rd 2nd 1st
+3684 1st 2nd 3rd Last 3rd 2nd 1st
+3685 1st 2nd 3rd Last 3rd 2nd 1st
+3686 1st 2nd 3rd Last 3rd 2nd 1st
+3687 1st 2nd 3rd Last 3rd 2nd 1st
+3688 1st 2nd 3rd Last 3rd 2nd 1st
+3689 1st 2nd 3rd Last 3rd 2nd 1st
+3690 1st 2nd 3rd Last 3rd 2nd 1st
+3691 1st 2nd 3rd Last 3rd 2nd 1st
+3692 1st 2nd 3rd Last 3rd 2nd 1st
+3693 1st 2nd 3rd Last 3rd 2nd 1st
+3694 1st 2nd 3rd Last 3rd 2nd 1st
+3695 1st 2nd 3rd Last 3rd 2nd 1st
+3696 1st 2nd 3rd Last 3rd 2nd 1st
+3697 1st 2nd 3rd Last 3rd 2nd 1st
+3698 1st 2nd 3rd Last 3rd 2nd 1st
+3699 1st 2nd 3rd Last 3rd 2nd 1st
+3700 1st 2nd 3rd Last 3rd 2nd 1st
+3701 1st 2nd 3rd Last 3rd 2nd 1st
+3702 1st 2nd 3rd Last 3rd 2nd 1st
+3703 1st 2nd 3rd Last 3rd 2nd 1st
+3704 1st 2nd 3rd Last 3rd 2nd 1st
+3705 1st 2nd 3rd Last 3rd 2nd 1st
+3706 1st 2nd 3rd Last 3rd 2nd 1st
+3707 1st 2nd 3rd Last 3rd 2nd 1st
+3708 1st 2nd 3rd Last 3rd 2nd 1st
+3709 1st 2nd 3rd Last 3rd 2nd 1st
+3710 1st 2nd 3rd Last 3rd 2nd 1st
+3711 1st 2nd 3rd Last 3rd 2nd 1st
+3712 1st 2nd 3rd Last 3rd 2nd 1st
+3713 1st 2nd 3rd Last 3rd 2nd 1st
+3714 1st 2nd 3rd Last 3rd 2nd 1st
+3715 1st 2nd 3rd Last 3rd 2nd 1st
+3716 1st 2nd 3rd Last 3rd 2nd 1st
+3717 1st 2nd 3rd Last 3rd 2nd 1st
+3718 1st 2nd 3rd Last 3rd 2nd 1st
+3719 1st 2nd 3rd Last 3rd 2nd 1st
+3720 1st 2nd 3rd Last 3rd 2nd 1st
+3721 1st 2nd 3rd Last 3rd 2nd 1st
+3722 1st 2nd 3rd Last 3rd 2nd 1st
+3723 1st 2nd 3rd Last 3rd 2nd 1st
+3724 1st 2nd 3rd Last 3rd 2nd 1st
+3725 1st 2nd 3rd Last 3rd 2nd 1st
+3726 1st 2nd 3rd Last 3rd 2nd 1st
+3727 1st 2nd 3rd Last 3rd 2nd 1st
+3728 1st 2nd 3rd Last 3rd 2nd 1st
+3729 1st 2nd 3rd Last 3rd 2nd 1st
+3730 1st 2nd 3rd Last 3rd 2nd 1st
+3731 1st 2nd 3rd Last 3rd 2nd 1st
+3732 1st 2nd 3rd Last 3rd 2nd 1st
+3733 1st 2nd 3rd Last 3rd 2nd 1st
+3734 1st 2nd 3rd Last 3rd 2nd 1st
+3735 1st 2nd 3rd Last 3rd 2nd 1st
+3736 1st 2nd 3rd Last 3rd 2nd 1st
+3737 1st 2nd 3rd Last 3rd 2nd 1st
+3738 1st 2nd 3rd Last 3rd 2nd 1st
+3739 1st 2nd 3rd Last 3rd 2nd 1st
+3740 1st 2nd 3rd Last 3rd 2nd 1st
+3741 1st 2nd 3rd Last 3rd 2nd 1st
+3742 1st 2nd 3rd Last 3rd 2nd 1st
+3743 1st 2nd 3rd Last 3rd 2nd 1st
+3744 1st 2nd 3rd Last 3rd 2nd 1st
+3745 1st 2nd 3rd Last 3rd 2nd 1st
+3746 1st 2nd 3rd Last 3rd 2nd 1st
+3747 1st 2nd 3rd Last 3rd 2nd 1st
+3748 1st 2nd 3rd Last 3rd 2nd 1st
+3749 1st 2nd 3rd Last 3rd 2nd 1st
+3750 1st 2nd 3rd Last 3rd 2nd 1st
+3751 1st 2nd 3rd Last 3rd 2nd 1st
+3752 1st 2nd 3rd Last 3rd 2nd 1st
+3753 1st 2nd 3rd Last 3rd 2nd 1st
+3754 1st 2nd 3rd Last 3rd 2nd 1st
+3755 1st 2nd 3rd Last 3rd 2nd 1st
+3756 1st 2nd 3rd Last 3rd 2nd 1st
+3757 1st 2nd 3rd Last 3rd 2nd 1st
+3758 1st 2nd 3rd Last 3rd 2nd 1st
+3759 1st 2nd 3rd Last 3rd 2nd 1st
+3760 1st 2nd 3rd Last 3rd 2nd 1st
+3761 1st 2nd 3rd Last 3rd 2nd 1st
+3762 1st 2nd 3rd Last 3rd 2nd 1st
+3763 1st 2nd 3rd Last 3rd 2nd 1st
+3764 1st 2nd 3rd Last 3rd 2nd 1st
+3765 1st 2nd 3rd Last 3rd 2nd 1st
+3766 1st 2nd 3rd Last 3rd 2nd 1st
+3767 1st 2nd 3rd Last 3rd 2nd 1st
+3768 1st 2nd 3rd Last 3rd 2nd 1st
+3769 1st 2nd 3rd Last 3rd 2nd 1st
+3770 1st 2nd 3rd Last 3rd 2nd 1st
+3771 1st 2nd 3rd Last 3rd 2nd 1st
+3772 1st 2nd 3rd Last 3rd 2nd 1st
+3773 1st 2nd 3rd Last 3rd 2nd 1st
+3774 1st 2nd 3rd Last 3rd 2nd 1st
+3775 1st 2nd 3rd Last 3rd 2nd 1st
+3776 1st 2nd 3rd Last 3rd 2nd 1st
+3777 1st 2nd 3rd Last 3rd 2nd 1st
+3778 1st 2nd 3rd Last 3rd 2nd 1st
+3779 1st 2nd 3rd Last 3rd 2nd 1st
+3780 1st 2nd 3rd Last 3rd 2nd 1st
+3781 1st 2nd 3rd Last 3rd 2nd 1st
+3782 1st 2nd 3rd Last 3rd 2nd 1st
+3783 1st 2nd 3rd Last 3rd 2nd 1st
+3784 1st 2nd 3rd Last 3rd 2nd 1st
+3785 1st 2nd 3rd Last 3rd 2nd 1st
+3786 1st 2nd 3rd Last 3rd 2nd 1st
+3787 1st 2nd 3rd Last 3rd 2nd 1st
+3788 1st 2nd 3rd Last 3rd 2nd 1st
+3789 1st 2nd 3rd Last 3rd 2nd 1st
+3790 1st 2nd 3rd Last 3rd 2nd 1st
+3791 1st 2nd 3rd Last 3rd 2nd 1st
+3792 1st 2nd 3rd Last 3rd 2nd 1st
+3793 1st 2nd 3rd Last 3rd 2nd 1st
+3794 1st 2nd 3rd Last 3rd 2nd 1st
+3795 1st 2nd 3rd Last 3rd 2nd 1st
+3796 1st 2nd 3rd Last 3rd 2nd 1st
+3797 1st 2nd 3rd Last 3rd 2nd 1st
+3798 1st 2nd 3rd Last 3rd 2nd 1st
+3799 1st 2nd 3rd Last 3rd 2nd 1st
+3800 1st 2nd 3rd Last 3rd 2nd 1st
+3801 1st 2nd 3rd Last 3rd 2nd 1st
+3802 1st 2nd 3rd Last 3rd 2nd 1st
+3803 1st 2nd 3rd Last 3rd 2nd 1st
+3804 1st 2nd 3rd Last 3rd 2nd 1st
+3805 1st 2nd 3rd Last 3rd 2nd 1st
+3806 1st 2nd 3rd Last 3rd 2nd 1st
+3807 1st 2nd 3rd Last 3rd 2nd 1st
+3808 1st 2nd 3rd Last 3rd 2nd 1st
+3809 1st 2nd 3rd Last 3rd 2nd 1st
+3810 1st 2nd 3rd Last 3rd 2nd 1st
+3811 1st 2nd 3rd Last 3rd 2nd 1st
+3812 1st 2nd 3rd Last 3rd 2nd 1st
+3813 1st 2nd 3rd Last 3rd 2nd 1st
+3814 1st 2nd 3rd Last 3rd 2nd 1st
+3815 1st 2nd 3rd Last 3rd 2nd 1st
+3816 1st 2nd 3rd Last 3rd 2nd 1st
+3817 1st 2nd 3rd Last 3rd 2nd 1st
+3818 1st 2nd 3rd Last 3rd 2nd 1st
+3819 1st 2nd 3rd Last 3rd 2nd 1st
+3820 1st 2nd 3rd Last 3rd 2nd 1st
+3821 1st 2nd 3rd Last 3rd 2nd 1st
+3822 1st 2nd 3rd Last 3rd 2nd 1st
+3823 1st 2nd 3rd Last 3rd 2nd 1st
+3824 1st 2nd 3rd Last 3rd 2nd 1st
+3825 1st 2nd 3rd Last 3rd 2nd 1st
+3826 1st 2nd 3rd Last 3rd 2nd 1st
+3827 1st 2nd 3rd Last 3rd 2nd 1st
+3828 1st 2nd 3rd Last 3rd 2nd 1st
+3829 1st 2nd 3rd Last 3rd 2nd 1st
+3830 1st 2nd 3rd Last 3rd 2nd 1st
+3831 1st 2nd 3rd Last 3rd 2nd 1st
+3832 1st 2nd 3rd Last 3rd 2nd 1st
+3833 1st 2nd 3rd Last 3rd 2nd 1st
+3834 1st 2nd 3rd Last 3rd 2nd 1st
+3835 1st 2nd 3rd Last 3rd 2nd 1st
+3836 1st 2nd 3rd Last 3rd 2nd 1st
+3837 1st 2nd 3rd Last 3rd 2nd 1st
+3838 1st 2nd 3rd Last 3rd 2nd 1st
+3839 1st 2nd 3rd Last 3rd 2nd 1st
+3840 1st 2nd 3rd Last 3rd 2nd 1st
+3841 1st 2nd 3rd Last 3rd 2nd 1st
+3842 1st 2nd 3rd Last 3rd 2nd 1st
+3843 1st 2nd 3rd Last 3rd 2nd 1st
+3844 1st 2nd 3rd Last 3rd 2nd 1st
+3845 1st 2nd 3rd Last 3rd 2nd 1st
+3846 1st 2nd 3rd Last 3rd 2nd 1st
+3847 1st 2nd 3rd Last 3rd 2nd 1st
+3848 1st 2nd 3rd Last 3rd 2nd 1st
+3849 1st 2nd 3rd Last 3rd 2nd 1st
+3850 1st 2nd 3rd Last 3rd 2nd 1st
+3851 1st 2nd 3rd Last 3rd 2nd 1st
+3852 1st 2nd 3rd Last 3rd 2nd 1st
+3853 1st 2nd 3rd Last 3rd 2nd 1st
+3854 1st 2nd 3rd Last 3rd 2nd 1st
+3855 1st 2nd 3rd Last 3rd 2nd 1st
+3856 1st 2nd 3rd Last 3rd 2nd 1st
+3857 1st 2nd 3rd Last 3rd 2nd 1st
+3858 1st 2nd 3rd Last 3rd 2nd 1st
+3859 1st 2nd 3rd Last 3rd 2nd 1st
+3860 1st 2nd 3rd Last 3rd 2nd 1st
+3861 1st 2nd 3rd Last 3rd 2nd 1st
+3862 1st 2nd 3rd Last 3rd 2nd 1st
+3863 1st 2nd 3rd Last 3rd 2nd 1st
+3864 1st 2nd 3rd Last 3rd 2nd 1st
+3865 1st 2nd 3rd Last 3rd 2nd 1st
+3866 1st 2nd 3rd Last 3rd 2nd 1st
+3867 1st 2nd 3rd Last 3rd 2nd 1st
+3868 1st 2nd 3rd Last 3rd 2nd 1st
+3869 1st 2nd 3rd Last 3rd 2nd 1st
+3870 1st 2nd 3rd Last 3rd 2nd 1st
+3871 1st 2nd 3rd Last 3rd 2nd 1st
+3872 1st 2nd 3rd Last 3rd 2nd 1st
+3873 1st 2nd 3rd Last 3rd 2nd 1st
+3874 1st 2nd 3rd Last 3rd 2nd 1st
+3875 1st 2nd 3rd Last 3rd 2nd 1st
+3876 1st 2nd 3rd Last 3rd 2nd 1st
+3877 1st 2nd 3rd Last 3rd 2nd 1st
+3878 1st 2nd 3rd Last 3rd 2nd 1st
+3879 1st 2nd 3rd Last 3rd 2nd 1st
+3880 1st 2nd 3rd Last 3rd 2nd 1st
+3881 1st 2nd 3rd Last 3rd 2nd 1st
+3882 1st 2nd 3rd Last 3rd 2nd 1st
+3883 1st 2nd 3rd Last 3rd 2nd 1st
+3884 1st 2nd 3rd Last 3rd 2nd 1st
+3885 1st 2nd 3rd Last 3rd 2nd 1st
+3886 1st 2nd 3rd Last 3rd 2nd 1st
+3887 1st 2nd 3rd Last 3rd 2nd 1st
+3888 1st 2nd 3rd Last 3rd 2nd 1st
+3889 1st 2nd 3rd Last 3rd 2nd 1st
+3890 1st 2nd 3rd Last 3rd 2nd 1st
+3891 1st 2nd 3rd Last 3rd 2nd 1st
+3892 1st 2nd 3rd Last 3rd 2nd 1st
+3893 1st 2nd 3rd Last 3rd 2nd 1st
+3894 1st 2nd 3rd Last 3rd 2nd 1st
+3895 1st 2nd 3rd Last 3rd 2nd 1st
+3896 1st 2nd 3rd Last 3rd 2nd 1st
+3897 1st 2nd 3rd Last 3rd 2nd 1st
+3898 1st 2nd 3rd Last 3rd 2nd 1st
+3899 1st 2nd 3rd Last 3rd 2nd 1st
+3900 1st 2nd 3rd Last 3rd 2nd 1st
+3901 1st 2nd 3rd Last 3rd 2nd 1st
+3902 1st 2nd 3rd Last 3rd 2nd 1st
+3903 1st 2nd 3rd Last 3rd 2nd 1st
+3904 1st 2nd 3rd Last 3rd 2nd 1st
+3905 1st 2nd 3rd Last 3rd 2nd 1st
+3906 1st 2nd 3rd Last 3rd 2nd 1st
+3907 1st 2nd 3rd Last 3rd 2nd 1st
+3908 1st 2nd 3rd Last 3rd 2nd 1st
+3909 1st 2nd 3rd Last 3rd 2nd 1st
+3910 1st 2nd 3rd Last 3rd 2nd 1st
+3911 1st 2nd 3rd Last 3rd 2nd 1st
+3912 1st 2nd 3rd Last 3rd 2nd 1st
+3913 1st 2nd 3rd Last 3rd 2nd 1st
+3914 1st 2nd 3rd Last 3rd 2nd 1st
+3915 1st 2nd 3rd Last 3rd 2nd 1st
+3916 1st 2nd 3rd Last 3rd 2nd 1st
+3917 1st 2nd 3rd Last 3rd 2nd 1st
+3918 1st 2nd 3rd Last 3rd 2nd 1st
+3919 1st 2nd 3rd Last 3rd 2nd 1st
+3920 1st 2nd 3rd Last 3rd 2nd 1st
+3921 1st 2nd 3rd Last 3rd 2nd 1st
+3922 1st 2nd 3rd Last 3rd 2nd 1st
+3923 1st 2nd 3rd Last 3rd 2nd 1st
+3924 1st 2nd 3rd Last 3rd 2nd 1st
+3925 1st 2nd 3rd Last 3rd 2nd 1st
+3926 1st 2nd 3rd Last 3rd 2nd 1st
+3927 1st 2nd 3rd Last 3rd 2nd 1st
+3928 1st 2nd 3rd Last 3rd 2nd 1st
+3929 1st 2nd 3rd Last 3rd 2nd 1st
+3930 1st 2nd 3rd Last 3rd 2nd 1st
+3931 1st 2nd 3rd Last 3rd 2nd 1st
+3932 1st 2nd 3rd Last 3rd 2nd 1st
+3933 1st 2nd 3rd Last 3rd 2nd 1st
+3934 1st 2nd 3rd Last 3rd 2nd 1st
+3935 1st 2nd 3rd Last 3rd 2nd 1st
+3936 1st 2nd 3rd Last 3rd 2nd 1st
+3937 1st 2nd 3rd Last 3rd 2nd 1st
+3938 1st 2nd 3rd Last 3rd 2nd 1st
+3939 1st 2nd 3rd Last 3rd 2nd 1st
+3940 1st 2nd 3rd Last 3rd 2nd 1st
+3941 1st 2nd 3rd Last 3rd 2nd 1st
+3942 1st 2nd 3rd Last 3rd 2nd 1st
+3943 1st 2nd 3rd Last 3rd 2nd 1st
+3944 1st 2nd 3rd Last 3rd 2nd 1st
+3945 1st 2nd 3rd Last 3rd 2nd 1st
+3946 1st 2nd 3rd Last 3rd 2nd 1st
+3947 1st 2nd 3rd Last 3rd 2nd 1st
+3948 1st 2nd 3rd Last 3rd 2nd 1st
+3949 1st 2nd 3rd Last 3rd 2nd 1st
+3950 1st 2nd 3rd Last 3rd 2nd 1st
+3951 1st 2nd 3rd Last 3rd 2nd 1st
+3952 1st 2nd 3rd Last 3rd 2nd 1st
+3953 1st 2nd 3rd Last 3rd 2nd 1st
+3954 1st 2nd 3rd Last 3rd 2nd 1st
+3955 1st 2nd 3rd Last 3rd 2nd 1st
+3956 1st 2nd 3rd Last 3rd 2nd 1st
+3957 1st 2nd 3rd Last 3rd 2nd 1st
+3958 1st 2nd 3rd Last 3rd 2nd 1st
+3959 1st 2nd 3rd Last 3rd 2nd 1st
+3960 1st 2nd 3rd Last 3rd 2nd 1st
+3961 1st 2nd 3rd Last 3rd 2nd 1st
+3962 1st 2nd 3rd Last 3rd 2nd 1st
+3963 1st 2nd 3rd Last 3rd 2nd 1st
+3964 1st 2nd 3rd Last 3rd 2nd 1st
+3965 1st 2nd 3rd Last 3rd 2nd 1st
+3966 1st 2nd 3rd Last 3rd 2nd 1st
+3967 1st 2nd 3rd Last 3rd 2nd 1st
+3968 1st 2nd 3rd Last 3rd 2nd 1st
+3969 1st 2nd 3rd Last 3rd 2nd 1st
+3970 1st 2nd 3rd Last 3rd 2nd 1st
+3971 1st 2nd 3rd Last 3rd 2nd 1st
+3972 1st 2nd 3rd Last 3rd 2nd 1st
+3973 1st 2nd 3rd Last 3rd 2nd 1st
+3974 1st 2nd 3rd Last 3rd 2nd 1st
+3975 1st 2nd 3rd Last 3rd 2nd 1st
+3976 1st 2nd 3rd Last 3rd 2nd 1st
+3977 1st 2nd 3rd Last 3rd 2nd 1st
+3978 1st 2nd 3rd Last 3rd 2nd 1st
+3979 1st 2nd 3rd Last 3rd 2nd 1st
+3980 1st 2nd 3rd Last 3rd 2nd 1st
+3981 1st 2nd 3rd Last 3rd 2nd 1st
+3982 1st 2nd 3rd Last 3rd 2nd 1st
+3983 1st 2nd 3rd Last 3rd 2nd 1st
+3984 1st 2nd 3rd Last 3rd 2nd 1st
+3985 1st 2nd 3rd Last 3rd 2nd 1st
+3986 1st 2nd 3rd Last 3rd 2nd 1st
+3987 1st 2nd 3rd Last 3rd 2nd 1st
+3988 1st 2nd 3rd Last 3rd 2nd 1st
+3989 1st 2nd 3rd Last 3rd 2nd 1st
+3990 1st 2nd 3rd Last 3rd 2nd 1st
+3991 1st 2nd 3rd Last 3rd 2nd 1st
+3992 1st 2nd 3rd Last 3rd 2nd 1st
+3993 1st 2nd 3rd Last 3rd 2nd 1st
+3994 1st 2nd 3rd Last 3rd 2nd 1st
+3995 1st 2nd 3rd Last 3rd 2nd 1st
+3996 1st 2nd 3rd Last 3rd 2nd 1st
+3997 1st 2nd 3rd Last 3rd 2nd 1st
+3998 1st 2nd 3rd Last 3rd 2nd 1st
+3999 1st 2nd 3rd Last 3rd 2nd 1st
+4000 1st 2nd 3rd Last 3rd 2nd 1st
+4001 1st 2nd 3rd Last 3rd 2nd 1st
+4002 1st 2nd 3rd Last 3rd 2nd 1st
+4003 1st 2nd 3rd Last 3rd 2nd 1st
+4004 1st 2nd 3rd Last 3rd 2nd 1st
+4005 1st 2nd 3rd Last 3rd 2nd 1st
+4006 1st 2nd 3rd Last 3rd 2nd 1st
+4007 1st 2nd 3rd Last 3rd 2nd 1st
+4008 1st 2nd 3rd Last 3rd 2nd 1st
+4009 1st 2nd 3rd Last 3rd 2nd 1st
+4010 1st 2nd 3rd Last 3rd 2nd 1st
+4011 1st 2nd 3rd Last 3rd 2nd 1st
+4012 1st 2nd 3rd Last 3rd 2nd 1st
+4013 1st 2nd 3rd Last 3rd 2nd 1st
+4014 1st 2nd 3rd Last 3rd 2nd 1st
+4015 1st 2nd 3rd Last 3rd 2nd 1st
+4016 1st 2nd 3rd Last 3rd 2nd 1st
+4017 1st 2nd 3rd Last 3rd 2nd 1st
+4018 1st 2nd 3rd Last 3rd 2nd 1st
+4019 1st 2nd 3rd Last 3rd 2nd 1st
+4020 1st 2nd 3rd Last 3rd 2nd 1st
+4021 1st 2nd 3rd Last 3rd 2nd 1st
+4022 1st 2nd 3rd Last 3rd 2nd 1st
+4023 1st 2nd 3rd Last 3rd 2nd 1st
+4024 1st 2nd 3rd Last 3rd 2nd 1st
+4025 1st 2nd 3rd Last 3rd 2nd 1st
+4026 1st 2nd 3rd Last 3rd 2nd 1st
+4027 1st 2nd 3rd Last 3rd 2nd 1st
+4028 1st 2nd 3rd Last 3rd 2nd 1st
+4029 1st 2nd 3rd Last 3rd 2nd 1st
+4030 1st 2nd 3rd Last 3rd 2nd 1st
+4031 1st 2nd 3rd Last 3rd 2nd 1st
+4032 1st 2nd 3rd Last 3rd 2nd 1st
+4033 1st 2nd 3rd Last 3rd 2nd 1st
+4034 1st 2nd 3rd Last 3rd 2nd 1st
+4035 1st 2nd 3rd Last 3rd 2nd 1st
+4036 1st 2nd 3rd Last 3rd 2nd 1st
+4037 1st 2nd 3rd Last 3rd 2nd 1st
+4038 1st 2nd 3rd Last 3rd 2nd 1st
+4039 1st 2nd 3rd Last 3rd 2nd 1st
+4040 1st 2nd 3rd Last 3rd 2nd 1st
+4041 1st 2nd 3rd Last 3rd 2nd 1st
+4042 1st 2nd 3rd Last 3rd 2nd 1st
+4043 1st 2nd 3rd Last 3rd 2nd 1st
+4044 1st 2nd 3rd Last 3rd 2nd 1st
+4045 1st 2nd 3rd Last 3rd 2nd 1st
+4046 1st 2nd 3rd Last 3rd 2nd 1st
+4047 1st 2nd 3rd Last 3rd 2nd 1st
+4048 1st 2nd 3rd Last 3rd 2nd 1st
+4049 1st 2nd 3rd Last 3rd 2nd 1st
+4050 1st 2nd 3rd Last 3rd 2nd 1st
+4051 1st 2nd 3rd Last 3rd 2nd 1st
+4052 1st 2nd 3rd Last 3rd 2nd 1st
+4053 1st 2nd 3rd Last 3rd 2nd 1st
+4054 1st 2nd 3rd Last 3rd 2nd 1st
+4055 1st 2nd 3rd Last 3rd 2nd 1st
+4056 1st 2nd 3rd Last 3rd 2nd 1st
+4057 1st 2nd 3rd Last 3rd 2nd 1st
+4058 1st 2nd 3rd Last 3rd 2nd 1st
+4059 1st 2nd 3rd Last 3rd 2nd 1st
+4060 1st 2nd 3rd Last 3rd 2nd 1st
+4061 1st 2nd 3rd Last 3rd 2nd 1st
+4062 1st 2nd 3rd Last 3rd 2nd 1st
+4063 1st 2nd 3rd Last 3rd 2nd 1st
+4064 1st 2nd 3rd Last 3rd 2nd 1st
+4065 1st 2nd 3rd Last 3rd 2nd 1st
+4066 1st 2nd 3rd Last 3rd 2nd 1st
+4067 1st 2nd 3rd Last 3rd 2nd 1st
+4068 1st 2nd 3rd Last 3rd 2nd 1st
+4069 1st 2nd 3rd Last 3rd 2nd 1st
+4070 1st 2nd 3rd Last 3rd 2nd 1st
+4071 1st 2nd 3rd Last 3rd 2nd 1st
+4072 1st 2nd 3rd Last 3rd 2nd 1st
+4073 1st 2nd 3rd Last 3rd 2nd 1st
+4074 1st 2nd 3rd Last 3rd 2nd 1st
+4075 1st 2nd 3rd Last 3rd 2nd 1st
+4076 1st 2nd 3rd Last 3rd 2nd 1st
+4077 1st 2nd 3rd Last 3rd 2nd 1st
+4078 1st 2nd 3rd Last 3rd 2nd 1st
+4079 1st 2nd 3rd Last 3rd 2nd 1st
+4080 1st 2nd 3rd Last 3rd 2nd 1st
+4081 1st 2nd 3rd Last 3rd 2nd 1st
+4082 1st 2nd 3rd Last 3rd 2nd 1st
+4083 1st 2nd 3rd Last 3rd 2nd 1st
+4084 1st 2nd 3rd Last 3rd 2nd 1st
+4085 1st 2nd 3rd Last 3rd 2nd 1st
+4086 1st 2nd 3rd Last 3rd 2nd 1st
+4087 1st 2nd 3rd Last 3rd 2nd 1st
+4088 1st 2nd 3rd Last 3rd 2nd 1st
+4089 1st 2nd 3rd Last 3rd 2nd 1st
+4090 1st 2nd 3rd Last 3rd 2nd 1st
+4091 1st 2nd 3rd Last 3rd 2nd 1st
+4092 1st 2nd 3rd Last 3rd 2nd 1st
+4093 1st 2nd 3rd Last 3rd 2nd 1st
+4094 1st 2nd 3rd Last 3rd 2nd 1st
+4095 1st 2nd 3rd Last 3rd 2nd 1st
+4096 1st 2nd 3rd Last 3rd 2nd 1st
+4097 1st 2nd 3rd Last 3rd 2nd 1st
+4098 1st 2nd 3rd Last 3rd 2nd 1st
+4099 1st 2nd 3rd Last 3rd 2nd 1st
+4100 1st 2nd 3rd Last 3rd 2nd 1st
+4101 1st 2nd 3rd Last 3rd 2nd 1st
+4102 1st 2nd 3rd Last 3rd 2nd 1st
+4103 1st 2nd 3rd Last 3rd 2nd 1st
+4104 1st 2nd 3rd Last 3rd 2nd 1st
+4105 1st 2nd 3rd Last 3rd 2nd 1st
+4106 1st 2nd 3rd Last 3rd 2nd 1st
+4107 1st 2nd 3rd Last 3rd 2nd 1st
+4108 1st 2nd 3rd Last 3rd 2nd 1st
+4109 1st 2nd 3rd Last 3rd 2nd 1st
+4110 1st 2nd 3rd Last 3rd 2nd 1st
+4111 1st 2nd 3rd Last 3rd 2nd 1st
+4112 1st 2nd 3rd Last 3rd 2nd 1st
+4113 1st 2nd 3rd Last 3rd 2nd 1st
+4114 1st 2nd 3rd Last 3rd 2nd 1st
+4115 1st 2nd 3rd Last 3rd 2nd 1st
+4116 1st 2nd 3rd Last 3rd 2nd 1st
+4117 1st 2nd 3rd Last 3rd 2nd 1st
+4118 1st 2nd 3rd Last 3rd 2nd 1st
+4119 1st 2nd 3rd Last 3rd 2nd 1st
+4120 1st 2nd 3rd Last 3rd 2nd 1st
+4121 1st 2nd 3rd Last 3rd 2nd 1st
+4122 1st 2nd 3rd Last 3rd 2nd 1st
+4123 1st 2nd 3rd Last 3rd 2nd 1st
+4124 1st 2nd 3rd Last 3rd 2nd 1st
+4125 1st 2nd 3rd Last 3rd 2nd 1st
+4126 1st 2nd 3rd Last 3rd 2nd 1st
+4127 1st 2nd 3rd Last 3rd 2nd 1st
+4128 1st 2nd 3rd Last 3rd 2nd 1st
+4129 1st 2nd 3rd Last 3rd 2nd 1st
+4130 1st 2nd 3rd Last 3rd 2nd 1st
+4131 1st 2nd 3rd Last 3rd 2nd 1st
+4132 1st 2nd 3rd Last 3rd 2nd 1st
+4133 1st 2nd 3rd Last 3rd 2nd 1st
+4134 1st 2nd 3rd Last 3rd 2nd 1st
+4135 1st 2nd 3rd Last 3rd 2nd 1st
+4136 1st 2nd 3rd Last 3rd 2nd 1st
+4137 1st 2nd 3rd Last 3rd 2nd 1st
+4138 1st 2nd 3rd Last 3rd 2nd 1st
+4139 1st 2nd 3rd Last 3rd 2nd 1st
+4140 1st 2nd 3rd Last 3rd 2nd 1st
+4141 1st 2nd 3rd Last 3rd 2nd 1st
+4142 1st 2nd 3rd Last 3rd 2nd 1st
+4143 1st 2nd 3rd Last 3rd 2nd 1st
+4144 1st 2nd 3rd Last 3rd 2nd 1st
+4145 1st 2nd 3rd Last 3rd 2nd 1st
+4146 1st 2nd 3rd Last 3rd 2nd 1st
+4147 1st 2nd 3rd Last 3rd 2nd 1st
+4148 1st 2nd 3rd Last 3rd 2nd 1st
+4149 1st 2nd 3rd Last 3rd 2nd 1st
+4150 1st 2nd 3rd Last 3rd 2nd 1st
+4151 1st 2nd 3rd Last 3rd 2nd 1st
+4152 1st 2nd 3rd Last 3rd 2nd 1st
+4153 1st 2nd 3rd Last 3rd 2nd 1st
+4154 1st 2nd 3rd Last 3rd 2nd 1st
+4155 1st 2nd 3rd Last 3rd 2nd 1st
+4156 1st 2nd 3rd Last 3rd 2nd 1st
+4157 1st 2nd 3rd Last 3rd 2nd 1st
+4158 1st 2nd 3rd Last 3rd 2nd 1st
+4159 1st 2nd 3rd Last 3rd 2nd 1st
+4160 1st 2nd 3rd Last 3rd 2nd 1st
+4161 1st 2nd 3rd Last 3rd 2nd 1st
+4162 1st 2nd 3rd Last 3rd 2nd 1st
+4163 1st 2nd 3rd Last 3rd 2nd 1st
+4164 1st 2nd 3rd Last 3rd 2nd 1st
+4165 1st 2nd 3rd Last 3rd 2nd 1st
+4166 1st 2nd 3rd Last 3rd 2nd 1st
+4167 1st 2nd 3rd Last 3rd 2nd 1st
+4168 1st 2nd 3rd Last 3rd 2nd 1st
+4169 1st 2nd 3rd Last 3rd 2nd 1st
+4170 1st 2nd 3rd Last 3rd 2nd 1st
+4171 1st 2nd 3rd Last 3rd 2nd 1st
+4172 1st 2nd 3rd Last 3rd 2nd 1st
+4173 1st 2nd 3rd Last 3rd 2nd 1st
+4174 1st 2nd 3rd Last 3rd 2nd 1st
+4175 1st 2nd 3rd Last 3rd 2nd 1st
+4176 1st 2nd 3rd Last 3rd 2nd 1st
+4177 1st 2nd 3rd Last 3rd 2nd 1st
+4178 1st 2nd 3rd Last 3rd 2nd 1st
+4179 1st 2nd 3rd Last 3rd 2nd 1st
+4180 1st 2nd 3rd Last 3rd 2nd 1st
+4181 1st 2nd 3rd Last 3rd 2nd 1st
+4182 1st 2nd 3rd Last 3rd 2nd 1st
+4183 1st 2nd 3rd Last 3rd 2nd 1st
+4184 1st 2nd 3rd Last 3rd 2nd 1st
+4185 1st 2nd 3rd Last 3rd 2nd 1st
+4186 1st 2nd 3rd Last 3rd 2nd 1st
+4187 1st 2nd 3rd Last 3rd 2nd 1st
+4188 1st 2nd 3rd Last 3rd 2nd 1st
+4189 1st 2nd 3rd Last 3rd 2nd 1st
+4190 1st 2nd 3rd Last 3rd 2nd 1st
+4191 1st 2nd 3rd Last 3rd 2nd 1st
+4192 1st 2nd 3rd Last 3rd 2nd 1st
+4193 1st 2nd 3rd Last 3rd 2nd 1st
+4194 1st 2nd 3rd Last 3rd 2nd 1st
+4195 1st 2nd 3rd Last 3rd 2nd 1st
+4196 1st 2nd 3rd Last 3rd 2nd 1st
+4197 1st 2nd 3rd Last 3rd 2nd 1st
+4198 1st 2nd 3rd Last 3rd 2nd 1st
+4199 1st 2nd 3rd Last 3rd 2nd 1st
+4200 1st 2nd 3rd Last 3rd 2nd 1st
+4201 1st 2nd 3rd Last 3rd 2nd 1st
+4202 1st 2nd 3rd Last 3rd 2nd 1st
+4203 1st 2nd 3rd Last 3rd 2nd 1st
+4204 1st 2nd 3rd Last 3rd 2nd 1st
+4205 1st 2nd 3rd Last 3rd 2nd 1st
+4206 1st 2nd 3rd Last 3rd 2nd 1st
+4207 1st 2nd 3rd Last 3rd 2nd 1st
+4208 1st 2nd 3rd Last 3rd 2nd 1st
+4209 1st 2nd 3rd Last 3rd 2nd 1st
+4210 1st 2nd 3rd Last 3rd 2nd 1st
+4211 1st 2nd 3rd Last 3rd 2nd 1st
+4212 1st 2nd 3rd Last 3rd 2nd 1st
+4213 1st 2nd 3rd Last 3rd 2nd 1st
+4214 1st 2nd 3rd Last 3rd 2nd 1st
+4215 1st 2nd 3rd Last 3rd 2nd 1st
+4216 1st 2nd 3rd Last 3rd 2nd 1st
+4217 1st 2nd 3rd Last 3rd 2nd 1st
+4218 1st 2nd 3rd Last 3rd 2nd 1st
+4219 1st 2nd 3rd Last 3rd 2nd 1st
+4220 1st 2nd 3rd Last 3rd 2nd 1st
+4221 1st 2nd 3rd Last 3rd 2nd 1st
+4222 1st 2nd 3rd Last 3rd 2nd 1st
+4223 1st 2nd 3rd Last 3rd 2nd 1st
+4224 1st 2nd 3rd Last 3rd 2nd 1st
+4225 1st 2nd 3rd Last 3rd 2nd 1st
+4226 1st 2nd 3rd Last 3rd 2nd 1st
+4227 1st 2nd 3rd Last 3rd 2nd 1st
+4228 1st 2nd 3rd Last 3rd 2nd 1st
+4229 1st 2nd 3rd Last 3rd 2nd 1st
+4230 1st 2nd 3rd Last 3rd 2nd 1st
+4231 1st 2nd 3rd Last 3rd 2nd 1st
+4232 1st 2nd 3rd Last 3rd 2nd 1st
+4233 1st 2nd 3rd Last 3rd 2nd 1st
+4234 1st 2nd 3rd Last 3rd 2nd 1st
+4235 1st 2nd 3rd Last 3rd 2nd 1st
+4236 1st 2nd 3rd Last 3rd 2nd 1st
+4237 1st 2nd 3rd Last 3rd 2nd 1st
+4238 1st 2nd 3rd Last 3rd 2nd 1st
+4239 1st 2nd 3rd Last 3rd 2nd 1st
+4240 1st 2nd 3rd Last 3rd 2nd 1st
+4241 1st 2nd 3rd Last 3rd 2nd 1st
+4242 1st 2nd 3rd Last 3rd 2nd 1st
+4243 1st 2nd 3rd Last 3rd 2nd 1st
+4244 1st 2nd 3rd Last 3rd 2nd 1st
+4245 1st 2nd 3rd Last 3rd 2nd 1st
+4246 1st 2nd 3rd Last 3rd 2nd 1st
+4247 1st 2nd 3rd Last 3rd 2nd 1st
+4248 1st 2nd 3rd Last 3rd 2nd 1st
+4249 1st 2nd 3rd Last 3rd 2nd 1st
+4250 1st 2nd 3rd Last 3rd 2nd 1st
+4251 1st 2nd 3rd Last 3rd 2nd 1st
+4252 1st 2nd 3rd Last 3rd 2nd 1st
+4253 1st 2nd 3rd Last 3rd 2nd 1st
+4254 1st 2nd 3rd Last 3rd 2nd 1st
+4255 1st 2nd 3rd Last 3rd 2nd 1st
+4256 1st 2nd 3rd Last 3rd 2nd 1st
+4257 1st 2nd 3rd Last 3rd 2nd 1st
+4258 1st 2nd 3rd Last 3rd 2nd 1st
+4259 1st 2nd 3rd Last 3rd 2nd 1st
+4260 1st 2nd 3rd Last 3rd 2nd 1st
+4261 1st 2nd 3rd Last 3rd 2nd 1st
+4262 1st 2nd 3rd Last 3rd 2nd 1st
+4263 1st 2nd 3rd Last 3rd 2nd 1st
+4264 1st 2nd 3rd Last 3rd 2nd 1st
+4265 1st 2nd 3rd Last 3rd 2nd 1st
+4266 1st 2nd 3rd Last 3rd 2nd 1st
+4267 1st 2nd 3rd Last 3rd 2nd 1st
+4268 1st 2nd 3rd Last 3rd 2nd 1st
+4269 1st 2nd 3rd Last 3rd 2nd 1st
+4270 1st 2nd 3rd Last 3rd 2nd 1st
+4271 1st 2nd 3rd Last 3rd 2nd 1st
+4272 1st 2nd 3rd Last 3rd 2nd 1st
+4273 1st 2nd 3rd Last 3rd 2nd 1st
+4274 1st 2nd 3rd Last 3rd 2nd 1st
+4275 1st 2nd 3rd Last 3rd 2nd 1st
+4276 1st 2nd 3rd Last 3rd 2nd 1st
+4277 1st 2nd 3rd Last 3rd 2nd 1st
+4278 1st 2nd 3rd Last 3rd 2nd 1st
+4279 1st 2nd 3rd Last 3rd 2nd 1st
+4280 1st 2nd 3rd Last 3rd 2nd 1st
+4281 1st 2nd 3rd Last 3rd 2nd 1st
+4282 1st 2nd 3rd Last 3rd 2nd 1st
+4283 1st 2nd 3rd Last 3rd 2nd 1st
+4284 1st 2nd 3rd Last 3rd 2nd 1st
+4285 1st 2nd 3rd Last 3rd 2nd 1st
+4286 1st 2nd 3rd Last 3rd 2nd 1st
+4287 1st 2nd 3rd Last 3rd 2nd 1st
+4288 1st 2nd 3rd Last 3rd 2nd 1st
+4289 1st 2nd 3rd Last 3rd 2nd 1st
+4290 1st 2nd 3rd Last 3rd 2nd 1st
+4291 1st 2nd 3rd Last 3rd 2nd 1st
+4292 1st 2nd 3rd Last 3rd 2nd 1st
+4293 1st 2nd 3rd Last 3rd 2nd 1st
+4294 1st 2nd 3rd Last 3rd 2nd 1st
+4295 1st 2nd 3rd Last 3rd 2nd 1st
+4296 1st 2nd 3rd Last 3rd 2nd 1st
+4297 1st 2nd 3rd Last 3rd 2nd 1st
+4298 1st 2nd 3rd Last 3rd 2nd 1st
+4299 1st 2nd 3rd Last 3rd 2nd 1st
+4300 1st 2nd 3rd Last 3rd 2nd 1st
+4301 1st 2nd 3rd Last 3rd 2nd 1st
+4302 1st 2nd 3rd Last 3rd 2nd 1st
+4303 1st 2nd 3rd Last 3rd 2nd 1st
+4304 1st 2nd 3rd Last 3rd 2nd 1st
+4305 1st 2nd 3rd Last 3rd 2nd 1st
+4306 1st 2nd 3rd Last 3rd 2nd 1st
+4307 1st 2nd 3rd Last 3rd 2nd 1st
+4308 1st 2nd 3rd Last 3rd 2nd 1st
+4309 1st 2nd 3rd Last 3rd 2nd 1st
+4310 1st 2nd 3rd Last 3rd 2nd 1st
+4311 1st 2nd 3rd Last 3rd 2nd 1st
+4312 1st 2nd 3rd Last 3rd 2nd 1st
+4313 1st 2nd 3rd Last 3rd 2nd 1st
+4314 1st 2nd 3rd Last 3rd 2nd 1st
+4315 1st 2nd 3rd Last 3rd 2nd 1st
+4316 1st 2nd 3rd Last 3rd 2nd 1st
+4317 1st 2nd 3rd Last 3rd 2nd 1st
+4318 1st 2nd 3rd Last 3rd 2nd 1st
+4319 1st 2nd 3rd Last 3rd 2nd 1st
+4320 1st 2nd 3rd Last 3rd 2nd 1st
+4321 1st 2nd 3rd Last 3rd 2nd 1st
+4322 1st 2nd 3rd Last 3rd 2nd 1st
+4323 1st 2nd 3rd Last 3rd 2nd 1st
+4324 1st 2nd 3rd Last 3rd 2nd 1st
+4325 1st 2nd 3rd Last 3rd 2nd 1st
+4326 1st 2nd 3rd Last 3rd 2nd 1st
+4327 1st 2nd 3rd Last 3rd 2nd 1st
+4328 1st 2nd 3rd Last 3rd 2nd 1st
+4329 1st 2nd 3rd Last 3rd 2nd 1st
+4330 1st 2nd 3rd Last 3rd 2nd 1st
+4331 1st 2nd 3rd Last 3rd 2nd 1st
+4332 1st 2nd 3rd Last 3rd 2nd 1st
+4333 1st 2nd 3rd Last 3rd 2nd 1st
+4334 1st 2nd 3rd Last 3rd 2nd 1st
+4335 1st 2nd 3rd Last 3rd 2nd 1st
+4336 1st 2nd 3rd Last 3rd 2nd 1st
+4337 1st 2nd 3rd Last 3rd 2nd 1st
+4338 1st 2nd 3rd Last 3rd 2nd 1st
+4339 1st 2nd 3rd Last 3rd 2nd 1st
+4340 1st 2nd 3rd Last 3rd 2nd 1st
+4341 1st 2nd 3rd Last 3rd 2nd 1st
+4342 1st 2nd 3rd Last 3rd 2nd 1st
+4343 1st 2nd 3rd Last 3rd 2nd 1st
+4344 1st 2nd 3rd Last 3rd 2nd 1st
+4345 1st 2nd 3rd Last 3rd 2nd 1st
+4346 1st 2nd 3rd Last 3rd 2nd 1st
+4347 1st 2nd 3rd Last 3rd 2nd 1st
+4348 1st 2nd 3rd Last 3rd 2nd 1st
+4349 1st 2nd 3rd Last 3rd 2nd 1st
+4350 1st 2nd 3rd Last 3rd 2nd 1st
+4351 1st 2nd 3rd Last 3rd 2nd 1st
+4352 1st 2nd 3rd Last 3rd 2nd 1st
+4353 1st 2nd 3rd Last 3rd 2nd 1st
+4354 1st 2nd 3rd Last 3rd 2nd 1st
+4355 1st 2nd 3rd Last 3rd 2nd 1st
+4356 1st 2nd 3rd Last 3rd 2nd 1st
+4357 1st 2nd 3rd Last 3rd 2nd 1st
+4358 1st 2nd 3rd Last 3rd 2nd 1st
+4359 1st 2nd 3rd Last 3rd 2nd 1st
+4360 1st 2nd 3rd Last 3rd 2nd 1st
+4361 1st 2nd 3rd Last 3rd 2nd 1st
+4362 1st 2nd 3rd Last 3rd 2nd 1st
+4363 1st 2nd 3rd Last 3rd 2nd 1st
+4364 1st 2nd 3rd Last 3rd 2nd 1st
+4365 1st 2nd 3rd Last 3rd 2nd 1st
+4366 1st 2nd 3rd Last 3rd 2nd 1st
+4367 1st 2nd 3rd Last 3rd 2nd 1st
+4368 1st 2nd 3rd Last 3rd 2nd 1st
+4369 1st 2nd 3rd Last 3rd 2nd 1st
+4370 1st 2nd 3rd Last 3rd 2nd 1st
+4371 1st 2nd 3rd Last 3rd 2nd 1st
+4372 1st 2nd 3rd Last 3rd 2nd 1st
+4373 1st 2nd 3rd Last 3rd 2nd 1st
+4374 1st 2nd 3rd Last 3rd 2nd 1st
+4375 1st 2nd 3rd Last 3rd 2nd 1st
+4376 1st 2nd 3rd Last 3rd 2nd 1st
+4377 1st 2nd 3rd Last 3rd 2nd 1st
+4378 1st 2nd 3rd Last 3rd 2nd 1st
+4379 1st 2nd 3rd Last 3rd 2nd 1st
+4380 1st 2nd 3rd Last 3rd 2nd 1st
+4381 1st 2nd 3rd Last 3rd 2nd 1st
+4382 1st 2nd 3rd Last 3rd 2nd 1st
+4383 1st 2nd 3rd Last 3rd 2nd 1st
+4384 1st 2nd 3rd Last 3rd 2nd 1st
+4385 1st 2nd 3rd Last 3rd 2nd 1st
+4386 1st 2nd 3rd Last 3rd 2nd 1st
+4387 1st 2nd 3rd Last 3rd 2nd 1st
+4388 1st 2nd 3rd Last 3rd 2nd 1st
+4389 1st 2nd 3rd Last 3rd 2nd 1st
+4390 1st 2nd 3rd Last 3rd 2nd 1st
+4391 1st 2nd 3rd Last 3rd 2nd 1st
+4392 1st 2nd 3rd Last 3rd 2nd 1st
+4393 1st 2nd 3rd Last 3rd 2nd 1st
+4394 1st 2nd 3rd Last 3rd 2nd 1st
+4395 1st 2nd 3rd Last 3rd 2nd 1st
+4396 1st 2nd 3rd Last 3rd 2nd 1st
+4397 1st 2nd 3rd Last 3rd 2nd 1st
+4398 1st 2nd 3rd Last 3rd 2nd 1st
+4399 1st 2nd 3rd Last 3rd 2nd 1st
+4400 1st 2nd 3rd Last 3rd 2nd 1st
+4401 1st 2nd 3rd Last 3rd 2nd 1st
+4402 1st 2nd 3rd Last 3rd 2nd 1st
+4403 1st 2nd 3rd Last 3rd 2nd 1st
+4404 1st 2nd 3rd Last 3rd 2nd 1st
+4405 1st 2nd 3rd Last 3rd 2nd 1st
+4406 1st 2nd 3rd Last 3rd 2nd 1st
+4407 1st 2nd 3rd Last 3rd 2nd 1st
+4408 1st 2nd 3rd Last 3rd 2nd 1st
+4409 1st 2nd 3rd Last 3rd 2nd 1st
+4410 1st 2nd 3rd Last 3rd 2nd 1st
+4411 1st 2nd 3rd Last 3rd 2nd 1st
+4412 1st 2nd 3rd Last 3rd 2nd 1st
+4413 1st 2nd 3rd Last 3rd 2nd 1st
+4414 1st 2nd 3rd Last 3rd 2nd 1st
+4415 1st 2nd 3rd Last 3rd 2nd 1st
+4416 1st 2nd 3rd Last 3rd 2nd 1st
+4417 1st 2nd 3rd Last 3rd 2nd 1st
+4418 1st 2nd 3rd Last 3rd 2nd 1st
+4419 1st 2nd 3rd Last 3rd 2nd 1st
+4420 1st 2nd 3rd Last 3rd 2nd 1st
+4421 1st 2nd 3rd Last 3rd 2nd 1st
+4422 1st 2nd 3rd Last 3rd 2nd 1st
+4423 1st 2nd 3rd Last 3rd 2nd 1st
+4424 1st 2nd 3rd Last 3rd 2nd 1st
+4425 1st 2nd 3rd Last 3rd 2nd 1st
+4426 1st 2nd 3rd Last 3rd 2nd 1st
+4427 1st 2nd 3rd Last 3rd 2nd 1st
+4428 1st 2nd 3rd Last 3rd 2nd 1st
+4429 1st 2nd 3rd Last 3rd 2nd 1st
+4430 1st 2nd 3rd Last 3rd 2nd 1st
+4431 1st 2nd 3rd Last 3rd 2nd 1st
+4432 1st 2nd 3rd Last 3rd 2nd 1st
+4433 1st 2nd 3rd Last 3rd 2nd 1st
+4434 1st 2nd 3rd Last 3rd 2nd 1st
+4435 1st 2nd 3rd Last 3rd 2nd 1st
+4436 1st 2nd 3rd Last 3rd 2nd 1st
+4437 1st 2nd 3rd Last 3rd 2nd 1st
+4438 1st 2nd 3rd Last 3rd 2nd 1st
+4439 1st 2nd 3rd Last 3rd 2nd 1st
+4440 1st 2nd 3rd Last 3rd 2nd 1st
+4441 1st 2nd 3rd Last 3rd 2nd 1st
+4442 1st 2nd 3rd Last 3rd 2nd 1st
+4443 1st 2nd 3rd Last 3rd 2nd 1st
+4444 1st 2nd 3rd Last 3rd 2nd 1st
+4445 1st 2nd 3rd Last 3rd 2nd 1st
+4446 1st 2nd 3rd Last 3rd 2nd 1st
+4447 1st 2nd 3rd Last 3rd 2nd 1st
+4448 1st 2nd 3rd Last 3rd 2nd 1st
+4449 1st 2nd 3rd Last 3rd 2nd 1st
+4450 1st 2nd 3rd Last 3rd 2nd 1st
+4451 1st 2nd 3rd Last 3rd 2nd 1st
+4452 1st 2nd 3rd Last 3rd 2nd 1st
+4453 1st 2nd 3rd Last 3rd 2nd 1st
+4454 1st 2nd 3rd Last 3rd 2nd 1st
+4455 1st 2nd 3rd Last 3rd 2nd 1st
+4456 1st 2nd 3rd Last 3rd 2nd 1st
+4457 1st 2nd 3rd Last 3rd 2nd 1st
+4458 1st 2nd 3rd Last 3rd 2nd 1st
+4459 1st 2nd 3rd Last 3rd 2nd 1st
+4460 1st 2nd 3rd Last 3rd 2nd 1st
+4461 1st 2nd 3rd Last 3rd 2nd 1st
+4462 1st 2nd 3rd Last 3rd 2nd 1st
+4463 1st 2nd 3rd Last 3rd 2nd 1st
+4464 1st 2nd 3rd Last 3rd 2nd 1st
+4465 1st 2nd 3rd Last 3rd 2nd 1st
+4466 1st 2nd 3rd Last 3rd 2nd 1st
+4467 1st 2nd 3rd Last 3rd 2nd 1st
+4468 1st 2nd 3rd Last 3rd 2nd 1st
+4469 1st 2nd 3rd Last 3rd 2nd 1st
+4470 1st 2nd 3rd Last 3rd 2nd 1st
+4471 1st 2nd 3rd Last 3rd 2nd 1st
+4472 1st 2nd 3rd Last 3rd 2nd 1st
+4473 1st 2nd 3rd Last 3rd 2nd 1st
+4474 1st 2nd 3rd Last 3rd 2nd 1st
+4475 1st 2nd 3rd Last 3rd 2nd 1st
+4476 1st 2nd 3rd Last 3rd 2nd 1st
+4477 1st 2nd 3rd Last 3rd 2nd 1st
+4478 1st 2nd 3rd Last 3rd 2nd 1st
+4479 1st 2nd 3rd Last 3rd 2nd 1st
+4480 1st 2nd 3rd Last 3rd 2nd 1st
+4481 1st 2nd 3rd Last 3rd 2nd 1st
+4482 1st 2nd 3rd Last 3rd 2nd 1st
+4483 1st 2nd 3rd Last 3rd 2nd 1st
+4484 1st 2nd 3rd Last 3rd 2nd 1st
+4485 1st 2nd 3rd Last 3rd 2nd 1st
+4486 1st 2nd 3rd Last 3rd 2nd 1st
+4487 1st 2nd 3rd Last 3rd 2nd 1st
+4488 1st 2nd 3rd Last 3rd 2nd 1st
+4489 1st 2nd 3rd Last 3rd 2nd 1st
+4490 1st 2nd 3rd Last 3rd 2nd 1st
+4491 1st 2nd 3rd Last 3rd 2nd 1st
+4492 1st 2nd 3rd Last 3rd 2nd 1st
+4493 1st 2nd 3rd Last 3rd 2nd 1st
+4494 1st 2nd 3rd Last 3rd 2nd 1st
+4495 1st 2nd 3rd Last 3rd 2nd 1st
+4496 1st 2nd 3rd Last 3rd 2nd 1st
+4497 1st 2nd 3rd Last 3rd 2nd 1st
+4498 1st 2nd 3rd Last 3rd 2nd 1st
+4499 1st 2nd 3rd Last 3rd 2nd 1st
+4500 1st 2nd 3rd Last 3rd 2nd 1st
+4501 1st 2nd 3rd Last 3rd 2nd 1st
+4502 1st 2nd 3rd Last 3rd 2nd 1st
+4503 1st 2nd 3rd Last 3rd 2nd 1st
+4504 1st 2nd 3rd Last 3rd 2nd 1st
+4505 1st 2nd 3rd Last 3rd 2nd 1st
+4506 1st 2nd 3rd Last 3rd 2nd 1st
+4507 1st 2nd 3rd Last 3rd 2nd 1st
+4508 1st 2nd 3rd Last 3rd 2nd 1st
+4509 1st 2nd 3rd Last 3rd 2nd 1st
+4510 1st 2nd 3rd Last 3rd 2nd 1st
+4511 1st 2nd 3rd Last 3rd 2nd 1st
+4512 1st 2nd 3rd Last 3rd 2nd 1st
+4513 1st 2nd 3rd Last 3rd 2nd 1st
+4514 1st 2nd 3rd Last 3rd 2nd 1st
+4515 1st 2nd 3rd Last 3rd 2nd 1st
+4516 1st 2nd 3rd Last 3rd 2nd 1st
+4517 1st 2nd 3rd Last 3rd 2nd 1st
+4518 1st 2nd 3rd Last 3rd 2nd 1st
+4519 1st 2nd 3rd Last 3rd 2nd 1st
+4520 1st 2nd 3rd Last 3rd 2nd 1st
+4521 1st 2nd 3rd Last 3rd 2nd 1st
+4522 1st 2nd 3rd Last 3rd 2nd 1st
+4523 1st 2nd 3rd Last 3rd 2nd 1st
+4524 1st 2nd 3rd Last 3rd 2nd 1st
+4525 1st 2nd 3rd Last 3rd 2nd 1st
+4526 1st 2nd 3rd Last 3rd 2nd 1st
+4527 1st 2nd 3rd Last 3rd 2nd 1st
+4528 1st 2nd 3rd Last 3rd 2nd 1st
+4529 1st 2nd 3rd Last 3rd 2nd 1st
+4530 1st 2nd 3rd Last 3rd 2nd 1st
+4531 1st 2nd 3rd Last 3rd 2nd 1st
+4532 1st 2nd 3rd Last 3rd 2nd 1st
+4533 1st 2nd 3rd Last 3rd 2nd 1st
+4534 1st 2nd 3rd Last 3rd 2nd 1st
+4535 1st 2nd 3rd Last 3rd 2nd 1st
+4536 1st 2nd 3rd Last 3rd 2nd 1st
+4537 1st 2nd 3rd Last 3rd 2nd 1st
+4538 1st 2nd 3rd Last 3rd 2nd 1st
+4539 1st 2nd 3rd Last 3rd 2nd 1st
+4540 1st 2nd 3rd Last 3rd 2nd 1st
+4541 1st 2nd 3rd Last 3rd 2nd 1st
+4542 1st 2nd 3rd Last 3rd 2nd 1st
+4543 1st 2nd 3rd Last 3rd 2nd 1st
+4544 1st 2nd 3rd Last 3rd 2nd 1st
+4545 1st 2nd 3rd Last 3rd 2nd 1st
+4546 1st 2nd 3rd Last 3rd 2nd 1st
+4547 1st 2nd 3rd Last 3rd 2nd 1st
+4548 1st 2nd 3rd Last 3rd 2nd 1st
+4549 1st 2nd 3rd Last 3rd 2nd 1st
+4550 1st 2nd 3rd Last 3rd 2nd 1st
+4551 1st 2nd 3rd Last 3rd 2nd 1st
+4552 1st 2nd 3rd Last 3rd 2nd 1st
+4553 1st 2nd 3rd Last 3rd 2nd 1st
+4554 1st 2nd 3rd Last 3rd 2nd 1st
+4555 1st 2nd 3rd Last 3rd 2nd 1st
+4556 1st 2nd 3rd Last 3rd 2nd 1st
+4557 1st 2nd 3rd Last 3rd 2nd 1st
+4558 1st 2nd 3rd Last 3rd 2nd 1st
+4559 1st 2nd 3rd Last 3rd 2nd 1st
+4560 1st 2nd 3rd Last 3rd 2nd 1st
+4561 1st 2nd 3rd Last 3rd 2nd 1st
+4562 1st 2nd 3rd Last 3rd 2nd 1st
+4563 1st 2nd 3rd Last 3rd 2nd 1st
+4564 1st 2nd 3rd Last 3rd 2nd 1st
+4565 1st 2nd 3rd Last 3rd 2nd 1st
+4566 1st 2nd 3rd Last 3rd 2nd 1st
+4567 1st 2nd 3rd Last 3rd 2nd 1st
+4568 1st 2nd 3rd Last 3rd 2nd 1st
+4569 1st 2nd 3rd Last 3rd 2nd 1st
+4570 1st 2nd 3rd Last 3rd 2nd 1st
+4571 1st 2nd 3rd Last 3rd 2nd 1st
+4572 1st 2nd 3rd Last 3rd 2nd 1st
+4573 1st 2nd 3rd Last 3rd 2nd 1st
+4574 1st 2nd 3rd Last 3rd 2nd 1st
+4575 1st 2nd 3rd Last 3rd 2nd 1st
+4576 1st 2nd 3rd Last 3rd 2nd 1st
+4577 1st 2nd 3rd Last 3rd 2nd 1st
+4578 1st 2nd 3rd Last 3rd 2nd 1st
+4579 1st 2nd 3rd Last 3rd 2nd 1st
+4580 1st 2nd 3rd Last 3rd 2nd 1st
+4581 1st 2nd 3rd Last 3rd 2nd 1st
+4582 1st 2nd 3rd Last 3rd 2nd 1st
+4583 1st 2nd 3rd Last 3rd 2nd 1st
+4584 1st 2nd 3rd Last 3rd 2nd 1st
+4585 1st 2nd 3rd Last 3rd 2nd 1st
+4586 1st 2nd 3rd Last 3rd 2nd 1st
+4587 1st 2nd 3rd Last 3rd 2nd 1st
+4588 1st 2nd 3rd Last 3rd 2nd 1st
+4589 1st 2nd 3rd Last 3rd 2nd 1st
+4590 1st 2nd 3rd Last 3rd 2nd 1st
+4591 1st 2nd 3rd Last 3rd 2nd 1st
+4592 1st 2nd 3rd Last 3rd 2nd 1st
+4593 1st 2nd 3rd Last 3rd 2nd 1st
+4594 1st 2nd 3rd Last 3rd 2nd 1st
+4595 1st 2nd 3rd Last 3rd 2nd 1st
+4596 1st 2nd 3rd Last 3rd 2nd 1st
+4597 1st 2nd 3rd Last 3rd 2nd 1st
+4598 1st 2nd 3rd Last 3rd 2nd 1st
+4599 1st 2nd 3rd Last 3rd 2nd 1st
+4600 1st 2nd 3rd Last 3rd 2nd 1st
+4601 1st 2nd 3rd Last 3rd 2nd 1st
+4602 1st 2nd 3rd Last 3rd 2nd 1st
+4603 1st 2nd 3rd Last 3rd 2nd 1st
+4604 1st 2nd 3rd Last 3rd 2nd 1st
+4605 1st 2nd 3rd Last 3rd 2nd 1st
+4606 1st 2nd 3rd Last 3rd 2nd 1st
+4607 1st 2nd 3rd Last 3rd 2nd 1st
+4608 1st 2nd 3rd Last 3rd 2nd 1st
+4609 1st 2nd 3rd Last 3rd 2nd 1st
+4610 1st 2nd 3rd Last 3rd 2nd 1st
+4611 1st 2nd 3rd Last 3rd 2nd 1st
+4612 1st 2nd 3rd Last 3rd 2nd 1st
+4613 1st 2nd 3rd Last 3rd 2nd 1st
+4614 1st 2nd 3rd Last 3rd 2nd 1st
+4615 1st 2nd 3rd Last 3rd 2nd 1st
+4616 1st 2nd 3rd Last 3rd 2nd 1st
+4617 1st 2nd 3rd Last 3rd 2nd 1st
+4618 1st 2nd 3rd Last 3rd 2nd 1st
+4619 1st 2nd 3rd Last 3rd 2nd 1st
+4620 1st 2nd 3rd Last 3rd 2nd 1st
+4621 1st 2nd 3rd Last 3rd 2nd 1st
+4622 1st 2nd 3rd Last 3rd 2nd 1st
+4623 1st 2nd 3rd Last 3rd 2nd 1st
+4624 1st 2nd 3rd Last 3rd 2nd 1st
+4625 1st 2nd 3rd Last 3rd 2nd 1st
+4626 1st 2nd 3rd Last 3rd 2nd 1st
+4627 1st 2nd 3rd Last 3rd 2nd 1st
+4628 1st 2nd 3rd Last 3rd 2nd 1st
+4629 1st 2nd 3rd Last 3rd 2nd 1st
+4630 1st 2nd 3rd Last 3rd 2nd 1st
+4631 1st 2nd 3rd Last 3rd 2nd 1st
+4632 1st 2nd 3rd Last 3rd 2nd 1st
+4633 1st 2nd 3rd Last 3rd 2nd 1st
+4634 1st 2nd 3rd Last 3rd 2nd 1st
+4635 1st 2nd 3rd Last 3rd 2nd 1st
+4636 1st 2nd 3rd Last 3rd 2nd 1st
+4637 1st 2nd 3rd Last 3rd 2nd 1st
+4638 1st 2nd 3rd Last 3rd 2nd 1st
+4639 1st 2nd 3rd Last 3rd 2nd 1st
+4640 1st 2nd 3rd Last 3rd 2nd 1st
+4641 1st 2nd 3rd Last 3rd 2nd 1st
+4642 1st 2nd 3rd Last 3rd 2nd 1st
+4643 1st 2nd 3rd Last 3rd 2nd 1st
+4644 1st 2nd 3rd Last 3rd 2nd 1st
+4645 1st 2nd 3rd Last 3rd 2nd 1st
+4646 1st 2nd 3rd Last 3rd 2nd 1st
+4647 1st 2nd 3rd Last 3rd 2nd 1st
+4648 1st 2nd 3rd Last 3rd 2nd 1st
+4649 1st 2nd 3rd Last 3rd 2nd 1st
+4650 1st 2nd 3rd Last 3rd 2nd 1st
+4651 1st 2nd 3rd Last 3rd 2nd 1st
+4652 1st 2nd 3rd Last 3rd 2nd 1st
+4653 1st 2nd 3rd Last 3rd 2nd 1st
+4654 1st 2nd 3rd Last 3rd 2nd 1st
+4655 1st 2nd 3rd Last 3rd 2nd 1st
+4656 1st 2nd 3rd Last 3rd 2nd 1st
+4657 1st 2nd 3rd Last 3rd 2nd 1st
+4658 1st 2nd 3rd Last 3rd 2nd 1st
+4659 1st 2nd 3rd Last 3rd 2nd 1st
+4660 1st 2nd 3rd Last 3rd 2nd 1st
+4661 1st 2nd 3rd Last 3rd 2nd 1st
+4662 1st 2nd 3rd Last 3rd 2nd 1st
+4663 1st 2nd 3rd Last 3rd 2nd 1st
+4664 1st 2nd 3rd Last 3rd 2nd 1st
+4665 1st 2nd 3rd Last 3rd 2nd 1st
+4666 1st 2nd 3rd Last 3rd 2nd 1st
+4667 1st 2nd 3rd Last 3rd 2nd 1st
+4668 1st 2nd 3rd Last 3rd 2nd 1st
+4669 1st 2nd 3rd Last 3rd 2nd 1st
+4670 1st 2nd 3rd Last 3rd 2nd 1st
+4671 1st 2nd 3rd Last 3rd 2nd 1st
+4672 1st 2nd 3rd Last 3rd 2nd 1st
+4673 1st 2nd 3rd Last 3rd 2nd 1st
+4674 1st 2nd 3rd Last 3rd 2nd 1st
+4675 1st 2nd 3rd Last 3rd 2nd 1st
+4676 1st 2nd 3rd Last 3rd 2nd 1st
+4677 1st 2nd 3rd Last 3rd 2nd 1st
+4678 1st 2nd 3rd Last 3rd 2nd 1st
+4679 1st 2nd 3rd Last 3rd 2nd 1st
+4680 1st 2nd 3rd Last 3rd 2nd 1st
+4681 1st 2nd 3rd Last 3rd 2nd 1st
+4682 1st 2nd 3rd Last 3rd 2nd 1st
+4683 1st 2nd 3rd Last 3rd 2nd 1st
+4684 1st 2nd 3rd Last 3rd 2nd 1st
+4685 1st 2nd 3rd Last 3rd 2nd 1st
+4686 1st 2nd 3rd Last 3rd 2nd 1st
+4687 1st 2nd 3rd Last 3rd 2nd 1st
+4688 1st 2nd 3rd Last 3rd 2nd 1st
+4689 1st 2nd 3rd Last 3rd 2nd 1st
+4690 1st 2nd 3rd Last 3rd 2nd 1st
+4691 1st 2nd 3rd Last 3rd 2nd 1st
+4692 1st 2nd 3rd Last 3rd 2nd 1st
+4693 1st 2nd 3rd Last 3rd 2nd 1st
+4694 1st 2nd 3rd Last 3rd 2nd 1st
+4695 1st 2nd 3rd Last 3rd 2nd 1st
+4696 1st 2nd 3rd Last 3rd 2nd 1st
+4697 1st 2nd 3rd Last 3rd 2nd 1st
+4698 1st 2nd 3rd Last 3rd 2nd 1st
+4699 1st 2nd 3rd Last 3rd 2nd 1st
+4700 1st 2nd 3rd Last 3rd 2nd 1st
+4701 1st 2nd 3rd Last 3rd 2nd 1st
+4702 1st 2nd 3rd Last 3rd 2nd 1st
+4703 1st 2nd 3rd Last 3rd 2nd 1st
+4704 1st 2nd 3rd Last 3rd 2nd 1st
+4705 1st 2nd 3rd Last 3rd 2nd 1st
+4706 1st 2nd 3rd Last 3rd 2nd 1st
+4707 1st 2nd 3rd Last 3rd 2nd 1st
+4708 1st 2nd 3rd Last 3rd 2nd 1st
+4709 1st 2nd 3rd Last 3rd 2nd 1st
+4710 1st 2nd 3rd Last 3rd 2nd 1st
+4711 1st 2nd 3rd Last 3rd 2nd 1st
+4712 1st 2nd 3rd Last 3rd 2nd 1st
+4713 1st 2nd 3rd Last 3rd 2nd 1st
+4714 1st 2nd 3rd Last 3rd 2nd 1st
+4715 1st 2nd 3rd Last 3rd 2nd 1st
+4716 1st 2nd 3rd Last 3rd 2nd 1st
+4717 1st 2nd 3rd Last 3rd 2nd 1st
+4718 1st 2nd 3rd Last 3rd 2nd 1st
+4719 1st 2nd 3rd Last 3rd 2nd 1st
+4720 1st 2nd 3rd Last 3rd 2nd 1st
+4721 1st 2nd 3rd Last 3rd 2nd 1st
+4722 1st 2nd 3rd Last 3rd 2nd 1st
+4723 1st 2nd 3rd Last 3rd 2nd 1st
+4724 1st 2nd 3rd Last 3rd 2nd 1st
+4725 1st 2nd 3rd Last 3rd 2nd 1st
+4726 1st 2nd 3rd Last 3rd 2nd 1st
+4727 1st 2nd 3rd Last 3rd 2nd 1st
+4728 1st 2nd 3rd Last 3rd 2nd 1st
+4729 1st 2nd 3rd Last 3rd 2nd 1st
+4730 1st 2nd 3rd Last 3rd 2nd 1st
+4731 1st 2nd 3rd Last 3rd 2nd 1st
+4732 1st 2nd 3rd Last 3rd 2nd 1st
+4733 1st 2nd 3rd Last 3rd 2nd 1st
+4734 1st 2nd 3rd Last 3rd 2nd 1st
+4735 1st 2nd 3rd Last 3rd 2nd 1st
+4736 1st 2nd 3rd Last 3rd 2nd 1st
+4737 1st 2nd 3rd Last 3rd 2nd 1st
+4738 1st 2nd 3rd Last 3rd 2nd 1st
+4739 1st 2nd 3rd Last 3rd 2nd 1st
+4740 1st 2nd 3rd Last 3rd 2nd 1st
+4741 1st 2nd 3rd Last 3rd 2nd 1st
+4742 1st 2nd 3rd Last 3rd 2nd 1st
+4743 1st 2nd 3rd Last 3rd 2nd 1st
+4744 1st 2nd 3rd Last 3rd 2nd 1st
+4745 1st 2nd 3rd Last 3rd 2nd 1st
+4746 1st 2nd 3rd Last 3rd 2nd 1st
+4747 1st 2nd 3rd Last 3rd 2nd 1st
+4748 1st 2nd 3rd Last 3rd 2nd 1st
+4749 1st 2nd 3rd Last 3rd 2nd 1st
+4750 1st 2nd 3rd Last 3rd 2nd 1st
+4751 1st 2nd 3rd Last 3rd 2nd 1st
+4752 1st 2nd 3rd Last 3rd 2nd 1st
+4753 1st 2nd 3rd Last 3rd 2nd 1st
+4754 1st 2nd 3rd Last 3rd 2nd 1st
+4755 1st 2nd 3rd Last 3rd 2nd 1st
+4756 1st 2nd 3rd Last 3rd 2nd 1st
+4757 1st 2nd 3rd Last 3rd 2nd 1st
+4758 1st 2nd 3rd Last 3rd 2nd 1st
+4759 1st 2nd 3rd Last 3rd 2nd 1st
+4760 1st 2nd 3rd Last 3rd 2nd 1st
+4761 1st 2nd 3rd Last 3rd 2nd 1st
+4762 1st 2nd 3rd Last 3rd 2nd 1st
+4763 1st 2nd 3rd Last 3rd 2nd 1st
+4764 1st 2nd 3rd Last 3rd 2nd 1st
+4765 1st 2nd 3rd Last 3rd 2nd 1st
+4766 1st 2nd 3rd Last 3rd 2nd 1st
+4767 1st 2nd 3rd Last 3rd 2nd 1st
+4768 1st 2nd 3rd Last 3rd 2nd 1st
+4769 1st 2nd 3rd Last 3rd 2nd 1st
+4770 1st 2nd 3rd Last 3rd 2nd 1st
+4771 1st 2nd 3rd Last 3rd 2nd 1st
+4772 1st 2nd 3rd Last 3rd 2nd 1st
+4773 1st 2nd 3rd Last 3rd 2nd 1st
+4774 1st 2nd 3rd Last 3rd 2nd 1st
+4775 1st 2nd 3rd Last 3rd 2nd 1st
+4776 1st 2nd 3rd Last 3rd 2nd 1st
+4777 1st 2nd 3rd Last 3rd 2nd 1st
+4778 1st 2nd 3rd Last 3rd 2nd 1st
+4779 1st 2nd 3rd Last 3rd 2nd 1st
+4780 1st 2nd 3rd Last 3rd 2nd 1st
+4781 1st 2nd 3rd Last 3rd 2nd 1st
+4782 1st 2nd 3rd Last 3rd 2nd 1st
+4783 1st 2nd 3rd Last 3rd 2nd 1st
+4784 1st 2nd 3rd Last 3rd 2nd 1st
+4785 1st 2nd 3rd Last 3rd 2nd 1st
+4786 1st 2nd 3rd Last 3rd 2nd 1st
+4787 1st 2nd 3rd Last 3rd 2nd 1st
+4788 1st 2nd 3rd Last 3rd 2nd 1st
+4789 1st 2nd 3rd Last 3rd 2nd 1st
+4790 1st 2nd 3rd Last 3rd 2nd 1st
+4791 1st 2nd 3rd Last 3rd 2nd 1st
+4792 1st 2nd 3rd Last 3rd 2nd 1st
+4793 1st 2nd 3rd Last 3rd 2nd 1st
+4794 1st 2nd 3rd Last 3rd 2nd 1st
+4795 1st 2nd 3rd Last 3rd 2nd 1st
+4796 1st 2nd 3rd Last 3rd 2nd 1st
+4797 1st 2nd 3rd Last 3rd 2nd 1st
+4798 1st 2nd 3rd Last 3rd 2nd 1st
+4799 1st 2nd 3rd Last 3rd 2nd 1st
+4800 1st 2nd 3rd Last 3rd 2nd 1st
+4801 1st 2nd 3rd Last 3rd 2nd 1st
+4802 1st 2nd 3rd Last 3rd 2nd 1st
+4803 1st 2nd 3rd Last 3rd 2nd 1st
+4804 1st 2nd 3rd Last 3rd 2nd 1st
+4805 1st 2nd 3rd Last 3rd 2nd 1st
+4806 1st 2nd 3rd Last 3rd 2nd 1st
+4807 1st 2nd 3rd Last 3rd 2nd 1st
+4808 1st 2nd 3rd Last 3rd 2nd 1st
+4809 1st 2nd 3rd Last 3rd 2nd 1st
+4810 1st 2nd 3rd Last 3rd 2nd 1st
+4811 1st 2nd 3rd Last 3rd 2nd 1st
+4812 1st 2nd 3rd Last 3rd 2nd 1st
+4813 1st 2nd 3rd Last 3rd 2nd 1st
+4814 1st 2nd 3rd Last 3rd 2nd 1st
+4815 1st 2nd 3rd Last 3rd 2nd 1st
+4816 1st 2nd 3rd Last 3rd 2nd 1st
+4817 1st 2nd 3rd Last 3rd 2nd 1st
+4818 1st 2nd 3rd Last 3rd 2nd 1st
+4819 1st 2nd 3rd Last 3rd 2nd 1st
+4820 1st 2nd 3rd Last 3rd 2nd 1st
+4821 1st 2nd 3rd Last 3rd 2nd 1st
+4822 1st 2nd 3rd Last 3rd 2nd 1st
+4823 1st 2nd 3rd Last 3rd 2nd 1st
+4824 1st 2nd 3rd Last 3rd 2nd 1st
+4825 1st 2nd 3rd Last 3rd 2nd 1st
+4826 1st 2nd 3rd Last 3rd 2nd 1st
+4827 1st 2nd 3rd Last 3rd 2nd 1st
+4828 1st 2nd 3rd Last 3rd 2nd 1st
+4829 1st 2nd 3rd Last 3rd 2nd 1st
+4830 1st 2nd 3rd Last 3rd 2nd 1st
+4831 1st 2nd 3rd Last 3rd 2nd 1st
+4832 1st 2nd 3rd Last 3rd 2nd 1st
+4833 1st 2nd 3rd Last 3rd 2nd 1st
+4834 1st 2nd 3rd Last 3rd 2nd 1st
+4835 1st 2nd 3rd Last 3rd 2nd 1st
+4836 1st 2nd 3rd Last 3rd 2nd 1st
+4837 1st 2nd 3rd Last 3rd 2nd 1st
+4838 1st 2nd 3rd Last 3rd 2nd 1st
+4839 1st 2nd 3rd Last 3rd 2nd 1st
+4840 1st 2nd 3rd Last 3rd 2nd 1st
+4841 1st 2nd 3rd Last 3rd 2nd 1st
+4842 1st 2nd 3rd Last 3rd 2nd 1st
+4843 1st 2nd 3rd Last 3rd 2nd 1st
+4844 1st 2nd 3rd Last 3rd 2nd 1st
+4845 1st 2nd 3rd Last 3rd 2nd 1st
+4846 1st 2nd 3rd Last 3rd 2nd 1st
+4847 1st 2nd 3rd Last 3rd 2nd 1st
+4848 1st 2nd 3rd Last 3rd 2nd 1st
+4849 1st 2nd 3rd Last 3rd 2nd 1st
+4850 1st 2nd 3rd Last 3rd 2nd 1st
+4851 1st 2nd 3rd Last 3rd 2nd 1st
+4852 1st 2nd 3rd Last 3rd 2nd 1st
+4853 1st 2nd 3rd Last 3rd 2nd 1st
+4854 1st 2nd 3rd Last 3rd 2nd 1st
+4855 1st 2nd 3rd Last 3rd 2nd 1st
+4856 1st 2nd 3rd Last 3rd 2nd 1st
+4857 1st 2nd 3rd Last 3rd 2nd 1st
+4858 1st 2nd 3rd Last 3rd 2nd 1st
+4859 1st 2nd 3rd Last 3rd 2nd 1st
+4860 1st 2nd 3rd Last 3rd 2nd 1st
+4861 1st 2nd 3rd Last 3rd 2nd 1st
+4862 1st 2nd 3rd Last 3rd 2nd 1st
+4863 1st 2nd 3rd Last 3rd 2nd 1st
+4864 1st 2nd 3rd Last 3rd 2nd 1st
+4865 1st 2nd 3rd Last 3rd 2nd 1st
+4866 1st 2nd 3rd Last 3rd 2nd 1st
+4867 1st 2nd 3rd Last 3rd 2nd 1st
+4868 1st 2nd 3rd Last 3rd 2nd 1st
+4869 1st 2nd 3rd Last 3rd 2nd 1st
+4870 1st 2nd 3rd Last 3rd 2nd 1st
+4871 1st 2nd 3rd Last 3rd 2nd 1st
+4872 1st 2nd 3rd Last 3rd 2nd 1st
+4873 1st 2nd 3rd Last 3rd 2nd 1st
+4874 1st 2nd 3rd Last 3rd 2nd 1st
+4875 1st 2nd 3rd Last 3rd 2nd 1st
+4876 1st 2nd 3rd Last 3rd 2nd 1st
+4877 1st 2nd 3rd Last 3rd 2nd 1st
+4878 1st 2nd 3rd Last 3rd 2nd 1st
+4879 1st 2nd 3rd Last 3rd 2nd 1st
+4880 1st 2nd 3rd Last 3rd 2nd 1st
+4881 1st 2nd 3rd Last 3rd 2nd 1st
+4882 1st 2nd 3rd Last 3rd 2nd 1st
+4883 1st 2nd 3rd Last 3rd 2nd 1st
+4884 1st 2nd 3rd Last 3rd 2nd 1st
+4885 1st 2nd 3rd Last 3rd 2nd 1st
+4886 1st 2nd 3rd Last 3rd 2nd 1st
+4887 1st 2nd 3rd Last 3rd 2nd 1st
+4888 1st 2nd 3rd Last 3rd 2nd 1st
+4889 1st 2nd 3rd Last 3rd 2nd 1st
+4890 1st 2nd 3rd Last 3rd 2nd 1st
+4891 1st 2nd 3rd Last 3rd 2nd 1st
+4892 1st 2nd 3rd Last 3rd 2nd 1st
+4893 1st 2nd 3rd Last 3rd 2nd 1st
+4894 1st 2nd 3rd Last 3rd 2nd 1st
+4895 1st 2nd 3rd Last 3rd 2nd 1st
+4896 1st 2nd 3rd Last 3rd 2nd 1st
+4897 1st 2nd 3rd Last 3rd 2nd 1st
+4898 1st 2nd 3rd Last 3rd 2nd 1st
+4899 1st 2nd 3rd Last 3rd 2nd 1st
+4900 1st 2nd 3rd Last 3rd 2nd 1st
+4901 1st 2nd 3rd Last 3rd 2nd 1st
+4902 1st 2nd 3rd Last 3rd 2nd 1st
+4903 1st 2nd 3rd Last 3rd 2nd 1st
+4904 1st 2nd 3rd Last 3rd 2nd 1st
+4905 1st 2nd 3rd Last 3rd 2nd 1st
+4906 1st 2nd 3rd Last 3rd 2nd 1st
+4907 1st 2nd 3rd Last 3rd 2nd 1st
+4908 1st 2nd 3rd Last 3rd 2nd 1st
+4909 1st 2nd 3rd Last 3rd 2nd 1st
+4910 1st 2nd 3rd Last 3rd 2nd 1st
+4911 1st 2nd 3rd Last 3rd 2nd 1st
+4912 1st 2nd 3rd Last 3rd 2nd 1st
+4913 1st 2nd 3rd Last 3rd 2nd 1st
+4914 1st 2nd 3rd Last 3rd 2nd 1st
+4915 1st 2nd 3rd Last 3rd 2nd 1st
+4916 1st 2nd 3rd Last 3rd 2nd 1st
+4917 1st 2nd 3rd Last 3rd 2nd 1st
+4918 1st 2nd 3rd Last 3rd 2nd 1st
+4919 1st 2nd 3rd Last 3rd 2nd 1st
+4920 1st 2nd 3rd Last 3rd 2nd 1st
+4921 1st 2nd 3rd Last 3rd 2nd 1st
+4922 1st 2nd 3rd Last 3rd 2nd 1st
+4923 1st 2nd 3rd Last 3rd 2nd 1st
+4924 1st 2nd 3rd Last 3rd 2nd 1st
+4925 1st 2nd 3rd Last 3rd 2nd 1st
+4926 1st 2nd 3rd Last 3rd 2nd 1st
+4927 1st 2nd 3rd Last 3rd 2nd 1st
+4928 1st 2nd 3rd Last 3rd 2nd 1st
+4929 1st 2nd 3rd Last 3rd 2nd 1st
+4930 1st 2nd 3rd Last 3rd 2nd 1st
+4931 1st 2nd 3rd Last 3rd 2nd 1st
+4932 1st 2nd 3rd Last 3rd 2nd 1st
+4933 1st 2nd 3rd Last 3rd 2nd 1st
+4934 1st 2nd 3rd Last 3rd 2nd 1st
+4935 1st 2nd 3rd Last 3rd 2nd 1st
+4936 1st 2nd 3rd Last 3rd 2nd 1st
+4937 1st 2nd 3rd Last 3rd 2nd 1st
+4938 1st 2nd 3rd Last 3rd 2nd 1st
+4939 1st 2nd 3rd Last 3rd 2nd 1st
+4940 1st 2nd 3rd Last 3rd 2nd 1st
+4941 1st 2nd 3rd Last 3rd 2nd 1st
+4942 1st 2nd 3rd Last 3rd 2nd 1st
+4943 1st 2nd 3rd Last 3rd 2nd 1st
+4944 1st 2nd 3rd Last 3rd 2nd 1st
+4945 1st 2nd 3rd Last 3rd 2nd 1st
+4946 1st 2nd 3rd Last 3rd 2nd 1st
+4947 1st 2nd 3rd Last 3rd 2nd 1st
+4948 1st 2nd 3rd Last 3rd 2nd 1st
+4949 1st 2nd 3rd Last 3rd 2nd 1st
+4950 1st 2nd 3rd Last 3rd 2nd 1st
+4951 1st 2nd 3rd Last 3rd 2nd 1st
+4952 1st 2nd 3rd Last 3rd 2nd 1st
+4953 1st 2nd 3rd Last 3rd 2nd 1st
+4954 1st 2nd 3rd Last 3rd 2nd 1st
+4955 1st 2nd 3rd Last 3rd 2nd 1st
+4956 1st 2nd 3rd Last 3rd 2nd 1st
+4957 1st 2nd 3rd Last 3rd 2nd 1st
+4958 1st 2nd 3rd Last 3rd 2nd 1st
+4959 1st 2nd 3rd Last 3rd 2nd 1st
+4960 1st 2nd 3rd Last 3rd 2nd 1st
+4961 1st 2nd 3rd Last 3rd 2nd 1st
+4962 1st 2nd 3rd Last 3rd 2nd 1st
+4963 1st 2nd 3rd Last 3rd 2nd 1st
+4964 1st 2nd 3rd Last 3rd 2nd 1st
+4965 1st 2nd 3rd Last 3rd 2nd 1st
+4966 1st 2nd 3rd Last 3rd 2nd 1st
+4967 1st 2nd 3rd Last 3rd 2nd 1st
+4968 1st 2nd 3rd Last 3rd 2nd 1st
+4969 1st 2nd 3rd Last 3rd 2nd 1st
+4970 1st 2nd 3rd Last 3rd 2nd 1st
+4971 1st 2nd 3rd Last 3rd 2nd 1st
+4972 1st 2nd 3rd Last 3rd 2nd 1st
+4973 1st 2nd 3rd Last 3rd 2nd 1st
+4974 1st 2nd 3rd Last 3rd 2nd 1st
+4975 1st 2nd 3rd Last 3rd 2nd 1st
+4976 1st 2nd 3rd Last 3rd 2nd 1st
+4977 1st 2nd 3rd Last 3rd 2nd 1st
+4978 1st 2nd 3rd Last 3rd 2nd 1st
+4979 1st 2nd 3rd Last 3rd 2nd 1st
+4980 1st 2nd 3rd Last 3rd 2nd 1st
+4981 1st 2nd 3rd Last 3rd 2nd 1st
+4982 1st 2nd 3rd Last 3rd 2nd 1st
+4983 1st 2nd 3rd Last 3rd 2nd 1st
+4984 1st 2nd 3rd Last 3rd 2nd 1st
+4985 1st 2nd 3rd Last 3rd 2nd 1st
+4986 1st 2nd 3rd Last 3rd 2nd 1st
+4987 1st 2nd 3rd Last 3rd 2nd 1st
+4988 1st 2nd 3rd Last 3rd 2nd 1st
+4989 1st 2nd 3rd Last 3rd 2nd 1st
+4990 1st 2nd 3rd Last 3rd 2nd 1st
+4991 1st 2nd 3rd Last 3rd 2nd 1st
+4992 1st 2nd 3rd Last 3rd 2nd 1st
+4993 1st 2nd 3rd Last 3rd 2nd 1st
+4994 1st 2nd 3rd Last 3rd 2nd 1st
+4995 1st 2nd 3rd Last 3rd 2nd 1st
+4996 1st 2nd 3rd Last 3rd 2nd 1st
+4997 1st 2nd 3rd Last 3rd 2nd 1st
+4998 1st 2nd 3rd Last 3rd 2nd 1st
+4999 1st 2nd 3rd Last 3rd 2nd 1st
+Stopping
Index: tests/concurrent/waitfor/.expect/statment.txt
===================================================================
--- tests/concurrent/waitfor/.expect/statment.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/.expect/statment.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,702 @@
+Starting
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Stopping
Index: tests/concurrent/waitfor/.expect/when.txt
===================================================================
--- tests/concurrent/waitfor/.expect/when.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/.expect/when.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,5000 @@
+Starting
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+Stopping
Index: tests/concurrent/waitfor/barge.c
===================================================================
--- tests/concurrent/waitfor/barge.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/barge.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,92 @@
+//---------------------------------------------------------
+// Barging test
+// Ensures that no barging can occur between :
+//   - the frontend of the waitfor and the waited call
+//   - the waited call and the backend of the waitfor
+//---------------------------------------------------------
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include <stdbool.h>
+
+static const unsigned long N = 5_000ul;
+
+enum state_t { WAITFOR, CALL, BARGE };
+
+monitor global_t {
+	bool done;
+	bool started;
+	state_t state;
+};
+
+void ?{} ( global_t & this ) {
+	this.done = false;
+	this.started = false;
+	this.state = BARGE;
+}
+
+void ^?{} ( global_t & mutex this ) {}
+
+global_t global;
+
+bool barge( global_t & mutex this ) {
+	this.state = BARGE;
+	return !this.done;
+}
+
+thread barger_t {};
+void main( barger_t & this ) {
+	yield();
+	while( barge( global ) ) { yield(random( 10 )); }
+}
+
+bool do_call( global_t & mutex this ) {
+	yield(random( 10 ));
+	if( this.state != WAITFOR && !this.done && this.started ) {
+		serr | "Barging before caller detected" | endl;
+	}
+
+	this.state = CALL;
+	return !this.done;
+}
+
+thread caller_t {};
+void main( caller_t & this ) {
+	while( do_call(global) ) { yield(random( 10 )); }
+}
+
+void do_wait( global_t & mutex this ) {
+	this.started = true;
+	for( int i = 0; i < N; i++) {
+		yield(random( 10 ));
+		this.state = WAITFOR;
+		waitfor(do_call, this) {
+			sout | i | endl;
+		}
+
+		if( this.state != CALL ) {
+			serr | "Barging after caller detected" | endl;
+		}
+	}
+
+	this.done = true;
+}
+
+thread waiter_t{};
+void main( waiter_t & this ) {
+	do_wait(global);
+}
+
+int main() {
+	sout | "Starting" | endl;
+	{
+		barger_t bargers[17];
+		caller_t callers[7];
+		waiter_t waiters;
+	}
+	sout | "Stopping" | endl;
+}
Index: tests/concurrent/waitfor/dtor.c
===================================================================
--- tests/concurrent/waitfor/dtor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/dtor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,63 @@
+//---------------------------------------------------------
+// Barging test
+// Ensures the statement order is reverse when using waitfor ^?{}
+//---------------------------------------------------------
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include <stdbool.h>
+
+static const unsigned long N = 5_000ul;
+
+enum state_t {
+	CTOR,
+	MAIN,
+	AFTER,
+	END,
+	DTOR
+};
+
+thread dummy_t {
+	state_t state;
+};
+
+static inline void set_state( dummy_t & this, state_t state) {
+	switch(state) {
+		case CTOR  : break;
+		case MAIN  : if( this.state != CTOR  ) { serr | "ERROR Expected state to be CTOR"  | endl; abort(); } this.state = state; break;
+		case AFTER : if( this.state != MAIN  ) { serr | "ERROR Expected state to be MAIN"  | endl; abort(); } this.state = state; break;
+		case END   : if( this.state != AFTER ) { serr | "ERROR Expected state to be AFTER" | endl; abort(); } this.state = state; break;
+		case DTOR  : if( this.state != END   ) { serr | "ERROR Expected state to be END"   | endl; abort(); } this.state = state; break;
+	}
+}
+
+void ^?{}( dummy_t & mutex this ) {
+	set_state( this, DTOR );
+}
+
+void ?{}( dummy_t & this ) {
+	this.state = CTOR;
+}
+
+void main( dummy_t & this ) {
+	yield(random( 10 ));
+	set_state( this, MAIN );
+	waitfor( ^?{}, this ) {
+		set_state( this, AFTER );
+	}
+	set_state( this, END );
+}
+
+int main() {
+	sout | "Starting" | endl;
+	processor p;
+	for( int i = 0; i < N; i++ ){
+		dummy_t dummy[4];
+		yield( random( 100 ) );
+	}
+	sout | "Stopping" | endl;
+}
Index: tests/concurrent/waitfor/else.c
===================================================================
--- tests/concurrent/waitfor/else.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/else.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,48 @@
+#include <fstream.hfa>
+#include <monitor.hfa>
+
+#include <stdbool.h>
+
+monitor M {};
+
+void notcalled( M & mutex m ) {
+	abort();
+}
+
+void test( M & mutex m ) {
+	int i = 0;
+	sout | "Starting" | endl;
+
+	when( false ) waitfor( notcalled, m );
+
+	sout | "Step" | i++ | endl;
+
+	waitfor( notcalled, m ); or else {
+		sout | "else called" | endl;
+	}
+
+	sout | "Step" | i++ | endl;
+
+	when( true ) waitfor( notcalled, m ); or when( true ) else {
+		sout | "else called" | endl;
+	}
+
+	sout | "Step" | i++ | endl;
+
+	when( false ) waitfor( notcalled, m ); or when( true ) else {
+		sout | "else called" | endl;
+	}
+
+	sout | "Step" | i++ | endl;
+
+	when( false ) waitfor( notcalled, m ); or when( false ) else {
+		sout | "else called" | endl;
+	}
+
+	sout | "Done" | endl;
+}
+
+int main() {
+	M m;
+	test(m);
+}
Index: tests/concurrent/waitfor/parse.c
===================================================================
--- tests/concurrent/waitfor/parse.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/parse.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,104 @@
+//----------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------------------
+//
+//		DEPRECATED TEST
+//		DIFFERS BETWEEN DEBUG AND RELEASE
+//
+//----------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------------------
+
+#include <monitor.hfa>
+
+monitor M {};
+
+M a;
+
+void f1( M & mutex a );
+void f2( M & mutex a );
+void f2( M & mutex a, M & mutex b );
+void f3( M & mutex a );
+void f3( M & mutex a, M & mutex b );
+void f3( M & mutex a, M & mutex b, M & mutex c );
+
+void foo() {
+
+	//---------------------------------------
+	waitfor( f1, a ) {
+		1;
+	}
+
+	//---------------------------------------
+	waitfor( f1, a ) {
+		2;
+	}
+	waitfor( f2, a ) {
+		3;
+	}
+
+	//---------------------------------------
+	when( 1 < 3 ) waitfor( f2, a, a ) {
+		4;
+	}
+	or timeout( 100 ) {
+		5;
+	}
+
+	//---------------------------------------
+	when( 2 < 3 ) waitfor( f3, a ) {
+		5;
+	}
+	or else {
+		6;
+	}
+
+	//---------------------------------------
+	when( 3 < 3 ) waitfor( f3, a, a ) {
+		7;
+	}
+	or when( 4 < 3 ) timeout( 101 ) {
+		8;
+	}
+	or when( 5 < 3 ) else {
+		9;
+	}
+
+	//---------------------------------------
+	when( 6 < 3 ) waitfor( f3, a, a, a ) {
+		10;
+	}
+ 	or when( 7 < 3 ) waitfor( f1, a  ) {
+		11;
+	}
+	or else {
+		12;
+	}
+
+	//---------------------------------------
+	when( 8 < 3 ) waitfor( f3, a, a ) {
+		13;
+	}
+ 	or waitfor( f1, a  ) {
+		14;
+	}
+	or when( 9 < 3 ) timeout( 102 ) {
+		15;
+	}
+
+	//---------------------------------------
+	when( 10 < 3 ) waitfor( f1, a ) {
+		16;
+	}
+ 	or waitfor( f2, a, a ) {
+		17;
+	}
+	or timeout( 103 ) {
+		18;
+	}
+	or when( 11 < 3 ) else {
+		19;
+	}
+}
+
+int main() {
+
+}
Index: tests/concurrent/waitfor/parse2.c
===================================================================
--- tests/concurrent/waitfor/parse2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/parse2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,249 @@
+// 
+// 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.
+// 
+// waitfor.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 30 17:53:29 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 30 17:55:17 2017
+// Update Count     : 2
+// 
+
+#include <stdbool.h>
+
+int fred() {
+	int x, z;
+
+	// test waitfor and when
+
+	waitfor( x );
+
+	waitfor( x ) {
+	}
+
+	waitfor( x, z ) {
+	}
+
+	when( true ) waitfor( x );
+
+	when( true ) waitfor( x ) {
+	}
+
+	waitfor( x );
+	or waitfor( y );
+
+	waitfor( x, z );
+	or waitfor( y );
+
+	when( true ) waitfor( x );
+	or when( true ) waitfor( y );
+
+	when( true ) waitfor( x, z );
+	or when( true ) waitfor( y );
+
+	waitfor( x ) {
+	} or waitfor( y ) {
+	}
+
+	waitfor( x, z ) {
+	} or waitfor( y ) {
+	}
+
+	when( true ) waitfor( x ) {
+	} or when( true ) waitfor( y ) {
+	}
+
+	waitfor( x );
+	or waitfor( y ) {
+	}
+
+	when( true ) waitfor( x );
+	or when( true ) waitfor( y ) {
+	}
+
+	waitfor( x ) {
+	} or waitfor( y );
+
+	when( true ) waitfor( x ) {
+	} or when( true ) waitfor( y );
+
+	// test when, waitfor and else
+
+	waitfor( x );
+	or else;
+
+	when( true ) waitfor( x );
+	or else;
+
+	when( true ) waitfor( x, z );
+	or else;
+
+	waitfor( x ) {
+	} or else {
+	}
+
+	when( true ) waitfor( x ) {
+	} or else {
+	}
+
+	waitfor( x );
+	or else {
+	}
+
+	when( true ) waitfor( x );
+	or else {
+	}
+
+	when( true ) waitfor( x, z );
+	or else {
+	}
+
+	waitfor( x ) {
+	} or else;
+
+	when( true ) waitfor( x ) {
+	} or else;
+
+	waitfor( x );
+	or when( true ) else;
+
+	when( true ) waitfor( x );
+	or when( true ) else;
+
+	when( true ) waitfor( x, z );
+	or when( true ) else;
+
+	waitfor( x ) {
+	} or when( true ) else {
+	}
+
+	when( true ) waitfor( x ) {
+	} or when( true ) else {
+	}
+
+	waitfor( x );
+	or when( true ) else {
+	}
+
+	when( true ) waitfor( x );
+	or when( true ) else {
+	}
+
+	when( true ) waitfor( x, z );
+	or when( true ) else {
+	}
+
+	waitfor( x ) {
+	} or when( true ) else;
+
+	when( true ) waitfor( x ) {
+	} or when( true ) else;
+
+	// test when, waitfor and timeout
+
+	waitfor( x );
+	or timeout( 3 );
+
+	waitfor( x, z );
+	or timeout( 3 );
+
+	when( true ) waitfor( x );
+	or timeout( 3 );
+
+	waitfor( x ) {
+	} or timeout( 3 ) {
+	}
+
+	when( true ) waitfor( x ) {
+	} or timeout( 3 ) {
+	}
+
+	when( true ) waitfor( x, z ) {
+	} or timeout( 3 ) {
+	}
+
+	when( true ) waitfor( x ) {
+	} or when ( true ) timeout( 3 ) {
+	}
+
+	when( true ) waitfor( x, z ) {
+	} or when ( true ) timeout( 3 ) {
+	}
+
+	waitfor( x );
+	or timeout( 3 ) {
+	}
+
+	when( true ) waitfor( x );
+	or timeout( 3 ) {
+	}
+
+	when( true ) waitfor( x );
+	or when( true ) timeout( 3 ) {
+	}
+
+	waitfor( x ) {
+	} or timeout( 3 );
+
+	when( true ) waitfor( x ) {
+	} or timeout( 3 );
+
+	when( true ) waitfor( x ) {
+	} or when( true ) timeout( 3 );
+
+	// test when, waitfor, timeout and else
+
+	waitfor( x ) {
+	} or timeout( 3 ) {
+	} or when( true ) else {}
+
+	when( true ) waitfor( x ) {
+	} or timeout( 3 ) {
+	} or when( true ) else {}
+
+	waitfor( x ) {
+	} or timeout( 3 ) {
+	} or when( true ) else {}
+
+	waitfor( x ) {
+	} or when( true ) timeout( 3 ) {
+	} or when( true ) else {}
+
+	when( true ) waitfor( x ) {
+	} or timeout( 3 ) {
+	} or when( true ) else {}
+
+	waitfor( x ) {
+	} or when( true ) timeout( 3 ) {
+	} or when( true ) else {}
+
+	when( true ) waitfor( x ) {
+	} or when( true ) timeout( 3 ) {
+	} or when( true ) else {}
+
+	// test quasi-keywords "or" and "timeout"
+
+	int or, timeout;
+	waitfor( timeout, 7 ) 3;
+	waitfor( timeout, 7 ) 3; or waitfor( timeout, 7 ) 3;
+	when( or ) waitfor( or, ) { 4; } or timeout( 1 ) 3;
+	when( 3 ) waitfor( or, 2 ) 4; or else 4;
+	when( 3 ) waitfor( or, 3 ) 4; or when( or ) timeout( or ) 4; or when( or ) else timeout;
+	when( 3 ) waitfor( or, or ) 3; or when( or ) waitfor( or, timeout ) 4; or else 4;
+	when( 3 ) waitfor( or, or ) 3; or waitfor( or, 9 ) 4; or when( or ) timeout( timeout ) 4;
+	when( 3 ) waitfor( or, 3 ) 3; or waitfor( or, 7 ) or; or timeout( 1 ) or; or when( 3 ) else or;
+
+	// test else selection
+
+	if ( or > timeout ) waitfor( or ) 3;
+	else waitfor( timeout ) 4;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa waitfor.c" //
+// End: //
Index: tests/concurrent/waitfor/recurse.c
===================================================================
--- tests/concurrent/waitfor/recurse.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/recurse.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,145 @@
+//----------------------------------------------------------------
+// Recursion test
+// Ensures that proper ordering occurs between the nested waitfors
+//-----------------------------------------------------------------
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include <stdbool.h>
+#include <time.h>
+
+static const unsigned long N = 5_000ul;
+
+static inline void rand_yield() { yield(random( 10 )); }
+
+enum state_t { FIRST, SECOND, THIRD, LAST, STOP };
+void shuffle(enum state_t * array)
+{
+	int i;
+	for (i = 0; i < 4; i++)
+	{
+		int j = random( 4 );
+		enum state_t t = array[j];
+		array[j] = array[i];
+		array[i] = t;
+	}
+}
+
+
+monitor global_t {
+	int counter;
+	volatile bool ready;
+	state_t actions[4];
+};
+
+void ?{} ( global_t & this ) {
+	this.counter = 0;
+	this.ready = false;
+	this.actions[0] = FIRST;
+	this.actions[1] = SECOND;
+	this.actions[2] = THIRD;
+	this.actions[3] = LAST;
+	shuffle( this.actions );
+}
+
+void ^?{} ( global_t & mutex this ) {}
+
+global_t global;
+
+state_t call4( global_t & mutex this, int idx ) {
+	sout | "Last";
+
+	rand_yield();
+	this.counter++;
+	this.ready = false;
+	shuffle( this.actions );
+
+	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
+}
+
+state_t call3( global_t & mutex this, int idx ) {
+	sout | "3rd";
+
+	rand_yield();
+	waitfor( call4, this );
+	rand_yield();
+
+	sout | "3rd";
+
+	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
+}
+
+state_t call2( global_t & mutex this, int idx ) {
+	sout | "2nd";
+
+	rand_yield();
+	waitfor( call3, this );
+	rand_yield();
+
+	sout | "2nd";
+
+	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
+}
+
+state_t call1( global_t & mutex this, int idx ) {
+	this.ready = true;
+
+	sout | this.counter | "1st";
+
+	rand_yield();
+	waitfor( call2, this );
+	rand_yield();
+
+	sout | "1st" | endl;
+
+	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
+}
+
+thread waiter_t{
+	int     idx;
+	state_t state;
+};
+
+void ^?{} ( waiter_t & mutex this ) {}
+void ?{} ( waiter_t & this ) {}
+
+void ?{}( waiter_t & this, int idx, state_t state ) {
+	this.idx   = idx;
+	this.state = state;
+}
+
+
+void main( waiter_t & this ) {
+	while( this.state != STOP ) {
+		rand_yield();
+
+		switch( this.state ) {
+			case FIRST  :                                     this.state = call1( global, this.idx ); break;
+			case SECOND : while( !global.ready ) { yield(); } this.state = call2( global, this.idx ); break;
+			case THIRD  : while( !global.ready ) { yield(); } this.state = call3( global, this.idx ); break;
+			case LAST   : while( !global.ready ) { yield(); } this.state = call4( global, this.idx ); break;
+			case STOP   : serr | "This should not happen" | endl;
+		}
+	}
+}
+
+static waiter_t * volatile the_threads;
+
+int main() {
+	srandom( time(NULL) );
+	sout | "Starting" | endl;
+	{
+		waiter_t waiters[4] = {
+			{ 0, FIRST  },
+			{ 1, SECOND },
+			{ 2, THIRD  },
+			{ 3, LAST   }
+		};
+		the_threads = waiters;
+	}
+	sout | "Stopping" | endl;
+}
Index: tests/concurrent/waitfor/simple.c
===================================================================
--- tests/concurrent/waitfor/simple.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/simple.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,85 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include <time.h>
+
+static const unsigned long N = 500ul;
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+monitor global_t {};
+
+global_t globalA;
+
+thread Acceptor {};
+thread Acceptee {};
+
+volatile bool done;
+
+//----------------------------------------------------------------------------------------------------
+// Acceptor
+void do_notify( global_t * mutex a );
+
+void do_wait( global_t * mutex a ) {
+	sout | "Waiting to accept" | endl;
+	yield( random( 10 ) );
+
+	sout | "Accepting" | endl;
+
+	__acceptable_t acceptable;
+	acceptable.func          = (fptr_t)do_notify;
+	acceptable.count         = 1;
+	acceptable.monitors      = &a;
+
+	__waitfor_internal( 1, &acceptable );
+
+	sout | "Accepted" | endl;
+	yield( random( 10 ) );
+}
+
+void main( Acceptor* this ) {
+	for( int i = 0; i < N; i++ ) {
+		do_wait( &globalA );
+		sout | i | endl;
+	}
+
+	done = true;
+}
+
+//----------------------------------------------------------------------------------------------------
+// Acceptee
+void do_notify( global_t * mutex a ) {
+
+}
+
+void main( Acceptee* this ) {
+	while( !done ) {
+		yield( random( 10 ) );
+		do_notify( &globalA );
+		yield( random( 10 ) );
+	}
+}
+
+//----------------------------------------------------------------------------------------------------
+// Main
+int main(int argc, char* argv[]) {
+	done = false;
+	srandom( time( NULL ) );
+	printf("%p\n", &globalA);
+	sout | "Starting" | endl;
+	{
+		Acceptor r;
+		Acceptee e[13];
+
+	}
+	sout | "Done" | endl;
+}
Index: tests/concurrent/waitfor/statment.c
===================================================================
--- tests/concurrent/waitfor/statment.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/statment.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,136 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+
+#include <stdbool.h>
+
+monitor M {
+	int index;
+	int last_val;
+	int calls[7];
+};
+
+volatile bool start = false;
+
+void ?{}( M & this ) {
+	this.index = 0;
+	this.last_val = 0;
+	for( int i = 0; i < 7; i++ ) {
+		this.calls[i] = 100; //10_000;
+	}
+}
+
+void ^?{} ( M &  mutex this ) {}
+
+int get_index( M & mutex this ) {
+	this.index += 1;
+	return this.index;
+}
+
+bool call1( M & mutex this ) {
+	this.last_val = 1;
+	this.calls[0] -= 1;
+	return this.calls[0] > 0;
+}
+
+bool call2( M & mutex this ) {
+	this.last_val = 2;
+	this.calls[1] -= 1;
+	return this.calls[1] > 0;
+}
+
+bool call3( M & mutex this ) {
+	this.last_val = 3;
+	this.calls[2] -= 1;
+	return this.calls[2] > 0;
+}
+
+bool call4( M & mutex this ) {
+	this.last_val = 4;
+	this.calls[3] -= 1;
+	return this.calls[3] > 0;
+}
+
+bool call5( M & mutex this ) {
+	this.last_val = 5;
+	this.calls[4] -= 1;
+	return this.calls[4] > 0;
+}
+
+bool call6( M & mutex this ) {
+	this.last_val = 6;
+	this.calls[5] -= 1;
+	return this.calls[5] > 0;
+}
+
+bool call7( M & mutex this ) {
+	this.last_val = 7;
+	this.calls[6] -= 1;
+	return this.calls[6] > 0;
+}
+
+M m;
+thread caller{};
+
+bool call( int index ) {
+	switch( index ) {
+		case 1: return call1( m );
+		case 2: return call2( m );
+		case 3: return call3( m );
+		case 4: return call4( m );
+		case 5: return call5( m );
+		case 6: return call6( m );
+		case 7: return call7( m );
+		default :
+			serr | "Incorrect index" | index | endl;
+			abort();
+	}
+}
+
+void main( caller & this ) {
+	int index = get_index( m );
+	while( !start ) yield();
+	while( call( index ) );
+}
+
+void do_wait( M & mutex this ) {
+	bool done = false;
+
+	start = true;
+
+	while( !done ) {
+		   waitfor( get_index, this );
+		or waitfor( call1, this ) { sout | "Statement" | endl; if( this.last_val != 1 ) { serr | "Incorrect index: expected" | 1 | "got" | this.last_val | endl; } }
+		or waitfor( call2, this ) { sout | "Statement" | endl; if( this.last_val != 2 ) { serr | "Incorrect index: expected" | 2 | "got" | this.last_val | endl; } }
+		or waitfor( call3, this ) { sout | "Statement" | endl; if( this.last_val != 3 ) { serr | "Incorrect index: expected" | 3 | "got" | this.last_val | endl; } }
+		or waitfor( call4, this ) { sout | "Statement" | endl; if( this.last_val != 4 ) { serr | "Incorrect index: expected" | 4 | "got" | this.last_val | endl; } }
+		or waitfor( call5, this ) { sout | "Statement" | endl; if( this.last_val != 5 ) { serr | "Incorrect index: expected" | 5 | "got" | this.last_val | endl; } }
+		or waitfor( call6, this ) { sout | "Statement" | endl; if( this.last_val != 6 ) { serr | "Incorrect index: expected" | 6 | "got" | this.last_val | endl; } }
+		or waitfor( call7, this ) { sout | "Statement" | endl; if( this.last_val != 7 ) { serr | "Incorrect index: expected" | 7 | "got" | this.last_val | endl; } }
+
+		done = true;
+		for( int i = 0; i < 7; i++ ) {
+			if( this.calls[i] > 0 ) {
+				done = false;
+				break;
+			}
+		}
+	}
+}
+
+thread waiter{};
+
+void main( waiter & this ) {
+	do_wait( m );
+}
+
+int main() {
+	processor p[2];
+	sout | "Starting" | endl;
+	{
+		caller c[7];
+		waiter w;
+	}
+	sout | "Stopping" | endl;
+}
Index: tests/concurrent/waitfor/when.c
===================================================================
--- tests/concurrent/waitfor/when.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/concurrent/waitfor/when.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,87 @@
+//----------------------------------------------------------------
+// When test
+// Ensures that when clauses on waitfor are respected
+//-----------------------------------------------------------------
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include <stdbool.h>
+#include <time.h>
+
+static const unsigned long N = 4_998ul;
+
+static inline void rand_yield() { yield(random( 10 )); }
+
+monitor global_t {
+	int last_call;
+	bool done;
+};
+
+void ?{} ( global_t & this ) {
+	this.last_call = 6;
+	this.done = false;
+}
+
+void ^?{} ( global_t & mutex this ) {}
+
+global_t global;
+
+bool call1( global_t & mutex this ) { this.last_call = 1; return this.done; }
+bool call2( global_t & mutex this ) { this.last_call = 2; return this.done; }
+bool call3( global_t & mutex this ) { this.last_call = 3; return this.done; }
+bool call4( global_t & mutex this ) { this.last_call = 4; return this.done; }
+bool call5( global_t & mutex this ) { this.last_call = 5; return this.done; }
+bool call6( global_t & mutex this ) { this.last_call = 6; return this.done; }
+
+thread caller_t{};
+void main( caller_t & this ) {
+	while( true ) {
+		rand_yield();
+		if( call1( global ) ) return;
+		rand_yield();
+		if( call2( global ) ) return;
+		rand_yield();
+		if( call3( global ) ) return;
+		rand_yield();
+		if( call4( global ) ) return;
+		rand_yield();
+		if( call5( global ) ) return;
+		rand_yield();
+		if( call6( global ) ) return;
+	}
+}
+
+void arbiter( global_t & mutex this ) {
+	for( int i = 0; i < N; i++ ) {
+		   when( this.last_call == 6 ) waitfor( call1, this ) { if( this.last_call != 1) { serr | "Expected last_call to be 1 got" | this.last_call | endl; } }
+		or when( this.last_call == 1 ) waitfor( call2, this ) { if( this.last_call != 2) { serr | "Expected last_call to be 2 got" | this.last_call | endl; } }
+		or when( this.last_call == 2 ) waitfor( call3, this ) { if( this.last_call != 3) { serr | "Expected last_call to be 3 got" | this.last_call | endl; } }
+		or when( this.last_call == 3 ) waitfor( call4, this ) { if( this.last_call != 4) { serr | "Expected last_call to be 4 got" | this.last_call | endl; } }
+		or when( this.last_call == 4 ) waitfor( call5, this ) { if( this.last_call != 5) { serr | "Expected last_call to be 5 got" | this.last_call | endl; } }
+		or when( this.last_call == 5 ) waitfor( call6, this ) { if( this.last_call != 6) { serr | "Expected last_call to be 6 got" | this.last_call | endl; } }
+
+		sout | this.last_call | endl;
+	}
+
+	this.done = true;
+}
+
+thread arbiter_t{};
+void main( arbiter_t & this ) {
+	arbiter( global );
+}
+
+int main() {
+	srandom( time(NULL) );
+	sout | "Starting" | endl;
+	{
+		arbiter_t arbiter;
+		caller_t callers[7];
+
+	}
+	sout | "Stopping" | endl;
+}
Index: tests/config.py.in
===================================================================
--- tests/config.py.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/config.py.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+# encoding: utf-8
+"""
+config.py
+"""
+
+SRCDIR   = "@abs_srcdir@"
+BUILDDIR = "@abs_builddir@"
+HOSTARCH = "@host_cpu@"
Index: tests/context.c
===================================================================
--- tests/context.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/context.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,19 @@
+// trait declaration
+
+trait has_q( otype T ) {
+	T q( T );
+};
+
+forall( otype z | has_q( z ) ) void f() {
+	trait has_r( otype T, otype U ) {
+		T r( T, T (T,U) );
+	};
+
+	extern otype x, y | has_r( x, y );
+}
+
+//Dummy main
+int main(int argc, char const *argv[])
+{
+	return 0;
+}
Index: tests/coroutine/.expect/fibonacci.txt
===================================================================
--- tests/coroutine/.expect/fibonacci.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/.expect/fibonacci.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,10 @@
+0 0
+1 1
+1 1
+2 2
+3 3
+5 5
+8 8
+13 13
+21 21
+34 34
Index: tests/coroutine/.expect/fmtLines.txt
===================================================================
--- tests/coroutine/.expect/fmtLines.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/.expect/fmtLines.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,79 @@
+////   Cfo  rall   Ver  sion  
+ 1.0  .0 C  opyr  ight   (C)  
+ 201  7 Un  iver  sity   of   
+Wate  rloo  ////   The   con  
+tent  s of   thi  s fi  le a  
+re c  over  ed u  nder   the  
+ lic  ence   agr  eeme  nt i  
+n th  e//   file   "LI  CENC  
+E" d  istr  ibut  ed w  ith   
+Cfor  all.  ////   fmt  Line  
+s.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/  /#in  
+clud  e <f  stre  am.h  fa>#  
+incl  ude   <cor  outi  ne.h  
+fa>c  orou  tine   For  mat   
+{	ch  ar c  h;		  				  				  
+	//   used   for   com  muni  
+cati  on	i  nt g  , b;  				  
+				  			/  / gl  obal   bec  
+ause   use  d in   des  truc  
+tor}  ;voi  d ?{  }( F  orma  
+t &   fmt   ) {      r  esum  
+e( f  mt )  ;			  				  			/  
+/ st  art   coro  utin  e}vo  
+id ^  ?{}(   For  mat   & fm  
+t )   {      if   ( fm  t.g   
+!= 0   ||   fmt.  b !=   0 )  
+ sou  t |   endl  ;}vo  id m  
+ain(   For  mat   & fm  t )   
+{	fo  r (   ;; )   {		  				  
+				  // f  or a  s ma  ny c  
+hara  cter  s		f  or (   fmt  
+.g =   0;   fmt.  g <   5; f  
+mt.g   +=   1 )   {		/  / gr  
+oups   of   5 bl  ocks  			f  
+or (   fmt  .b =   0;   fmt.  
+b <   4; f  mt.b   +=   1 )   
+{	//   blo  cks   of 4   cha  
+ract  ers	  			f  or (   ;;   
+) {	  				  		//   for   new  
+line   cha  ract  ers	  				  
+susp  end(  );		  			i  f (   
+fmt.  ch !  = '\  n' )   bre  
+ak;	  	//   igno  re n  ewli  
+ne		  		}   // f  or		  		so  
+ut |   fmt  .ch;  				  			/  
+/ pr  int   char  acte  r			  
+} //   for  			s  out   | "   
+ ";	  				  			/  / pr  int   
+bloc  k se  para  tor	  	} /  
+/ fo  r		s  out   | en  dl;	  
+				  				  // p  rint   gro  
+up s  epar  ator  	} /  / fo  
+r} /  / ma  invo  id p  rt(   
+Form  at &   fmt  , ch  ar c  
+h )   {      fmt  .ch   = ch  
+;      res  ume(   fmt   );}  
+ //   prti  nt m  ain(  ) {	  
+Form  at f  mt;	  char   ch;  
+	for   ( ;  ; )   {		s  in |  
+ ch;  				  				  		//   rea  
+d on  e ch  arac  ter	    if  
+ ( e  of(   sin   ) )   brea  
+k;		  				  	//   eof   ?		p  
+rt(   fmt,   ch   );	}   //   
+for}   //   main  // L  ocal  
+ Var  iabl  es:   ////   tab  
+-wid  th:   4 //  // c  ompi  
+le-c  omma  nd:   "cfa   fmt  
+Line  s.c"   ///  / En  d: /  
+/
Index: tests/coroutine/.expect/pingpong.txt
===================================================================
--- tests/coroutine/.expect/pingpong.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/.expect/pingpong.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -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: tests/coroutine/.expect/prodcons.txt
===================================================================
--- tests/coroutine/.expect/prodcons.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/.expect/prodcons.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -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: tests/coroutine/.expect/runningTotal.txt
===================================================================
--- tests/coroutine/.expect/runningTotal.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/.expect/runningTotal.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,10 @@
+0 0
+1 1
+2 3
+3 6
+4 10
+5 15
+6 21
+7 28
+8 36
+9 45
Index: tests/coroutine/.in/fmtLines.txt
===================================================================
--- tests/coroutine/.in/fmtLines.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/.in/fmtLines.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,67 @@
+//
+// 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.
+//
+// fmtLines.cc --
+//
+// Author           : Peter A. Buhr
+// 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
+//
+
+#include <fstream.hfa>
+#include <coroutine.hfa>
+
+coroutine Format {
+	char ch;											// used for communication
+	int g, b;											// global because used in destructor
+};
+
+void ?{}( Format & fmt ) {
+    resume( fmt );										// start coroutine
+}
+
+void ^?{}( Format & fmt ) {
+    if ( fmt.g != 0 || fmt.b != 0 ) sout | endl;
+}
+
+void main( Format & fmt ) {
+	for ( ;; ) {										// for as many characters
+		for ( fmt.g = 0; fmt.g < 5; fmt.g += 1 ) {		// groups of 5 blocks
+			for ( fmt.b = 0; fmt.b < 4; fmt.b += 1 ) {	// blocks of 4 characters
+				for ( ;; ) {							// for newline characters
+					suspend();
+					if ( fmt.ch != '\n' ) break;		// ignore newline
+				} // for
+				sout | fmt.ch;							// print character
+			} // for
+			sout | "  ";								// print block separator
+		} // for
+		sout | endl;									// print group separator
+	} // for
+} // main
+
+void prt( Format & fmt, char ch ) {
+    fmt.ch = ch;
+    resume( fmt );
+} // prt
+
+int main() {
+	Format fmt;
+	char ch;
+
+	for ( ;; ) {
+		sin | ch;										// read one character
+	  if ( eof( sin ) ) break;							// eof ?
+		prt( fmt, ch );
+	} // for
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fmtLines.c" //
+// End: //
Index: tests/coroutine/fibonacci.c
===================================================================
--- tests/coroutine/fibonacci.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/fibonacci.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,48 @@
+//
+// 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.
+//
+// fibonacci.c -- 3-state finite-state machine
+//
+// Author           : Thierry Delisle
+// Created On       : Thu Jun  8 07:29:37 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 18 11:21:58 2018
+// Update Count     : 24
+//
+
+#include <fstream.hfa>
+#include <coroutine.hfa>
+
+coroutine Fibonacci { int fn; };						// used for communication
+
+void main( Fibonacci & fib ) with( fib ) {				// called on first resume
+	int fn1, fn2;										// retained between resumes
+	fn = 0;  fn1 = fn;									// 1st case
+	suspend();											// restart last resume
+	fn = 1;  fn2 = fn1;  fn1 = fn;						// 2nd case
+	suspend();											// restart last resume
+	for () {
+		fn = fn1 + fn2;  fn2 = fn1;  fn1 = fn;			// general case
+		suspend();										// restart last resume
+	} // for
+}
+
+int next( Fibonacci & fib ) with( fib ) {
+	resume( fib );										// restart last suspend
+	return fn;
+}
+
+int main() {
+	Fibonacci f1, f2;
+	for ( 10 ) {										// print N Fibonacci values
+		sout | next( f1 ) | next( f2 ) | endl;
+	} // for
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fibonacci.c" //
+// End: //
Index: tests/coroutine/fibonacci_1.c
===================================================================
--- tests/coroutine/fibonacci_1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/fibonacci_1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,45 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fibonacci_1.c -- 1-state finite-state machine: precomputed first two states returning f(n - 2)
+//
+// Author           : Peter A. Buhr
+// Created On       : Thu Apr 26 23:20:08 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 18 11:21:02 2018
+// Update Count     : 13
+// 
+
+#include <fstream.hfa>
+#include <coroutine.hfa>
+
+coroutine Fibonacci { int ret; };						// used for communication
+
+void main( Fibonacci & fib ) with( fib ) {				// called on first resume
+	int fn, fn1 = 1, fn2 = 0;							// precompute first two states
+	for () {
+		ret = fn2;
+		fn = fn1 + fn2;  fn2 = fn1;  fn1 = fn;			// general case
+		suspend();										// restart last resume
+	} // for
+}
+
+int next( Fibonacci & fib ) with( fib ) {
+	resume( fib );										// restart last suspend
+	return ret;
+}
+
+int main() {
+	Fibonacci f1, f2;
+	for ( 10 ) {										// print N Fibonacci values
+		sout | next( f1 ) | next( f2 ) | endl;
+	} // for
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fibonacci_1.c" //
+// End: //
Index: tests/coroutine/fmtLines.c
===================================================================
--- tests/coroutine/fmtLines.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/fmtLines.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,65 @@
+//
+// 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.
+//
+// fmtLines.cc -- format characters into blocks of 4 and groups of 5 blocks per line
+//
+// Author           : Peter A. Buhr
+// Created On       : Sun Sep 17 21:56:15 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 16 08:20:54 2018
+// Update Count     : 45
+//
+
+#include <fstream.hfa>
+#include <coroutine.hfa>
+
+coroutine Format {
+	char ch;											// used for communication
+	int g, b;											// global because used in destructor
+};
+
+void main( Format & fmt ) with( fmt ) {
+	for () {											// for as many characters
+		for ( g; 5 ) {									// groups of 5 blocks
+			for ( b; 4 ) {								// blocks of 4 characters
+				for () {								// for newline characters
+					suspend();
+					if ( ch != '\n' ) break;			// ignore newline
+				} // for
+				sout | ch;								// print character
+			} // for
+			sout | "  ";								// print block separator
+		} // for
+		sout | endl;									// print group separator
+	} // for
+} // main
+
+void ?{}( Format & fmt ) {
+	resume( fmt );										// prime (start) coroutine
+}
+
+void ^?{}( Format & fmt ) with( fmt ) {
+	if ( g != 0 || b != 0 ) sout | endl;
+}
+
+void format( Format & fmt ) {
+	resume( fmt );
+} // prt
+
+int main() {
+	Format fmt;
+
+  eof: for () {											// read until end of file
+		sin | fmt.ch;									// read one character
+	  if ( eof( sin ) ) break eof;						// eof ?
+		format( fmt );									// push character for formatting
+	} // for
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fmtLines.c" //
+// End: //
Index: tests/coroutine/pingpong.c
===================================================================
--- tests/coroutine/pingpong.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/pingpong.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,55 @@
+//
+// 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.
+//
+// pingpong.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Sep 20 11:55:23 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 18 11:31:11 2018
+// Update Count     : 28
+//
+
+#include <coroutine.hfa>
+#include <fstream.hfa>
+
+coroutine PingPong {
+	const char * name;
+	/* const */ unsigned int N;
+	PingPong * part;
+};
+
+void ?{}( PingPong & this, const char * name, unsigned int N, PingPong & part ) {
+	this.name = name;
+	this.N = N;
+	this.part = &part;
+}
+void ?{}( PingPong & this, const char * name, unsigned int N ) {
+	this{ name, N, *(PingPong *)0 };
+}
+void cycle( PingPong & pingpong ) {
+	resume( pingpong );
+}
+void partner( PingPong & this, PingPong & part ) {
+	this.part = &part;
+	resume( this );
+}
+void main( PingPong & pingpong ) {						// ping's starter ::main, pong's starter ping
+	for ( pingpong.N ) {								// N ping-pongs
+		sout | pingpong.name | endl;
+		cycle( *pingpong.part );
+	} // for
+}
+int main() {
+	enum { N = 20 };
+	PingPong ping = { "ping", N }, pong = { "pong", N, ping };
+	partner( ping, pong );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa pingpong.c" //
+// End: //
Index: tests/coroutine/prodcons.c
===================================================================
--- tests/coroutine/prodcons.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/prodcons.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,100 @@
+//
+// 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.
+//
+// prodcons.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Sep 18 12:23:39 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 18 12:55:10 2018
+// Update Count     : 51
+//
+
+#include <fstream.hfa>
+#include <coroutine.hfa>
+#include <stdlib.hfa>									// random
+#include <unistd.h>										// getpid
+
+coroutine Cons;											// forward
+int delivery( Cons & cons, int p1, int p2 );
+void stop( Cons & cons );
+
+coroutine Prod {
+	Cons * c;
+	int N, money, receipt;
+};
+void main( Prod & prod ) with( prod ) {					// starter ::main
+	// 1st resume starts here
+	for ( i; N ) {										// N pairs of values
+		int p1 = random( 100 );
+		int p2 = random( 100 );
+		sout | p1 | " " | p2 | endl;
+		int status = delivery( *c, p1, p2 );
+		sout | " $" | money | endl;
+		sout | status | endl;
+		receipt += 1;
+	}
+	stop( *c );
+	sout | "prod stops" | endl;
+}
+int payment( Prod & prod, int money ) {
+	prod.money = money;
+	resume( prod );										// main 1st time, then
+	return prod.receipt;								// prod in delivery
+}
+void start( Prod & prod, int N, Cons &c ) {
+	prod.N = N;
+	prod.c = &c;
+	prod.receipt = 0;
+	resume( prod );										// activate main
+}
+
+coroutine Cons {
+	Prod * p;
+	int p1, p2, status;
+	bool done;
+};
+void ?{}( Cons & cons, Prod & p ) {
+	cons.p = &p;
+	cons.status = 0;
+	cons.done = false;
+}
+void ^?{}( Cons & cons ) {}
+void main( Cons & cons ) with( cons ) {					// starter prod
+	// 1st resume starts here
+	int money = 1, receipt;
+	for ( ; ! done; ) {
+		sout | p1 | " " | p2 | endl;
+		sout | " $" | money | endl;
+		status += 1;
+		receipt = payment( *p, money );
+		sout | " #" | receipt | endl;
+		money += 1;
+	}
+	sout | "cons stops" | endl;
+}
+int delivery( Cons & cons, int p1, int p2 ) {
+	cons.p1 = p1;
+	cons.p2 = p2;
+	resume( cons );										// main 1st time, then
+	return cons.status;									// cons in payment
+}
+void stop( Cons & cons ) {
+	cons.done = true;
+	resume( cons );										// activate payment
+}
+int main() {
+	Prod prod;
+	Cons cons = { prod };
+	srandom( /* getpid() */ 103 );						// fixed seed for testing
+	start( prod, 5, cons );
+	sout | "main stops" | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa prodcons.c" //
+// End: //
Index: tests/coroutine/runningTotal.c
===================================================================
--- tests/coroutine/runningTotal.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/coroutine/runningTotal.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,51 @@
+//
+// 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.
+//
+// runningTotal.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Dec  6 08:05:27 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 16 08:22:29 2018
+// Update Count     : 3
+//
+
+#include <fstream.hfa>
+#include <coroutine.hfa>
+
+coroutine RunTotal {									// input numbers and return running total
+	int input, total;									// communication
+};
+
+void ?{}( RunTotal & rntl ) { rntl.total = 0; }
+
+void update( RunTotal & rntl, int input ) with( rntl ) { // helper
+	total += input;										// remember between activations
+	suspend();											// inactivate on stack
+}
+
+void main( RunTotal & rntl ) with( rntl ) {
+	for () {
+		update( rntl, input );
+	} // for
+}
+
+int add( RunTotal & rntl, int input ) {
+	rntl.input = input;									// pass input to coroutine
+	resume( rntl );
+	return rntl.total;									// return total from coroutine
+}
+int main() {
+	RunTotal rntl;
+	for ( i; 10 ) {
+		sout | i | add( rntl, i ) | endl;
+	} // for
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa runningTotal.c" //
+// End: //
Index: tests/counter.c
===================================================================
--- tests/counter.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/counter.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,40 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// counter.c -- 
+// 
+// Author           : Aaron B. Moss
+// Created On       : Thu Feb 22 15:27:00 2018
+// Last Modified By : Aaron B. Moss
+// Last Modified On : Thu Feb 22 15:27:00 2018
+// Update Count     : 1
+// 
+
+// Tests unified increment/decrement builtin functions.
+// Could be extended for other arithmetic unifications
+
+struct counter { int x; };
+
+counter& ?+=?( counter& c, one_t ) { ++c.x; return c; }
+
+counter& ?-=?( counter& c, one_t ) { --c.x; return c; }
+
+int main() {
+    counter c = { 42 };
+    c += 1;
+    ++c;
+    c++;
+    printf("%d\n", c.x);
+    c -= 1;
+    --c;
+    c--;
+    printf("%d\n", c.x);
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa counter.c" //
+// End: //
Index: tests/declarationErrors.c
===================================================================
--- tests/declarationErrors.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/declarationErrors.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,45 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// declarationErrors.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:23:43 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Sep  9 22:57:52 2016
+// Update Count     : 31
+// 
+
+static short int volatile static const x1;				// duplicate static
+extern short int static volatile const x2;				// multiple extern & static
+extern short int auto static volatile static extern const x3; // duplicate and multiple storage classes
+struct { int i; } const static volatile static x4;		// duplicate static
+struct { int i; } const static volatile const static volatile x5; // duplicate static & const & volatile
+typedef int Int;
+static Int volatile static const x6;					// duplicate static
+
+const static inline const volatile int f01();			// duplicate const
+volatile inline const volatile static int f02();		// duplicate volatile
+const inline const volatile int static f03();			// duplicate const
+volatile inline static const volatile int f04();		// duplicate volatile
+const static int const inline volatile f05();			// duplicate const
+volatile int static const volatile inline f06();		// duplicate volatile
+const static const int volatile inline f07();			// duplicate const
+volatile static const int inline const volatile f08();	// duplicate volatile
+
+volatile static const int inline const volatile f09();	// duplicate volatile
+_Atomic _Atomic _Atomic volatile restrict static const const int inline restrict const volatile f09();	// duplicate volatile
+
+//Dummy main
+int main(int argc, char const *argv[])
+{
+	return 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa declarationErrors.c" //
+// End: //
Index: tests/declarationSpecifier.c
===================================================================
--- tests/declarationSpecifier.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/declarationSpecifier.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,99 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// declarationSpecifier.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:21:04 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 17 08:24:33 2016
+// Update Count     : 2
+// 
+
+typedef short int Int;
+
+const short int volatile x1;
+static const short int volatile x2;
+const static short int volatile x3;
+const static volatile short int x4;
+const short int static volatile x5;
+const short int volatile static x6;
+const short volatile int static x7;
+short int volatile static const x8;
+
+const volatile struct { int i; } x10;
+const struct { int i; } volatile x11;
+struct { int i; } const volatile x12;
+static const volatile struct { int i; } x13;
+const static struct { int i; } volatile x14;
+struct { int i; } static const volatile x15;
+struct { int i; } const static volatile x16;
+struct { int i; } const volatile static x17;
+
+const Int volatile x20;
+static const Int volatile x21;
+const static Int volatile x22;
+const static Int volatile x23;
+const Int static volatile x24;
+const Int volatile static x25;
+const volatile Int static x26;
+Int volatile static const x27;
+
+const volatile struct { Int i; } x29;
+const struct { Int i; } volatile x30;
+struct { Int i; } const volatile x31;
+static const volatile struct { Int i; } x32;
+const static struct { Int i; } volatile x33;
+struct { Int i; } static const volatile x34;
+struct { Int i; } const static volatile x35;
+struct { Int i; } const volatile static x36;
+
+static inline const volatile int f11();
+inline const volatile static int f12();
+inline const volatile int static f13();
+inline static const volatile int f14();
+static const inline volatile int f15();
+static const volatile inline int f16();
+static const volatile int inline f17();
+static const int inline volatile f18();
+
+short static inline const volatile int f21();
+inline short const volatile static int f22();
+inline const short volatile int static f23();
+inline static const short volatile int f24();
+static const inline volatile short int f25();
+static const volatile inline int short f26();
+static const volatile int inline short f27();
+static const int inline volatile short f28();
+
+static inline const volatile struct { int i; } f31();
+inline const volatile static struct { int i; } f32();
+inline const volatile struct { int i; } static f33();
+inline static const volatile struct { int i; } f34();
+static const inline volatile struct { int i; } f35();
+static const volatile inline struct { int i; } f36();
+static const volatile struct { int i; } inline f37();
+static const struct { int i; } inline volatile f38();
+
+static inline const volatile Int f41();
+inline const volatile static Int f42();
+inline const volatile Int static f43();
+inline static const volatile Int f44();
+static const inline volatile Int f45();
+static const volatile inline Int f46();
+static const volatile Int inline f47();
+static const Int inline volatile f48();
+
+//Dummy main
+int main(int argc, char const *argv[])
+{
+	return 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa declarationSpecifier.c" //
+// End: //
Index: tests/designations.c
===================================================================
--- tests/designations.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/designations.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,263 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// designations.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Thu Jun 29 15:26:36 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 27 11:46:35 2017
+// Update Count     : 3
+//
+
+// Note: this test case has been crafted so that it compiles with both cfa and with gcc without any modifications.
+// In particular, since the syntax for designations in Cforall differs from that of C, preprocessor substitution
+// is used for the designation syntax
+#ifdef __cforall
+#define DES :
+#else
+int printf(const char *, ...);
+#define DES =
+#endif
+
+const int indentAmt = 2;
+void indent(int level) {
+	for (int i = 0; i < level; ++i) {
+		printf(" ");
+	}
+}
+
+// A contains fields with different types (int vs. int *)
+struct A {
+	int x, y;
+	int * ptr;
+};
+void printA(struct A a, int level) {
+	indent(level);
+	printf("(A){ %d %d %p }\n", a.x, a.y, a.ptr);
+}
+
+// B contains struct members
+struct B {
+	struct A a0, a1;
+};
+void printB(struct B b, int level) {
+	indent(level);
+	printf("(B){\n");
+	printA(b.a0, level+indentAmt);
+	printA(b.a1, level+indentAmt);
+	indent(level);
+	printf("}\n");
+}
+
+// C contains an array - tests that after 3 ints, the members of B are initialized.
+struct C {
+	int arr[3];
+	struct B b;
+};
+void printC(struct C c, int level) {
+	indent(level);
+	printf("(C){\n");
+	indent(level+indentAmt);
+	printf("(int[]{ %d %d %d }\n", c.arr[0], c.arr[1], c.arr[2]);
+	printB(c.b, level+indentAmt);
+	indent(level);
+	printf("}\n");
+}
+
+// D contains an unnamed aggregate - tests that this doesn't interfere with initialization.
+struct D {
+	struct {
+		int x;
+	};
+};
+void printD(struct D d, int level) {
+	indent(level);
+	printf("(D){ %d }\n", d.x);
+}
+
+// E tests unions
+union E {
+	struct A a;
+	struct B b;
+	struct C c;
+	struct D d;
+	int i;
+};
+
+struct Fred {
+    double i[3];
+    int j;
+    struct Mary {
+	struct Jane {
+	    double j;
+	} j;
+	double i;
+    } m;
+};
+struct Fred s1 @= { .m.j : 3 };
+struct Fred s2 @= { .i : { [2] : 2 } };
+
+int main() {
+	// simple designation case - starting from beginning of structure, leaves ptr default-initialized (zero)
+	struct A y0 = {
+		.x DES 2,
+		.y DES 3
+	};
+
+	// simple initializaiton case - initialize all elements explicitly with no designations
+	struct A y1 = {
+		2, 3, 0
+	};
+
+
+	// use designation to move to member y, leaving x default-initialized (zero)
+	struct A y2 = {
+		.y DES 3,
+		0
+	};
+
+#if ERROR
+	struct A yErr0 = {
+		{} // error - empty scalar initializer is illegal
+	};
+#endif
+
+	printf("=====A=====\n");
+	printA(y0, 0);
+	printA(y1, 0);
+	printA(y2, 0);
+	printf("=====A=====\n\n");
+
+	// initialize only first element (z0.a.x), leaving everything else default-initialized (zero), no nested curly-braces
+	struct B z0 = { 5 };
+
+	// some nested curly braces, use designation to 'jump around' within structure, leaving some members default-initialized
+	struct B z1 = {
+		{ 3 }, // z1.a0
+		{ 4 }, // z1.a1
+		.a0 DES { 5 }, // z1.a0
+		{ 6 }, // z1.a1
+		.a0.y DES 2, // z1.a0.y
+		0, // z1.a0.ptr
+	};
+
+	// z2.a0.y and z2.a0.ptr default-initialized, everything else explicit
+	struct B z2 = {
+		{ 1 },
+		{ 2, 3, 0 }
+	};
+
+	// initialize every member, omitting nested curly braces
+	struct B z3 = {
+		1, 2, 0, 4, 5, 0
+	};
+
+	// no initializer - legal C, but garbage values - don't print this one
+	struct B z4;
+
+	// no curly braces - initialize with object of same type
+	struct B z5 = z2;
+
+	// z6.a0.y and z6.a0.ptr default-initialized, everything else explicit.
+	// no curly braces on z6.a1 initializers
+	struct B z6 = {
+		{ 1 },
+		2, 3, 0
+	};
+
+	printf("=====B=====\n");
+	printB(z0, 0);
+	printB(z1, 0);
+	printB(z2, 0);
+	printB(z3, 0);
+	printB(z5, 0);
+	printB(z6, 0);
+	printf("=====B=====\n\n");
+
+	// TODO: what about extra things in a nested init? are empty structs skipped??
+
+	// test that initializing 'past array bound' correctly moves to next member.
+	struct C c1 = {
+		2, 3, 4,  // arr
+		5, 6, 0,  // b.a0
+		7, 8, 0,  // b.a1
+	};
+
+	printf("=====C=====\n");
+	printC(c1, 0);
+	printf("=====C=====\n\n");
+
+#if ERROR
+	// nested initializer can't refer to same type in C
+	struct C cErr0 = { c1 };
+
+	// must use curly braces to initialize members
+	struct C cErr1 = 2;
+
+	// can't initialize with array compound literal
+	struct C cErr2 = {
+		(int[3]) { 1, 2, 3 }  // error: array initialized from non-constant array expression
+	};
+#endif
+
+#if WARNING
+	// can't initialize array with array - converts to int*
+	int cWarn0_arr[3] = { 1, 2, 3 };
+	struct C cWarn0 = {
+		cWarn0_arr  // warning: initialization makes integer from ptr without cast
+	};
+#endif
+	// array designation
+	int i[2] = { [1] : 3 };
+	// allowed to have 'too many' initialized lists - essentially they are ignored.
+	int i1 = { 3 };
+
+	// doesn't work yet.
+	// designate unnamed object's members
+	// struct D d = { .x DES 3 };
+#if ERROR
+	struct D d1 = { .y DES 3 };
+#endif
+
+	// simple union initialization - initialized first member (e0.a)
+	union E e0 = {
+		y0
+	};
+
+	// simple union initialization - initializes first member (e1.a) - with nested initializer list
+	union E e1 = {
+		{ 2, 3, 0 }
+	};
+
+	// simple union initialization - initializes first member (e2.a) - without nested initializer list
+	union E e2 = {
+		2, 3, 0
+	};
+
+	// move cursor to e4.b.a0.x and initialize until e3.b.a1.ptr inclusive
+	union E e3 = {
+		.b.a0.x DES 2, 3, 0, 5, 6, 0
+	};
+
+	printf("=====E=====\n");
+	printA(e0.a, 0);
+	printA(e1.a, 0);
+	printA(e2.a, 0);
+	printB(e3.b, 0);
+	printf("=====E=====\n\n");
+
+	// special case of initialization: char[] can be initialized with a string literal
+	const char * str0 = "hello";
+	char str1[] = "hello";
+	const char c1[] = "abc";
+	const char c2[] = { 'a', 'b', 'c' };
+	const char c3[][2] = { { 'a', 'b' }, { 'c', 'd'}, { 'c', 'd'} };
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/div.c
===================================================================
--- tests/div.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/div.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,35 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// div.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Aug  8 16:28:43 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Dec  7 09:06:52 2017
+// Update Count     : 18
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>										// div
+
+struct T { int i; };
+T ?/?( T t1, T t2 ) { return t1.i / t2.i; }
+T ?%?( T t1, T t2 ) { return t1.i % t2.i; }
+ofstream & ?|?( ofstream & os, T t ) { return os | t.i; }
+
+int main( void ) {
+	sout | "div" | div( 13, 5 ) | div( 13L, 5L ) | div( 13LL, 5LL ) | endl;
+	short s1 = 13, s2 = 5;
+	sout | "div" | div( s1, s2 ) | endl;
+	T t1 = { 13 }, t2 = { 5 };
+	sout | "div" | div( t1, t2 ) | endl;				// polymorphic div
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa div.c" //
+// End: //
Index: tests/enum.c
===================================================================
--- tests/enum.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/enum.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,28 @@
+//Testing enum declaration
+enum Colours {
+	Red,
+	Yellow,
+	Pink,
+	Blue,
+	Purple,
+	Orange,
+	Green
+};
+
+enum Colours c1;
+Colours c2;
+
+void f( void ) {
+	enum Fruits {
+		Apple,
+		Banana,
+		Pear,
+		Mango
+	} fruit = Mango;
+	enum Fruits f1;
+	Fruits f2;
+}
+
+//Dummy main
+int main(int argc, char const *argv[]) {
+}
Index: tests/except-0.c
===================================================================
--- tests/except-0.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/except-0.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,247 @@
+// Draft of tests for exception handling.
+// Outdated: The integer constant exceptions need to be replaced with virtual
+// exceptions for the new system.
+
+// ERROR: exceptions do not interact with ^?{} properly.
+
+#include <stdio.h>
+#include <stdbool.h>
+
+#include "except-mac.h"
+TRIVIAL_EXCEPTION(yin)
+TRIVIAL_EXCEPTION(yang)
+TRIVIAL_EXCEPTION(zen)
+
+
+// Local type to mark exits from scopes. (see ERROR)
+struct signal_exit {
+	const char * area;
+};
+
+void ?{}(signal_exit * this, const char * area) {
+	this->area = area;
+}
+
+void ^?{}(signal_exit * this) {
+	printf("Exiting: %s\n", this->area);
+//	sout | "Exiting:" | this->area | endl;
+}
+
+
+// Mark throws: make sure to only pass in exception types.
+forall(dtype T)
+void terminate(T * except_value) {
+	signal_exit a = {"terminate function"};
+	THROW(except_value);
+	printf("terminate returned\n");
+}
+
+forall(dtype T)
+void resume(T * except_value) {
+	signal_exit a = {"resume function"};
+	THROW_RESUME(except_value);
+	printf("resume returned\n");
+}
+
+// Termination Test: Two handlers: no catch, catch
+void bar() {
+	signal_exit a = {"bar function"};
+	try {
+		terminate(&(zen){});
+	} catch (yin * error) {
+		printf("bar caught exception yin.\n");
+	}
+}
+
+void foo() {
+	signal_exit a = {"foo function"};
+	try {
+		bar();
+	} catch (yang * error) {
+		printf("foo caught exception yang.\n");
+	} catch (zen * error) {
+		printf("foo caught exception zen.\n");
+	}
+}
+
+// Resumption Two Handler Test: no catch, catch.
+void beta() {
+	signal_exit a = {"beta function"};
+	try {
+		zen x;
+		resume(&x);
+	} catchResume (yin * error) {
+		printf("beta caught exception yin\n");
+	}
+}
+
+void alpha() {
+	signal_exit a = {"alpha function"};
+	try {
+		beta();
+	} catchResume (yang * error) {
+		printf("alpha caught exception yang\n");
+	} catchResume (zen * error) {
+		printf("alpha caught exception zen\n");
+	}
+}
+
+// Finally Test:
+void farewell(bool jump) {
+	try {
+		if (jump) {
+			printf("jump out of farewell\n");
+			goto endoffunction;
+		} else {
+			printf("walk out of farewell\n");
+		}
+	} finally {
+		printf("See you next time\n");
+	}
+	endoffunction:
+	printf("leaving farewell\n");
+}
+
+// Resume-to-Terminate Test:
+void fallback() {
+	try {
+		zen x;
+		resume(&x);
+	} catch (zen * error) {
+		printf("fallback caught termination zen\n");
+	}
+}
+
+// Terminate Throw New Exception:
+void terminate_swap() {
+	signal_exit a = {"terminate_swap"};
+	try {
+		yin x;
+		terminate(&x);
+	} catch (yin * error) {
+		yang y;
+		terminate(&y);
+	}
+}
+
+void terminate_swapped() {
+	signal_exit a = {"terminate_swapped"};
+	try {
+		terminate_swap();
+	} catch (yang * error) {
+		printf("terminate_swapped caught exception yang\n");
+	}
+}
+
+// Resume Throw New Exception:
+void resume_swap() {
+	signal_exit a = {"resume_swap"};
+	try {
+		yin x;
+		resume(&x);
+	} catchResume (yin * error) {
+		yang y;
+		resume(&y);
+	}
+}
+
+void resume_swapped() {
+	try {
+		resume_swap();
+	} catchResume (yang * error) {
+		printf("resume_swapped caught exception yang\n");
+	}
+}
+
+// Terminate Rethrow:
+void reterminate() {
+	try {
+		try {
+			zen x;
+			terminate(&x);
+		} catch (zen * error) {
+			printf("reterminate zen caught and "
+			       "will rethrow exception zen\n");
+			throw;
+		}
+	} catch (zen * error) {
+		printf("reterminate 1 caught exception zen\n");
+	}
+}
+
+// Resume Rethrow:
+void reresume() {
+	try {
+		try {
+			zen x;
+			resume(&x);
+		} catchResume (zen * error) {
+			printf("reresume zen caught and rethrows exception zen\n");
+			throwResume;
+		}
+	} catchResume (zen * error) {
+		printf("reresume 1 caught exception zen\n");
+	}
+}
+
+// Terminate-Resume interaction:
+void fum() {
+	// terminate block, call resume
+	try {
+		zen x;
+		resume(&x);
+	} catch (zen * error) {
+		printf("fum caught exception zen\n");
+	}
+}
+
+void foe() {
+	// resume block, call terminate
+	try {
+		zen y;
+		terminate(&y);
+	} catchResume (zen * error) {
+		printf("foe caught exception zen\n");
+	}
+}
+
+void fy() {
+	// terminate block calls fum, call foe
+	try {
+		foe();
+	} catch (zen * error) {
+		printf("fy caught exception zen\n");
+		fum();
+	}
+}
+
+void fee() {
+	// resume block, call fy
+	try {
+		fy();
+	} catchResume (zen * error) {
+		printf("fee caught exception zen\n");
+	}
+}
+
+
+// main: choose which tests to run
+int main(int argc, char * argv[]) {
+	signal_exit a = {"main function"};
+
+	foo(); printf("\n");
+	alpha(); printf("\n");
+	farewell(false); printf("\n");
+	farewell(true); printf("\n");
+	fallback(); printf("\n");
+	terminate_swapped(); printf("\n");
+	resume_swapped(); printf("\n");
+	reterminate(); printf("\n");
+	reresume(); printf("\n");
+	fee(); printf("\n");
+
+	// Uncaught termination test.
+	printf("Throw uncaught.\n");
+	yang z;
+	terminate(&z);
+}
Index: tests/except-1.c
===================================================================
--- tests/except-1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/except-1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,81 @@
+// Draft memory management test. (remember -fexceptions)
+// Outdated: The integer constant exceptions need to be replaced with virtual
+// exceptions for the new system.
+
+#include <stdio.h>
+
+#include "except-mac.h"
+TRIVIAL_EXCEPTION(yin)
+TRIVIAL_EXCEPTION(yang)
+
+int main()
+{
+	try {
+		yin a;
+		THROW(&a);
+	}
+	catch( yin * err ) {
+		printf("First Caught\n");
+		try {
+			yang b;
+			THROW(&b);
+		}
+		catch( yang * err ) {
+			printf("Both Caught\n");
+		}
+	}
+	printf("Part A Complete\n");
+
+	try {
+		try {
+			yang c;
+			THROW(&c);
+		}
+		catch( yang * err ) {
+			printf("First Catch and rethrow\n");
+			throw;
+		}
+	}
+	catch( yang * err ) {
+		printf("Second Catch\n");
+	}
+	printf("Part B Complete\n");
+
+	try {
+		try {
+			yin d;
+			THROW(&d);
+		}
+		catch( yin * err ) {
+			printf("Throw before cleanup\n");
+			yang e;
+			THROW(&e);
+		}
+	}
+	catch( yang * err ) {
+		printf("Catch after cleanup\n");
+	}
+	printf("Part C Complete\n");
+
+	try {
+		try {
+			yin f;
+			THROW(&f);
+		}
+		catch( yin * err ) {
+			printf("Caught initial throw.\n");
+			try {
+				yang g;
+				THROW(&g);
+			}
+			catch( yang * err ) {
+				printf("Caught intermediate throw.\n");
+			}
+			throw;
+		}
+	}
+	catch( yin * err ) {
+		printf("Caught final throw.\n");
+	}
+	printf("Part D Complete\n");
+}
Index: tests/except-2.c
===================================================================
--- tests/except-2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/except-2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,92 @@
+// New draft of exception tests.
+
+
+#include <stdlib.hfa>
+#include "except-mac.h"
+
+TRIVIAL_EXCEPTION(yin)
+TRIVIAL_EXCEPTION(yang)
+
+struct num_error;
+struct num_error_vtable {
+	struct TABLE(BASE_EXCEPT) const * parent;
+	size_t size;
+	void (*copy)(num_error *this, num_error * other);
+	void (*free)(num_error *this);
+	const char * (*msg)(num_error *this);
+	int (*code)(num_error *this);
+};
+extern num_error_vtable INSTANCE(num_error);
+
+struct num_error {
+	struct num_error_vtable const * virtual_table;
+	char * msg;
+	int num;
+};
+
+void num_error_msg(num_error * this) {
+	if ( ! this->msg ) {
+		static const char * base = "Num Error with code: X";
+		this->msg = malloc(22);
+		for (int i = 0 ; (this->msg[i] = base[i]) ; ++i);
+	}
+	this->msg[21] = '0' + this->num;
+	return this->msg;
+}
+void ?{}(num_error * this, int num) {
+	this->virtual_table = &INSTANCE(num_error);
+	this->msg = 0;
+	this->num = num;
+}
+void ?{}(num_error * this, num_error * other) {
+	this->virtual_table = other->virtual_table;
+	this->msg = 0;
+	this->num = other->num;
+}
+void ^?{}(num_error * this) {
+	if( this->msg ) free( this->msg );
+}
+int num_error_code( num_error * this ) {
+	return this->num;
+}
+num_error_vtable _num_error_vtable_instance @= {
+	&INSTANCE(BASE_EXCEPT),
+	sizeof(num_error), ?{}, ^?{},
+	num_error_msg, num_error_code
+};
+
+
+// Test simple throwing, matching and catching.
+void throw_catch() {
+	try {
+		yin black;
+		THROW(&black);
+	} catch ( yin * error ) {
+		printf("throw yin caught.\n");
+	}
+
+	try {
+		yang white;
+		THROW_RESUME(&white);
+		printf("> throwResume returned.\n");
+	} catchResume ( yang * error ) {
+		printf("throwResume yang caught <");
+	}
+
+	try {
+		num_error x = { 2 };
+		THROW(&x);
+	}
+	catch (num_error * error ; 3 == error->virtual_table->code( error ) ) {
+		printf("exception at %p\n", error );
+		printf("Should not be printed.\n");
+	}
+	catch (num_error * error ; 2 == error->virtual_table->code( error ) ) {
+		printf("Should be printed.\n");
+	}
+}
+
+int main (int argc, char * argv[]) {
+	throw_catch();
+	return 0;
+}
Index: tests/except-3.c
===================================================================
--- tests/except-3.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/except-3.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+// Test that __attribute__((cleanup(...))) is working.
+
+#include <stdio.h>
+#include "except-mac.h"
+TRIVIAL_EXCEPTION(myth)
+
+int main (int argc, char * argv[]) {
+	try {
+		try {
+			printf("throw [");
+			THROW(&(myth){});
+		} finally {
+			printf("] unwind <");
+		}
+	} catch (myth * error) {
+		printf("> catch\n");
+	}
+}
Index: tests/except-mac.h
===================================================================
--- tests/except-mac.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/except-mac.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,78 @@
+// Macros to try and make declaring and using exceptions easier
+// No, these are not part of the language, they replace the virtual system.
+
+// Internal use:
+#define GLUE2(left, right) left##right
+#define GLUE3(left, middle, right) left##middle##right
+
+// The fully (perhaps overly) qualified name of the base exception type:
+#define BASE_EXCEPT __cfaabi_ehm__base_exception_t
+
+// Get the name of the vtable type and vtable instance for an exception type:
+#define TABLE(name) GLUE2(name,_vtable)
+#define INSTANCE(name) GLUE3(_,name,_vtable_instance)
+
+// Throws and the bit of overhead:
+#define THROW(expr) throw ((BASE_EXCEPT *)(expr))
+#define THROW_RESUME(expr) throwResume ((BASE_EXCEPT *)(expr))
+
+
+
+// The following macros are for defining your own new exception types.
+
+// Declare vtable and forward declare the exception type and vtable instance.
+// This should start a new exception declaration.
+// ... argument is the additional vtable fields.
+#define DECLARE_EXCEPT(except_name,parent_name,...) \
+struct except_name; \
+struct TABLE(except_name) { \
+	struct TABLE(parent_name) const * parent; \
+	size_t size; \
+	void (*copy)(except_name *this, except_name * other); \
+	void (*free)(except_name &this); \
+	const char * (*msg)(except_name *this); \
+	__VA_ARGS__ \
+}; \
+extern TABLE(except_name) INSTANCE(except_name);
+
+// The first field of the exception structure should be created with this.
+#define VTABLE_FIELD(except_name) \
+struct TABLE(except_name) const * virtual_table
+
+// In each constructor the vtable must be initialized.
+#define VTABLE_INIT(this_name,except_name) \
+this_name.virtual_table = &INSTANCE(except_name)
+
+// Declare the vtable instance. This should end an exception declaration.
+// ... argument is the remaining vtable field values.
+#define VTABLE_INSTANCE(except_name,parent_name,copy,free,msg,...) \
+TABLE(except_name) INSTANCE(except_name) @= { \
+	&INSTANCE(parent_name), sizeof(except_name), \
+	copy, free, msg, ## __VA_ARGS__ \
+};
+
+// Same, but used declarators for arguments.
+#define VTABLE_INSTANCE_KEY(except_name,parent_name,copy,free,msg,...) \
+TABLE(except_name) INSTANCE(except_name) @= { \
+	.parent : &INSTANCE(parent_name), .size : sizeof(except_name), \
+	.copy : copy, .free : free, .msg : msg, ## __VA_ARGS__ \
+};
+
+
+
+// Declare a trivial exception, one that adds no features:
+#define TRIVIAL_EXCEPTION(name) \
+DECLARE_EXCEPT(name,BASE_EXCEPT,) \
+struct name { \
+	VTABLE_FIELD(name); \
+}; \
+const char * GLUE2(name,_msg)(name * this) { \
+    return #name; \
+} \
+void GLUE2(name,_copy)(name * this, name * other) { \
+    this->virtual_table = other->virtual_table; \
+} \
+void ?{}(name & this) { \
+	VTABLE_INIT(this,name); \
+} \
+VTABLE_INSTANCE(name,BASE_EXCEPT,GLUE2(name,_copy),^?{},GLUE2(name,_msg),)
Index: tests/expression.c
===================================================================
--- tests/expression.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/expression.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,51 @@
+int main() {
+    struct s { int i; } x, *p = &x;
+    int i = 3;
+
+    // operators
+
+    ! i;
+    ~i;
+    +i;
+    -i;
+    *p;
+    ++p;
+    --p;
+    p++;
+    p--;
+
+    i+i;
+    i-i;
+    i*i;
+
+    i/i;
+    i%i;
+    i^i;
+    i&i;
+    i|i;
+    i<i;
+    i>i;
+    i=i;
+
+    i==i;
+    i!=i;
+    i<<i;
+    i>>i;
+    i<=i;
+    i>=i;
+    i&&i;
+    i||i;
+    p->i;
+    i*=i;
+    i/=i;
+    i%=i;
+    i+=i;
+    i-=i;
+    i&=i;
+    i|=i;
+    i^=i;
+    i<<=i;
+    i>>=i;
+
+    i?i:i;
+} // main
Index: tests/extension.c
===================================================================
--- tests/extension.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/extension.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,59 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// extension.c -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Jul  4 20:42:43 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Feb  6 15:44:39 2017
+// Update Count     : 46
+//
+
+__extension__ __extension__ int a, b, c;
+__extension__ struct S {
+	__extension__ int a, b, c;
+};
+__extension__ union U {
+	__extension__ int a, b, c;
+};
+__extension__ enum E {
+	R, G, B,
+};
+__extension__ typedef int www; // typedefs are removed => no output
+__extension__ __extension__ int f();
+//__extension__ __extension__ asm( "nop" );
+#ifdef __cforall
+__extension__ __extension__ extern "C" {
+ 	int i, j;
+ }
+#endif // __cforall
+
+__extension__ int fred( int p ) {
+	__extension__ struct S {
+		__extension__ int a, b, c;
+#ifdef __cforall
+		__extension__ * int x, y, z;
+#endif // __cforall
+	};
+	int i = __extension__ a + __extension__ 3;
+	__extension__ 3;
+	__extension__ a;
+	__extension__ int a, b, c;
+
+	__extension__ a = __extension__ b + __extension__ c;
+	__extension__ fred( 3 );
+	__extension__ int mary( int p ) {}
+	__extension__ sizeof( 3 );
+	__extension__ (3 || 4);
+	__extension__ __alignof__( __extension__ a );
+	__extension__ a || __extension__ b && __extension__ c;
+	__extension__ a > __extension__ b ? __extension__ c : __extension__ c;
+	__extension__ a = __extension__ ( __extension__ b + __extension__ c );
+	__extension__ a, __extension__ b, __extension__ c;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa extension.c" //
+// End: //
Index: tests/fallthrough.c
===================================================================
--- tests/fallthrough.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/fallthrough.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,124 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fallthrough.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Wed Mar 14 10:06:25 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 16 08:21:46 2018
+// Update Count     : 14
+//
+
+void test(int choice) {
+	choose ( choice ) {
+		case 1:
+			printf("case 1\n");
+			fallthru;
+		case 2:
+			printf("case 2\n");
+			fallthru;
+			printf("did not fallthru\n");
+			if ( 7 ) fallthru common2;
+			fallthru common1;
+		case 3:
+			printf("case 3\n");
+			fallthru default;
+			fallthru common1;
+		common1:
+			printf("common1\n");
+		// break
+		case 4:
+			printf("case 4\n");
+			fallthru common2;
+		case 5:
+			printf("case 5\n");
+			fallthru common2;
+			fallthru default;
+		case 6:
+			printf("case 6\n");
+			fallthru common2;
+		common2:
+			printf("common2\n");
+		// break
+		default:
+			printf("default\n");
+			fallthru;
+	}
+
+	printf("\n");
+
+	switch ( choice ) {
+	  case 1:
+		printf("case 1\n");
+		switch ( choice ) {
+		  case 1:
+			printf("case 1\n");
+			for ( int i = 0; i < 4; i += 1 ) {
+				printf("%d\n", i);
+				if ( i == 2 ) fallthru common;
+			} // for
+		} // switch
+		break;
+	  case 5:
+		printf("case 5\n");
+		if ( choice == 5 ) {
+			if ( choice != 5 ) {
+				printf("error\n");
+			} else {
+				printf("check\n");
+				fallthru common;
+			} // if
+		} // if
+	  common:
+		printf( "common\n" );
+		fallthru;
+		break;
+	  default:
+		printf( "default\n" );
+		fallthru;
+	} // switch
+
+#if ERR1
+	// ERROR: fallthrough must be enclosed in switch or choose
+	fallthru;
+	// ERROR: fallthrough must be enclosed in switch or choose
+	fallthru common4;
+	// ERROR: fallthrough must be enclosed in switch or choose
+	fallthru default;
+	choose ( 3 ) {
+		case 2:
+			for () {
+				choose ( 2 ) {
+					case 1:
+						// ERROR: default is later, but in a different switch
+						fallthru default;
+						// ERROR: common3 is later, but not at the same level as a case clause
+						fallthru common3;
+				}
+				common3: ;
+			}
+		default:
+		case 1:
+		common4:
+			// ERROR: attempt to jump up with fallthrough
+			if ( 7 ) fallthru common4;
+			// ERROR: attempt to jump up with fallthrough
+			fallthru default;
+	}
+#endif
+}
+
+int main() {
+	test(1);
+	printf("\n");
+	test(5);
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fallthrough.c" //
+// End: //
Index: tests/forall.c
===================================================================
--- tests/forall.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/forall.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,222 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// forall.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed May  9 08:48:15 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 12 16:19:08 2018
+// Update Count     : 30
+// 
+
+void g1() {
+	forall( otype T ) T f( T ) {};
+	void f( int ) {};
+	void h( void (*p)(void) ) {};
+
+	int x;
+	void (*y)(void);
+	char z;
+	float w;
+
+	f( x );
+	f( y );
+	f( z );
+	f( w );
+	h( f( y ) );
+}
+
+void g2() {
+	forall( otype T ) void f( T, T ) {}
+	forall( otype T, otype U ) void f( T, U ) {}
+
+	int x;
+	float y;
+	int *z;
+	float *w;
+
+	f( x, y );
+	f( z, w );
+	f( x, z );
+}
+
+typedef forall ( otype T ) int (* f)( int );
+
+forall( otype T )
+void swap( T left, T right ) {
+	T temp = left;
+	left = right;
+	right = temp;
+}
+
+void ?{}( int & c, zero_t ) { c = 0; }					// not in prelude
+
+trait sumable( otype T ) {
+	void ?{}( T &, zero_t );							// 0 literal constructor
+	T ?+?( T, T );										// assortment of additions
+	T ?+=?( T &, T );
+	T ++?( T & );
+	T ?++( T & );
+}; // sumable
+
+forall( otype T | sumable( T ) )						// use trait
+T sum( size_t size, T a[] ) {
+	T total = 0;										// initialize by 0 constructor
+	for ( size_t i = 0; i < size; i += 1 )
+		total = total + a[i];							// select appropriate +
+	return total;
+} // sum
+
+forall( otype T | { T ?+?( T, T ); T ?++( T & ); [T] ?+=?( T &,T ); } )
+T twice( T t ) {
+	return t + t;
+}
+
+forall( otype T | { int ?<?(T, T); } )
+T min( T t1, T t2 ) {
+	return t1 < t2 ? t1 : t2;
+}
+
+int fred() {
+	int x = 1, y = 2, a[10];
+	float f;
+
+	swap( x, y );
+	twice( x );
+	f = min( 4.0, 3.0 );
+	sum( 10, a );
+}
+
+// Multiple forall
+forall( otype T ) forall( otype S ) struct { int i; };
+forall( otype T ) struct { int i; } forall( otype S );
+struct { int i; } forall( otype T ) forall( otype S );
+forall( otype W ) struct { int i; } forall( otype T ) forall( otype S );
+
+// Distribution
+struct P { int i; };
+forall( otype T ) struct Q { T i; };
+forall( otype T ) struct { int i; };
+struct KK { int i; };
+inline static {
+ 	void RT1() {}
+}
+forall( otype T ) {
+	T RT2( T ) {
+		typedef int TD1;
+		struct S1 { T t; };
+	}
+	forall( otype X ) {
+		typedef int TD2;
+		struct S2 {};
+		X RT2( T, X ) {
+			int TD2;
+		}
+	}
+	extern "C" {
+		forall( otype W ) {
+			W RT3( W ) {}
+			struct S3 {};
+		}
+	}
+	void RT4() {
+		forall( otype W ) struct S4 {};
+		typedef int TD3;
+	}
+	static {
+		struct S5 {};
+		void RT5( T ) {
+			struct S6 {};
+			int TD2;
+		}
+	}
+	struct S7 {};
+	typedef int TD4;
+}
+TD2 t2;
+TD4 t4;
+struct Q( int ) t;
+struct S2( int, int ) t;
+struct S5( int ) t;
+struct S7( int ) t;
+
+int i = RT2( 3 );
+double j = RT2( 3, 4.5 );
+
+static inline {
+	forall( otype T ) {
+		int RT6( T p );
+	}
+	forall( otype T, otype U ) {
+		int RT7( T, U );
+	}
+}
+static forall( otype T ) {
+	int RT8( T );
+}
+forall( otype T ) inline static {
+	int RT9( T ) { T t; }
+}
+
+forall( otype T | { T ?+?( T, T ); } ) {
+	forall( otype S | { T ?+?( T, S ); } ) {
+		forall( otype W ) T bar( T t, S s ) { return t + s; }
+		forall( otype W | { W ?+?( T, W ); } ) W baz( T t, S s, W w ) { return t + s + w; }
+		struct W { T t; } (int,int) ww;
+		struct P pp;
+	}
+}
+
+forall( otype T | { T ?+?( T, T ); } ) forall( otype S | { T ?+?( T, S ); } ) 
+struct XW { T t; };
+XW(int,int) xww;
+
+forall( otype T ) struct S { T t; } (int) x, y, z;
+forall( otype T ) struct { T t; } (int) a, b, c;
+
+forall( otype T ) static forall( otype S ) {
+    forall( otype X ) struct U {
+		T x;
+    };
+}
+
+forall( otype T ) {
+	extern "C" {
+		struct SS { T t; };
+		T foo( T ) {}
+	}
+}
+
+SS(int) s;
+W(int,int) w;
+
+int jane() {
+//	int j = bar( 3, 4 );
+	int k = baz( 3, 4, 5 );
+	int i = foo( 3 );
+}
+
+//otype T1 | { void xxx( T1 ); };
+
+// otype T1 | { void ?{}( T1 &, zero_t ); T1 ?+?(T1, T1); T1 ?++(T1); [T1] ?+=?(T1,T1); },
+// 	T2(otype P1, otype P2 ),
+// 	T3 | sumable(T3);
+
+//otype T2(otype P1, otype P2) | sumable( T2( P1,P2 ) ) = struct { P1 i; P2 j; };
+
+// T2(int, int) w1;
+// typedef T2(int, int) w2;
+// w2 g2;
+// otype w3 = T2(int, int);
+// w3 g3;
+
+int main( void ) {}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa forall.c" //
+// End: //
Index: tests/forctrl.c
===================================================================
--- tests/forctrl.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/forctrl.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,55 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// forctrl.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug  8 18:32:59 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 16 09:25:47 2018
+// Update Count     : 6
+// 
+
+#include <fstream.hfa>
+
+struct S { int i, j; };
+void ?{}( S & s ) { s.[i, j] = 0; }
+void ?{}( S & s, int i ) { s.[i, j] = [i, 0]; }
+void ?{}( S & s, int i, int j ) { s.[i, j] = [i, j]; }
+void ?{}( S & s, zero_t ) { s.[i, j] = 0; }
+void ?{}( S & s, one_t ) { s.[i, j] = 1; }
+S ?+?( S t1, S t2 ) { return (S){ t1.i + t2.i, t1.j + t2.j }; }
+int ?<?( S t1, S t2 ) { return t1.i < t2.i && t1.j < t2.j; }
+S ?=?( S & t1, S t2 ) { t1.i = t2.i; t1.j = t2.j; return t1; }
+S ?+=?( S & t1, S t2 ) { t1 = t1 + t2; return t1; }
+S ?+=?( S & t1, one_t ) { t1 = t1 + (S){1}; return t1; }
+ofstream & ?|?( ofstream & os, S v ) { return os | '(' | v.i | v.j | ')'; }
+
+int main() {
+	while () { sout | "empty"; break; }		sout | endl;
+	do { sout | "empty"; break; } while ();	sout | endl;
+	for () { sout | "empty"; break; }		sout | endl;
+	for ( 10 ) { sout | "X"; }				sout | endl;
+	for ( 0.5 ~ 5.5 ) { sout | "Y"; }		sout | endl;
+	for ( 2 ~= 10 ~ 2 ) { sout | "Z"; }		sout | endl;
+	for ( i; 10 ) { sout | i; }				sout | endl;
+	for ( j; 10 ) { sout | j; }				sout | endl;
+	for ( i; 0.5 ~ 5.5 ) { sout | i; }		sout | endl;
+	for ( i; 2 ~= 10 ~ 2 ) { sout | i; }	sout | endl;
+	for ( ui; 2u ~= 10u ~ 2u ) { sout | ui; } sout | endl;
+	int start = 3, comp = 10, inc = 2;
+	for ( i; start ~ comp ~ inc + 1 ) { sout | i; } sout | endl;
+
+	for ( S s = (S){0}; s < (S){10,10}; s += (S){1} ) { sout | s; } sout | endl;
+//	for ( s; (S){10,10} ) { sout | s; } sout | endl;
+	for ( s; (S){0} ~ (S){10,10} ) { sout | s; } sout | endl;
+	for ( s; (S){0} ~ (S){10,10} ~ (S){1} ) { sout | s; } sout | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa forctrl.c" //
+// End: //
Index: tests/fstream_test.c
===================================================================
--- tests/fstream_test.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/fstream_test.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,35 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fstream_test.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 24 11:30:26 2017
+// Update Count     : 65
+//
+
+#include <fstream.hfa>
+
+int main( void ) {
+	int nombre;
+	sout | "Entrez un nombre, s'il vous plaît:" | endl;
+	sin  | nombre;
+	sout | "Vous avez entré" | nombre | endl;
+	sout | "le nombre" | nombre | "est"
+		 | (nombre > 0 ? "positif" : nombre == 0 ? "zéro" : "négatif") | endl;
+
+	sout | "Entrez trois nombres, s'il vous plaît: " | endl;
+	int i, j, k;
+	sin  | i | j | k;
+	sout | "Vous avez entré" | "i:" | "" | i | "j:" | "" | j | "k:" | "" | k | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fstream_test.c" //
+// End: //
Index: tests/function-operator.c
===================================================================
--- tests/function-operator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/function-operator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,177 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// function-operator.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Fri Aug 25 15:21:11 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug  2 09:27:53 2018
+// Update Count     : 8
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>
+
+#define length(array) (sizeof((array))/sizeof((array)[0]))
+#define begin(array) (&array[0]) // there's currently a bug in passing an array to a polymorphic function, so ensure a pointer is passed instead
+#define end(array) (&array[length(array)])
+
+// STL-like Algorithms
+trait Assignable(dtype T, dtype U) { T ?=?(T &, U); };
+trait Copyable(dtype T) { void ?{}(T &, T); };
+trait Destructable(dtype T) { void ^?{}(T &); };
+
+trait Iterator(dtype iter | sized(iter) | Copyable(iter) | Destructable(iter), otype T) {
+	T & *?(iter);
+	iter ++?(iter &);
+	int ?!=?(iter, iter);
+};
+
+forall(otype Tin, dtype Input | Iterator(Input, Tin), otype Tout, dtype Output | Iterator(Output, Tout) | Assignable(Tout, Tin))
+Output copy(Input first, Input last, Output result) {
+	while (first != last) {
+		*result = *first;
+		++result; ++first;
+	}
+	return result;
+}
+
+// test ?()(T *, ...) -- ?() with function call-by-pointer
+forall(otype Tin, dtype Input | Iterator(Input, Tin), otype Tout, dtype Output | Iterator(Output, Tout), otype FuncRet, dtype Func | { FuncRet ?()(Func *, Tin); } | Assignable(Tout, FuncRet))
+Output transform (Input first, Input last, Output result, Func * op) {
+	while (first != last) {
+		*result = op(*first);
+		++result; ++first;
+	}
+	return result;
+}
+
+// test ?()(T, ...) -- ?() with function call-by-value
+forall(dtype Iter, otype T | Iterator(Iter, T), otype Pred | { int ?()(Pred, T); })
+Iter find_if (Iter first, Iter last, Pred pred) {
+	while (first != last) {
+		if (pred(*first)) return first;
+		++first;
+	}
+	return last;
+}
+
+// test ?()(T, ...) -- ?() with function call-by-reference
+forall(otype Generator, otype GenRet | { GenRet ?()(Generator &); }, dtype Iter, otype T| Iterator(Iter, T) | Assignable(T, GenRet))
+void generate(Iter first, Iter last, Generator & gen) {
+	int i = 0;
+	while (first != last) {
+		*first = gen();
+		++first;
+	}
+}
+
+// encapsulate a counter that increments by one every time it is called
+struct Counter { int c; };
+void ?{}(Counter & cnt) { cnt.c = 0; }
+int ?()(Counter & cnt) { return cnt.c++; }
+
+// TODO: abstract over os type with ostream trait; resolver is currently too slow for this to be reasonable, but it does work.
+struct os_wrapper {
+	ofstream * out;
+};
+
+// TODO: abstract over (os, T)
+os_wrapper ?=?(os_wrapper & wrapper, int x) {
+	*wrapper.out | x | endl;
+	return wrapper;
+}
+
+	struct ostream_iterator {
+		os_wrapper * out;
+	};
+void ?{}(ostream_iterator & iter, ofstream * out) {
+	iter.out = new(out);
+}
+// no destructor, memory leak. This is necessary for this to work at the moment, since
+// *? requires its parameter by value and returns a reference.
+
+// implement Iterator
+os_wrapper & *?(ostream_iterator iter) {
+	return *iter.out;
+}
+ostream_iterator ++?(ostream_iterator & iter) {
+	// nothing to do
+	return iter;
+}
+int ?!=?(ostream_iterator i1, ostream_iterator i2) {
+	return i1.out->out != i2.out->out;
+}
+
+forall(otype T | { int ?==?(T, T); })
+struct Equals {
+	T val;
+};
+
+forall(otype T | { int ?==?(T, T); })
+int ?()(Equals(T) eq, T x) {
+	return eq.val == x;
+}
+
+forall(otype T | { T ?*?(T, T); })
+struct Multiply {
+	T val;
+};
+
+forall(otype T | { T ?*?(T, T); })
+T ?()(Multiply(T) * mult, T x) {
+	return mult->val * x;
+}
+
+// TODO: generalize to ttype return; doesn't work yet
+// like std::function
+forall(otype Return, ttype Args)
+struct function {
+	Return (*f)(Args);
+};
+// TODO: missing adapter in these functions
+// // value, reference, pointer operators
+// forall(otype Return, ttype Args) Return ?()(function(Return, Args) func, Args args) { return func.f(args); }
+// forall(otype Return, ttype Args) Return ?()(function(Return, Args) & func, Args args) { return func.f(args); }
+// forall(otype Return, ttype Args) Return ?()(function(Return, Args) * func, Args args) { return func->f(args); }
+
+int main() {
+	// generate for array fill
+	Counter c;
+	int x[10], y[10];
+	generate(begin(x), end(x), c);
+	generate(begin(y), end(y), c);
+
+	// copy for output
+	ostream_iterator out_iter = { &sout };
+	copy(begin(x), end(x), out_iter);
+	copy(begin(y), end(y), out_iter);
+
+	// find_if for searching
+	Equals(int) is5 = { 5 };
+	if (find_if(begin(x), end(x), is5) != end(y)) {
+		printf("Found 5 in x.\n");
+	} else {
+		printf("Did not find 5 in x.\n");
+	}
+	if (find_if(begin(y), end(y), is5) != end(y)) {
+		printf("Found 5 in y.\n");
+	} else {
+		printf("Did not find 5 in y.\n");
+	}
+
+	Multiply(int) times2 = { 2 };
+	transform(begin(x), end(x), begin(x), &times2);
+	copy(begin(x), end(x), out_iter);
+
+	// REMOVE WHEN ?* PROBLEM FIXED.
+	delete(out_iter.out);
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/functions.c
===================================================================
--- tests/functions.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/functions.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,191 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// functions.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:39:58 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Jan 17 22:44:12 2018
+// Update Count     : 12
+//
+
+// ANSI function definitions
+
+void h(void) {}
+
+int f (
+	int (void),
+	int (int),
+	int ((void)),
+	int ((int)),
+	void g(void)
+	) {
+	(* g)();
+	g();
+	g = h;
+}
+
+int f1() {}
+int (f2()) {}
+int (* f3())() {}
+int * ((f4())) {}
+int ((* f5()))() {}
+int * f6() {}
+int * (f7)() {}
+int ** f8() {}
+int * const * (f9)() {}
+int (* f10())[] {}
+int (* f11())[][3] {}
+int ((* f12())[])[3] {}
+
+// "implicit int" otype specifier (not ANSI)
+
+fII1( int i ) {}
+const fII2( int i ) {}
+extern fII3( int i ) {}
+extern const fII4( int i ) {}
+
+* fII5() {}
+const * fII6() {}
+const long * fII7() {}
+static const long * fII8() {}
+const static long * fII9() {}
+
+// K&R function definitions
+
+fO1( i ) int i; {}
+int fO2( i ) int i; {}
+const fO3( i ) int i; {}
+extern fO4( i ) int i; {}
+extern const fO5( i ) int i; {}
+
+// Cforall extensions
+
+// [] f( );
+[int] f( );
+// [] f(int);
+[int] f(int);
+// [] f( ) {}
+[int] f( ) {}
+// [] 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) {}
+
+[int, int x] f( );
+// [] f(int, int x);
+[int, int x] f(int, int x);
+[int, int x] f( ) {}
+// [] f(int, int x) {}
+[int, int x] f(int, int x) {}
+
+[int, int x, int] f( );
+// [] f(int, int x, int);
+[int, int x, int] f(int, int x, int);
+[int, int x, int] f( ) {}
+// [] 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);
+[int, int x, * int y] f(int, int x, * int y);
+[int, int x, * int y] f( ) {}
+// [] f(int, int x, * int y) {}
+[int, int x, * int y] f(int, int x, * int y) {}
+
+// 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(
+	int ( int, int p ),
+	[int](int)
+	) {
+	int (* (* pc)[][10])[][3];
+	* [][10] * [][3] int p;
+	* [] * [int](int) p;
+}
+
+static const int * f1() {}
+static [ * const int ] f2() {}
+static inline [ const * int ] f3() {}
+static inline [ const [ * int, int ] ] f4() {}
+static [ const [ * int, const int ] ] f5() {}
+
+// unnamed parameter
+
+int f(
+	int (),
+
+	int * (),
+	int ** (),
+	int * const * (),
+	int * const * const (),
+
+	int ([]),
+	int ([10]),
+
+	int * ([]),
+	int * ([10]),
+	int ** ([]),
+	int ** ([10]),
+	int * const * ([]),
+	int * const * ([10]),
+	int * const * const ([]),
+	int * const * const ([10])
+	);
+
+int f(
+	int (),
+
+	int * (),
+	int ** (),
+	int * const * (),
+	int * const * const (),
+
+	int ([]),
+	int ([10]),
+
+	int * ([]),
+	int * ([10]),
+	int ** ([]),
+	int ** ([10]),
+	int * const * ([]),
+	int * const * ([10]),
+	int * const * const ([]),
+	int * const * const ([10])
+	) {
+}
+
+typedef int T;
+
+int f( T (* f), T t ) {
+	T (T);
+}
+
+// errors
+
+//int f()[] {}
+//int (f[])() {}
+//int f[]() {}
+//int ((* f15())())[] {}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa functions.c" //
+// End: //
Index: tests/gccExtensions.c
===================================================================
--- tests/gccExtensions.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/gccExtensions.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,123 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// gccExtensions.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Sun Aug 14 17:28:17 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 17 09:26:50 2016
+// Update Count     : 10
+// 
+
+extern int x asm( "xx" );
+
+int main(int argc, char const *argv[]) {
+	// asm extensions
+
+	asm( "nop" );
+	__asm( "nop" );
+	__asm__( "nop" );
+
+	static int y asm( "yy" );
+#ifdef __CFA__
+	static * int z asm( "zz" );							// CFA declaration
+#endif // __CFA__
+
+	int src;
+	int dst;
+
+	asm volatile ( "mov %1, %0\n\t"
+				   "add $1, %0" : : : );
+
+	asm volatile ( "mov %1, %0\n\t"
+				   "add $1, %0"
+				   : "=" "r" (dst));
+
+	asm volatile ( "mov %1, %0\n\t"
+				   "add $1, %0"
+				   : "=r" (dst)
+				   : "r" (src));
+
+	asm ( "mov %1, %0\n\t"
+		  "add $1, %0"
+		  : "=r" (dst), "=r" (src)
+		  : [src] "r" (dst)
+		  : "r0");
+
+  L1: L2:
+	asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5"
+			   : /* No outputs. */
+			   : "r"(src), "r"(&dst)
+			   : "r5", "memory"
+			   : L1, L2 );
+
+	// alternative type/qualifer names
+
+	__complex__ c1;
+	_Complex c2;
+
+	const int i1;
+	__const int i2;
+	__const__ int i3;
+
+	__inline int f1() {}
+	__inline__ int f2() {}
+
+	__signed s1;
+	__signed s2;
+
+	__volatile int v1;
+	__volatile__ int v2;
+
+	// symbol table attributes
+
+	__typeof(s1) t1;
+	__typeof__(s1) t2;
+
+	// strange extension qualifier
+
+	__extension__ const int ex;
+	struct S {
+		__extension__ int a, b, c;
+	};
+	int i = __extension__ 3;
+	__extension__ int a, b, c;
+	__extension__ a, __extension__ b, __extension__ c;
+	__extension__ a = __extension__ b + __extension__ c;
+	__extension__ a = __extension__ ( __extension__ b + __extension__ c );
+
+	// attributes
+
+	__attribute__(()) int a1;
+	const __attribute(()) int a2;
+	const static __attribute(()) int a3;
+	const static int __attribute(()) a4;
+	const static int a5 __attribute(());
+	const static int a6, __attribute(()) a7;
+
+	int * __attribute(()) p1;
+	int (* __attribute(()) p2);
+//	int (__attribute(()) (p3));
+//	int ( __attribute(()) (* __attribute(()) p4));
+
+	struct __attribute(()) s1;
+	struct __attribute(()) s2 { int i; };
+	struct __attribute(()) s3 { int i; } x1, __attribute(()) y1;
+	struct __attribute(()) s4 { int i; } x2, y2 __attribute(());
+
+	int m1 [10] __attribute(());
+	int m2 [10][10] __attribute(());
+	int __attribute(()) m3 [10][10];
+//	int ( __attribute(()) m4 [10] )[10];
+
+	return 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa gccExtensions.c" //
+// End: //
Index: tests/genericUnion.c
===================================================================
--- tests/genericUnion.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/genericUnion.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,30 @@
+#include <limits.hfa>
+
+forall(otype T)
+union ByteView {
+	T val;
+	char bytes[(sizeof(int))]; // want to change to sizeof(T)
+};
+
+forall(otype T)
+void print(ByteView(T) x) {
+	for (int i = 0; i < sizeof(int); i++) { // want to change to sizeof(T)
+		printf("%02x", x.bytes[i] & 0xff);
+	}
+}
+
+forall(otype T)
+void f(ByteView(T) x, T val) {
+	print(x);
+	printf(" ");
+	x.val = val;
+	print(x);
+	printf("\n");
+}
+
+int main() {
+	ByteView(unsigned) u = { 0 };
+	ByteView(int) i = { 0 };
+	f(u, MAX);
+	f(i, -1);
+}
Index: tests/gmp.c
===================================================================
--- tests/gmp.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/gmp.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,110 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// gmp.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Apr 19 08:55:51 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 18 12:43:13 2018
+// Update Count     : 556
+//
+
+// NOTE: UBUNTU DOES NOT SUPPORT GMP MULTILIB, SO ONLY 64-BIT GMP IS TESTED.
+
+#include <gmp.hfa>
+
+int main( void ) {
+	sout | "constructors" | endl;
+	short int si = 3;
+	Int x = { "50000000000000000000" }, y = { si }, z = x + y;
+	sout | x | y | z | endl;
+	sout | "x:" | x | "y:" | y | "z:" | z | endl;
+
+	sout | "conversions" | endl;
+	y = 'a';
+	sout | "y:" | y | endl;
+	y = "12345678901234567890123456789";
+	sout | "y:" | y | endl;
+	y = 100`mp + 100`mp;
+	sout | "y:" | y | endl;
+	y = -200u`mp + -200u`mp;
+	sout | "y:" | y | endl;
+	y = "12345678901234567890123456789"`mp + "12345678901234567890123456789"`mp;
+	sout | "y:" | y | endl;
+	y = si;
+	sout | "y:" | y | endl;
+	y = -3;
+	sout | "y:" | y | endl;
+	y += 7;
+	sout | "y:" | y | endl;
+	y -= 1;
+	sout | "y:" | y | endl;
+	int b;
+	b = y;
+	si = y;
+	sout | "y:" | y | "b:" | b | "si:" | si | endl;
+
+	sout | "comparison" | endl;
+	sout | x == x | endl;
+	sout | x != x | endl;
+	sout | x < x | endl;
+	sout | x <= x | endl;
+	sout | x > x | endl;
+	sout | x >= x | endl;
+
+	sout | "arithmetic" | endl;
+	z = x + y + z;
+	sout | "z:" | z | endl;
+	z = z = x;
+	sout | "z:" | z | endl;
+	z = x - y - z;
+	sout | "z:" | z | endl;
+	z = x * y * z;
+	sout | "z:" | z | endl;
+	z = x * 3;
+	sout | "z:" | z | endl;
+	z = 3 * x;
+	sout | "z:" | z | endl;
+	z = x / 3;
+	sout | "z:" | z | endl;
+	sout | div( x, 3 ) | x / 3 | "," | x % 3 | endl;
+	[ x, y ] = div( x, 3 );
+	sout | "x:" | x | "y:" | y | endl;
+
+	sout | endl;
+
+	sin | x | y | z;
+	sout | x | y | z | endl;
+
+	sout | endl;
+
+	sout | "Fibonacci Numbers" | endl;
+	Int fn, fn1, fn2;
+	fn = (Int){0}; fn1 = fn;							// 1st case
+	sout | (int)0 | fn | endl;
+	fn = 1; fn2 = fn1; fn1 = fn;						// 2nd case
+	sout | 1 | fn | endl;
+	for ( i; 2u ~= 200 ) {
+		fn = fn1 + fn2; fn2 = fn1; fn1 = fn;			// general case
+		sout | i | fn | endl;
+	} // for
+
+	sout | endl;
+
+	sout | "Factorial Numbers" | endl;
+	Int fact = 1;										// 1st case
+	sout | (int)0 | fact | endl;
+	for ( i; 1u ~= 40u ) {
+		fact *= i;										// general case
+		sout | i | fact | endl;
+	} // for
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa gmp.c -lgmp" //
+// End: //
Index: tests/heap.c
===================================================================
--- tests/heap.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/heap.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,342 @@
+#include <thread.hfa>
+#include <kernel.hfa>										// processor
+#include <stdlib.hfa>										// *allocs
+#include <malloc.h>										// malloc_*
+
+// #include <time.hfa>
+// #define __CFA_DEFAULT_PREEMPTION__ 1000`us
+// //#define __CFA_DEFAULT_PREEMPTION__ 0
+
+// Duration default_preemption() {
+// 	return __CFA_DEFAULT_PREEMPTION__;
+// }
+
+#define __U_DEFAULT_MMAP_START__ (512 * 1024 + 1)
+size_t default_mmap_start() __attribute__(( weak )) {
+    return __U_DEFAULT_MMAP_START__;
+} // default_mmap_start
+
+thread Worker {
+}; // Worker
+
+void main( Worker & ) {
+    enum { NoOfAllocs = 5000, NoOfMmaps = 10 };
+    char *locns[NoOfAllocs];
+    int i;
+
+    // check alloc/free
+
+    for ( int j = 0; j < 40; j += 1 ) {
+		for ( i = 0; i < NoOfAllocs; i += 1 ) {
+			locns[i] = alloc( i );
+			//sout | (void *)locns[i] | endl;
+			for ( int k = 0; k < i; k += 1 ) locns[i][k] = '\345';
+		} // for
+		//sout | (char *)sbrk(0) - start | " bytes" | endl;
+
+		for ( i = 0; i < NoOfAllocs; i += 1 ) {
+			//sout | (void *)locns[i] | endl;
+			for ( int k = 0; k < i; k += 1 ) if ( locns[i][k] != '\345' ) abort( "new/delete corrupt storage1" );
+			free( locns[i] );
+		} // for
+		//sout | (char *)sbrk(0) - start | " bytes" | endl;
+
+		for ( i = 0; i < NoOfAllocs; i += 1 ) {
+			locns[i] = alloc( i );
+			//sout | (void *)locns[i] | endl;
+			for ( int k = 0; k < i; k += 1 ) locns[i][k] = '\345';
+		} // for
+		for ( i = NoOfAllocs - 1; i >=0 ; i -= 1 ) {
+			//sout | (void *)locns[i] | endl;
+			for ( int k = 0; k < i; k += 1 ) if ( locns[i][k] != '\345' ) abort( "new/delete corrupt storage2" );
+			free( locns[i] );
+		} // for
+    } // for
+
+    // check malloc/free (sbrk)
+
+    for ( i = 0; i < NoOfAllocs; i += 1 ) {
+		size_t s = (i + 1) * 20;
+		char *area = (char *)malloc( s );
+		if ( area == 0 ) abort( "malloc/free out of memory" );
+		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
+		area[malloc_usable_size( area ) - 1] = '\345';	// fill ultimate byte
+		free( area );
+    } // for
+
+    for ( i = 0; i < NoOfAllocs; i += 1 ) {
+		size_t s = i + 1;				// +1 to make initialization simpler
+		locns[i] = (char *)malloc( s );
+		if ( locns[i] == 0 ) abort( "malloc/free out of memory" );
+		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
+		locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte
+    } // for
+    for ( i = 0; i < NoOfAllocs; i += 1 ) {
+		size_t s = i + 1;
+		if ( locns[i][0] != '\345' || locns[i][s - 1] != '\345' ||
+			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\345' ) abort( "malloc/free corrupt storage" );
+		free( locns[i] );
+    } // for
+
+    // check malloc/free (mmap)
+
+    for ( i = 0; i < NoOfMmaps; i += 1 ) {
+		size_t s = i + default_mmap_start();				// cross over point
+		char *area = (char *)malloc( s );
+		if ( area == 0 ) abort( "malloc/free out of memory" );
+		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
+		area[malloc_usable_size( area ) - 1] = '\345';	// fill ultimate byte
+		free( area );
+    } // for
+
+    for ( i = 0; i < NoOfMmaps; i += 1 ) {
+		size_t s = i + default_mmap_start();				// cross over point
+		locns[i] = (char *)malloc( s );
+		if ( locns[i] == 0 ) abort( "malloc/free out of memory" );
+		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
+		locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte
+    } // for
+    for ( i = 0; i < NoOfMmaps; i += 1 ) {
+		size_t s = i + default_mmap_start();				// cross over point
+		if ( locns[i][0] != '\345' || locns[i][s - 1] != '\345' ||
+			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\345' ) abort( "malloc/free corrupt storage" );
+		free( locns[i] );
+    } // for
+
+    // check calloc/free (sbrk)
+
+    for ( i = 0; i < NoOfAllocs; i += 1 ) {
+		size_t s = (i + 1) * 20;
+		char *area = (char *)calloc( 5, s );
+		if ( area == 0 ) abort( "calloc/free out of memory" );
+		if ( area[0] != '\0' || area[s - 1] != '\0' ||
+			 area[malloc_usable_size( area ) - 1] != '\0' ||
+			 ! malloc_zero_fill( area ) ) abort( "calloc/free corrupt storage1" );
+		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
+		area[malloc_usable_size( area ) - 1] = '\345';	// fill ultimate byte
+		free( area );
+    } // for
+
+    for ( i = 0; i < NoOfAllocs; i += 1 ) {
+		size_t s = i + 1;
+		locns[i] = (char *)calloc( 5, s );
+		if ( locns[i] == 0 ) abort( "calloc/free out of memory" );
+		if ( locns[i][0] != '\0' || locns[i][s - 1] != '\0' ||
+			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\0' ||
+			 ! malloc_zero_fill( locns[i] ) ) abort( "calloc/free corrupt storage2" );
+		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
+		locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte
+    } // for
+    for ( i = 0; i < NoOfAllocs; i += 1 ) {
+		size_t s = i + 1;
+		if ( locns[i][0] != '\345' || locns[i][s - 1] != '\345' ||
+			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\345' ) abort( "calloc/free corrupt storage3" );
+		free( locns[i] );
+    } // for
+
+    // check calloc/free (mmap)
+
+    for ( i = 0; i < NoOfMmaps; i += 1 ) {
+		size_t s = i + default_mmap_start();				// cross over point
+		char *area = (char *)calloc( 1, s );
+		if ( area == 0 ) abort( "calloc/free out of memory" );
+		if ( area[0] != '\0' || area[s - 1] != '\0' ) abort( "calloc/free corrupt storage4.1" );
+		if ( area[malloc_usable_size( area ) - 1] != '\0' ) abort( "calloc/free corrupt storage4.2" );
+		if ( ! malloc_zero_fill( area ) ) abort( "calloc/free corrupt storage4.3" );
+		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
+		area[malloc_usable_size( area ) - 1] = '\345';	// fill ultimate byte
+		free( area );
+    } // for
+
+    for ( i = 0; i < NoOfMmaps; i += 1 ) {
+		size_t s = i + default_mmap_start();				// cross over point
+		locns[i] = (char *)calloc( 1, s );
+		if ( locns[i] == 0 ) abort( "calloc/free out of memory" );
+		if ( locns[i][0] != '\0' || locns[i][s - 1] != '\0' ||
+			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\0' ||
+			 ! malloc_zero_fill( locns[i] ) ) abort( "calloc/free corrupt storage5" );
+		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
+		locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte
+    } // for
+    for ( i = 0; i < NoOfMmaps; i += 1 ) {
+		size_t s = i + default_mmap_start();				// cross over point
+		if ( locns[i][0] != '\345' || locns[i][s - 1] != '\345' ||
+			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\345' ) abort( "calloc/free corrupt storage6" );
+		free( locns[i] );
+    } // for
+
+    // check memalign/free (sbrk)
+
+    enum { limit = 64 * 1024 };							// check alignments up to here
+
+    for ( size_t a = libAlign(); a <= limit; a += a ) {	// generate powers of 2
+		//sout | alignments[a] | endl;
+		for ( int s = 1; s < NoOfAllocs; s += 1 ) {		// allocation of size 0 can return null
+			char *area = (char *)memalign( a, s );
+			if ( area == 0 ) abort( "memalign/free out of memory" );
+			//sout | i | " " | area | endl;
+			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
+				abort( "memalign/free bad alignment : memalign(%d,%d) = %p", (int)a, s, area );
+			} // if
+			area[0] = '\345'; area[s - 1] = '\345';	// fill first/last byte
+			area[malloc_usable_size( area ) - 1] = '\345'; // fill ultimate byte
+			free( area );
+		} // for
+    } // for
+
+    // check memalign/free (mmap)
+
+    for ( size_t a = libAlign(); a <= limit; a += a ) {	// generate powers of 2
+		//sout | alignments[a] | endl;
+		for ( i = 1; i < NoOfMmaps; i += 1 ) {
+			size_t s = i + default_mmap_start();			// cross over point
+			char *area = (char *)memalign( a, s );
+			if ( area == 0 ) abort( "memalign/free out of memory" );
+			//sout | i | " " | area | endl;
+			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
+				abort( "memalign/free bad alignment : memalign(%d,%d) = %p", (int)a, (int)s, area );
+			} // if
+			area[0] = '\345'; area[s - 1] = '\345';		// fill first/last byte
+			area[malloc_usable_size( area ) - 1] = '\345'; // fill ultimate byte
+			free( area );
+		} // for
+    } // for
+
+    // check calloc/realloc/free (sbrk)
+
+    for ( i = 1; i < 10000; i += 12 ) {
+		// initial N byte allocation
+		char *area = (char *)calloc( 5, i );
+		if ( area == 0 ) abort( "calloc/realloc/free out of memory" );
+		if ( area[0] != '\0' || area[i - 1] != '\0' ||
+			 area[malloc_usable_size( area ) - 1] != '\0' ||
+			 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage1" );
+
+		// Do not start this loop index at 0 because realloc of 0 bytes frees the storage.
+		for ( int s = i; s < 256 * 1024; s += 26 ) {	// start at initial memory request
+			area = (char *)realloc( area, s );			// attempt to reuse storage
+			if ( area == 0 ) abort( "calloc/realloc/free out of memory" );
+			if ( area[0] != '\0' || area[s - 1] != '\0' ||
+				 area[malloc_usable_size( area ) - 1] != '\0' ||
+				 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage2" );
+		} // for
+		free( area );
+    } // for
+
+    // check calloc/realloc/free (mmap)
+
+    for ( i = 1; i < 1000; i += 12 ) {
+		// initial N byte allocation
+		size_t s = i + default_mmap_start();				// cross over point
+		char *area = (char *)calloc( 1, s );
+		if ( area == 0 ) abort( "calloc/realloc/free out of memory" );
+		if ( area[0] != '\0' || area[s - 1] != '\0' ||
+			 area[malloc_usable_size( area ) - 1] != '\0' ||
+			 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage1" );
+
+		// Do not start this loop index at 0 because realloc of 0 bytes frees the storage.
+		for ( int r = i; r < 256 * 1024; r += 26 ) {	// start at initial memory request
+			area = (char *)realloc( area, r );		// attempt to reuse storage
+			if ( area == 0 ) abort( "calloc/realloc/free out of memory" );
+			if ( area[0] != '\0' || area[r - 1] != '\0' ||
+				 area[malloc_usable_size( area ) - 1] != '\0' ||
+				 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage2" );
+		} // for
+		free( area );
+    } // for
+
+    // check memalign/realloc/free
+
+    size_t amount = 2;
+    for ( size_t a = libAlign(); a <= limit; a += a ) {	// generate powers of 2
+		// initial N byte allocation
+		char *area = (char *)memalign( a, amount );		// aligned N-byte allocation
+		if ( area == 0 ) abort( "memalign/realloc/free out of memory" ); // no storage ?
+		//sout | alignments[a] | " " | area | endl;
+		if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
+			abort( "memalign/realloc/free bad alignment : memalign(%d,%d) = %p", (int)a, (int)amount, area );
+		} // if
+		area[0] = '\345'; area[amount - 2] = '\345';	// fill first/penultimate byte
+
+		// Do not start this loop index at 0 because realloc of 0 bytes frees the storage.
+		for ( int s = amount; s < 256 * 1024; s += 1 ) { // start at initial memory request
+			if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "memalign/realloc/free corrupt storage" );
+			area = (char *)realloc( area, s );			// attempt to reuse storage
+			if ( area == 0 ) abort( "memalign/realloc/free out of memory" ); // no storage ?
+			//sout | i | " " | area | endl;
+			if ( (size_t)area % a != 0 ) {				// check for initial alignment
+				abort( "memalign/realloc/free bad alignment %p", area );
+			} // if
+			area[s - 1] = '\345';						// fill last byte
+		} // for
+		free( area );
+    } // for
+
+    // check cmemalign/free
+
+    for ( size_t a = libAlign(); a <= limit; a += a ) {	// generate powers of 2
+		//sout | alignments[a] | endl;
+		for ( int s = 1; s < limit; s += 1 ) {			// allocation of size 0 can return null
+			char *area = (char *)cmemalign( a, 1, s );
+			if ( area == 0 ) abort( "cmemalign/free out of memory" );
+			//sout | i | " " | area | endl;
+			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
+				abort( "cmemalign/free bad alignment : cmemalign(%d,%d) = %p", (int)a, s, area );
+			} // if
+			if ( area[0] != '\0' || area[s - 1] != '\0' ||
+				 area[malloc_usable_size( area ) - 1] != '\0' ||
+				 ! malloc_zero_fill( area ) ) abort( "cmemalign/free corrupt storage" );
+			area[0] = '\345'; area[s - 1] = '\345';		// fill first/last byte
+			free( area );
+		} // for
+    } // for
+
+    // check cmemalign/realloc/free
+
+    amount = 2;
+    for ( size_t a = libAlign() + libAlign(); a <= limit; a += a ) { // generate powers of 2
+		// initial N byte allocation
+		char *area = (char *)cmemalign( a, 1, amount );	// aligned N-byte allocation
+		if ( area == 0 ) abort( "cmemalign/realloc/free out of memory" ); // no storage ?
+		//sout | alignments[a] | " " | area | endl;
+		if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
+			abort( "cmemalign/realloc/free bad alignment : cmemalign(%d,%d) = %p", (int)a, (int)amount, area );
+		} // if
+		if ( area[0] != '\0' || area[amount - 1] != '\0' ||
+			 area[malloc_usable_size( area ) - 1] != '\0' ||
+			 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc/free corrupt storage1" );
+		area[0] = '\345'; area[amount - 2] = '\345';	// fill first/penultimate byte
+
+		// Do not start this loop index at 0 because realloc of 0 bytes frees the storage.
+		for ( int s = amount; s < 256 * 1024; s += 1 ) { // start at initial memory request
+			if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "cmemalign/realloc/free corrupt storage2" );
+			area = (char *)realloc( area, s );			// attempt to reuse storage
+			if ( area == 0 ) abort( "cmemalign/realloc/free out of memory" ); // no storage ?
+			//sout | i | " " | area | endl;
+			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
+				abort( "cmemalign/realloc/free bad alignment %p", area );
+			} // if
+			if ( area[s - 1] != '\0' || area[s - 1] != '\0' ||
+				 area[malloc_usable_size( area ) - 1] != '\0' ||
+				 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc/free corrupt storage3" );
+			area[s - 1] = '\345';						// fill last byte
+		} // for
+		free( area );
+    } // for
+	//sout | "worker" | thisTask() | "successful completion" | endl;
+} // Worker main
+
+int main() {
+    const unsigned int NoOfWorkers = 4;
+    {
+		processor processors[NoOfWorkers - 1] __attribute__(( unused )); // more than one processor
+		Worker workers[NoOfWorkers] __attribute__(( unused ));
+    }
+	// checkFreeOn();
+    // malloc_stats();
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa -nodebug -O2 heap.c" //
+// End: //
Index: tests/hello.c
===================================================================
--- tests/hello.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/hello.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,36 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// hello.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Jun  5 08:12:27 2017
+// Update Count     : 15
+//
+
+#include <fstream.hfa>
+
+int main() {
+	sout | "Hello world!" | endl;
+	sout | "Bonjour le monde!" | endl;
+	sout | "Hola Mundo!" | endl;
+	sout | "Hallo Welt!" | endl;
+	sout | "Kaixo Mundua!" | endl;
+	sout | "Chào thế giới!" | endl;
+	sout | "Привет мир!" | endl;
+	sout | "שלום עולם!" | endl;
+	sout | "你好，世界!" | endl;
+	sout | "こんにちは世界!" | endl;
+	sout | "안녕하세요 세계!" | endl;
+	sout | "नमस्ते दुनिया!" | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa hello.c" //
+// End: //
Index: tests/identFuncDeclarator.c
===================================================================
--- tests/identFuncDeclarator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/identFuncDeclarator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,118 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// identFuncDeclarator.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:36:34 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Jan 17 22:39:13 2018
+// Update Count     : 2
+// 
+
+int main() {
+	int f1;
+	int (f2);
+
+	int * f3;
+	int ** f4;
+	int * const * f5;
+	int * const * const f6;
+
+	int * (f7);
+	int ** (f8);
+	int * const * (f9);
+	int * const * const (f10);
+
+	int (* f11);
+	int (** f12);
+	int (* const * f13);
+	int (* const * const f14);
+
+	int f15[2];
+	int f16[10];
+	int (f17[2]);
+	int (f18[10]);
+
+	int * f19[2];
+	int * f20[10];
+	int ** f21[2];
+	int ** f22[10];
+	int * const * f23[2];
+	int * const * f24[10];
+	int * const * const f25[2];
+	int * const * const f26[10];
+
+	int * (f27[2]);
+	int * (f28[10]);
+	int ** (f29[2]);
+	int ** (f30[10]);
+	int * const * (f31[2]);
+	int * const * (f32[10]);
+	int * const * const (f33[2]);
+	int * const * const (f34[10]);
+
+	int (* f35[2]);
+	int (* f36[10]);
+	int (** f37[2]);
+	int (** f38[10]);
+	int (* const * f39[2]);
+	int (* const * f40[10]);
+	int (* const * const f41[2]);
+	int (* const * const f42[10]);
+
+	int f43[2][3];
+	int f44[3][3];
+	int (f45[2])[3];
+	int (f46[3])[3];
+	int ((f47[2]))[3];
+	int ((f48[3]))[3];
+
+	int * f49[2][3];
+	int * f50[3][3];
+	int ** f51[2][3];
+	int ** f52[3][3];
+	int * const * f53[2][3];
+	int * const * f54[3][3];
+	int * const * const f55[2][3];
+	int * const * const f56[3][3];
+
+	int (* f57[2][3]);
+	int (* f58[3][3]);
+	int (** f59[2][3]);
+	int (** f60[3][3]);
+	int (* const * f61[2][3]);
+	int (* const * f62[3][3]);
+	int (* const * const f63[2][3]);
+	int (* const * const f64[3][3]);
+
+	int f65(int);
+	int (f66)(int);
+
+	int * f67(int);
+	int ** f68(int);
+	int * const * f69(int);
+	int * const * const f70(int);
+
+	int * (f71)(int);
+	int ** (f72)(int);
+	int * const * (f73)(int);
+	int * const * const (f74)(int);
+
+	int (* f75)(int);
+	int (** f76)(int);
+	int (* const * f77)(int);
+	int (* const * const f78)(int);
+
+	int (* (* f79)(int))();
+	int (* (* const f80)(int))();
+	int (* const(* const f81)(int))();
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa identFuncDeclarator.c" //
+// End: //
Index: tests/identParamDeclarator.c
===================================================================
--- tests/identParamDeclarator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/identParamDeclarator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,166 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// identParamDeclarator.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:37:56 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Jan 17 22:36:11 2018
+// Update Count     : 2
+// 
+
+int fred (
+	int f1,
+	int (f2),
+
+	int *f3,
+	int **f4,
+	int * const *f5,
+	int * const * const f6,
+
+	int *(f7),
+	int **(f8),
+	int * const *(f9),
+	int * const * const (f10),
+
+	int (*f11),
+	int (**f12),
+	int (* const *f13),
+	int (* const * const f14),
+
+	int f15[],
+	int f16[10],
+	int (f17[]),
+	int (f18[10]),
+
+	int *f19[],
+	int *f20[10],
+	int **f21[],
+	int **f22[10],
+	int * const *f23[],
+	int * const *f24[10],
+	int * const * const f25[],
+	int * const * const f26[10],
+
+	int *(f27[]),
+	int *(f28[10]),
+	int **(f29[]),
+	int **(f30[10]),
+	int * const *(f31[]),
+	int * const *(f32[10]),
+	int * const * const (f33[]),
+	int * const * const (f34[10]),
+
+	int (*f35[]),
+	int (*f36[10]),
+	int (**f37[]),
+	int (**f38[10]),
+	int (* const *f39[]),
+	int (* const *f40[10]),
+	int (* const * const f41[]),
+	int (* const * const f42[10]),
+
+	int f43[][3],
+	int f44[3][3],
+	int (f45[])[3],
+	int (f46[3])[3],
+	int ((f47[]))[3],
+	int ((f48[3]))[3],
+
+	int *f49[][3],
+	int *f50[3][3],
+	int **f51[][3],
+	int **f52[3][3],
+	int * const *f53[][3],
+	int * const *f54[3][3],
+	int * const * const f55[][3],
+	int * const * const f56[3][3],
+
+	int (*f57[][3]),
+	int (*f58[3][3]),
+	int (**f59[][3]),
+	int (**f60[3][3]),
+	int (* const *f61[][3]),
+	int (* const *f62[3][3]),
+	int (* const * const f63[][3]),
+	int (* const * const f64[3][3]),
+
+	int f65(int),
+	int (f66)(int),
+
+	int *f67(int),
+	int **f68(int),
+	int * const *f69(int),
+	int * const * const f70(int),
+
+	int *(f71)(int),
+	int **(f72)(int),
+	int * const *(f73)(int),
+	int * const * const (f74)(int),
+
+	int (*f75)(int),
+	int (**f76)(int),
+	int (* const *f77)(int),
+	int (* const * const f78)(int),
+
+	int (*(*f79)(int))(),
+	int (*(* const f80)(int))(),
+	int (* const(* const f81)(int))(),
+
+	int f82[const *],
+	int f83[const 3],
+	int f84[static 3],
+	int f85[static const 3],
+
+	int (f86[const *]),
+	int (f87[const 3]),
+	int (f88[static 3]),
+	int (f89[static const 3]),
+
+	int *f90[const *],
+	int *f91[const 3],
+	int **f92[static 3],
+	int * const *f93[static const 3],
+	int * const * const f94[static const 3],
+
+	int *(f95[const *]),
+	int *(f96[const 3]),
+	int **(f97[static 3]),
+	int * const *(f98[static const 3]),
+	int * const * const (f99[static const 3]),
+
+	int f100[const *][3],
+	int f101[const 3][3],
+	int f102[static 3][3],
+	int f103[static const 3][3],
+
+	int (f104[const *][3]),
+	int (f105[const 3][3]),
+	int (f106[static 3][3]),
+	int (f107[static const 3][3]),
+
+	int *f108[const *][3],
+	int *f109[const 3][3],
+	int **f110[static 3][3],
+	int * const *f111[static const 3][3],
+	int * const * const f112[static const 3][3],
+
+	int *(f113[const *][3]),
+	int *(f114[const 3][3]),
+	int **(f115[static 3][3]),
+	int * const *(f116[static const 3][3]),
+	int * const * const (f117[static const 3][3])
+    );
+
+int main( int argc, char const *argv[] ) {				// dummy main
+	return 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa identParamDeclarator.c" //
+// End: //
Index: tests/identity.c
===================================================================
--- tests/identity.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/identity.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,42 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// identity.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jun  8 08:21:32 2017
+// Update Count     : 18
+//
+
+#include <fstream.hfa>
+
+forall( otype T )
+T identity( T t ) {
+	return t;
+}
+
+int main() {
+	sout | "char\t\t\t"					| identity( 'z' ) | endl;
+	sout | "signed int\t\t"				| identity( 4 ) | endl;
+	sout | "unsigned int\t\t"			| identity( 4u ) | endl;
+	sout | "signed long int\t\t" 		| identity( 4l ) | endl;
+	sout | "unsigned long int\t" 		| identity( 4ul ) | endl;
+	sout | "signed long long int\t"		| identity( 4ll ) | endl;
+	sout | "unsigned long long int\t"	| identity( 4ull ) | endl;
+	sout | "float\t\t\t" 				| identity( 4.1f ) | endl;
+	sout | "double\t\t\t"				| identity( 4.1 ) | endl;
+	sout | "long double\t\t"			| identity( 4.1l ) | endl;
+	sout | "float _Complex\t\t"			| identity( -4.1F-2.0iF ) | endl;
+	sout | "double _Complex\t\t"		| identity( -4.1D-2.0iD ) | endl;
+	sout | "long double _Complex\t"		| identity( -4.1L-2.0iL ) | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa identity.c" //
+// End: //
Index: tests/ifwhileCtl.c
===================================================================
--- tests/ifwhileCtl.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/ifwhileCtl.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,75 @@
+//
+// 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.
+//
+// ifwhileCtl.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Sat Aug 26 10:13:11 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Jun  6 17:15:09 2018
+// Update Count     : 21
+//
+
+#include <fstream.hfa>
+
+int f( int r ) { return r; }
+
+int main( void ) {
+	int x = 4, y = 3;
+
+	if ( int x = 1 ) {
+		sout | "x != 0 correct" | endl;
+	} else {
+		sout | "x == 0 incorrect" | endl;
+	} // if
+
+	if ( int x = 4, y = 0 ) {
+		sout | "x != 0 && y != 0 incorrect" | endl;
+	} else if ( int x = 4, y = 1 ) {
+		sout | "x != 0 && y != 0 correct" | endl;
+	} else {
+		sout | "x == 0 || y == 0 incorrect" | endl;
+	} // if
+
+	if ( int x = 5, y = f( x ); x == y ) {
+		sout | "x == y correct" | endl;
+	} else {
+		sout | "x != y incorrect" | endl;
+	} // if
+
+	if ( struct S { int i; } s = { 3 }; s.i < 4 ) {
+		S s1;
+		sout | "s.i < 4 correct" | endl;
+	} else {
+		S s1;
+		sout | "s.i >= 4 incorrect" | endl;
+	} // if
+
+	while ( int x = 1 ) {
+		sout | "x != 0 correct" | endl;
+		break;
+	} // while
+
+	while ( int x = 4, y = 0 ) {
+		sout | "x != 0 && y != 0 incorrect" | endl;
+	} // while
+
+	while ( int x = 5, y = f( x ); x == y ) {
+		sout | "x == y correct" | endl;
+		break;
+	} // while
+
+	while ( struct S { int i; } s = { 3 }; s.i < 4 ) {
+		S s1;
+		sout | "s.i < 4 correct" | endl;
+		break;
+	} // while
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa ifwhileCtl.c" //
+// End: //
Index: tests/io1.c
===================================================================
--- tests/io1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/io1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,73 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// io1.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Mar  2 16:56:02 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu May 24 21:17:56 2018
+// Update Count     : 104
+//
+
+#include <fstream.hfa>
+
+int main() {
+	int x = 3, y = 5, z = 7;
+	sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2) | endl;
+	sout | 1 | 2 | 3 | endl;
+	sout | '1' | '2' | '3' | endl;
+	sout | 1 | "" | 2 | "" | 3 | endl;
+	sout | endl;
+
+	sout | "opening delimiters" | endl;
+	sout
+		 | "x (" | 1
+		 | "x [" | 2
+		 | "x {" | 3
+		 | "x =" | 4
+		 | "x $" | 5
+		 | "x £" | 6
+		 | "x ¥" | 7
+		 | "x ¡" | 8
+		 | "x ¿" | 9
+		 | "x «" | 10
+		 | endl | endl;
+
+	sout | "closing delimiters" | endl;
+	sout
+		 | 1 | ", x"
+		 | 2 | ". x"
+		 | 3 | "; x"
+		 | 4 | "! x"
+		 | 5 | "? x"
+		 | 6 | "% x"
+		 | 7 | "¢ x"
+		 | 8 | "» x"
+		 | 9 | ") x"
+		 | 10 | "] x"
+		 | 11 | "} x"
+		 | endl | endl;
+
+	sout | "opening/closing delimiters" | endl;
+	sout
+		 | "x`" | 1 | "`x'" | 2
+		 | "'x\"" | 3 | "\"x:" | 4
+		 | ":x " | 5 | " x\t" | 6
+		 | "\tx\f" | 7 | "\fx\v" | 8
+		 | "\vx\n" | 9 | "\nx\r" | 10
+		 | "\rx"
+		 | endl | endl;
+
+	sout | "override opening/closing delimiters" | endl;
+	sout | "x ( " | 1 | " ) x" | 2 | " , x" | 3 | " :x: " | 4 | endl;
+	sout | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa io1.c" //
+// End: //
Index: tests/io2.c
===================================================================
--- tests/io2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/io2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,137 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// io2.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Mar  2 16:56:02 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu May 24 21:17:41 2018
+// Update Count     : 103
+//
+
+#include <fstream.hfa>
+
+ #define xstr(s) str(s)
+#define str(s) #s
+
+int main() {
+	_Bool b;											// basic types
+	char c;
+	signed char sc;
+	unsigned char usc;
+	short int si;
+	unsigned short int usi;
+	int i;
+	unsigned int ui;
+	long int li;
+	unsigned long int uli;
+	long long int lli;
+	unsigned long long int ulli;
+	float f;
+	double d;
+	long double ld;
+	float _Complex fc;
+	double _Complex dc;
+	long double _Complex ldc;
+	enum { size = 10 };
+	char s1[size], s2[size];
+
+	ifstream in = { xstr(IN_DIR) "io.data" };						// create / open file
+
+	sout | "input bacis types" | endl;
+	in	 | b											// boolean
+		 | c | sc | usc									// character
+		 | si | usi | i | ui | li | uli | lli | ulli	// integral
+		 | f | d | ld									// floating point
+		 | fc | dc | ldc								// floating-point complex
+		 | cstr( s1 ) | cstr( s2, size );				// C string, length unchecked and checked
+	sout | endl;
+
+	sout | "output basic types" | endl;
+	sout | b | endl										// boolean
+		 | c | ' ' | sc | ' ' | usc | endl				// character
+		 | si | usi | i | ui | li | uli | lli | ulli | endl // integral
+		 | f | d | ld | endl							// floating point
+		 | fc | dc | ldc | endl;						// complex
+	sout | endl;
+
+	sout | "tuples" | endl;
+	[int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 4, [ 5, 6 ] ];
+	sout | t1 | t2 | endl;								// print tuple
+	sout | endl;
+
+	sout | "toggle separator" | endl;
+	sout | f | "" | d | "" | ld | endl					// floating point without separator
+		 | sepDisable | fc | dc | ldc | endl			// complex without separator
+		 | fc | sepOn | dc | ldc | endl					// local separator add
+		 | sepEnable | fc | dc | ldc | endl				// complex with separator
+		 | fc | sepOff | dc | ldc | endl				// local separator removal
+		 | s1 | sepOff | s2 | endl						// local separator removal
+		 | s1 | "" | s2 | endl;							// local separator removal
+	sout | endl;
+
+	sout | "change separator" | endl;
+	sout | "from \"" | sep | "\"";
+	sepSet( sout, ", $" );								// change separator, maximum of 15 characters
+	sout | " to \"" | sep | "\"" | endl;
+	sout | f | d | ld | endl
+		 | fc | dc | ldc | endl
+		 | s1 | s2 | endl
+		 | t1 | t2 | endl;								// print tuple
+	sout | endl;
+	sout | "from \"" | sep | "\" ";
+	sepSet( sout, " " );								// restore separator
+	sout | "to \"" | sep | "\"" | endl;
+	sout | f | d | ld | endl
+		 | fc | dc | ldc | endl
+		 | s1 | s2 | endl
+		 | t1 | t2 | endl;								// print tuple
+	sout | endl;
+
+	sout | "check sepOn/sepOff" | endl;
+	sout | sepOn | 1 | 2 | 3 | sepOn | endl;			// no separator at start/end of line
+	sout | 1 | sepOff | 2 | 3 | endl;					// locally turn off implicit separator
+	sout | sepOn | sepOn | 1 | 2 | 3 | sepOn | sepOff | sepOn | '\n'; // no separator at start/end of line
+	sout | 1 | 2 | 3 | "\n\n" | sepOn;					// no separator at start of next line
+	sout | 1 | 2 | 3 | endl;
+	sout | endl;
+
+	sout | "check enable/disable" | endl;
+	sout | sepDisable | 1 | 2 | 3 | endl;				// globally turn off implicit separation
+	sout | 1 | sepOn | 2 | 3 | endl;					// locally turn on implicit separator
+	sout | sepEnable | 1 | 2 | 3 | endl | sepDisable;	// globally turn on/off implicit separation
+	sout | 1 | 2 | 3 | endl | sepEnable;				// globally turn on implicit separation
+	sout | 1 | 2 | 3 | sepOn | sepDisable | endl;		// ignore seperate at end of line
+	sout | 1 | 2 | 3 | sepOn | sepEnable | endl;		// separator at end of line
+	sout | 1 | 2 | 3 | endl;
+	sout | endl;
+
+//	sout | fmt( d, "%8.3f" ) || endl;
+//	sout | endl;
+
+	sepSetTuple( sout, " " );							// set tuple separator from ", " to " "
+	sout | t1 | t2 | " \"" | sep | "\"" | endl;
+	sepSetTuple( sout, ", " );							// reset tuple separator to ", "
+	sout | t1 | t2 | " \"" | sep | "\"" | endl;
+	sout | t1 | t2 | endl;								// print tuple
+	sout | endl;
+
+	[int, int, const char *, double] t3 = { 3, 4, "a", 7.2 };
+	sout | [ 3, 4, "a", 7.2 ] | endl;
+	sout | t3 | endl;
+	sepSetTuple( sout, " " );
+	sout | t3 | endl;
+	sout | sepOn | t3 | sepDisable | t3 | sepEnable | t3 | endl;
+	sepSet( sout, "^" );
+	sepSetTuple( sout, "-" );
+	sout | t3 | 3 | 4 | t3 | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa io2.c" //
+// End: //
Index: tests/labelledExit.c
===================================================================
--- tests/labelledExit.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/labelledExit.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,162 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// labelledExit.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 10 07:29:39 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 16 08:55:39 2018
+// Update Count     : 3
+// 
+
+int foo() {
+  	int i;
+  	int x, y;
+
+  	x = 0; y = 0;
+
+  	// block, labelled exits
+
+  Block: {
+  		if ( x == y ) {
+  			for ( ; i < y; ) {
+  				y += 1;
+  				if ( y < 10 ) break Block;
+  			}
+  		}
+  	}
+
+  	// loops, labelled exits
+
+  w1: while ( y == 10 );
+
+  w2: while ( x < 10 ) {
+  		while (y < 5 ) {
+  			if ( y == 3 ) break w2;
+  		}
+  		x += 1;
+  	}
+
+  A: for ( i = 0; i < 10; i += 1 ) {
+  	  B: for ( i = 0; i < 10; i += 1 ) {
+  		  C: for ( i = 0; i < 10; i += 1 ) {
+  				goto A;
+  				goto B;
+  				goto C;
+  				continue A;
+  				continue B;
+  				continue C;
+  				continue;
+  				break A;
+  				break B;
+  				break C;
+  				break;
+  			}
+  		}
+  	}
+
+  D: for () {
+  		break D;
+  		continue D;
+  	}
+
+  Z : i += 1;
+  	goto Z;
+  X: Y: for () {
+  		i += 1;
+  		if ( i > 5 ) continue X;
+  		if ( i < 5 ) break X;
+  		if ( i < 5 ) break Y;
+  		break;
+  	}
+  XX: for () {
+  	  YY: for () {
+  		  ZZ: for () {
+  				i += 1;
+  				if ( i > 5 ) continue XX;
+  				if ( i < 5 ) continue YY;
+  				if ( i < 5 ) continue ZZ;
+  				if ( i > 5 ) break XX;
+  				if ( i < 5 ) break YY;
+  				if ( i < 5 ) break ZZ;
+  				break;
+  			}
+  		}
+  	}
+
+  	for () ;
+  	for ( int i = 0 ;; ) ;
+  	for (  ; i < 0; ) ;
+  	for (  ; ; i += 1 ) ;
+  L0:  L1:  L2:  L3:  L4:  L5:  L6:  L7:  L8:  L9:
+  L10: L11: L12: L13: L14: L15: L16: L17: L18: L19:
+  L20: L21: L22: L23: L24: L25: L26: L27: L28: L29:
+  L31: L32: L33: L34:
+  	for () {
+  		break L0;
+  	}
+
+  	// switch/choose, labelled exits
+
+  Switch: switch ( i ) {
+  	  default:
+  		i += 1;
+  	  case 0:
+  		i += 1;
+  		break Switch;
+  	  case 1:
+  		switch ( i ) {
+  		  case 0:
+  			break Switch;
+  		  default:
+  			; break;
+  		}
+  	}
+
+  Choose: choose ( i ) {
+  	  default:
+  		i += 1;
+  	  case 0:
+  		i += 1;
+  		break Choose;
+  	  case 1:
+  		choose ( i ) {
+  		  case 0:
+  			break;
+  		  default:
+  			break Choose;
+  		}
+  		fallthru;
+  	  case 2:
+  		i += 1;
+  	}
+
+	// computed goto
+	// {
+	// 	void *array[] = { &&foo, &&bar, &&hack };
+	//   foo: bar: hack:
+	// 	&&foo;
+	// 	&&bar;
+	// 	goto *array[i];
+	// }
+
+  Q: if ( i > 5 ) {
+		i += 1;
+		break Q;
+	}
+	else
+		i += 1;
+}
+
+int main( int argc, char const *argv[] ) {
+	/* code */
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa labelledExit.c" //
+// End: //
Index: tests/limits.c
===================================================================
--- tests/limits.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/limits.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,156 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// limits.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue May 10 20:44:20 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Mar  1 16:21:55 2018
+// Update Count     : 7
+//
+
+#include <limits.hfa>
+
+// Integral Constants
+
+signed char m = MIN;
+unsigned char m = MIN;
+short int m = MIN;
+unsigned short int m = MIN;
+int m = MIN;
+unsigned int m = MIN;
+long int m = MIN;
+unsigned long int m = MIN;
+long long int m = MIN;
+unsigned long long int m = MIN;
+
+signed char M = MAX;
+unsigned char M = MAX;
+short int M = MAX;
+unsigned short int M = MAX;
+int M = MAX;
+unsigned int M = MAX;
+long int M = MAX;
+unsigned long int M = MAX;
+long long int M = MAX;
+unsigned long long int M = MAX;
+
+// Floating-Point Constants
+
+float m = MIN;
+double m = MIN;
+long double m = MIN;
+float _Complex m = MIN;
+double _Complex m = MIN;
+long double _Complex m = MIN;
+
+float M = MAX;
+double M = MAX;
+long double M = MAX;
+float _Complex M = MAX;
+double _Complex M = MAX;
+long double _Complex M = MAX;
+
+float pi = PI;
+float pi_2 = PI_2;
+float pi_4 = PI_4;
+float _1_pi = _1_PI;
+float _2_pi = _2_PI;
+float _2_sqrt_pi = _2_SQRT_PI;
+
+double pi = PI;
+double pi_2 = PI_2;
+double pi_4 = PI_4;
+double _1_pi = _1_PI;
+double _2_pi = _2_PI;
+double _2_SQRT_pi = _2_SQRT_PI;
+
+long double pi = PI;
+long double pi_2 = PI_2;
+long double pi_4 = PI_4;
+long double _1_pi = _1_PI;
+long double _2_pi = _2_PI;
+long double _2_sqrt_pi = _2_SQRT_PI;
+
+float _Complex pi = PI;
+float _Complex pi_2 = PI_2;
+float _Complex pi_4 = PI_4;
+float _Complex _1_pi = _1_PI;
+float _Complex _2_pi = _2_PI;
+float _Complex _2_sqrt_pi = _2_SQRT_PI;
+
+double _Complex pi = PI;
+double _Complex pi_2 = PI_2;
+double _Complex pi_4 = PI_4;
+double _Complex _1_pi = _1_PI;
+double _Complex _2_pi = _2_PI;
+double _Complex _2_sqrt_pi = _2_SQRT_PI;
+
+long double _Complex pi = PI;
+long double _Complex pi_2 = PI_2;
+long double _Complex pi_4 = PI_4;
+long double _Complex _1_pi = _1_PI;
+long double _Complex _2_pi = _2_PI;
+long double _Complex _2_sqrt_pi = _2_SQRT_PI;
+
+float e = E;
+float log2_e = LOG2_E;
+float log10_e = LOG10_E;
+float ln_2 = LN_2;
+float ln_10 = LN_10;
+float sqrt_2 = SQRT_2;
+float _1_sqrt_2 = _1_SQRT_2;
+
+double e = E;
+double log2_e = LOG2_E;
+double log10_e = LOG10_E;
+double ln_2 = LN_2;
+double ln_10 = LN_10;
+double sqrt_2 = SQRT_2;
+double _1_sqrt_2 = _1_SQRT_2;
+
+long double e = E;
+long double log2_e = LOG2_E;
+long double log10_e = LOG10_E;
+long double ln_2 = LN_2;
+long double ln_10 = LN_10;
+long double sqrt_2 = SQRT_2;
+long double _1_sqrt_2 = _1_SQRT_2;
+
+float _Complex e = E;
+float _Complex log2_e = LOG2_E;
+float _Complex log10_e = LOG10_E;
+float _Complex ln_2 = LN_2;
+float _Complex ln_10 = LN_10;
+float _Complex sqrt_2 = SQRT_2;
+float _Complex _1_sqrt_2 = _1_SQRT_2;
+
+double _Complex e = E;
+double _Complex log2_e = LOG2_E;
+double _Complex log10_e = LOG10_E;
+double _Complex ln_2 = LN_2;
+double _Complex ln_10 = LN_10;
+double _Complex sqrt_2 = SQRT_2;
+double _Complex _1_sqrt_2 = _1_SQRT_2;
+
+long double _Complex e = E;
+long double _Complex log2_e = LOG2_E;
+long double _Complex log10_e = LOG10_E;
+long double _Complex ln_2 = LN_2;
+long double _Complex ln_10 = LN_10;
+long double _Complex sqrt_2 = SQRT_2;
+long double _Complex _1_sqrt_2 = _1_SQRT_2;
+
+int main(int argc, char const *argv[]) {
+	//DUMMY
+	return 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa limits.c" //
+// End: //
Index: tests/literals.c
===================================================================
--- tests/literals.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/literals.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,327 @@
+//
+// 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.
+//
+// literals.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Sat Sep  9 16:34:38 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Jul  1 15:12:15 2018
+// Update Count     : 137
+//
+
+#ifdef __CFA__
+#include <stdint.h>
+#include <fstream.hfa>
+
+void f( char v ) { sout | "char " | v | endl; }
+void f( signed char v ) { sout | "signed char " | v | endl; }
+void f( unsigned char v ) { sout | "unsigned char " | v | endl; }
+void f( signed short v ) { sout | "signed short int" | v | endl; }
+void f( unsigned short v ) { sout | "unsigned short int" | v | endl; }
+void f( size_t v ) { sout | "size_t" | v | endl; }
+#endif // __CFA__
+
+//#define ERROR
+
+int main() {
+// integer literals
+
+	// binary
+	 0b01101011;   0b01101011u;   0b01101011l;   0b01101011ll;   0b01101011ul;   0b01101011lu;   0b01101011ull;   0b01101011llu;
+	+0b01101011;  +0b01101011u;  +0b01101011l;  +0b01101011ll;  +0b01101011ul;  +0b01101011lu;  +0b01101011ull;  +0b01101011llu;
+	-0b01101011;  -0b01101011u;  -0b01101011l;  -0b01101011ll;  -0b01101011ul;  -0b01101011lu;  -0b01101011ull;  -0b01101011llu;
+
+	// octal
+	 01234567;   01234567u;   01234567l;   01234567ll;   01234567ul;   01234567lu;   01234567ull;   01234567llu;
+	+01234567;  +01234567u;  +01234567l;  +01234567ll;  +01234567ul;  +01234567lu;  +01234567ull;  +01234567llu;
+	-01234567;  -01234567u;  -01234567l;  -01234567ll;  -01234567ul;  -01234567lu;  -01234567ull;  -01234567llu;
+
+	// decimal
+	 1234567890;   1234567890u;   1234567890l;   1234567890ll;   1234567890ul;   1234567890lu;   1234567890ull;   1234567890llu;
+	+1234567890;  +1234567890u;  +1234567890l;  +1234567890ll;  +1234567890ul;  +1234567890lu;  +1234567890ull;  +1234567890llu;
+	-1234567890;  -1234567890u;  -1234567890l;  -1234567890ll;  -1234567890ul;  -1234567890lu;  -1234567890ull;  -1234567890llu;
+
+	// hexadecimal
+	 0x0123456789abcdef;   0x0123456789abcdefu;   0x0123456789abcdefl;   0x0123456789abcdefll;   0x0123456789abcdeful;   0x0123456789abcdeflu;   0x0123456789abcdefull;   0x0123456789abcdefllu;
+	+0x0123456789abcdef;  +0x0123456789abcdefu;  +0x0123456789abcdefl;  +0x0123456789abcdefll;  +0x0123456789abcdeful;  +0x0123456789abcdeflu;  +0x0123456789abcdefull;  +0x0123456789abcdefllu;
+	-0x0123456789abcdef;  -0x0123456789abcdefu;  -0x0123456789abcdefl;  -0x0123456789abcdefll;  -0x0123456789abcdeful;  -0x0123456789abcdeflu;  -0x0123456789abcdefull;  -0x0123456789abcdefllu;
+
+	 0x0123456789ABCDEF;   0x0123456789ABCDEFu;   0x0123456789ABCDEFl;   0x0123456789ABCDEFll;   0x0123456789ABCDEFul;   0x0123456789ABCDEFlu;   0x0123456789ABCDEFull;   0x0123456789ABCDEFllu;
+	+0x0123456789ABCDEF;  +0x0123456789ABCDEFu;  +0x0123456789ABCDEFl;  +0x0123456789ABCDEFll;  +0x0123456789ABCDEFul;  +0x0123456789ABCDEFlu;  +0x0123456789ABCDEFull;  +0x0123456789ABCDEFllu;
+	-0x0123456789ABCDEF;  -0x0123456789ABCDEFu;  -0x0123456789ABCDEFl;  -0x0123456789ABCDEFll;  -0x0123456789ABCDEFul;  -0x0123456789ABCDEFlu;  -0x0123456789ABCDEFull;  -0x0123456789ABCDEFllu;
+
+	 0X0123456789abcdef;   0X0123456789abcdefu;   0X0123456789abcdefl;   0X0123456789abcdefll;   0X0123456789abcdeful;   0X0123456789abcdeflu;   0X0123456789abcdefull;   0X0123456789abcdefllu;
+	+0X0123456789abcdef;  +0X0123456789abcdefu;  +0X0123456789abcdefl;  +0X0123456789abcdefll;  +0X0123456789abcdeful;  +0X0123456789abcdeflu;  +0X0123456789abcdefull;  +0X0123456789abcdefllu;
+	-0X0123456789abcdef;  -0X0123456789abcdefu;  -0X0123456789abcdefl;  -0X0123456789abcdefll;  -0X0123456789abcdeful;  -0X0123456789abcdeflu;  -0X0123456789abcdefull;  -0X0123456789abcdefllu;
+
+	 0X0123456789ABCDEF;   0X0123456789ABCDEFu;   0X0123456789ABCDEFl;   0X0123456789ABCDEFll;   0X0123456789ABCDEFul;   0X0123456789ABCDEFlu;   0X0123456789ABCDEFull;   0X0123456789ABCDEFllu;
+	+0X0123456789ABCDEF;  +0X0123456789ABCDEFu;  +0X0123456789ABCDEFl;  +0X0123456789ABCDEFll;  +0X0123456789ABCDEFul;  +0X0123456789ABCDEFlu;  +0X0123456789ABCDEFull;  +0X0123456789ABCDEFllu;
+	-0X0123456789ABCDEF;  -0X0123456789ABCDEFu;  -0X0123456789ABCDEFl;  -0X0123456789ABCDEFll;  -0X0123456789ABCDEFul;  -0X0123456789ABCDEFlu;  -0X0123456789ABCDEFull;  -0X0123456789ABCDEFllu;
+
+// decimal floating literals
+
+	 0123456789.;   0123456789.f;   0123456789.l;   0123456789.F;   0123456789.L;   0123456789.DL;
+	+0123456789.;  +0123456789.f;  +0123456789.l;  +0123456789.F;  +0123456789.L;  +0123456789.DL;
+	-0123456789.;  -0123456789.f;  -0123456789.l;  -0123456789.F;  -0123456789.L;  -0123456789.DL;
+
+	 0123456789.e09;   0123456789.e09f;   0123456789.e09l;   0123456789.e09F;   0123456789.e09L;   0123456789.e09DL;
+	+0123456789.e09;  +0123456789.e09f;  +0123456789.e09l;  +0123456789.e09F;  +0123456789.e09L;  +0123456789.e09DL;
+	-0123456789.e09;  -0123456789.e09f;  -0123456789.e09l;  -0123456789.e09F;  -0123456789.e09L;  -0123456789.e09DL;
+
+	 0123456789.e+09;   0123456789.e+09f;   0123456789.e+09l;   0123456789.e+09F;   0123456789.e+09L;   0123456789.e+09DL;
+	+0123456789.e+09;  +0123456789.e+09f;  +0123456789.e+09l;  +0123456789.e+09F;  +0123456789.e+09L;  +0123456789.e+09DL;
+	-0123456789.e+09;  -0123456789.e+09f;  -0123456789.e+09l;  -0123456789.e+09F;  -0123456789.e+09L;  -0123456789.e+09DL;
+
+	 0123456789.e-09;   0123456789.e-09f;   0123456789.e-09l;   0123456789.e-09F;   0123456789.e-09L;   0123456789.e-09DL;
+	+0123456789.e-09;  +0123456789.e-09f;  +0123456789.e-09l;  +0123456789.e-09F;  +0123456789.e-09L;  +0123456789.e-09DL;
+	-0123456789.e-09;  -0123456789.e-09f;  -0123456789.e-09l;  -0123456789.e-09F;  -0123456789.e-09L;  -0123456789.e-09DL;
+
+	 .0123456789;   .0123456789f;   .0123456789l;   .0123456789F;   .0123456789L;   .0123456789DL;
+	+.0123456789;  +.0123456789f;  +.0123456789l;  +.0123456789F;  +.0123456789L;  +.0123456789DL;
+	-.0123456789;  -.0123456789f;  -.0123456789l;  -.0123456789F;  -.0123456789L;  -.0123456789DL;
+
+	 .0123456789e09;   .0123456789e09f;   .0123456789e09l;   .0123456789e09F;   .0123456789e09L;   .0123456789e09DL;
+	+.0123456789e09;  +.0123456789e09f;  +.0123456789e09l;  +.0123456789e09F;  +.0123456789e09L;  +.0123456789e09DL;
+	-.0123456789e09;  -.0123456789e09f;  -.0123456789e09l;  -.0123456789e09F;  -.0123456789e09L;  -.0123456789e09DL;
+
+	 .0123456789E+09;   .0123456789E+09f;   .0123456789E+09l;   .0123456789E+09F;   .0123456789E+09L;   .0123456789E+09DL;
+	+.0123456789E+09;  +.0123456789E+09f;  +.0123456789E+09l;  +.0123456789E+09F;  +.0123456789E+09L;  +.0123456789E+09DL;
+	-.0123456789E+09;  -.0123456789E+09f;  -.0123456789E+09l;  -.0123456789E+09F;  -.0123456789E+09L;  -.0123456789E+09DL;
+
+	 .0123456789E-09;   .0123456789E-09f;   .0123456789E-09l;   .0123456789E-09F;   .0123456789E-09L;   .0123456789E-09DL;
+	-.0123456789E-09;  -.0123456789E-09f;  -.0123456789E-09l;  -.0123456789E-09F;  -.0123456789E-09L;  -.0123456789E-09DL;
+	-.0123456789E-09;  -.0123456789E-09f;  -.0123456789E-09l;  -.0123456789E-09F;  -.0123456789E-09L;  -.0123456789E-09DL;
+
+	 0123456789.0123456789;   0123456789.0123456789f;   0123456789.0123456789l;   0123456789.0123456789F;   0123456789.0123456789L;   0123456789.0123456789DL;
+	+0123456789.0123456789;  +0123456789.0123456789f;  +0123456789.0123456789l;  +0123456789.0123456789F;  +0123456789.0123456789L;  +0123456789.0123456789DL;
+	-0123456789.0123456789;  -0123456789.0123456789f;  -0123456789.0123456789l;  -0123456789.0123456789F;  -0123456789.0123456789L;  -0123456789.0123456789DL;
+
+	 0123456789.0123456789E09;   0123456789.0123456789E09f;   0123456789.0123456789E09l;   0123456789.0123456789E09F;   0123456789.0123456789E09L;   0123456789.0123456789E09DL;
+	+0123456789.0123456789E09;  +0123456789.0123456789E09f;  +0123456789.0123456789E09l;  +0123456789.0123456789E09F;  +0123456789.0123456789E09L;  +0123456789.0123456789E09DL;
+	-0123456789.0123456789E09;  -0123456789.0123456789E09f;  -0123456789.0123456789E09l;  -0123456789.0123456789E09F;  -0123456789.0123456789E09L;  -0123456789.0123456789E09DL;
+
+	 0123456789.0123456789E+09;   0123456789.0123456789E+09f;   0123456789.0123456789E+09l;   0123456789.0123456789E+09F;   0123456789.0123456789E+09L;   0123456789.0123456789E+09DL;
+	+0123456789.0123456789E+09;  +0123456789.0123456789E+09f;  +0123456789.0123456789E+09l;  +0123456789.0123456789E+09F;  +0123456789.0123456789E+09L;  +0123456789.0123456789E+09DL;
+	-0123456789.0123456789E+09;  -0123456789.0123456789E+09f;  -0123456789.0123456789E+09l;  -0123456789.0123456789E+09F;  -0123456789.0123456789E+09L;  -0123456789.0123456789E+09DL;
+
+	 0123456789.0123456789E-09;   0123456789.0123456789E-09f;   0123456789.0123456789E-09l;   0123456789.0123456789E-09F;   0123456789.0123456789E-09L;   0123456789.0123456789E-09DL;
+	+0123456789.0123456789E-09;  +0123456789.0123456789E-09f;  +0123456789.0123456789E-09l;  +0123456789.0123456789E-09F;  +0123456789.0123456789E-09L;  +0123456789.0123456789E-09DL;
+	-0123456789.0123456789E-09;  -0123456789.0123456789E-09f;  -0123456789.0123456789E-09l;  -0123456789.0123456789E-09F;  -0123456789.0123456789E-09L;  -0123456789.0123456789E-09DL;
+
+// hexadecimal floating literals, must have exponent
+
+	 0x0123456789.p09;   0x0123456789.p09f;   0x0123456789.p09l;   0x0123456789.p09F;   0x0123456789.p09L;
+	+0x0123456789.p09;  +0x0123456789.p09f;  +0x0123456789.p09l;  +0x0123456789.p09F;  +0x0123456789.p09L;
+	-0x0123456789.p09;  -0x0123456789.p09f;  -0x0123456789.p09l;  -0x0123456789.p09F;  -0x0123456789.p09L;
+
+	 0x0123456789.p+09;   0x0123456789.p+09f;   0x0123456789.p+09l;   0x0123456789.p+09F;   0x0123456789.p+09L;
+	+0x0123456789.p+09;  +0x0123456789.p+09f;  +0x0123456789.p+09l;  +0x0123456789.p+09F;  +0x0123456789.p+09L;
+	-0x0123456789.p+09;  -0x0123456789.p+09f;  -0x0123456789.p+09l;  -0x0123456789.p+09F;  -0x0123456789.p+09L;
+
+	 0x0123456789.p-09;   0x0123456789.p-09f;   0x0123456789.p-09l;   0x0123456789.p-09F;   0x0123456789.p-09L;
+	+0x0123456789.p-09;  +0x0123456789.p-09f;  +0x0123456789.p-09l;  +0x0123456789.p-09F;  +0x0123456789.p-09L;
+	-0x0123456789.p-09;  -0x0123456789.p-09f;  -0x0123456789.p-09l;  -0x0123456789.p-09F;  -0x0123456789.p-09L;
+
+	 0x.0123456789p09;   0x.0123456789p09f;   0x.0123456789p09l;   0x.0123456789p09F;   0x.0123456789p09L;
+	+0x.0123456789p09;  +0x.0123456789p09f;  +0x.0123456789p09l;  +0x.0123456789p09F;  +0x.0123456789p09L;
+	-0x.0123456789p09;  -0x.0123456789p09f;  -0x.0123456789p09l;  -0x.0123456789p09F;  -0x.0123456789p09L;
+
+	 0x.0123456789p+09;   0x.0123456789p+09f;   0x.0123456789p+09l;   0x.0123456789p+09F;   0x.0123456789p+09L;
+	+0x.0123456789p+09;  +0x.0123456789p+09f;  +0x.0123456789p+09l;  +0x.0123456789p+09F;  +0x.0123456789p+09L;
+	-0x.0123456789p+09;  -0x.0123456789p+09f;  -0x.0123456789p+09l;  -0x.0123456789p+09F;  -0x.0123456789p+09L;
+
+	 0x.0123456789P-09;   0x.0123456789P-09f;   0x.0123456789P-09l;   0x.0123456789P-09F;   0x.0123456789P-09L;
+	+0x.0123456789P-09;  +0x.0123456789P-09f;  +0x.0123456789P-09l;  +0x.0123456789P-09F;  +0x.0123456789P-09L;
+	-0x.0123456789P-09;  -0x.0123456789P-09f;  -0x.0123456789P-09l;  -0x.0123456789P-09F;  -0x.0123456789P-09L;
+
+	 0X0123456789.0123456789P09;   0X0123456789.0123456789P09f;   0X0123456789.0123456789P09l;   0X0123456789.0123456789P09F;   0X0123456789.0123456789P09L;
+	+0X0123456789.0123456789P09;  +0X0123456789.0123456789P09f;  +0X0123456789.0123456789P09l;  +0X0123456789.0123456789P09F;  +0X0123456789.0123456789P09L;
+	-0X0123456789.0123456789P09;  -0X0123456789.0123456789P09f;  -0X0123456789.0123456789P09l;  -0X0123456789.0123456789P09F;  -0X0123456789.0123456789P09L;
+
+	 0X0123456789.0123456789P+09;   0X0123456789.0123456789P+09f;   0X0123456789.0123456789P+09l;   0X0123456789.0123456789P+09F;   0X0123456789.0123456789P+09L;
+	+0X0123456789.0123456789P+09;  +0X0123456789.0123456789P+09f;  +0X0123456789.0123456789P+09l;  +0X0123456789.0123456789P+09F;  +0X0123456789.0123456789P+09L;
+	-0X0123456789.0123456789P+09;  -0X0123456789.0123456789P+09f;  -0X0123456789.0123456789P+09l;  -0X0123456789.0123456789P+09F;  -0X0123456789.0123456789P+09L;
+
+	 0X0123456789.0123456789P-09;   0X0123456789.0123456789P-09f;   0X0123456789.0123456789P-09l;   0X0123456789.0123456789P-09F;   0X0123456789.0123456789P-09L;
+	+0X0123456789.0123456789P-09;  +0X0123456789.0123456789P-09f;  +0X0123456789.0123456789P-09l;  +0X0123456789.0123456789P-09F;  +0X0123456789.0123456789P-09L;
+	-0X0123456789.0123456789P-09;  -0X0123456789.0123456789P-09f;  -0X0123456789.0123456789P-09l;  -0X0123456789.0123456789P-09F;  -0X0123456789.0123456789P-09L;
+
+#ifdef __CFA__
+// fixed-size length
+
+	// binary
+	 0b01101011_l8;   0b01101011_l16;   0b01101011_l32;   0b01101011_l64;   0b01101011_l8u;   0b01101011_ul16;   0b01101011_l32u;   0b01101011_ul64;
+	+0b01101011_l8;  +0b01101011_l16;  +0b01101011_l32;  +0b01101011_l64;  +0b01101011_l8u;  +0b01101011_ul16;  +0b01101011_l32u;  +0b01101011_ul64;
+	-0b01101011_l8;  -0b01101011_l16;  -0b01101011_l32;  -0b01101011_l64;  -0b01101011_l8u;  -0b01101011_ul16;  -0b01101011_l32u;  -0b01101011_ul64;
+
+#ifdef __LP64__ // 64-bit processor
+	0b01101011_l128;   0b01101011_ul128;
+	+0b01101011_l128;  +0b01101011_ul128;
+	-0b01101011_l128;  -0b01101011_ul128;
+#endif // __LP64__
+
+	// octal
+	 01234567_l8;   01234567_l16;   01234567_l32;   01234567_l64;   01234567_l8u;   01234567_ul16;   01234567_l32u;   01234567_ul64;
+	+01234567_l8;  +01234567_l16;  +01234567_l32;  +01234567_l64;  +01234567_l8u;  +01234567_ul16;  +01234567_l32u;  +01234567_ul64;
+	-01234567_l8;  -01234567_l16;  -01234567_l32;  -01234567_l64;  -01234567_l8u;  -01234567_ul16;  -01234567_l32u;  -01234567_ul64;
+
+#ifdef __LP64__ // 64-bit processor
+	01234567_l128;   01234567_ul128;
+	+01234567_l128;  +01234567_ul128;
+	-01234567_l128;  -01234567_ul128;
+#endif // __LP64__
+
+	// decimal
+	 1234567890L8;   1234567890L16;   1234567890l32;   1234567890l64;   1234567890UL8;   1234567890L16U;   1234567890Ul32;   1234567890l64u;
+	+1234567890L8;  +1234567890L16;  +1234567890l32;  +1234567890l64;  +1234567890UL8;  +1234567890L16U;  +1234567890Ul32;  +1234567890l64u;
+	-1234567890L8;  -1234567890L16;  -1234567890l32;  -1234567890l64;  -1234567890UL8;  -1234567890L16U;  -1234567890Ul32;  -1234567890l64u;
+
+#ifdef __LP64__ // 64-bit processor
+	1234567890l128;   1234567890l128u;
+	+1234567890l128;  +1234567890l128u;
+	-1234567890l128;  -1234567890l128u;
+#endif // __LP64__
+
+	// hexadecimal
+	 0x0123456789abcdef_l8;   0x0123456789abcdef_l16;   0x0123456789abcdefl32;   0x0123456789abcdefl64;   0x0123456789abcdef_ul8;   0x0123456789abcdef_l16u;   0x0123456789abcdeful32;   0x0123456789abcdefl64u;
+	+0x0123456789abcdef_l8;  +0x0123456789abcdef_l16;  +0x0123456789abcdefl32;  +0x0123456789abcdefl64;  +0x0123456789abcdef_ul8;  +0x0123456789abcdef_l16u;  +0x0123456789abcdeful32;  +0x0123456789abcdefl64u;
+	-0x0123456789abcdef_l8;  -0x0123456789abcdef_l16;  -0x0123456789abcdefl32;  -0x0123456789abcdefl64;  -0x0123456789abcdef_ul8;  -0x0123456789abcdef_l16u;  -0x0123456789abcdeful32;  -0x0123456789abcdefl64u;
+
+	 0x0123456789ABCDEF_l8;   0x0123456789ABCDEF_l16;   0x0123456789ABCDEFl32;   0x0123456789ABCDEFl64;   0x0123456789ABCDEF_ul8;   0x0123456789ABCDEF_l16u;   0x0123456789ABCDEFul32;   0x0123456789ABCDEFl64u;
+	+0x0123456789ABCDEF_l8;  +0x0123456789ABCDEF_l16;  +0x0123456789ABCDEFl32;  +0x0123456789ABCDEFl64;  +0x0123456789ABCDEF_ul8;  +0x0123456789ABCDEF_l16u;  +0x0123456789ABCDEFul32;  +0x0123456789ABCDEFl64u;
+	-0x0123456789ABCDEF_l8;  -0x0123456789ABCDEF_l16;  -0x0123456789ABCDEFl32;  -0x0123456789ABCDEFl64;  -0x0123456789ABCDEF_ul8;  -0x0123456789ABCDEF_l16u;  -0x0123456789ABCDEFul32;  -0x0123456789ABCDEFl64u;
+
+	 0X0123456789abcdef_l8;   0X0123456789abcdef_l16;   0X0123456789abcdefl32;   0X0123456789abcdefl64;   0X0123456789abcdef_ul8;   0X0123456789abcdef_l16u;   0X0123456789abcdeful32;   0X0123456789abcdefl64u;
+	+0X0123456789abcdef_l8;  +0X0123456789abcdef_l16;  +0X0123456789abcdefl32;  +0X0123456789abcdefl64;  +0X0123456789abcdef_ul8;  +0X0123456789abcdef_l16u;  +0X0123456789abcdeful32;  +0X0123456789abcdefl64u;
+	-0X0123456789abcdef_l8;  -0X0123456789abcdef_l16;  -0X0123456789abcdefl32;  -0X0123456789abcdefl64;  -0X0123456789abcdef_ul8;  -0X0123456789abcdef_l16u;  -0X0123456789abcdeful32;  -0X0123456789abcdefl64u;
+
+	 0X0123456789ABCDEF_l8;   0X0123456789ABCDEF_l16;   0X0123456789ABCDEFl32;   0X0123456789ABCDEFl64;   0X0123456789ABCDEF_ul8;   0X0123456789ABCDEF_l16u;   0X0123456789ABCDEFul32;   0X0123456789ABCDEFl64u;
+	+0X0123456789ABCDEF_l8;  +0X0123456789ABCDEF_l16;  +0X0123456789ABCDEFl32;  +0X0123456789ABCDEFl64;  +0X0123456789ABCDEF_ul8;  +0X0123456789ABCDEF_l16u;  +0X0123456789ABCDEFul32;  +0X0123456789ABCDEFl64u;
+	-0X0123456789ABCDEF_l8;  -0X0123456789ABCDEF_l16;  -0X0123456789ABCDEFl32;  -0X0123456789ABCDEFl64;  -0X0123456789ABCDEF_ul8;  -0X0123456789ABCDEF_l16u;  -0X0123456789ABCDEFul32;  -0X0123456789ABCDEFl64u;
+
+	// floating
+	 0123456789.l32;   0123456789.l64;   0123456789.l80;   0123456789.l128;
+	+0123456789.l32;  +0123456789.l64;  +0123456789.l80;  +0123456789.l128;
+	-0123456789.l32;  -0123456789.l64;  -0123456789.l80;  -0123456789.l128;
+
+	 0123456789.e09L32;    0123456789.e09L64;    0123456789.e09L80;    0123456789.e09L128;
+	+0123456789.e+09L32;  +0123456789.e+09L64;  +0123456789.e+09L80;  +0123456789.e+09L128;
+	-0123456789.e-09L32;  -0123456789.e-09L64;  -0123456789.e-09L80;  -0123456789.e-09L128;
+
+	 .0123456789e09L32;    .0123456789e09L64;    .0123456789e09L80;    .0123456789e09L128;
+	+.0123456789E+09L32;  +.0123456789E+09L64;  +.0123456789E+09L80;  +.0123456789E+09L128;
+	-.0123456789E-09L32;  -.0123456789E-09L64;  -.0123456789E-09L80;  -.0123456789E-09L128;
+
+	 0123456789.0123456789L32;       0123456789.0123456789L64;       0123456789.0123456789L80;       0123456789.0123456789L128;
+	+0123456789.0123456789E09L32;   +0123456789.0123456789E09L64;   +0123456789.0123456789E09L80;   +0123456789.0123456789E09L128;
+	-0123456789.0123456789E+09L32;  -0123456789.0123456789E+09L64;  -0123456789.0123456789E+09L80;  -0123456789.0123456789E+09L128;
+	 0123456789.0123456789E-09L32;   0123456789.0123456789E-09L64;   0123456789.0123456789E-09L80;   0123456789.0123456789E-09L128;
+
+	 0x0123456789.p09l32;   0x0123456789.p09l64;   0x0123456789.p09l80;   0x0123456789.p09l128;
+	+0x0123456789.p09l32;  +0x0123456789.p09l64;  +0x0123456789.p09l80;  +0x0123456789.p09l128;
+	-0x0123456789.p09l32;  -0x0123456789.p09l64;  -0x0123456789.p09l80;  -0x0123456789.p09l128;
+
+	 0x0123456789.p+09l32;   0x0123456789.p+09L64;   0x0123456789.p+09L80;   0x0123456789.p+09L128;
+	+0x0123456789.p-09l32;  +0x0123456789.p-09L64;  +0x0123456789.p-09L80;  +0x0123456789.p-09L128;
+	-0x.0123456789p09l32;   -0x.0123456789p09L64;   -0x.0123456789p09L80;   -0x.0123456789p09L128;
+
+// char, short, int suffix overloading
+
+	f( 'a' );
+	f( 20_hh );
+	f( 21_hhu );
+	f( 22_h );
+	f( 23_uh );
+	f( 24z );
+#endif // __CFA__
+
+// character literals
+
+	' ';  'a';  '"';  '_';
+	'\'';  '\"';  '\?';  '\\';							// simple escape
+	'\a';  '\b';  '\e'; /* GCC */  '\f';  '\n';  '\r';  '\t';  '\v';
+	'\0'; '\377';										// octal escape
+	'\xf';  '\xff';										// hex escape
+
+	u' ';  u'a';  u'"';  u'_';
+	U' ';  U'a';  U'"';  U'_';
+	L' ';  L'a';  L'"';  L'_';
+
+// warnings/errors
+
+#ifdef ERROR
+	'';													// empty character
+	'aa';												// multi-character
+	'a\na';												// multi-character, embedded escape
+	'a\0a';
+	'\xfff';											// hex escape out of range
+	'_\377_';											// multi-character
+	'_\xff_';
+	'\xffff';											// hex escape out of range
+	'a\xff34w';
+	'\xf_f';											// multi-character
+	'\xff_ff';
+#endif // ERROR
+
+// string literals
+
+	" ";  "a";  "'";  '_';  "abcdefghijklmnopqrstuvwxyz";
+	"";  "aa";  "a\na";  "a\0a";  "_\377_";  "_\xff_";  "\xf_f";
+	"\'";  "\"";  "\?";  "\\";							// simple escape
+	"\a";  "\b";  "\e"; /* GCC */  "\f";  "\n";  "\r";  "\t";  "\v";
+	"\0";  "\377";										// octal escape
+	"\xf";  "\xff";										// hex escape
+
+	u8" ";  u8"a";  u8"'";  u'_';  u8"abcdefghijklmnopqrstuvwxyz";
+	u" ";  u"a";  u"'";  u'_';  u"abcdefghijklmnopqrstuvwxyz";
+	U" ";  U"a";  U"'";  U'_';  U"abcdefghijklmnopqrstuvwxyz";
+	L" ";  L"a";  L"'";  L'_';  L"abcdefghijklmnopqrstuvwxyz";
+
+	"\xFF";  u"\xFFFF";  U"\xFFFFFFFF";  L"\xFFFFFFFF";	// maximum size
+
+	// concatenation
+
+	"\x12" "3";											// 2 characters not 1!
+
+	"a" "b" u8"c";
+	"a" u8"b" "c";
+	"a" u8"b" u8"c";
+	u8"a" "b" u8"c";
+	u8"a" u8"b" u8"c";
+
+	"a" "b" u"c";
+	"a" u"b" "c";
+	"a" u"b" u"c";
+	u"a" "b" u"c";
+	u"a" u"b" u"c";
+
+	"a" "b" U"c";
+	"a" U"b" "c";
+	"a" U"b" U"c";
+	U"a" "b" U"c";
+	U"a" U"b" U"c";
+
+	"a" "b" L"c";
+	"a" L"b" "c";
+	"a" L"b" L"c";
+	L"a" "b" L"c";
+	L"a" L"b" L"c";
+
+// warnings/errors
+
+#ifdef ERROR
+	"\xff_ff";
+	"\xfff";				// hex escape out of range
+	"a\xff34w";
+	"\xffff";
+#endif // ERROR
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa literals.c" //
+// End: //
Index: tests/long_tests.h
===================================================================
--- tests/long_tests.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/long_tests.h	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,21 @@
+#pragma once
+
+#include <unistd.h>
+
+#if   defined(TEST_FOREVER)
+
+static unsigned long long __kick_count = 0;
+#if !defined(__kick_rate)
+#define __kick_rate 5000ul
+#endif
+
+#define TEST(x) 1
+#define KICK_WATCHDOG do { __kick_count++; if(__kick_count > __kick_rate) { write(STDOUT_FILENO, ".", 1); __kick_count = 0; } } while(0)
+
+
+#else
+
+#define TEST(x) x
+#define KICK_WATCHDOG
+
+#endif
Index: tests/math1.c
===================================================================
--- tests/math1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/math1.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,55 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// math1.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Fri Apr 22 14:59:21 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu May 24 21:01:15 2018
+// Update Count     : 85
+//
+
+#include <fstream.hfa>
+#include <math.hfa>
+
+int main( void ) {
+	float f;
+	double d;
+	long double l;
+
+	sout | "fmod:" | 5.0F % -2.0F | fmod( 5.0F, -2.0F ) | 5.0D % -2.0D | fmod( 5.0D, -2.0D ) | 5.0L % -2.0L | fmod( 5.0L, -2.0L ) | endl;
+	sout | "remainder:" | remainder( 2.0F, 3.0F ) | remainder( 2.0D, 3.0D ) | remainder( 2.0L, 3.0L ) | endl;
+	int quot;
+	f = remquo( 3.6F, 0.5F, &quot );
+	sout | "remquo:" | quot | f;
+	d = remquo( 3.6D, 0.5F, &quot );
+	sout | quot | d;
+	l = remquo( 3.6L, 0.5L, &quot );
+	sout | quot | l | endl;
+	sout | "div:" | div( 3.6F, 0.5F ) | div( 3.6D, 0.5D ) | div( 3.6L, 0.5L ) | endl;
+	sout | "fma:" | fma( 3.0F, -1.0F, 1.0F ) | fma( 3.0D, -1.0D, 1.0D ) | fma( 3.0L, -1.0L, , 1.0L ) | endl;
+	sout | "fdim:" | fdim( 1.0F, -1.0F ) | fdim( 1.0D, -1.0D ) | fdim( 1.0L, -1.0L ) | endl;
+	sout | "nan:" | (float)nan( "" ) | (double)nan( "" ) | (long double)nan( "" ) | endl;
+
+	//---------------------- Exponential ----------------------
+
+	sout | "exp:" | exp( 1.0F ) | exp( 1.0D ) | exp( 1.0L ) | exp( 1.0F+1.0FI ) | exp( 1.0D+1.0DI ) | exp( 1.0DL+1.0LI ) | endl;
+	sout | "exp2:" | exp2( 1.0F ) | exp2( 1.0D ) | exp2( 1.0L ) | endl;
+	sout | "expm1:" | expm1( 1.0F ) | expm1( 1.0D ) | expm1( 1.0L ) | endl;
+	sout | "pow:" | pow( 1.0F, 1.0F ) | pow( 1.0D, 1.0D ) | pow( 1.0L, 1.0L ) | pow( 1.0F+1.0FI, 1.0F+1.0FI ) | pow( 1.0D+1.0DI, 1.0D+1.0DI ) | pow( 1.5DL+1.5LI, 1.5DL+1.5LI ) | endl;
+
+	int b = 4;
+	unsigned int e = 2;
+    b \= e;
+    sout | "\\" | b | b \ e | endl;
+    sout | "\\" | 'a' \ 3u | 2 \ 8u | 4 \ 3u | -4 \ 3u | 4 \ -3 | -4 \ -3 | 4.0 \ 2.1 | (1.0f+2.0fi) \ (3.0f+2.0fi) | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa math1.c" //
+// End: //
Index: tests/math2.c
===================================================================
--- tests/math2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/math2.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,52 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// math2.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Fri Apr 22 14:59:21 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu May 24 21:06:10 2018
+// Update Count     : 82
+//
+
+#include <fstream.hfa>
+#include <math.hfa>
+
+int main( void ) {
+	float f;
+	double d;
+	long double l;
+
+	//---------------------- Logarithm ----------------------
+
+	sout | "log:" | log( 1.0F ) | log( 1.0D ) | log( 1.0L ) | log( 1.0F+1.0FI ) | log( 1.0D+1.0DI ) | log( 1.0DL+1.0LI ) | endl;
+	sout | "log2:" | log2( 8.0F ) | log2( 8.0D ) | log2( 8.0L ) | endl;
+	sout | "log10:" | log10( 100.0F ) | log10( 100.0D ) | log10( 100.0L ) | endl;
+	sout | "log1p:" | log1p( 1.0F ) | log1p( 1.0D ) | log1p( 1.0L ) | endl;
+	sout | "ilogb:" | ilogb( 1.0F ) | ilogb( 1.0D ) | ilogb( 1.0L ) | endl;
+	sout | "logb:" | logb( 8.0F ) | logb( 8.0D ) | logb( 8.0L ) | endl;
+
+	sout | "sqrt:" | sqrt( 1.0F ) | sqrt( 1.0D ) | sqrt( 1.0L ) | sqrt( 1.0F+1.0FI ) | sqrt( 1.0D+1.0DI ) | sqrt( 1.0DL+1.0LI ) | endl;
+	sout | "cbrt:" | cbrt( 27.0F ) | cbrt( 27.0D ) | cbrt( 27.0L ) | endl;
+	sout | "hypot:" | hypot( 1.0F, -1.0F ) | hypot( 1.0D, -1.0D ) | hypot( 1.0L, -1.0L ) | endl;
+
+	//---------------------- Trigonometric ----------------------
+
+	sout | "sin:" | sin( 1.0F ) | sin( 1.0D ) | sin( 1.0L ) | sin( 1.0F+1.0FI ) | sin( 1.0D+1.0DI ) | sin( 1.0DL+1.0LI ) | endl;
+	sout | "cos:" | cos( 1.0F ) | cos( 1.0D ) | cos( 1.0L ) | cos( 1.0F+1.0FI ) | cos( 1.0D+1.0DI ) | cos( 1.0DL+1.0LI ) | endl;
+	sout | "tan:" | tan( 1.0F ) | tan( 1.0D ) | tan( 1.0L ) | tan( 1.0F+1.0FI ) | tan( 1.0D+1.0DI ) | tan( 1.0DL+1.0LI ) | endl;
+	sout | "asin:" | asin( 1.0F ) | asin( 1.0D ) | asin( 1.0L ) | asin( 1.0F+1.0FI ) | asin( 1.0D+1.0DI ) | asin( 1.0DL+1.0LI ) | endl;
+	sout | "acos:" | acos( 1.0F ) | acos( 1.0D ) | acos( 1.0L ) | acos( 1.0F+1.0FI ) | acos( 1.0D+1.0DI ) | acos( 1.0DL+1.0LI ) | endl;
+	sout | "atan:" | atan( 1.0F ) | atan( 1.0D ) | atan( 1.0L ) | atan( 1.0F+1.0FI ) | atan( 1.0D+1.0DI ) | atan( 1.0DL+1.0LI ) | endl;
+	sout | "atan2:" | atan2( 1.0F, 1.0F ) | atan2( 1.0D, 1.0D ) | atan2( 1.0L, 1.0L );
+	sout | "atan:" | atan( 1.0F, 1.0F ) | atan( 1.0D, 1.0D ) | atan( 1.0L, 1.0L ) | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa math2.c" //
+// End: //
Index: tests/math3.c
===================================================================
--- tests/math3.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/math3.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,51 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// math3.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Fri Apr 22 14:59:21 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu May 24 21:06:12 2018
+// Update Count     : 82
+//
+
+#include <fstream.hfa>
+#include <math.hfa>
+
+int main( void ) {
+	float f;
+	double d;
+	long double l;
+
+	//---------------------- Hyperbolic ----------------------
+
+	sout | "sinh:" | sinh( 1.0F ) | sinh( 1.0D ) | sinh( 1.0L ) | sinh( 1.0F+1.0FI ) | sinh( 1.0D+1.0DI ) | sinh( 1.0DL+1.0LI ) | endl;
+	sout | "cosh:" | cosh( 1.0F ) | cosh( 1.0D ) | cosh( 1.0L ) | cosh( 1.0F+1.0FI ) | cosh( 1.0D+1.0DI ) | cosh( 1.0DL+1.0LI ) | endl;
+	sout | "tanh:" | tanh( 1.0F ) | tanh( 1.0D ) | tanh( 1.0L ) | tanh( 1.0F+1.0FI ) | tanh( 1.0D+1.0DI ) | tanh( 1.0DL+1.0LI ) | endl;
+	sout | "acosh:" | acosh( 1.0F ) | acosh( 1.0D ) | acosh( 1.0L ) | acosh( 1.0F+1.0FI ) | acosh( 1.0D+1.0DI ) | acosh( 1.0DL+1.0LI ) | endl;
+	sout | "asinh:" | asinh( 1.0F ) | asinh( 1.0D ) | asinh( 1.0L ) | asinh( 1.0F+1.0FI ) | asinh( 1.0D+1.0DI ) | asinh( 1.0DL+1.0LI ) | endl;
+	sout | "atanh:" | atanh( 1.0F ) | atanh( 1.0D ) | atanh( 1.0L ) | atanh( 1.0F+1.0FI ) | atanh( 1.0D+1.0DI ) | atanh( 1.0DL+1.0LI ) | endl;
+
+	//---------------------- Error / Gamma ----------------------
+
+	sout | "erf:" | erf( 1.0F ) | erf( 1.0D ) | erf( 1.0L ) | endl;
+	sout | "erfc:" | erfc( 1.0F ) | erfc( 1.0D ) | erfc( 1.0L ) | endl;
+	sout | "lgamma:" | lgamma( 4.0F ) | lgamma( 4.0D ) | lgamma( 4.0L ) | endl;
+	int sign;
+	f = lgamma( 4.0F, &sign );
+	sout | "lgamma:" | f | sign;
+	d = lgamma( 4.0D, &sign );
+	sout | d | sign;
+	l = lgamma( 4.0L, &sign );
+	sout | l | sign | endl;
+	sout | "tgamma:" | tgamma( 4.0F ) | tgamma( 4.0D ) | tgamma( 4.0L ) | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa math3.c" //
+// End: //
Index: tests/math4.c
===================================================================
--- tests/math4.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/math4.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,72 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// math4.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Thu May 24 20:56:54 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu May 24 20:58:06 2018
+// Update Count     : 2
+//
+
+#include <fstream.hfa>
+#include <math.hfa>
+
+int main( void ) {
+	float f;
+	double d;
+	long double l;
+
+	//---------------------- Nearest Integer ----------------------
+
+	sout | "floor:" | floor( 1.2F ) | floor( 1.2D ) | floor( 1.2L ) | endl;
+	sout | "ceil:" | ceil( 1.6F ) | ceil( 1.6D ) | ceil( 1.6L ) | endl;
+	sout | "trunc:" | trunc( 3.5F ) | trunc( 3.5D ) | trunc( 3.5L ) | endl;
+	sout | "rint:" | (float)rint( 1.5F ) | (double)rint( 1.5D ) | (long double)rint( 1.5L ) | endl;
+	sout | "rint:" | (long int)rint( 1.5F ) | (long int)rint( 1.5D ) | (long int)rint( 1.5L ) | endl;
+	sout | "rint:" | (long long int)rint( 1.5F ) | (long long int)rint( 1.5D ) | (long long int)rint( 1.5L ) | endl;
+	sout | "lrint:" | lrint( 1.5F ) | lrint( 1.5D ) | lrint( 1.5L ) | endl;
+	sout | "llrint:" | llrint( 1.5F ) | llrint( 1.5D ) | llrint( 1.5L ) | endl;
+	sout | "nearbyint:" | nearbyint( 3.5F ) | nearbyint( 3.5D ) | nearbyint( 3.5L ) | endl;
+	sout | "round:" | (float)round( 1.5F ) | (double)round( 1.5D ) | (long double)round( 1.5L ) | endl;
+	sout | "round:" | (long int)round( 1.5F ) | (long int)round( 1.5D ) | (long int)round( 1.5L ) | endl;
+	sout | "round:" | (long long int)round( 1.5F ) | (long long int)round( 1.5D ) | (long long int)round( 1.5L ) | endl;
+	sout | "lround:" | lround( 1.5F ) | lround( 1.5D ) | lround( 1.5L ) | endl;
+	sout | "llround:" | llround( 1.5F ) | llround( 1.5D ) | llround( 1.5L ) | endl;
+
+	//---------------------- Manipulation ----------------------
+
+	sout | "copysign:" | copysign( 1.0F, -1.0F ) | copysign( 1.0D, -1.0D ) | copysign( 1.0L, -1.0L ) | endl;
+	int exp;
+	f = frexp( 4.0F, &exp );
+	sout | "frexp:" | f | exp;
+	d = frexp( 4.0D, &exp );
+	sout | d | exp;
+	l = frexp( 4.0L, &exp );
+	sout | l | exp | endl;
+	sout | "ldexp:" | ldexp( 2.0F, 2 ) | ldexp( 2.0D, 2 ) | ldexp( 2.0L, 2 ) | endl;
+	float fi;
+	double di;
+	long double ldi;
+	f = modf( 2.3F, &fi );
+	sout | "modf:" | fi | f;
+	d = modf( 2.3D, &di );
+	sout | di | d;
+	l = modf( 2.3L, &ldi );
+	sout | ldi | l | endl;
+	sout | "modf:" | modf( 2.3F ) | modf( 2.3D ) | modf( 2.3L ) | endl;
+	sout | "nextafter:" | nextafter( 2.0F, 3.0F ) | nextafter( 2.0D, 3.0D ) | nextafter( 2.0L, 3.0L ) | endl;
+	sout | "nexttoward:" | nexttoward( 2.0F, 3.0F ) | nexttoward( 2.0D, 3.0D ) | nexttoward( 2.0L, 3.0L ) | endl;
+
+	sout | "scalbn:" | scalbn( 2.0F, 3 ) | scalbn( 2.0D, 3 ) | scalbn( 2.0L, 3 ) | endl;
+	sout | "scalbln:" | scalbln( 2.0F, 3L ) | scalbln( 2.0D, 3L ) | scalbln( 2.0L, 3L ) | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa math3.c" //
+// End: //
Index: tests/maybe.c
===================================================================
--- tests/maybe.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/maybe.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,67 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// maybe.c --
+//
+// Author           : Andrew Beach
+// Created On       : Thr May 25 16:02:00 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 20 15:24:07 2017
+// Update Count     : 1
+//
+
+#include <assert.h>
+#include <containers/maybe.hfa>
+
+void checkPredicates() {
+	maybe(int) filled = 4;
+	assert(filled);
+	assert(has_value(&filled));
+
+	maybe(int) empty = {};
+	assert(empty ? false : true);
+	assert(!has_value(&empty));
+}
+
+void checkGetter() {
+	maybe(int) a = 94;
+	assert(94 == get(&a));
+}
+
+/* Waiting on bug#11 to be fixed.
+void checkNamedConstructors() {
+	maybe(char) letter = maybe_value('a');
+	assert(has_value(&letter));
+	assert('a' == get(&letter));
+
+	maybe(char) rune = maybe_none();
+	assert(!has_value(&rune));
+}
+*/
+
+void checkSetters() {
+	maybe(int) fee = 3;
+	assert(3 == get(&fee));
+	set(&fee, 7);
+	assert(7 == get(&fee));
+	set_none(&fee);
+	assert(!has_value(&fee));
+
+	maybe(int) fy = 4;
+	maybe(int) foe = 8;
+	maybe(int) fum = {};
+	fy = foe;
+	assert(8 == get(&fy));
+	fy = fum;
+	assert(!has_value(&fy));
+}
+
+int main(int argc, char * argv[]) {
+	checkPredicates();
+	checkGetter();
+	//checkNamedConstructors();
+	checkSetters();
+}
Index: tests/minmax.c
===================================================================
--- tests/minmax.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/minmax.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,52 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// minmax.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Apr 10 17:29:09 2018
+// Update Count     : 50
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>										// min, max
+
+int main( void ) {
+	// char does not have less or greater than.
+	int ?<?( char op1, char op2 ) { return (int)op1 < (int)op2; }
+	int ?>?( char op1, char op2 ) { return (int)op1 > (int)op2; }
+
+	sout | "char\t\t\t"					| 'z' | ' ' | 'a' | "\tmin " | min( 'z', 'a' ) | endl;
+	sout | "signed int\t\t"				| 4 | 3 | "\tmin" | min( 4, 3 ) | endl;
+	sout | "unsigned int\t\t"			| 4u | 3u | "\tmin" | min( 4u, 3u ) | endl;
+	sout | "signed long int\t\t" 		| 4l | 3l | "\tmin" | min( 4l, 3l ) | endl;
+	sout | "unsigned long int\t" 		| 4ul | 3ul | "\tmin" | min( 4ul, 3ul ) | endl;
+	sout | "signed long long int\t"		| 4ll | 3ll | "\tmin" | min( 4ll, 3ll ) | endl;
+	sout | "unsigned long long int\t"	| 4ull | 3ull | "\tmin" | min( 4ull, 3ull ) | endl;
+	sout | "float\t\t\t" 				| 4.0f | 3.1f | "\tmin" | min( 4.0f, 3.1f ) | endl;
+	sout | "double\t\t\t"				| 4.0 | 3.1 | "\tmin" | min( 4.0, 3.1 ) | endl;
+	sout | "long double\t\t"			| 4.0l | 3.1l | "\tmin" | min( 4.0l, 3.1l ) | endl;
+
+	sout | endl;
+
+	sout | "char\t\t\t"					| 'z' | ' ' | 'a' | "\tmax " | max( 'z', 'a' ) | endl;
+	sout | "signed int\t\t"				| 4 | 3 | "\tmax" | max( 4, 3 ) | endl;
+	sout | "unsigned int\t\t"			| 4u | 3u | "\tmax" | max( 4u, 3u ) | endl;
+	sout | "signed long int\t\t" 		| 4l | 3l | "\tmax" | max( 4l, 3l ) | endl;
+	sout | "unsigned long int\t" 		| 4ul | 3ul | "\tmax" | max( 4ul, 3ul ) | endl;
+	sout | "signed long long int\t"		| 4ll | 3ll | "\tmax" | max( 4ll, 3ll ) | endl;
+	sout | "unsigned long long int\t"	| 4ull | 3ull | "\tmax" | max( 4ull, 3ull ) | endl;
+	sout | "float\t\t\t" 				| 4.0f | 3.1f | "\tmax" | max( 4.0f, 3.1f ) | endl;
+	sout | "double\t\t\t"				| 4.0 | 3.1 | "\tmax" | max( 4.0, 3.1 ) | endl;
+	sout | "long double\t\t"			| 4.0l | 3.1l | "\tmax" | max( 4.0l, 3.1l ) | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa minmax.c" //
+// End: //
Index: tests/namedParmArg.c
===================================================================
--- tests/namedParmArg.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/namedParmArg.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,14 @@
+int f1( int i = 3, int *j = 0 ) {}  /* ANSI */
+[int, int ] f2( int i = 3, * int j = 0 ) {}  /* CFA */
+
+int main() {
+    f1();		/* identical calls */
+    f1( 3 );
+    f1( 3, );
+    f1( 3, 0 );
+    f1( 3, j : 0 );
+    f1( j : 0, 3 );
+    f1( i : 3, j : 0 );
+    f1( j : 0, i : 3 );
+    f1( [j, i] : f2() );
+}
Index: tests/nested-types.c
===================================================================
--- tests/nested-types.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/nested-types.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,91 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// nested-types.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Mon Jul 9 10:20:03 2018
+// Last Modified By : Rob Schluntz
+// Last Modified On : Mon Jul 9 10:20:03 2017
+// Update Count     : 1
+//
+
+typedef int N;
+struct A {
+  forall(otype T)
+  struct N {
+    T x;
+  };
+};
+
+struct S {
+  struct T {
+    int i;
+    typedef int Bar;
+  };
+  T x;
+
+  // struct U;
+  typedef T Bar;
+  typedef int Baz;
+};
+
+// // // // need a way to stuff a qualified name into a struct decl
+// // struct S.U {
+// //   double z;
+// // };
+
+// // what will this do?
+// struct U {
+//   union S {
+//     int i;
+//     double d;
+//   };
+// };
+
+// struct T {
+//   double d;
+// };
+
+int main() {
+  // access nested struct
+  S.T x;
+
+  {
+    struct S {
+      int i;
+      struct Z {
+        double d;
+      };
+    };
+
+    S.Z z;   // gets local S
+    .S.T y;  // lookup at global scope only
+
+    const volatile .S.T q;
+#if ERR1
+    T err1;           // error: no T in scope
+#endif
+#if ERR2
+    .Z err2;          // error: no Z in global scope
+    .S.Baz.Bar err3;  // error: .S.Baz => int, int is not aggregate and should not appear left of the dot
+    .S.Z err4;        // error: no Z in global S
+#endif
+  }
+
+  // U.S un;
+
+  S.Bar y;
+  S.Baz x;
+  S.T.Bar z;
+
+  // A.N(int) x;  // xxx - should not be an error, but currently is.
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa nested-types.c" //
+// End: //
Index: tests/numericConstants.c
===================================================================
--- tests/numericConstants.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/numericConstants.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,70 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// numericConstants.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed May 24 22:10:36 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 24 22:11:36 2017
+// Update Count     : 2
+// 
+
+int main() {
+	1;							// decimal
+	2_1;
+	2_147_483_647;
+	37LL;
+	45ull;
+	89llu;
+	99LLu;
+	56_lu;
+	88_LLu;
+
+//	0;							// octal
+	0u;
+	0_3_77;
+	0_377_ul;
+
+	0x1;						// hexadecimal
+	0x1u;
+	0xabL;
+	0x_80000000;
+	0x_fff;
+	0x_ef3d_aa5c;
+	0x_3LL;
+
+	3.;							// integral real
+	3_100.;
+	1_000_000.;
+
+	3.1;						// integral/fractional real
+	3.141_592_654L;
+	123_456.123_456;
+
+	3E1;						// integral/exponent real
+	3_e1f;
+	3_E1_1_F;
+	3_E_11;
+	3_e_+11;
+	3_E_-11;
+
+	3.0E1;						// integral/fractional/exponent real
+	3.0_E1L;
+	3.0_e1_1;
+	3.0_E_11_l;
+	3.0_e_+11l;
+	3.0_E_-11;
+	123_456.123_456E-16;
+
+	0x_ff.ffp0;					// hex real
+	0x_1.ffff_ffff_p_128_l;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa minmax.c" //
+// End: //
Index: tests/occursError.c
===================================================================
--- tests/occursError.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/occursError.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,12 @@
+forall( otype T ) void f( void (*)( T, T * ) );
+forall( otype U ) void g( U,  U * );
+forall( otype U ) void h( U *, U );
+
+void test() {
+    f( h );
+    f( g );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/operators.c
===================================================================
--- tests/operators.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/operators.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,38 @@
+int ?*?( int a, int b ) {
+	return 0;
+}
+
+int ?()( int number1, int number2 ) {
+	return number1 * number2;
+}
+
+int ?+?( int a, int b ) {
+	return 0;
+}
+
+int ?=?( int &a, int b ) {
+	return 0;
+}
+struct accumulator {
+	int total;
+};
+
+char ?()( struct accumulator a, char number1, char number2 ) {
+	return 'a';
+}
+
+void f( void ) {
+	char a, b;
+	?()( a, b );
+	a(b);
+	a + b;
+}
+
+int main(int argc, char const *argv[]) {
+	/* code */
+	return 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/polymorphism.c
===================================================================
--- tests/polymorphism.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/polymorphism.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,121 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// polymorphism.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Tue Oct 17 12:19:48 2017
+// Last Modified By : Rob Schluntz
+// Last Modified On : Tue Oct 17 12:21:07 2017
+// Update Count     : 1
+//
+
+#include <assert.h>
+#include <inttypes.h>
+
+forall(otype T)
+T f(T x, T y) {
+	x = y;
+	return x;
+}
+
+forall(otype T) T ident(T x) {
+	return x;
+}
+
+forall( otype T, otype U )
+size_t struct_size( T i, U j ) {
+	struct S { T i; U j; };
+	return sizeof(S);
+}
+
+forall( otype T, otype U )
+size_t union_size( T i, U j ) {
+	union B { T i; U j; };
+	return sizeof(B);
+}
+
+// perform some simple operations on aggregates of T and U
+forall( otype T | { void print(T); int ?==?(T, T); }, otype U | { void print(U); U ?=?(U&, zero_t); } )
+U foo(T i, U j) {
+	struct S { T i; U j; };
+	union B { T i; U j; };
+
+	S s;
+	s.i = i;
+	assertf(s.i == i, "struct operation fails in polymorphic context.");
+
+	B b;
+	b.j = 0;
+	b.i = s.i;
+	return b.j;
+}
+
+int main() {
+	{
+		// ensure that x is not changed by the invocation of a polymorphic function
+		int x = 123;
+		int y = 456;
+		int z = f(x, y);
+		printf("%d %d %d\n", x, y, z);
+	}
+
+	{
+		// explicitly specialize function
+		int (*f)(int) = ident;
+		((int(*)(int))ident);
+		printf("%d %d\n", f(5), ((int(*)(int))ident)(5));
+	}
+
+	{
+		// test aggregates with polymorphic members
+		typedef __attribute__((aligned(8))) uint32_t x_type;
+		typedef __attribute__((aligned(8))) uint64_t y_type;
+
+		x_type x = 3;
+		y_type y = 3;
+
+		struct S {
+			x_type f1;
+			y_type f2;
+		};
+		union U {
+			x_type f1;
+			y_type f2;
+		};
+		// ensure that the size of aggregates with polymorphic members
+		// matches the size of the aggregates in a monomorphic context
+		size_t ssz = struct_size(x, y);
+		size_t usz = union_size(x, y);
+		assertf( ssz == sizeof(S), "struct size differs in polymorphic context: %zd / %zd", ssz, sizeof(S));
+		assertf( usz == sizeof(U), "union size differs in polymorphic context: %zd / %zd", usz, sizeof(U));
+
+		y_type ?=?(y_type & this, zero_t) {
+			this = (int)0;
+			return this;
+		}
+
+		void print(x_type x) {
+			printf("%"PRIu32"\n", x);
+		}
+
+		void print(y_type y) {
+			printf("%"PRIu64"\n", y);
+		}
+
+		y_type ret = foo(x, y);
+
+		// duplicate logic from inside of foo to ensure the same results
+		U u;
+		u.f2 = 0;
+		u.f1 = x;
+		assertf(ret == u.f2, "union operation fails in polymorphic context.");
+	}
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/preempt_longrun/Makefile.am
===================================================================
--- tests/preempt_longrun/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,78 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am --
+##
+## Author           : Thierry Delisle
+## Created On       : Fri Jun 16 10:57:34 2017
+## Last Modified By :
+## Last Modified On :
+## Update Count     : 0
+###############################################################################
+
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+
+repeats=10
+max_time=600
+preempt=10ul\`ms
+debug=-debug
+type=LONG
+
+REPEAT = ${abs_top_srcdir}/tools/repeat
+WATCHDOG = ${abs_top_srcdir}/tools/watchdog
+TIME = /usr/bin/time -f "%E"
+
+# $(shell ./update-type $(type))
+# ./update-type $(type)
+
+UPDATED_TYPE = $(shell ./update-type $(type))
+
+BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ -O2 -DPREEMPTION_RATE=${preempt} -I.. -I. -DTEST_$(shell cat .type | tr a-z A-Z)
+CFLAGS = ${BUILD_FLAGS}
+CC = @CFACC@
+
+TESTS = block coroutine create disjoint enter enter3 processor stack wait yield
+
+# .INTERMEDIATE: ${TESTS}
+
+all-local: ${TESTS:=.run}
+
+runall : ${TESTS:=.run}
+	@ echo "All programs terminated normally"
+
+watchall : ${TESTS:=.watch}
+	@ echo "All programs terminated normally"
+
+compileall : ${TESTS}
+	@ echo "Compiled"
+
+clean-local:
+	rm -f ${TESTS} core* out.log .type
+
+% : %.c ${CC} ${UPDATED_TYPE}
+	${AM_V_GEN}${CC} ${CFLAGS} ${<} $(debug) -o ${@}
+
+%.run : % ${REPEAT}
+	@ time ${REPEAT} -r out.log -i -s $(repeats) timeout ${max_time} ./${<}
+	@ rm ${<}
+	@ echo -e "${<}: SUCCESS\n"
+
+%.watch : % ${WATCHDOG}
+	@ time ${WATCHDOG} ./${<}
+	@ rm ${<}
+	@ echo -e "${<}: SUCCESS\n"
+
+%.time : % ${REPEAT}
+	@ ${REPEAT} -i -s -- $(repeats) $(TIME) -a -o times.log ./${<}
+	@ rm ${<}
+	@ echo -e "${<}: SUCCESS\n"
+
+${REPEAT}: ${abs_top_srcdir}/tools/Makefile
+	@+make -C ${abs_top_srcdir}/tools/
+
+${WATCHDOG}: ${abs_top_srcdir}/tools/Makefile
+	@+make -C ${abs_top_srcdir}/tools/
Index: tests/preempt_longrun/Makefile.in
===================================================================
--- tests/preempt_longrun/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,931 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/preempt_longrun
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red='[0;31m'; \
+    grn='[0;32m'; \
+    lgn='[1;32m'; \
+    blu='[1;34m'; \
+    mgn='[0;35m'; \
+    brg='[1m'; \
+    std='[m'; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/automake/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/automake/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/automake/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKEND_CC = @BACKEND_CC@
+BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
+CC = @CFACC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFACC = @CFACC@
+CFACPP = @CFACPP@
+CFA_BACKEND_CC = @CFA_BACKEND_CC@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_FLAGS = @CFA_FLAGS@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_NAME = @CFA_NAME@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = ${BUILD_FLAGS}
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_DIR = @DRIVER_DIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+HOST_FLAGS = @HOST_FLAGS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBCFA_TARGET_DIRS = @LIBCFA_TARGET_DIRS@
+LIBCFA_TARGET_MAKEFILES = @LIBCFA_TARGET_MAKEFILES@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
+VERSION = @VERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+repeats = 10
+max_time = 600
+preempt = 10ul\`ms
+debug = -debug
+type = LONG
+REPEAT = ${abs_top_srcdir}/tools/repeat
+WATCHDOG = ${abs_top_srcdir}/tools/watchdog
+TIME = /usr/bin/time -f "%E"
+
+# $(shell ./update-type $(type))
+# ./update-type $(type)
+UPDATED_TYPE = $(shell ./update-type $(type))
+BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ -O2 -DPREEMPTION_RATE=${preempt} -I.. -I. -DTEST_$(shell cat .type | tr a-z A-Z)
+TESTS = block coroutine create disjoint enter enter3 processor stack wait yield
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/preempt_longrun/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign tests/preempt_longrun/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	elif test -n "$$redo_logs"; then \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+block.log: block
+	@p='block'; \
+	b='block'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+coroutine.log: coroutine
+	@p='coroutine'; \
+	b='coroutine'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+create.log: create
+	@p='create'; \
+	b='create'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+disjoint.log: disjoint
+	@p='disjoint'; \
+	b='disjoint'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+enter.log: enter
+	@p='enter'; \
+	b='enter'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+enter3.log: enter3
+	@p='enter3'; \
+	b='enter3'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+processor.log: processor
+	@p='processor'; \
+	b='processor'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+stack.log: stack
+	@p='stack'; \
+	b='stack'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+wait.log: wait
+	@p='wait'; \
+	b='wait'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+yield.log: yield
+	@p='yield'; \
+	b='yield'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@	@p='$<'; \
+@am__EXEEXT_TRUE@	$(am__set_b); \
+@am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-local mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am all-local check check-TESTS check-am clean \
+	clean-generic clean-local cscopelist-am ctags-am distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic pdf pdf-am ps ps-am recheck tags-am \
+	uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# .INTERMEDIATE: ${TESTS}
+
+all-local: ${TESTS:=.run}
+
+runall : ${TESTS:=.run}
+	@ echo "All programs terminated normally"
+
+watchall : ${TESTS:=.watch}
+	@ echo "All programs terminated normally"
+
+compileall : ${TESTS}
+	@ echo "Compiled"
+
+clean-local:
+	rm -f ${TESTS} core* out.log .type
+
+% : %.c ${CC} ${UPDATED_TYPE}
+	${AM_V_GEN}${CC} ${CFLAGS} ${<} $(debug) -o ${@}
+
+%.run : % ${REPEAT}
+	@ time ${REPEAT} -r out.log -i -s $(repeats) timeout ${max_time} ./${<}
+	@ rm ${<}
+	@ echo -e "${<}: SUCCESS\n"
+
+%.watch : % ${WATCHDOG}
+	@ time ${WATCHDOG} ./${<}
+	@ rm ${<}
+	@ echo -e "${<}: SUCCESS\n"
+
+%.time : % ${REPEAT}
+	@ ${REPEAT} -i -s -- $(repeats) $(TIME) -a -o times.log ./${<}
+	@ rm ${<}
+	@ echo -e "${<}: SUCCESS\n"
+
+${REPEAT}: ${abs_top_srcdir}/tools/Makefile
+	@+make -C ${abs_top_srcdir}/tools/
+
+${WATCHDOG}: ${abs_top_srcdir}/tools/Makefile
+	@+make -C ${abs_top_srcdir}/tools/
+
+# 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.
+.NOEXPORT:
Index: tests/preempt_longrun/block.c
===================================================================
--- tests/preempt_longrun/block.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/block.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+../concurrent/signal/block.c
Index: tests/preempt_longrun/coroutine.c
===================================================================
--- tests/preempt_longrun/coroutine.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/coroutine.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+../concurrent/coroutineYield.c
Index: tests/preempt_longrun/create.c
===================================================================
--- tests/preempt_longrun/create.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/create.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,27 @@
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+static const unsigned long N = 60_000ul;
+
+thread worker_t {};
+
+void main(worker_t & this) {}
+
+int main(int argc, char* argv[]) {
+	processor p;
+	for(int i = 0; TEST(i < N); i++) {
+		worker_t w[7];
+		KICK_WATCHDOG;
+	}
+}
Index: tests/preempt_longrun/disjoint.c
===================================================================
--- tests/preempt_longrun/disjoint.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/disjoint.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+../concurrent/signal/disjoint.c
Index: tests/preempt_longrun/enter.c
===================================================================
--- tests/preempt_longrun/enter.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/enter.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,37 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 75000ul
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+static const unsigned long N  = 2_100_000ul;
+
+monitor mon_t {};
+void foo( mon_t & mutex this ) {
+	KICK_WATCHDOG;
+}
+
+mon_t mon;
+thread worker_t {};
+void main( worker_t & this ) {
+	for( unsigned long i = 0; TEST(i < N); i++ ) {
+		foo( mon );
+	}
+}
+
+int main(int argc, char * argv[] ) {
+	processor p;
+	{
+		worker_t w[7];
+	}
+}
Index: tests/preempt_longrun/enter3.c
===================================================================
--- tests/preempt_longrun/enter3.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/enter3.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,45 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 75000ul
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+static const unsigned long N  = 500_000ul;
+
+monitor mon_t {};
+
+mon_t mon1, mon2, mon3;
+
+void foo( mon_t & mutex a, mon_t & mutex b, mon_t & mutex c ) {
+	KICK_WATCHDOG;
+}
+
+thread worker_t {};
+
+void main( worker_t & this ) {
+	for( unsigned long i = 0; TEST(i < N); i++ ) {
+		foo( mon1, mon2, mon3 );
+	}
+}
+
+extern "C" {
+static worker_t * workers;
+}
+
+int main(int argc, char * argv[] ) {
+	processor p;
+	{
+		worker_t w[7];
+		workers = w;
+	}
+}
Index: tests/preempt_longrun/preempt.c
===================================================================
--- tests/preempt_longrun/preempt.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/preempt.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+../concurrent/preempt.c
Index: tests/preempt_longrun/processor.c
===================================================================
--- tests/preempt_longrun/processor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/processor.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,33 @@
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include <unistd.h>
+
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+static const unsigned long N = 50_000ul;
+
+int main(int argc, char* argv[]) {
+	processor * p[15];
+	for ( int pi = 0; pi < 15; pi++ ) {
+		p[pi] = new();
+	}
+	for ( int i = 0; TEST(i < N); i++) {
+		int pi = i % 15;
+		delete( p[pi] );
+		p[pi] = new();
+		KICK_WATCHDOG;
+	}
+	for ( int pi = 0; pi < 15; pi++ ) {
+		delete( p[pi] );
+	}
+}
Index: tests/preempt_longrun/stack.c
===================================================================
--- tests/preempt_longrun/stack.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/stack.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,46 @@
+#include <kernel.hfa>
+#include <math.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 5000000ul
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+thread worker_t {};
+
+void main(worker_t & this) {
+	while(TEST(0)) {
+		volatile long long p = 5_021_609ul;
+		volatile long long a = 326_417ul;
+		volatile long long n = 1l;
+		for (volatile long long i = 0; i < p; i++) {
+			n *= a;
+			n %= p;
+			KICK_WATCHDOG;
+		}
+
+		if( !TEST(n == a) ) {
+			abort();
+		}
+	}
+}
+
+extern "C" {
+static worker_t * workers;
+}
+
+int main(int argc, char* argv[]) {
+	processor p;
+	{
+		worker_t w[7];
+		workers = w;
+	}
+}
Index: tests/preempt_longrun/update-type
===================================================================
--- tests/preempt_longrun/update-type	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/update-type	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+if [ "$#" -ne 1 ]
+then
+	echo "illegal number of parameters, must be 1 was $#"
+	exit
+fi
+
+NEW="$(echo $1 | tr a-z A-Z)"
+TYPE_FILE=".type"
+if [ -f "$TYPE_FILE" ]
+then
+	OLD="$(cat $TYPE_FILE | tr a-z A-Z)"
+	if [ $OLD == $NEW ]
+	then
+		echo > /dev/null
+		# echo "$TYPE_FILE stayed unchanged"
+	else
+		echo "$NEW" > "$TYPE_FILE"
+		# echo "$TYPE_FILE changed from '$OLD' to '$NEW'"
+	fi
+else
+	echo "$NEW" > "$TYPE_FILE"
+fi
+echo "$TYPE_FILE"
Index: tests/preempt_longrun/wait.c
===================================================================
--- tests/preempt_longrun/wait.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/wait.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+../concurrent/signal/wait.c
Index: tests/preempt_longrun/yield.c
===================================================================
--- tests/preempt_longrun/yield.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/preempt_longrun/yield.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,41 @@
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 550000ul
+#include "long_tests.h"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 9_750_000ul;
+#else
+static const unsigned long N = 325_000ul;
+#endif
+
+thread worker_t {};
+
+void main(worker_t & this) {
+	for(int i = 0; TEST(i < N); i++) {
+		yield();
+		KICK_WATCHDOG;
+	}
+}
+
+extern "C" {
+static worker_t * workers;
+}
+
+int main(int argc, char* argv[]) {
+	processor p;
+	{
+		worker_t w[7];
+		workers = w;
+	}
+}
Index: tests/pybin/__init__.py
===================================================================
--- tests/pybin/__init__.py	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/pybin/__init__.py	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+#This file is empty but needs to exist for python import to work
Index: tests/pybin/settings.py
===================================================================
--- tests/pybin/settings.py	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/pybin/settings.py	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,140 @@
+from __future__ import print_function
+
+import os
+import sys
+import tools
+
+try :
+	testpath = os.path.dirname(os.path.abspath(os.path.join(os.getcwd(), sys.argv[0])))
+	sys.path.append(testpath)
+	import config
+
+	SRCDIR = os.path.abspath(config.SRCDIR)
+	BUILDDIR = os.path.abspath(config.BUILDDIR)
+	os.chdir(testpath)
+
+except:
+	print('ERROR: missing config.py, re-run configure script.', file=sys.stderr)
+	sys.exit(1)
+
+class Architecture:
+	KnownArchitectures = {
+		'x64'			: 'x64',
+		'x86-64'		: 'x64',
+		'x86_64'		: 'x64',
+		'x86'			: 'x86',
+		'i386'		: 'x86',
+		'i486'		: 'x86',
+		'i686'		: 'x86',
+		'Intel 80386'	: 'x86',
+		'arm'			: 'arm',
+		'ARM'			: 'arm',
+	}
+
+	CrossCompileFlags = {
+		'x64' : 'ARCH_FLAGS=-m64',
+		'x86' : 'ARCH_FLAGS=-m32',
+	}
+
+	def __init__(self, arch):
+		try:
+			canonical_host = Architecture.makeCanonical( config.HOSTARCH )
+		except KeyError:
+			print("Unkown host architecture %s" % config.HOSTARCH, file=sys.stderr)
+			sys.exit(1)
+
+		if arch:
+			try:
+				arch = Architecture.makeCanonical( arch )
+			except KeyError:
+				print("Unkown architecture %s" % arch, file=sys.stderr)
+				sys.exit(1)
+
+		if arch and arch != canonical_host:
+			self.target = arch
+			self.cross_compile = True
+		else:
+			self.target = canonical_host
+			self.cross_compile = False
+
+
+		try :
+			self.flags = Architecture.CrossCompileFlags[self.target]
+		except KeyError:
+			print("Cross compilation not available for architecture %s" % self.target, file=sys.stderr)
+			sys.exit(1)
+
+		self.string = self.target
+
+	def update(self):
+		if not self.cross_compile:
+			self.target = machine_default()
+			self.string = self.target
+			print("updated to %s" % self.target)
+
+	def match(self, arch):
+		return True if not arch else self.target == arch
+
+	@classmethod
+	def makeCanonical(_, arch):
+		return Architecture.KnownArchitectures[arch]
+
+
+class Debug:
+	def __init__(self, value):
+		self.string = "debug" if value else "no debug"
+		self.flags  = """DEBUG_FLAGS="%s" """ % ("-debug -O0" if value else "-nodebug -O2")
+
+class Install:
+	def __init__(self, value):
+		self.string = "installed" if value else "in-tree"
+		self.flags  = """INSTALL_FLAGS="%s" """ % ("" if value else "-in-tree")
+
+class Timeouts:
+	def __init__(self, ts, tg):
+		self.single = Timeouts.check(ts)
+		self.total  = Timeouts.check(tg)
+
+	@classmethod
+	def check(_, value):
+		if value < 1:
+			print("Timeouts must be at least 1 second", file=sys.stderr)
+			sys.exit(1)
+
+		return value
+
+def init( options ):
+	global arch
+	global dry_run
+	global generating
+	global make
+	global debug
+	global install
+	global timeout
+
+	dry_run    = options.dry_run
+	generating = options.regenerate_expected
+	make       = 'make'
+	debug	     = Debug(options.debug)
+	install    = Install(options.install)
+	arch       = Architecture(options.arch)
+	timeout    = Timeouts(options.timeout, options.global_timeout)
+
+
+def updateMakeCmd(force, jobs):
+	global make
+
+	make = "make" if not force else ("make -j%i" % jobs)
+
+def validate():
+	errf = os.path.join(BUILDDIR, ".validate.err")
+	make_ret, _ = tools.make( ".validate", error_file = errf, redirects  = "2> /dev/null 1> /dev/null", )
+	if make_ret != 0:
+		with open (errf, "r") as myfile:
+			error=myfile.read()
+		print("ERROR: Invalid configuration %s:%s" % (arch.string, debug.string), file=sys.stderr)
+		print("       verify returned : \n%s" % error, file=sys.stderr)
+		tools.rm(errf)
+		sys.exit(1)
+
+	tools.rm(errf)
Index: tests/pybin/test_run.py
===================================================================
--- tests/pybin/test_run.py	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/pybin/test_run.py	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,93 @@
+import os
+
+from pybin.tools import *
+
+import pybin.settings
+import datetime
+
+from string import Template
+
+class DeltaTemplate(Template):
+    delimiter = "%"
+
+def strfdelta(tdelta, fmt):
+    d["H"], rem = divmod(tdelta.seconds, 3600)
+    d["M"], d["S"] = divmod(rem, 60)
+    t = DeltaTemplate(fmt)
+    return t.substitute(**d)
+
+# Test class that defines what a test is
+class Test:
+	def __init__(self):
+		self.name = ''
+		self.path = ''
+		self.arch = ''
+
+	def toString(self):
+		return "{:25s} ({:5s} {:s})".format( self.name, self.arch if self.arch else "Any", self.target() )
+
+	def prepare(self):
+		mkdir( (self.output_log(), self.error_log(), self.input()            ) )
+		rm   ( (self.output_log(), self.error_log(), self.target_executable()) )
+
+	def expect(self):
+		return os.path.normpath( os.path.join(settings.SRCDIR  , self.path, ".expect", "%s%s.txt" % (self.name,'' if not self.arch else ".%s" % self.arch)) )
+
+	def error_log(self):
+		return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, ".err"   , "%s.log" % self.name) )
+
+	def output_log(self):
+		return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, ".out"   , "%s.log" % self.name) )
+
+	def input(self):
+		return os.path.normpath( os.path.join(settings.SRCDIR  , self.path, ".in"    , "%s.txt" % self.name) )
+
+	def target_output(self):
+		return self.output_log() if not settings.generating else self.expect()
+
+	def target(self):
+		return os.path.normpath( os.path.join(self.path, self.name) )
+
+	def target_executable(self):
+		return os.path.normpath( os.path.join(settings.BUILDDIR, self.path, self.name) )
+
+	@classmethod
+	def valid_name(_, name):
+		return not name.endswith( ('.c', '.cc', '.cpp', '.cfa') )
+
+	@classmethod
+	def from_target(_, target):
+		test = Test()
+		test.name = os.path.basename(target)
+		test.path = os.path.relpath (os.path.dirname(target), settings.SRCDIR)
+		test.arch = settings.arch.toString() if settings.arch.cross_compile else ''
+		return test
+
+
+class TestResult:
+	SUCCESS = 0
+	FAILURE = 1
+	TIMEOUT = 124
+
+	@classmethod
+	def toString( cls, retcode, duration ):
+		if settings.generating :
+			if   retcode == TestResult.SUCCESS: 	text = "Done   "
+			elif retcode == TestResult.TIMEOUT: 	text = "TIMEOUT"
+			else :						text = "ERROR code %d" % retcode
+		else :
+			if   retcode == TestResult.SUCCESS: 	text = "PASSED "
+			elif retcode == TestResult.TIMEOUT: 	text = "TIMEOUT"
+			else :						text = "FAILED with code %d" % retcode
+
+		text += "    C%s - R%s" % (cls.fmtDur(duration[0]), cls.fmtDur(duration[1]))
+		return text
+
+	@classmethod
+	def fmtDur( cls, duration ):
+		if duration :
+			hours, rem = divmod(duration, 3600)
+			minutes, rem = divmod(rem, 60)
+			seconds, millis = divmod(rem, 1)
+			return "%2d:%02d.%03d" % (minutes, seconds, millis * 1000)
+		return " n/a"
Index: tests/pybin/tools.py
===================================================================
--- tests/pybin/tools.py	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/pybin/tools.py	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,252 @@
+from __future__ import print_function
+
+import __main__
+import argparse
+import multiprocessing
+import os
+import re
+import signal
+import stat
+import sys
+import fileinput
+
+from pybin import settings
+from subprocess import Popen, PIPE, STDOUT
+
+################################################################################
+#               shell helpers
+################################################################################
+
+# helper functions to run terminal commands
+def sh(cmd, print2stdout = True, input = None):
+	# add input redirection if needed
+	if input and os.path.isfile(input):
+		cmd += " < %s" % input
+
+	# if this is a dry_run, only print the commands that would be ran
+	if settings.dry_run :
+		print("cmd: %s" % cmd)
+		return 0, None
+
+	# otherwise create a pipe and run the desired command
+	else :
+		proc = Popen(cmd, stdout=None if print2stdout else PIPE, stderr=STDOUT, shell=True)
+		out, err = proc.communicate()
+		return proc.returncode, out
+
+def is_ascii(fname):
+	if settings.dry_run:
+		print("is_ascii: %s" % fname)
+		return True
+
+	if not os.path.isfile(fname):
+		return False
+
+	code, out = sh("file %s" % fname, print2stdout = False)
+	if code != 0:
+		return False
+
+	match = re.search(".*: (.*)", out)
+
+	if not match:
+		return False
+
+	return match.group(1).startswith("ASCII text")
+
+# Remove 1 or more files silently
+def rm( files ):
+	if isinstance( files, basestring ):
+		sh("rm -f %s > /dev/null 2>&1" % files )
+	else:
+		for file in files:
+			sh("rm -f %s > /dev/null 2>&1" % file )
+
+# Create 1 or more directory
+def mkdir( files ):
+	if isinstance( files, basestring ):
+		sh("mkdir -p %s" % os.path.dirname(files) )
+	else:
+		for file in files:
+			sh("mkdir -p %s" % os.path.dirname(file) )
+
+
+def chdir( dest = __main__.__file__ ):
+	abspath = os.path.abspath(dest)
+	dname = os.path.dirname(abspath)
+	os.chdir(dname)
+
+# diff two files
+def diff( lhs, rhs ):
+	# diff the output of the files
+	diff_cmd = ("diff --ignore-all-space --text "
+				"--ignore-blank-lines "
+				"--old-group-format='\t\tmissing lines :\n"
+				"%%<' \\\n"
+				"--new-group-format='\t\tnew lines :\n"
+				"%%>' \\\n"
+				"--unchanged-group-format='%%=' \\"
+				"--changed-group-format='\t\texpected :\n"
+				"%%<"
+				"\t\tgot :\n"
+				"%%>\n' \\\n"
+				"--new-line-format='\t\t%%dn\t%%L' \\\n"
+				"--old-line-format='\t\t%%dn\t%%L' \\\n"
+				"--unchanged-line-format='' \\\n"
+				"%s %s")
+
+	# fetch return code and error from the diff command
+	return sh(diff_cmd % (lhs, rhs), False)
+
+# call make
+def make(target, flags = '', redirects = '', error_file = None, silent = False):
+	test_param = """test="%s" """ % (error_file) if error_file else ''
+	cmd = ' '.join([
+		settings.make,
+		'-s' if silent else '',
+		test_param,
+		settings.arch.flags,
+		settings.debug.flags,
+		settings.install.flags,
+		flags,
+		target,
+		redirects
+	])
+	return sh(cmd)
+
+def which(program):
+    import os
+    def is_exe(fpath):
+        return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
+
+    fpath, fname = os.path.split(program)
+    if fpath:
+        if is_exe(program):
+            return program
+    else:
+        for path in os.environ["PATH"].split(os.pathsep):
+            exe_file = os.path.join(path, program)
+            if is_exe(exe_file):
+                return exe_file
+
+    return None
+################################################################################
+#               file handling
+################################################################################
+
+# helper function to replace patterns in a file
+def file_replace(fname, pat, s_after):
+	if settings.dry_run:
+		print("replacing '%s' with '%s' in %s" % (pat, s_after, fname))
+		return
+
+	file = fileinput.FileInput(fname, inplace=True, backup='.bak')
+	for line in file:
+		print(line.replace(pat, s_after), end='')
+	file.close()
+
+# helper function to check if a files contains only a specific string
+def fileContainsOnly(file, text) :
+	with open(file) as f:
+		ff = f.read().strip()
+		result = ff == text.strip()
+
+		return result;
+
+# check whether or not a file is executable
+def fileIsExecutable(file) :
+	try :
+		fileinfo = os.stat(file)
+		return bool(fileinfo.st_mode & stat.S_IXUSR)
+	except Exception as inst:
+		print(type(inst))    # the exception instance
+		print(inst.args)     # arguments stored in .args
+		print(inst)
+		return False
+
+# transform path to canonical form
+def canonicalPath(path):
+	abspath = os.path.abspath(__main__.__file__)
+	dname = os.path.dirname(abspath)
+	return os.path.join(dname, os.path.normpath(path) )
+
+# compare path even if form is different
+def pathCmp(lhs, rhs):
+	return canonicalPath( lhs ) == canonicalPath( rhs )
+
+# walk all files in a path
+def pathWalk( op ):
+	def step(_, dirname, names):
+		for name in names:
+			path = os.path.join(dirname, name)
+			op( path )
+
+	# Start the walk
+	dname = settings.SRCDIR
+	os.path.walk(dname, step, '')
+
+################################################################################
+#               system
+################################################################################
+# count number of jobs to create
+def jobCount( options, tests ):
+	# check if the user already passed in a number of jobs for multi-threading
+	if not options.jobs:
+		make_flags = os.environ.get('MAKEFLAGS')
+		force = bool(make_flags)
+		make_jobs_fds = re.search("--jobserver-(auth|fds)=\s*([0-9]+),([0-9]+)", make_flags) if make_flags else None
+		if make_jobs_fds :
+			tokens = os.read(int(make_jobs_fds.group(2)), 1024)
+			options.jobs = len(tokens)
+			os.write(int(make_jobs_fds.group(3)), tokens)
+		else :
+			options.jobs = multiprocessing.cpu_count()
+	else :
+		force = True
+
+	# make sure we have a valid number of jobs that corresponds to user input
+	if options.jobs <= 0 :
+		print('ERROR: Invalid number of jobs', file=sys.stderr)
+		sys.exit(1)
+
+	return min( options.jobs, len(tests) ), force
+
+# setup a proper processor pool with correct signal handling
+def setupPool(jobs):
+	original_sigint_handler = signal.signal(signal.SIGINT, signal.SIG_IGN)
+	pool = multiprocessing.Pool(jobs)
+	signal.signal(signal.SIGINT, original_sigint_handler)
+
+	return pool
+
+# handle signals in scope
+class SignalHandling():
+	def __enter__(self):
+		# enable signal handling
+	    	signal.signal(signal.SIGINT, signal.SIG_DFL)
+
+	def __exit__(self, type, value, traceback):
+		# disable signal handling
+		signal.signal(signal.SIGINT, signal.SIG_IGN)
+
+################################################################################
+#               misc
+################################################################################
+
+# check if arguments is yes or no
+def yes_no(string):
+	if string == "yes" :
+		return True
+	if string == "no" :
+		return False
+	raise argparse.ArgumentTypeError(msg)
+	return False
+
+def fancy_print(text):
+	column = which('column')
+	if column:
+		cmd = "%s 2> /dev/null" % column
+		print(cmd)
+		proc = Popen(cmd, stdin=PIPE, stderr=None, shell=True)
+		proc.communicate(input=text)
+	else:
+		print(text)
Index: tests/quoted_keyword.c
===================================================================
--- tests/quoted_keyword.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/quoted_keyword.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,49 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// quoted_keyword.c -- test quoted keyword usage
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jun 30 14:03:59 2016
+// Update Count     : 19
+//
+
+#include <fstream.hfa>
+
+struct {
+	int `otype`;
+	int `struct`;
+} st = { 10, 10 };
+
+typedef int `forall`;
+`forall` xxx = 10;
+
+int `_Alignas`, `_Alignof`, `__alignof`, `__alignof__`, `asm`, `__asm`, `__asm__`, `_At`, `_Atomic`, `__attribute`,
+	`__attribute__`, `auto`, `_Bool`, `break`, `case`, `catch`, `catchResume`, `char`, `choose`, `_Complex`, `__complex`,
+	`__complex__`, `const`, `__const`, `__const__`, `continue`, `default`, `disable`, `do`, `double`, `dtype`, `else`,
+	`enable`, `enum`, `__extension__`, `extern`, `fallthru`, `finally`, `float`, `__float128`, `for`, `forall`, `fortran`,
+	`ftype`, `_Generic`, `goto`, `if`, `_Imaginary`, `__imag`, `__imag__`, `inline`, `__inline`, `__inline__`, `int`,
+	`__int128`, `__label__`, `long`, `lvalue`, `_Noreturn`, `__builtin_offsetof`, `otype`, `register`, `restrict`,
+	`__restrict`, `__restrict__`, `return`, `short`, `signed`, `__signed`, `__signed__`, `sizeof`, `static`,
+	`_Static_assert`, `struct`, `switch`, `_Thread_local`, `throw`, `throwResume`, `trait`, `try`, `typedef`,
+	`typeof`, `__typeof`, `__typeof__`, `union`, `unsigned`, `__builtin_va_list`, `void`, `volatile`, `__volatile`,
+	`__volatile__`, `while`;
+
+int main() {
+	int `if` = 0;
+	`catch` = 1;
+	st.`otype` = 2;
+	st.`struct` = 3;
+	`throw` = 4;
+	sout | `catch` + st.`otype` + st.`struct` + `throw` | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa quoted_keyword.c" //
+// End: //
Index: tests/raii/.expect/ctor-autogen-ERR1.txt
===================================================================
--- tests/raii/.expect/ctor-autogen-ERR1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/.expect/ctor-autogen-ERR1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,56 @@
+raii/ctor-autogen.c:102:1 error: Unique best alternative includes deleted identifier in Cast of:
+  Application of
+    Deleted Expression
+      Variable Expression: ?{}: static inline function
+      ... with parameters
+        _dst: reference to instance of struct Managed with body 1 
+        x: signed int
+      ... returning nothing 
+
+      ... deleted by: ?{}: function
+      ... with parameters
+        m: reference to instance of struct Managed with body 1 
+      ... returning nothing 
+      ... with body 
+        CompoundStmt
+          Expression Statement:
+            Application of
+              Variable Expression: ?=?: function
+              ... with parameters
+                intrinsic reference to signed int
+                intrinsic signed int
+              ... returning 
+                _retval__operator_assign: signed int
+                ... with attributes: 
+                  Attribute with name: unused
+
+
+            ... to arguments
+              Cast of:
+                Member Expression, with field: 
+                  x: signed int
+                ... from aggregate: 
+                  Cast of:
+                    Variable Expression: m: reference to instance of struct Managed with body 1 
+                  ... to:
+                    instance of struct Managed with body 1 
+              ... to:
+                reference to signed int
+              Cast of:
+                constant expression (0 0: zero_t)
+              ... to:
+                signed int
+
+            ... with environment:
+              Types:
+              Non-types:
+
+
+  ... to arguments
+    Cast of:
+      Variable Expression: x: instance of struct Managed with body 1 
+    ... to:
+      reference to instance of struct Managed with body 1 
+    constant expression (123 123: signed int)
+
+... to: nothing
Index: tests/raii/.expect/dtor-early-exit-ERR1.txt
===================================================================
--- tests/raii/.expect/dtor-early-exit-ERR1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/.expect/dtor-early-exit-ERR1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,4 @@
+raii/dtor-early-exit.c:150:1 error: jump to label 'L1' crosses initialization of y Branch (Goto)
+  with target: L1
+  with original target: L1
+
Index: tests/raii/.expect/dtor-early-exit-ERR2.txt
===================================================================
--- tests/raii/.expect/dtor-early-exit-ERR2.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/.expect/dtor-early-exit-ERR2.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,4 @@
+raii/dtor-early-exit.c:214:1 error: jump to label 'L2' crosses initialization of y Branch (Goto)
+  with target: L2
+  with original target: L2
+
Index: tests/raii/.expect/dtor-early-exit.txt
===================================================================
--- tests/raii/.expect/dtor-early-exit.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/.expect/dtor-early-exit.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,220 @@
+f i=0
+construct x
+construct y
+construct z
+destruct z
+destruct y
+destruct x
+f i=1
+construct x
+construct y
+construct z
+destruct z
+destruct y
+destruct x
+f i=2
+construct x
+construct y
+construct z
+destruct z
+destruct y
+destruct x
+f i=3
+construct x
+construct y
+construct z
+destruct z
+destruct y
+destruct x
+
+g for i=0
+construct x
+destruct x
+g for i=1
+construct x
+destruct x
+g for i=2
+construct x
+destruct x
+g for i=3
+construct x
+destruct x
+g for i=4
+construct x
+destruct x
+g for i=5
+construct x
+destruct x
+g for i=6
+construct x
+destruct x
+g for i=7
+construct x
+destruct x
+g for i=8
+construct x
+destruct x
+g for i=9
+construct x
+destruct x
+
+g while i=0
+construct x
+destruct x
+g while i=1
+construct x
+destruct x
+g while i=2
+construct x
+destruct x
+g while i=3
+construct x
+destruct x
+g while i=4
+construct x
+destruct x
+g while i=5
+construct x
+destruct x
+g while i=6
+construct x
+destruct x
+g while i=7
+construct x
+destruct x
+g while i=8
+construct x
+destruct x
+g while i=9
+construct x
+destruct x
+
+construct y
+g switch i=0
+destruct y
+construct y
+g switch i=1
+destruct y
+construct y
+g switch i=2
+destruct y
+construct y
+g switch i=3
+destruct y
+construct y
+g switch i=4
+destruct y
+construct y
+g switch i=5
+destruct y
+construct y
+g switch i=6
+destruct y
+construct y
+g switch i=7
+destruct y
+construct y
+g switch i=8
+destruct y
+construct y
+g switch i=9
+destruct y
+
+g for k=0
+g for i=0
+construct x
+g for j=0
+construct y
+continue L2
+destruct y
+g for j=1
+construct y
+break L2
+destruct y
+destruct x
+g for i=1
+construct x
+g for j=0
+construct y
+continue L2
+destruct y
+g for j=1
+construct y
+break L2
+destruct y
+destruct x
+g for i=2
+construct x
+continue L1
+destruct x
+g for i=3
+construct x
+break L1
+destruct x
+g for k=1
+g for i=0
+construct x
+g for j=0
+construct y
+continue L2
+destruct y
+g for j=1
+construct y
+break L2
+destruct y
+destruct x
+g for i=1
+construct x
+g for j=0
+construct y
+continue L2
+destruct y
+g for j=1
+construct y
+break L2
+destruct y
+destruct x
+g for i=2
+construct x
+continue L1
+destruct x
+g for i=3
+construct x
+break L1
+destruct x
+
+construct w
+construct v
+break L3
+destruct v
+destruct w
+
+h
+construct y
+L1
+construct x
+L2
+goto L1
+destruct x
+L1
+construct x
+L2
+goto L2
+L2
+goto L3
+L3
+goto L2-2
+L2
+goto L4
+destruct x
+destruct y
+L4
+goto L0
+construct y
+L1
+construct x
+L2
+goto L4
+destruct x
+destruct y
+L4
Index: tests/raii/.expect/globals.txt
===================================================================
--- tests/raii/.expect/globals.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/.expect/globals.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,9 @@
+static		inline		autogen		value
+no 		no 		no 		22
+no 		no 		yes		22
+no 		yes		no 		22
+no 		yes		yes		22
+yes		no 		no 		22
+yes		no 		yes		22
+yes		yes		no 		22
+yes		yes		yes		22
Index: tests/raii/.expect/memberCtors-ERR1.txt
===================================================================
--- tests/raii/.expect/memberCtors-ERR1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/.expect/memberCtors-ERR1.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,1 @@
+raii/memberCtors.c:71:1 error: in void ?{}(B &b), field a2 used before being constructed
Index: tests/raii/.expect/memberCtors.txt
===================================================================
--- tests/raii/.expect/memberCtors.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/.expect/memberCtors.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,213 @@
+Before declaration of b1
+constructing int
+constructing int
+constructing int
+constructing int
+constructing int
+constructing int
+begin construct B
+assign b.a2
+constructing int
+constructing int
+begin construct A
+construct a.x
+constructing int: 1001
+assign a.y
+assigning int: 0 0
+end construct A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this.x
+copy constructing int: 1001
+assign this.y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+begin ?=? A
+copy constructing int: 1001
+destructing int: 1001
+destructing int: 1001
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end ?=? A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this.x
+copy constructing int: 1001
+assign this.y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+destructing int: 0
+destructing int: 0
+destructing int: 1001
+destructing int: 0
+destructing int: 0
+destructing int: 1001
+construct b.a1
+constructing int
+constructing int
+begin construct A
+construct a.x
+constructing int: 1000
+assign a.y
+assigning int: 0 0
+end construct A
+end construct B
+destructing int: 0
+destructing int: 0
+destructing int: 1001
+Before declaration of b2
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this.x
+copy constructing int: 1000
+assign this.y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this.x
+copy constructing int: 1001
+assign this.y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this.x
+copy constructing int: 0
+assign this.y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+End of main
+constructing int
+constructing int
+begin construct A
+construct a.x
+constructing int: 999
+assign a.y
+assigning int: 0 0
+end construct A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this.x
+copy constructing int: 999
+assign this.y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+begin ?=? A
+copy constructing int: 999
+destructing int: 999
+destructing int: 999
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end ?=? A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this.x
+copy constructing int: 999
+assign this.y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+destructing int: 0
+destructing int: 0
+destructing int: 999
+destructing int: 0
+destructing int: 0
+destructing int: 999
+destructing int: 0
+destructing int: 0
+destructing int: 1000
+destructing int: 0
+destructing int: 0
+destructing int: 999
+destructing int: 0
+destructing int: 0
+destructing int: 0
+destructing int: 0
+destructing int: 0
+destructing int: 999
+constructing int
+constructing int
+begin construct A
+construct a.x
+constructing int: 999
+assign a.y
+assigning int: 0 0
+end construct A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this.x
+copy constructing int: 999
+assign this.y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+begin ?=? A
+copy constructing int: 999
+destructing int: 999
+destructing int: 999
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end ?=? A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this.x
+copy constructing int: 999
+assign this.y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+destructing int: 0
+destructing int: 0
+destructing int: 999
+destructing int: 0
+destructing int: 0
+destructing int: 999
+destructing int: 0
+destructing int: 0
+destructing int: 1000
+destructing int: 0
+destructing int: 0
+destructing int: 999
+destructing int: 0
+destructing int: 0
+destructing int: 0
+destructing int: 0
+destructing int: 0
+destructing int: 999
Index: tests/raii/ctor-autogen.c
===================================================================
--- tests/raii/ctor-autogen.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/ctor-autogen.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,153 @@
+// TODO: add error cases (e.g., use of field constructors for managed types, etc.)
+
+enum Color { R, G, B };
+
+// empty struct/union should have generated ctor/dtors
+union U {};
+struct S {};
+
+struct SimpleUnion {
+	int x;
+	double y;
+	char z;
+};
+
+struct SimpleStruct {
+	int x;
+	double y;
+	char z;
+};
+
+// struct/union with members with generated ctor/dtors should themselves have generated ctor/dtors
+union PopulatedUnion {
+	Color c;
+	U u;
+	S s;
+};
+
+struct PopulatedStruct {
+	Color c;
+	U u;
+	S s;
+};
+
+// dtype-static generic type is otype
+forall(dtype T)
+struct DtypeStaticStruct {
+  T * data;
+  short size;
+};
+
+forall(dtype T)
+union DtypeStaticUnion {
+  T * data;
+  short size;
+};
+
+// dynamic generic type is otype
+forall(otype T)
+struct DynamicStruct {
+	T x;
+};
+
+forall(otype T)
+union DynamicUnion {
+	T x;
+};
+
+// struct/union that contains a generic type is
+struct GenericContainingStruct {
+	DynamicStruct(int) dsi;
+	DynamicStruct(double) dsd;
+	DynamicUnion(int) dui;
+	DynamicUnion(double) dud;
+	DtypeStaticStruct(int) dssi;
+	DtypeStaticStruct(float) dssf;
+	DtypeStaticUnion(int) dsui;
+	DtypeStaticUnion(float) dsuf;
+};
+
+union GenericContainingUnion {
+	DynamicStruct(int) dsi;
+	DynamicStruct(double) dsd;
+	DynamicUnion(int) dui;
+	DynamicUnion(double) dud;
+	DtypeStaticStruct(int) dssi;
+	DtypeStaticStruct(float) dssf;
+	DtypeStaticUnion(int) dsui;
+	DtypeStaticUnion(float) dsuf;
+};
+
+
+forall(otype T)
+T identity(T x) { return x; }
+
+// can identity e if only sized or only the assertion, but the combination breaks...
+// forall(dtype T | sized(T) | { void ?{}(T &); })
+// void identity(T x) {  }
+
+#if ERR1
+// managed type - defines a constructor - can't use field constructors
+struct Managed {
+	int x;
+};
+
+void ?{}(Managed & m) { m.x = 0; }
+
+// managed type since it contains a managed type - can't use field constructors
+struct InheritManaged {
+	Managed m;
+};
+
+Managed x = { 123 }; // error
+Managed y;           // okay
+
+InheritManaged z = { y };  // error?
+#endif
+
+int main() {
+	S s;
+	U u;
+	Color e;
+
+	// identity(R);  Color constant should be Color which is otype
+	identity(e);  // Color should be an otype
+	identity(u);  // U should be an otype
+	identity(s);  // S should be an otype
+
+	SimpleStruct ss;
+	SimpleUnion su;
+
+	identity(ss);
+	identity(su);
+
+	PopulatedStruct ps;
+	PopulatedUnion pu;
+
+	identity(ps); // should recursively be an otype
+	identity(pu); // should recursively be an otype
+
+	DynamicStruct(int) dsi;
+	DynamicStruct(double) dsd;
+	DynamicUnion(int) dui;
+	DynamicUnion(double) dud;
+	DtypeStaticStruct(int) dssi;
+	DtypeStaticStruct(float) dssf;
+	DtypeStaticUnion(int) dsui;
+	DtypeStaticUnion(float) dsuf;
+
+	identity(dsi);
+	identity(dsd);
+	// identity(dui); // xxx - codegen errors in generated thunk _temp3 (Box-pass-generated assignment return-temporary)
+	// identity(dud);
+	identity(dssi);
+	identity(dssf);
+	identity(dsui);
+	identity(dsuf);
+
+	GenericContainingStruct gcs;
+	GenericContainingUnion gcu;
+
+	identity(gcs);
+	identity(gcu);
+}
Index: tests/raii/dtor-early-exit.c
===================================================================
--- tests/raii/dtor-early-exit.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/dtor-early-exit.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,253 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// dtor-early-exit.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Wed Aug 17 08:26:25 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 11 07:58:39 2018
+// Update Count     : 8
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <assert.h>
+
+struct A {
+	const char * name;
+	int * x;
+};
+
+// don't want these called
+void ?{}(A & a) { assert( false ); }
+void ?{}(A & a, const char * name) { a.name = name; sout | "construct " | name | endl; a.x = (int*)malloc(); }
+void ?{}(A & a, const char * name, int * ptr) { assert( false ); }
+
+A ?=?(A & a, A b) {  sout | "assign " | a.name | " " | b.name; return a; }
+void ?{}(A & a, A b) { sout | "copy construct " | b.name | endl; a.x = (int*)malloc(); }
+void ^?{}(A & a) { sout | "destruct " | a.name | endl; free(a.x); }
+
+// test returns
+void f(int i) {
+	sout | "f i=" | i | endl;
+	A x = { "x" };  // construct x
+	{
+		A y = { "y" }; // construct y
+		{
+			A z = { "z" }; // construct z
+			{
+				if (i == 0) return; // destruct x, y, z
+			}
+			if (i == 1) return; // destruct x, y, z
+			// destruct z
+		}
+		if (i == 2) return; // destruct x, y
+		// destruct y
+	}
+	return; // destruct x
+}
+
+// test loops, switch, etc.
+void g() {
+	for (int i = 0; i < 10; i++) {
+		sout | "g for i=" | i | endl;
+		A x = { "x" };
+		// construct x
+		// destruct x
+	}
+	sout | endl;
+	{
+		int i = 0;
+		while (i < 10) {
+			sout | "g while i=" | i | endl;
+			A x = { "x" };
+			// construct x
+			i++;
+			// destruct x
+		}
+	}
+	sout | endl;
+	for (int i = 0; i < 10; i++) {
+		switch(10) {
+			case 0:
+			case 5:
+			case 10: {
+				A y = { "y" };
+				sout | "g switch i=" | i | endl;
+				// construct y
+				break; // destruct y
+			}
+			default: {
+				sout | "g switch i=" | i | endl;
+				A x = { "x" };
+				// construct x
+				break; // destruct x
+			}
+		}
+	}
+	sout | endl;
+	for (int k = 0; k < 2; k++) {
+		sout | "g for k=" | k | endl;
+		L1: for (int i = 0; i < 10; i++) {
+			sout | "g for i=" | i | endl;
+
+			A x = { "x" };
+			if (i == 2) {
+				sout | "continue L1" | endl;
+				continue;  // destruct x
+			} else if (i == 3) {
+				sout | "break L1" | endl;
+				break;  // destruct x
+			}
+
+			L2: for (int j = 0; j < 10; j++) {
+				sout | "g for j=" | j | endl;
+				A y = { "y" };
+				if (j == 0) {
+					sout | "continue L2" | endl;
+					continue; // destruct y - missing because object that needs to be destructed is not a part of this block, it's a part of the for's block
+				} else if (j == 1) {
+					sout | "break L2" | endl;
+					break;  // destruct y
+				} else if (i == 1) {
+					sout | "continue L1" | endl;
+					continue L1; // destruct x,y - note: continue takes you to destructors for block, so only generate destructor for y
+				} else if (k == 1) {
+					sout | "break L1" | endl;
+					break L1;  // destruct x,y
+				}
+			}
+		}
+	}
+
+	sout | endl;
+	L3: if( 3 ) {
+		A w = { "w" };
+		if( 4 ) {
+			A v = { "v" };
+			sout | "break L3" | endl;
+			break L3;
+		}
+	}
+}
+
+// test goto
+void h() {
+	int i = 0;
+	// for each goto G with target label L:
+	// * find all constructed variables alive at G (set S_G)
+	// * find all constructed variables alive at L (set S_L)
+	// * if S_L-S_G is non-empty, error
+	// * emit destructors for all variables in S_G-S_L
+	sout | "h" | endl;
+	{
+		L0: ;
+#ifdef ERR1
+			goto L1; // this is an error in g++ because it skips initialization of y
+#endif
+			A y = { "y" };
+			// S_L1 = { y }
+		L1: sout | "L1" | endl;
+			A x = { "x" };
+			// S_L2 = { y, x }
+		L2: sout | "L2" | endl;
+			if (i == 0) {
+				++i;
+				sout | "goto L1" | endl;
+				// S_G = { y, x }
+				goto L1;  // jump back, destruct b/c before x definition
+				// S_L-S_G = {} => no error
+				// S_G-S_L = { x } => destruct x
+			} else if (i == 1) {
+				++i;
+				sout | "goto L2" | endl;
+				// S_G = { y, x }
+				goto L2;  // jump back, do not destruct
+				// S_L-S_G = {}
+				// S_G-S_L = {} => destruct nothing
+			} else if (i == 2) {
+				++i;
+				sout | "goto L3" | endl;
+				// S_G = { y, x }
+				goto L3;  // jump ahead, do not destruct
+				// S_L-S_G = {}
+				// S_G-S_L = {}
+			} else if (false) {
+				++i;
+				A z = { "z" };
+				sout | "goto L3-2" | endl;
+				// S_G = { z, y, x }
+				goto L3;
+				// S_L-S_G = {}
+				// S_G-S_L = {z} => destruct z
+			} else {
+				++i;
+				sout | "goto L4" | endl;
+				// S_G = { y, x }
+				goto L4;  // jump ahead, destruct b/c left block x was defined in
+				// S_L-S_G = {}
+				// S_G-S_L = { y, x } => destruct y, x
+			}
+			// S_L3 = { y, x }
+		L3: sout | "L3" | endl;
+			sout | "goto L2-2" | endl;
+			// S_G = { y, x }
+			goto L2; // jump back, do not destruct
+			// S_L-S_G = {}
+			// S_G-S_L = {}
+	}
+	// S_L4 = {}
+	L4: sout | "L4" | endl;
+	if (i == 4) {
+		sout | "goto L0" | endl;
+		// S_G = {}
+		goto L0;
+		// S_L-S_G = {}
+		// S_G-S_L = {}
+	}
+#ifdef ERR2
+	// S_G = {}
+	if (i == 5) goto L2; // this is an error in g++ because it skips initialization of y, x
+	// S_L-S_G = { y, x } => non-empty, so error
+#endif
+}
+
+// TODO: implement __label__ and uncomment these lines
+void computedGoto() {
+  // __label__ bar;
+  void *ptr;
+  ptr = &&foo;
+  goto *ptr;
+  assert(false);
+foo: ;
+//   void f() {
+//     ptr = &&bar;
+//     goto *ptr;
+//     assert(false);
+//   }
+//   f();
+//   assert(false);
+// bar: ;
+}
+
+int main() {
+	sepDisable(sout);
+	for (int i = 0; i < 4; i++) {
+		f(i);
+	}
+	sout | endl;
+	g();
+	sout | endl;
+	h();
+
+	computedGoto();
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa dtor-early-exit" //
+// End: //
Index: tests/raii/globals.c
===================================================================
--- tests/raii/globals.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/globals.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,83 @@
+#include <fstream.hfa>
+
+struct value_t {
+	int value;
+};
+
+void ?{}( value_t & this ) { this.value = 22; }
+
+//Standard case
+struct g_t {
+	value_t val;
+};
+
+void ?{}( g_t & this ) { (this.val){}; }
+
+g_t g;
+
+//Autogen case
+struct ga_t {
+	value_t val;
+};
+
+ga_t ga;
+
+//Inline case
+struct gi_t;
+void ?{}( gi_t & this );
+
+struct gi_t {
+	value_t val;
+} gi;
+
+void ?{}( gi_t & this ) { (this.val){}; }
+
+//Inline autogen case
+struct gia_t {
+	value_t val;
+} gia;
+
+//Static case
+struct gs_t {
+	value_t val;
+};
+
+void ?{}( gs_t & this ) { (this.val){}; }
+
+static gs_t gs;
+
+//Static autogen case
+struct gsa_t {
+	value_t val;
+};
+
+static gsa_t gsa;
+
+//Static inline case
+struct gsi_t;
+void ?{}( gsi_t & this );
+
+static struct gsi_t {
+	value_t val;
+} gsi;
+
+void ?{}( gsi_t & this ) { (this.val){}; }
+
+//Static inline autogen case
+static struct gsia_t {
+	value_t val;
+} gsia;
+
+int main() {
+	sout | "static\t\tinline\t\tautogen\t\tvalue" | endl;
+
+	sout | "no \t\tno \t\tno \t\t" | g.val.value    | endl;
+	sout | "no \t\tno \t\tyes\t\t" | ga.val.value   | endl;
+	sout | "no \t\tyes\t\tno \t\t" | gi.val.value   | endl;
+	sout | "no \t\tyes\t\tyes\t\t" | gia.val.value  | endl;
+	sout | "yes\t\tno \t\tno \t\t" | gs.val.value   | endl;
+	sout | "yes\t\tno \t\tyes\t\t" | gsa.val.value  | endl;
+	sout | "yes\t\tyes\t\tno \t\t" | gsi.val.value  | endl;
+	sout | "yes\t\tyes\t\tyes\t\t" | gsia.val.value | endl;
+
+}
Index: tests/raii/init_once.c
===================================================================
--- tests/raii/init_once.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/init_once.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,195 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// init_once.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Tue Jun 14 15:43:35 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Jul  9 11:30:29 2016
+// Update Count     : 3
+//
+
+// want to ensure ctor/dtor called at most once per object.
+// whole point of ctor/dtor is that you don't know what's in
+// memory when it's first called, so can't rely on member to
+// determine if this is true. instead, keep an array
+// of addresses that have been constructed and remove the element
+// when it's destructed (and vice-versa)
+
+//*** setup
+extern "C" {
+#define NULL 0
+void * malloc(size_t);
+void free(void *);
+#define assert(cond) if (! (cond)) { printf("Assertion failed: (%s) at %s:%d\n", #cond, __FILE__, __LINE__); abort(); }
+void *memset(void *s, int c, size_t n);
+}
+
+// dummy type
+struct init_once { int * x; };
+
+// array and operations
+// const int size = 1024;
+#define size 1024
+struct array {
+	init_once * elems[size];
+	int length;
+};
+void remove(array * arr, init_once * x) {
+	for (int i = 0; i < arr->length; i++) {
+		if ( arr->elems[i] == x ) {
+			arr->elems[i] = arr->elems[--arr->length];
+			return;
+		}
+	}
+}
+void insert(array * arr, init_once * x) {
+	assert( arr->length < size );
+	arr->elems[arr->length++] = x;
+}
+int find(array * arr, init_once * x) {
+	for (int i = 0; i < arr->length; i++) {
+		if ( arr->elems[i] == x ) {
+			return i;
+		}
+	}
+	return -1;
+}
+void ?{}(array & arr) {
+	memset(arr.elems, 0, sizeof(arr.elems));
+	arr.length = 0;
+}
+array constructed;
+array destructed;
+
+void ?{}(init_once & x) {
+	assert( find( &constructed, &x ) == -1 );
+	remove( &destructed, &x );
+	insert( &constructed, &x );
+
+	x.x = (int *)malloc(sizeof(int));
+}
+
+void ?{}(init_once & x, init_once other) {
+	x{};  // reuse default ctor
+}
+
+void ^?{}(init_once & x) {
+	assert( find( &destructed, &x ) == -1 );
+	remove( &constructed, &x );
+	insert( &destructed, &x );
+
+	free(x.x);
+}
+//*** end setup
+
+// test globals
+init_once x;
+init_once y = x;
+
+void static_variable() {
+	static init_once x;
+}
+
+int main() {
+	// local variables
+	init_once x;
+	init_once y = x;
+
+	// block scoped variables
+	{
+		init_once x;
+		init_once y = x;
+	}
+
+	// loop variables
+	for (int i = 0 ; i < 10; i++) {
+		init_once x;
+		init_once y = x;
+	}
+	int i = 0;
+	while (i < 10) {
+		init_once x;
+		init_once y = x;
+		i++;
+	}
+
+	// declared in a switch block with a break
+	for (int i = 0; i < 10; i++) {
+		switch (10) {
+			case 1: {
+				init_once x;
+				init_once y = x;
+				x{}; // ensure this doesn't execute
+				break;
+			}
+			case 10: {
+				init_once x;
+				init_once y = x;
+			} // fall through
+			default: {
+				init_once x;
+				init_once y = x;
+				break;
+			}
+		}
+	}
+
+	// labeled break/continue
+	L3: for (int k = 0; k < 10; k++) {
+		init_once x;
+		init_once y = x;
+		L1: for (int i = 0; i < 10; i++){
+			init_once x;
+			init_once y = x;
+			L2: for (int j = 0; j < 10; j++) {
+				init_once x;
+				init_once y = x;
+
+				if (i == 0) continue L1;
+				if (i == 1) continue L2;
+				if (i == 2) break L2;
+				if (i == 3) break L1;
+				if (i == 4) continue L3;
+				if (i == 9) break L3;
+				// if (i == 5) goto ;
+			}
+		}
+	}
+
+	// labeled break/continue with if
+	LL1: for (int k = 0; k < 10; k++) {
+		init_once x;
+		init_once y = x;
+		LL2: for (int i = 0; i < 10; i++){
+			init_once x;
+			init_once y = x;
+			LL3: if( i < 5) {
+				init_once x;
+				init_once y = x;
+
+				if (i == 0) continue LL2;
+				if (i == 2) break LL3;
+				if (i == 3) break LL2;
+				if (i == 4) continue LL1;
+			} else {
+				if (i == 9) break LL1;
+				// if (i == 5) goto ;
+			}
+		}
+	}
+
+	// function-scoped static variable
+	for (int i = 0; i < 10; i++) {
+		static_variable();
+	}
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa init_once.c" //
+// End: //
Index: tests/raii/memberCtors.c
===================================================================
--- tests/raii/memberCtors.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/memberCtors.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,91 @@
+struct WrappedInt {
+  int x;
+};
+
+void ?{}(WrappedInt & this) {
+  printf("constructing int\n");
+  this.x = 0;
+}
+
+void ?{}(WrappedInt & this, WrappedInt other) {
+  printf("copy constructing int: %d\n", other.x);
+  this.x = other.x;
+}
+
+void ?{}(WrappedInt & this, int x) {
+  printf("constructing int: %d\n", x);
+  this.x = x;
+}
+
+void ^?{}(WrappedInt & this) {
+  printf("destructing int: %d\n", this.x);
+}
+
+void ?=?(WrappedInt & this, int x) {
+  printf("assigning int: %d %d\n", this.x, x);
+  this.x = x;
+}
+
+struct A {
+  WrappedInt x, y, z;
+};
+
+void ?{}(A & a) {
+  // currently must define default ctor, since there's no "= default" syntax
+}
+
+void ?{}(A & a, int x) {
+  printf("begin construct A\n");
+  printf("construct a.x\n");
+  (a.x){ x+999 };
+  printf("assign a.y\n");
+  a.y = 0; // not a constructor - default constructor will be inserted
+  printf("end construct A\n");
+} // z never constructed - will be automatically default constructed
+
+void ?{}(A & this, A other) {
+  printf("begin copy construct A\n");
+  printf("copy construct this.x\n");
+  (this.x){ other.x };
+  printf("assign this.y\n");
+  this.y = other.y; // not a constructor - copy constructor will be inserted
+  printf("end copy construct A\n");
+} // z never constructed - will be automatically copy constructed
+
+A ?=?(A & this, A other) {
+  printf("begin ?=? A\n");
+  this.x = other.x;
+  this.y = other.y;
+  this.z = other.z;
+  printf("end ?=? A\n");
+  return this;
+}
+
+struct B {
+  A a1, a2, a3;
+};
+
+void ?{}(B & b) {
+  printf("begin construct B\n");
+  printf("assign b.a2\n");
+  b.a2 = (A) { 2 };
+  printf("construct b.a1\n");
+  (b.a1){ 1 };
+#ifdef ERR1
+  (b.a2){ b.a3 }; // error, b->a2 was used previously but is explicitly constructed
+#endif
+  printf("end construct B\n");
+} // a2, a3 never constructed - will be automatically default constructed
+
+void ^?{}(B & b) {
+  b.a2 = (A) { 0 };
+  ^(b.a1){};
+} // a2, a3 never destructed - will be automatically destructed
+
+int main() {
+  printf("Before declaration of b1\n");
+  B b1;
+  printf("Before declaration of b2\n");
+  B b2 = b1;
+  printf("End of main\n");
+}
Index: tests/raii/multiDimension.c
===================================================================
--- tests/raii/multiDimension.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/multiDimension.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,75 @@
+struct X {
+  int a;
+  int * ptr;
+};
+
+void ?{}(X & this) {
+  printf("default constructing\n");
+  (this.a){ 123 };
+  this.ptr = (int *)malloc(sizeof(int));
+}
+
+void ?{}(X & this, X other) {
+  printf("copy constructing\n");
+  (this.a){ other.a };
+  this.ptr = (int *)malloc(sizeof(int));
+}
+
+void ?{}(X & this, int a) {
+  printf("constructing with %d\n", a);
+  (this.a){ a };
+  this.ptr = (int *)malloc(sizeof(int));
+}
+
+void ^?{}(X & this) {
+  printf("destructing\n");
+  free(this.ptr);
+}
+
+X ?=?(X & this, X other) {
+  this.a = other.a;
+  return this;
+}
+
+X global[10][10] = {
+  { 1, { 2 }, { 3 }, { 4 }, 5, 6, 7, 8, 9, 10, 11, 12 },
+  { 1, 2, 3, 4 },
+  { { 1234567 } }
+};
+
+X global2[3][3][3] = {
+  {
+    { 1, 2, 3 },
+    { 4, 5, 6 },
+    { 7, 8, 9 },
+    { 10, 11, 12 }
+  },
+  {
+    { 0, 0, 0 }
+  }
+};
+
+int foo() {
+  static X abc[3][3] = {
+    { 11, 22, 33, 44 },
+    { 55, 66 },
+    { 77 },
+    { 88, 99, 1010 }
+  };
+}
+
+// ensure constructed const arrays continue to compile
+const int global[1] = { -2 };
+
+int main() {
+  X abc[4][4] = {
+    { 999, 1111 },
+    { 1, 2, 3, 4, 5 },
+    {},
+    { 0 },
+    { 88 }
+  };
+
+  foo();
+  foo();
+}
Index: tests/raii/multiDimension.txt
===================================================================
--- tests/raii/multiDimension.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/raii/multiDimension.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,304 @@
+constructing with 1
+constructing with 2
+constructing with 3
+constructing with 4
+constructing with 5
+constructing with 6
+constructing with 7
+constructing with 8
+constructing with 9
+constructing with 10
+constructing with 1
+constructing with 2
+constructing with 3
+constructing with 4
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+constructing with 1234567
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+constructing with 1
+constructing with 2
+constructing with 3
+constructing with 4
+constructing with 5
+constructing with 6
+constructing with 7
+constructing with 8
+constructing with 9
+constructing with 0
+constructing with 0
+constructing with 0
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+default constructing
+constructing with 999
+constructing with 1111
+default constructing
+default constructing
+constructing with 1
+constructing with 2
+constructing with 3
+constructing with 4
+default constructing
+default constructing
+default constructing
+default constructing
+constructing with 0
+default constructing
+default constructing
+default constructing
+constructing with 11
+constructing with 22
+constructing with 33
+constructing with 55
+constructing with 66
+default constructing
+constructing with 77
+default constructing
+default constructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
+destructing
Index: tests/random.c
===================================================================
--- tests/random.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/random.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,79 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// random.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Jul  5 21:29:30 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jan  2 12:19:34 2018
+// Update Count     : 19
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>										// random
+#include <unistd.h>										// getpid
+
+int main() {
+	// srandom( getpid() );								// set random seed
+	srandom( 1003 );									// fixed seed for repeatable tests
+
+	// test polymorphic calls to random and stream
+	char c = random();
+	sout | c | endl;
+	c = random( 'A' );
+	sout | c | endl;
+	c = random( 'A', 'Z' );
+	sout | c | endl;
+
+	int i = random();
+    sout | i | endl;
+	i = random( 10 );
+    sout | i | endl;
+	i = random( -10, 20 );
+    sout | i | endl;
+
+	unsigned int ui = random();
+    sout | ui | endl;
+	ui = random( 10u );
+    sout | ui | endl;
+	ui = random( 10u, 20u );
+    sout | ui | endl;
+
+	long int li = random();
+    sout | li | endl;
+	li = random( 10l );
+    sout | li | endl;
+	li = random( -10l, 20l );
+    sout | li | endl;
+
+	unsigned long int uli = random();
+    sout | uli | endl;
+	uli = random( 10ul );
+    sout | uli | endl;
+	uli = random( 10ul, 20ul );
+    sout | uli | endl;
+
+    float f = random();
+    sout | f | endl;
+
+    double d = random();
+    sout | d | endl;
+
+    float _Complex fc = random();
+    sout | fc | endl;
+
+    double _Complex dc = random();
+    sout | dc | endl;
+
+    long double _Complex ldc = random();
+    sout | ldc | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa random.c" //
+// End: //
Index: tests/rational.c
===================================================================
--- tests/rational.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/rational.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,101 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// rational.c -- test rational number package
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Mar 28 08:43:12 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Oct 10 23:25:04 2017
+// Update Count     : 67
+//
+
+#include <rational.hfa>
+#include <limits.hfa>
+#include <stdlib.hfa>
+#include <fstream.hfa>
+
+// UNNECESSARY, FIX ME
+void ?{}( int & this ) { this = 0; }
+void ?{}( int & this, zero_t ) { this = 0; }
+void ?{}( int & this, one_t ) { this = 1; }
+double convert( int i ) { return (double)i; }
+int convert( double d ) { return (int)d; }
+
+int main() {
+	sout | "constructor" | endl;
+	Rational(int) a = { 3 }, b = { 4 }, c;
+	sout | a | b | c | endl;
+
+	a = (Rational(int)){ 4, 8 };
+	b = (Rational(int)){ 5, 7 };
+	sout | a | b | endl;
+	a = (Rational(int)){ -2, -3 };
+	b = (Rational(int)){ 3, -2 };
+	sout | a | b | endl;
+	a = (Rational(int)){ -2, 3 };
+	b = (Rational(int)){ 3, 2 };
+	sout | a | b | endl;
+
+	sout | "logical" | endl;
+	a = (Rational(int)){ -2 };
+	b = (Rational(int)){ -3, 2 };
+	sout | a | b | endl;
+//	sout | a == 1 | endl; // FIX ME
+	sout | a != b | endl;
+	sout | a <  b | endl;
+	sout | a <= b | endl;
+	sout | a >  b | endl;
+	sout | a >= b | endl;
+
+	sout | "arithmetic" | endl;
+	sout | a | b | endl;
+	sout | a + b | endl;
+	sout | a - b | endl;
+	sout | a * b | endl;
+	sout | a / b | endl;
+
+	sout | "conversion" | endl;
+	a = (Rational(int)){ 3, 4 };
+	sout | widen( a ) | endl;
+	a = (Rational(int)){ 1, 7 };
+	sout | widen( a ) | endl;
+	a = (Rational(int)){ 355, 113 };
+	sout | widen( a ) | endl;
+	sout | narrow( 0.75, 4 ) | endl;
+	sout | narrow( 0.14285714285714, 16 ) | endl;
+	sout | narrow( 3.14159265358979, 256 ) | endl;
+
+	sout | "decompose" | endl;
+	int n, d;
+//	[n, d] = a;
+//	sout | a | n | d | endl;
+
+	sout | "more tests" | endl;
+	Rational(int) x = { 1, 2 }, y = { 2 };
+	sout | x - y | endl;
+	sout | x > y | endl;
+	sout | x | numerator( x, 2 ) | x | endl;
+	sout | y | denominator( y, -2 ) | y | endl;
+
+	Rational(int) z = { 0, 5 };
+	sout | z | endl;
+
+	sout | x | numerator( x, 0 ) | x | endl;
+
+	x = (Rational(int)){ 1, MAX } + (Rational(int)){ 1, MAX };
+	sout | x | endl;
+	x = (Rational(int)){ 3, MAX } + (Rational(int)){ 2, MAX };
+	sout | x | endl;
+
+	sin | a | b;
+	sout | a | b | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa rational.c" //
+// End: //
Index: tests/references.c
===================================================================
--- tests/references.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/references.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,123 @@
+//
+// 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.
+//
+// references.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Wed Aug 23 16:11:50 2017
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Aug 23 16:12:03
+// Update Count     : 2
+//
+
+struct Y { int i; };
+void ?{}(Y & y) { printf("Default constructing a Y\n"); }
+void ?{}(Y & y, Y other) { printf("Copy constructing a Y\n"); }
+void ^?{}(Y & y) { printf("Destructing a Y\n"); }
+Y ?=?(Y & y, Y other) { printf("Assigning a Y\n"); return y; }
+void ?{}(Y & y, int i) { printf("Value constructing a Y %d\n", i); y.i = i; }
+
+struct X { Y & r; Y y; };
+void ?{}(X & x) {
+	// ensure that r is not implicitly constructed
+}
+void ?{}(X & x, X other) {
+	// ensure that r is not implicitly constructed
+}
+void ^?{}(X & x) {
+	// ensure that r is not implicitly destructed
+}
+X ?=?(X & x, X other) { return x; }
+
+// ensure that generated functions do not implicitly operate on references
+struct Z { Y & r; Y y; };
+
+// test user-defined reference-returning function
+int & toref( int * p ) { return *p; }
+// test user-defined reference-parameter function
+int * toptr( int & r ) { return &r; }
+
+void changeRef( int & r ) {
+	r++;
+}
+
+int main() {
+	int x = 123456, x2 = 789, *p1 = &x, **p2 = &p1, ***p3 = &p2,
+		&r1 = x,    &&r2 = r1,   &&&r3 = r2;
+	***p3 = 3;                          // change x
+	**p3 = &x;                          // change p1
+	*p3 = &p1;                          // change p2
+	int y = 0, z = 11, & ar[3] = { x, y, z };    // initialize array of references
+	// &ar[1] = &z;                        // change reference array element
+	// typeof( ar[1] ) p = 3;              // is int, i.e., the type of referenced object
+	// typeof( &ar[1] ) q = &x;            // is int *, i.e., the type of pointer
+	// _Static_assert( sizeof( ar[1] ) == sizeof( int ), "Array type should be int." );   // is true, i.e., the size of referenced object
+	// _Static_assert( sizeof( &ar[1] ) == sizeof( int *), "Address of array should be int *." ); // is true, i.e., the size of a reference
+
+	((int*&)&r3) = &x;                  // change r1, (&*)**r3
+	x = 3;
+	// test that basic reference properties are true - r1 should be an alias for x
+	printf("%d %d %d\n", x, r1, &x == &r1);
+	r1 = 12;
+	printf("%d %d %d\n", x, r1, &x == &r1);
+
+	// test that functions using basic references work
+	printf("%d %d %d %d\n", toref(&x), toref(p1), toptr(r1) == toptr(x), toptr(r1) == &x);
+
+	changeRef( x );
+	changeRef( y );
+	changeRef( z );
+	printf("%d %d %d\n", x, y, z);
+	changeRef( r1 );
+	printf("%d %d\n", r1, x);
+
+	r3 = 6;                               // change x, ***r3
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
+	&r3 = &x2;                            // change r1 to refer to x2, (&*)**r3
+	r3 = 999;                             // modify x2
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x2 was changed
+	((int**&)&&r3) = p2;                  // change r2, (&(&*)*)*r3, ensure explicit cast to reference works
+	r3 = 12345;                           // modify x
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
+	&&&r3 = p3;                           // change r3 to p3, (&(&(&*)*)*)r3
+	((int&)r3) = 22222;                   // modify x, ensure explicit cast to reference works
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
+
+	// test that reference members are not implicitly constructed/destructed/assigned
+	X x1, x2 = x1;
+	x1 = x2;
+
+	Z z1, z2 = z1;
+	Y z1r = 56, z2r = 78;
+	&z1.r = &z1r;
+	&z2.r = &z2r;
+
+	z1 = z2;
+
+	// test rvalue-to-reference conversion
+	{
+		struct S { double x, y; };
+		void f( int & i, int & j, S & s, int v[] ) {
+			printf("%d %d { %g, %g }, [%d, %d, %d]\n", i, j, s.[x, y], v[0], v[1], v[2]);
+		}
+		void g(int & i) { printf("%d\n", i); }
+		void h(int &&& i) { printf("%d\n", i); }
+
+		int &&& r = 3;  // rvalue to reference
+		int i = r;
+		printf("%d %d\n", i, r);  // both 3
+
+		g( 3 );          // rvalue to reference
+		h( (int &&&)3 ); // rvalue to reference
+
+		int a = 5, b = 4;
+		f( 3, a + b, (S){ 1.0, 7.0 }, (int [3]){ 1, 2, 3 } ); // two rvalue to reference
+	}
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/result.c
===================================================================
--- tests/result.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/result.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,68 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// result.c --
+//
+// Author           : Andrew Beach
+// Created On       : Thr May 25 16:50:00 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 20 15:24:12 2017
+// Update Count     : 1
+//
+
+#include <assert.h>
+#include <containers/result.hfa>
+
+void checkPredicates() {
+	result(int, char) pass = {1, 4};
+	assert(pass);
+	assert(has_value(&pass));
+
+	result(int, char) fail = {0, '!'};
+	assert((fail ? false : true));
+	assert(!has_value(&fail));
+}
+
+/* Waiting for bug#11 to be fixed.
+void checkNamedConstructors() {
+	result(int, char) = result_value(4);
+	assert(has_value(&pass));
+
+	result(int, char) fail = result_error('!');
+	assert(!has_value(&fail));
+}
+*/
+
+void checkGetters() {
+	result(int, char) pass = {1, 4};
+	assert(4 == get(&pass));
+
+	result(int, char) fail = {0, '!'};
+	assert('!' == get_error(&fail));
+}
+
+void checkSetters() {
+	result(int, char) fee = {1, -7};
+	assert(-7 == get(&fee));
+	set(&fee, 42);
+	assert(42 == get(&fee));
+	set_error(&fee, '@');
+	assert('@' == get_error(&fee));
+
+	result(int, char) fy = {1, -7};
+	fee = fy;
+	assert(-7 == get(&fee));
+	result(int, char) foe = {0, '!'};
+	fee = foe;
+	assert('!' == get_error(&fee));
+}
+
+int main(int argc, char * argv[]) {
+	checkPredicates();
+	//checkNamedConstructors();
+	checkGetters();
+	checkSetters();
+}
Index: tests/scope.c
===================================================================
--- tests/scope.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/scope.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,73 @@
+int x;
+typedef double y;
+typedef float t;
+y z;
+//otype u = struct { int a; double b; };
+typedef struct { int a; double b; } u;
+int f( int y );
+y q;
+struct x { int x; };
+
+y w( y y, u v ) {
+//	otype x | { x t(u); };
+	void ?{}(struct x *);
+	void ^?{}(struct x *);
+	extern struct x t( u );
+	u u = y;
+	struct x z = t(u);
+}
+
+y p;
+
+trait has_u( otype z ) {
+	z u(z);
+};
+
+forall( otype t | has_u( t ) )
+y q( t the_t ) {
+	t y = u( the_t );
+}
+
+t f( y p ) {
+	int y;
+	typedef char x;
+	{
+		x y;
+		typedef x z;
+		{
+			z x;
+			typedef z y;
+			y z = x;
+		}
+		z x = y;
+	}
+	x q = y;
+}
+
+void some_func() {}
+
+t g( void ) {
+	typedef char x;
+//	try {
+		some_func();
+//	} catch ( x x ) {
+//		t y = x;
+//	}
+	x z;
+}
+
+y q( i )												/* K&R style */
+	int i;
+{
+	switch ( i ) {
+		y q = i;
+	  case 0:
+		return q;
+	  default:
+		return i;
+	}
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/scopeErrors.c
===================================================================
--- tests/scopeErrors.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/scopeErrors.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+int thisIsAnError;
+int thisIsAnError;
+
+int thisIsNotAnError;
+float thisIsNotAnError;
+
+int thisIsAlsoNotAnError() {
+  int thisIsNotAnError;
+}
+
+int thisIsAlsoNotAnError( double x ) {
+}
+
+double thisIsStillNotAnError( double );
+double thisIsStillNotAnError( double );
+
+double butThisIsAnError( double ) {
+}
+
+double butThisIsAnError( double ) {
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/searchsort.c
===================================================================
--- tests/searchsort.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/searchsort.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,151 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// searchsort.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Thu Feb  4 18:17:50 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug  9 07:54:57 2018
+// Update Count     : 101
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>										// bsearch, qsort
+#include <stdlib.h>										// C version of bsearch
+
+int comp( const void * t1, const void * t2 ) { return *(int *)t1 < *(int *)t2 ? -1 : *(int *)t2 < *(int *)t1 ? 1 : 0; }
+
+int main( void ) {
+	const unsigned int size = 10;
+	int iarr[size];
+
+	for ( i; 0u ~ size ) {
+		iarr[i] = size - i;
+		sout | iarr[i] | ", ";
+	} // for
+	sout | endl | endl;
+
+	// ascending sort/search by changing < to >
+	qsort( iarr, size );
+	for ( i; 0u ~ size ) {
+		sout | iarr[i] | ", ";
+	} // for
+	sout | endl;
+	for ( i; 0u ~ size ) {		// C version
+		int key = size - i;
+		int * v = bsearch( &key, iarr, size, sizeof( iarr[0] ), comp );
+		sout | key | ':' | *v | ", ";
+	} // for
+	sout | endl;
+
+	for ( i; 0u ~ size ) {
+		int * v = bsearch( size - i, iarr, size );
+		sout | size - i | ':' | *v | ", ";
+	} // for
+	sout | endl;
+	for ( i; 0u ~ size ) {
+		unsigned int posn = bsearch( size - i, iarr, size );
+		sout | size - i | ':' | iarr[posn] | ", ";
+	} // for
+	sout | endl | endl;
+
+	// descending sort/search by changing < to >
+	for ( i; 0u ~ size ) {
+		iarr[i] = i + 1;
+		sout | iarr[i] | ", ";
+	} // for
+	sout | endl;
+	{
+		int ?<?( int x, int y ) { return x > y; }
+		qsort( iarr, size );
+		for ( i; 0u ~ size ) {
+			sout | iarr[i] | ", ";
+		} // for
+		sout | endl;
+		for ( i; 0u ~ size ) {
+			int * v = bsearch( size - i, iarr, size );
+			sout | size - i | ':' | *v | ", ";
+		} // for
+		sout | endl;
+		for ( i; 0u ~ size ) {
+			unsigned int posn = bsearch( size - i, iarr, size );
+			sout | size - i | ':' | iarr[posn] | ", ";
+		} // for
+	}
+	sout | endl | endl;
+
+	double darr[size];
+	for ( i; 0u ~ size ) {
+		darr[i] = size - i + 0.5;
+		sout | darr[i] | ", ";
+	} // for
+	sout | endl;
+	qsort( darr, size );
+	for ( i; 0u ~ size ) {
+		sout | darr[i] | ", ";
+	} // for
+	sout | endl;
+	for ( i; 0u ~ size ) {
+		double * v = bsearch( size - i + 0.5, darr, size );
+		sout | size - i + 0.5 | ':' | *v | ", ";
+	} // for
+	sout | endl;
+	for ( i; 0u ~ size ) {
+		unsigned int posn = bsearch( size - i + 0.5, darr, size );
+		sout | size - i + 0.5 | ':' | darr[posn] | ", ";
+	} // for
+	sout | endl | endl;
+
+	struct S { int i, j; } sarr[size];
+	int ?<?( S t1, S t2 ) { return t1.i < t2.i && t1.j < t2.j; }
+	ofstream & ?|?( ofstream & os, S v ) { return os | v.i | ' ' | v.j; }
+	for ( i; 0u ~ size ) {
+		sarr[i].i = size - i;
+		sarr[i].j = size - i + 1;
+		sout | sarr[i] | ", ";
+	} // for
+	sout | endl;
+	qsort( sarr, size );
+	for ( i; 0u ~ size ) {
+		sout | sarr[i] | ", ";
+	} // for
+	sout | endl;
+	for ( i; 0u ~ size ) {
+		S temp = { size - i, size - i + 1 };
+		S * v = bsearch( temp, sarr, size );
+		sout | temp | ':' | *v | ", ";
+	} // for
+	sout | endl;
+	for ( i; 0u ~ size ) {
+		S temp = { size - i, size - i + 1 };
+		unsigned int posn = bsearch( temp, sarr, size );
+		sout | temp | ':' | sarr[posn] | ", ";
+	} // for
+	sout | endl | endl;
+	{
+		unsigned int getKey( const S & s ) { return s.j; }
+		for ( i; 0u ~ size ) {
+			sout | sarr[i] | ", ";
+		} // for
+		sout | endl;
+		for ( i; 0u ~ size ) {
+			S * v = bsearch( size - i + 1, sarr, size );
+			sout | size - i + 1 | ':' | *v | ", ";
+		} // for
+		sout | endl;
+		for ( i; 0u ~ size ) {
+			unsigned int posn = bsearch( size - i + 1, sarr, size );
+			sout | size - i + 1 | ':' | sarr[posn] | ", ";
+		} // for
+		sout | endl | endl;
+	}
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa searchsort.c" //
+// End: //
Index: tests/shortCircuit.c
===================================================================
--- tests/shortCircuit.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/shortCircuit.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,55 @@
+void g( float f ) {}
+void g( int i ) {}
+
+void f( int a ) {
+	int b;
+	float c;
+	g( a ? b : c );
+	g( a && c );
+	g( a || b );
+}
+
+void g() {
+	int a;
+	struct { int b; } a;
+	if ( a ) {
+		while ( a ) {
+			int *b;
+			for ( b; a; b ) {
+			}
+		}
+	}
+}
+
+#include <fstream.hfa>
+
+struct test_t {
+	int x;
+};
+
+int ?!=?( test_t lhs, int rhs ) {
+	sout | lhs.x | " ";
+	return lhs.x != 0;
+}
+
+
+int main(int argc, char const *argv[])
+{
+	test_t true_val, false_val;
+	true_val.x = 1;
+	false_val.x = 0;
+
+	true_val && false_val;
+	sout | endl;
+
+	true_val || false_val;
+	sout | endl;
+
+	false_val && true_val;
+	sout | endl;
+
+	false_val || true_val;
+	sout | endl;
+
+	return 0;
+}
Index: tests/simpleGenericTriple.c
===================================================================
--- tests/simpleGenericTriple.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/simpleGenericTriple.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,43 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// simpleGenericTriple.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Tue Nov 15 17:24:32 2016
+// Last Modified By : Rob Schluntz
+// Last Modified On : Tue Nov 15 17:27:28 2016
+// Update Count     : 3
+//
+
+forall(otype T)
+struct T3 {
+	T f0, f1, f2;
+};
+
+forall(otype T | { T ?+?(T, T); })
+T3(T) ?+?(T3(T) x, T3(T) y) {
+	T3(T) z = { x.f0+y.f0, x.f1+y.f1, x.f2+y.f2 };
+	return z;
+}
+
+int main() {
+  int x1 = 123, x3 = 456;
+  double x2 = 999.123;
+  struct T3(int) Li = { x1, (int)x2, x3 };
+  struct T3(int) Ri = { 9, 2, 3 };
+  struct T3(int) reti = Li+Ri;
+  printf("%d %d %d\n", reti.f0, reti.f1, reti.f2);
+
+  struct T3(double) Ld = { x1, x2, x3 };
+  struct T3(double) Rd = { 9, 2, 3 };
+  struct T3(double) retd = Ld+Rd;
+  printf("%g %g %g\n", retd.f0, retd.f1, retd.f2);
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/stdincludes.c
===================================================================
--- tests/stdincludes.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/stdincludes.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,54 @@
+// 
+// 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.
+// 
+// stdincludes.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Tue Aug 29 08:26:14 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 30 07:56:39 2017
+// Update Count     : 5
+// 
+
+// C11 standard headers
+
+#include <assert.h>
+#include <complex.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fenv.h>
+#include <float.h>
+#include <inttypes.h>
+//#include <iso646.h>										// does not exist on linux
+#include <limits.h>
+#include <locale.h>
+#include <malloc.h>										// extra
+#include <math.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdalign.h>
+#include <stdarg.h>
+#include <stdatomic.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdnoreturn.h>
+#include <string.h>
+#include <tgmath.h>
+#include <time.h>
+#include <uchar.h>
+#include <unistd.h>										// extra
+#include <wchar.h>
+#include <wctype.h>
+
+int main() {}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa stdincludes.c" //
+// End: //
Index: tests/structMember.c
===================================================================
--- tests/structMember.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/structMember.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,100 @@
+typedef int TD;
+extern struct TTT {};
+
+struct S {
+	int m1:3, m2:4;
+	int :2;
+	int :3, :4;
+	int m3;
+	int m4, m5, m6;
+	int *m7, *m8, *m9;
+	__extension__ int (*m10)();
+	__extension__ int *(*m11)(int);
+//	TD (TD);
+
+// Cforall declarations
+
+	* int m12, m13;
+	* [ * int ] (int) m14;
+
+// C anonymous declarations (padding)
+
+	int :4;
+	int :4, :6;
+
+// Cforall anonymous declarations (padding)
+
+	int @;
+	TD @;
+	int @, @, @;
+	int * @ , @, @;
+	int * @, * @, * @;
+	* int @, @, @;
+	struct TTT @;
+	TTT @, @;
+	int @ :4, @ :6;
+	* int @, @;
+	int (*@)();
+	int (*@)(int), (*@)(int);
+	* [int](int) @, @;
+	int (**@)( int );
+	* * [int](int) @;
+
+// C aggregate open declarations
+
+	__extension__ union { int i; };
+	struct T { int k; };
+
+// Cforall forward declaration
+
+	struct PPP;
+	__extension__ struct QQQ;
+
+// C useless declarations
+
+	int;
+	TD;
+	unsigned int;
+	__extension__ long double;
+	_Complex;
+	double _Complex;
+	volatile zero_t;
+	const one_t;
+	S;
+	.S;
+	S.T;
+	.S.T;
+	forall( otype S, otype T ) struct W {
+		struct X {};
+	};
+	W(int);
+	W(int).X;
+};
+
+struct S s;
+
+// Cforall Plan 9 declarations
+
+struct UUU {};
+extern struct SSS {
+	inline struct WWW {};
+	inline UUU;
+	inline UUU *, **;
+	inline UUU (*)( int p );
+	inline int;
+	inline int *;
+	inline * int;
+	inline int (*)( int p );
+	inline * [int](int p);
+};
+
+union U {
+	[5] int m1;
+	int m2[5];
+	* int m3;
+	int *m4;
+} u;
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/subrange.c
===================================================================
--- tests/subrange.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/subrange.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,63 @@
+// A small context defining the notion of an ordered otype.  (The standard
+// library should probably contain a context for this purpose.)
+trait ordered(otype T) {
+    int ?<?(T, T), ?<=?(T, T);
+};
+
+// A subrange otype resembling an Ada subotype with a base otype and a range
+// constraint.
+otype subrange(otype base_t | ordered(base_t), base_t low = 0, base_t high = 8) = base_t;
+
+// Note that subrange() can be applied to floating-point and pointer otypes, not
+// just integral otypes.
+//   This requires a "otype generator" extension to Cforall.  Type generators
+// must accept otype and non-otype parameters, which is beyond what we discussed
+// previously.  Type parameters must be usable in the declaration of
+// subsequent parameters: parameter T is used to declare parameters "low"
+// and "high".
+
+// Example usage:
+subrange(unsigned, 1, 31) day_of_month;
+subrange(char, 'a', 'z')  lcase;
+subrange(int, 0, (rand() & 0xF) ) foo;
+
+// What sorts of expressions can be used as arguments of otype generators?  Is
+// "subrange(int, 0, rand() & 0xF)" legal?  Probably.  The nearest C equivalent
+// to the "low" and "high" arguments is the array size in a variable-length
+// array declaration, and C allows assignment expressions there.
+
+// Convenient access to subrange bounds, for instance for iteration:
+forall (otype T, T low, T high)
+T lbound( subrange(T, low, high) v) {
+    return low;
+}
+
+forall (otype T, T low, T high)
+T hbound( subrange(T, low, high) v) {
+    return high;
+}
+
+// Example usage:
+unsigned lday = lbound(day_of_month);
+
+// Assignment from the base otype, with bounds checking.  I'll ignore the issue
+// of exception handling here.  Inlining allows the compiler to eliminate
+// bounds checks.
+forall (otype T | ordered(T), T low, T high)
+inline subrange(T, low, high) ?=?(subrange(T, low, high)* target, T source) {
+    if (low <= source && source <= high) *((T*)target) = source;
+    else abort();
+    return target;
+}
+
+// Assignment between subranges with a common base otype.  The bounds check
+// compares range bounds so that the compiler can optimize checks away when the
+// ranges are known to overlap.
+forall (otype T | ordered(T), T t_low, T t_high, T s_low, T s_high)
+inline subrange(T, t_low, t_high) ?=?(subrange(T, t_low, t_high)* target,
+				      subrange(T, s_low, s_high) source) {
+    if ( (t_low <= s_low || t_low <= source)
+	 && (s_high <= t_high || source <= t_high) ) *((T*)target) = source;
+    else abort();
+    return target;
+}
Index: tests/sum.c
===================================================================
--- tests/sum.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/sum.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,123 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// sum.c -- test resolvers ability to deal with many variables with the same name and to use the minimum number of casts
+//    necessary to disambiguate overloaded variable names.
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug  2 08:03:09 2018
+// Update Count     : 279
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>
+
+void ?{}( int & c, zero_t ) { c = 0; }					// not in prelude
+
+trait sumable( otype T ) {
+	void ?{}( T &, zero_t );							// 0 literal constructor
+	T ?+?( T, T );										// assortment of additions
+	T ?+=?( T &, T );
+	T ++?( T & );
+	T ?++( T & );
+}; // sumable
+
+forall( otype T | sumable( T ) )						// use trait
+T sum( size_t size, T a[] ) {
+	T total = 0;										// initialize by 0 constructor
+	for ( size_t i = 0; i < size; i += 1 )
+		total += a[i];									// select appropriate +
+	return total;
+} // sum
+
+// Not in prelude.
+unsigned char ?+?( unsigned char t1, unsigned char t2 ) { return (int)t1 + t2; } // cast forces integer addition, otherwise recursion
+unsigned char ?+=?( unsigned char & t1, unsigned char t2 ) { t1 = t1 + t2; return t1; }
+unsigned char ++?( unsigned char & t ) { t += 1; return t; }
+unsigned char ?++( unsigned char & t ) { unsigned char temp = t; t += 1; return temp; }
+
+// Not in prelude.
+void ?{}( unsigned char & c, zero_t ) { c = 0; }
+void ?{}( float & f, zero_t ) { f = 0.0; }
+void ?{}( double & d, zero_t ) { d = 0.0; }
+
+int main( void ) {
+	const int low = 5, High = 15, size = High - low;
+
+	unsigned char s = 0, a[size], v = (char)low;
+	for ( int i = 0; i < size; i += 1, v += 1 ) {
+		s += v;
+		a[i] = v;
+	} // for
+	sout | "sum from" | low | "to" | High | "is"
+		 | sum( size, (unsigned char *)a ) | ", check" | (int)s | endl;
+
+	int s = 0, a[size], v = low;
+	for ( int i = 0; i < size; i += 1, v += 1 ) {
+		s += (int)v;
+		a[i] = (int)v;
+	} // for
+	sout | "sum from" | low | "to" | High | "is"
+		 | sum( size, (int *)a ) | ", check" | (int)s | endl;
+
+	float s = 0.0f, a[size], v = low / 10.0f;
+	for ( int i = 0; i < size; i += 1, v += 0.1f ) {
+		s += (float)v;
+		a[i] = (float)v;
+	} // for
+	sout | "sum from" | low / 10.0f | "to" | High / 10.0f | "is"
+		 | sum( size, (float *)a ) | ", check" | (float)s | endl;
+
+	double s = 0.0, a[size], v = low / 10.0;
+	for ( int i = 0; i < size; i += 1, v += 0.1 ) {
+		s += (double)v;
+		a[i] = (double)v;
+	} // for
+	sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
+		 | sum( size, (double *)a ) | ", check" | (double)s | endl;
+
+	struct S { int i, j; };
+	void ?{}( S & s ) { s.[i, j] = 0; }
+	void ?{}( S & s, int i ) { s.[i, j] = [i, 0]; }
+	void ?{}( S & s, int i, int j ) { s.[i, j] = [i, j]; }
+	void ?{}( S & s, zero_t ) { s.[i, j] = 0; }
+	void ?{}( S & s, one_t ) { s.[i, j] = 1; }
+	S ?+?( S t1, S t2 ) { return (S){ t1.i + t2.i, t1.j + t2.j }; }
+	S ?+=?( S & t1, S t2 ) { t1 = t1 + t2; return t1; }
+	S ++?( S & t ) { t += (S){1}; return t; }
+	S ?++( S & t ) { S temp = t; t += (S){1}; return temp; }
+	ofstream & ?|?( ofstream & os, S v ) { return os | v.i | v.j; }
+
+	S s = (S){0}, a[size], v = { low, low };
+	for ( int i = 0; i < size; i += 1, v += (S){1} ) {
+		s += (S)v;
+		a[i] = (S)v;
+	} // for
+	sout | "sum from" | low | "to" | High | "is"
+		 | sum( size, (S *)a ) | ", check" | (S)s | endl;
+
+	forall( otype Impl | sumable( Impl ) )
+	struct GS {
+		Impl * x, * y;
+	};
+	GS(int) gs;
+	gs.x = anew( size );								// create array storage for field
+	s = 0; v = low;
+	for ( int i = 0; i < size; i += 1, v += 1 ) {
+		s += (int)v;
+		gs.x[i] = (int)v;								// set field array in generic type
+	} // for
+	sout | "sum from" | low | "to" | High | "is"
+		 | sum( size, gs.x ) | ", check" | (int)s | endl; // add field array in generic type
+	delete( gs.x );
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa sum.c" //
+// End: //
Index: tests/swap.c
===================================================================
--- tests/swap.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/swap.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,95 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// swap.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Dec  7 09:13:13 2017
+// Update Count     : 71
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>										// swap
+
+int main( void ) {
+	char c1 = 'a', c2 = 'b';
+	sout | "char\t\t\t" | c1 | ' ' | c2 | "\t\t\tswap ";
+	swap( c1, c2 );
+	sout | '\t' | c1 | ' ' | c2 | endl;
+
+	signed int i1 = -1, i2 = -2;
+	sout | "signed int\t\t" | i1 | i2 | "\t\t\tswap ";
+	swap( i1, i2 );
+	sout | '\t' | i1 | i2 | endl;
+
+	unsigned int ui1 = 1, ui2 = 2;
+	sout | "unsigned int\t\t" | ui1 | ui2 | "\t\t\tswap ";
+	swap( ui1, ui2 );
+	sout | '\t' | ui1 | ui2 | endl;
+
+	signed long int li1 = -1, li2 = -2;
+	sout | "signed long int\t\t" | li1 | li2 | "\t\t\tswap ";
+	swap( li1, li2 );
+	sout | '\t' | li1 | li2 | endl;
+
+	unsigned long int uli1 = 1, uli2 = 2;
+	sout | "unsigned long int\t" | uli1 | uli2 | "\t\t\tswap ";
+	swap( uli1, uli2 );
+	sout | '\t' | uli1 | uli2 | endl;
+
+	signed long long int lli1 = -1, lli2 = -2;
+	sout | "signed long long int\t" | lli1 | lli2 | "\t\t\tswap ";
+	swap( lli1, lli2 );
+	sout | '\t' | lli1 | lli2 | endl;
+
+	unsigned long long int ulli1 = 1, ulli2 = 2;
+	sout | "unsigned long long int\t" | ulli1 | ulli2 | "\t\t\tswap ";
+	swap( ulli1, ulli2 );
+	sout | '\t' | ulli1 | ulli2 | endl;
+
+	float f1 = 1.5, f2 = 2.5;
+	sout | "float\t\t\t" | f1 | f2 | "\t\t\tswap ";
+	swap( f1, f2 );
+	sout | '\t' | f1 | f2 | endl;
+
+	double d1 = 1.5, d2 = 2.5;
+	sout | "double\t\t\t" | d1 | d2 | "\t\t\tswap ";
+	swap( d1, d2 );
+	sout | '\t' | d1 | d2 | endl;
+
+	long double ld1 = 1.5, ld2 = 2.5;
+	sout | "long double\t\t" | ld1 | ld2 | "\t\t\tswap ";
+	swap( ld1, ld2 );
+	sout | '\t' | ld1 | ld2 | endl;
+
+	float _Complex fc1 = 1.5f+1.5if, fc2 = 2.5f+2.5if;
+	sout | "float _Complex\t\t" | fc1 | fc2 | "\tswap ";
+	swap( fc1, fc2 );
+	sout | '\t' | fc1 | fc2 | endl;
+
+	double _Complex dc1 = 1.5d+1.5id, dc2 = 2.5d+2.5id;
+	sout | "double _Complex\t\t" | dc1 | dc2 | "\tswap ";
+	swap( dc1, dc2 );
+	sout | '\t' | dc1 | dc2 | endl;
+
+	long double _Complex ldc1 = 1.5d+1.5il, ldc2 = 2.5d+2.5il;
+	sout | "long double _Complex\t" | ldc1 | ldc2 | "\tswap ";
+	swap( ldc1, ldc2 );
+	sout | '\t' | ldc1 | ldc2 | endl;
+
+	struct S { int i, j; } s1 = { 1, 2 }, s2 = { 2, 1 };
+	ofstream & ?|?( ofstream & os, S s ) { return os | s.i | s.j; }
+	sout | "struct S\t\t" | s1 | "," | s2 | "\t\tswap ";
+	swap( s1, s2 );
+	sout | '\t' | s1 | "," | s2 | endl;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa swap.c" //
+// End: //
Index: tests/switch.c
===================================================================
--- tests/switch.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/switch.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,107 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// switch.c -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Jul 12 06:50:22 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Mar  8 07:33:05 2018
+// Update Count     : 36
+// 
+
+int f( int i ) { return i; }
+
+int main( void ) {
+	int i = 0;
+	switch ( i ) case 3 : i = 1;
+	switch ( i ) default : f( 3 );
+
+	switch ( 3 )
+	  default:
+	  case 2:
+	  case 3:
+		f( 3 );
+
+	switch ( i ) {}
+	switch ( i ) {
+	  case 3:
+		f( 3 );
+	} // switch
+
+	switch ( 3 ) {
+		int j;
+	  case 3:
+		break;
+	  case 4:
+		j = 0;
+	}
+
+	switch ( i ) {
+	  case 1, 2, 3:
+		switch ( i ) {
+		  case 2, 3, 4:
+			7;
+		}
+	}
+
+	switch ( i ) {
+		int j = 0;
+		int k = 0;
+		struct S { int i; };
+		S s;
+	  case 8~10:
+	  default:
+		i = 3;
+	  case 19:
+	  case 'A' ... 'Z':
+	  case 1 ... 6:
+	  case 20, 30:
+		j = 3;
+		f( 3 );
+		break;
+	} // switch
+
+	choose ( i ) case 3 : f( 3 );
+	choose ( i ) default : i = 1;
+
+	choose ( 3 )
+	  case 2:
+	  default:
+	  case 3:
+		f( 3 );
+
+	choose ( i ) {}
+	choose ( i ) {
+	  case 3:
+		f( 3 );
+	} // choose
+
+	choose ( i ) {
+		int j = 0;
+		int k = 0;
+		struct S { int i; };
+		S s;
+	  case 19:
+	  case 'A'...'Z':
+	  case 0 ...6:										// space required, or lexed as decimal point
+	  case 20, 30, 40:
+		i = 3;
+		f( 3 );
+	  default:
+		j = 3;
+	  case 8~10:
+		f( 3 );
+		fallthru;
+	  case 'd':
+		j = 5;
+	} // choose
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa switch.c" //
+// End: //
Index: tests/test.py
===================================================================
--- tests/test.py	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/test.py	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,309 @@
+#!/usr/bin/python
+from __future__ import print_function
+
+from pybin.tools import *
+from pybin.test_run import *
+from pybin import settings
+
+import argparse
+import re
+import sys
+import time
+
+################################################################################
+#               help functions
+################################################################################
+
+def findTests():
+	expected = []
+
+	def matchTest(path):
+		match = re.search("%s\/([\w\/\-_]*).expect\/([\w\-_]+)(\.[\w\-_]+)?\.txt" % settings.SRCDIR, path)
+		if match :
+			test = Test()
+			test.name = match.group(2)
+			test.path = match.group(1)
+			test.arch = match.group(3)[1:] if match.group(3) else None
+			if settings.arch.match(test.arch):
+				expected.append(test)
+
+	pathWalk( matchTest )
+
+	return expected
+
+# reads the directory ./.expect and indentifies the tests
+def listTests( includes, excludes ):
+	includes = [canonicalPath( i ) for i in includes] if includes else None
+	excludes = [canonicalPath( i ) for i in excludes] if excludes else None
+
+	# tests directly in the .expect folder will always be processed
+	test_list = findTests()
+
+	# if we have a limited number of includes, filter by them
+	if includes:
+		test_list = [x for x in test_list if
+			x.target().startswith( tuple(includes) )
+		]
+
+	# # if we have a folders to excludes, filter by them
+	if excludes:
+		test_list = [x for x in test_list if not
+			x.target().startswith( tuple(excludes) )
+		]
+
+	return test_list
+
+# from the found tests, filter all the valid tests/desired tests
+def validTests( options ):
+	tests = []
+
+	# if we are regenerating the tests we need to find the information of the
+	# already existing tests and create new info for the new tests
+	if options.regenerate_expected :
+		for testname in options.tests :
+			testname = canonicalPath( testname )
+			if Test.valid_name(testname):
+				found = [test for test in allTests if canonicalPath( test.target() ) == testname]
+				tests.append( found[0] if len(found) == 1 else Test.from_target(testname) )
+			else :
+				print('ERROR: "%s", tests are not allowed to end with a C/C++/CFA extension, ignoring it' % testname, file=sys.stderr)
+
+	else :
+		# otherwise we only need to validate that all tests are present in the complete list
+		for testname in options.tests:
+			test = [t for t in allTests if pathCmp( t.target(), testname )]
+
+			if test :
+				tests.append( test[0] )
+			else :
+				print('ERROR: No expected file for test %s, ignoring it' % testname, file=sys.stderr)
+
+	return tests
+
+# parses the option
+def getOptions():
+	# create a parser with the arguments for the tests script
+	parser = argparse.ArgumentParser(description='Script which runs cforall tests')
+	parser.add_argument('--debug', help='Run all tests in debug or release', type=yes_no, default='yes')
+	parser.add_argument('--install', help='Run all tests based on installed binaries or tree binaries', type=yes_no, default='no')
+	parser.add_argument('--arch', help='Test for specific architecture', type=str, default='')
+	parser.add_argument('--timeout', help='Maximum duration in seconds after a single test is considered to have timed out', type=int, default=60)
+	parser.add_argument('--global-timeout', help='Maximum cumulative duration in seconds after the ALL tests are considered to have timed out', type=int, default=7200)
+	parser.add_argument('--dry-run', help='Don\'t run the tests, only output the commands', action='store_true')
+	parser.add_argument('--list', help='List all test available', action='store_true')
+	parser.add_argument('--all', help='Run all test available', action='store_true')
+	parser.add_argument('--regenerate-expected', help='Regenerate the .expect by running the specified tets, can be used with --all option', action='store_true')
+	parser.add_argument('-j', '--jobs', help='Number of tests to run simultaneously', type=int)
+	parser.add_argument('--list-comp', help='List all valide arguments', action='store_true')
+	parser.add_argument('-I','--include', help='Directory of test to include, can be used multiple time, All  if omitted', action='append')
+	parser.add_argument('-E','--exclude', help='Directory of test to exclude, can be used multiple time, None if omitted', action='append')
+	parser.add_argument('tests', metavar='test', type=str, nargs='*', help='a list of tests to run')
+
+	try:
+		options =  parser.parse_args()
+	except:
+		print('ERROR: invalid arguments', file=sys.stderr)
+		parser.print_help(sys.stderr)
+    		sys.exit(1)
+
+	# script must have at least some tests to run or be listing
+	listing    = options.list or options.list_comp
+	all_tests  = options.all
+	some_tests = len(options.tests) > 0
+	some_dirs  = len(options.include) > 0 if options.include else 0
+
+	# check that exactly one of the booleans is set to true
+	if not sum( (listing, all_tests, some_tests, some_dirs) ) > 0 :
+		print('ERROR: must have option \'--all\', \'--list\', \'--include\', \'-I\' or non-empty test list', file=sys.stderr)
+		parser.print_help()
+		sys.exit(1)
+
+	return options
+
+################################################################################
+#               running test functions
+################################################################################
+# fix the absolute paths in the output
+def fixoutput( fname ):
+	if not is_ascii(fname):
+		return
+
+	file_replace(fname, "%s/" % settings.SRCDIR, "")
+
+
+# logic to run a single test and return the result (No handling of printing or other test framework logic)
+def run_single_test(test):
+
+	# find the output file based on the test name and options flag
+	exe_file = test.target_executable();
+	out_file = test.target_output()
+	err_file = test.error_log()
+	cmp_file = test.expect()
+	in_file  = test.input()
+
+	# prepare the proper directories
+	test.prepare()
+
+	# build, skipping to next test on error
+	before = time.time()
+	make_ret, _ = make( test.target(),
+		redirects  = "2> %s 1> /dev/null" % out_file,
+		error_file = err_file
+	)
+	after = time.time()
+
+	comp_dur = after - before
+
+	run_dur = None
+
+	# if the make command succeds continue otherwise skip to diff
+	if make_ret == 0 or settings.dry_run:
+		before = time.time()
+		if settings.dry_run or fileIsExecutable(exe_file) :
+			# run test
+			retcode, _ = sh("timeout %d %s > %s 2>&1" % (settings.timeout.single, exe_file, out_file), input = in_file)
+		else :
+			# simply cat the result into the output
+			retcode, _ = sh("cat %s > %s" % (exe_file, out_file))
+
+		after = time.time()
+		run_dur = after - before
+	else:
+		retcode, _ = sh("mv %s %s" % (err_file, out_file))
+
+
+	if retcode == 0:
+		# fixoutput(out_file)
+		if settings.generating :
+			# if we are ounly generating the output we still need to check that the test actually exists
+			if not settings.dry_run and fileContainsOnly(out_file, "make: *** No rule to make target `%s'.  Stop." % test.target()) :
+				retcode = 1;
+				error = "\t\tNo make target for test %s!" % test.target()
+				sh("rm %s" % out_file, False)
+			else:
+				error = None
+		else :
+			# fetch return code and error from the diff command
+			retcode, error = diff(cmp_file, out_file)
+
+	else:
+		with open (out_file, "r") as myfile:
+			error = myfile.read()
+
+
+	# clean the executable
+	sh("rm -f %s > /dev/null 2>&1" % test.target())
+
+	return retcode, error, [comp_dur, run_dur]
+
+# run a single test and handle the errors, outputs, printing, exception handling, etc.
+def run_test_worker(t) :
+
+	with SignalHandling():
+		# print formated name
+		name_txt = "%20s  " % t.name
+
+		retcode, error, duration = run_single_test(t)
+
+		# update output based on current action
+		result_txt = TestResult.toString( retcode, duration )
+
+		#print result with error if needed
+		text = name_txt + result_txt
+		out = sys.stdout
+		if error :
+			text = text + "\n" + error
+			out = sys.stderr
+
+		print(text, file = out)
+		sys.stdout.flush()
+		sys.stderr.flush()
+
+	return retcode != TestResult.SUCCESS
+
+# run the given list of tests with the given parameters
+def run_tests(tests, jobs) :
+	# clean the sandbox from previous commands
+	make('clean', redirects = '> /dev/null 2>&1')
+
+	# create the executor for our jobs and handle the signal properly
+	pool = setupPool(jobs)
+
+	# for each test to run
+	try :
+		results = pool.map_async(
+			run_test_worker,
+			tests,
+			chunksize = 1
+		).get(settings.timeout.total)
+	except KeyboardInterrupt:
+		pool.terminate()
+		print("Tests interrupted by user")
+		sys.exit(1)
+
+	# clean the workspace
+	make('clean', redirects = '> /dev/null 2>&1')
+
+	for failed in results:
+		if failed :
+			return 1
+
+	return 0
+
+
+################################################################################
+#               main loop
+################################################################################
+if __name__ == "__main__":
+
+	# parse the command line arguments
+	options = getOptions()
+
+	# init global settings
+	settings.init( options )
+
+	# fetch the liest of all valid tests
+	allTests = listTests( options.include, options.exclude )
+
+	# if user wants all tests than no other treatement of the test list is required
+	if options.all or options.list or options.list_comp or options.include :
+		tests = allTests
+
+	#otherwise we need to validate that the test list that was entered is valid
+	else :
+		tests = validTests( options )
+
+	# make sure we have at least some test to run
+	if not tests :
+		print('ERROR: No valid test to run', file=sys.stderr)
+		sys.exit(1)
+
+
+	# sort the test alphabetically for convenience
+	tests.sort(key=lambda t: (t.arch if t.arch else '') + t.target())
+
+	# users may want to simply list the tests
+	if options.list_comp :
+		print("-h --help --debug --dry-run --list --arch --all --regenerate-expected --install --timeout --global-timeout -j --jobs ", end='')
+		print(" ".join(map(lambda t: "%s" % (t.target()), tests)))
+
+	elif options.list :
+		print("Listing for %s:%s"% (settings.arch.string, settings.debug.string))
+		fancy_print("\n".join(map(lambda t: "%s" % (t.toString()), tests)))
+
+	else :
+		# check the build configuration works
+		settings.validate()
+
+		options.jobs, forceJobs = jobCount( options, tests )
+		settings.updateMakeCmd(forceJobs, options.jobs)
+
+		print('%s (%s:%s) on %i cores' % (
+			'Regenerate tests' if settings.generating else 'Running',
+			settings.arch.string,
+			settings.debug.string,
+			options.jobs
+		))
+
+		# otherwise run all tests and make sure to return the correct error code
+		sys.exit( run_tests(tests, options.jobs) )
Index: tests/time.c
===================================================================
--- tests/time.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/time.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,71 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// time.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Mar 27 17:24:56 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Apr  6 11:27:23 2018
+// Update Count     : 16
+//
+
+#include "time.hfa"
+#include <fstream.hfa>
+
+int main() {
+	Duration d1 = 3`h, d2 = 2`s, d3 = 3.375`s, d4 = 12`s, d5 = 1`s + 10_000`ns;
+	sout | d1 | d2 | d3 | d4 | d5 | endl;
+	int i;
+	d1 = 0;
+	sout | d1 | d2 | d3 | endl;
+	d1 = 7`s;
+	d3 = d2 = d1;
+	sout | d1 | d2 | d3 | endl;
+	d1 = d1 + d2;
+	sout | d1 | endl;
+	sout | d1 == 7`s | d1 == d2 | d1 == 0 | endl;
+	sout | div( 7`s, 2`s ) | endl;
+	sout | endl;
+
+	Time t = { 1970, 1, 2, 0, 0, 0, 10_000_000 };
+	sout | t | endl;
+	t = t + d1;
+	sout | t | t.tv | endl;
+	Time t1 = (timespec){ 104_414, 10_000_000 };
+	sout | t1 | t1.tv | endl;
+	sout | t - t  | t + d5 | t.tv | endl;
+	char buf[16];
+	sout | "yy/mm/dd" | [t, buf]`ymd;					// shared buf => separate calls
+	sout | "mm/dd/yy" | mm_dd_yy( t, buf );
+	strftime( buf, 16, "%D", t );						// %D => mm/dd/yy
+	sout | "mm/dd/yy" | buf;
+	sout | "dd/yy/mm" | [t, buf]`dmy | endl;
+	Time t2 = { 2001, 7, 4, 0, 0, 1, 0 }, t3 = (timeval){ 994_219_201 };
+	sout | t2 | t2.tv | endl | t3 | t3.tv | endl;
+	sout | endl;
+
+	// Clock Newfoundland = { -3.5`h }, PST = { -8`h };	// distance from GMT (UTC)
+	// sout | "Clock Resolution" | getRes() | endl
+	// 	 | "Newfoundland" | getTime( Newfoundland ) | endl
+	// 	 | "local" | getTime() | endl
+	// 	 | "local nsec" | getTimeNsec() | endl
+	// 	 | "PST" | PST() | endl;						// getTime short form
+	// sout | endl;
+
+	// http://en.cppreference.com/w/cpp/chrono/duration/operator_arith4
+	Duration s = 1`h + 2 * 10`m + 70`s / 10;
+	sout | "1 hour + 2*10 min + 70/10 sec = " | s | "seconds" | endl;
+	sout | "Dividing that by 2 minutes gives" | s / 2`m | endl;
+	sout | "Dividing that by 2 gives" | s / 2 | "seconds\n";
+	sout | s | "seconds is" | s`h | "hours," | (s % 1`h)`m | "minutes," | (s % 1`m)`s | "seconds" | endl;
+} // main
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// compile-command: "cfa time.c" //
+// End: //
Index: tests/tuple/.expect/tupleAssign.txt
===================================================================
--- tests/tuple/.expect/tupleAssign.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/.expect/tupleAssign.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,12 @@
+u=5 v=6 x=10 y=11 z=[100, 200]
+u=5 v=6 x=10 y=11 z=[100, 200]
+u=11 v=10 x=11 y=10 z=[11, 10]
+u=11 v=10 x=11 y=10 z=[11, 10]
+u=10 v=11 z=[10, 11]
+u=10 v=11 z=[10, 11]
+u=123 v=456 z=[111, 222]
+u=123 v=456 z=[111, 222]
+d=94.12 i=94 c=^ t=[94, 94.12, 94]
+d=94.12 i=94 c=^ t=[94, 94.12, 94]
+d=-94.12 i=-94 c=¢ t=[-94, -94.12, -94]
+d=-94.12 i=-94 c=¢ t=[-94, -94.12, -94]
Index: tests/tuple/.expect/tupleCast.txt
===================================================================
--- tests/tuple/.expect/tupleCast.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/.expect/tupleCast.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,6 @@
+10 A 3.14
+10 A
+10
+10 65
+ran f
+99 F
Index: tests/tuple/.expect/tupleFunction.txt
===================================================================
--- tests/tuple/.expect/tupleFunction.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/.expect/tupleFunction.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,12 @@
+foo([123, 456, 999.123, {321, 654, Q, 3.14}])
+a=123 b=456 c=999.123 d={321, 654, Q, 3.14}
+X=[123, 456, 999.123, {321, 654, Q, 3.14}]
+foo(...)=456
+bar([777, 2.76, 8675])
+bar([123, 999.123, 456])
+baz(777, 2.76, 8675)
+baz(123, 999.123, 456)
+qux([777, 2.76], 8675)
+qux([123, 999.123], 456)
+x=[3, 5.254, 4]
+x1=3 x2=5.254 x3=4
Index: tests/tuple/.expect/tupleMember.txt
===================================================================
--- tests/tuple/.expect/tupleMember.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/.expect/tupleMember.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,4 @@
+called f!
+g(...)=13.5
+v.[f1, i.[f2, f3], f4]=[12, 11, 13, 3.14159]
+v.[f1, i.[f2, f3], f4]=[4, [987, 2], 6.28]
Index: tests/tuple/.expect/tuplePolymorphism.txt
===================================================================
--- tests/tuple/.expect/tuplePolymorphism.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/.expect/tuplePolymorphism.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,5 @@
+132 1001 459
+132 1001.12 459
+123 999.123 456
+246 1998.25 912
+1.21 x 10.21 1111 v 54385938 1111 v 54385938
Index: tests/tuple/.expect/tupleVariadic.txt
===================================================================
--- tests/tuple/.expect/tupleVariadic.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/.expect/tupleVariadic.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,18 @@
+called ?{} with no a
+array = { }
+called ?{} with a: 999
+array = { 999, }
+called ?{} with a: 123 456
+array = { 123, 456, }
+called ?{} with a: 100 200 300
+array = { 100, 200, 300, }
+called ?{} with a: 10 2 3 4
+array = { 10, 2, 3, 4, }
+copy=111111
+calling func
+called process(int) 3
+called process(double) 2
+called process(int) 111
+called process(double) 4.145
+called func(void)
+finished func
Index: tests/tuple/tupleAssign.c
===================================================================
--- tests/tuple/tupleAssign.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/tupleAssign.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,66 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// tupleAssign.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Tue Nov 15 17:24:32 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Mar  6 21:23:58 2017
+// Update Count     : 34
+//
+
+#include <fstream.hfa>
+
+int main() {
+	{
+		// test multiple assignment and cascading assignment
+		int u = 5, v = 6, x = 10, y = 11;
+		[int, int] z = [100, 200];
+
+		// swap x, y and store the new [x, y] in [u, v] and in z;
+		printf( "u=%d v=%d x=%d y=%d z=[%d, %d]\n", u, v, x, y, z );
+		sout | "u=" | u | "v=" | v | "x=" | x | "y=" | y | "z=[" | z | "]" | endl;
+		z = [u, v] = [x, y] = [y, x];
+		printf( "u=%d v=%d x=%d y=%d z=[%d, %d]\n", u, v, x, y, z );
+		sout | "u=" | u | "v=" | v | "x=" | x | "y=" | y | "z=[" | z | "]" | endl;
+
+		// shuffle elements -- v = z.0, z.0 = z.1, z.1 = u, u = v
+		[v, z, u] = [z, u, v];
+		printf( "u=%d v=%d z=[%d, %d]\n", u, v, z );
+		sout | "u=" | u | "v=" | v | "z=[" | z | "]" | endl;
+
+		// multiple assignment with tuple expression on right
+		z = [111, 222];
+		[u, v] = [123, 456];
+		printf( "u=%d v=%d z=[%d, %d]\n", u, v, z );
+		sout | "u=" | u | "v=" | v | "z=[" | z | "]" | endl;
+	}
+	{
+		// test mass assignment
+		double d = 0.0;
+		int i = 0;
+		char c = '\0';
+		struct X {
+			int z;
+		} x;
+		X ?=?(X & x, double d) { return x; }
+		[int, double, int] t;
+
+		// no conversion from X to integral types, so this serves as a santiy
+		// check that as long as this compiles, ?=?(_, x) is not generated.
+		[t, x, d, i, c, x] = (double)94.12;
+		printf( "d=%lg i=%d c=%c t=[%d, %lg, %d]\n", d, i, (int)c, t );
+		sout | "d=" | d | "i=" | i | "c=" | c | ' ' | "t=[" | t | "]" | endl;
+		[x, c, i, d, x, t] = (double)-94.12;
+		printf( "d=%lg i=%d c=%c t=[%d, %lg, %d]\n", d, i, c, t );
+		sout | "d=" | d | "i=" | i | "c=" | c | ' ' | "t=[" | t | "]" | endl;
+	}
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/tuple/tupleCast.c
===================================================================
--- tests/tuple/tupleCast.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/tupleCast.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,30 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// tupleCast.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Mon Dec 12 15:56:07 2016
+// Last Modified By : Rob Schluntz
+// Last Modified On : Mon Dec 12 15:56:20 2016
+// Update Count     : 2
+//
+
+[char, int, double] f() { printf("ran f\n"); return ['c', 70, 6.28]; }
+
+int main() {
+  [int, char, float] x = [10, 'A', 3.14f];
+  printf("%d %c %g\n", ([int, char, float])x);
+  printf("%d %c\n", ([int, char])x);
+  printf("%d\n", ([int])x);
+  // printf("%d\n", (int)x);
+  printf("%g %g\n", ([double, float])x);
+  printf("%d %c\n", ([int, char])f());
+}
+
+// Local Variables: //
+// tab-width: 2 //
+// End: //
Index: tests/tuple/tupleFunction.c
===================================================================
--- tests/tuple/tupleFunction.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/tupleFunction.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,98 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// tupleFunction.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Tue Nov 15 17:24:32 2016
+// Last Modified By : Rob Schluntz
+// Last Modified On : Tue Nov 15 17:27:28 2016
+// Update Count     : 3
+//
+
+struct S {
+	int f1, f2;
+	char f3;
+	double f4;
+} v;
+
+[int] foo( [int, int, double, S] x ) {
+	printf("foo([%d, %d, %lg, {%d, %d, %c, %lg}])\n", x.0, x.1, x.2, x.3.[f1, f2, f3, f4]);
+	int a, b;
+	double c;
+	S d;
+	[a, b, c, d] = x;
+	[int, int, double, S] X = x;
+	printf("a=%d b=%d c=%lg d={%d, %d, %c, %lg}\n", a, b, c, d.[f1, f2, f3, f4]);
+	printf("X=[%d, %d, %lg, {%d, %d, %c, %lg}]\n", X.0, X.1, X.2, X.3.[f1, f2, f3, f4]);
+	return b;
+}
+
+[void] bar( [int, double, int] z ) {
+	printf("bar([%d, %lg, %d])\n", z);
+}
+
+[void] baz( int a, double b, int c ) {
+	printf("baz(%d, %lg, %d)\n", a, b, c);
+}
+
+[void] qux( [int, double] n, int m ) {
+	printf("qux([%d, %lg], %d)\n", n, m);
+}
+
+[int, double x, int] quux() {
+	return [3, 5.254, 4];
+}
+[[[int, double, int], [int, double]]] quuux() {
+	return [1, 2, 3, 4, 5];
+}
+
+int main() {
+	[int, double, int] x = [777, 2.76, 8675];
+	int x1 = 123, x3 = 456;
+	double x2 = 999.123;
+
+	printf("foo(...)=%d\n", foo(x1, x3, x2, (S){ 321, 654, 'Q', 3.14 }));
+
+	// call function with tuple parameter using tuple variable arg
+	bar(x);
+
+	// call function with tuple parameter using multiple values
+	bar(x1, x2, x3);
+
+	// call function with multiple parameters using tuple variable arg
+	baz(x);
+
+	// call function with multiple parameters using multiple args
+	baz(x1, x2, x3);
+
+	// call function with multiple parameters, one of which is a tuple using tuple variable arg
+	qux(x);
+
+	// call function with multiple parameters, one of which is a tuple using multiple args
+	qux(x1, x2, x3);
+
+	// call function with multiple return values and assign into a tuple variable
+	x = quux();
+	printf("x=[%d, %lg, %d]\n", x);
+
+	// call function with multiple return values and assign into a tuple expression
+	[x1, x2, x3] = quux();
+	printf("x1=%d x2=%lg x3=%d\n", x1, x2, x3);
+
+	// xxx - tuples of type parameters should come out as generic types?
+	// [x1, x2, x3] = ([(int)x1, (int)x2, (int)x3]) + ([(int)1, (int)2, (int)3]);
+	// ([(int)x1, (int)x2, (int)x3]) + ([(int)1, (int)2, (int)3]);
+	// printf("%d %g %d\n", x1, x2, x3);
+
+	// xxx - comes out the back as a cast, but should come out as a tuple expression of the first n fields cast to each of the result types
+	// ([int, double])x;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
+
Index: tests/tuple/tupleMember.c
===================================================================
--- tests/tuple/tupleMember.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/tupleMember.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,61 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// tupleFunction.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Tue Nov 15 17:24:32 2016
+// Last Modified By : Rob Schluntz
+// Last Modified On : Tue Nov 15 17:27:28 2016
+// Update Count     : 3
+//
+
+void f() {
+	printf("called f!\n");
+}
+
+double g(double x, char y, int z) {
+	return z-y+x;
+}
+
+struct V2	{
+	int f2, f3;
+};
+struct V {
+	int f1;
+	V2 i; // temporary
+	// struct V2 {
+	//   int f2, f3;
+	// } i;
+	double f4;
+} v;
+
+V & h() {
+	static V local = { 111, { 222, 333 }, 444.5 };
+	return local;
+}
+
+int main() {
+	struct X {
+		int a;
+		double b;
+		char c;
+	} x = { 10, 12.5, '\x9' };
+
+	// should only call f once
+	printf("g(...)=%lg\n", g((f(), x).[b, c, a]));
+
+	v.[f1, i.[f2, f3], f4].[1.0, 2, 0, 1.1] = [11, 3.14159, 12, 13];
+
+	printf("v.[f1, i.[f2, f3], f4]=[%d, %d, %d, %lg]\n", v.[f1, i.[f2, f3], f4]);
+
+	h().[f1, i.[f2, f3], f4].[1.0, 2, 0, 1.1] = [987, 6.28, 4, 2];
+	printf("v.[f1, i.[f2, f3], f4]=[%d, [%d, %d], %lg]\n", h().[f1, i.[f2, f3], f4]);
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/tuple/tuplePolymorphism.c
===================================================================
--- tests/tuple/tuplePolymorphism.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/tuplePolymorphism.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,74 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// tuplePolymorphism.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Tue Nov 16 10:38:00 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu May 18 18:05:12 2017
+// Update Count     : 4
+//
+
+// packed is needed so that structs are not passed with the same alignment as function arguments
+__attribute__((packed)) struct A {
+	double x;
+	char y;
+	double z;
+};
+
+__attribute__((packed)) struct B {
+	long long x;
+	char y;
+	long long z;
+};
+
+// ensure that f is a viable candidate for g, even though its parameter structure does not exactly match
+[A] f([A, B] x, B y) { printf("%g %c %g %lld %c %lld %lld %c %lld\n", x.0.[x,y,z], x.1.[x,y,z], y.[x,y,z]); return x.0; }
+forall(otype T, otype U | { T f(T, U, U); })
+void g(T x, U y) { f(x, y, y); }
+
+// add two triples
+forall(otype T | { T ?+?(T, T); })
+[T, T, T] ?+?([T, T, T] x, [T, T, T] y) {
+	return [x.0+y.0, x.1+y.1, x.2+y.2];
+}
+
+int main() {
+	int x1 = 123, x3 = 456;
+	double x2 = 999.123;
+
+	int i1 = 111, i3 = 222;
+	double i2 = 333;
+
+	int d1 = 555, d3 = 444;
+	double d2 = 666;
+
+
+	[i1, i2, i3] = ([x1, (int)x2, x3]) + ([9, 2, 3]);
+	[d1, d2, d3] = ([x1, x2, x3]) + ([9, 2, 3]);
+	printf("%d %g %d\n", i1, i2, i3);
+	printf("%d %g %d\n", d1, d2, d3);
+
+	[double, double, double] zzz;
+	zzz = [x1, x2, x3];
+	printf("%g %g %g\n", zzz);
+	[x1, x2, x3] = zzz+zzz;
+	printf("%d %g %d\n", x1, x2, x3);
+
+	// ensure non-matching assertions are specialized correctly
+	g((A){ 1.21, 'x', 10.21}, (B){ 1111LL, 'v', 54385938LL });
+}
+
+forall(otype T)
+[T, T] foo([T, T] y) {
+	[T, T] x;
+	return x;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/tuple/tupleVariadic.c
===================================================================
--- tests/tuple/tupleVariadic.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/tupleVariadic.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,142 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// tuplePolymorphism.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Fri Dec 16 10:25:35 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug  2 09:24:04 2018
+// Update Count     : 6
+//
+
+#include <stdlib.hfa>
+
+void func(void) {
+	printf("called func(void)\n");
+}
+forall(otype T, ttype Params | { void process(T); void func(Params); })
+void func(T arg1, Params p) {
+	process(arg1);
+	func(p);
+}
+void process(int x) {
+	printf("called process(int) %d\n", x);
+}
+void process(double x) {
+	printf("called process(double) %g\n", x);
+}
+
+struct array {
+	int * data;
+	int size;
+};
+
+// xxx - eventually this will be collapsed...x
+void ?{}(array & a) {
+	a.size = 0;
+	a.data = 0;
+	printf("called ?{} with no a\n");
+}
+
+void ?{}(array & a, int a0) {
+	a.size = 1;
+	a.data = (int*)malloc(sizeof(int)*a.size);
+	a.data[0] = a0;
+	printf("called ?{} with a: %d\n", a0);
+}
+
+void ?{}(array & a, int a0, int a1) {
+	a.size = 2;
+	a.data = (int*)malloc(sizeof(int)*a.size);
+	a.data[0] = a0;
+	a.data[1] = a1;
+	printf("called ?{} with a: %d %d\n", a0, a1);
+}
+
+void ?{}(array & a, int a0, int a1, int a2) {
+	a.size = 3;
+	a.data = (int*)malloc(sizeof(int)*a.size);
+	a.data[0] = a0;
+	a.data[1] = a1;
+	a.data[2] = a2;
+	printf("called ?{} with a: %d %d %d\n", a0, a1, a2);
+}
+
+void ^?{}(array & a) {
+	free(a.data);
+}
+
+// test use of a tuple argument
+[void] ?{}(array & a, [int, int, int, int] args) {
+	int a0, a1, a2, a3;
+	[a0, a1, a2, a3] = args;
+	a.size = 4;
+	a.data = (int *)malloc(sizeof(int)*a.size);
+	a.data[0] = a0;
+	a.data[1] = a1;
+	a.data[2] = a2;
+	a.data[3] = a3;
+	printf("called ?{} with a: %d %d %d %d\n", a0, a1, a2, a3);
+}
+
+void print(array * x) {
+	printf("array = { ");
+	for (int i = 0; i < x->size; ++i) {
+		printf("%d, ", x->data[i]);
+	}
+	printf("}\n");
+}
+
+forall(otype T)
+T * copy(T x) {
+	// test calling new inside a polymorphic function
+	return new(x);
+}
+
+forall(ttype T | { void foo(T); }) void bar(T x) {}
+void foo(int) {}
+
+int main() {
+	array * x0 = new();
+	print(x0);
+
+	array * x1 = new(999);
+	print(x1);
+
+	array * x2 = new(123, 456);
+	print(x2);
+
+	array * x3 = new(100, 200, 300);
+	print(x3);
+
+	array * x4 = new(10, 2, 3, 4);
+	print(x4);
+
+	int * ptr = copy(111111);
+	printf("copy=%d\n", *ptr);
+
+	printf("calling func\n");
+	func(3, 2.0, 111, 4.145);
+	printf("finished func\n");
+
+	{
+		// T = [const int] -- this ensures that void(*)(int) satisfies void(*)(const int)
+		const int x;
+		bar(x);
+	}
+
+	delete(ptr);
+	delete(x4);
+	delete(x3);
+	delete(x2);
+	delete(x1);
+	delete(x0);
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/tuple/tuples.c
===================================================================
--- tests/tuple/tuples.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/tuple/tuples.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,32 @@
+int a;
+float a;
+int f( int );
+float f( float );
+
+void g() {
+	// selects the same f each time but without a cast would be ambiguous
+	f( (int)a );
+	(int)f( a );
+}
+
+[ int ] p;
+[ int, double ] p;
+[ int, int, int ] p;
+[ int, int, int, int ] p;
+
+[ char ] q;
+[ int, int ] q;
+[ int, int, float ] q;
+[ int, int, int, int ] q;
+
+[ int, int ] r( int, int, int, int );
+
+void s() {
+	r( p, q );
+	r( [ q, p ] );
+	r( r( p, q ), r( q, q ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/typeGenerator.c
===================================================================
--- tests/typeGenerator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/typeGenerator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,30 @@
+context addable( otype T ) {
+	T ?+?( T,T );
+	T ?=?( T*, T);
+};
+
+otype List1( otype T | addable( T ) ) = struct { T data; List1( T ) *next; } *;
+typedef List1( int ) ListOfIntegers;
+//List1( int ) li;
+ListOfIntegers li;
+int f( List1( int ) ( (*g ))( int ) );
+[int] h( * List1( int ) p );							// new declaration syntax
+
+struct( otype T ) S2 { T i; };							// actual definition
+struct( int ) S3 v1, *p;								// expansion and instantiation
+struct( otype T )( int ) S24 { T i; } v2;				// actual definition, expansion and instantiation
+struct( otype T )( int ) { T i; } v2;					// anonymous actual definition, expansion and instantiation
+
+struct( otype T | addable( T ) ) node { T data; struct( T ) node *next; };
+otype List( otype T ) = struct( T ) node *;
+List( int ) my_list;
+
+otype Complex | addable( Complex );
+
+int main() {
+	(struct( int ) node)my_list;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/typedef.c
===================================================================
--- tests/typedef.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/typedef.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,47 @@
+typedef int T;
+
+void f( void ) {
+    int T( T p ) { return 3; }
+    T( 3 );
+}
+
+struct {
+    T (T);
+} fred = { 3 };
+
+typedef int (*a)(int, char);
+a b;
+
+int g(void) {
+    double a;
+}
+a c;
+
+typedef typeof(3) x, y;  // GCC
+
+x p;
+y q;
+
+int main() {
+    typedef typeof(3) z, p;
+    z w;
+    p x;
+}
+
+// new-style function definitions
+
+typedef [10] * int arrayOf10Pointers;
+arrayOf10Pointers array;
+typedef const * int constantPointer;
+typedef * [ int ]( [] int ) funcPtr;
+typedef [ int ] funcProto( []  int );
+typedef [ int, int ] tupleType;
+typedef * [ int, int ] tupleTypePtr;
+typedef * int c, d;
+typedef [ int ] f( * int ), g;
+typedef [ * [static 10] int ] t;
+typedef [ * [static 10] int x ] h();
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/typedefDeclarator.c
===================================================================
--- tests/typedefDeclarator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/typedefDeclarator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,120 @@
+typedef int
+	 f0,  f1,  f2,  f3,  f4,  f5,  f6,  f7,  f8,  f9,
+	f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
+	f20, f21, f22, f23, f24, f25, f26, f27, f28, f29,
+	f30, f31, f32, f33, f34, f35, f36, f37, f38, f39,
+	f40, f41, f42, f43, f44, f45, f46, f47, f48, f49,
+	f50, f51, f52, f53, f54, f55, f56, f57, f58, f59,
+	f60, f61, f62, f63, f64, f65, f66, f67, f68, f69,
+	f70, f71, f72, f73, f74, f75, f76, f77, f78, f79,
+	f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
+
+int main() {
+	//int f0[]();
+	//int (f0[])();
+	//int f0()[];
+	//int f0()();
+	//int (*f0)()();
+	//int ((*f0())())[];
+	
+	int f1;
+	int (f2);
+
+	int *f3;
+	int **f4;
+	int * const *f5;
+	int * const * const f6;
+
+	int *(f7);
+	int **(f8);
+	int * const *(f9);
+	int * const * const (f10);
+
+	int (*f11);
+	int (**f12);
+	int (* const *f13);
+	int (* const * const f14);
+
+	int f15[];
+	int f16[10];
+	int (f17[]);
+	int (f18[10]);
+
+	int *f19[];
+	int *f20[10];
+	int **f21[];
+	int **f22[10];
+	int * const *f23[];
+	int * const *f24[10];
+	int * const * const f25[];
+	int * const * const f26[10];
+
+	int *(f27[]);
+	int *(f28[10]);
+	int **(f29[]);
+	int **(f30[10]);
+	int * const *(f31[]);
+	int * const *(f32[10]);
+	int * const * const (f33[]);
+	int * const * const (f34[10]);
+
+	int (*f35[]);
+	int (*f36[10]);
+	int (**f37[]);
+	int (**f38[10]);
+	int (* const *f39[]);
+	int (* const *f40[10]);
+	int (* const * const f41[]);
+	int (* const * const f42[10]);
+
+	int f43[][3];
+	int f44[3][3];
+	int (f45[])[3];
+	int (f46[3])[3];
+	int ((f47[]))[3];
+	int ((f48[3]))[3];
+
+	int *f49[][3];
+	int *f50[3][3];
+	int **f51[][3];
+	int **f52[3][3];
+	int * const *f53[][3];
+	int * const *f54[3][3];
+	int * const * const f55[][3];
+	int * const * const f56[3][3];
+
+	int (*f57[][3]);
+	int (*f58[3][3]);
+	int (**f59[][3]);
+	int (**f60[3][3]);
+	int (* const *f61[][3]);
+	int (* const *f62[3][3]);
+	int (* const * const f63[][3]);
+	int (* const * const f64[3][3]);
+
+	int f65(int);
+	int (f66)(int);
+
+	int *f67(int);
+	int **f68(int);
+	int * const *f69(int);
+	int * const * const f70(int);
+
+	int *(f71)(int);
+	int **(f72)(int);
+	int * const *(f73)(int);
+	int * const * const (f74)(int);
+
+	int (*f75)(int);
+	int (**f76)(int);
+	int (* const *f77)(int);
+	int (* const * const f78)(int);
+
+	int (*(*f79)(int))();
+	int (*(* const f80)(int))();
+	int (* const(* const f81)(int))();
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/typedefRedef.c
===================================================================
--- tests/typedefRedef.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/typedefRedef.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,69 @@
+typedef volatile struct Foo FooInterm;
+typedef const FooInterm Foo;
+#ifdef ERR1
+typedef struct Foo Foo;
+#endif
+
+typedef int ** pt;
+typedef int ** pt;
+
+#ifdef __CFA__
+extern "C" {
+#endif
+typedef int __io_read_fn ( char buf);
+typedef int __io_write_fn ( const char buf);
+
+
+__io_read_fn read;
+__io_write_fn write;
+#ifdef __CFA__
+}
+#endif
+
+int sz;
+typedef int FUNC(int, ...);
+typedef int FUNC(int, ...);
+
+typedef int ARR[];
+typedef int ARR[];
+// #ifdef ERR1
+// if a typedef has an array dimension,
+// it can only be redefined to the same dimension
+typedef int ARR[2];
+// #endif
+
+typedef int X;
+typedef int Y;
+typedef Y Y2;
+typedef X X2;
+
+typedef Y2 Z;
+typedef X2 Z;
+
+typedef Z X2;
+typedef int X2;
+typedef Z X2;
+typedef int X2;
+
+// xxx - this doesn't work yet due to parsing problems with generic types
+// #ifdef __CFA__
+// typedef forall(type T) void foo(T);
+// typedef forall(type T) void foo(T);
+// typedef forall(type S) void foo(S); // should be allowed to do this...
+// #endif
+
+int main() {
+  typedef int ARR[sz];
+
+  // can't redefine typedef which is VLA
+#if ERR1
+  typedef int ARR[sz];
+#endif
+
+  Foo *x;
+
+  typedef struct Bar Foo;
+  Foo *y;
+
+  typedef int *** pt;
+}
Index: tests/typeof.c
===================================================================
--- tests/typeof.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/typeof.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,11 @@
+int main() {
+    int *v1;
+    typeof(v1) v2;
+    typeof(*v1) v3[4];
+    char *v4[4];
+    typeof(typeof(char *)[4]) v5;
+    typeof (int *) v6;
+    typeof( int ( int, int p ) ) *v7;
+    typeof( [int] ( int, int p ) ) *v8;
+    (typeof(v1)) v2; // cast with typeof
+}
Index: tests/user_literals.c
===================================================================
--- tests/user_literals.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/user_literals.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,93 @@
+//
+// 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.
+//
+// user_literals.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Sep  6 21:40:50 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Apr 29 16:51:42 2018
+// Update Count     : 54
+//
+
+#include <fstream.hfa>
+#include <wchar.h>
+#include <uchar.h>
+
+int ?`s( int s ) { sout | "secs" | s | endl; return s; }
+int ?`m( int m ) { sout | "mins" | m | endl; return m * 60; }
+int ?`h( int h ) { sout | "hours" | h | endl; return h * 3600; }
+int ?`_A_( int x ) { sout | "_A_" | x | endl; return x; }
+int ?`__thingy_( int x ) { sout | "_thingy_" | x | endl; return x; }
+
+int ?`s( const char * s ) { sout | "secs" | s | endl; return 0; }
+int ?`m( const char16_t * m ) { sout | "mins" | m | endl; return 0;}
+int ?`h( const char32_t * h ) { sout | "hours" | h | endl; return 0; }
+int ?`_A_( const wchar_t * str ) { sout | "_A_" | str | endl; return 0; }
+int ?`__thingy_( const char * str ) { sout | "_thingy_" | str | endl; return 0; }
+
+
+struct Weight { double stones; };
+void ?{}( Weight & w ) { w.stones = 0; }
+void ?{}( Weight & w, double w ) { w.stones = w; }
+Weight ?+?( Weight l, Weight r ) {
+	return (Weight){ l.stones + r.stones };
+}
+ofstream & ?|?( ofstream & os, Weight w ) { return os | w.stones; }
+
+Weight ?`st( double w ) { return (Weight){ w }; }		// backquote for user literals
+Weight ?`lb( double w ) { return (Weight){ w / 14.0 }; }
+Weight ?`kg( double w ) { return (Weight) { w * 0.16 }; }
+
+int main() {
+	Weight w, heavy = { 20 };							// 20 stone
+	w = 155`lb;
+	sout | w | endl;
+	w = 0b_1111`st;
+	sout | w | endl;
+	w = 0_233`lb;										// octal weight (155)
+	sout | w | endl;
+	w = 0x_9b_u`kg;
+	sout | w | endl;
+	w = 70.3`kg;
+	sout | w | endl;
+	w = 11`st + 1`lb;
+	sout | w | endl;
+	w = 5`st + 8`kg + 25`lb + heavy;
+	sout | w | endl;
+
+//	0`secs;
+	1`s;
+	23`s;
+	23u`m;
+	23l`h;
+	23_ul`_A_;
+	1_234_LL`__thingy_;
+
+	0xff_ffl;
+	0xff_ff`s;
+	0xff_ffu`m;
+	0xff_ffl`h;
+	0xff_fful`_A_;
+	0xff_ffLL`__thingy_;
+
+	'\n'`s;
+	L'\n'`h;
+	u'\n'`m;
+	L_'\n'`_A_;
+	U_'\n'`__thingy_;
+
+	"abc"`s;
+//	u"abc"`m;
+//	U_"abc"`h;
+//	L"abc"`_A_;
+	u8_"abc"`__thingy_;
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa user_literals.c" //
+// End: //
Index: tests/variableDeclarator.c
===================================================================
--- tests/variableDeclarator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/variableDeclarator.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,185 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// variableDeclarator.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:41:42 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 17 08:42:21 2016
+// Update Count     : 1
+// 
+
+// Variable declarations test
+int f1;
+int (f2);
+
+int *f3;
+int **f4;
+int * const *f5;
+int * const * const f6;
+
+int *(f7);
+int **(f8);
+int * const *(f9);
+int * const * const (f10);
+
+int (*f11);
+int (**f12);
+int (* const *f13);
+int (* const * const f14);
+
+int f15[];
+int f16[10];
+int (f17[]);
+int (f18[10]);
+
+int *f19[];
+int *f20[10];
+int **f21[];
+int **f22[10];
+int * const *f23[];
+int * const *f24[10];
+int * const * const f25[];
+int * const * const f26[10];
+
+int *(f27[]);
+int *(f28[10]);
+int **(f29[]);
+int **(f30[10]);
+int * const *(f31[]);
+int * const *(f32[10]);
+int * const * const (f33[]);
+int * const * const (f34[10]);
+
+int (*f35)[];
+int (*f36)[10];
+int (**f37)[];
+int (**f38)[10];
+int (* const *f39)[];
+int (* const *f40)[10];
+int (* const * const f41)[];
+int (* const * const f42)[10];
+
+int f43[][3];
+int f44[3][3];
+int (f45[])[3];
+int (f46[3])[3];
+int ((f47[]))[3];
+int ((f48[3]))[3];
+
+int *f49[][3];
+int *f50[3][3];
+int **f51[][3];
+int **f52[3][3];
+int * const *f53[][3];
+int * const *f54[3][3];
+int * const * const f55[][3];
+int * const * const f56[3][3];
+
+int (*f57[][3]);
+int (*f58[3][3]);
+int (**f59[][3]);
+int (**f60[3][3]);
+int (* const *f61[][3]);
+int (* const *f62[3][3]);
+int (* const * const f63[][3]);
+int (* const * const f64[3][3]);
+
+int f65(int);
+int (f66)(int);
+
+int *f67(int);
+int **f68(int);
+int * const *f69(int);
+int * const * const f70(int);
+
+int *(f71)(int);
+int **(f72)(int);
+int * const *(f73)(int);
+
+int * const * const (f74)(int);
+
+int (*f75)(int);
+int (**f76)(int);
+int (* const *f77)(int);
+int (* const * const f78)(int);
+
+int (*(*f79)(int))();
+int (*(* const f80)(int))();
+int (* const(* const f81)(int))();
+
+// errors
+
+//int fe0[]();				// array of functions
+//int (fe1[])();				// array of functions
+//int fe2()[];				// returning an array
+//int fe3()();				// returning a function
+//int (*fe4)()();				// returning a function
+//int ((*fe5())())[];			// returning an array
+
+// Cforall extensions
+
+* int cf3;
+* * int cf4;
+* const * int cf5;
+const * const * int cf6;
+
+[] int cf15;
+[10] int cf16;
+
+[] * int cf19;
+[10] * int cf20;
+int **cf21[];
+[10] * * int cf22;
+[] * const * int cf23;
+[10] * const * int cf24;
+[] const * const * int cf25;
+[10] const * const * int cf26;
+
+* [] int cf35;
+* [10] int cf36;
+* * [] int cf37;
+* * [10] int cf38;
+* const * [] int cf39;
+* const * [10] int cf40;
+const * const * [] int cf41;
+const * const * [10] int cf42;
+
+[][3] int cf43;
+[3][3] int cf44;
+
+[][3] * int cf49;
+[3][3] * int cf50;
+[][3] * * int cf51;
+[3][3] * * int cf52;
+[][3] const * int cf53;
+[3][3] * const * int cf54;
+[][3] const * const * int cf55;
+[3][3] const * const * int cf56;
+
+[int] cf65(int);
+[int] cf66(int);
+
+[* int] cf67(int);
+[* * int] cf68(int);
+[const * * int] cf69(int);
+[const * const * int] cf70(int);
+
+// function pointer
+
+*[]*[]* [ *[]*[] int ]( *[]*[] int, *[]*[] int ) v3;
+
+//Dummy main
+int main(int argc, char const *argv[])
+{
+	return 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa variableDeclarator.c" //
+// End: //
Index: tests/vector.c
===================================================================
--- tests/vector.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/vector.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,66 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// vector.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Mon Jul  4 23:36:19 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jan 18 17:08:08 2018
+// Update Count     : 27
+//
+
+#include <fstream.hfa>
+#include <vector.hfa>
+
+#undef assert
+#define assert(x)								\
+	do {										\
+		if ( !(x) ) {							\
+			sout | "CHECK failed :" | #x | "at" | __FILE__ | " :" | __LINE__ | endl;	\
+			abort();							\
+		}										\
+	} while( 0 == 1 )
+
+int main() {
+	vector( int ) iv;
+
+	assert( empty( &iv ) );
+	assert( size( &iv ) == 0 );
+	sout | size( &iv ) | endl;
+
+	push_back( &iv, 1 );
+	assert( size( &iv ) == 1 );
+	sout | size( &iv ) | endl;
+
+	push_back( &iv, 2 );
+	assert( size( &iv ) == 2 );
+	sout | size( &iv ) | endl;
+
+	push_back( &iv, 3 );
+	assert( size( &iv ) == 3 );
+	sout | size( &iv ) | endl;
+
+	assert( !empty( &iv ) );
+	assert( size( &iv ) == 3 );
+	assert( at( &iv, 0 ) == 1 );
+	assert( (&iv)[0] == 1 );
+	assert( at( &iv, 1 ) == 2 );
+	assert( (&iv)[1] == 2 );
+	assert( at( &iv, 2 ) == 3 );
+	assert( (&iv)[2] == 3 );
+
+	clear( &iv );
+
+	assert( empty( &iv ) );
+	assert( size( &iv ) == 0 );
+	sout | size( &iv ) | endl;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa vector.c" //
+// End: //
Index: tests/virtualCast.c
===================================================================
--- tests/virtualCast.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/virtualCast.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,76 @@
+// Testing the virtual cast, as part of strict inheritance.
+
+/* IMPORTANT: This test does not repersent the final feature set.
+ * We are missing a number of important aspects such as:
+ * + vtable type generation.
+ * + vtable instance generation, that might use different resolution rules.
+ * + Virtual syntax to force said generation on structures and traits.
+ * + Trait references/pointers that do the virtual_table lookup.
+ */
+
+#include <stdlib.hfa>
+#include <assert.h>
+
+struct alpha_vtable {
+	alpha_vtable const * const parent;
+	char (*code)(void);
+};
+
+struct alpha {
+	alpha_vtable const * virtual_table;
+};
+
+char ret_a(void) {
+	return 'a';
+}
+
+
+
+struct beta_vtable {
+	alpha_vtable const * const parent;
+	char (*code)(void);
+};
+
+struct beta {
+	beta_vtable const * virtual_table;
+};
+
+char ret_b(void) {
+	return 'b';
+}
+
+
+
+struct gamma_vtable {
+	beta_vtable const * const parent;
+	char (*code)(void);
+};
+
+struct gamma {
+	gamma_vtable const * virtual_table;
+};
+
+char ret_g(void) {
+	return 'g';
+}
+
+
+extern "C" {
+	alpha_vtable _alpha_vtable_instance = { 0, ret_a };
+	beta_vtable _beta_vtable_instance = { &_alpha_vtable_instance, ret_b };
+	gamma_vtable _gamma_vtable_instance = { &_beta_vtable_instance, ret_g };
+}
+
+int main (int argc, char * argv[]) {
+
+	gamma * tri = malloc(); tri->virtual_table = &_gamma_vtable_instance;
+	beta * mid = (virtual beta *)tri;
+	assert( 'g' == mid->virtual_table->code() );
+
+	alpha * top = malloc(); top->virtual_table = &_alpha_vtable_instance;
+	mid = (virtual beta *)top;
+	assert( ! mid );
+
+	free(tri);
+	free(top);
+}
Index: tests/voidPtr.c
===================================================================
--- tests/voidPtr.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/voidPtr.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,17 @@
+int main() {
+	int i, j;
+	void *a = &i, *b = &j;
+
+	if ( a == 0 ) {
+		abort();
+	}
+
+	if ( a == b ) {
+		abort();
+	}
+
+	if ( ! a ) {
+		abort();
+	}	
+}
+
Index: tests/warnings/.expect/self-assignment.txt
===================================================================
--- tests/warnings/.expect/self-assignment.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/warnings/.expect/self-assignment.txt	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,25 @@
+warnings/self-assignment.c:29:1 warning: self assignment of expression: Cast of:
+  Variable Expression: j: signed int
+... to:
+  reference to signed int
+warnings/self-assignment.c:30:1 warning: self assignment of expression: Cast of:
+  Variable Expression: s: instance of struct S with body 1 
+... to:
+  reference to instance of struct S with body 1 
+warnings/self-assignment.c:31:1 warning: self assignment of expression: Cast of:
+  Member Expression, with field: 
+    i: signed int
+  ... from aggregate: 
+    Variable Expression: s: instance of struct S with body 1 
+... to:
+  reference to signed int
+warnings/self-assignment.c:32:1 warning: self assignment of expression: Cast of:
+  Member Expression, with field: 
+    i: signed int
+  ... from aggregate: 
+    Member Expression, with field: 
+      s: instance of struct S with body 1 
+    ... from aggregate: 
+      Variable Expression: t: instance of struct T with body 1 
+... to:
+  reference to signed int
Index: tests/warnings/self-assignment.c
===================================================================
--- tests/warnings/self-assignment.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/warnings/self-assignment.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,38 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// self-assignment.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Thu Mar 1 13:53:57 2018
+// Last Modified By : Rob Schluntz
+// Last Modified On : Thu Mar 1 13:53:57 2018
+// Update Count     : 2
+//
+
+struct S {
+  int i;
+};
+
+struct T {
+  S s;
+};
+
+int main() {
+  int j = 0;
+  S s = { 0 };
+  T t = { { 0 } };
+
+  j = j;
+  s = s;
+  s.i = s.i;
+  t.s.i = t.s.i;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa dtor-early-exit" //
+// End: //
Index: tests/with-statement.c
===================================================================
--- tests/with-statement.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tests/with-statement.c	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,108 @@
+//
+// 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.
+//
+// tupleFunction.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Mon Dec 04 17:41:45 2017
+// Last Modified By : Rob Schluntz
+// Last Modified On : Mon Dec 04 17:45:07 2017
+// Update Count     : 2
+//
+
+struct S {
+  int i;
+  // dynamically allocated member ensures ctor/dtors are called correctly on temporaries
+  int * ptr;
+};
+
+// with clause on reference parameter
+void ?{}(S & this, int n) with(this) {
+  i = n;
+  ptr = (int *)malloc(sizeof(int));
+}
+
+void ?{}(S & this) {
+  this{ 0 };
+}
+
+void ?{}(S & this, S other) {
+  this{ other.i };
+}
+
+S ?=?(S & this, S other) with(this) {
+  i = other.i;
+  *ptr = *other.ptr;
+  return this;
+}
+
+void ^?{}(S & this) with(this) {
+  free(ptr);
+}
+
+struct S2 {
+  S s;
+};
+
+void ?{}(S2 & this, int n) {
+  (this.s){ n };
+}
+
+forall(otype T)
+struct Box {
+  T x;
+};
+
+forall(otype T)
+void ?{}(Box(T) & this) with(this) { // with clause in polymorphic function
+  x{};
+}
+
+void print(int i) { printf("%d", i); }
+
+forall(otype T | { void print(T); })
+void foo(T t) {
+  Box(T) b = { t };
+  with(b) {  // with statement in polymorphic function
+    print(x);
+    printf("\n");
+  }
+}
+
+// ensure with-statement temporary generation works correctly
+S mk() {
+  printf("called mk\n");
+  return (S) { 444 };
+}
+
+// ensure with-statement temporary generation with reference-returning functions works correctly
+S & ref() {
+  static S var = { 123456789 };
+  return var;
+}
+
+int main() {
+  S2 s2 = { 12345 };
+  with (s2) {
+    with(s) { // with s2.s
+      printf("%d %d %d\n", i, s.i, s2.s.i);
+      foo(i);  // s.i
+      with(mk()) {
+        printf("%d %d %d\n", i, i, i);
+        with(ref()) {
+          printf("%d %d %d\n", i, i, i);
+        } // with ref()
+        with(ref()) {
+          printf("%d %d %d\n", i, i, i);
+        } // with ref()
+      } // with mk()
+    } // with s
+  } // with s2
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tools/Makefile.am
===================================================================
--- tools/Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ tools/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -15,6 +15,8 @@
 ###############################################################################
 
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+
 CC = @BACKEND_CC@
-CFLAGS = -Wall -Wextra -O2 -g
+AM_CFLAGS = -Wall -Wextra -O2 -g
 
 noinst_PROGRAMS = busy catchsig repeat watchdog
Index: tools/Makefile.in
===================================================================
--- tools/Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ tools/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -96,5 +96,6 @@
 subdir = tools
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
@@ -187,5 +188,4 @@
 BACKEND_CC = @BACKEND_CC@
 BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
 CC = @BACKEND_CC@
 CCAS = @CCAS@
@@ -202,5 +202,5 @@
 CFA_NAME = @CFA_NAME@
 CFA_PREFIX = @CFA_PREFIX@
-CFLAGS = -Wall -Wextra -O2 -g
+CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
@@ -218,4 +218,5 @@
 EXEEXT = @EXEEXT@
 GREP = @GREP@
+HOST_FLAGS = @HOST_FLAGS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -227,8 +228,9 @@
 LEXLIB = @LEXLIB@
 LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBCFA_TARGET_DIRS = @LIBCFA_TARGET_DIRS@
+LIBCFA_TARGET_MAKEFILES = @LIBCFA_TARGET_MAKEFILES@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
@@ -246,4 +248,5 @@
 SHELL = @SHELL@
 STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
 VERSION = @VERSION@
 YACC = @YACC@
@@ -301,4 +304,6 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+AM_CFLAGS = -Wall -Wextra -O2 -g
 busy_SOURCES = busy.c
 busy_LDFLAGS = -pthread
Index: tools/PrettyGitLogs.sh
===================================================================
--- tools/PrettyGitLogs.sh	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
+++ tools/PrettyGitLogs.sh	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+set -e
+
+GIT_UPDATE="$1/GIT_UPDATE"
+GIT_LOG="$1/GIT_LOG"
+GIT_DIFF="$1/GIT_DIFF"
+
+rm -f ${GIT_UPDATE}  ${GIT_LOG}  ${GIT_DIFF}
+
+GitOldRef=$2
+GitNewRef=$3
+
+
+revisions=$(git rev-list ${GitOldRef}..${GitNewRef})
+
+for rev in ${revisions}; do
+    type=$(git cat-file -t ${rev})
+    echo "       via  ${rev} (${type})" >>  ${GIT_UPDATE}
+done
+rev=${GitOldRef}
+type=$(git cat-file -t ${rev})
+echo "      from  ${rev} (${type})" >>  ${GIT_UPDATE}
+
+git rev-list --format=short ${GitOldRef}...${GitNewRef} >  ${GIT_LOG}
+
+git diff --stat ${GitNewRef} ${GitOldRef} >  ${GIT_DIFF}
Index: tools/prettyprinter/Makefile.am
===================================================================
--- tools/prettyprinter/Makefile.am	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ tools/prettyprinter/Makefile.am	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -1,11 +1,11 @@
 ######################## -*- Mode: Makefile-Automake -*- ######################
-## 
+##
 ## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
 ##
 ## The contents of this file are covered under the licence agreement in the
 ## file "LICENCE" distributed with Cforall.
-## 
-## Makefile.am -- 
-## 
+##
+## Makefile.am --
+##
 ## Author           : Peter A. Buhr
 ## Created On       : Wed Jun 28 12:07:10 2017
@@ -14,4 +14,6 @@
 ## Update Count     : 20
 ###############################################################################
+
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
 
 BUILT_SOURCES = parser.hh
Index: tools/prettyprinter/Makefile.in
===================================================================
--- tools/prettyprinter/Makefile.in	(revision 2b79a705ea7fc9439579f72a887d080e6387f0d5)
+++ tools/prettyprinter/Makefile.in	(revision cdbab558c7734aaa7ebe27165f8fc27f3514ad1a)
@@ -95,5 +95,6 @@
 subdir = tools/prettyprinter
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
@@ -211,5 +212,4 @@
 BACKEND_CC = @BACKEND_CC@
 BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
 CC = @CC@
 CCAS = @CCAS@
@@ -242,4 +242,5 @@
 EXEEXT = @EXEEXT@
 GREP = @GREP@
+HOST_FLAGS = @HOST_FLAGS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -251,8 +252,9 @@
 LEXLIB = @LEXLIB@
 LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBCFA_TARGET_DIRS = @LIBCFA_TARGET_DIRS@
+LIBCFA_TARGET_MAKEFILES = @LIBCFA_TARGET_MAKEFILES@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LTLIBOBJS = @LTLIBOBJS@
-MACHINE_TYPE = @MACHINE_TYPE@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
@@ -270,4 +272,5 @@
 SHELL = @SHELL@
 STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
 VERSION = @VERSION@
 YACC = @YACC@
@@ -325,4 +328,5 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
 BUILT_SOURCES = parser.hh
 AM_YFLAGS = -d -t -v
