Index: src/BasicTypes-gen.cc
===================================================================
--- src/BasicTypes-gen.cc	(revision fba51ab7e7342c8e2f909f1ac3eaddb4c088c888)
+++ src/BasicTypes-gen.cc	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
@@ -249,6 +249,7 @@
 	} // for
 
-	#define startMK "// GENERATED START, DO NOT EDIT"
-	#define endMK "// GENERATED END"
+	#define STARTMK "// GENERATED START, DO NOT EDIT"
+	#define BYMK "// GENERATED BY " __FILE__
+	#define ENDMK "// GENERATED END"
 	fstream file;
 	stringstream buffer, code;
@@ -260,9 +261,9 @@
 	resetInput( file, Type, buffer, code, str );
 
-	if ( (start = str.find( startMK )) == string::npos ) Abort( "start", Type );
-	start += sizeof( startMK );							// includes newline
+	if ( (start = str.find( STARTMK )) == string::npos ) Abort( "start", Type );
+	start += sizeof( STARTMK );							// includes newline
 	code << str.substr( 0, start );
 
-	code << "\t// GENERATED BY " __FILE__ << endl;
+	code << "\t" << BYMK << endl;
 	code << "\tenum Kind {" << endl;
 	for ( int r = 0; r < NUMBER_OF_BASIC_TYPES; r += 1 ) {
@@ -273,5 +274,5 @@
 	code << "\t";										// indentation for end marker
 
-	if ( (start = str.find( endMK, start + 1 )) == string::npos ) Abort( "end", Type );
+	if ( (start = str.find( ENDMK, start + 1 )) == string::npos ) Abort( "end", Type );
 	code << str.substr( start );
 
@@ -283,9 +284,9 @@
 	resetInput( file, ConversionCost, buffer, code, str );
 
-	if ( (start = str.find( startMK )) == string::npos ) Abort( "start", ConversionCost );
-	start += sizeof( startMK );							// includes newline
+	if ( (start = str.find( STARTMK )) == string::npos ) Abort( "start", ConversionCost );
+	start += sizeof( STARTMK );							// includes newline
 	code << str.substr( 0, start );
 
-	code << "\t// GENERATED BY " __FILE__ << endl;
+	code << "\t" << BYMK << endl;
 	code << "\t/* EXTENDED INTEGRAL RANK HIERARCHY (root to leaves)" << endl;
 	for ( int c = 0; c < NUMBER_OF_BASIC_TYPES; c += 1 ) {
@@ -305,10 +306,10 @@
 	code << "\t";										// indentation for end marker
 
-	if ( (start = str.find( endMK, start + 1 )) == string::npos ) Abort( "end", ConversionCost );
-	if ( (end = str.find( startMK, start + 1 )) == string::npos ) Abort( "start", ConversionCost );
-	end += sizeof( startMK );
+	if ( (start = str.find( ENDMK, start + 1 )) == string::npos ) Abort( "end", ConversionCost );
+	if ( (end = str.find( STARTMK, start + 1 )) == string::npos ) Abort( "start", ConversionCost );
+	end += sizeof( STARTMK );
 	code << str.substr( start, end - start );
 	
-	code << "\t// GENERATED BY " __FILE__ << endl;
+	code << "\t" << BYMK << endl;
 	code << "\tstatic const int costMatrix[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // path length from root to node" << endl
 		 << "\t\t/*       ";
@@ -327,10 +328,10 @@
 	code << "\t";										// indentation for end marker
 
-	if ( (start = str.find( endMK, start + 1 )) == string::npos ) Abort( "end", ConversionCost );
-	if ( (end = str.find( startMK, start + 1 )) == string::npos ) Abort( "start", ConversionCost );
-	end += sizeof( startMK );
+	if ( (start = str.find( ENDMK, start + 1 )) == string::npos ) Abort( "end", ConversionCost );
+	if ( (end = str.find( STARTMK, start + 1 )) == string::npos ) Abort( "start", ConversionCost );
+	end += sizeof( STARTMK );
 	code << str.substr( start, end - start );
 
-	code << "\t// GENERATED BY " __FILE__ << endl;
+	code << "\t" << BYMK << endl;
 	code << "\tstatic const int signMatrix[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // number of sign changes in safe conversion" << endl
 		 << "\t\t/*       ";
@@ -349,5 +350,5 @@
 	code << "\t";										// indentation for end marker
 
-	if ( (start = str.find( endMK, start + 1 )) == string::npos ) Abort( "end", ConversionCost );
+	if ( (start = str.find( ENDMK, start + 1 )) == string::npos ) Abort( "end", ConversionCost );
 	code << str.substr( start );
 
@@ -359,10 +360,10 @@
 	resetInput( file, CommonType, buffer, code, str );
 
-	if ( (start = str.find( startMK )) == string::npos ) Abort( "start", CommonType );
-	start += sizeof( startMK );							// includes newline
+	if ( (start = str.find( STARTMK )) == string::npos ) Abort( "start", CommonType );
+	start += sizeof( STARTMK );							// includes newline
 	code << str.substr( 0, start );
 
 	enum { PER_ROW = 6 };
-	code << "\t// GENERATED BY " __FILE__ << endl;
+	code << "\t" << BYMK << endl;
 	code << "\t#define BT BasicType::" << endl;
 	code << "\tstatic const BasicType::Kind commonTypes[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // nearest common ancestor" << endl
@@ -394,5 +395,5 @@
 	code << "\t";										// indentation for end marker
 
-	if ( (start = str.find( endMK, start + 1 )) == string::npos ) Abort( "end", CommonType );
+	if ( (start = str.find( ENDMK, start + 1 )) == string::npos ) Abort( "end", CommonType );
 	code << str.substr( start );
 
@@ -404,6 +405,6 @@
 	resetInput( file, ManglerCommon, buffer, code, str );
 
-	if ( (start = str.find( startMK )) == string::npos ) Abort( "start", ManglerCommon );
-	start += sizeof( startMK );							// includes newline
+	if ( (start = str.find( STARTMK )) == string::npos ) Abort( "start", ManglerCommon );
+	start += sizeof( STARTMK );							// includes newline
 	code << str.substr( 0, start );
 
@@ -432,5 +433,5 @@
 	code << "\t\t\t";									// indentation for end marker
 
-	if ( (start = str.find( endMK, start + 1 )) == string::npos ) Abort( "end", ManglerCommon );
+	if ( (start = str.find( ENDMK, start + 1 )) == string::npos ) Abort( "end", ManglerCommon );
 	code << str.substr( start );
 
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision fba51ab7e7342c8e2f909f1ac3eaddb4c088c888)
+++ src/Makefile.am	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 08:51:46 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Sat Feb  9 19:07:14 2019
-## Update Count     : 81
+## Last Modified On : Fri Feb 15 09:44:09 2019
+## Update Count     : 97
 ###############################################################################
 
@@ -40,4 +40,11 @@
 include Validate/module.mk
 include Virtual/module.mk
+
+$(addprefix $(srcdir)/, ResolvExpr/ConversionCost.cc ResolvExpr/CommonType.cc SymTab/ManglerCommon.cc) : $(srcdir)/SynTree/Type.h
+
+$(srcdir)/SynTree/Type.h : BasicTypes-gen.cc
+	${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${AM_CFLAGS} ${<} -o BasicTypes-gen -Wall -Wextra -O2 -g -std=c++14
+	@./BasicTypes-gen
+	@rm BasicTypes-gen
 
 # put into lib for now
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision fba51ab7e7342c8e2f909f1ac3eaddb4c088c888)
+++ src/Makefile.in	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
@@ -1557,4 +1557,11 @@
 
 
+$(addprefix $(srcdir)/, ResolvExpr/ConversionCost.cc ResolvExpr/CommonType.cc SymTab/ManglerCommon.cc) : $(srcdir)/SynTree/Type.h
+
+$(srcdir)/SynTree/Type.h : BasicTypes-gen.cc
+	${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${AM_CFLAGS} ${<} -o BasicTypes-gen -Wall -Wextra -O2 -g -std=c++14
+	@./BasicTypes-gen
+	@rm BasicTypes-gen
+
 # 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.
Index: src/ResolvExpr/CommonType.cc
===================================================================
--- src/ResolvExpr/CommonType.cc	(revision fba51ab7e7342c8e2f909f1ac3eaddb4c088c888)
+++ src/ResolvExpr/CommonType.cc	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 06:59:27 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 13 22:30:32 2019
-// Update Count     : 22
+// Last Modified On : Thu Feb 14 17:10:10 2019
+// Update Count     : 24
 //
 
@@ -175,57 +175,7 @@
 		return result;
 	}
-#if 0
-	#define BT BasicType::
-	static const BasicType::Kind combinedType[][ BasicType::NUMBER_OF_BASIC_TYPES ] =
-	{
-/* 		Bool		Char	SignedChar	UnsignedChar	ShortSignedInt	ShortUnsignedInt	SignedInt	UnsignedInt	LongSignedInt	LongUnsignedInt	LongLongSignedInt	LongLongUnsignedInt	Float	Double	LongDouble	FloatComplex	DoubleComplex	LongDoubleComplex	FloatImaginary	DoubleImaginary	LongDoubleImaginary   SignedInt128   UnsignedInt128   Float80   Float128 */
-		/* Bool */ 	{ BT Bool,		BT Char,	BT SignedChar,	BT UnsignedChar,	BT ShortSignedInt,	BT ShortUnsignedInt,	BT SignedInt,	BT UnsignedInt,	BT LongSignedInt,	BT LongUnsignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* Char */ 	{ BT Char,		BT Char,	BT UnsignedChar,	BT UnsignedChar,	BT ShortSignedInt,	BT ShortUnsignedInt,	BT SignedInt,	BT UnsignedInt,	BT LongSignedInt,	BT LongUnsignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* SignedChar */ 	{ BT SignedChar,	BT UnsignedChar,	BT SignedChar,	BT UnsignedChar,	BT ShortSignedInt,	BT ShortUnsignedInt,	BT SignedInt,	BT UnsignedInt,	BT LongSignedInt,	BT LongUnsignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* UnsignedChar */ 	{ BT UnsignedChar,	BT UnsignedChar,	BT UnsignedChar,	BT UnsignedChar,	BT ShortSignedInt,	BT ShortUnsignedInt,	BT SignedInt,	BT UnsignedInt,	BT LongSignedInt,	BT LongUnsignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* ShortSignedInt */ 	{ BT ShortSignedInt,	BT ShortSignedInt,	BT ShortSignedInt,	BT ShortSignedInt,	BT ShortSignedInt,	BT ShortUnsignedInt,	BT SignedInt,	BT UnsignedInt,	BT LongSignedInt,	BT LongUnsignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* ShortUnsignedInt */ 	{ BT ShortUnsignedInt,	BT ShortUnsignedInt,	BT ShortUnsignedInt,	BT ShortUnsignedInt,	BT ShortUnsignedInt,	BT ShortUnsignedInt,	BT SignedInt,	BT UnsignedInt,	BT LongSignedInt,	BT LongUnsignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* SignedInt */ 	{ BT SignedInt,		BT SignedInt,	BT SignedInt,	BT SignedInt,	BT SignedInt,	BT SignedInt,	BT SignedInt,	BT UnsignedInt,	BT LongSignedInt,	BT LongUnsignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* UnsignedInt */ 	{ BT UnsignedInt,		BT UnsignedInt,	BT UnsignedInt,	BT UnsignedInt,	BT UnsignedInt,	BT UnsignedInt,	BT UnsignedInt,	BT UnsignedInt,	BT LongUnsignedInt,	BT LongUnsignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* LongSignedInt */ 	{ BT LongSignedInt,		BT LongSignedInt,	BT LongSignedInt,	BT LongSignedInt,	BT LongSignedInt,	BT LongSignedInt,	BT LongSignedInt,	BT LongUnsignedInt,	BT LongSignedInt,	BT LongUnsignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* LongUnsignedInt */ 	{ BT LongUnsignedInt,	BT LongUnsignedInt,	BT LongUnsignedInt,	BT LongUnsignedInt,	BT LongUnsignedInt,	BT LongUnsignedInt,	BT LongUnsignedInt,	BT LongUnsignedInt,	BT LongUnsignedInt,	BT LongUnsignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* LongLongSignedInt */ 	{ BT LongLongSignedInt,	BT LongLongSignedInt,	BT LongLongSignedInt,	BT LongLongSignedInt,	BT LongLongSignedInt,	BT LongLongSignedInt,	BT LongLongSignedInt,	BT LongLongSignedInt,	BT LongLongSignedInt,	BT LongLongSignedInt,	BT LongLongSignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* LongLongUnsignedInt */ 	{ BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT LongLongUnsignedInt,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-
-		/* Float */ 	{ BT Float,	BT Float,	BT Float,	BT Float,	BT Float,	BT Float,	BT Float,	BT Float,	BT Float,	BT Float,	BT Float,	BT Float,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT Float,	BT Float, BT Float80, BT Float128, BT Float, BT Float, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT FloatComplex, BT FloatComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* Double */ 	{ BT Double,	BT Double,	BT Double,	BT Double,	BT Double,	BT Double,	BT Double,	BT Double,	BT Double,	BT Double,	BT Double,	BT Double,	BT Double,	BT Double,	BT LongDouble,	BT DoubleComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT Double,	BT Double, BT Float80, BT Float128, BT Double, BT Double, BT Double, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* LongDouble */ 	{ BT LongDouble,		BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDouble,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDouble,	BT LongDouble, BT BT LongDouble, BT Float128, BT LongDouble, BT LongDouble, BT LongDouble, BT LongDouble, BT LongDouble, BT LongDouble, BT _Float128x, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT _Float128xComplex },
-		/* FloatComplex */ 	{ BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT FloatComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT FloatComplex, BT FloatComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT FloatComplex, BT FloatComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* DoubleComplex */ 	{ BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT DoubleComplex,	BT DoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* LongDoubleComplex */ 	{ BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT _Float128xComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT _Float128xComplex },
-		/* FloatImaginary */ 	{ BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatImaginary,	BT DoubleImaginary,	BT LongDoubleImaginary,	BT FloatImaginary,	BT FloatImaginary, BT LongDoubleImaginary, BT LongDoubleImaginary, BT FloatComplex, BT FloatComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT FloatComplex, BT FloatComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* DoubleImaginary */ 	{ BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT DoubleComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT DoubleImaginary,	BT DoubleImaginary,	BT LongDoubleImaginary,	BT DoubleImaginary,	BT DoubleImaginary, BT LongDoubleImaginary, BT LongDoubleImaginary, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* LongDoubleImaginary */ 	{ BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleImaginary,	BT LongDoubleImaginary,	BT LongDoubleImaginary, BT LongDoubleImaginary, BT LongDoubleImaginary, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT _Float128xComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT _Float128xComplex },
-
-		/* SignedInt128 */ 	{ BT SignedInt128,	BT SignedInt128,	BT SignedInt128,	BT SignedInt128,	BT SignedInt128,	BT SignedInt128,	BT SignedInt128,	BT SignedInt128,	BT SignedInt128,	BT SignedInt128,	BT SignedInt128,	BT SignedInt128,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT SignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* UnsignedInt128 */ 	{ BT UnsignedInt128,	BT UnsignedInt128,	BT UnsignedInt128,	BT UnsignedInt128,	BT UnsignedInt128,	BT UnsignedInt128,	BT UnsignedInt128,	BT UnsignedInt128,	BT UnsignedInt128,	BT UnsignedInt128,	BT UnsignedInt128,	BT UnsignedInt128,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT UnsignedInt128,	BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* Float80 */ 	{ BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT Float80,	BT LongDouble,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT Float80,	BT Float80, BT Float80, BT Float128, BT Float80, BT Float80, BT Float80, BT Float80, BT Float80, BT _Float128, BT _Float128x, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* Float128 */ 	{ BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT Float128,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT LongDoubleComplex,	BT Float128,	BT Float128, BT Float128, BT Float128, BT Float128, BT Float128, BT Float128, BT Float128, BT Float128, BT Float128, BT _Float128x, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128xComplex },
-
-		/* _Float16 */ 	{ BT _Float16,	BT _Float16,	BT _Float16,	BT _Float16,	BT _Float16,	BT _Float16,	BT _Float16,	BT _Float16,	BT _Float16,	BT _Float16,	BT _Float16,	BT _Float16,	BT Float,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float16,	BT _Float16, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float32 */ 	{ BT _Float32,	BT _Float32,	BT _Float32,	BT _Float32,	BT _Float32,	BT _Float32,	BT _Float32,	BT _Float32,	BT _Float32,	BT _Float32,	BT _Float32,	BT _Float32,	BT _Float32,	BT Double,	BT LongDouble,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float32,	BT _Float32, BT Float80, BT Float128, BT _Float32, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float32Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float32x */ { BT _Float32x,	BT _Float32x,	BT _Float32x,	BT _Float32x,	BT _Float32x,	BT _Float32x,	BT _Float32x,	BT _Float32x,	BT _Float32x,	BT _Float32x,	BT _Float32x,	BT _Float32x,	BT _Float32x,	BT Double,	BT LongDouble,	BT _Float32xComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float32xComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float32x,	BT _Float32x, BT Float80, BT Float128, BT _Float32x, BT _Float32x, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float32xComplex, BT _Float32xComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float64 */ 	{ BT _Float64,	BT _Float64,	BT _Float64,	BT _Float64,	BT _Float64,	BT _Float64,	BT _Float64,	BT _Float64,	BT _Float64,	BT _Float64,	BT _Float64,	BT _Float64,	BT _Float64,	BT Double,	BT LongDouble,	BT _Float64Complex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float64Complex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float64,	BT _Float64, BT Float80, BT Float128, BT _Float64, BT _Float64, BT _Float64, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float64x */ 	{ BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT _Float64x,	BT LongDouble,	BT _Float64xComplex,	BT _Float64xComplex,	BT LongDoubleComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT LongDoubleComplex,	BT _Float64x,	BT _Float64x, BT Float80, BT Float128, BT _Float64x, BT _Float64x, BT _Float64x, BT _Float64x, BT _Float64x, BT _Float128, BT _Float128x, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float128 */ 	{ BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT _Float128,	BT LongDouble,	BT _Float128Complex,	BT _Float128Complex,	BT LongDoubleComplex,	BT _Float128Complex,	BT _Float128Complex,	BT LongDoubleComplex,	BT _Float128,	BT _Float128, BT _Float128, BT Float128, BT _Float128, BT _Float128, BT _Float128, BT _Float128, BT _Float128, BT _Float128, BT _Float128x, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float128x */ 	{ BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128x,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128x,	BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex },
-
-		/* _Float16Complex */ 	{ BT _Float16Complex,	BT _Float16Complex,	BT _Float16Complex,	BT _Float16Complex,	BT _Float16Complex,	BT _Float16Complex,	BT _Float16Complex,	BT _Float16Complex,	BT _Float16Complex,	BT _Float16Complex,	BT _Float16Complex,	BT _Float16Complex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float16Complex,	BT _Float16Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float32Complex */ 	{ BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT _Float32Complex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT FloatComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float32Complex,	BT _Float32Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float32Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT _Float32Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float32xComplex */ { BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT _Float32xComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float32xComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float32xComplex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float32xComplex,	BT _Float32xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float32xComplex, BT _Float32xComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT _Float32xComplex, BT _Float32xComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float64Complex */ 	{ BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT _Float64Complex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float64Complex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float64Complex,	BT DoubleComplex,	BT LongDoubleComplex,	BT _Float64Complex,	BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float64xComplex */ 	{ BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT LongDoubleComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT LongDoubleComplex,	BT _Float64xComplex,	BT _Float64xComplex,	BT LongDoubleComplex,	BT _Float64xComplex,	BT _Float64xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float128Complex */ 	{ BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT _Float128Complex,	BT LongDoubleComplex,	BT _Float128Complex,	BT _Float128Complex,	BT LongDoubleComplex,	BT _Float128Complex,	BT _Float128Complex,	BT LongDoubleComplex,	BT _Float128Complex,	BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128xComplex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128xComplex },
-		/* _Float128xComplex */ 	{ BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex,	BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex },
-	};
-	#undef BT
-#endif
 
 	// GENERATED START, DO NOT EDIT
+	// GENERATED BY BasicTypes-gen.cc
 	#define BT BasicType::
 	static const BasicType::Kind commonTypes[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // nearest common ancestor
@@ -492,5 +442,4 @@
 	#undef BT
 	// GENERATED END
-
 	static_assert(
 		sizeof(commonTypes)/sizeof(commonTypes[0][0]) == BasicType::NUMBER_OF_BASIC_TYPES*BasicType::NUMBER_OF_BASIC_TYPES,
Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision fba51ab7e7342c8e2f909f1ac3eaddb4c088c888)
+++ src/ResolvExpr/ConversionCost.cc	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 07:06:19 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 13 23:04:51 2019
-// Update Count     : 22
+// Last Modified On : Thu Feb 14 17:04:31 2019
+// Update Count     : 23
 //
 
@@ -43,4 +43,5 @@
 #define PRINT(x)
 #endif
+
 	Cost conversionCost( Type *src, Type *dest, const SymTab::Indexer &indexer, const TypeEnvironment &env ) {
 		if ( TypeInstType *destAsTypeInst = dynamic_cast< TypeInstType* >( dest ) ) {
@@ -179,94 +180,7 @@
 		: dest( dest ), indexer( indexer ), cost( Cost::infinity ), env( env ), costFunc( costFunc ) {
 	}
-#if 0
-/*
-            Old
-            ===
-           Double
-             |
-           Float
-             |
-           ULong
-           /   \
-        UInt    Long
-           \   /
-            Int
-             |
-           Ushort
-             |
-           Short
-             |
-           Uchar
-           /   \
-        Schar   Char
-
-                                New
-                                ===
-                       +-----LongDoubleComplex--+
-           LongDouble--+          |             +-LongDoubleImag
-             |         +---DoubleComplex---+         |
-           Double------+        |          +----DoubleImag
-             |           +-FloatComplex-+            |
-           Float---------+              +-------FloatImag
-             |
-          ULongLong
-             |
-          LongLong
-             |
-           ULong
-           /   \
-        UInt    Long
-           \   /
-            Int
-             |
-           Ushort
-             |
-           Short
-             |
-           Uchar
-           /   \
-        Schar   Char
-           \   /
-            Bool
-*/
-
-	static const int costMatrix[][ BasicType::NUMBER_OF_BASIC_TYPES ] = {
-	/* Src \ Dest:	Bool	Char	SChar	UChar	Short	UShort	Int 	UInt	Long	ULong	LLong	ULLong	Float	Double	LDbl	FCplex	DCplex	LDCplex	FImag	DImag	LDImag	I128,	U128, F80, F128 */
-		/* Bool */ 	{ 0,	1,		1,		2,		3,		4,		5,		6,		6,		7,		8,		9,		12,		13,		14,		12,		13,		14,		-1,		-1,		-1,		10,		11,	  14,   15},
-		/* Char */ 	{ -1,	0,		-1,		1,		2,		3,		4,		5,		5,		6,		7,		8,		11,		12,		13,		11,		12,		13,		-1,		-1,		-1,		9,		10,	  13,   14},
-		/* SChar */ { -1,	-1,		0,		1,		2,		3,		4,		5,		5,		6,		7,		8,		11,		12,		13,		11,		12,		13,		-1,		-1,		-1,		9,		10,	  13,   14},
-		/* UChar */ { -1,	-1,		-1,		0,		1,		2,		3,		4,		4,		5,		6,		7,		10,		11,		12,		10,		11,		12,		-1,		-1,		-1,		8,		9,	  12,   13},
-		/* Short */ { -1,	-1,		-1,		-1,		0,		1,		2,		3,		3,		4,		5,		6,		9,		10,		11,		9,		10,		11,		-1,		-1,		-1,		7,		8,	  11,   12},
-		/* UShort */{ -1,	-1,		-1,		-1,		-1,		0,		1,		2,		2,		3,		4,		5,		8,		9,		10,		8,		9,		10,		-1,		-1,		-1,		6,		7,	  10,   11},
-		/* Int */ 	{ -1,	-1,		-1,		-1,		-1,		-1,		0,		1,		1,		2,		3,		4,		7,		8,		9,		7,		8,		9,		-1,		-1,		-1,		5,		6,	  9,    10},
-		/* UInt */ 	{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		0,		-1,		1,		2,		3,		6,		7,		8,		6,		7,		8,		-1,		-1,		-1,		4,		5,	  8,    9},
-		/* Long */ 	{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		0,		1,		2,		3,		6,		7,		8,		6,		7,		8,		-1,		-1,		-1,		4,		5,	  8,    9},
-		/* ULong */ { -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		0,		1,		2,		5,		6,		7,		5,		6,		7,		-1,		-1,		-1,		3,		4,	  7,    8},
-		/* LLong */ { -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		0,		1,		4,		5,		6,		4,		5,		6,		-1,		-1,		-1,		2,		3,	  6,    7},
-		/* ULLong */{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		0,		3,		4,		5,		3,		4,		5,		-1,		-1,		-1,		1,		2,	  5,    6},
-
-		/* Float */ { -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		0,		1,		2,		1,		2,		3,		-1,		-1,		-1,		-1,		-1,	  2,    3},
-		/* Double */{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		0,		1,		-1,		1,		2,		-1,		-1,		-1,		-1,		-1,	  1,    2},
-		/* LDbl */ 	{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		0,		-1,		-1,		1,		-1,		-1,		-1,		-1,		-1,	  -1,   1},
-		/* FCplex */{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		0,		1,		2,		-1,		-1,		-1,		-1,		-1,	  -1,   -1},
-		/* DCplex */{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		0,		1,		-1,		-1,		-1,		-1,		-1,	  -1,   -1},
-		/* LDCplex */{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		0,		-1,		-1,		-1,		-1,		-1,	  -1,   -1},
-		/* FImag */ { -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		1,		2,		3,		0,		1,		2,		-1,		-1,	  -1,   -1},
-		/* DImag */ { -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		1,		2,		-1,		0,		1,		-1,		-1,	  -1,   -1},
-		/* LDImag */{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		1,		-1,		-1,		0,		-1,		-1,	  -1,   -1},
-
-		/* I128 */  { -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		2,		3,		4,		3,		4,		5,		-1,		-1,		-1,		0,		1,	  4,    4},
-		/* U128 */  { -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		1,		2,		3,		2,		3,		4,		-1,		-1,		-1,		-1,		0,	  3,    3},
-
-		/* F80 */ 	{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		1,		-1,		-1,		1,		-1,		-1,		-1,		-1,		-1,	  0,    1},
-		/* F128 */ 	{ -1,	-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		-1,		1,		-1,		-1,		-1,		-1,		-1,	  -1,   0},
-	};
-	static_assert(
-		sizeof(costMatrix)/sizeof(costMatrix[0][0]) == BasicType::NUMBER_OF_BASIC_TYPES*BasicType::NUMBER_OF_BASIC_TYPES,
-		"Each basic type kind should have a corresponding row in the cost matrix"
-	);
-#endif
 
 	// GENERATED START, DO NOT EDIT
+	// GENERATED BY BasicTypes-gen.cc
 	/* EXTENDED INTEGRAL RANK HIERARCHY (root to leaves)
 	                         _Bool
@@ -293,4 +207,5 @@
 
 	// GENERATED START, DO NOT EDIT
+	// GENERATED BY BasicTypes-gen.cc
 	static const int costMatrix[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // path length from root to node
 		/*          B    C   SC   UC   SI  SUI    I   UI   LI  LUI  LLI LLUI   IB  UIB  _FH  _FH   _F  _FC    F   FC  _FX _FXC   FD _FDC    D   DC F80X _FDXC  F80  _FB _FLDC   FB   LD  LDC _FBX _FLDXC */
@@ -339,4 +254,5 @@
 
 	// GENERATED START, DO NOT EDIT
+	// GENERATED BY BasicTypes-gen.cc
 	static const int signMatrix[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // number of sign changes in safe conversion
 		/*          B    C   SC   UC   SI  SUI    I   UI   LI  LUI  LLI LLUI   IB  UIB  _FH  _FH   _F  _FC    F   FC  _FX _FXC   FD _FDC    D   DC F80X _FDXC  F80  _FB _FLDC   FB   LD  LDC _FBX _FLDXC */
Index: src/SymTab/ManglerCommon.cc
===================================================================
--- src/SymTab/ManglerCommon.cc	(revision fba51ab7e7342c8e2f909f1ac3eaddb4c088c888)
+++ src/SymTab/ManglerCommon.cc	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 21:44:03 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb 14 08:12:17 2019
-// Update Count     : 25
+// Last Modified On : Thu Feb 14 17:06:37 2019
+// Update Count     : 26
 //
 
@@ -22,47 +22,7 @@
 		namespace Encoding {
 			const std::string manglePrefix = "_X";
-#if 0
-			const std::string basicTypes[] = {
-				"b",  // Bool
-				"c",  // Char
-				"a",  // SignedChar
-				"h",  // UnsignedChar
-				"s",  // ShortSignedInt
-				"t",  // ShortUnsignedInt
-				"i",  // SignedInt
-				"j",  // UnsignedInt
-				"l",  // LongSignedInt
-				"m",  // LongUnsignedInt
-				"x",  // LongLongSignedInt
-				"y",  // LongLongUnsignedInt
-				"f",  // Float
-				"d",  // Double
-				"e",  // LongDouble
-				"Cf", // FloatComplex
-				"Cd", // DoubleComplex
-				"Ce", // LongDoubleComplex
-				// Note: imaginary is not an overloadable type in C++
-				// "If", // FloatImaginary
-				// "Id", // DoubleImaginary
-				// "Ie", // LongDoubleImaginary
-				"n",  // SignedInt128
-				"o",  // UnsignedInt128
-				"Dq",  // Float80 -- TODO: itanium says Float80 and LongDouble both encode to "e", but doing this causes problems with constructing long double, because the cost tables are incorrect
-				"g",  // Float128
-				// "z",	// ellipsis
-				// "Dd" // # IEEE 754r decimal floating point (64 bits)
-				// "De" // # IEEE 754r decimal floating point (128 bits)
-				// "Df" // # IEEE 754r decimal floating point (32 bits)
-				// "Dh" // # IEEE 754r half-precision floating point (16 bits)
-				// "DF"N_ // # ISO/IEC TS 18661 binary floating point type _FloatN (N bits)
-				// "Di" // char32_t
-				// "Ds" // char16_t
-			};
-			static_assert(
-				sizeof(basicTypes)/sizeof(basicTypes[0]) == BasicType::NUMBER_OF_BASIC_TYPES,
-				"Each basic type kind should have a corresponding mangler letter"
-			);
-#endif
+
 			// GENERATED START, DO NOT EDIT
+			// GENERATED BY BasicTypes-gen.cc
 			// NOTES ON MANGLING:
 			// * Itanium spec says that Float80 encodes to "e" (like LongDouble), but the distinct lengths cause resolution problems.
@@ -118,4 +78,8 @@
 			}; // basicTypes
 			// GENERATED END
+			static_assert(
+				sizeof(basicTypes)/sizeof(basicTypes[0]) == BasicType::NUMBER_OF_BASIC_TYPES,
+				"Each basic type kind should have a corresponding mangler letter"
+			);
 
 			const std::map<int, std::string> qualifiers = {
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision fba51ab7e7342c8e2f909f1ac3eaddb4c088c888)
+++ src/SynTree/Type.h	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 13 18:10:45 2019
-// Update Count     : 167
+// Last Modified On : Thu Feb 14 17:11:24 2019
+// Update Count     : 169
 //
 
@@ -207,48 +207,6 @@
 class BasicType : public Type {
   public:
-#if 0
-	enum Kind {
-		Bool,
-		Char,
-		SignedChar,
-		UnsignedChar,
-		ShortSignedInt,
-		ShortUnsignedInt,
-		SignedInt,
-		UnsignedInt,
-		LongSignedInt,
-		LongUnsignedInt,
-		LongLongSignedInt,
-		LongLongUnsignedInt,
-		Float,
-		Double,
-		LongDouble,
-		FloatComplex,
-		DoubleComplex,
-		LongDoubleComplex,
-		FloatImaginary,
-		DoubleImaginary,
-		LongDoubleImaginary,
-		SignedInt128,
-		UnsignedInt128,
-		Float80,
-		Float128,
-		_Float16,
-		_Float32,
-		_Float32x,
-		_Float64,
-		_Float64x,
-		_Float128,
-		_Float128x,
-		_Float16Complex,
-		_Float32Complex,
-		_Float32xComplex,
-		_Float64Complex,
-		_Float64xComplex,
-		_Float128Complex,
-		_Float128xComplex,
-		NUMBER_OF_BASIC_TYPES
-	} kind;
-#endif
+	// GENERATED START, DO NOT EDIT
+	// GENERATED BY BasicTypes-gen.cc
 	enum Kind {
 		Bool,
@@ -272,5 +230,4 @@
 		Float,
 		FloatComplex,
-		// FloatImaginary,
 		uFloat32x,
 		uFloat32xComplex,
@@ -279,5 +236,4 @@
 		Double,
 		DoubleComplex,
-		// DoubleImaginary,
 		uFloat64x,
 		uFloat64xComplex,
@@ -288,9 +244,9 @@
 		LongDouble,
 		LongDoubleComplex,
-		// LongDoubleImaginary,
 		uFloat128x,
 		uFloat128xComplex,
 		NUMBER_OF_BASIC_TYPES
 	} kind;
+	// GENERATED END
 
 	static const char *typeNames[];						// string names for basic types, MUST MATCH with Kind
