Index: .gitignore
===================================================================
--- .gitignore	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ .gitignore	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -11,6 +11,5 @@
 stamp-h1
 /Makefile
-src/**/Makefile
-tools/**/Makefile
+**/Makefile
 /version
 
Index: Makefile.am
===================================================================
--- Makefile.am	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ Makefile.am	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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@
@@ -291,8 +293,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 +313,5 @@
 SHELL = @SHELL@
 STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
 VERSION = @VERSION@
 YACC = @YACC@
@@ -365,9 +369,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 +765,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 +778,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 +891,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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ aclocal.m4	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ automake/cfa.m4	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,71 @@
+
+m4_define([M4CFA_PARSE_PREFIX], [
+	if test "x$prefix" = "xNONE"; then
+		cfa_prefix=${ac_default_prefix}
+	else
+		cfa_prefix=${prefix}
+	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
+		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
+	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
+		"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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ automake/compile	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ automake/config.guess	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ automake/config.sub	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ automake/depcomp	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ automake/install-sh	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ automake/missing	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ automake/test-driver	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ automake/ylwrap	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/Makefile.am	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,321 @@
+######################## -*- 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
+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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,744 @@
+# 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@
+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@
+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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/Monitor.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/bench.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/compile/empty.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,3 @@
+int main() {
+	return 0;
+}
Index: benchmark/creation/JavaThread.java
===================================================================
--- benchmark/creation/JavaThread.java	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/creation/JavaThread.java	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/creation/cfa_cor.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/creation/cfa_thrd.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/creation/goroutine.go	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/creation/pthreads.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/creation/upp_cor.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/creation/upp_thrd.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/ctxswitch/JavaThread.java	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/ctxswitch/cfa_cor.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/ctxswitch/cfa_thrd.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/ctxswitch/cfa_thrd2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/ctxswitch/goroutine.go	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/ctxswitch/kos_fibre.cpp	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/ctxswitch/kos_fibre2.cpp	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/ctxswitch/pthreads.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/ctxswitch/upp_cor.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/ctxswitch/upp_thrd.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/fetch_add.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/function.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/interrupt_linux.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/loop.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/mutex/JavaThread.java	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/mutex/cfa1.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/mutex/cfa2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/mutex/cfa4.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/mutex/pthreads.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/mutex/upp.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/schedext/cfa1.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/schedext/cfa2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/schedext/cfa4.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/schedext/upp.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/schedint/JavaThread.java	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/schedint/cfa1.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/schedint/cfa2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/schedint/cfa4.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/schedint/pthreads.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ benchmark/schedint/upp.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ configure	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -665,5 +665,7 @@
 CXX
 CFA_FLAGS
-MACHINE_TYPE
+LIBCFA_TARGET_MAKEFILES
+LIBCFA_TARGET_DIRS
+TARGET_HOSTS
 host_os
 host_vendor
@@ -675,5 +677,4 @@
 build
 BUILD_IN_TREE_FLAGS
-BUILD_IN_TREE_FLAGS_NOLIB
 CFACPP
 CFACC
@@ -683,16 +684,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 +761,5 @@
 with_cfa_name
 with_backend_compiler
-enable_target_release
-enable_target_debug
-enable_threading
+with_target_hosts
 enable_dependency_tracking
 '
@@ -1420,8 +1411,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 +1421,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 +2488,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 +2519,14 @@
 AM_BACKSLASH='\'
 
+
+
+
+
+
+
+
+
+# don't use the default CFLAGS as they unconditonnaly add -O2
+: ${CFLAGS=""}
 
 am__api_version='1.15'
@@ -3077,10 +3075,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 +3093,10 @@
 
 
-#Define the new name of the installed command
-CFA_NAME=${cfa_name}
-
+	CFA_NAME=${cfa_name}
+
+
+
+#==============================================================================
+# version information
 
 rm -f version
@@ -3146,6 +3150,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 +3172,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 +3213,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 +3226,12 @@
 
 
-
-
-# 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
 
 cat >>confdefs.h <<_ACEOF
@@ -3338,12 +3239,12 @@
 _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
 
 cat >>confdefs.h <<_ACEOF
@@ -3351,12 +3252,12 @@
 _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
 
 cat >>confdefs.h <<_ACEOF
@@ -3364,12 +3265,16 @@
 _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
 
 cat >>confdefs.h <<_ACEOF
@@ -3377,23 +3282,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=$ac_pwd/$ac_confdir/
+TOP_BUILDDIR=$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,30 +3406,106 @@
 
 
-MACHINE_TYPE=$host_cpu
-
-
-if ! test "$host_cpu" = "$build_cpu"; then
-	case $host_cpu in
-		i386)
-			CFLAGS+=" -m32 "
-			CXXFLAGS+=" -m32 "
-			CFAFLAGS+=" -m32 "
-			LDFLAGS+=" -m32 "
-			;;
-		i686)
-			CFLAGS+=" -m32 "
-                  CXXFLAGS+=" -m32 "
-                  CFAFLAGS+=" -m32 "
-                  LDFLAGS+=" -m32 "
-			;;
-		x86_64)
-			CFLAGS+=" -m64 "
-			CXXFLAGS+=" -m64 "
-			CFAFLAGS+=" -m64 "
-			LDFLAGS+=" -m64 "
-			;;
+
+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
-fi
-
+
+
+	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
+		"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
@@ -3501,4 +3516,5 @@
 
 
+#==============================================================================
 # Checks for programs.
 ac_ext=cpp
@@ -6283,11 +6299,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 +6433,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 +7048,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 +7816,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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ configure.ac	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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,122 @@
 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=$ac_pwd/$ac_confdir/
+TOP_BUILDDIR=$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 "
-			;;
-		i686)
-			CFLAGS+=" -m32 "
-                  CXXFLAGS+=" -m32 "
-                  CFAFLAGS+=" -m32 "
-                  LDFLAGS+=" -m32 "
-			;;
-		x86_64)
-			CFLAGS+=" -m64 "
-			CXXFLAGS+=" -m64 "
-			CFAFLAGS+=" -m64 "
-			LDFLAGS+=" -m64 "
-			;;
+
+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
-fi
-
+
+	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 +209,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: driver/Makefile.am
===================================================================
--- driver/Makefile.am	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ driver/Makefile.am	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,41 @@
+######################## -*- 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
+
+# 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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ driver/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,651 @@
+# 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@
+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@
+
+# applies to both programs
+AM_CXXFLAGS = -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ driver/as.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ driver/cc1.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ driver/cfa.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/ArrayN.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/Attributes.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/Initialization.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/Initialization2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/Makefile.example	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/Members.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/Misc.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/MiscError.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/Rank2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/Tuple.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,70 @@
+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: examples/abstype.c
===================================================================
--- examples/abstype.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/abstype.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/constructors.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/forward.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/.gitignore	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/assert.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/blockers/explicit_cast.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/blockers/file_scope.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/blockers/recursive_realloc.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/crash.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/deref.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/field.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/find.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/inline.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/malloc.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/not_equal.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/oddtype.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/push_back.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/push_back.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/realloc.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/return.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/return_template.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/slow_malloc.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/static_const_local.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/test-assert.cpp	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/void_pointer.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/while.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/bug-repro/zero.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/pool-alloc/allocate-malign.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/pool-alloc/allocate-malloc.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/pool-alloc/allocate-mmap.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/pool-alloc/allocate-win-valloc.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/premake4.lua	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/allocate-pool.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/allocate-pool.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/gc.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/gcpointers.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/gcpointers.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/card_table.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/collector.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/collector.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/gc_tools.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/globals.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/memory_pool.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/memory_pool.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/object_header.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/object_header.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/state.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/internal/state.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/test_include.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/tools.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/tools/checks.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/tools/print.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/tools/print.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/src/tools/worklist.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/test/badlll.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/test/gctest.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/gc_no_raii/test/operators.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/huge.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/includes.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,147 @@
+//
+// 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: examples/index.h
===================================================================
--- examples/index.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/index.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/it_out.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/multicore.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/new.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/poly-bench.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/prolog.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/quad.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/s.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/simplePoly.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/simpler.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/specialize.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/square.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/twice.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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.
+//
+// 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.hfa>
+
+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: examples/wrapper/.gitignore
===================================================================
--- examples/wrapper/.gitignore	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/wrapper/.gitignore	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,3 @@
+.tags
+build/
+test
Index: examples/wrapper/premake4.lua
===================================================================
--- examples/wrapper/premake4.lua	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/wrapper/premake4.lua	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/wrapper/src/main.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/wrapper/src/pointer.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ examples/zero_one.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/.autom4te.cfg	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/Makefile.am	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/aclocal.m4	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/automake/compile	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/compile
Index: libcfa/automake/config.guess
===================================================================
--- libcfa/automake/config.guess	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/automake/config.guess	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/config.guess
Index: libcfa/automake/config.sub
===================================================================
--- libcfa/automake/config.sub	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/automake/config.sub	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/config.sub
Index: libcfa/automake/depcomp
===================================================================
--- libcfa/automake/depcomp	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/automake/depcomp	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/depcomp
Index: libcfa/automake/install-sh
===================================================================
--- libcfa/automake/install-sh	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/automake/install-sh	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/install-sh
Index: libcfa/automake/missing
===================================================================
--- libcfa/automake/missing	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/automake/missing	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+/usr/share/automake-1.15/missing
Index: libcfa/configure
===================================================================
--- libcfa/configure	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/configure	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,5630 @@
+#! /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
+
+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
+
+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
+
+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
+
+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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/configure.ac	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/Makefile.am	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 = 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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 = 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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/bootloader.cf	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/builtins.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/builtins.def	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/extras.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/extras.regx	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/prelude-gen.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/prelude.old.cf	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/prototypes.awk	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/prototypes.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/prototypes.sed	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/sync-builtins.cf	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/prelude/sync-builtins.def	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/Makefile.am	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/assert.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/bits/algorithm.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/bits/align.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/bits/containers.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/bits/debug.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/bits/debug.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/bits/defs.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/bits/locks.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/bits/signal.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/clock.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/common.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/common.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/CtxSwitch-armv7l.S	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/CtxSwitch-i386.S	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/CtxSwitch-i686.S	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+CtxSwitch-i386.S
Index: libcfa/src/concurrency/CtxSwitch-x64.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-x64.S	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/CtxSwitch-x64.S	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+CtxSwitch-x86_64.S
Index: libcfa/src/concurrency/CtxSwitch-x86.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-x86.S	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/CtxSwitch-x86.S	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+CtxSwitch-i386.S
Index: libcfa/src/concurrency/CtxSwitch-x86_64.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-x86_64.S	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/CtxSwitch-x86_64.S	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/alarm.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/alarm.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/coroutine.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/coroutine.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/invoke.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/invoke.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/kernel.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/kernel.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/monitor.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/monitor.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/mutex.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/mutex.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/preemption.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/preemption.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/thread.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/concurrency/thread.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/containers/maybe.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/containers/maybe.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/containers/pair.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/containers/pair.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/containers/result.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/containers/result.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/containers/vector.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/containers/vector.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/exception.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/exception.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/expat.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/fstream.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/fstream.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/gmp.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/heap.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,978 @@
+//
+// 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"
+
+#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
+
+#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 {
+						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; // 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
+	    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, 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
+
+
+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__
+
+
+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() ) {
+		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
+
+
+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: libcfa/src/interpose.cfa
===================================================================
--- libcfa/src/interpose.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/interpose.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/iostream.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/iostream.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/iterator.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/iterator.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/limits.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/limits.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/lsda.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/math.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/memcheck.awk	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/rational.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/rational.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/startup.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/startup.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/assert.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/bfdlink.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/complex.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/ctype.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/errno.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/fenv.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/float.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/gmp.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/hwloc.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/inttypes.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/iso646.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/krb5.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/limits.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/locale.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/malloc.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/math.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/setjmp.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/signal.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/stdalign.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/stdarg.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/stdatomic.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/stdbool.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/stddef.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/stdint.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/stdio.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/stdlib.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/stdnoreturn.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/string.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/sys/ucontext.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/tgmath.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/threads.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/time.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/uchar.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/unistd.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/wchar.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdhdr/wctype.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdlib.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/stdlib.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/time.cfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/time.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/time_t.hfa	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/virtual.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ libcfa/src/virtual.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ src/Concurrency/Keywords.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ src/Concurrency/Waitfor.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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/Makefile.am
===================================================================
--- src/Makefile.am	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ src/Makefile.am	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -23,4 +23,5 @@
 
 MAINTAINERCLEANFILES =
+MOSTLYCLEANFILES =
 
 # Is there a way to use a variable for the directory names?
@@ -43,9 +44,10 @@
 # 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
+___driver_cfa_cpp_SOURCES = $(SRC)
+___driver_cfa_cpp_LDADD = -ldl			# yywrap
+
+AM_CXXFLAGS = -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O2 -g -std=c++14
+AM_LDFLAGS = -Xlinker -export-dynamic
 
 MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}}
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ src/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -137,8 +137,9 @@
 build_triplet = @build@
 host_triplet = @host@
-cfa_cpplib_PROGRAMS = driver/cfa-cpp$(EXEEXT)
+cfa_cpplib_PROGRAMS = ../driver/cfa-cpp$(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)
@@ -151,119 +152,77 @@
 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/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_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -282,8 +241,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 +279,6 @@
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(driver_cfa_cpp_SOURCES)
-DIST_SOURCES = $(driver_cfa_cpp_SOURCES)
+SOURCES = $(___driver_cfa_cpp_SOURCES)
+DIST_SOURCES = $(___driver_cfa_cpp_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
@@ -373,5 +328,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@
@@ -413,8 +367,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 +387,5 @@
 SHELL = @SHELL@
 STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
 VERSION = @VERSION@
 YACC = @YACC@
@@ -541,6 +497,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 +506,8 @@
 # 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 = -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O2 -g -std=c++14
+AM_LDFLAGS = -Xlinker -export-dynamic
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -637,16 +593,16 @@
 	@$(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/CodeGenerator.$(OBJEXT): CodeGen/$(am__dirstamp) \
 	CodeGen/$(DEPDIR)/$(am__dirstamp)
-CodeGen/driver_cfa_cpp-FixNames.$(OBJEXT): CodeGen/$(am__dirstamp) \
+CodeGen/GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \
 	CodeGen/$(DEPDIR)/$(am__dirstamp)
-CodeGen/driver_cfa_cpp-FixMain.$(OBJEXT): CodeGen/$(am__dirstamp) \
+CodeGen/FixNames.$(OBJEXT): CodeGen/$(am__dirstamp) \
 	CodeGen/$(DEPDIR)/$(am__dirstamp)
-CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT):  \
-	CodeGen/$(am__dirstamp) CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/FixMain.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/OperatorTable.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
 CodeTools/$(am__dirstamp):
 	@$(MKDIR_P) CodeTools
@@ -655,8 +611,8 @@
 	@$(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)
+CodeTools/DeclStats.$(OBJEXT): CodeTools/$(am__dirstamp) \
+	CodeTools/$(DEPDIR)/$(am__dirstamp)
+CodeTools/TrackLoc.$(OBJEXT): CodeTools/$(am__dirstamp) \
+	CodeTools/$(DEPDIR)/$(am__dirstamp)
 Concurrency/$(am__dirstamp):
 	@$(MKDIR_P) Concurrency
@@ -665,9 +621,7 @@
 	@$(MKDIR_P) Concurrency/$(DEPDIR)
 	@: > Concurrency/$(DEPDIR)/$(am__dirstamp)
-Concurrency/driver_cfa_cpp-Keywords.$(OBJEXT):  \
-	Concurrency/$(am__dirstamp) \
+Concurrency/Keywords.$(OBJEXT): Concurrency/$(am__dirstamp) \
 	Concurrency/$(DEPDIR)/$(am__dirstamp)
-Concurrency/driver_cfa_cpp-Waitfor.$(OBJEXT):  \
-	Concurrency/$(am__dirstamp) \
+Concurrency/Waitfor.$(OBJEXT): Concurrency/$(am__dirstamp) \
 	Concurrency/$(DEPDIR)/$(am__dirstamp)
 Common/$(am__dirstamp):
@@ -677,15 +631,15 @@
 	@$(MKDIR_P) Common/$(DEPDIR)
 	@: > Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-SemanticError.$(OBJEXT): Common/$(am__dirstamp) \
+Common/SemanticError.$(OBJEXT): Common/$(am__dirstamp) \
 	Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
+Common/UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
 	Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT): Common/$(am__dirstamp) \
+Common/DebugMalloc.$(OBJEXT): Common/$(am__dirstamp) \
 	Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-Assert.$(OBJEXT): Common/$(am__dirstamp) \
+Common/Assert.$(OBJEXT): Common/$(am__dirstamp) \
 	Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-Heap.$(OBJEXT): Common/$(am__dirstamp) \
+Common/Heap.$(OBJEXT): Common/$(am__dirstamp) \
 	Common/$(DEPDIR)/$(am__dirstamp)
-Common/driver_cfa_cpp-Eval.$(OBJEXT): Common/$(am__dirstamp) \
+Common/Eval.$(OBJEXT): Common/$(am__dirstamp) \
 	Common/$(DEPDIR)/$(am__dirstamp)
 ControlStruct/$(am__dirstamp):
@@ -695,20 +649,15 @@
 	@$(MKDIR_P) ControlStruct/$(DEPDIR)
 	@: > ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
+ControlStruct/LabelGenerator.$(OBJEXT): ControlStruct/$(am__dirstamp) \
 	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
+ControlStruct/LabelFixer.$(OBJEXT): ControlStruct/$(am__dirstamp) \
 	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-MLEMutator.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
+ControlStruct/MLEMutator.$(OBJEXT): ControlStruct/$(am__dirstamp) \
 	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
+ControlStruct/Mutate.$(OBJEXT): ControlStruct/$(am__dirstamp) \
 	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT):  \
-	ControlStruct/$(am__dirstamp) \
+ControlStruct/ForExprMutator.$(OBJEXT): ControlStruct/$(am__dirstamp) \
 	ControlStruct/$(DEPDIR)/$(am__dirstamp)
-ControlStruct/driver_cfa_cpp-ExceptTranslate.$(OBJEXT):  \
+ControlStruct/ExceptTranslate.$(OBJEXT):  \
 	ControlStruct/$(am__dirstamp) \
 	ControlStruct/$(DEPDIR)/$(am__dirstamp)
@@ -719,18 +668,18 @@
 	@$(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/GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \
 	GenPoly/$(DEPDIR)/$(am__dirstamp)
-GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \
+GenPoly/ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \
 	GenPoly/$(DEPDIR)/$(am__dirstamp)
-GenPoly/driver_cfa_cpp-Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \
+GenPoly/Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \
 	GenPoly/$(DEPDIR)/$(am__dirstamp)
-GenPoly/driver_cfa_cpp-Specialize.$(OBJEXT): GenPoly/$(am__dirstamp) \
+GenPoly/Specialize.$(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)
+GenPoly/FindFunction.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/InstantiateGeneric.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
 InitTweak/$(am__dirstamp):
 	@$(MKDIR_P) InitTweak
@@ -739,12 +688,12 @@
 	@$(MKDIR_P) InitTweak/$(DEPDIR)
 	@: > InitTweak/$(DEPDIR)/$(am__dirstamp)
-InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
+InitTweak/GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
 	InitTweak/$(DEPDIR)/$(am__dirstamp)
-InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
+InitTweak/FixInit.$(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)
+InitTweak/FixGlobalInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
+	InitTweak/$(DEPDIR)/$(am__dirstamp)
+InitTweak/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
@@ -756,25 +705,25 @@
 	@$(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)
+Parser/TypeData.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/parserutility.$(OBJEXT): Parser/$(am__dirstamp) \
 	Parser/$(DEPDIR)/$(am__dirstamp)
 ResolvExpr/$(am__dirstamp):
@@ -784,59 +733,41 @@
 	@$(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/AlternativeFinder.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/Alternative.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/PtrsAssignable.$(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/CastCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/PtrsCastable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/AdjustExprType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/AlternativePrinter.$(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/RenameVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/FindOpenVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/PolyCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/Occurs.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/TypeEnvironment.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/CurrentObject.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/ExplodedActual.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
 	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
 SymTab/$(am__dirstamp):
@@ -846,13 +777,13 @@
 	@$(MKDIR_P) SymTab/$(DEPDIR)
 	@: > SymTab/$(DEPDIR)/$(am__dirstamp)
-SymTab/driver_cfa_cpp-Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \
+SymTab/Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \
 	SymTab/$(DEPDIR)/$(am__dirstamp)
-SymTab/driver_cfa_cpp-Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \
+SymTab/Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \
 	SymTab/$(DEPDIR)/$(am__dirstamp)
-SymTab/driver_cfa_cpp-Validate.$(OBJEXT): SymTab/$(am__dirstamp) \
+SymTab/Validate.$(OBJEXT): SymTab/$(am__dirstamp) \
 	SymTab/$(DEPDIR)/$(am__dirstamp)
-SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \
+SymTab/FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \
 	SymTab/$(DEPDIR)/$(am__dirstamp)
-SymTab/driver_cfa_cpp-Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \
+SymTab/Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \
 	SymTab/$(DEPDIR)/$(am__dirstamp)
 SynTree/$(am__dirstamp):
@@ -862,72 +793,72 @@
 	@$(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)
+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)
 Tuples/$(am__dirstamp):
 	@$(MKDIR_P) Tuples
@@ -936,9 +867,9 @@
 	@$(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/TupleAssignment.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/TupleExpansion.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/Explode.$(OBJEXT): Tuples/$(am__dirstamp) \
 	Tuples/$(DEPDIR)/$(am__dirstamp)
 Validate/$(am__dirstamp):
@@ -948,6 +879,6 @@
 	@$(MKDIR_P) Validate/$(DEPDIR)
 	@: > Validate/$(DEPDIR)/$(am__dirstamp)
-Validate/driver_cfa_cpp-HandleAttributes.$(OBJEXT):  \
-	Validate/$(am__dirstamp) Validate/$(DEPDIR)/$(am__dirstamp)
+Validate/HandleAttributes.$(OBJEXT): Validate/$(am__dirstamp) \
+	Validate/$(DEPDIR)/$(am__dirstamp)
 Virtual/$(am__dirstamp):
 	@$(MKDIR_P) Virtual
@@ -956,13 +887,13 @@
 	@$(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)
 
 mostlyclean-compile:
@@ -986,114 +917,114 @@
 	-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)/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)/Validate.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 +1043,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:
@@ -2770,4 +1161,5 @@
 	fi
 mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
 clean-generic:
@@ -2776,4 +1168,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 +1197,4 @@
 	-rm -f Virtual/$(DEPDIR)/$(am__dirstamp)
 	-rm -f Virtual/$(am__dirstamp)
-	-rm -f driver/$(am__dirstamp)
 
 maintainer-clean-generic:
Index: src/Parser/module.mk
===================================================================
--- src/Parser/module.mk	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ src/Parser/module.mk	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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: c/benchmark/Makefile.am
===================================================================
--- src/benchmark/Makefile.am	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,3 +1,0 @@
-int main() {
-	return 0;
-}
Index: c/benchmark/creation/JavaThread.java
===================================================================
--- src/benchmark/creation/JavaThread.java	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ src/cfa.make	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ src/config.h.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,519 +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 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 "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;
-
-	// add stdbool to get defines for bool/true/false
-	args[nargs] = "-imacros";
-	nargs += 1;
-	args[nargs] = "stdbool.h";
-	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;
-		args[nargs] = "-Xlinker";
-		nargs += 1;
-		args[nargs] = "--undefined=__cfaabi_dbg_record";
-		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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,3 +1,0 @@
-.tags
-build/
-test
Index: c/examples/wrapper/premake4.lua
===================================================================
--- src/examples/wrapper/premake4.lua	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,164 +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 : Sat Aug 11 15:42:24 2018
-// Update Count     : 10
-//
-
-#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();
-
-		#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: c/libcfa/bits/signal.h
===================================================================
--- src/libcfa/bits/signal.h	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-CtxSwitch-i386.S
Index: c/libcfa/concurrency/CtxSwitch-x86_64.S
===================================================================
--- src/libcfa/concurrency/CtxSwitch-x86_64.S	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,845 +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(
-	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: c/libcfa/concurrency/kernel_private.h
===================================================================
--- src/libcfa/concurrency/kernel_private.h	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 : Sat Aug 11 13:54:27 2018
-// Update Count     : 132
-//
-
-#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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,251 +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 : Fri Aug 10 18:19:40 2018
-// Update Count     : 284
-//
-
-#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 );
-	#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: c/libcfa/gmp
===================================================================
--- src/libcfa/gmp	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,978 +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 : 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"
-
-#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 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 {
-						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; // 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
-	    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, 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
-
-
-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__
-
-
-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() ) {
-		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
-
-
-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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 : Sat Aug 11 08:22:49 2018
-// Update Count     : 156
-//
-
-#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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 Aug 11 13:56:43 2018
-// Update Count     : 473
-//
-
-#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 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: c/libcfa/iterator
===================================================================
--- src/libcfa/iterator	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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.
-//
-// 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;
-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: c/libcfa/startup.h
===================================================================
--- src/libcfa/startup.h	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 : 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: c/libcfa/stdhdr/math.h
===================================================================
--- src/libcfa/stdhdr/math.h	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 : 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.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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ src/main.cc	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 : Sun Aug  5 21:40:38 2018
-// Update Count     : 20
-//
-
-// 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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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/prototypes.awk
===================================================================
--- src/prelude/prototypes.awk	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 [((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 __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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-45
-42
Index: c/tests/.expect/declarationErrors.txt
===================================================================
--- src/tests/.expect/declarationErrors.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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___2;
-    signed int __t2___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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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___2;
-    signed int __t2___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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-00000000 ffffffff
-00000000 ffffffff
Index: c/tests/.expect/gmp.x64.txt
===================================================================
--- src/tests/.expect/gmp.x64.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-123 456 456
-5 5
Index: c/tests/.expect/quoted_keyword.txt
===================================================================
--- src/tests/.expect/quoted_keyword.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-10
Index: c/tests/.expect/random.txt
===================================================================
--- src/tests/.expect/random.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,4 +1,0 @@
-1 0 
-1 
-0 
-0 1 
Index: c/tests/.expect/simpleGenericTriple.txt
===================================================================
--- src/tests/.expect/simpleGenericTriple.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-132 1001 459
-132 1001.12 459
Index: c/tests/.expect/sum.txt
===================================================================
--- src/tests/.expect/sum.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,5 +1,0 @@
-0
-1
-2
-3
-0
Index: c/tests/.expect/with-statement.txt
===================================================================
--- src/tests/.expect/with-statement.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,3 +1,0 @@
-.out/
-.err/
-.type
Index: c/tests/.in/fstream_test.txt
===================================================================
--- src/tests/.in/fstream_test.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,3 +1,0 @@
--2
-2 3
-4
Index: c/tests/.in/gmp.txt
===================================================================
--- src/tests/.in/gmp.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-12345678901234567890123456789 12345678901234567890123456789 12345678901234567890123456789
Index: c/tests/.in/io.data
===================================================================
--- src/tests/.in/io.data	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-2 3 4 5
Index: c/tests/KRfunctions.c
===================================================================
--- src/tests/KRfunctions.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 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>
-#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 ( 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: c/tests/array.c
===================================================================
--- src/tests/array.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,6 +1,0 @@
-// alternative ANSI99 brackets
-
-int main() <%
-    int x<:10:>;
-%>
-
Index: c/tests/completeTypeError.c
===================================================================
--- src/tests/completeTypeError.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-4000000
Index: c/tests/concurrent/.expect/multi-monitor.txt
===================================================================
--- src/tests/concurrent/.expect/multi-monitor.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-2000000 2000000 2000000
Index: c/tests/concurrent/.expect/preempt.txt
===================================================================
--- src/tests/concurrent/.expect/preempt.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,5 +1,0 @@
-100
-200
-300
-400
-500
Index: c/tests/concurrent/.expect/thread.txt
===================================================================
--- src/tests/concurrent/.expect/thread.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-total:400000
Index: c/tests/concurrent/examples/.expect/boundedBufferINT.txt
===================================================================
--- src/tests/concurrent/examples/.expect/boundedBufferINT.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-total:400000
Index: c/tests/concurrent/examples/.expect/datingService.txt
===================================================================
--- src/tests/concurrent/examples/.expect/datingService.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-10000
Index: c/tests/concurrent/examples/.expect/quickSort.txt
===================================================================
--- src/tests/concurrent/examples/.expect/quickSort.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 : Thu Aug  9 09:17:30 2018
-// Update Count     : 13
-// 
-
-#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 ( 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: c/tests/concurrent/examples/quickSort.c
===================================================================
--- src/tests/concurrent/examples/quickSort.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-Starting
-Done
Index: c/tests/concurrent/signal/block.c
===================================================================
--- src/tests/concurrent/signal/block.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-Starting
-Stopping
Index: c/tests/concurrent/waitfor/.expect/else.txt
===================================================================
--- src/tests/concurrent/waitfor/.expect/else.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,177 +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 Aug  2 09:27:53 2018
-// Update Count     : 8
-//
-
-#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);
-
-	// REMOVE WHEN ?* PROBLEM FIXED.
-	delete(out_iter.out);
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: c/tests/functions.c
===================================================================
--- src/tests/functions.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/signal/block.c
Index: c/tests/preempt_longrun/coroutine.c
===================================================================
--- src/tests/preempt_longrun/coroutine.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/coroutineYield.c
Index: c/tests/preempt_longrun/create.c
===================================================================
--- src/tests/preempt_longrun/create.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/signal/disjoint.c
Index: c/tests/preempt_longrun/enter.c
===================================================================
--- src/tests/preempt_longrun/enter.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/preempt.c
Index: c/tests/preempt_longrun/processor.c
===================================================================
--- src/tests/preempt_longrun/processor.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/signal/wait.c
Index: c/tests/preempt_longrun/yield.c
===================================================================
--- src/tests/preempt_longrun/yield.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 --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.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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,4 +1,0 @@
-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: c/tests/raii/.expect/dtor-early-exit-ERR2.txt
===================================================================
--- src/tests/raii/.expect/dtor-early-exit-ERR2.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,4 +1,0 @@
-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: c/tests/raii/.expect/dtor-early-exit.txt
===================================================================
--- src/tests/raii/.expect/dtor-early-exit.txt	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,253 +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 : Sat Aug 11 07:58:39 2018
-// Update Count     : 8
-//
-
-#include <fstream>
-#include <stdlib>
-#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: c/tests/raii/globals.c
===================================================================
--- src/tests/raii/globals.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 : Thu Aug  9 07:54:57 2018
-// Update Count     : 101
-// 
-
-#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 ( 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: c/tests/shortCircuit.c
===================================================================
--- src/tests/shortCircuit.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,123 +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 : Thu Aug  2 08:03:09 2018
-// Update Count     : 279
-//
-
-#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
-	delete( gs.x );
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa sum.c" //
-// End: //
Index: c/tests/swap.c
===================================================================
--- src/tests/swap.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(revision )
@@ -1,142 +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 : Peter A. Buhr
-// Last Modified On : Thu Aug  2 09:24:04 2018
-// Update Count     : 6
-//
-
-#include <stdlib>
-
-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: c/tests/tuple/tuples.c
===================================================================
--- src/tests/tuple/tuples.c	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ 	(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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/KRfunctions.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,93 @@
+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: tests/.expect/KRfunctions.x86.txt
===================================================================
--- tests/.expect/KRfunctions.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/KRfunctions.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,93 @@
+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: tests/.expect/abs.txt
===================================================================
--- tests/.expect/abs.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/abs.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/alloc-ERROR.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/alloc.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/ato.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/attributes.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,387 @@
+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: tests/.expect/attributes.x86.txt
===================================================================
--- tests/.expect/attributes.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/attributes.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,387 @@
+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 [((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 __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: tests/.expect/avl_test.txt
===================================================================
--- tests/.expect/avl_test.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/avl_test.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,3 @@
+3 13 0
+foo bar baz
+world bar cheese
Index: tests/.expect/castError.txt
===================================================================
--- tests/.expect/castError.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/castError.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/completeTypeError.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/complex.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/counter.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,2 @@
+45
+42
Index: tests/.expect/declarationErrors.txt
===================================================================
--- tests/.expect/declarationErrors.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/declarationErrors.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/declarationSpecifier.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,704 @@
+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: tests/.expect/declarationSpecifier.x86.txt
===================================================================
--- tests/.expect/declarationSpecifier.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/declarationSpecifier.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,704 @@
+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: tests/.expect/designations.txt
===================================================================
--- tests/.expect/designations.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/designations.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/div.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/extension.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,201 @@
+__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: tests/.expect/extension.x86.txt
===================================================================
--- tests/.expect/extension.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/extension.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,201 @@
+__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: tests/.expect/fallthrough.txt
===================================================================
--- tests/.expect/fallthrough.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/fallthrough.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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/fstream_test.txt
===================================================================
--- tests/.expect/fstream_test.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/fstream_test.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/function-operator.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/functions.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,249 @@
+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: tests/.expect/functions.x86.txt
===================================================================
--- tests/.expect/functions.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/functions.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,249 @@
+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: tests/.expect/gccExtensions.x64.txt
===================================================================
--- tests/.expect/gccExtensions.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/gccExtensions.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,177 @@
+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___2;
+    signed int __t2___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: tests/.expect/gccExtensions.x86.txt
===================================================================
--- tests/.expect/gccExtensions.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/gccExtensions.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,177 @@
+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___2;
+    signed int __t2___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: tests/.expect/genericUnion.txt
===================================================================
--- tests/.expect/genericUnion.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/genericUnion.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,2 @@
+00000000 ffffffff
+00000000 ffffffff
Index: tests/.expect/gmp.x64.txt
===================================================================
--- tests/.expect/gmp.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/gmp.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/hello.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/identity.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/ifwhileCtl.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/io1.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/io2.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/literals.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/math1.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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.273957253830121071+0.583700758758614628i
+\ 16 256
+\ 912673 256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i
Index: tests/.expect/math2.x64.txt
===================================================================
--- tests/.expect/math2.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/math2.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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/math2.x86.txt
===================================================================
--- tests/.expect/math2.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/math2.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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.x64.txt
===================================================================
--- tests/.expect/math3.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/math3.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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/math3.x86.txt
===================================================================
--- tests/.expect/math3.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/math3.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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.x64.txt
===================================================================
--- tests/.expect/math4.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/math4.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/minmax.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/nested-types-ERR1.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/nested-types-ERR2.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/polymorphism.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,2 @@
+123 456 456
+5 5
Index: tests/.expect/quoted_keyword.txt
===================================================================
--- tests/.expect/quoted_keyword.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/quoted_keyword.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+10
Index: tests/.expect/random.txt
===================================================================
--- tests/.expect/random.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/random.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/rational.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/references.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/scopeErrors.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/searchsort.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/shortCircuit.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,4 @@
+1 0 
+1 
+0 
+0 1 
Index: tests/.expect/simpleGenericTriple.txt
===================================================================
--- tests/.expect/simpleGenericTriple.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/simpleGenericTriple.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,2 @@
+132 1001 459
+132 1001.12 459
Index: tests/.expect/sum.txt
===================================================================
--- tests/.expect/sum.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/sum.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/swap.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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.x64.txt
===================================================================
--- tests/.expect/time.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/time.x64.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,19 @@
+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: tests/.expect/time.x86.txt
===================================================================
--- tests/.expect/time.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/time.x86.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,19 @@
+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: tests/.expect/typedefRedef-ERR1.txt
===================================================================
--- tests/.expect/typedefRedef-ERR1.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/typedefRedef-ERR1.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/user_literals.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/vector.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,5 @@
+0
+1
+2
+3
+0
Index: tests/.expect/with-statement.txt
===================================================================
--- tests/.expect/with-statement.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.expect/with-statement.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.gitignore	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,3 @@
+.out/
+.err/
+.type
Index: tests/.in/fstream_test.txt
===================================================================
--- tests/.in/fstream_test.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.in/fstream_test.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,3 @@
+-2
+2 3
+4
Index: tests/.in/gmp.txt
===================================================================
--- tests/.in/gmp.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.in/gmp.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+12345678901234567890123456789 12345678901234567890123456789 12345678901234567890123456789
Index: tests/.in/io.data
===================================================================
--- tests/.in/io.data	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.in/io.data	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/.in/rational.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+2 3 4 5
Index: tests/KRfunctions.c
===================================================================
--- tests/KRfunctions.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/KRfunctions.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/Makefile.am	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,135 @@
+######################## -*- 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
+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 ${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/"
+
+AM_CFLAGS += ${DEBUG_FLAGS} ${INSTALL_FLAGS} ${ARCH_FLAGS}
+
+CC = @CFACC@
+
+.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)
+	$(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: tests/Makefile.in
===================================================================
--- tests/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,705 @@
+# 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@
+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@
+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 ${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/" ${DEBUG_FLAGS} \
+	${INSTALL_FLAGS} ${ARCH_FLAGS}
+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)
+	$(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: tests/abs.c
===================================================================
--- tests/abs.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/abs.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/alloc.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/array.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/ato.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/attributes.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/avltree/avl-private.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/avltree/avl-private.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/avltree/avl.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/avltree/avl0.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/avltree/avl1.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/avltree/avl2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/avltree/avl3.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/avltree/avl4.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/avltree/avl_test.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/builtins/sync.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/cast.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/castError.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/commentMisc.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,6 @@
+// alternative ANSI99 brackets
+
+int main() <%
+    int x<:10:>;
+%>
+
Index: tests/completeTypeError.c
===================================================================
--- tests/completeTypeError.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/completeTypeError.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/complex.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/.expect/coroutineYield.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/.expect/monitor.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+4000000
Index: tests/concurrent/.expect/multi-monitor.txt
===================================================================
--- tests/concurrent/.expect/multi-monitor.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/.expect/multi-monitor.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+2000000 2000000 2000000
Index: tests/concurrent/.expect/preempt.txt
===================================================================
--- tests/concurrent/.expect/preempt.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/.expect/preempt.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,5 @@
+100
+200
+300
+400
+500
Index: tests/concurrent/.expect/thread.txt
===================================================================
--- tests/concurrent/.expect/thread.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/.expect/thread.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/coroutineYield.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/.expect/boundedBufferEXT.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+total:400000
Index: tests/concurrent/examples/.expect/boundedBufferINT.txt
===================================================================
--- tests/concurrent/examples/.expect/boundedBufferINT.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/.expect/boundedBufferINT.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+total:400000
Index: tests/concurrent/examples/.expect/datingService.txt
===================================================================
--- tests/concurrent/examples/.expect/datingService.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/.expect/datingService.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/.expect/matrixSum.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+10000
Index: tests/concurrent/examples/.expect/quickSort.txt
===================================================================
--- tests/concurrent/examples/.expect/quickSort.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/.expect/quickSort.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/.in/quickSort.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/boundedBufferEXT.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 : Wed May  2 16:12:58 2018
+// Update Count     : 7
+//
+
+#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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/boundedBufferINT.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 Apr 26 23:08:17 2018
+// Update Count     : 82
+//
+
+#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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/datingService.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/matrixSum.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/examples/quickSort.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 : Tue Jan 30 15:58:58 2018
+// Update Count     : 162
+//
+
+#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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/monitor.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/multi-monitor.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/preempt.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/signal/.expect/block.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,2 @@
+Starting waiters
+Waiters done
Index: tests/concurrent/signal/.expect/disjoint.txt
===================================================================
--- tests/concurrent/signal/.expect/disjoint.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/signal/.expect/disjoint.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/signal/.expect/wait.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,2 @@
+Starting
+Done
Index: tests/concurrent/signal/block.c
===================================================================
--- tests/concurrent/signal/block.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/signal/block.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/signal/disjoint.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/signal/wait.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/thread.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/.expect/barge.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/.expect/dtor.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,2 @@
+Starting
+Stopping
Index: tests/concurrent/waitfor/.expect/else.txt
===================================================================
--- tests/concurrent/waitfor/.expect/else.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/.expect/else.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/.expect/recurse.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/.expect/statment.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/.expect/when.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/barge.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/dtor.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/else.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/parse.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/parse2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/recurse.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/simple.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/statment.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/concurrent/waitfor/when.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/config.py.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+# encoding: utf-8
+"""
+config.py
+"""
+
+SRCDIR   = "@srcdir@"
+BUILDDIR = "@builddir@"
+HOSTARCH = "@host_cpu@"
Index: tests/context.c
===================================================================
--- tests/context.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/context.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/.expect/fibonacci.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/.expect/fmtLines.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/.expect/pingpong.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/.expect/prodcons.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/.expect/runningTotal.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/.in/fmtLines.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/fibonacci.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,49 @@
+//
+// 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.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 ( 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: tests/coroutine/fmtLines.c
===================================================================
--- tests/coroutine/fmtLines.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/fmtLines.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 : Tue May 15 12:25:33 2018
+// Update Count     : 42
+//
+
+#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 = 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: tests/coroutine/pingpong.c
===================================================================
--- tests/coroutine/pingpong.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/pingpong.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 : Wed Sep 20 13:41:39 2017
+// Update Count     : 26
+//
+
+#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 ( 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: tests/coroutine/prodcons.c
===================================================================
--- tests/coroutine/prodcons.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/prodcons.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 : Tue Jan  2 12:17:01 2018
+// Update Count     : 47
+//
+
+#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 ( 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: tests/coroutine/runningTotal.c
===================================================================
--- tests/coroutine/runningTotal.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/coroutine/runningTotal.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 : Wed Dec  6 08:09:24 2017
+// Update Count     : 2
+//
+
+#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 ( 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: tests/counter.c
===================================================================
--- tests/counter.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/counter.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/declarationErrors.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/declarationSpecifier.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/designations.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/div.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/enum.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/except-0.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/except-1.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/except-2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/except-3.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/except-mac.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/expression.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/extension.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/fallthrough.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 : 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: tests/forall.c
===================================================================
--- tests/forall.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/forall.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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/fstream_test.c
===================================================================
--- tests/fstream_test.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/fstream_test.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/function-operator.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/functions.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/gccExtensions.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/genericUnion.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/gmp.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 : 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.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 ( 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: tests/heap.c
===================================================================
--- tests/heap.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/heap.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/hello.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/identFuncDeclarator.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/identParamDeclarator.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/identity.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/ifwhileCtl.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/io1.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/io2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/labelledExit.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 : 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: tests/limits.c
===================================================================
--- tests/limits.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/limits.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/literals.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/long_tests.h	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/math1.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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.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: tests/math2.c
===================================================================
--- tests/math2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/math2.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/math3.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/math4.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/maybe.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/minmax.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/namedParmArg.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/nested-types.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/numericConstants.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/occursError.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/operators.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/polymorphism.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/Makefile.am	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,76 @@
+######################## -*- 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: tests/preempt_longrun/Makefile.in
===================================================================
--- tests/preempt_longrun/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,929 @@
+# 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@
+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@
+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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/block.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+../concurrent/signal/block.c
Index: tests/preempt_longrun/coroutine.c
===================================================================
--- tests/preempt_longrun/coroutine.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/coroutine.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+../concurrent/coroutineYield.c
Index: tests/preempt_longrun/create.c
===================================================================
--- tests/preempt_longrun/create.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/create.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/disjoint.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+../concurrent/signal/disjoint.c
Index: tests/preempt_longrun/enter.c
===================================================================
--- tests/preempt_longrun/enter.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/enter.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/enter3.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/preempt.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+../concurrent/preempt.c
Index: tests/preempt_longrun/processor.c
===================================================================
--- tests/preempt_longrun/processor.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/processor.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/stack.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/update-type	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/wait.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,1 @@
+../concurrent/signal/wait.c
Index: tests/preempt_longrun/yield.c
===================================================================
--- tests/preempt_longrun/yield.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/preempt_longrun/yield.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/pybin/__init__.py	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/pybin/settings.py	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,121 @@
+from __future__ import print_function
+
+import os
+import sys
+import tools
+
+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',
+	}
+
+	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
+			try :
+				self.flags = Architecture.CrossCompileFlags[arch]
+			except KeyError:
+				print("Cross compilation not available for architecture %s" % arch, file=sys.stderr)
+				sys.exit(1)
+
+		else:
+			self.target = canonical_host
+			self.cross_compile = False
+			self.flags = ""
+
+		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")
+
+def init( options ):
+	global arch
+	global dry_run
+	global generating
+	global make
+	global debug
+	global install
+
+	dry_run    = options.dry_run
+	generating = options.regenerate_expected
+	make       = 'make'
+	debug	     = Debug(options.debug)
+	install    = Install(options.install)
+	arch       = Architecture(options.arch)
+
+
+def updateMakeCmd(force, jobs):
+	global make
+
+	make = "make" if not force else ("make -j%i" % jobs)
+
+def validate():
+	make_ret, _ = tools.make( ".validate", error_file = ".validate.err", redirects  = "2> /dev/null 1> /dev/null", )
+	if make_ret != 0:
+		with open (".validate.err", "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("%s/.validate.err" % BUILDDIR)
+		sys.exit(1)
+
+	tools.rm("%s/.validate.err" % BUILDDIR)
Index: tests/pybin/test_run.py
===================================================================
--- tests/pybin/test_run.py	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/pybin/test_run.py	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/pybin/tools.py	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,244 @@
+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 ):
+	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):
+	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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/quoted_keyword.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/.expect/ctor-autogen-ERR1.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/.expect/dtor-early-exit-ERR1.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/.expect/dtor-early-exit-ERR2.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/.expect/dtor-early-exit.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/.expect/globals.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/.expect/memberCtors-ERR1.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/.expect/memberCtors.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/ctor-autogen.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/dtor-early-exit.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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>
+#include <stdlib>
+#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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/globals.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/init_once.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/memberCtors.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/multiDimension.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/raii/multiDimension.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/random.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/rational.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/references.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/result.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/scope.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/scopeErrors.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/searchsort.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/shortCircuit.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/simpleGenericTriple.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/stdincludes.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/structMember.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/subrange.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/sum.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/swap.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/switch.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/test.py	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -0,0 +1,307 @@
+#!/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('--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 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 :
+		# 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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/time.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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.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: tests/tuple/.expect/tupleAssign.txt
===================================================================
--- tests/tuple/.expect/tupleAssign.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/.expect/tupleAssign.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/.expect/tupleCast.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/.expect/tupleFunction.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/.expect/tupleMember.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/.expect/tuplePolymorphism.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/.expect/tupleVariadic.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/tupleAssign.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/tupleCast.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/tupleFunction.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/tupleMember.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/tuplePolymorphism.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/tupleVariadic.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/tuple/tuples.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/typeGenerator.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/typedef.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/typedefDeclarator.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/typedefRedef.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/typeof.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/user_literals.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/variableDeclarator.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/vector.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/virtualCast.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/voidPtr.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/warnings/.expect/self-assignment.txt	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/warnings/self-assignment.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
+++ tests/with-statement.c	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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.in
===================================================================
--- tools/Makefile.in	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ tools/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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@
@@ -227,8 +227,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 +247,5 @@
 SHELL = @SHELL@
 STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
 VERSION = @VERSION@
 YACC = @YACC@
Index: tools/prettyprinter/Makefile.in
===================================================================
--- tools/prettyprinter/Makefile.in	(revision 26f4dbed8a133e64646f5b7efa404a3c51008ee5)
+++ tools/prettyprinter/Makefile.in	(revision 0e0f128c9f975b8eb3f6b0870c12c639668ef24c)
@@ -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@
@@ -251,8 +251,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 +271,5 @@
 SHELL = @SHELL@
 STRIP = @STRIP@
+TARGET_HOSTS = @TARGET_HOSTS@
 VERSION = @VERSION@
 YACC = @YACC@
